@pod-os/elements 0.7.1-92705ee.0 → 0.7.1-a71f01c.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{animation-5840e4df.js → animation-9bea118f.js} +115 -84
- package/dist/cjs/{app-globals-1aedd05c.js → app-globals-6352043e.js} +1 -1
- package/dist/cjs/{cubic-bezier-dcb7bfef.js → cubic-bezier-0b702a31.js} +13 -12
- package/dist/cjs/data-0c9489d7.js +1510 -0
- package/dist/cjs/dir-011f46ea.js +20 -0
- package/dist/cjs/elements.cjs.js +5 -5
- package/dist/cjs/focus-visible-2624ec15.js +76 -0
- package/dist/cjs/framework-delegate-437c0645.js +119 -0
- package/dist/cjs/{gesture-controller-fbbe9a65.js → gesture-controller-00a6b02f.js} +6 -2
- package/dist/cjs/{haptic-09e73337.js → haptic-7358cb0b.js} +37 -8
- package/dist/cjs/{hardware-back-button-01027575.js → hardware-back-button-25372ec7.js} +11 -8
- package/dist/cjs/{helpers-398ced09.js → helpers-cb08f5ae.js} +115 -15
- package/dist/cjs/{index-2067b305.js → index-1b07c737.js} +35 -24
- package/dist/cjs/{index-68ae43d2.js → index-2dc3637c.js} +34 -28
- package/dist/cjs/index-57b9fa9e.js +30 -0
- package/dist/cjs/{index-d01d9183.js → index-643851c6.js} +34 -19
- package/dist/cjs/index-731691ca.js +48 -0
- package/dist/cjs/{index-6bbae9b1.js → index-7d56774d.js} +12 -8
- package/dist/cjs/index-9fca5d6f.js +140 -0
- package/dist/cjs/index-b2a479e4.js +38 -0
- package/dist/cjs/{index-b4a9ece2.js → index-eaa0d16e.js} +7 -0
- package/dist/cjs/{tap-click-f24cb477.js → index-ed2ce04f.js} +37 -19
- package/dist/cjs/{input-shims-e959d9e2.js → input-shims-427999f7.js} +89 -38
- package/dist/cjs/ion-accordion-group.cjs.entry.js +205 -0
- package/dist/cjs/ion-accordion.cjs.entry.js +336 -0
- package/dist/cjs/ion-action-sheet_3.cjs.entry.js +865 -0
- package/dist/cjs/{ion-app_45.cjs.entry.js → ion-app_46.cjs.entry.js} +1906 -1492
- package/dist/cjs/ion-avatar.cjs.entry.js +2 -2
- package/dist/cjs/ion-back-button.cjs.entry.js +12 -11
- package/dist/cjs/ion-backdrop.cjs.entry.js +4 -4
- package/dist/cjs/ion-breadcrumb.cjs.entry.js +101 -0
- package/dist/cjs/ion-breadcrumbs.cjs.entry.js +137 -0
- package/dist/cjs/ion-buttons_3.cjs.entry.js +799 -0
- package/dist/cjs/ion-card-subtitle.cjs.entry.js +4 -4
- package/dist/cjs/{ion-list-header_3.cjs.entry.js → ion-checkbox_4.cjs.entry.js} +124 -23
- package/dist/cjs/ion-chip.cjs.entry.js +5 -10
- package/dist/cjs/ion-datetime-button.cjs.entry.js +346 -0
- package/dist/cjs/ion-datetime.cjs.entry.js +1548 -856
- package/dist/cjs/ion-fab-button.cjs.entry.js +26 -9
- package/dist/cjs/ion-fab-list.cjs.entry.js +4 -4
- package/dist/cjs/ion-fab.cjs.entry.js +15 -13
- package/dist/cjs/ion-img.cjs.entry.js +28 -4
- package/dist/cjs/ion-infinite-scroll-content.cjs.entry.js +5 -5
- package/dist/cjs/ion-infinite-scroll.cjs.entry.js +13 -13
- package/dist/cjs/ion-input.cjs.entry.js +57 -23
- package/dist/cjs/ion-item-option.cjs.entry.js +8 -8
- package/dist/cjs/ion-item-options.cjs.entry.js +5 -5
- package/dist/cjs/ion-item-sliding.cjs.entry.js +59 -63
- package/dist/cjs/ion-loading.cjs.entry.js +38 -37
- package/dist/cjs/ion-menu-button.cjs.entry.js +14 -12
- package/dist/cjs/ion-menu-toggle.cjs.entry.js +8 -7
- package/dist/cjs/ion-menu.cjs.entry.js +71 -57
- package/dist/cjs/ion-modal.cjs.entry.js +1386 -156
- package/dist/cjs/ion-nav-link.cjs.entry.js +5 -2
- package/dist/cjs/ion-nav.cjs.entry.js +177 -171
- package/dist/cjs/ion-picker-column.cjs.entry.js +25 -27
- package/dist/cjs/ion-picker.cjs.entry.js +22 -17
- package/dist/cjs/ion-popover.cjs.entry.js +1208 -182
- package/dist/cjs/ion-range.cjs.entry.js +137 -57
- package/dist/cjs/ion-refresher-content.cjs.entry.js +7 -12
- package/dist/cjs/ion-refresher.cjs.entry.js +150 -148
- package/dist/cjs/ion-reorder-group.cjs.entry.js +42 -35
- package/dist/cjs/ion-reorder.cjs.entry.js +5 -4
- package/dist/cjs/ion-route-redirect.cjs.entry.js +1 -1
- package/dist/cjs/ion-route.cjs.entry.js +1 -1
- package/dist/cjs/ion-router-link.cjs.entry.js +5 -5
- package/dist/cjs/ion-router-outlet.cjs.entry.js +24 -20
- package/dist/cjs/ion-router.cjs.entry.js +291 -194
- package/dist/cjs/ion-segment-button.cjs.entry.js +10 -17
- package/dist/cjs/ion-segment.cjs.entry.js +127 -26
- package/dist/cjs/ion-select-option.cjs.entry.js +3 -3
- package/dist/cjs/ion-select.cjs.entry.js +113 -78
- package/dist/cjs/ion-slide.cjs.entry.js +3 -3
- package/dist/cjs/ion-slides.cjs.entry.js +26 -27
- package/dist/cjs/ion-spinner.cjs.entry.js +10 -9
- package/dist/cjs/ion-split-pane.cjs.entry.js +16 -12
- package/dist/cjs/ion-tab-bar.cjs.entry.js +16 -23
- package/dist/cjs/ion-tab-button.cjs.entry.js +6 -6
- package/dist/cjs/ion-tab.cjs.entry.js +4 -4
- package/dist/cjs/ion-tabs.cjs.entry.js +4 -5
- package/dist/cjs/ion-text.cjs.entry.js +3 -3
- package/dist/cjs/ion-textarea.cjs.entry.js +31 -29
- package/dist/cjs/ion-thumbnail.cjs.entry.js +2 -2
- package/dist/cjs/ion-toast.cjs.entry.js +50 -60
- package/dist/cjs/ion-toggle.cjs.entry.js +41 -22
- package/dist/cjs/ion-virtual-scroll.cjs.entry.js +39 -31
- package/dist/cjs/{ionic-global-56e10eb5.js → ionic-global-f2d95fd3.js} +112 -93
- package/dist/cjs/{ios.transition-32e4623d.js → ios.transition-0f31ec9a.js} +78 -53
- package/dist/cjs/{keyboard-9e8103e4.js → keyboard-79afcba2.js} +6 -3
- package/dist/cjs/keyboard-controller-a934d106.js +42 -0
- package/dist/cjs/loader.cjs.js +5 -5
- package/dist/cjs/{md.transition-169c54f0.js → md.transition-d2a33a23.js} +15 -17
- package/dist/cjs/{menu-toggle-util-087678e0.js → menu-toggle-util-0a43ff7c.js} +5 -2
- package/dist/cjs/{overlays-49fe9ba7.js → overlays-f7d24abf.js} +190 -72
- package/dist/cjs/spinner-configs-cd0abbeb.js +147 -0
- package/dist/cjs/{status-tap-ada894ff.js → status-tap-beaa3a71.js} +10 -5
- package/dist/cjs/{swipe-back-c4a778df.js → swipe-back-666ea8e6.js} +34 -15
- package/dist/cjs/{theme-2259d0f5.js → theme-fc63803b.js} +9 -5
- package/dist/collection/collection-manifest.json +10 -4
- package/dist/collection/components/pos-rich-link/pos-rich-link.js +1 -1
- package/dist/components/ResourceAware.js +5 -0
- package/dist/components/action-sheet.js +309 -0
- package/dist/{esm/ion-alert.entry.js → components/alert.js} +150 -105
- package/dist/{esm/animation-fe6ed422.js → components/animation.js} +115 -84
- package/dist/components/app.js +112 -0
- package/dist/components/backdrop.js +82 -0
- package/dist/components/badge.js +42 -0
- package/dist/{esm/button-active-fd9d6d91.js → components/button-active.js} +9 -6
- package/dist/components/button.js +207 -0
- package/dist/{esm/ion-buttons.entry.js → components/buttons.js} +28 -12
- package/dist/components/card-content.js +40 -0
- package/dist/components/card-header.js +51 -0
- package/dist/components/card-title.js +43 -0
- package/dist/components/card.js +102 -0
- package/dist/{esm/ion-checkbox.entry.js → components/checkbox.js} +42 -24
- package/dist/components/col.js +161 -0
- package/dist/components/content.js +356 -0
- package/dist/{esm/cubic-bezier-108b8579.js → components/cubic-bezier.js} +13 -12
- package/dist/components/data.js +1463 -0
- package/dist/components/dir.js +18 -0
- package/dist/components/focus-visible.js +74 -0
- package/dist/components/footer.js +149 -0
- package/dist/components/framework-delegate.js +115 -0
- package/dist/{esm/gesture-controller-8f35af24.js → components/gesture-controller.js} +6 -2
- package/dist/components/grid.js +41 -0
- package/dist/{esm/haptic-c424e670.js → components/haptic.js} +38 -9
- package/dist/{esm/hardware-back-button-bb4c578a.js → components/hardware-back-button.js} +11 -8
- package/dist/components/header.js +360 -0
- package/dist/{esm/helpers-44e3bd9f.js → components/helpers.js} +113 -16
- package/dist/components/icon.js +367 -0
- package/dist/components/index.d.ts +41 -0
- package/dist/components/index.js +123 -0
- package/dist/components/index10.js +28 -0
- package/dist/{esm/tap-click-a7e55ef5.js → components/index11.js} +37 -19
- package/dist/components/index2.js +25 -0
- package/dist/{esm/index-8d682224.js → components/index3.js} +12 -8
- package/dist/components/index4.js +34 -0
- package/dist/components/index5.js +128 -0
- package/dist/{esm/index-97199683.js → components/index6.js} +34 -28
- package/dist/{esm/index-8a463a85.js → components/index7.js} +35 -24
- package/dist/{custom-elements/index.js → components/index8.js} +1049 -20945
- package/dist/{esm/index-3a1bd803.js → components/index9.js} +35 -20
- package/dist/{custom-elements → components}/input-shims.js +88 -38
- package/dist/components/ion-accordion-group.js +228 -0
- package/dist/components/ion-accordion.js +365 -0
- package/dist/components/ion-action-sheet.js +6 -0
- package/dist/components/ion-alert.js +6 -0
- package/dist/components/ion-app.js +6 -0
- package/dist/components/ion-avatar.js +39 -0
- package/dist/components/ion-back-button.js +128 -0
- package/dist/components/ion-backdrop.js +6 -0
- package/dist/components/ion-badge.js +6 -0
- package/dist/components/ion-breadcrumb.js +135 -0
- package/dist/components/ion-breadcrumbs.js +158 -0
- package/dist/components/ion-button.js +6 -0
- package/dist/components/ion-buttons.js +6 -0
- package/dist/components/ion-card-content.js +6 -0
- package/dist/components/ion-card-header.js +6 -0
- package/dist/components/ion-card-subtitle.js +46 -0
- package/dist/components/ion-card-title.js +6 -0
- package/dist/components/ion-card.js +6 -0
- package/dist/components/ion-checkbox.js +6 -0
- package/dist/components/ion-chip.js +59 -0
- package/dist/components/ion-col.js +6 -0
- package/dist/components/ion-content.js +6 -0
- package/dist/components/ion-datetime-button.js +375 -0
- package/dist/components/ion-datetime.js +1802 -0
- package/dist/components/ion-fab-button.js +149 -0
- package/dist/components/ion-fab-list.js +62 -0
- package/dist/components/ion-fab.js +97 -0
- package/dist/components/ion-footer.js +6 -0
- package/dist/components/ion-grid.js +6 -0
- package/dist/components/ion-header.js +6 -0
- package/dist/components/ion-icon.js +6 -0
- package/dist/components/ion-img.js +120 -0
- package/dist/components/ion-infinite-scroll-content.js +59 -0
- package/dist/components/ion-infinite-scroll.js +223 -0
- package/dist/components/ion-input.js +352 -0
- package/dist/components/ion-item-divider.js +6 -0
- package/dist/components/ion-item-group.js +6 -0
- package/dist/components/ion-item-option.js +89 -0
- package/dist/components/ion-item-options.js +63 -0
- package/dist/components/ion-item-sliding.js +419 -0
- package/dist/components/ion-item.js +6 -0
- package/dist/components/ion-label.js +6 -0
- package/dist/components/ion-list-header.js +6 -0
- package/dist/components/ion-list.js +6 -0
- package/dist/components/ion-loading.js +256 -0
- package/dist/components/ion-menu-button.js +107 -0
- package/dist/components/ion-menu-toggle.js +62 -0
- package/dist/components/ion-menu.js +611 -0
- package/dist/components/ion-modal.js +1765 -0
- package/dist/components/ion-nav-link.js +65 -0
- package/dist/components/ion-nav.js +905 -0
- package/dist/components/ion-note.js +6 -0
- package/dist/components/ion-picker-column-internal.js +6 -0
- package/dist/components/ion-picker-column.js +6 -0
- package/dist/components/ion-picker-internal.js +6 -0
- package/dist/components/ion-picker.js +263 -0
- package/dist/components/ion-popover.js +6 -0
- package/dist/components/ion-progress-bar.js +6 -0
- package/dist/components/ion-radio-group.js +6 -0
- package/dist/components/ion-radio.js +6 -0
- package/dist/components/ion-range.js +550 -0
- package/dist/components/ion-refresher-content.js +64 -0
- package/dist/components/ion-refresher.js +826 -0
- package/dist/components/ion-reorder-group.js +303 -0
- package/dist/components/ion-reorder.js +58 -0
- package/dist/components/ion-ripple-effect.js +6 -0
- package/dist/components/ion-route-redirect.js +40 -0
- package/dist/components/ion-route.js +68 -0
- package/dist/components/ion-router-link.js +59 -0
- package/dist/components/ion-router-outlet.js +223 -0
- package/dist/components/ion-router.js +852 -0
- package/dist/components/ion-row.js +6 -0
- package/dist/components/ion-searchbar.js +6 -0
- package/dist/components/ion-segment-button.js +128 -0
- package/dist/components/ion-segment.js +463 -0
- package/dist/components/ion-select-option.js +44 -0
- package/dist/components/ion-select-popover.js +6 -0
- package/dist/components/ion-select.js +596 -0
- package/dist/components/ion-skeleton-text.js +6 -0
- package/dist/components/ion-slide.js +38 -0
- package/dist/components/ion-slides.js +423 -0
- package/dist/components/ion-spinner.js +6 -0
- package/dist/components/ion-split-pane.js +179 -0
- package/dist/components/ion-tab-bar.js +86 -0
- package/dist/components/ion-tab-button.js +132 -0
- package/dist/components/ion-tab.js +86 -0
- package/dist/components/ion-tabs.js +176 -0
- package/dist/components/ion-text.js +40 -0
- package/dist/components/ion-textarea.js +287 -0
- package/dist/components/ion-thumbnail.js +34 -0
- package/dist/components/ion-title.js +6 -0
- package/dist/components/ion-toast.js +317 -0
- package/dist/components/ion-toggle.js +207 -0
- package/dist/components/ion-toolbar.js +6 -0
- package/dist/components/ion-virtual-scroll.js +588 -0
- package/dist/components/ionic-global.js +226 -0
- package/dist/{custom-elements → components}/ios.transition.js +75 -50
- package/dist/components/item-divider.js +54 -0
- package/dist/components/item-group.js +41 -0
- package/dist/components/item.js +323 -0
- package/dist/components/keyboard-controller.js +40 -0
- package/dist/{custom-elements → components}/keyboard.js +6 -3
- package/dist/components/label.js +95 -0
- package/dist/components/list-header.js +45 -0
- package/dist/components/list.js +66 -0
- package/dist/{custom-elements → components}/md.transition.js +12 -14
- package/dist/{esm/menu-toggle-util-562dfc9c.js → components/menu-toggle-util.js} +5 -2
- package/dist/components/note.js +42 -0
- package/dist/{esm/overlays-fc9a0625.js → components/overlays.js} +188 -72
- package/dist/components/picker-column-internal.js +315 -0
- package/dist/components/picker-column.js +343 -0
- package/dist/components/picker-internal.js +486 -0
- package/dist/components/popover.js +1440 -0
- package/dist/components/pos-app-browser.d.ts +11 -0
- package/dist/components/pos-app-browser.js +299 -0
- package/dist/components/pos-app-generic.d.ts +11 -0
- package/dist/components/pos-app-generic.js +6 -0
- package/dist/components/pos-app-generic2.js +194 -0
- package/dist/components/pos-app-image-viewer.d.ts +11 -0
- package/dist/components/pos-app-image-viewer.js +6 -0
- package/dist/components/pos-app-image-viewer2.js +162 -0
- package/dist/components/pos-app-rdf-document.d.ts +11 -0
- package/dist/components/pos-app-rdf-document.js +6 -0
- package/dist/components/pos-app-rdf-document2.js +170 -0
- package/dist/components/pos-app.d.ts +11 -0
- package/dist/components/pos-app.js +6 -0
- package/dist/components/pos-app2.js +53 -0
- package/dist/components/pos-description.d.ts +11 -0
- package/dist/components/pos-description.js +6 -0
- package/dist/components/pos-description2.js +38 -0
- package/dist/components/pos-image.d.ts +11 -0
- package/dist/components/pos-image.js +6 -0
- package/dist/components/pos-image2.js +117 -0
- package/dist/components/pos-label.d.ts +11 -0
- package/dist/components/pos-label.js +6 -0
- package/dist/components/pos-label2.js +38 -0
- package/dist/components/pos-literals.d.ts +11 -0
- package/dist/components/pos-literals.js +6 -0
- package/dist/components/pos-literals2.js +87 -0
- package/dist/components/pos-login.d.ts +11 -0
- package/dist/components/pos-login.js +6 -0
- package/dist/components/pos-login2.js +120 -0
- package/dist/components/pos-navigation-bar.d.ts +11 -0
- package/dist/components/pos-navigation-bar.js +6 -0
- package/dist/components/pos-navigation-bar2.js +52 -0
- package/dist/components/pos-picture.d.ts +11 -0
- package/dist/components/pos-picture.js +6 -0
- package/dist/components/pos-picture2.js +62 -0
- package/dist/components/pos-relations.d.ts +11 -0
- package/dist/components/pos-relations.js +6 -0
- package/dist/components/pos-relations2.js +135 -0
- package/dist/components/pos-resource.d.ts +11 -0
- package/dist/components/pos-resource.js +6 -0
- package/dist/components/pos-resource2.js +126 -0
- package/dist/components/pos-reverse-relations.d.ts +11 -0
- package/dist/components/pos-reverse-relations.js +6 -0
- package/dist/components/pos-reverse-relations2.js +135 -0
- package/dist/components/pos-rich-link.d.ts +11 -0
- package/dist/components/pos-rich-link.js +6 -0
- package/dist/components/pos-rich-link2.js +106 -0
- package/dist/components/pos-router.d.ts +11 -0
- package/dist/components/pos-router.js +6 -0
- package/dist/components/pos-router2.js +813 -0
- package/dist/components/pos-subjects.d.ts +11 -0
- package/dist/components/pos-subjects.js +6 -0
- package/dist/components/pos-subjects2.js +125 -0
- package/dist/components/pos-type-badges.d.ts +11 -0
- package/dist/components/pos-type-badges.js +6 -0
- package/dist/components/pos-type-badges2.js +69 -0
- package/dist/components/pos-type-router.d.ts +11 -0
- package/dist/components/pos-type-router.js +6 -0
- package/dist/components/pos-type-router2.js +241 -0
- package/dist/components/progress-bar.js +91 -0
- package/dist/components/radio-group.js +139 -0
- package/dist/components/radio.js +135 -0
- package/dist/components/ripple-effect.js +107 -0
- package/dist/components/row.js +31 -0
- package/dist/components/searchbar.js +412 -0
- package/dist/components/select-popover.js +174 -0
- package/dist/components/session.js +202 -0
- package/dist/components/skeleton-text.js +46 -0
- package/dist/components/spinner.js +224 -0
- package/dist/{custom-elements → components}/status-tap.js +8 -4
- package/dist/{custom-elements → components}/swipe-back.js +33 -13
- package/dist/{custom-elements → components}/swiper.bundle.js +0 -0
- package/dist/{esm/theme-d21826a7.js → components/theme.js} +9 -5
- package/dist/components/title.js +66 -0
- package/dist/components/toolbar.js +87 -0
- package/dist/elements/elements.css +1 -1
- package/dist/elements/elements.esm.js +1 -1
- package/dist/elements/p-00f19b1d.js +4 -0
- package/dist/elements/p-0587332d.entry.js +1 -0
- package/dist/elements/p-07f54139.entry.js +7 -0
- package/dist/elements/{p-cfc0e54d.js → p-0991c811.js} +3 -0
- package/dist/elements/p-0a69a563.entry.js +1 -0
- package/dist/elements/p-0d284fe0.entry.js +1 -0
- package/dist/elements/p-116437b0.entry.js +13 -0
- package/dist/elements/p-12880671.entry.js +1 -0
- package/dist/elements/p-14ccd586.entry.js +1 -0
- package/dist/elements/{p-83d45051.entry.js → p-14df6ac0.entry.js} +1 -1
- package/dist/elements/{p-e860be6a.entry.js → p-17079f06.entry.js} +1 -1
- package/dist/elements/p-19e4a688.js +4 -0
- package/dist/elements/p-1afc4eb4.js +4 -0
- package/dist/elements/p-1beaf6bf.js +4 -0
- package/dist/elements/p-1d1c6a6f.entry.js +1 -0
- package/dist/elements/{p-31d30e42.entry.js → p-1d98f84b.entry.js} +1 -1
- package/dist/elements/p-1e617706.entry.js +7 -0
- package/dist/elements/p-278ca4c9.js +4 -0
- package/dist/elements/p-27f5629c.entry.js +1 -0
- package/dist/elements/p-29c0f03f.js +4 -0
- package/dist/elements/p-2a629468.entry.js +4 -0
- package/dist/elements/p-2da59aca.js +4 -0
- package/dist/elements/p-3152143f.js +4 -0
- package/dist/elements/p-343ff720.entry.js +7 -0
- package/dist/elements/p-36d4c9a8.js +4 -0
- package/dist/elements/p-3a30dfb2.entry.js +1 -0
- package/dist/elements/p-3c013bf1.entry.js +1 -0
- package/dist/elements/{p-74ba1e42.entry.js → p-3c318da5.entry.js} +1 -1
- package/dist/elements/p-3cee3222.entry.js +1 -0
- package/dist/elements/p-3d0f59af.entry.js +7 -0
- package/dist/elements/p-41cb5688.entry.js +1 -0
- package/dist/elements/p-480b3c4f.entry.js +1 -0
- package/dist/elements/p-4e9d8f18.entry.js +1 -0
- package/dist/elements/p-53e23176.js +2 -0
- package/dist/elements/p-548524f3.js +4 -0
- package/dist/elements/p-5739fa41.entry.js +1 -0
- package/dist/elements/p-5808c505.js +1 -0
- package/dist/elements/p-58a8cc2a.js +4 -0
- package/dist/elements/p-6035415e.entry.js +1 -0
- package/dist/elements/p-60eeae90.js +4 -0
- package/dist/elements/p-667550a9.entry.js +14 -0
- package/dist/elements/p-67777478.entry.js +1 -0
- package/dist/elements/p-6ab826e1.entry.js +1 -0
- package/dist/elements/p-6f5a2827.entry.js +1 -0
- package/dist/elements/p-7916ecc5.entry.js +1 -0
- package/dist/elements/p-79f06b80.entry.js +1 -0
- package/dist/elements/p-7d0def79.js +5 -0
- package/dist/elements/p-8112afea.js +4 -0
- package/dist/elements/p-83678d7d.entry.js +4 -0
- package/dist/elements/p-87e45c94.entry.js +1 -0
- package/dist/elements/p-8f80768f.entry.js +4 -0
- package/dist/elements/p-8fe0433b.js +4 -0
- package/dist/elements/{p-4cb27b48.entry.js → p-9147d82b.entry.js} +1 -1
- package/dist/elements/p-96aeb07a.entry.js +1 -0
- package/dist/elements/p-97abb434.entry.js +1 -0
- package/dist/elements/p-98497a4b.entry.js +1 -0
- package/dist/elements/p-9c719139.js +4 -0
- package/dist/elements/p-9ca37332.js +4 -0
- package/dist/elements/{p-37de7110.js → p-9d48def2.js} +3 -0
- package/dist/elements/p-a805f2f9.entry.js +1 -0
- package/dist/elements/p-a86a5bfa.entry.js +1 -0
- package/dist/elements/{p-9c1dbe52.entry.js → p-ac34eab7.entry.js} +1 -1
- package/dist/elements/p-ad366eab.entry.js +4 -0
- package/dist/elements/p-aef3a931.js +7 -0
- package/dist/elements/p-b0537eb3.entry.js +1 -0
- package/dist/elements/p-b41e66f0.entry.js +1 -0
- package/dist/elements/p-b47e7091.entry.js +1 -0
- package/dist/elements/p-b840320e.js +4 -0
- package/dist/elements/p-b934ac5d.entry.js +1 -0
- package/dist/elements/p-bc63f4b6.entry.js +1 -0
- package/dist/elements/p-bd12806f.entry.js +1 -0
- package/dist/elements/p-bf90022d.entry.js +4 -0
- package/dist/elements/p-c16d38d5.js +4 -0
- package/dist/elements/p-c84205a3.js +4 -0
- package/dist/elements/{p-06675ac7.entry.js → p-cbe318f8.entry.js} +1 -1
- package/dist/elements/p-cfed7395.js +4 -0
- package/dist/elements/p-d3e75c94.entry.js +1 -0
- package/dist/elements/p-d8e7ebf4.entry.js +7 -0
- package/dist/elements/p-d9880221.entry.js +4 -0
- package/dist/elements/p-da5db8fb.entry.js +1 -0
- package/dist/elements/{p-91fe653f.js → p-dcc6b03c.js} +3 -0
- package/dist/elements/{p-305e246c.entry.js → p-dd846020.entry.js} +1 -1
- package/dist/elements/p-dffd8689.js +4 -0
- package/dist/elements/p-e3bcb6e8.entry.js +1 -0
- package/dist/elements/p-e495a095.js +4 -0
- package/dist/elements/p-e59d9789.entry.js +1 -0
- package/dist/elements/p-e5fc7d42.entry.js +1 -0
- package/dist/elements/{p-aaa8393e.entry.js → p-eb137e9d.entry.js} +1 -1
- package/dist/elements/p-f4e54a17.js +7 -0
- package/dist/elements/p-f67d0717.entry.js +1 -0
- package/dist/elements/p-f7f4c640.js +1 -0
- package/dist/elements/p-f851b91a.js +4 -0
- package/dist/elements/p-fb27ee76.entry.js +1 -0
- package/dist/elements/p-fbddca35.entry.js +1 -0
- package/dist/elements/p-fdac5f3a.js +4 -0
- package/dist/elements/p-feb0cea8.entry.js +4 -0
- package/dist/esm/animation-801a007a.js +986 -0
- package/dist/esm/{app-globals-27d92837.js → app-globals-05a3abfb.js} +1 -1
- package/dist/esm/cubic-bezier-538b6253.js +90 -0
- package/dist/esm/data-62c81c24.js +1463 -0
- package/dist/esm/dir-defb16c6.js +18 -0
- package/dist/esm/elements.js +5 -5
- package/dist/esm/focus-visible-78d55799.js +74 -0
- package/dist/esm/framework-delegate-7e2b767b.js +115 -0
- package/dist/esm/gesture-controller-c466ff14.js +195 -0
- package/dist/esm/haptic-e7d5ef4d.js +135 -0
- package/dist/esm/hardware-back-button-242191a7.js +71 -0
- package/dist/esm/helpers-aeff219b.js +410 -0
- package/dist/esm/index-0dbaca1a.js +28 -0
- package/dist/esm/index-1f3d8582.js +34 -0
- package/dist/esm/index-2be9a18b.js +312 -0
- package/dist/esm/index-51e4a829.js +137 -0
- package/dist/esm/index-6048aed6.js +224 -0
- package/dist/esm/index-65ecd543.js +25 -0
- package/dist/{custom-elements/tap-click.js → esm/index-b212db1c.js} +37 -19
- package/dist/esm/{index-e4deec27.js → index-cb938ffb.js} +7 -1
- package/dist/esm/index-d39eb62b.js +463 -0
- package/dist/esm/index-ebf7f059.js +128 -0
- package/dist/esm/{input-shims-3b48722f.js → input-shims-8a389148.js} +89 -38
- package/dist/esm/ion-accordion-group.entry.js +201 -0
- package/dist/esm/ion-accordion.entry.js +332 -0
- package/dist/esm/ion-action-sheet_3.entry.js +859 -0
- package/dist/esm/{ion-app_45.entry.js → ion-app_46.entry.js} +1906 -1493
- package/dist/esm/ion-avatar.entry.js +2 -2
- package/dist/esm/ion-back-button.entry.js +12 -11
- package/dist/esm/ion-backdrop.entry.js +4 -4
- package/dist/esm/ion-breadcrumb.entry.js +97 -0
- package/dist/esm/ion-breadcrumbs.entry.js +133 -0
- package/dist/esm/ion-buttons_3.entry.js +793 -0
- package/dist/esm/ion-card-subtitle.entry.js +4 -4
- package/dist/esm/{ion-list-header_3.entry.js → ion-checkbox_4.entry.js} +124 -24
- package/dist/esm/ion-chip.entry.js +5 -10
- package/dist/esm/ion-datetime-button.entry.js +342 -0
- package/dist/esm/ion-datetime.entry.js +1548 -856
- package/dist/esm/ion-fab-button.entry.js +26 -9
- package/dist/esm/ion-fab-list.entry.js +4 -4
- package/dist/esm/ion-fab.entry.js +15 -13
- package/dist/esm/ion-img.entry.js +28 -4
- package/dist/esm/ion-infinite-scroll-content.entry.js +5 -5
- package/dist/esm/ion-infinite-scroll.entry.js +13 -13
- package/dist/esm/ion-input.entry.js +57 -23
- package/dist/esm/ion-item-option.entry.js +8 -8
- package/dist/esm/ion-item-options.entry.js +5 -5
- package/dist/esm/ion-item-sliding.entry.js +59 -63
- package/dist/esm/ion-loading.entry.js +38 -37
- package/dist/esm/ion-menu-button.entry.js +14 -12
- package/dist/esm/ion-menu-toggle.entry.js +8 -7
- package/dist/esm/ion-menu.entry.js +71 -57
- package/dist/esm/ion-modal.entry.js +1377 -147
- package/dist/esm/ion-nav-link.entry.js +5 -2
- package/dist/esm/ion-nav.entry.js +177 -171
- package/dist/esm/ion-picker-column.entry.js +25 -27
- package/dist/esm/ion-picker.entry.js +22 -17
- package/dist/esm/ion-popover.entry.js +1208 -182
- package/dist/esm/ion-range.entry.js +137 -57
- package/dist/esm/ion-refresher-content.entry.js +7 -12
- package/dist/esm/ion-refresher.entry.js +149 -147
- package/dist/esm/ion-reorder-group.entry.js +42 -35
- package/dist/esm/ion-reorder.entry.js +5 -4
- package/dist/esm/ion-route-redirect.entry.js +1 -1
- package/dist/esm/ion-route.entry.js +1 -1
- package/dist/esm/ion-router-link.entry.js +5 -5
- package/dist/esm/ion-router-outlet.entry.js +24 -20
- package/dist/esm/ion-router.entry.js +291 -194
- package/dist/esm/ion-segment-button.entry.js +10 -17
- package/dist/esm/ion-segment.entry.js +127 -26
- package/dist/esm/ion-select-option.entry.js +3 -3
- package/dist/esm/ion-select.entry.js +113 -78
- package/dist/esm/ion-slide.entry.js +3 -3
- package/dist/esm/ion-slides.entry.js +26 -27
- package/dist/esm/ion-spinner.entry.js +10 -9
- package/dist/esm/ion-split-pane.entry.js +16 -12
- package/dist/esm/ion-tab-bar.entry.js +16 -23
- package/dist/esm/ion-tab-button.entry.js +6 -6
- package/dist/esm/ion-tab.entry.js +4 -4
- package/dist/esm/ion-tabs.entry.js +4 -5
- package/dist/esm/ion-text.entry.js +3 -3
- package/dist/esm/ion-textarea.entry.js +31 -29
- package/dist/esm/ion-thumbnail.entry.js +2 -2
- package/dist/esm/ion-toast.entry.js +50 -60
- package/dist/esm/ion-toggle.entry.js +41 -22
- package/dist/esm/ion-virtual-scroll.entry.js +39 -31
- package/dist/esm/{ionic-global-2e28f7c7.js → ionic-global-6cd57191.js} +112 -93
- package/dist/esm/{ios.transition-a783e3cd.js → ios.transition-bbd952f2.js} +78 -53
- package/dist/esm/{keyboard-e6abcb80.js → keyboard-413afe04.js} +6 -3
- package/dist/esm/keyboard-controller-33693bc2.js +40 -0
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-5a4a8c82.js → md.transition-5170a6d3.js} +15 -17
- package/dist/esm/menu-toggle-util-82bf888a.js +12 -0
- package/dist/esm/overlays-bd4abb68.js +502 -0
- package/dist/esm/spinner-configs-cbcd1f62.js +145 -0
- package/dist/esm/{status-tap-69e62ad6.js → status-tap-ad757b8a.js} +10 -5
- package/dist/esm/swipe-back-7ef22876.js +69 -0
- package/dist/esm/theme-7cf2cab0.js +43 -0
- package/dist/types/components.d.ts +0 -13
- package/package.json +7 -8
- package/dist/cjs/button-active-c14dab31.js +0 -66
- package/dist/cjs/focus-visible-16c98640.js +0 -45
- package/dist/cjs/framework-delegate-c45292a3.js +0 -37
- package/dist/cjs/ion-action-sheet.cjs.entry.js +0 -265
- package/dist/cjs/ion-alert.cjs.entry.js +0 -456
- package/dist/cjs/ion-buttons.cjs.entry.js +0 -42
- package/dist/cjs/ion-checkbox.cjs.entry.js +0 -117
- package/dist/cjs/ion-note.cjs.entry.js +0 -29
- package/dist/cjs/ion-select-popover.cjs.entry.js +0 -35
- package/dist/cjs/spinner-configs-fb16b986.js +0 -112
- package/dist/cjs/test-component.cjs.entry.js +0 -13
- package/dist/collection/test/TestComponent.js +0 -3
- package/dist/collection/test/mockPodOS.js +0 -35
- package/dist/collection/test/renderFunctionalComponent.js +0 -8
- package/dist/custom-elements/focus-visible.js +0 -43
- package/dist/custom-elements/index.d.ts +0 -165
- package/dist/elements/p-03bda390.js +0 -1
- package/dist/elements/p-0be044f1.entry.js +0 -1
- package/dist/elements/p-119c7c6c.entry.js +0 -1
- package/dist/elements/p-14c7c3ea.entry.js +0 -1
- package/dist/elements/p-1d4a2c61.js +0 -1
- package/dist/elements/p-1d894ac4.entry.js +0 -1
- package/dist/elements/p-1dafa1ce.entry.js +0 -1
- package/dist/elements/p-23b89ccb.entry.js +0 -1
- package/dist/elements/p-2c03b9ab.entry.js +0 -1
- package/dist/elements/p-346985f2.js +0 -1
- package/dist/elements/p-360f1c62.entry.js +0 -1
- package/dist/elements/p-373e1f25.entry.js +0 -1
- package/dist/elements/p-40547acb.entry.js +0 -1
- package/dist/elements/p-40b68014.entry.js +0 -1
- package/dist/elements/p-42e4f702.entry.js +0 -1
- package/dist/elements/p-489807e5.js +0 -1
- package/dist/elements/p-4ad72d54.entry.js +0 -1
- package/dist/elements/p-4cca7b5e.entry.js +0 -1
- package/dist/elements/p-4f24d306.js +0 -1
- package/dist/elements/p-519d6a53.entry.js +0 -1
- package/dist/elements/p-536e8e52.entry.js +0 -1
- package/dist/elements/p-599bb53f.entry.js +0 -1
- package/dist/elements/p-5eb7a546.js +0 -1
- package/dist/elements/p-60df2bed.entry.js +0 -1
- package/dist/elements/p-65133e33.js +0 -1
- package/dist/elements/p-6693fce8.js +0 -1
- package/dist/elements/p-689bdcc1.entry.js +0 -1
- package/dist/elements/p-70713b3d.entry.js +0 -1
- package/dist/elements/p-707d5d76.js +0 -1
- package/dist/elements/p-7212b7f2.js +0 -1
- package/dist/elements/p-73992898.entry.js +0 -1
- package/dist/elements/p-792c1e0f.entry.js +0 -1
- package/dist/elements/p-7e5300af.js +0 -2
- package/dist/elements/p-8068987c.entry.js +0 -1
- package/dist/elements/p-83accf46.entry.js +0 -1
- package/dist/elements/p-86635d06.entry.js +0 -1
- package/dist/elements/p-874c2b44.js +0 -1
- package/dist/elements/p-89c12ce8.entry.js +0 -1
- package/dist/elements/p-8bcba3f7.entry.js +0 -1
- package/dist/elements/p-8c759f51.entry.js +0 -1
- package/dist/elements/p-8f945e6b.entry.js +0 -1
- package/dist/elements/p-9300ab6a.js +0 -1
- package/dist/elements/p-93cacd51.entry.js +0 -1
- package/dist/elements/p-9408d0b4.entry.js +0 -1
- package/dist/elements/p-98c79eda.js +0 -1
- package/dist/elements/p-99f8abed.js +0 -1
- package/dist/elements/p-9ca7e079.js +0 -1
- package/dist/elements/p-a4648b74.entry.js +0 -1
- package/dist/elements/p-aab0f63c.js +0 -1
- package/dist/elements/p-ad4e2295.entry.js +0 -1
- package/dist/elements/p-afb8f7d5.entry.js +0 -1
- package/dist/elements/p-b055ec44.js +0 -1
- package/dist/elements/p-b078d63b.entry.js +0 -1
- package/dist/elements/p-b3460325.entry.js +0 -1
- package/dist/elements/p-b5406b58.entry.js +0 -1
- package/dist/elements/p-b5ef0c91.entry.js +0 -1
- package/dist/elements/p-b6ba623e.entry.js +0 -1
- package/dist/elements/p-b9926d8b.entry.js +0 -1
- package/dist/elements/p-bfd4cfcd.entry.js +0 -1
- package/dist/elements/p-c08dd7d0.entry.js +0 -1
- package/dist/elements/p-c0db9c51.entry.js +0 -1
- package/dist/elements/p-c1e7fbfb.js +0 -1
- package/dist/elements/p-ca69d6c9.js +0 -1
- package/dist/elements/p-cc4cb1ac.entry.js +0 -1
- package/dist/elements/p-cf8a7031.entry.js +0 -1
- package/dist/elements/p-cff82b6f.js +0 -1
- package/dist/elements/p-d01009b8.entry.js +0 -67
- package/dist/elements/p-d6d1e65f.entry.js +0 -1
- package/dist/elements/p-d9462b66.entry.js +0 -1
- package/dist/elements/p-e2e0fee9.entry.js +0 -1
- package/dist/elements/p-e642b266.entry.js +0 -1
- package/dist/elements/p-e953934f.entry.js +0 -1
- package/dist/elements/p-f0474f46.js +0 -1
- package/dist/elements/p-f10a94f6.entry.js +0 -1
- package/dist/elements/p-f2426182.entry.js +0 -1
- package/dist/elements/p-f327fd21.js +0 -1
- package/dist/elements/p-f84987ee.js +0 -1
- package/dist/elements/p-f8a3367d.entry.js +0 -1
- package/dist/esm/focus-visible-edb28f19.js +0 -43
- package/dist/esm/framework-delegate-9cd8048f.js +0 -34
- package/dist/esm/ion-action-sheet.entry.js +0 -261
- package/dist/esm/ion-note.entry.js +0 -25
- package/dist/esm/ion-select-popover.entry.js +0 -31
- package/dist/esm/spinner-configs-aaf2a1a9.js +0 -110
- package/dist/esm/swipe-back-d84cfc8a.js +0 -50
- package/dist/esm/test-component.entry.js +0 -9
- package/dist/types/test/TestComponent.d.ts +0 -2
- package/dist/types/test/mockPodOS.d.ts +0 -11
- package/dist/types/test/renderFunctionalComponent.d.ts +0 -1
|
@@ -0,0 +1,826 @@
|
|
|
1
|
+
import { writeTask, proxyCustomElement, HTMLElement, createEvent, readTask, h, Host } from '@stencil/core/internal/client';
|
|
2
|
+
import { a as isPlatform, g as getIonMode } from './ionic-global.js';
|
|
3
|
+
import { g as getTimeGivenProgression } from './cubic-bezier.js';
|
|
4
|
+
import { I as ION_CONTENT_ELEMENT_SELECTOR, p as printIonContentErrorMsg, b as ION_CONTENT_CLASS_SELECTOR, g as getScrollElement } from './index5.js';
|
|
5
|
+
import { t as transitionEndAsync, d as componentOnReady, l as clamp, g as getElementRoot, r as raf } from './helpers.js';
|
|
6
|
+
import { h as hapticImpact } from './haptic.js';
|
|
7
|
+
import { c as createAnimation } from './animation.js';
|
|
8
|
+
|
|
9
|
+
/*!
|
|
10
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
11
|
+
*/
|
|
12
|
+
const getRefresherAnimationType = (contentEl) => {
|
|
13
|
+
const previousSibling = contentEl.previousElementSibling;
|
|
14
|
+
const hasHeader = previousSibling !== null && previousSibling.tagName === 'ION-HEADER';
|
|
15
|
+
return hasHeader ? 'translate' : 'scale';
|
|
16
|
+
};
|
|
17
|
+
const createPullingAnimation = (type, pullingSpinner, refresherEl) => {
|
|
18
|
+
return type === 'scale'
|
|
19
|
+
? createScaleAnimation(pullingSpinner, refresherEl)
|
|
20
|
+
: createTranslateAnimation(pullingSpinner, refresherEl);
|
|
21
|
+
};
|
|
22
|
+
const createBaseAnimation = (pullingRefresherIcon) => {
|
|
23
|
+
const spinner = pullingRefresherIcon.querySelector('ion-spinner');
|
|
24
|
+
const circle = spinner.shadowRoot.querySelector('circle');
|
|
25
|
+
const spinnerArrowContainer = pullingRefresherIcon.querySelector('.spinner-arrow-container');
|
|
26
|
+
const arrowContainer = pullingRefresherIcon.querySelector('.arrow-container');
|
|
27
|
+
const arrow = arrowContainer ? arrowContainer.querySelector('ion-icon') : null;
|
|
28
|
+
const baseAnimation = createAnimation().duration(1000).easing('ease-out');
|
|
29
|
+
const spinnerArrowContainerAnimation = createAnimation()
|
|
30
|
+
.addElement(spinnerArrowContainer)
|
|
31
|
+
.keyframes([
|
|
32
|
+
{ offset: 0, opacity: '0.3' },
|
|
33
|
+
{ offset: 0.45, opacity: '0.3' },
|
|
34
|
+
{ offset: 0.55, opacity: '1' },
|
|
35
|
+
{ offset: 1, opacity: '1' },
|
|
36
|
+
]);
|
|
37
|
+
const circleInnerAnimation = createAnimation()
|
|
38
|
+
.addElement(circle)
|
|
39
|
+
.keyframes([
|
|
40
|
+
{ offset: 0, strokeDasharray: '1px, 200px' },
|
|
41
|
+
{ offset: 0.2, strokeDasharray: '1px, 200px' },
|
|
42
|
+
{ offset: 0.55, strokeDasharray: '100px, 200px' },
|
|
43
|
+
{ offset: 1, strokeDasharray: '100px, 200px' },
|
|
44
|
+
]);
|
|
45
|
+
const circleOuterAnimation = createAnimation()
|
|
46
|
+
.addElement(spinner)
|
|
47
|
+
.keyframes([
|
|
48
|
+
{ offset: 0, transform: 'rotate(-90deg)' },
|
|
49
|
+
{ offset: 1, transform: 'rotate(210deg)' },
|
|
50
|
+
]);
|
|
51
|
+
/**
|
|
52
|
+
* Only add arrow animation if present
|
|
53
|
+
* this allows users to customize the spinners
|
|
54
|
+
* without errors being thrown
|
|
55
|
+
*/
|
|
56
|
+
if (arrowContainer && arrow) {
|
|
57
|
+
const arrowContainerAnimation = createAnimation()
|
|
58
|
+
.addElement(arrowContainer)
|
|
59
|
+
.keyframes([
|
|
60
|
+
{ offset: 0, transform: 'rotate(0deg)' },
|
|
61
|
+
{ offset: 0.3, transform: 'rotate(0deg)' },
|
|
62
|
+
{ offset: 0.55, transform: 'rotate(280deg)' },
|
|
63
|
+
{ offset: 1, transform: 'rotate(400deg)' },
|
|
64
|
+
]);
|
|
65
|
+
const arrowAnimation = createAnimation()
|
|
66
|
+
.addElement(arrow)
|
|
67
|
+
.keyframes([
|
|
68
|
+
{ offset: 0, transform: 'translateX(2px) scale(0)' },
|
|
69
|
+
{ offset: 0.3, transform: 'translateX(2px) scale(0)' },
|
|
70
|
+
{ offset: 0.55, transform: 'translateX(-1.5px) scale(1)' },
|
|
71
|
+
{ offset: 1, transform: 'translateX(-1.5px) scale(1)' },
|
|
72
|
+
]);
|
|
73
|
+
baseAnimation.addAnimation([arrowContainerAnimation, arrowAnimation]);
|
|
74
|
+
}
|
|
75
|
+
return baseAnimation.addAnimation([spinnerArrowContainerAnimation, circleInnerAnimation, circleOuterAnimation]);
|
|
76
|
+
};
|
|
77
|
+
const createScaleAnimation = (pullingRefresherIcon, refresherEl) => {
|
|
78
|
+
/**
|
|
79
|
+
* Do not take the height of the refresher icon
|
|
80
|
+
* because at this point the DOM has not updated,
|
|
81
|
+
* so the refresher icon is still hidden with
|
|
82
|
+
* display: none.
|
|
83
|
+
* The `ion-refresher` container height
|
|
84
|
+
* is roughly the amount we need to offset
|
|
85
|
+
* the icon by when pulling down.
|
|
86
|
+
*/
|
|
87
|
+
const height = refresherEl.clientHeight;
|
|
88
|
+
const spinnerAnimation = createAnimation()
|
|
89
|
+
.addElement(pullingRefresherIcon)
|
|
90
|
+
.keyframes([
|
|
91
|
+
{ offset: 0, transform: `scale(0) translateY(-${height}px)` },
|
|
92
|
+
{ offset: 1, transform: 'scale(1) translateY(100px)' },
|
|
93
|
+
]);
|
|
94
|
+
return createBaseAnimation(pullingRefresherIcon).addAnimation([spinnerAnimation]);
|
|
95
|
+
};
|
|
96
|
+
const createTranslateAnimation = (pullingRefresherIcon, refresherEl) => {
|
|
97
|
+
/**
|
|
98
|
+
* Do not take the height of the refresher icon
|
|
99
|
+
* because at this point the DOM has not updated,
|
|
100
|
+
* so the refresher icon is still hidden with
|
|
101
|
+
* display: none.
|
|
102
|
+
* The `ion-refresher` container height
|
|
103
|
+
* is roughly the amount we need to offset
|
|
104
|
+
* the icon by when pulling down.
|
|
105
|
+
*/
|
|
106
|
+
const height = refresherEl.clientHeight;
|
|
107
|
+
const spinnerAnimation = createAnimation()
|
|
108
|
+
.addElement(pullingRefresherIcon)
|
|
109
|
+
.keyframes([
|
|
110
|
+
{ offset: 0, transform: `translateY(-${height}px)` },
|
|
111
|
+
{ offset: 1, transform: 'translateY(100px)' },
|
|
112
|
+
]);
|
|
113
|
+
return createBaseAnimation(pullingRefresherIcon).addAnimation([spinnerAnimation]);
|
|
114
|
+
};
|
|
115
|
+
const createSnapBackAnimation = (pullingRefresherIcon) => {
|
|
116
|
+
return createAnimation()
|
|
117
|
+
.duration(125)
|
|
118
|
+
.addElement(pullingRefresherIcon)
|
|
119
|
+
.fromTo('transform', 'translateY(var(--ion-pulling-refresher-translate, 100px))', 'translateY(0px)');
|
|
120
|
+
};
|
|
121
|
+
// iOS Native Refresher
|
|
122
|
+
// -----------------------------
|
|
123
|
+
const setSpinnerOpacity = (spinner, opacity) => {
|
|
124
|
+
spinner.style.setProperty('opacity', opacity.toString());
|
|
125
|
+
};
|
|
126
|
+
const handleScrollWhilePulling = (ticks, numTicks, pullAmount) => {
|
|
127
|
+
const max = 1;
|
|
128
|
+
writeTask(() => {
|
|
129
|
+
ticks.forEach((el, i) => {
|
|
130
|
+
/**
|
|
131
|
+
* Compute the opacity of each tick
|
|
132
|
+
* mark as a percentage of the pullAmount
|
|
133
|
+
* offset by max / numTicks so
|
|
134
|
+
* the tick marks are shown staggered.
|
|
135
|
+
*/
|
|
136
|
+
const min = i * (max / numTicks);
|
|
137
|
+
const range = max - min;
|
|
138
|
+
const start = pullAmount - min;
|
|
139
|
+
const progression = clamp(0, start / range, 1);
|
|
140
|
+
el.style.setProperty('opacity', progression.toString());
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
const handleScrollWhileRefreshing = (spinner, lastVelocityY) => {
|
|
145
|
+
writeTask(() => {
|
|
146
|
+
// If user pulls down quickly, the spinner should spin faster
|
|
147
|
+
spinner.style.setProperty('--refreshing-rotation-duration', lastVelocityY >= 1.0 ? '0.5s' : '2s');
|
|
148
|
+
spinner.style.setProperty('opacity', '1');
|
|
149
|
+
});
|
|
150
|
+
};
|
|
151
|
+
const translateElement = (el, value, duration = 200) => {
|
|
152
|
+
if (!el) {
|
|
153
|
+
return Promise.resolve();
|
|
154
|
+
}
|
|
155
|
+
const trans = transitionEndAsync(el, duration);
|
|
156
|
+
writeTask(() => {
|
|
157
|
+
el.style.setProperty('transition', `${duration}ms all ease-out`);
|
|
158
|
+
if (value === undefined) {
|
|
159
|
+
el.style.removeProperty('transform');
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
el.style.setProperty('transform', `translate3d(0px, ${value}, 0px)`);
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
return trans;
|
|
166
|
+
};
|
|
167
|
+
// Utils
|
|
168
|
+
// -----------------------------
|
|
169
|
+
const shouldUseNativeRefresher = async (referenceEl, mode) => {
|
|
170
|
+
const refresherContent = referenceEl.querySelector('ion-refresher-content');
|
|
171
|
+
if (!refresherContent) {
|
|
172
|
+
return Promise.resolve(false);
|
|
173
|
+
}
|
|
174
|
+
await new Promise((resolve) => componentOnReady(refresherContent, resolve));
|
|
175
|
+
const pullingSpinner = referenceEl.querySelector('ion-refresher-content .refresher-pulling ion-spinner');
|
|
176
|
+
const refreshingSpinner = referenceEl.querySelector('ion-refresher-content .refresher-refreshing ion-spinner');
|
|
177
|
+
return (pullingSpinner !== null &&
|
|
178
|
+
refreshingSpinner !== null &&
|
|
179
|
+
((mode === 'ios' && isPlatform('mobile') && referenceEl.style.webkitOverflowScrolling !== undefined) ||
|
|
180
|
+
mode === 'md'));
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
const refresherIosCss = "ion-refresher{left:0;top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}[dir=rtl] ion-refresher,:host-context([dir=rtl]) ion-refresher{left:unset;right:unset;right:0}ion-refresher.refresher-active{display:block}ion-refresher-content{display:flex;flex-direction:column;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{transform-origin:center;transition:200ms;font-size:30px;text-align:center}[dir=rtl] .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{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{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{transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{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{margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){ion-refresher.refresher-native ion-spinner{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}.refresher-native .refresher-refreshing ion-spinner{--refreshing-rotation-duration:2s;display:none;animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards}.refresher-native .refresher-refreshing{display:none;animation:250ms linear refresher-pop forwards}.refresher-native ion-spinner{width:32px;height:32px;color:var(--ion-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{transform:scale(0) rotate(180deg);transition:300ms}@keyframes refresher-pop{0%{transform:scale(1);animation-timing-function:ease-in}50%{transform:scale(1.2);animation-timing-function:ease-out}100%{transform:scale(1)}}@keyframes refresher-rotate{from{transform:rotate(0deg)}to{transform:rotate(180deg)}}";
|
|
184
|
+
|
|
185
|
+
const refresherMdCss = "ion-refresher{left:0;top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}[dir=rtl] ion-refresher,:host-context([dir=rtl]) ion-refresher{left:unset;right:unset;right:0}ion-refresher.refresher-active{display:block}ion-refresher-content{display:flex;flex-direction:column;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{transform-origin:center;transition:200ms;font-size:30px;text-align:center}[dir=rtl] .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{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{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{transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{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{margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;width:24px;height:24px;color:var(--ion-color-primary, #3880ff)}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){ion-refresher.refresher-native ion-spinner{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}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{margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;left:0;right:0;bottom:-4px;position:absolute;color:var(--ion-color-primary, #3880ff);font-size:12px}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){ion-refresher.refresher-native .arrow-container ion-icon{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}ion-refresher.refresher-native.refresher-pulling ion-refresher-content .refresher-pulling,ion-refresher.refresher-native.refresher-ready ion-refresher-content .refresher-pulling{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:flex}ion-refresher.refresher-native .refresher-pulling-icon{transform:translateY(calc(-100% - 10px))}ion-refresher.refresher-native .refresher-pulling-icon,ion-refresher.refresher-native .refresher-refreshing-icon{margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;border-radius:100%;padding-left:8px;padding-right:8px;padding-top:8px;padding-bottom:8px;display:flex;border:1px solid var(--ion-color-step-200, #ececec);background:var(--ion-color-step-250, #ffffff);box-shadow:0px 1px 6px rgba(0, 0, 0, 0.1)}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){ion-refresher.refresher-native .refresher-pulling-icon,ion-refresher.refresher-native .refresher-refreshing-icon{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){ion-refresher.refresher-native .refresher-pulling-icon,ion-refresher.refresher-native .refresher-refreshing-icon{padding-left:unset;padding-right:unset;-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px}}";
|
|
186
|
+
|
|
187
|
+
const Refresher = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
188
|
+
constructor() {
|
|
189
|
+
super();
|
|
190
|
+
this.__registerHost();
|
|
191
|
+
this.ionRefresh = createEvent(this, "ionRefresh", 7);
|
|
192
|
+
this.ionPull = createEvent(this, "ionPull", 7);
|
|
193
|
+
this.ionStart = createEvent(this, "ionStart", 7);
|
|
194
|
+
this.appliedStyles = false;
|
|
195
|
+
this.didStart = false;
|
|
196
|
+
this.progress = 0;
|
|
197
|
+
this.pointerDown = false;
|
|
198
|
+
this.needsCompletion = false;
|
|
199
|
+
this.didRefresh = false;
|
|
200
|
+
this.lastVelocityY = 0;
|
|
201
|
+
this.animations = [];
|
|
202
|
+
this.nativeRefresher = false;
|
|
203
|
+
/**
|
|
204
|
+
* The current state which the refresher is in. The refresher's states include:
|
|
205
|
+
*
|
|
206
|
+
* - `inactive` - The refresher is not being pulled down or refreshing and is currently hidden.
|
|
207
|
+
* - `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.
|
|
208
|
+
* - `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.
|
|
209
|
+
* - `ready` - The user has pulled down the refresher far enough that if they let go, it'll begin the `refreshing` state.
|
|
210
|
+
* - `refreshing` - The refresher is actively waiting on the async operation to end. Once the refresh handler calls `complete()` it will begin the `completing` state.
|
|
211
|
+
* - `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.
|
|
212
|
+
*/
|
|
213
|
+
this.state = 1 /* RefresherState.Inactive */;
|
|
214
|
+
/**
|
|
215
|
+
* The minimum distance the user must pull down until the
|
|
216
|
+
* refresher will go into the `refreshing` state.
|
|
217
|
+
* Does not apply when the refresher content uses a spinner,
|
|
218
|
+
* enabling the native refresher.
|
|
219
|
+
*/
|
|
220
|
+
this.pullMin = 60;
|
|
221
|
+
/**
|
|
222
|
+
* The maximum distance of the pull until the refresher
|
|
223
|
+
* will automatically go into the `refreshing` state.
|
|
224
|
+
* Defaults to the result of `pullMin + 60`.
|
|
225
|
+
* Does not apply when the refresher content uses a spinner,
|
|
226
|
+
* enabling the native refresher.
|
|
227
|
+
*/
|
|
228
|
+
this.pullMax = this.pullMin + 60;
|
|
229
|
+
/**
|
|
230
|
+
* Time it takes to close the refresher.
|
|
231
|
+
* Does not apply when the refresher content uses a spinner,
|
|
232
|
+
* enabling the native refresher.
|
|
233
|
+
*/
|
|
234
|
+
this.closeDuration = '280ms';
|
|
235
|
+
/**
|
|
236
|
+
* Time it takes the refresher to snap back to the `refreshing` state.
|
|
237
|
+
* Does not apply when the refresher content uses a spinner,
|
|
238
|
+
* enabling the native refresher.
|
|
239
|
+
*/
|
|
240
|
+
this.snapbackDuration = '280ms';
|
|
241
|
+
/**
|
|
242
|
+
* How much to multiply the pull speed by. To slow the pull animation down,
|
|
243
|
+
* pass a number less than `1`. To speed up the pull, pass a number greater
|
|
244
|
+
* than `1`. The default value is `1` which is equal to the speed of the cursor.
|
|
245
|
+
* If a negative value is passed in, the factor will be `1` instead.
|
|
246
|
+
*
|
|
247
|
+
* For example: If the value passed is `1.2` and the content is dragged by
|
|
248
|
+
* `10` pixels, instead of `10` pixels the content will be pulled by `12` pixels
|
|
249
|
+
* (an increase of 20 percent). If the value passed is `0.8`, the dragged amount
|
|
250
|
+
* will be `8` pixels, less than the amount the cursor has moved.
|
|
251
|
+
*
|
|
252
|
+
* Does not apply when the refresher content uses a spinner,
|
|
253
|
+
* enabling the native refresher.
|
|
254
|
+
*/
|
|
255
|
+
this.pullFactor = 1;
|
|
256
|
+
/**
|
|
257
|
+
* If `true`, the refresher will be hidden.
|
|
258
|
+
*/
|
|
259
|
+
this.disabled = false;
|
|
260
|
+
}
|
|
261
|
+
disabledChanged() {
|
|
262
|
+
if (this.gesture) {
|
|
263
|
+
this.gesture.enable(!this.disabled);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
async checkNativeRefresher() {
|
|
267
|
+
const useNativeRefresher = await shouldUseNativeRefresher(this.el, getIonMode(this));
|
|
268
|
+
if (useNativeRefresher && !this.nativeRefresher) {
|
|
269
|
+
const contentEl = this.el.closest('ion-content');
|
|
270
|
+
this.setupNativeRefresher(contentEl);
|
|
271
|
+
}
|
|
272
|
+
else if (!useNativeRefresher) {
|
|
273
|
+
this.destroyNativeRefresher();
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
destroyNativeRefresher() {
|
|
277
|
+
if (this.scrollEl && this.scrollListenerCallback) {
|
|
278
|
+
this.scrollEl.removeEventListener('scroll', this.scrollListenerCallback);
|
|
279
|
+
this.scrollListenerCallback = undefined;
|
|
280
|
+
}
|
|
281
|
+
this.nativeRefresher = false;
|
|
282
|
+
}
|
|
283
|
+
async resetNativeRefresher(el, state) {
|
|
284
|
+
this.state = state;
|
|
285
|
+
if (getIonMode(this) === 'ios') {
|
|
286
|
+
await translateElement(el, undefined, 300);
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
await transitionEndAsync(this.el.querySelector('.refresher-refreshing-icon'), 200);
|
|
290
|
+
}
|
|
291
|
+
this.didRefresh = false;
|
|
292
|
+
this.needsCompletion = false;
|
|
293
|
+
this.pointerDown = false;
|
|
294
|
+
this.animations.forEach((ani) => ani.destroy());
|
|
295
|
+
this.animations = [];
|
|
296
|
+
this.progress = 0;
|
|
297
|
+
this.state = 1 /* RefresherState.Inactive */;
|
|
298
|
+
}
|
|
299
|
+
async setupiOSNativeRefresher(pullingSpinner, refreshingSpinner) {
|
|
300
|
+
this.elementToTransform = this.scrollEl;
|
|
301
|
+
const ticks = pullingSpinner.shadowRoot.querySelectorAll('svg');
|
|
302
|
+
let MAX_PULL = this.scrollEl.clientHeight * 0.16;
|
|
303
|
+
const NUM_TICKS = ticks.length;
|
|
304
|
+
writeTask(() => ticks.forEach((el) => el.style.setProperty('animation', 'none')));
|
|
305
|
+
this.scrollListenerCallback = () => {
|
|
306
|
+
// If pointer is not on screen or refresher is not active, ignore scroll
|
|
307
|
+
if (!this.pointerDown && this.state === 1 /* RefresherState.Inactive */) {
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
readTask(() => {
|
|
311
|
+
// PTR should only be active when overflow scrolling at the top
|
|
312
|
+
const scrollTop = this.scrollEl.scrollTop;
|
|
313
|
+
const refresherHeight = this.el.clientHeight;
|
|
314
|
+
if (scrollTop > 0) {
|
|
315
|
+
/**
|
|
316
|
+
* If refresher is refreshing and user tries to scroll
|
|
317
|
+
* progressively fade refresher out/in
|
|
318
|
+
*/
|
|
319
|
+
if (this.state === 8 /* RefresherState.Refreshing */) {
|
|
320
|
+
const ratio = clamp(0, scrollTop / (refresherHeight * 0.5), 1);
|
|
321
|
+
writeTask(() => setSpinnerOpacity(refreshingSpinner, 1 - ratio));
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
if (this.pointerDown) {
|
|
327
|
+
if (!this.didStart) {
|
|
328
|
+
this.didStart = true;
|
|
329
|
+
this.ionStart.emit();
|
|
330
|
+
}
|
|
331
|
+
// emit "pulling" on every move
|
|
332
|
+
if (this.pointerDown) {
|
|
333
|
+
this.ionPull.emit();
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* We want to delay the start of this gesture by ~30px
|
|
338
|
+
* when initially pulling down so the refresher does not
|
|
339
|
+
* overlap with the content. But when letting go of the
|
|
340
|
+
* gesture before the refresher completes, we want the
|
|
341
|
+
* refresher tick marks to quickly fade out.
|
|
342
|
+
*/
|
|
343
|
+
const offset = this.didStart ? 30 : 0;
|
|
344
|
+
const pullAmount = (this.progress = clamp(0, (Math.abs(scrollTop) - offset) / MAX_PULL, 1));
|
|
345
|
+
const shouldShowRefreshingSpinner = this.state === 8 /* RefresherState.Refreshing */ || pullAmount === 1;
|
|
346
|
+
if (shouldShowRefreshingSpinner) {
|
|
347
|
+
if (this.pointerDown) {
|
|
348
|
+
handleScrollWhileRefreshing(refreshingSpinner, this.lastVelocityY);
|
|
349
|
+
}
|
|
350
|
+
if (!this.didRefresh) {
|
|
351
|
+
this.beginRefresh();
|
|
352
|
+
this.didRefresh = true;
|
|
353
|
+
hapticImpact({ style: 'light' });
|
|
354
|
+
/**
|
|
355
|
+
* Translate the content element otherwise when pointer is removed
|
|
356
|
+
* from screen the scroll content will bounce back over the refresher
|
|
357
|
+
*/
|
|
358
|
+
if (!this.pointerDown) {
|
|
359
|
+
translateElement(this.elementToTransform, `${refresherHeight}px`);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
364
|
+
this.state = 2 /* RefresherState.Pulling */;
|
|
365
|
+
handleScrollWhilePulling(ticks, NUM_TICKS, pullAmount);
|
|
366
|
+
}
|
|
367
|
+
});
|
|
368
|
+
};
|
|
369
|
+
this.scrollEl.addEventListener('scroll', this.scrollListenerCallback);
|
|
370
|
+
this.gesture = (await import('./index9.js')).createGesture({
|
|
371
|
+
el: this.scrollEl,
|
|
372
|
+
gestureName: 'refresher',
|
|
373
|
+
gesturePriority: 31,
|
|
374
|
+
direction: 'y',
|
|
375
|
+
threshold: 5,
|
|
376
|
+
onStart: () => {
|
|
377
|
+
this.pointerDown = true;
|
|
378
|
+
if (!this.didRefresh) {
|
|
379
|
+
translateElement(this.elementToTransform, '0px');
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* If the content had `display: none` when
|
|
383
|
+
* the refresher was initialized, its clientHeight
|
|
384
|
+
* will be 0. When the gesture starts, the content
|
|
385
|
+
* will be visible, so try to get the correct
|
|
386
|
+
* client height again. This is most common when
|
|
387
|
+
* using the refresher in an ion-menu.
|
|
388
|
+
*/
|
|
389
|
+
if (MAX_PULL === 0) {
|
|
390
|
+
MAX_PULL = this.scrollEl.clientHeight * 0.16;
|
|
391
|
+
}
|
|
392
|
+
},
|
|
393
|
+
onMove: (ev) => {
|
|
394
|
+
this.lastVelocityY = ev.velocityY;
|
|
395
|
+
},
|
|
396
|
+
onEnd: () => {
|
|
397
|
+
this.pointerDown = false;
|
|
398
|
+
this.didStart = false;
|
|
399
|
+
if (this.needsCompletion) {
|
|
400
|
+
this.resetNativeRefresher(this.elementToTransform, 32 /* RefresherState.Completing */);
|
|
401
|
+
this.needsCompletion = false;
|
|
402
|
+
}
|
|
403
|
+
else if (this.didRefresh) {
|
|
404
|
+
readTask(() => translateElement(this.elementToTransform, `${this.el.clientHeight}px`));
|
|
405
|
+
}
|
|
406
|
+
},
|
|
407
|
+
});
|
|
408
|
+
this.disabledChanged();
|
|
409
|
+
}
|
|
410
|
+
async setupMDNativeRefresher(contentEl, pullingSpinner, refreshingSpinner) {
|
|
411
|
+
const circle = getElementRoot(pullingSpinner).querySelector('circle');
|
|
412
|
+
const pullingRefresherIcon = this.el.querySelector('ion-refresher-content .refresher-pulling-icon');
|
|
413
|
+
const refreshingCircle = getElementRoot(refreshingSpinner).querySelector('circle');
|
|
414
|
+
if (circle !== null && refreshingCircle !== null) {
|
|
415
|
+
writeTask(() => {
|
|
416
|
+
circle.style.setProperty('animation', 'none');
|
|
417
|
+
// This lines up the animation on the refreshing spinner with the pulling spinner
|
|
418
|
+
refreshingSpinner.style.setProperty('animation-delay', '-655ms');
|
|
419
|
+
refreshingCircle.style.setProperty('animation-delay', '-655ms');
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
this.gesture = (await import('./index9.js')).createGesture({
|
|
423
|
+
el: this.scrollEl,
|
|
424
|
+
gestureName: 'refresher',
|
|
425
|
+
gesturePriority: 31,
|
|
426
|
+
direction: 'y',
|
|
427
|
+
threshold: 5,
|
|
428
|
+
canStart: () => this.state !== 8 /* RefresherState.Refreshing */ &&
|
|
429
|
+
this.state !== 32 /* RefresherState.Completing */ &&
|
|
430
|
+
this.scrollEl.scrollTop === 0,
|
|
431
|
+
onStart: (ev) => {
|
|
432
|
+
this.progress = 0;
|
|
433
|
+
ev.data = { animation: undefined, didStart: false, cancelled: false };
|
|
434
|
+
},
|
|
435
|
+
onMove: (ev) => {
|
|
436
|
+
if ((ev.velocityY < 0 && this.progress === 0 && !ev.data.didStart) || ev.data.cancelled) {
|
|
437
|
+
ev.data.cancelled = true;
|
|
438
|
+
return;
|
|
439
|
+
}
|
|
440
|
+
if (!ev.data.didStart) {
|
|
441
|
+
ev.data.didStart = true;
|
|
442
|
+
this.state = 2 /* RefresherState.Pulling */;
|
|
443
|
+
writeTask(() => this.scrollEl.style.setProperty('--overflow', 'hidden'));
|
|
444
|
+
const animationType = getRefresherAnimationType(contentEl);
|
|
445
|
+
const animation = createPullingAnimation(animationType, pullingRefresherIcon, this.el);
|
|
446
|
+
ev.data.animation = animation;
|
|
447
|
+
animation.progressStart(false, 0);
|
|
448
|
+
this.ionStart.emit();
|
|
449
|
+
this.animations.push(animation);
|
|
450
|
+
return;
|
|
451
|
+
}
|
|
452
|
+
// Since we are using an easing curve, slow the gesture tracking down a bit
|
|
453
|
+
this.progress = clamp(0, (ev.deltaY / 180) * 0.5, 1);
|
|
454
|
+
ev.data.animation.progressStep(this.progress);
|
|
455
|
+
this.ionPull.emit();
|
|
456
|
+
},
|
|
457
|
+
onEnd: (ev) => {
|
|
458
|
+
if (!ev.data.didStart) {
|
|
459
|
+
return;
|
|
460
|
+
}
|
|
461
|
+
this.gesture.enable(false);
|
|
462
|
+
writeTask(() => this.scrollEl.style.removeProperty('--overflow'));
|
|
463
|
+
if (this.progress <= 0.4) {
|
|
464
|
+
ev.data.animation.progressEnd(0, this.progress, 500).onFinish(() => {
|
|
465
|
+
this.animations.forEach((ani) => ani.destroy());
|
|
466
|
+
this.animations = [];
|
|
467
|
+
this.gesture.enable(true);
|
|
468
|
+
this.state = 1 /* RefresherState.Inactive */;
|
|
469
|
+
});
|
|
470
|
+
return;
|
|
471
|
+
}
|
|
472
|
+
const progress = getTimeGivenProgression([0, 0], [0, 0], [1, 1], [1, 1], this.progress)[0];
|
|
473
|
+
const snapBackAnimation = createSnapBackAnimation(pullingRefresherIcon);
|
|
474
|
+
this.animations.push(snapBackAnimation);
|
|
475
|
+
writeTask(async () => {
|
|
476
|
+
pullingRefresherIcon.style.setProperty('--ion-pulling-refresher-translate', `${progress * 100}px`);
|
|
477
|
+
ev.data.animation.progressEnd();
|
|
478
|
+
await snapBackAnimation.play();
|
|
479
|
+
this.beginRefresh();
|
|
480
|
+
ev.data.animation.destroy();
|
|
481
|
+
this.gesture.enable(true);
|
|
482
|
+
});
|
|
483
|
+
},
|
|
484
|
+
});
|
|
485
|
+
this.disabledChanged();
|
|
486
|
+
}
|
|
487
|
+
async setupNativeRefresher(contentEl) {
|
|
488
|
+
if (this.scrollListenerCallback || !contentEl || this.nativeRefresher || !this.scrollEl) {
|
|
489
|
+
return;
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* If using non-native refresher before make sure
|
|
493
|
+
* we clean up any old CSS. This can happen when
|
|
494
|
+
* a user manually calls the refresh method in a
|
|
495
|
+
* component create callback before the native
|
|
496
|
+
* refresher is setup.
|
|
497
|
+
*/
|
|
498
|
+
this.setCss(0, '', false, '');
|
|
499
|
+
this.nativeRefresher = true;
|
|
500
|
+
const pullingSpinner = this.el.querySelector('ion-refresher-content .refresher-pulling ion-spinner');
|
|
501
|
+
const refreshingSpinner = this.el.querySelector('ion-refresher-content .refresher-refreshing ion-spinner');
|
|
502
|
+
if (getIonMode(this) === 'ios') {
|
|
503
|
+
this.setupiOSNativeRefresher(pullingSpinner, refreshingSpinner);
|
|
504
|
+
}
|
|
505
|
+
else {
|
|
506
|
+
this.setupMDNativeRefresher(contentEl, pullingSpinner, refreshingSpinner);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
componentDidUpdate() {
|
|
510
|
+
this.checkNativeRefresher();
|
|
511
|
+
}
|
|
512
|
+
async connectedCallback() {
|
|
513
|
+
if (this.el.getAttribute('slot') !== 'fixed') {
|
|
514
|
+
console.error('Make sure you use: <ion-refresher slot="fixed">');
|
|
515
|
+
return;
|
|
516
|
+
}
|
|
517
|
+
const contentEl = this.el.closest(ION_CONTENT_ELEMENT_SELECTOR);
|
|
518
|
+
if (!contentEl) {
|
|
519
|
+
printIonContentErrorMsg(this.el);
|
|
520
|
+
return;
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* Waits for the content to be ready before querying the scroll
|
|
524
|
+
* or the background content element.
|
|
525
|
+
*/
|
|
526
|
+
componentOnReady(contentEl, async () => {
|
|
527
|
+
const customScrollTarget = contentEl.querySelector(ION_CONTENT_CLASS_SELECTOR);
|
|
528
|
+
/**
|
|
529
|
+
* Query the custom scroll target (if available), first. In refresher implementations,
|
|
530
|
+
* the ion-refresher element will always be a direct child of ion-content (slot="fixed"). By
|
|
531
|
+
* querying the custom scroll target first and falling back to the ion-content element,
|
|
532
|
+
* the correct scroll element will be returned by the implementation.
|
|
533
|
+
*/
|
|
534
|
+
this.scrollEl = await getScrollElement(customScrollTarget !== null && customScrollTarget !== void 0 ? customScrollTarget : contentEl);
|
|
535
|
+
/**
|
|
536
|
+
* Query the background content element from the host ion-content element directly.
|
|
537
|
+
*/
|
|
538
|
+
this.backgroundContentEl = await contentEl.getBackgroundElement();
|
|
539
|
+
if (await shouldUseNativeRefresher(this.el, getIonMode(this))) {
|
|
540
|
+
this.setupNativeRefresher(contentEl);
|
|
541
|
+
}
|
|
542
|
+
else {
|
|
543
|
+
this.gesture = (await import('./index9.js')).createGesture({
|
|
544
|
+
el: contentEl,
|
|
545
|
+
gestureName: 'refresher',
|
|
546
|
+
gesturePriority: 31,
|
|
547
|
+
direction: 'y',
|
|
548
|
+
threshold: 20,
|
|
549
|
+
passive: false,
|
|
550
|
+
canStart: () => this.canStart(),
|
|
551
|
+
onStart: () => this.onStart(),
|
|
552
|
+
onMove: (ev) => this.onMove(ev),
|
|
553
|
+
onEnd: () => this.onEnd(),
|
|
554
|
+
});
|
|
555
|
+
this.disabledChanged();
|
|
556
|
+
}
|
|
557
|
+
});
|
|
558
|
+
}
|
|
559
|
+
disconnectedCallback() {
|
|
560
|
+
this.destroyNativeRefresher();
|
|
561
|
+
this.scrollEl = undefined;
|
|
562
|
+
if (this.gesture) {
|
|
563
|
+
this.gesture.destroy();
|
|
564
|
+
this.gesture = undefined;
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
/**
|
|
568
|
+
* Call `complete()` when your async operation has completed.
|
|
569
|
+
* For example, the `refreshing` state is while the app is performing
|
|
570
|
+
* an asynchronous operation, such as receiving more data from an
|
|
571
|
+
* AJAX request. Once the data has been received, you then call this
|
|
572
|
+
* method to signify that the refreshing has completed and to close
|
|
573
|
+
* the refresher. This method also changes the refresher's state from
|
|
574
|
+
* `refreshing` to `completing`.
|
|
575
|
+
*/
|
|
576
|
+
async complete() {
|
|
577
|
+
if (this.nativeRefresher) {
|
|
578
|
+
this.needsCompletion = true;
|
|
579
|
+
// Do not reset scroll el until user removes pointer from screen
|
|
580
|
+
if (!this.pointerDown) {
|
|
581
|
+
raf(() => raf(() => this.resetNativeRefresher(this.elementToTransform, 32 /* RefresherState.Completing */)));
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
else {
|
|
585
|
+
this.close(32 /* RefresherState.Completing */, '120ms');
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
/**
|
|
589
|
+
* Changes the refresher's state from `refreshing` to `cancelling`.
|
|
590
|
+
*/
|
|
591
|
+
async cancel() {
|
|
592
|
+
if (this.nativeRefresher) {
|
|
593
|
+
// Do not reset scroll el until user removes pointer from screen
|
|
594
|
+
if (!this.pointerDown) {
|
|
595
|
+
raf(() => raf(() => this.resetNativeRefresher(this.elementToTransform, 16 /* RefresherState.Cancelling */)));
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
else {
|
|
599
|
+
this.close(16 /* RefresherState.Cancelling */, '');
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
/**
|
|
603
|
+
* A number representing how far down the user has pulled.
|
|
604
|
+
* The number `0` represents the user hasn't pulled down at all. The
|
|
605
|
+
* number `1`, and anything greater than `1`, represents that the user
|
|
606
|
+
* has pulled far enough down that when they let go then the refresh will
|
|
607
|
+
* happen. If they let go and the number is less than `1`, then the
|
|
608
|
+
* refresh will not happen, and the content will return to it's original
|
|
609
|
+
* position.
|
|
610
|
+
*/
|
|
611
|
+
getProgress() {
|
|
612
|
+
return Promise.resolve(this.progress);
|
|
613
|
+
}
|
|
614
|
+
canStart() {
|
|
615
|
+
if (!this.scrollEl) {
|
|
616
|
+
return false;
|
|
617
|
+
}
|
|
618
|
+
if (this.state !== 1 /* RefresherState.Inactive */) {
|
|
619
|
+
return false;
|
|
620
|
+
}
|
|
621
|
+
// if the scrollTop is greater than zero then it's
|
|
622
|
+
// not possible to pull the content down yet
|
|
623
|
+
if (this.scrollEl.scrollTop > 0) {
|
|
624
|
+
return false;
|
|
625
|
+
}
|
|
626
|
+
return true;
|
|
627
|
+
}
|
|
628
|
+
onStart() {
|
|
629
|
+
this.progress = 0;
|
|
630
|
+
this.state = 1 /* RefresherState.Inactive */;
|
|
631
|
+
}
|
|
632
|
+
onMove(detail) {
|
|
633
|
+
if (!this.scrollEl) {
|
|
634
|
+
return;
|
|
635
|
+
}
|
|
636
|
+
// this method can get called like a bazillion times per second,
|
|
637
|
+
// so it's built to be as efficient as possible, and does its
|
|
638
|
+
// best to do any DOM read/writes only when absolutely necessary
|
|
639
|
+
// if multi-touch then get out immediately
|
|
640
|
+
const ev = detail.event;
|
|
641
|
+
if (ev.touches !== undefined && ev.touches.length > 1) {
|
|
642
|
+
return;
|
|
643
|
+
}
|
|
644
|
+
// do nothing if it's actively refreshing
|
|
645
|
+
// or it's in the way of closing
|
|
646
|
+
// or this was never a startY
|
|
647
|
+
if ((this.state & 56 /* RefresherState._BUSY_ */) !== 0) {
|
|
648
|
+
return;
|
|
649
|
+
}
|
|
650
|
+
const pullFactor = Number.isNaN(this.pullFactor) || this.pullFactor < 0 ? 1 : this.pullFactor;
|
|
651
|
+
const deltaY = detail.deltaY * pullFactor;
|
|
652
|
+
// don't bother if they're scrolling up
|
|
653
|
+
// and have not already started dragging
|
|
654
|
+
if (deltaY <= 0) {
|
|
655
|
+
// the current Y is higher than the starting Y
|
|
656
|
+
// so they scrolled up enough to be ignored
|
|
657
|
+
this.progress = 0;
|
|
658
|
+
this.state = 1 /* RefresherState.Inactive */;
|
|
659
|
+
if (this.appliedStyles) {
|
|
660
|
+
// reset the styles only if they were applied
|
|
661
|
+
this.setCss(0, '', false, '');
|
|
662
|
+
return;
|
|
663
|
+
}
|
|
664
|
+
return;
|
|
665
|
+
}
|
|
666
|
+
if (this.state === 1 /* RefresherState.Inactive */) {
|
|
667
|
+
// this refresh is not already actively pulling down
|
|
668
|
+
// get the content's scrollTop
|
|
669
|
+
const scrollHostScrollTop = this.scrollEl.scrollTop;
|
|
670
|
+
// if the scrollTop is greater than zero then it's
|
|
671
|
+
// not possible to pull the content down yet
|
|
672
|
+
if (scrollHostScrollTop > 0) {
|
|
673
|
+
this.progress = 0;
|
|
674
|
+
return;
|
|
675
|
+
}
|
|
676
|
+
// content scrolled all the way to the top, and dragging down
|
|
677
|
+
this.state = 2 /* RefresherState.Pulling */;
|
|
678
|
+
}
|
|
679
|
+
// prevent native scroll events
|
|
680
|
+
if (ev.cancelable) {
|
|
681
|
+
ev.preventDefault();
|
|
682
|
+
}
|
|
683
|
+
// the refresher is actively pulling at this point
|
|
684
|
+
// move the scroll element within the content element
|
|
685
|
+
this.setCss(deltaY, '0ms', true, '');
|
|
686
|
+
if (deltaY === 0) {
|
|
687
|
+
// don't continue if there's no delta yet
|
|
688
|
+
this.progress = 0;
|
|
689
|
+
return;
|
|
690
|
+
}
|
|
691
|
+
const pullMin = this.pullMin;
|
|
692
|
+
// set pull progress
|
|
693
|
+
this.progress = deltaY / pullMin;
|
|
694
|
+
// emit "start" if it hasn't started yet
|
|
695
|
+
if (!this.didStart) {
|
|
696
|
+
this.didStart = true;
|
|
697
|
+
this.ionStart.emit();
|
|
698
|
+
}
|
|
699
|
+
// emit "pulling" on every move
|
|
700
|
+
this.ionPull.emit();
|
|
701
|
+
// do nothing if the delta is less than the pull threshold
|
|
702
|
+
if (deltaY < pullMin) {
|
|
703
|
+
// ensure it stays in the pulling state, cuz its not ready yet
|
|
704
|
+
this.state = 2 /* RefresherState.Pulling */;
|
|
705
|
+
return;
|
|
706
|
+
}
|
|
707
|
+
if (deltaY > this.pullMax) {
|
|
708
|
+
// they pulled farther than the max, so kick off the refresh
|
|
709
|
+
this.beginRefresh();
|
|
710
|
+
return;
|
|
711
|
+
}
|
|
712
|
+
// pulled farther than the pull min!!
|
|
713
|
+
// it is now in the `ready` state!!
|
|
714
|
+
// if they let go then it'll refresh, kerpow!!
|
|
715
|
+
this.state = 4 /* RefresherState.Ready */;
|
|
716
|
+
return;
|
|
717
|
+
}
|
|
718
|
+
onEnd() {
|
|
719
|
+
// only run in a zone when absolutely necessary
|
|
720
|
+
if (this.state === 4 /* RefresherState.Ready */) {
|
|
721
|
+
// they pulled down far enough, so it's ready to refresh
|
|
722
|
+
this.beginRefresh();
|
|
723
|
+
}
|
|
724
|
+
else if (this.state === 2 /* RefresherState.Pulling */) {
|
|
725
|
+
// they were pulling down, but didn't pull down far enough
|
|
726
|
+
// set the content back to it's original location
|
|
727
|
+
// and close the refresher
|
|
728
|
+
// set that the refresh is actively cancelling
|
|
729
|
+
this.cancel();
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
beginRefresh() {
|
|
733
|
+
// assumes we're already back in a zone
|
|
734
|
+
// they pulled down far enough, so it's ready to refresh
|
|
735
|
+
this.state = 8 /* RefresherState.Refreshing */;
|
|
736
|
+
// place the content in a hangout position while it thinks
|
|
737
|
+
this.setCss(this.pullMin, this.snapbackDuration, true, '');
|
|
738
|
+
// emit "refresh" because it was pulled down far enough
|
|
739
|
+
// and they let go to begin refreshing
|
|
740
|
+
this.ionRefresh.emit({
|
|
741
|
+
complete: this.complete.bind(this),
|
|
742
|
+
});
|
|
743
|
+
}
|
|
744
|
+
close(state, delay) {
|
|
745
|
+
// create fallback timer incase something goes wrong with transitionEnd event
|
|
746
|
+
setTimeout(() => {
|
|
747
|
+
this.state = 1 /* RefresherState.Inactive */;
|
|
748
|
+
this.progress = 0;
|
|
749
|
+
this.didStart = false;
|
|
750
|
+
this.setCss(0, '0ms', false, '');
|
|
751
|
+
}, 600);
|
|
752
|
+
// reset set the styles on the scroll element
|
|
753
|
+
// set that the refresh is actively cancelling/completing
|
|
754
|
+
this.state = state;
|
|
755
|
+
this.setCss(0, this.closeDuration, true, delay);
|
|
756
|
+
}
|
|
757
|
+
setCss(y, duration, overflowVisible, delay) {
|
|
758
|
+
if (this.nativeRefresher) {
|
|
759
|
+
return;
|
|
760
|
+
}
|
|
761
|
+
this.appliedStyles = y > 0;
|
|
762
|
+
writeTask(() => {
|
|
763
|
+
if (this.scrollEl && this.backgroundContentEl) {
|
|
764
|
+
const scrollStyle = this.scrollEl.style;
|
|
765
|
+
const backgroundStyle = this.backgroundContentEl.style;
|
|
766
|
+
scrollStyle.transform = backgroundStyle.transform = y > 0 ? `translateY(${y}px) translateZ(0px)` : '';
|
|
767
|
+
scrollStyle.transitionDuration = backgroundStyle.transitionDuration = duration;
|
|
768
|
+
scrollStyle.transitionDelay = backgroundStyle.transitionDelay = delay;
|
|
769
|
+
scrollStyle.overflow = overflowVisible ? 'hidden' : '';
|
|
770
|
+
}
|
|
771
|
+
});
|
|
772
|
+
}
|
|
773
|
+
render() {
|
|
774
|
+
const mode = getIonMode(this);
|
|
775
|
+
return (h(Host, { slot: "fixed", class: {
|
|
776
|
+
[mode]: true,
|
|
777
|
+
// Used internally for styling
|
|
778
|
+
[`refresher-${mode}`]: true,
|
|
779
|
+
'refresher-native': this.nativeRefresher,
|
|
780
|
+
'refresher-active': this.state !== 1 /* RefresherState.Inactive */,
|
|
781
|
+
'refresher-pulling': this.state === 2 /* RefresherState.Pulling */,
|
|
782
|
+
'refresher-ready': this.state === 4 /* RefresherState.Ready */,
|
|
783
|
+
'refresher-refreshing': this.state === 8 /* RefresherState.Refreshing */,
|
|
784
|
+
'refresher-cancelling': this.state === 16 /* RefresherState.Cancelling */,
|
|
785
|
+
'refresher-completing': this.state === 32 /* RefresherState.Completing */,
|
|
786
|
+
} }));
|
|
787
|
+
}
|
|
788
|
+
get el() { return this; }
|
|
789
|
+
static get watchers() { return {
|
|
790
|
+
"disabled": ["disabledChanged"]
|
|
791
|
+
}; }
|
|
792
|
+
static get style() { return {
|
|
793
|
+
ios: refresherIosCss,
|
|
794
|
+
md: refresherMdCss
|
|
795
|
+
}; }
|
|
796
|
+
}, [32, "ion-refresher", {
|
|
797
|
+
"pullMin": [2, "pull-min"],
|
|
798
|
+
"pullMax": [2, "pull-max"],
|
|
799
|
+
"closeDuration": [1, "close-duration"],
|
|
800
|
+
"snapbackDuration": [1, "snapback-duration"],
|
|
801
|
+
"pullFactor": [2, "pull-factor"],
|
|
802
|
+
"disabled": [4],
|
|
803
|
+
"nativeRefresher": [32],
|
|
804
|
+
"state": [32],
|
|
805
|
+
"complete": [64],
|
|
806
|
+
"cancel": [64],
|
|
807
|
+
"getProgress": [64]
|
|
808
|
+
}]);
|
|
809
|
+
function defineCustomElement$1() {
|
|
810
|
+
if (typeof customElements === "undefined") {
|
|
811
|
+
return;
|
|
812
|
+
}
|
|
813
|
+
const components = ["ion-refresher"];
|
|
814
|
+
components.forEach(tagName => { switch (tagName) {
|
|
815
|
+
case "ion-refresher":
|
|
816
|
+
if (!customElements.get(tagName)) {
|
|
817
|
+
customElements.define(tagName, Refresher);
|
|
818
|
+
}
|
|
819
|
+
break;
|
|
820
|
+
} });
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
const IonRefresher = Refresher;
|
|
824
|
+
const defineCustomElement = defineCustomElement$1;
|
|
825
|
+
|
|
826
|
+
export { IonRefresher, defineCustomElement };
|