@sparkle-learning/core 0.0.27 → 0.0.30
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/{PrivateRoute-cee9b061.js → PrivateRoute-043bb7d3.js} +6 -40
- package/dist/cjs/{active-router-3bd7b540.js → active-router-eedb3bfe.js} +1 -1
- package/dist/cjs/{animation-05337433.js → animation-6132e37f.js} +28 -4
- package/dist/cjs/app-globals-9869bf67.js +9 -0
- package/dist/cjs/{auth.store-aba3d22f.js → auth.store-ff3fda09.js} +1869 -357
- package/dist/cjs/compass-svg.cjs.entry.js +1 -1
- package/dist/cjs/context-consumer.cjs.entry.js +1 -1
- package/dist/cjs/course-select.cjs.entry.js +1 -1
- package/dist/cjs/{cubic-bezier-24e309bf.js → cubic-bezier-293f4663.js} +3 -0
- package/dist/cjs/dir-5af5259a.js +20 -0
- package/dist/cjs/{facilitator.service-e1e2f719.js → facilitator.service-faac5c0c.js} +1 -1
- package/dist/cjs/feed.service-66405969.js +124 -0
- package/dist/cjs/focus-visible-ad3828a7.js +63 -0
- package/dist/cjs/framework-delegate-2470a246.js +113 -0
- package/dist/cjs/{gesture-controller-e824cfb3.js → gesture-controller-07c31f70.js} +3 -0
- package/dist/cjs/{haptic-415dac5b.js → haptic-91e86eb7.js} +3 -0
- package/dist/cjs/{hardware-back-button-ca468aae.js → hardware-back-button-f7b5d99e.js} +3 -0
- package/dist/cjs/header-mobile-collapse_61.cjs.entry.js +18001 -0
- package/dist/cjs/{helpers-26770c32.js → helpers-7e28976c.js} +122 -3
- package/dist/cjs/{icons-a0fef92b.js → icons-b8a2231a.js} +1 -1
- package/dist/cjs/{index-427d03fb.js → index-185f9c5a.js} +3 -0
- package/dist/cjs/{index-6eff209d.js → index-43642662.js} +24 -3
- package/dist/cjs/{index-7bcd36a0.js → index-459a5fa9.js} +20 -4
- package/dist/cjs/index-8540d72e.js +42 -0
- package/dist/cjs/{index-58b3ee93.js → index-b12edb26.js} +34 -5
- package/dist/cjs/{index-fbf4d3bf.js → index-bae2a754.js} +303 -207
- package/dist/cjs/index.cjs.js +8 -7
- package/dist/cjs/index.es-ef3efdfb.js +10671 -0
- package/dist/cjs/{input-shims-213e83f8.js → input-shims-6c442c9f.js} +34 -10
- package/dist/cjs/ion-accordion-group.cjs.entry.js +197 -0
- package/dist/cjs/ion-accordion.cjs.entry.js +340 -0
- package/dist/cjs/ion-action-sheet_4.cjs.entry.js +2203 -0
- package/dist/cjs/ion-app.cjs.entry.js +23 -8
- package/dist/cjs/ion-back-button.cjs.entry.js +14 -9
- package/dist/cjs/ion-backdrop.cjs.entry.js +3 -3
- package/dist/cjs/ion-badge.cjs.entry.js +3 -3
- package/dist/cjs/ion-breadcrumb.cjs.entry.js +103 -0
- package/dist/cjs/ion-breadcrumbs.cjs.entry.js +135 -0
- package/dist/cjs/ion-buttons_3.cjs.entry.js +7 -6
- package/dist/cjs/ion-card-header.cjs.entry.js +3 -3
- package/dist/cjs/ion-card-subtitle.cjs.entry.js +3 -3
- package/dist/cjs/ion-card-title.cjs.entry.js +3 -3
- package/dist/cjs/ion-chip.cjs.entry.js +3 -3
- package/dist/cjs/ion-content_2.cjs.entry.js +144 -56
- package/dist/cjs/ion-datetime.cjs.entry.js +1902 -779
- package/dist/cjs/ion-fab-button.cjs.entry.js +5 -4
- package/dist/cjs/ion-fab-list.cjs.entry.js +2 -2
- package/dist/cjs/ion-fab.cjs.entry.js +2 -2
- package/dist/cjs/ion-footer.cjs.entry.js +79 -4
- package/dist/cjs/ion-img.cjs.entry.js +33 -7
- package/dist/cjs/ion-infinite-scroll-content.cjs.entry.js +3 -3
- package/dist/cjs/ion-infinite-scroll.cjs.entry.js +4 -2
- package/dist/cjs/ion-item-divider.cjs.entry.js +3 -3
- package/dist/cjs/ion-item-group.cjs.entry.js +2 -2
- package/dist/cjs/ion-item-option.cjs.entry.js +4 -4
- package/dist/cjs/ion-item-options.cjs.entry.js +3 -3
- package/dist/cjs/ion-item-sliding.cjs.entry.js +52 -8
- package/dist/cjs/ion-loading.cjs.entry.js +23 -11
- package/dist/cjs/ion-menu-button.cjs.entry.js +17 -11
- package/dist/cjs/ion-menu-toggle.cjs.entry.js +7 -7
- package/dist/cjs/ion-menu.cjs.entry.js +141 -29
- package/dist/cjs/ion-modal.cjs.entry.js +649 -75
- package/dist/cjs/ion-nav-link.cjs.entry.js +4 -1
- package/dist/cjs/ion-nav.cjs.entry.js +140 -137
- package/dist/cjs/ion-picker-column-internal_2.cjs.entry.js +700 -0
- package/dist/cjs/ion-picker-column.cjs.entry.js +5 -5
- package/dist/cjs/ion-picker.cjs.entry.js +18 -11
- package/dist/cjs/ion-progress-bar.cjs.entry.js +17 -13
- package/dist/cjs/ion-refresher-content.cjs.entry.js +7 -6
- package/dist/cjs/ion-refresher.cjs.entry.js +83 -84
- package/dist/cjs/ion-reorder-group.cjs.entry.js +9 -8
- 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 +3 -3
- package/dist/cjs/ion-router-outlet.cjs.entry.js +50 -12
- package/dist/cjs/ion-router.cjs.entry.js +378 -234
- package/dist/cjs/ion-searchbar.cjs.entry.js +50 -17
- package/dist/cjs/ion-segment-button.cjs.entry.js +12 -9
- package/dist/cjs/ion-segment.cjs.entry.js +89 -10
- package/dist/cjs/ion-select_2.cjs.entry.js +64 -30
- package/dist/cjs/ion-skeleton-text.cjs.entry.js +4 -4
- package/dist/cjs/ion-slide.cjs.entry.js +2 -2
- package/dist/cjs/ion-slides.cjs.entry.js +19 -32
- package/dist/cjs/ion-split-pane.cjs.entry.js +8 -3
- package/dist/cjs/ion-tab-bar.cjs.entry.js +25 -12
- package/dist/cjs/ion-tab-button.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab.cjs.entry.js +3 -2
- package/dist/cjs/ion-tabs.cjs.entry.js +1 -1
- package/dist/cjs/ion-textarea.cjs.entry.js +9 -8
- package/dist/cjs/ion-thumbnail.cjs.entry.js +2 -2
- package/dist/cjs/ion-toast.cjs.entry.js +37 -27
- package/dist/cjs/ion-toggle.cjs.entry.js +15 -15
- package/dist/cjs/ion-virtual-scroll.cjs.entry.js +13 -3
- package/dist/cjs/{ionic-global-4930d319.js → ionic-global-878073d1.js} +103 -77
- package/dist/cjs/{ios.transition-6e1fd3d6.js → ios.transition-c3bfb096.js} +8 -5
- package/dist/cjs/{keyboard-1dcbde6c.js → keyboard-dfd76ac3.js} +3 -0
- package/dist/cjs/loader.cjs.js +5 -5
- package/dist/cjs/localstorage.service-6346a41d.js +40 -0
- package/dist/cjs/{md.transition-3652ad78.js → md.transition-7eb9a1a7.js} +7 -4
- package/dist/cjs/{menu-toggle-util-a8fb4c56.js → menu-toggle-util-cb549c2c.js} +4 -1
- package/dist/cjs/{overlays-08a817ea.js → overlays-0a748609.js} +188 -47
- package/dist/cjs/{purify-596fc2d6.js → purify-d0ad2883.js} +187 -74
- package/dist/cjs/sparkle-animation-player.cjs.entry.js +56 -50
- package/dist/cjs/sparkle-character-intro.cjs.entry.js +26 -0
- package/dist/cjs/sparkle-code.cjs.entry.js +2 -2
- package/dist/cjs/sparkle-compass-post.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-compass.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-core.cjs.js +7 -7
- package/dist/cjs/sparkle-emoji.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-facilitator-notes-form.cjs.entry.js +7 -7
- package/dist/cjs/sparkle-feed-post.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-feedback.cjs.entry.js +7 -7
- package/dist/cjs/sparkle-goal-form.cjs.entry.js +15 -14
- package/dist/cjs/sparkle-gww-comment-list.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-gww-graph.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-lower-content-nav.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-menu-collapsible.cjs.entry.js +2 -2
- package/dist/cjs/sparkle-modal-image.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-notfound-page.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-overlay.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-poll.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-quiz-container.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-quiz-feedback_5.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-quiz.cjs.entry.js +2 -2
- package/dist/cjs/sparkle-select.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-sidebar.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-tab.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-table-of-contents.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-tabs.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-youtube.cjs.entry.js +2 -2
- package/dist/cjs/{spinner-configs-559523fd.js → spinner-configs-6f6b7ef0.js} +36 -1
- package/dist/cjs/status-tap-8697433c.js +40 -0
- package/dist/cjs/stencil-async-content.cjs.entry.js +1 -1
- package/dist/cjs/stencil-route-title.cjs.entry.js +2 -2
- package/dist/cjs/stencil-router-prompt.cjs.entry.js +2 -2
- package/dist/cjs/{student.service-41c7c78d.js → student.service-744c3155.js} +1 -1
- package/dist/cjs/{swipe-back-c1951cbd.js → swipe-back-7e08b5e0.js} +32 -8
- package/dist/cjs/{swiper.bundle-cbea42d8.js → swiper.bundle-8c897c07.js} +4 -4
- package/dist/cjs/{tap-click-cd858b48.js → tap-click-1caf1780.js} +8 -1
- package/dist/cjs/{theme-98ccfc24.js → theme-4252ac15.js} +3 -0
- package/dist/cjs/util-d383acb8.js +2462 -0
- package/dist/collection/collection-manifest.json +9 -2
- package/dist/collection/components/layout/page/page.js +1 -0
- package/dist/collection/components/sparkle-animation-player/sparkle-animation-player.js +78 -66
- package/dist/collection/components/sparkle-character-intro/assets/characters/character-img.jpg +0 -0
- package/dist/collection/components/sparkle-character-intro/assets/characters/jen.png +0 -0
- package/dist/collection/components/sparkle-character-intro/assets/characters/kimberly.png +0 -0
- package/dist/collection/components/sparkle-character-intro/assets/characters/valeria.png +0 -0
- package/dist/collection/components/sparkle-character-intro/assets/characters/yuna.png +0 -0
- package/dist/collection/components/sparkle-character-intro/assets/characters/zynab.png +0 -0
- package/dist/collection/components/sparkle-character-intro/sparkle-character-intro.css +67 -0
- package/dist/collection/components/sparkle-character-intro/sparkle-character-intro.js +64 -0
- package/dist/collection/components/sparkle-course-root/sparkle-course-root.js +48 -43
- package/dist/collection/components/sparkle-youtube/sparkle-youtube.js +6 -2
- package/dist/collection/util.js +1 -0
- package/dist/esm/{PrivateRoute-9f0973bb.js → PrivateRoute-b9937c45.js} +3 -37
- package/dist/esm/{active-router-b3ae32c7.js → active-router-909088d6.js} +1 -1
- package/dist/esm/{animation-72fdacfb.js → animation-b306f6c2.js} +28 -4
- package/dist/esm/app-globals-5c736ae5.js +7 -0
- package/dist/esm/auth.store-3ed2389e.js +4061 -0
- package/dist/esm/compass-svg.entry.js +1 -1
- package/dist/esm/context-consumer.entry.js +1 -1
- package/dist/esm/course-select.entry.js +1 -1
- package/dist/esm/{cubic-bezier-ed243a9b.js → cubic-bezier-a7ad9c8e.js} +3 -0
- package/dist/esm/dir-03012648.js +18 -0
- package/dist/esm/{facilitator.service-cddb2feb.js → facilitator.service-ec0a9739.js} +1 -1
- package/dist/esm/feed.service-33b83cb7.js +119 -0
- package/dist/esm/focus-visible-40cda868.js +61 -0
- package/dist/esm/framework-delegate-3bc58c27.js +109 -0
- package/dist/esm/{gesture-controller-604336b7.js → gesture-controller-686622ba.js} +3 -0
- package/dist/esm/{haptic-67928174.js → haptic-99c9e346.js} +4 -1
- package/dist/esm/{hardware-back-button-508e48cf.js → hardware-back-button-b6ccf74a.js} +3 -0
- package/dist/esm/header-mobile-collapse_61.entry.js +17937 -0
- package/dist/esm/{helpers-e7f66b2b.js → helpers-39367fe1.js} +119 -4
- package/dist/esm/{icons-33e5804c.js → icons-5debfbaf.js} +1 -1
- package/dist/esm/{index-cc97b114.js → index-435af8e6.js} +3 -0
- package/dist/esm/{index-55fc9f5e.js → index-5568e3fa.js} +303 -208
- package/dist/esm/{index-dc09784f.js → index-9594837e.js} +20 -4
- package/dist/esm/{index-b2ad0f1a.js → index-a12c14bd.js} +25 -4
- package/dist/esm/{index-a94619f9.js → index-c26d8655.js} +34 -5
- package/dist/esm/index-dc61f152.js +22 -0
- package/dist/esm/index.es-97dd8174.js +10585 -0
- package/dist/esm/index.js +8 -7
- package/dist/esm/{input-shims-3a97fa86.js → input-shims-cc98ea92.js} +34 -10
- package/dist/esm/ion-accordion-group.entry.js +193 -0
- package/dist/esm/ion-accordion.entry.js +336 -0
- package/dist/esm/ion-action-sheet_4.entry.js +2196 -0
- package/dist/esm/ion-app.entry.js +23 -8
- package/dist/esm/ion-back-button.entry.js +14 -9
- package/dist/esm/ion-backdrop.entry.js +3 -3
- package/dist/esm/ion-badge.entry.js +3 -3
- package/dist/esm/ion-breadcrumb.entry.js +99 -0
- package/dist/esm/ion-breadcrumbs.entry.js +131 -0
- package/dist/esm/ion-buttons_3.entry.js +7 -6
- package/dist/esm/ion-card-header.entry.js +3 -3
- package/dist/esm/ion-card-subtitle.entry.js +3 -3
- package/dist/esm/ion-card-title.entry.js +3 -3
- package/dist/esm/ion-chip.entry.js +3 -3
- package/dist/esm/ion-content_2.entry.js +144 -56
- package/dist/esm/ion-datetime.entry.js +1902 -779
- package/dist/esm/ion-fab-button.entry.js +5 -4
- package/dist/esm/ion-fab-list.entry.js +2 -2
- package/dist/esm/ion-fab.entry.js +2 -2
- package/dist/esm/ion-footer.entry.js +79 -4
- package/dist/esm/ion-img.entry.js +33 -7
- package/dist/esm/ion-infinite-scroll-content.entry.js +3 -3
- package/dist/esm/ion-infinite-scroll.entry.js +4 -2
- package/dist/esm/ion-item-divider.entry.js +3 -3
- package/dist/esm/ion-item-group.entry.js +2 -2
- package/dist/esm/ion-item-option.entry.js +4 -4
- package/dist/esm/ion-item-options.entry.js +3 -3
- package/dist/esm/ion-item-sliding.entry.js +52 -8
- package/dist/esm/ion-loading.entry.js +23 -11
- package/dist/esm/ion-menu-button.entry.js +17 -11
- package/dist/esm/ion-menu-toggle.entry.js +7 -7
- package/dist/esm/ion-menu.entry.js +141 -29
- package/dist/esm/ion-modal.entry.js +649 -75
- package/dist/esm/ion-nav-link.entry.js +4 -1
- package/dist/esm/ion-nav.entry.js +140 -137
- package/dist/esm/ion-picker-column-internal_2.entry.js +695 -0
- package/dist/esm/ion-picker-column.entry.js +5 -5
- package/dist/esm/ion-picker.entry.js +18 -11
- package/dist/esm/ion-progress-bar.entry.js +17 -13
- package/dist/esm/ion-refresher-content.entry.js +7 -6
- package/dist/esm/ion-refresher.entry.js +82 -83
- package/dist/esm/ion-reorder-group.entry.js +9 -8
- 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 +3 -3
- package/dist/esm/ion-router-outlet.entry.js +50 -12
- package/dist/esm/ion-router.entry.js +378 -234
- package/dist/esm/ion-searchbar.entry.js +50 -17
- package/dist/esm/ion-segment-button.entry.js +12 -9
- package/dist/esm/ion-segment.entry.js +89 -10
- package/dist/esm/ion-select_2.entry.js +64 -30
- package/dist/esm/ion-skeleton-text.entry.js +4 -4
- package/dist/esm/ion-slide.entry.js +2 -2
- package/dist/esm/ion-slides.entry.js +19 -32
- package/dist/esm/ion-split-pane.entry.js +8 -3
- package/dist/esm/ion-tab-bar.entry.js +25 -12
- package/dist/esm/ion-tab-button.entry.js +2 -2
- package/dist/esm/ion-tab.entry.js +3 -2
- package/dist/esm/ion-tabs.entry.js +1 -1
- package/dist/esm/ion-textarea.entry.js +9 -8
- package/dist/esm/ion-thumbnail.entry.js +2 -2
- package/dist/esm/ion-toast.entry.js +37 -27
- package/dist/esm/ion-toggle.entry.js +15 -15
- package/dist/esm/ion-virtual-scroll.entry.js +13 -3
- package/dist/esm/{ionic-global-1f9287cc.js → ionic-global-0939c477.js} +103 -77
- package/dist/esm/{ios.transition-d01abefd.js → ios.transition-b4ca8a33.js} +8 -5
- package/dist/esm/{keyboard-06906eac.js → keyboard-2503e874.js} +3 -0
- package/dist/esm/loader.js +5 -5
- package/dist/esm/localstorage.service-4bf408c8.js +36 -0
- package/dist/esm/{md.transition-245ffa55.js → md.transition-ca5e0322.js} +7 -4
- package/dist/esm/{menu-toggle-util-fe83fcf5.js → menu-toggle-util-7fa22c2f.js} +4 -1
- package/dist/esm/{overlays-8363621c.js → overlays-34cfa9e0.js} +187 -47
- package/dist/esm/polyfills/css-shim.js +1 -1
- package/dist/esm/polyfills/index.js +2 -2
- package/dist/esm/{purify-4247e2d0.js → purify-ffce2b4c.js} +185 -72
- package/dist/esm/sparkle-animation-player.entry.js +56 -50
- package/dist/esm/sparkle-character-intro.entry.js +22 -0
- package/dist/esm/sparkle-code.entry.js +2 -2
- package/dist/esm/sparkle-compass-post.entry.js +1 -1
- package/dist/esm/sparkle-compass.entry.js +1 -1
- package/dist/esm/sparkle-core.js +7 -7
- package/dist/esm/sparkle-emoji.entry.js +1 -1
- package/dist/esm/sparkle-facilitator-notes-form.entry.js +7 -7
- package/dist/esm/sparkle-feed-post.entry.js +1 -1
- package/dist/esm/sparkle-feedback.entry.js +7 -7
- package/dist/esm/sparkle-goal-form.entry.js +8 -7
- package/dist/esm/sparkle-gww-comment-list.entry.js +1 -1
- package/dist/esm/sparkle-gww-graph.entry.js +1 -1
- package/dist/esm/sparkle-lower-content-nav.entry.js +1 -1
- package/dist/esm/sparkle-menu-collapsible.entry.js +2 -2
- package/dist/esm/sparkle-modal-image.entry.js +1 -1
- package/dist/esm/sparkle-notfound-page.entry.js +1 -1
- package/dist/esm/sparkle-overlay.entry.js +1 -1
- package/dist/esm/sparkle-poll.entry.js +1 -1
- package/dist/esm/sparkle-quiz-container.entry.js +1 -1
- package/dist/esm/sparkle-quiz-feedback_5.entry.js +1 -1
- package/dist/esm/sparkle-quiz.entry.js +2 -2
- package/dist/esm/sparkle-select.entry.js +1 -1
- package/dist/esm/sparkle-sidebar.entry.js +1 -1
- package/dist/esm/sparkle-tab.entry.js +1 -1
- package/dist/esm/sparkle-table-of-contents.entry.js +1 -1
- package/dist/esm/sparkle-tabs.entry.js +1 -1
- package/dist/esm/sparkle-youtube.entry.js +2 -2
- package/dist/esm/{spinner-configs-9536fae2.js → spinner-configs-f609a655.js} +36 -1
- package/dist/esm/status-tap-6351a0cb.js +38 -0
- package/dist/esm/stencil-async-content.entry.js +1 -1
- package/dist/esm/stencil-route-title.entry.js +2 -2
- package/dist/esm/stencil-router-prompt.entry.js +2 -2
- package/dist/esm/{student.service-c36c5a75.js → student.service-29b688ba.js} +1 -1
- package/dist/esm/{swipe-back-21f58ecf.js → swipe-back-34251834.js} +32 -8
- package/dist/esm/{swiper.bundle-d4422d52.js → swiper.bundle-b6a959de.js} +4 -4
- package/dist/esm/{tap-click-8c728329.js → tap-click-13f1fb0d.js} +8 -1
- package/dist/esm/{theme-12606872.js → theme-c336c9d9.js} +3 -0
- package/dist/esm/util-6ef753e9.js +2451 -0
- package/dist/loader/index.d.ts +0 -1
- package/dist/node_modules/@ionic/core/dist/collection/components/accordion/accordion.ios.css +75 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/accordion/accordion.md.css +72 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/accordion-group/accordion-group.ios.css +25 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/accordion-group/accordion-group.md.css +59 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/action-sheet/action-sheet.ios.css +10 -19
- package/dist/node_modules/@ionic/core/dist/collection/components/action-sheet/action-sheet.md.css +19 -16
- package/dist/node_modules/@ionic/core/dist/collection/components/alert/alert.md.css +2 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/back-button/back-button.ios.css +4 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/back-button/back-button.md.css +4 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/breadcrumb/breadcrumb.ios.css +234 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/breadcrumb/breadcrumb.md.css +237 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +38 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/breadcrumbs/breadcrumbs.md.css +37 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/button/button.ios.css +0 -1
- package/dist/node_modules/@ionic/core/dist/collection/components/button/button.md.css +5 -5
- package/dist/node_modules/@ionic/core/dist/collection/components/content/content.css +60 -14
- package/dist/node_modules/@ionic/core/dist/collection/components/datetime/datetime.ios.css +586 -68
- package/dist/node_modules/@ionic/core/dist/collection/components/datetime/datetime.md.css +575 -68
- package/dist/node_modules/@ionic/core/dist/collection/components/footer/footer.ios.css +4 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/header/header.ios.css +16 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/input/input.ios.css +9 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/input/input.md.css +9 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/item/item.ios.css +105 -17
- package/dist/node_modules/@ionic/core/dist/collection/components/item/item.md.css +295 -22
- package/dist/node_modules/@ionic/core/dist/collection/components/item-options/item-options.ios.css +6 -6
- package/dist/node_modules/@ionic/core/dist/collection/components/item-options/item-options.md.css +6 -6
- package/dist/node_modules/@ionic/core/dist/collection/components/item-sliding/item-sliding.css +2 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/label/label.ios.css +7 -3
- package/dist/node_modules/@ionic/core/dist/collection/components/label/label.md.css +100 -18
- package/dist/node_modules/@ionic/core/dist/collection/components/list/list.ios.css +1 -1
- package/dist/node_modules/@ionic/core/dist/collection/components/menu/menu.ios.css +2 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/menu/menu.md.css +2 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/modal/modal.ios.css +74 -11
- package/dist/node_modules/@ionic/core/dist/collection/components/modal/modal.md.css +48 -4
- package/dist/node_modules/@ionic/core/dist/collection/components/picker-column-internal/picker-column-internal.ios.css +59 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/picker-column-internal/picker-column-internal.md.css +62 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/picker-internal/picker-internal.ios.css +122 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/picker-internal/picker-internal.md.css +118 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/popover/popover.ios.css +83 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/popover/popover.md.css +49 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/progress-bar/progress-bar.ios.css +53 -38
- package/dist/node_modules/@ionic/core/dist/collection/components/progress-bar/progress-bar.md.css +53 -38
- package/dist/node_modules/@ionic/core/dist/collection/components/range/range.ios.css +3 -3
- package/dist/node_modules/@ionic/core/dist/collection/components/range/range.md.css +5 -5
- package/dist/node_modules/@ionic/core/dist/collection/components/refresher/refresher.ios.css +12 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/refresher/refresher.md.css +2 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/searchbar/searchbar.ios.css +1 -1
- package/dist/node_modules/@ionic/core/dist/collection/components/searchbar/searchbar.md.css +1 -1
- package/dist/node_modules/@ionic/core/dist/collection/components/segment-button/segment-button.ios.css +4 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/segment-button/segment-button.md.css +4 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/select/select.ios.css +1 -1
- package/dist/node_modules/@ionic/core/dist/collection/components/select/select.md.css +30 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/select-popover/{select-popover.css → select-popover.ios.css} +4 -4
- package/dist/node_modules/@ionic/core/dist/collection/components/select-popover/select-popover.md.css +37 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/skeleton-text/skeleton-text.css +4 -4
- package/dist/node_modules/@ionic/core/dist/collection/components/spinner/spinner.css +15 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/tab-bar/tab-bar.ios.css +2 -1
- package/dist/node_modules/@ionic/core/dist/collection/components/tab-bar/tab-bar.md.css +1 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/textarea/textarea.ios.css +9 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/textarea/textarea.md.css +9 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/title/title.ios.css +4 -3
- package/dist/node_modules/@ionic/core/dist/collection/components/toast/toast.ios.css +14 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/toast/toast.md.css +14 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/toggle/toggle.ios.css +1 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/toggle/toggle.md.css +1 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/toolbar/toolbar.ios.css +3 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/toolbar/toolbar.md.css +2 -1
- package/dist/node_modules/@ionic/core/dist/collection/components/virtual-scroll/virtual-scroll.css +1 -1
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/button/button.css +49 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/cards/card/card.css +208 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/cards/cards.css +31 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/code/code.css +245 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/dropdown/dropdown.css +115 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/header/header-mobile-collapse/header-mobile-collapse.css +255 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/header/header.css +232 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/menu/collapsible/collapsible.css +3 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/menu/menu-toggle/menu-toggle.css +25 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/menu/menu.css +71 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/nav/nav.css +194 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/notfound-page/notfound-page.css +4 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/overlay/overlay.css +67 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/page-footer/page-footer.css +18 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/pagination/pagination.css +89 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/select/select.css +52 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/sidebar/sidebar.css +98 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/sparkle-lower-content-nav/sparkle-lower-content-nav.css +8 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/table-of-contents/table-of-contents.css +37 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/tabs/tabs.css +64 -0
- package/dist/sparkle-core/assets/characters/character-img.jpg +0 -0
- package/dist/sparkle-core/assets/characters/jen.png +0 -0
- package/dist/sparkle-core/assets/characters/kimberly.png +0 -0
- package/dist/sparkle-core/assets/characters/valeria.png +0 -0
- package/dist/sparkle-core/assets/characters/yuna.png +0 -0
- package/dist/sparkle-core/assets/characters/zynab.png +0 -0
- package/dist/sparkle-core/index.esm.js +1 -1
- package/dist/sparkle-core/p-0146afa0.entry.js +1 -0
- package/dist/sparkle-core/{p-52355989.entry.js → p-016a7aaf.entry.js} +1 -1
- package/dist/sparkle-core/p-0187adef.entry.js +1 -0
- package/dist/sparkle-core/p-03189863.js +1 -0
- package/dist/sparkle-core/{p-d4d9aa4a.entry.js → p-03ec54a8.entry.js} +1 -1
- package/dist/sparkle-core/p-04583c51.entry.js +1 -0
- package/dist/sparkle-core/{p-6d506f4e.js → p-052caa63.js} +1 -1
- package/dist/sparkle-core/{p-016bf847.entry.js → p-057f6a23.entry.js} +1 -1
- package/dist/sparkle-core/p-0580419b.entry.js +1 -0
- package/dist/sparkle-core/{p-c563b4de.js → p-063cd168.js} +4 -1
- package/dist/sparkle-core/p-081968cc.entry.js +1 -0
- package/dist/sparkle-core/p-0934f5dd.entry.js +1 -0
- package/dist/sparkle-core/{p-3f5d7a08.entry.js → p-11cf398a.entry.js} +1 -1
- package/dist/sparkle-core/p-1339830f.entry.js +1 -0
- package/dist/sparkle-core/p-145e40f5.entry.js +1 -0
- package/dist/sparkle-core/{p-68f3c93d.entry.js → p-1726da2f.entry.js} +1 -1
- package/dist/sparkle-core/p-173d5461.entry.js +7 -0
- package/dist/sparkle-core/p-18e62133.entry.js +1 -0
- package/dist/sparkle-core/p-1af044f7.js +3 -0
- package/dist/sparkle-core/p-1b78dea1.entry.js +1 -0
- package/dist/sparkle-core/p-1cef8572.js +4 -0
- package/dist/sparkle-core/p-1df05176.js +4 -0
- package/dist/sparkle-core/p-21bf4ca0.entry.js +1 -0
- package/dist/sparkle-core/p-21db4e8e.entry.js +1 -0
- package/dist/sparkle-core/p-23a9f7d1.entry.js +1 -0
- package/dist/sparkle-core/p-289a35ed.entry.js +1 -0
- package/dist/sparkle-core/p-2ee6a5f9.entry.js +1 -0
- package/dist/sparkle-core/p-350adbaa.entry.js +1 -0
- package/dist/sparkle-core/{p-bccd9036.entry.js → p-35a7bd6c.entry.js} +1 -1
- package/dist/sparkle-core/{p-66e3bd1c.entry.js → p-37c00e39.entry.js} +1 -1
- package/dist/sparkle-core/p-389500fd.js +4 -0
- package/dist/sparkle-core/p-39e5a90f.entry.js +1 -0
- package/dist/sparkle-core/{p-ac5e5308.entry.js → p-3a202a38.entry.js} +1 -1
- package/dist/sparkle-core/p-3defe550.entry.js +1 -0
- package/dist/sparkle-core/p-45e6db62.entry.js +1 -0
- package/dist/sparkle-core/{p-581ca370.entry.js → p-48f9b960.entry.js} +1 -1
- package/dist/sparkle-core/{p-0efbc0b3.entry.js → p-4dc3ef96.entry.js} +1 -1
- package/dist/sparkle-core/p-506221fe.js +4 -0
- package/dist/sparkle-core/p-50aac721.entry.js +7 -0
- package/dist/sparkle-core/p-513794b0.js +16 -0
- package/dist/sparkle-core/{p-2e4e8117.js → p-5264da79.js} +3 -0
- package/dist/sparkle-core/{p-40db85ac.entry.js → p-547b70c6.entry.js} +1 -1
- package/dist/sparkle-core/p-5598650a.entry.js +1 -0
- package/dist/sparkle-core/p-55ae49e1.js +4 -0
- package/dist/sparkle-core/p-58e98f89.entry.js +1 -0
- package/dist/sparkle-core/p-59f7bf6e.entry.js +1 -0
- package/dist/sparkle-core/p-5a3d0e6b.js +4 -0
- package/dist/sparkle-core/{p-85d31769.entry.js → p-5b40aae5.entry.js} +1 -1
- package/dist/sparkle-core/p-5c9aa1f9.entry.js +4 -0
- package/dist/sparkle-core/p-5d2e54ee.entry.js +1 -0
- package/dist/sparkle-core/p-5d409601.js +1 -0
- package/dist/sparkle-core/{p-afbaad64.entry.js → p-5f45d206.entry.js} +1 -1
- package/dist/sparkle-core/p-5ff6416d.entry.js +7 -0
- package/dist/sparkle-core/{p-cf2332bb.entry.js → p-62a6c96f.entry.js} +1 -1
- package/dist/sparkle-core/p-64e72f8f.js +4 -0
- package/dist/sparkle-core/p-660e0742.js +1 -0
- package/dist/sparkle-core/{p-d5023db0.entry.js → p-667accac.entry.js} +1 -1
- package/dist/sparkle-core/{p-9ca56f5d.entry.js → p-680663a2.entry.js} +1 -1
- package/dist/sparkle-core/{p-e975924a.entry.js → p-6823e6c1.entry.js} +1 -1
- package/dist/sparkle-core/p-69e7783d.js +4 -0
- package/dist/sparkle-core/p-6bbabb80.entry.js +1 -0
- package/dist/sparkle-core/p-6bf07a28.js +1 -0
- package/dist/sparkle-core/p-6c6145cd.js +4 -0
- package/dist/sparkle-core/p-6c90bde6.entry.js +5 -0
- package/dist/sparkle-core/p-6e88764b.entry.js +4 -0
- package/dist/sparkle-core/p-6ee40949.js +1 -0
- package/dist/sparkle-core/p-6fbe3ca3.entry.js +1 -0
- package/dist/sparkle-core/{p-f2660943.js → p-6fd4985d.js} +3 -0
- package/dist/sparkle-core/{p-8fc9298a.js → p-703ca87c.js} +3 -0
- package/dist/sparkle-core/{p-1bf8bed6.entry.js → p-7052c43a.entry.js} +1 -1
- package/dist/sparkle-core/{p-111520a0.js → p-70b2452c.js} +3 -0
- package/dist/sparkle-core/p-713590fc.js +5 -0
- package/dist/sparkle-core/p-7493ee15.entry.js +1 -0
- package/dist/sparkle-core/p-75572037.js +1 -0
- package/dist/sparkle-core/{p-eb56aa20.entry.js → p-768bcc9e.entry.js} +1 -1
- package/dist/sparkle-core/p-797c23ed.entry.js +1 -0
- package/dist/sparkle-core/{p-03eb2164.js → p-7c38a70b.js} +1 -1
- package/dist/sparkle-core/{p-09d43bee.entry.js → p-7d61177b.entry.js} +1 -1
- package/dist/sparkle-core/p-7dbfc316.js +1 -0
- package/dist/sparkle-core/p-7e61973d.entry.js +7 -0
- package/dist/sparkle-core/{p-3cd28c60.entry.js → p-82e98d07.entry.js} +1 -1
- package/dist/sparkle-core/p-838fa86d.entry.js +18 -0
- package/dist/sparkle-core/p-855ca600.js +1 -0
- package/dist/sparkle-core/p-857f3696.entry.js +1 -0
- package/dist/sparkle-core/{p-8f72be08.js → p-8c6b6038.js} +3 -0
- package/dist/sparkle-core/p-8fe2e51f.entry.js +4 -0
- package/dist/sparkle-core/{p-f72a6e6d.entry.js → p-90389886.entry.js} +1 -1
- package/dist/sparkle-core/p-932bfb69.entry.js +1 -0
- package/dist/sparkle-core/p-935e7cfc.js +1 -0
- package/dist/sparkle-core/{p-c70b9765.entry.js → p-941eaa3a.entry.js} +1 -1
- package/dist/sparkle-core/p-95004267.entry.js +1 -0
- package/dist/sparkle-core/p-950effe7.entry.js +1 -0
- package/dist/sparkle-core/{p-1ca4bf1d.entry.js → p-996361f9.entry.js} +1 -1
- package/dist/sparkle-core/p-9a17f2ad.js +4 -0
- package/dist/sparkle-core/p-9a443f51.js +1 -1
- package/dist/sparkle-core/p-9babd345.js +1 -0
- package/dist/sparkle-core/p-9cfdeb18.entry.js +1 -0
- package/dist/sparkle-core/p-a080e768.entry.js +1 -0
- package/dist/sparkle-core/p-a1cab0f3.js +4 -0
- package/dist/sparkle-core/p-a7cc0052.entry.js +4 -0
- package/dist/sparkle-core/p-a9ccb0df.js +4 -0
- package/dist/sparkle-core/p-a9ee3f6d.entry.js +1 -0
- package/dist/sparkle-core/{p-abe2676a.entry.js → p-aa87c7f0.entry.js} +1 -1
- package/dist/sparkle-core/{p-e818b11d.entry.js → p-aa9ebc39.entry.js} +1 -1
- package/dist/sparkle-core/p-ae1f145d.entry.js +1 -0
- package/dist/sparkle-core/{p-73a646fb.entry.js → p-b07a2cf2.entry.js} +1 -1
- package/dist/sparkle-core/{p-c82b05e0.entry.js → p-b3909012.entry.js} +1 -1
- package/dist/sparkle-core/p-b3e6427d.js +7 -0
- package/dist/sparkle-core/p-b49ca0ea.entry.js +1 -0
- package/dist/sparkle-core/p-b81e20fe.entry.js +4 -0
- package/dist/sparkle-core/p-bca0e465.entry.js +1 -0
- package/dist/sparkle-core/p-c1279cc9.entry.js +1 -0
- package/dist/sparkle-core/{p-82d95fcd.entry.js → p-c1376096.entry.js} +1 -1
- package/dist/sparkle-core/p-c3986a52.entry.js +1 -0
- package/dist/sparkle-core/p-c3d3d5c4.entry.js +1 -0
- package/dist/sparkle-core/p-c48bbc7c.entry.js +4 -0
- package/dist/sparkle-core/p-c5b9bdd6.entry.js +1 -0
- package/dist/sparkle-core/{p-15d68269.entry.js → p-c69b0a7a.entry.js} +1 -1
- package/dist/sparkle-core/p-cbbeed67.entry.js +1 -0
- package/dist/sparkle-core/p-d4a435f8.entry.js +1 -0
- package/dist/sparkle-core/p-d4c07aca.js +4 -0
- package/dist/sparkle-core/p-d5b05ece.entry.js +5 -0
- package/dist/sparkle-core/p-d7baf31e.entry.js +1 -0
- package/dist/sparkle-core/p-d8d3524a.js +1 -0
- package/dist/sparkle-core/p-df0070c5.entry.js +352 -0
- package/dist/sparkle-core/{p-22926eed.entry.js → p-e0fced48.entry.js} +1 -1
- package/dist/sparkle-core/p-e1cba44b.entry.js +4 -0
- package/dist/sparkle-core/p-e225581a.js +7 -0
- package/dist/sparkle-core/{p-4e28ca37.entry.js → p-e3fdd0a8.entry.js} +1 -1
- package/dist/sparkle-core/p-e72d4450.js +4 -0
- package/dist/sparkle-core/p-eb70a23c.entry.js +1 -0
- package/dist/sparkle-core/{p-f9143c5d.entry.js → p-ecd39170.entry.js} +1 -1
- package/dist/sparkle-core/{p-151afa9e.entry.js → p-ed0e9d29.entry.js} +1 -1
- package/dist/sparkle-core/{p-92d42c10.entry.js → p-ee0d7f19.entry.js} +1 -1
- package/dist/sparkle-core/p-f4001fdf.js +4 -0
- package/dist/sparkle-core/p-f9b73032.entry.js +1 -0
- package/dist/sparkle-core/p-faa912d7.entry.js +1 -0
- package/dist/sparkle-core/{p-a250e2ae.entry.js → p-fbd7eeca.entry.js} +1 -1
- package/dist/sparkle-core/p-fc933591.entry.js +1 -0
- package/dist/sparkle-core/p-fef04ab5.js +4 -0
- package/dist/sparkle-core/sparkle-core.css +1 -1
- package/dist/sparkle-core/sparkle-core.esm.js +1 -1
- package/dist/sparkle-core/svg/balloon-outline.svg +1 -0
- package/dist/sparkle-core/svg/balloon-sharp.svg +1 -0
- package/dist/sparkle-core/svg/balloon.svg +1 -0
- package/dist/sparkle-core/svg/bowling-ball-outline.svg +1 -0
- package/dist/sparkle-core/svg/bowling-ball-sharp.svg +1 -0
- package/dist/sparkle-core/svg/bowling-ball.svg +1 -0
- package/dist/sparkle-core/svg/calendar-number-outline.svg +1 -0
- package/dist/sparkle-core/svg/calendar-number-sharp.svg +1 -0
- package/dist/sparkle-core/svg/calendar-number.svg +1 -0
- package/dist/sparkle-core/svg/diamond-outline.svg +1 -0
- package/dist/sparkle-core/svg/diamond-sharp.svg +1 -0
- package/dist/sparkle-core/svg/diamond.svg +1 -0
- package/dist/sparkle-core/svg/footsteps-outline.svg +1 -0
- package/dist/sparkle-core/svg/footsteps-sharp.svg +1 -0
- package/dist/sparkle-core/svg/footsteps.svg +1 -0
- package/dist/sparkle-core/svg/id-card-outline.svg +1 -0
- package/dist/sparkle-core/svg/id-card-sharp.svg +1 -0
- package/dist/sparkle-core/svg/id-card.svg +1 -0
- package/dist/sparkle-core/svg/logo-apple-ar.svg +1 -0
- package/dist/sparkle-core/svg/prism-outline.svg +1 -0
- package/dist/sparkle-core/svg/prism-sharp.svg +1 -0
- package/dist/sparkle-core/svg/prism.svg +1 -0
- package/dist/sparkle-core/svg/scale-outline.svg +1 -0
- package/dist/sparkle-core/svg/scale-sharp.svg +1 -0
- package/dist/sparkle-core/svg/scale.svg +1 -0
- package/dist/sparkle-core/svg/shield-half-outline.svg +1 -0
- package/dist/sparkle-core/svg/shield-half-sharp.svg +1 -0
- package/dist/sparkle-core/svg/shield-half.svg +1 -0
- package/dist/sparkle-core/svg/sparkles-outline.svg +1 -0
- package/dist/sparkle-core/svg/sparkles-sharp.svg +1 -0
- package/dist/sparkle-core/svg/sparkles.svg +1 -0
- package/dist/sparkle-core/swiper/swiper.bundle.js +2 -2
- package/dist/types/components/sparkle-animation-player/sparkle-animation-player.d.ts +1 -0
- package/dist/types/components/sparkle-character-intro/sparkle-character-intro.d.ts +7 -0
- package/dist/types/components/sparkle-course-root/sparkle-course-root.d.ts +2 -2
- package/dist/types/components/sparkle-youtube/sparkle-youtube.d.ts +1 -1
- package/dist/types/components.d.ts +17 -0
- package/dist/types/models/definitions.d.ts +8 -0
- package/dist/types/stencil-public-runtime.d.ts +200 -190
- package/dist/types/util.d.ts +1 -0
- package/package.json +26 -26
- package/dist/cjs/app-globals-98121d6d.js +0 -9
- package/dist/cjs/button-active-9456fb4d.js +0 -66
- package/dist/cjs/feed.service-518d18fd.js +0 -5802
- package/dist/cjs/focus-visible-1583bc8e.js +0 -45
- package/dist/cjs/framework-delegate-72815681.js +0 -37
- package/dist/cjs/header-mobile-collapse_60.cjs.entry.js +0 -86
- package/dist/cjs/index.es-baef3314.js +0 -13834
- package/dist/cjs/ion-action-sheet.cjs.entry.js +0 -261
- package/dist/cjs/ion-alert.cjs.entry.js +0 -455
- package/dist/cjs/ion-note.cjs.entry.js +0 -29
- package/dist/cjs/ion-popover.cjs.entry.js +0 -365
- package/dist/cjs/ion-select-popover.cjs.entry.js +0 -35
- package/dist/cjs/status-tap-466a7c6a.js +0 -25
- package/dist/esm/app-globals-6451faf3.js +0 -7
- package/dist/esm/auth.store-dd944bc2.js +0 -2552
- package/dist/esm/button-active-97535443.js +0 -64
- package/dist/esm/feed.service-0fda1e36.js +0 -5787
- package/dist/esm/focus-visible-abf04ce3.js +0 -43
- package/dist/esm/framework-delegate-2c397da3.js +0 -34
- package/dist/esm/header-mobile-collapse_60.entry.js +0 -19
- package/dist/esm/index.es-a5bf9a49.js +0 -13748
- package/dist/esm/ion-action-sheet.entry.js +0 -257
- package/dist/esm/ion-alert.entry.js +0 -451
- package/dist/esm/ion-note.entry.js +0 -25
- package/dist/esm/ion-popover.entry.js +0 -361
- package/dist/esm/ion-select-popover.entry.js +0 -31
- package/dist/esm/status-tap-9221cd79.js +0 -23
- package/dist/sparkle-core/p-019d9d02.entry.js +0 -1
- package/dist/sparkle-core/p-02d6d899.js +0 -1
- package/dist/sparkle-core/p-03fd27d0.entry.js +0 -1
- package/dist/sparkle-core/p-07018d29.js +0 -1
- package/dist/sparkle-core/p-083d57a6.entry.js +0 -1
- package/dist/sparkle-core/p-090f2624.js +0 -1
- package/dist/sparkle-core/p-0e1c7c8c.js +0 -1
- package/dist/sparkle-core/p-101feae9.js +0 -1
- package/dist/sparkle-core/p-13b0cdfc.entry.js +0 -1
- package/dist/sparkle-core/p-13c9bf3a.entry.js +0 -1
- package/dist/sparkle-core/p-169920f1.js +0 -1
- package/dist/sparkle-core/p-1e1f5e98.entry.js +0 -1
- package/dist/sparkle-core/p-1e866c41.entry.js +0 -1
- package/dist/sparkle-core/p-2474bf60.entry.js +0 -1
- package/dist/sparkle-core/p-25bbf9b4.entry.js +0 -1
- package/dist/sparkle-core/p-2a45b732.js +0 -1
- package/dist/sparkle-core/p-2abf4d37.entry.js +0 -1
- package/dist/sparkle-core/p-2c5edb9f.entry.js +0 -1
- package/dist/sparkle-core/p-2d966d35.js +0 -1
- package/dist/sparkle-core/p-30b641a4.entry.js +0 -1
- package/dist/sparkle-core/p-34ea6639.entry.js +0 -1
- package/dist/sparkle-core/p-359422b6.entry.js +0 -1
- package/dist/sparkle-core/p-37bfb548.entry.js +0 -1
- package/dist/sparkle-core/p-38307b31.js +0 -1
- package/dist/sparkle-core/p-3a29a75b.entry.js +0 -1
- package/dist/sparkle-core/p-3bb55510.entry.js +0 -1
- package/dist/sparkle-core/p-3be0a218.js +0 -1
- package/dist/sparkle-core/p-417a8dd6.js +0 -1
- package/dist/sparkle-core/p-447163be.entry.js +0 -1
- package/dist/sparkle-core/p-49265a8e.entry.js +0 -1
- package/dist/sparkle-core/p-4950f841.entry.js +0 -1
- package/dist/sparkle-core/p-4b7db0e6.js +0 -1
- package/dist/sparkle-core/p-4d8cb365.entry.js +0 -1
- package/dist/sparkle-core/p-5073899e.entry.js +0 -1
- package/dist/sparkle-core/p-5b366c20.entry.js +0 -1
- package/dist/sparkle-core/p-5dce20b9.entry.js +0 -1
- package/dist/sparkle-core/p-6006beec.entry.js +0 -1
- package/dist/sparkle-core/p-600d04fc.entry.js +0 -1
- package/dist/sparkle-core/p-60828739.entry.js +0 -1
- package/dist/sparkle-core/p-6112b180.entry.js +0 -1
- package/dist/sparkle-core/p-66eb6b7a.entry.js +0 -1
- package/dist/sparkle-core/p-67ddec3f.entry.js +0 -1
- package/dist/sparkle-core/p-68cb7d41.entry.js +0 -1
- package/dist/sparkle-core/p-69cd49de.js +0 -1
- package/dist/sparkle-core/p-6edbdde5.entry.js +0 -1
- package/dist/sparkle-core/p-6f0ecbe3.js +0 -1
- package/dist/sparkle-core/p-765b8593.js +0 -1
- package/dist/sparkle-core/p-770128c8.js +0 -1
- package/dist/sparkle-core/p-7840618d.js +0 -1
- package/dist/sparkle-core/p-7b37d523.entry.js +0 -1
- package/dist/sparkle-core/p-7d83d006.entry.js +0 -1
- package/dist/sparkle-core/p-7f3d5344.js +0 -1
- package/dist/sparkle-core/p-81651f26.entry.js +0 -1
- package/dist/sparkle-core/p-86148067.entry.js +0 -1
- package/dist/sparkle-core/p-8b5bc1d6.entry.js +0 -1
- package/dist/sparkle-core/p-8c3ee44c.entry.js +0 -1
- package/dist/sparkle-core/p-9007a06b.entry.js +0 -1
- package/dist/sparkle-core/p-90482861.entry.js +0 -1
- package/dist/sparkle-core/p-a061537e.entry.js +0 -1
- package/dist/sparkle-core/p-a38ea475.js +0 -1
- package/dist/sparkle-core/p-ad1ddf1f.js +0 -483
- package/dist/sparkle-core/p-aef0bba0.js +0 -1
- package/dist/sparkle-core/p-b080c1e3.entry.js +0 -1
- package/dist/sparkle-core/p-b11fe0c7.js +0 -1
- package/dist/sparkle-core/p-bac45a26.entry.js +0 -1
- package/dist/sparkle-core/p-bbe5977b.entry.js +0 -1
- package/dist/sparkle-core/p-bc568dcb.js +0 -1
- package/dist/sparkle-core/p-bfb55f1d.js +0 -3
- package/dist/sparkle-core/p-c163c16d.entry.js +0 -1
- package/dist/sparkle-core/p-c3166584.entry.js +0 -1
- package/dist/sparkle-core/p-c34269ae.entry.js +0 -1
- package/dist/sparkle-core/p-c466ee32.js +0 -1
- package/dist/sparkle-core/p-c6710592.entry.js +0 -1
- package/dist/sparkle-core/p-c7022391.entry.js +0 -1
- package/dist/sparkle-core/p-d4ad796c.js +0 -1
- package/dist/sparkle-core/p-d6152660.entry.js +0 -1
- package/dist/sparkle-core/p-d63406d8.js +0 -1
- package/dist/sparkle-core/p-dba672d5.entry.js +0 -1
- package/dist/sparkle-core/p-dd73d01a.entry.js +0 -1
- package/dist/sparkle-core/p-de33872d.entry.js +0 -1
- package/dist/sparkle-core/p-dee2128a.entry.js +0 -1
- package/dist/sparkle-core/p-df07e132.entry.js +0 -1
- package/dist/sparkle-core/p-e5d5aaa5.js +0 -1
- package/dist/sparkle-core/p-e72c6d87.entry.js +0 -1
- package/dist/sparkle-core/p-e8df6ea6.entry.js +0 -1
- package/dist/sparkle-core/p-ef2a2172.js +0 -1
- package/dist/sparkle-core/p-f1a4ab33.entry.js +0 -1
- package/dist/sparkle-core/p-f43ac631.entry.js +0 -1
- package/dist/sparkle-core/p-f8063d7b.js +0 -1
- package/dist/sparkle-core/p-fd62283e.entry.js +0 -1
- package/dist/sparkle-core/p-fef71e0e.entry.js +0 -1
@@ -1,16 +1,20 @@
|
|
1
|
-
import { r as registerInstance,
|
2
|
-
import { g as getIonMode, c as config } from './ionic-global-
|
3
|
-
import {
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
import {
|
7
|
-
import './
|
8
|
-
import {
|
9
|
-
import './
|
10
|
-
import {
|
11
|
-
import {
|
12
|
-
import
|
1
|
+
import { r as registerInstance, i as createEvent, w as writeTask, h, H as Host, e as getElement } from './index-5568e3fa.js';
|
2
|
+
import { g as getIonMode, c as config } from './ionic-global-0939c477.js';
|
3
|
+
import { C as CoreDelegate, a as attachComponent, d as detachComponent } from './framework-delegate-3bc58c27.js';
|
4
|
+
import { l as clamp, g as getElementRoot, k as raf } from './helpers-39367fe1.js';
|
5
|
+
import { KEYBOARD_DID_OPEN } from './keyboard-2503e874.js';
|
6
|
+
import { B as BACKDROP, p as prepareOverlay, b as present, c as activeAnimations, d as dismiss, e as eventMethod } from './overlays-34cfa9e0.js';
|
7
|
+
import { g as getClassMap } from './theme-c336c9d9.js';
|
8
|
+
import { d as deepReady } from './index-c26d8655.js';
|
9
|
+
import { c as createAnimation } from './animation-b306f6c2.js';
|
10
|
+
import { g as getTimeGivenProgression } from './cubic-bezier-a7ad9c8e.js';
|
11
|
+
import { createGesture } from './index-a12c14bd.js';
|
12
|
+
import './hardware-back-button-b6ccf74a.js';
|
13
|
+
import './gesture-controller-686622ba.js';
|
13
14
|
|
15
|
+
/*!
|
16
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
17
|
+
*/
|
14
18
|
// Defaults for the card swipe animation
|
15
19
|
const SwipeToCloseDefaults = {
|
16
20
|
MIN_PRESENTING_SCALE: 0.93,
|
@@ -24,11 +28,11 @@ const createSwipeToCloseGesture = (el, animation, onDismiss) => {
|
|
24
28
|
!target.closest) {
|
25
29
|
return true;
|
26
30
|
}
|
27
|
-
const
|
28
|
-
if (
|
31
|
+
const contentOrFooter = target.closest('ion-content, ion-footer');
|
32
|
+
if (contentOrFooter === null) {
|
29
33
|
return true;
|
30
34
|
}
|
31
|
-
// Target is in the content so
|
35
|
+
// Target is in the content or the footer so do not start the gesture.
|
32
36
|
// We could be more nuanced here and allow it for content that
|
33
37
|
// does not need to scroll.
|
34
38
|
return false;
|
@@ -85,22 +89,140 @@ const computeDuration = (remaining, velocity) => {
|
|
85
89
|
return clamp(400, remaining / Math.abs(velocity * 1.1), 500);
|
86
90
|
};
|
87
91
|
|
92
|
+
/*!
|
93
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
94
|
+
*/
|
88
95
|
/**
|
89
|
-
*
|
96
|
+
* Use y = mx + b to
|
97
|
+
* figure out the backdrop value
|
98
|
+
* at a particular x coordinate. This
|
99
|
+
* is useful when the backdrop does
|
100
|
+
* not begin to fade in until after
|
101
|
+
* the 0 breakpoint.
|
102
|
+
*/
|
103
|
+
const getBackdropValueForSheet = (x, backdropBreakpoint) => {
|
104
|
+
/**
|
105
|
+
* We will use these points:
|
106
|
+
* (backdropBreakpoint, 0)
|
107
|
+
* (maxBreakpoint, 1)
|
108
|
+
* We know that at the beginning breakpoint,
|
109
|
+
* the backdrop will be hidden. We also
|
110
|
+
* know that at the maxBreakpoint, the backdrop
|
111
|
+
* must be fully visible. maxBreakpoint should
|
112
|
+
* always be 1 even if the maximum value
|
113
|
+
* of the breakpoints array is not 1 since
|
114
|
+
* the animation runs from a progress of 0
|
115
|
+
* to a progress of 1.
|
116
|
+
* m = (y2 - y1) / (x2 - x1)
|
117
|
+
*
|
118
|
+
* This is simplified from:
|
119
|
+
* m = (1 - 0) / (maxBreakpoint - backdropBreakpoint)
|
120
|
+
*/
|
121
|
+
const slope = 1 / (1 - backdropBreakpoint);
|
122
|
+
/**
|
123
|
+
* From here, compute b which is
|
124
|
+
* the backdrop opacity if the offset
|
125
|
+
* is 0. If the backdrop does not
|
126
|
+
* begin to fade in until after the
|
127
|
+
* 0 breakpoint, this b value will be
|
128
|
+
* negative. This is fine as we never pass
|
129
|
+
* b directly into the animation keyframes.
|
130
|
+
* b = y - mx
|
131
|
+
* Use a known point: (backdropBreakpoint, 0)
|
132
|
+
* This is simplified from:
|
133
|
+
* b = 0 - (backdropBreakpoint * slope)
|
134
|
+
*/
|
135
|
+
const b = -(backdropBreakpoint * slope);
|
136
|
+
/**
|
137
|
+
* Finally, we can now determine the
|
138
|
+
* backdrop offset given an arbitrary
|
139
|
+
* gesture offset.
|
140
|
+
*/
|
141
|
+
return (x * slope) + b;
|
142
|
+
};
|
143
|
+
|
144
|
+
/*!
|
145
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
146
|
+
*/
|
147
|
+
const createSheetEnterAnimation = (opts) => {
|
148
|
+
const { currentBreakpoint, backdropBreakpoint } = opts;
|
149
|
+
/**
|
150
|
+
* If the backdropBreakpoint is undefined, then the backdrop
|
151
|
+
* should always fade in. If the backdropBreakpoint came before the
|
152
|
+
* current breakpoint, then the backdrop should be fading in.
|
153
|
+
*/
|
154
|
+
const shouldShowBackdrop = backdropBreakpoint === undefined || backdropBreakpoint < currentBreakpoint;
|
155
|
+
const initialBackdrop = shouldShowBackdrop ? `calc(var(--backdrop-opacity) * ${currentBreakpoint})` : '0';
|
156
|
+
const backdropAnimation = createAnimation('backdropAnimation')
|
157
|
+
.fromTo('opacity', 0, initialBackdrop);
|
158
|
+
if (shouldShowBackdrop) {
|
159
|
+
backdropAnimation
|
160
|
+
.beforeStyles({
|
161
|
+
'pointer-events': 'none'
|
162
|
+
})
|
163
|
+
.afterClearStyles(['pointer-events']);
|
164
|
+
}
|
165
|
+
const wrapperAnimation = createAnimation('wrapperAnimation')
|
166
|
+
.keyframes([
|
167
|
+
{ offset: 0, opacity: 1, transform: 'translateY(100%)' },
|
168
|
+
{ offset: 1, opacity: 1, transform: `translateY(${100 - (currentBreakpoint * 100)}%)` }
|
169
|
+
]);
|
170
|
+
return { wrapperAnimation, backdropAnimation };
|
171
|
+
};
|
172
|
+
const createSheetLeaveAnimation = (opts) => {
|
173
|
+
const { currentBreakpoint, backdropBreakpoint } = opts;
|
174
|
+
/**
|
175
|
+
* Backdrop does not always fade in from 0 to 1 if backdropBreakpoint
|
176
|
+
* is defined, so we need to account for that offset by figuring out
|
177
|
+
* what the current backdrop value should be.
|
178
|
+
*/
|
179
|
+
const backdropValue = `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(currentBreakpoint, backdropBreakpoint)})`;
|
180
|
+
const defaultBackdrop = [
|
181
|
+
{ offset: 0, opacity: backdropValue },
|
182
|
+
{ offset: 1, opacity: 0 }
|
183
|
+
];
|
184
|
+
const customBackdrop = [
|
185
|
+
{ offset: 0, opacity: backdropValue },
|
186
|
+
{ offset: backdropBreakpoint, opacity: 0 },
|
187
|
+
{ offset: 1, opacity: 0 }
|
188
|
+
];
|
189
|
+
const backdropAnimation = createAnimation('backdropAnimation')
|
190
|
+
.keyframes(backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop);
|
191
|
+
const wrapperAnimation = createAnimation('wrapperAnimation')
|
192
|
+
.keyframes([
|
193
|
+
{ offset: 0, opacity: 1, transform: `translateY(${100 - (currentBreakpoint * 100)}%)` },
|
194
|
+
{ offset: 1, opacity: 1, transform: `translateY(100%)` }
|
195
|
+
]);
|
196
|
+
return { wrapperAnimation, backdropAnimation };
|
197
|
+
};
|
198
|
+
|
199
|
+
/*!
|
200
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
90
201
|
*/
|
91
|
-
const
|
202
|
+
const createEnterAnimation$1 = () => {
|
92
203
|
const backdropAnimation = createAnimation()
|
93
|
-
.addElement(baseEl.querySelector('ion-backdrop'))
|
94
204
|
.fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
|
95
205
|
.beforeStyles({
|
96
206
|
'pointer-events': 'none'
|
97
207
|
})
|
98
208
|
.afterClearStyles(['pointer-events']);
|
99
209
|
const wrapperAnimation = createAnimation()
|
100
|
-
.addElement(baseEl.querySelectorAll('.modal-wrapper, .modal-shadow'))
|
101
|
-
.beforeStyles({ 'opacity': 1 })
|
102
210
|
.fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');
|
103
|
-
|
211
|
+
return { backdropAnimation, wrapperAnimation };
|
212
|
+
};
|
213
|
+
/**
|
214
|
+
* iOS Modal Enter Animation for the Card presentation style
|
215
|
+
*/
|
216
|
+
const iosEnterAnimation = (baseEl, opts) => {
|
217
|
+
const { presentingEl, currentBreakpoint } = opts;
|
218
|
+
const root = getElementRoot(baseEl);
|
219
|
+
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
|
220
|
+
backdropAnimation
|
221
|
+
.addElement(root.querySelector('ion-backdrop'));
|
222
|
+
wrapperAnimation
|
223
|
+
.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow'))
|
224
|
+
.beforeStyles({ 'opacity': 1 });
|
225
|
+
const baseAnimation = createAnimation('entering-base')
|
104
226
|
.addElement(baseEl)
|
105
227
|
.easing('cubic-bezier(0.32,0.72,0,1)')
|
106
228
|
.duration(500)
|
@@ -108,6 +230,7 @@ const iosEnterAnimation = (baseEl, presentingEl) => {
|
|
108
230
|
if (presentingEl) {
|
109
231
|
const isMobile = window.innerWidth < 768;
|
110
232
|
const hasCardModal = (presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined);
|
233
|
+
const presentingElRoot = getElementRoot(presentingEl);
|
111
234
|
const presentingAnimation = createAnimation()
|
112
235
|
.beforeStyles({
|
113
236
|
'transform': 'translateY(0)',
|
@@ -119,7 +242,7 @@ const iosEnterAnimation = (baseEl, presentingEl) => {
|
|
119
242
|
/**
|
120
243
|
* Fallback for browsers that does not support `max()` (ex: Firefox)
|
121
244
|
* No need to worry about statusbar padding since engines like Gecko
|
122
|
-
* are not used as the engine for
|
245
|
+
* are not used as the engine for standalone Cordova/Capacitor apps
|
123
246
|
*/
|
124
247
|
const transformOffset = (!CSS.supports('width', 'max(0px, 1px)')) ? '30px' : 'max(30px, var(--ion-safe-area-top))';
|
125
248
|
const modalTransform = hasCardModal ? '-10px' : transformOffset;
|
@@ -149,7 +272,7 @@ const iosEnterAnimation = (baseEl, presentingEl) => {
|
|
149
272
|
.afterStyles({
|
150
273
|
'transform': finalTransform
|
151
274
|
})
|
152
|
-
.addElement(
|
275
|
+
.addElement(presentingElRoot.querySelector('.modal-wrapper'))
|
153
276
|
.keyframes([
|
154
277
|
{ offset: 0, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },
|
155
278
|
{ offset: 1, filter: 'contrast(0.85)', transform: finalTransform }
|
@@ -158,7 +281,7 @@ const iosEnterAnimation = (baseEl, presentingEl) => {
|
|
158
281
|
.afterStyles({
|
159
282
|
'transform': finalTransform
|
160
283
|
})
|
161
|
-
.addElement(
|
284
|
+
.addElement(presentingElRoot.querySelector('.modal-shadow'))
|
162
285
|
.keyframes([
|
163
286
|
{ offset: 0, opacity: '1', transform: 'translateY(0) scale(1)' },
|
164
287
|
{ offset: 1, opacity: '0', transform: finalTransform }
|
@@ -173,18 +296,28 @@ const iosEnterAnimation = (baseEl, presentingEl) => {
|
|
173
296
|
return baseAnimation;
|
174
297
|
};
|
175
298
|
|
176
|
-
|
177
|
-
*
|
299
|
+
/*!
|
300
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
178
301
|
*/
|
179
|
-
const
|
302
|
+
const createLeaveAnimation$1 = () => {
|
180
303
|
const backdropAnimation = createAnimation()
|
181
|
-
.
|
182
|
-
.fromTo('opacity', 'var(--backdrop-opacity)', 0.0);
|
304
|
+
.fromTo('opacity', 'var(--backdrop-opacity)', 0);
|
183
305
|
const wrapperAnimation = createAnimation()
|
184
|
-
.addElement(baseEl.querySelectorAll('.modal-wrapper, .modal-shadow'))
|
185
|
-
.beforeStyles({ 'opacity': 1 })
|
186
306
|
.fromTo('transform', 'translateY(0vh)', 'translateY(100vh)');
|
187
|
-
|
307
|
+
return { backdropAnimation, wrapperAnimation };
|
308
|
+
};
|
309
|
+
/**
|
310
|
+
* iOS Modal Leave Animation
|
311
|
+
*/
|
312
|
+
const iosLeaveAnimation = (baseEl, opts, duration = 500) => {
|
313
|
+
const { presentingEl, currentBreakpoint } = opts;
|
314
|
+
const root = getElementRoot(baseEl);
|
315
|
+
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation$1();
|
316
|
+
backdropAnimation.addElement(root.querySelector('ion-backdrop'));
|
317
|
+
wrapperAnimation
|
318
|
+
.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow'))
|
319
|
+
.beforeStyles({ 'opacity': 1 });
|
320
|
+
const baseAnimation = createAnimation('leaving-base')
|
188
321
|
.addElement(baseEl)
|
189
322
|
.easing('cubic-bezier(0.32,0.72,0,1)')
|
190
323
|
.duration(duration)
|
@@ -192,6 +325,7 @@ const iosLeaveAnimation = (baseEl, presentingEl, duration = 500) => {
|
|
192
325
|
if (presentingEl) {
|
193
326
|
const isMobile = window.innerWidth < 768;
|
194
327
|
const hasCardModal = (presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined);
|
328
|
+
const presentingElRoot = getElementRoot(presentingEl);
|
195
329
|
const presentingAnimation = createAnimation()
|
196
330
|
.beforeClearStyles(['transform'])
|
197
331
|
.afterClearStyles(['transform'])
|
@@ -229,7 +363,7 @@ const iosLeaveAnimation = (baseEl, presentingEl, duration = 500) => {
|
|
229
363
|
const toPresentingScale = (hasCardModal) ? SwipeToCloseDefaults.MIN_PRESENTING_SCALE : 1;
|
230
364
|
const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;
|
231
365
|
presentingAnimation
|
232
|
-
.addElement(
|
366
|
+
.addElement(presentingElRoot.querySelector('.modal-wrapper'))
|
233
367
|
.afterStyles({
|
234
368
|
'transform': 'translate3d(0, 0, 0)'
|
235
369
|
})
|
@@ -238,7 +372,7 @@ const iosLeaveAnimation = (baseEl, presentingEl, duration = 500) => {
|
|
238
372
|
{ offset: 1, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' }
|
239
373
|
]);
|
240
374
|
const shadowAnimation = createAnimation()
|
241
|
-
.addElement(
|
375
|
+
.addElement(presentingElRoot.querySelector('.modal-shadow'))
|
242
376
|
.afterStyles({
|
243
377
|
'transform': 'translateY(0) scale(1)'
|
244
378
|
})
|
@@ -256,60 +390,293 @@ const iosLeaveAnimation = (baseEl, presentingEl, duration = 500) => {
|
|
256
390
|
return baseAnimation;
|
257
391
|
};
|
258
392
|
|
259
|
-
|
260
|
-
*
|
393
|
+
/*!
|
394
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
261
395
|
*/
|
262
|
-
const
|
263
|
-
const
|
264
|
-
const backdropAnimation = createAnimation();
|
265
|
-
const wrapperAnimation = createAnimation();
|
266
|
-
backdropAnimation
|
267
|
-
.addElement(baseEl.querySelector('ion-backdrop'))
|
396
|
+
const createEnterAnimation = () => {
|
397
|
+
const backdropAnimation = createAnimation()
|
268
398
|
.fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
|
269
399
|
.beforeStyles({
|
270
400
|
'pointer-events': 'none'
|
271
401
|
})
|
272
402
|
.afterClearStyles(['pointer-events']);
|
273
|
-
wrapperAnimation
|
274
|
-
.addElement(baseEl.querySelector('.modal-wrapper'))
|
403
|
+
const wrapperAnimation = createAnimation()
|
275
404
|
.keyframes([
|
276
405
|
{ offset: 0, opacity: 0.01, transform: 'translateY(40px)' },
|
277
|
-
{ offset: 1, opacity: 1, transform:
|
406
|
+
{ offset: 1, opacity: 1, transform: `translateY(0px)` }
|
278
407
|
]);
|
279
|
-
return
|
408
|
+
return { backdropAnimation, wrapperAnimation };
|
409
|
+
};
|
410
|
+
/**
|
411
|
+
* Md Modal Enter Animation
|
412
|
+
*/
|
413
|
+
const mdEnterAnimation = (baseEl, opts) => {
|
414
|
+
const { currentBreakpoint } = opts;
|
415
|
+
const root = getElementRoot(baseEl);
|
416
|
+
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
|
417
|
+
backdropAnimation
|
418
|
+
.addElement(root.querySelector('ion-backdrop'));
|
419
|
+
wrapperAnimation
|
420
|
+
.addElement(root.querySelector('.modal-wrapper'));
|
421
|
+
return createAnimation()
|
280
422
|
.addElement(baseEl)
|
281
423
|
.easing('cubic-bezier(0.36,0.66,0.04,1)')
|
282
424
|
.duration(280)
|
283
425
|
.addAnimation([backdropAnimation, wrapperAnimation]);
|
284
426
|
};
|
285
427
|
|
286
|
-
|
287
|
-
*
|
428
|
+
/*!
|
429
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
288
430
|
*/
|
289
|
-
const
|
290
|
-
const
|
291
|
-
|
292
|
-
const wrapperAnimation = createAnimation()
|
293
|
-
const wrapperEl = baseEl.querySelector('.modal-wrapper');
|
294
|
-
backdropAnimation
|
295
|
-
.addElement(baseEl.querySelector('ion-backdrop'))
|
296
|
-
.fromTo('opacity', 'var(--backdrop-opacity)', 0.0);
|
297
|
-
wrapperAnimation
|
298
|
-
.addElement(wrapperEl)
|
431
|
+
const createLeaveAnimation = () => {
|
432
|
+
const backdropAnimation = createAnimation()
|
433
|
+
.fromTo('opacity', 'var(--backdrop-opacity)', 0);
|
434
|
+
const wrapperAnimation = createAnimation()
|
299
435
|
.keyframes([
|
300
|
-
{ offset: 0, opacity: 0.99, transform:
|
436
|
+
{ offset: 0, opacity: 0.99, transform: `translateY(0px)` },
|
301
437
|
{ offset: 1, opacity: 0, transform: 'translateY(40px)' }
|
302
438
|
]);
|
303
|
-
return
|
304
|
-
|
439
|
+
return { backdropAnimation, wrapperAnimation };
|
440
|
+
};
|
441
|
+
/**
|
442
|
+
* Md Modal Leave Animation
|
443
|
+
*/
|
444
|
+
const mdLeaveAnimation = (baseEl, opts) => {
|
445
|
+
const { currentBreakpoint } = opts;
|
446
|
+
const root = getElementRoot(baseEl);
|
447
|
+
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation();
|
448
|
+
backdropAnimation.addElement(root.querySelector('ion-backdrop'));
|
449
|
+
wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
|
450
|
+
return createAnimation()
|
305
451
|
.easing('cubic-bezier(0.47,0,0.745,0.715)')
|
306
452
|
.duration(200)
|
307
453
|
.addAnimation([backdropAnimation, wrapperAnimation]);
|
308
454
|
};
|
309
455
|
|
310
|
-
|
456
|
+
/*!
|
457
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
458
|
+
*/
|
459
|
+
const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], onDismiss, onBreakpointChange) => {
|
460
|
+
// Defaults for the sheet swipe animation
|
461
|
+
const defaultBackdrop = [
|
462
|
+
{ offset: 0, opacity: 'var(--backdrop-opacity)' },
|
463
|
+
{ offset: 1, opacity: 0.01 }
|
464
|
+
];
|
465
|
+
const customBackdrop = [
|
466
|
+
{ offset: 0, opacity: 'var(--backdrop-opacity)' },
|
467
|
+
{ offset: 1 - backdropBreakpoint, opacity: 0 },
|
468
|
+
{ offset: 1, opacity: 0 }
|
469
|
+
];
|
470
|
+
const SheetDefaults = {
|
471
|
+
WRAPPER_KEYFRAMES: [
|
472
|
+
{ offset: 0, transform: 'translateY(0%)' },
|
473
|
+
{ offset: 1, transform: 'translateY(100%)' }
|
474
|
+
],
|
475
|
+
BACKDROP_KEYFRAMES: (backdropBreakpoint !== 0) ? customBackdrop : defaultBackdrop
|
476
|
+
};
|
477
|
+
const contentEl = baseEl.querySelector('ion-content');
|
478
|
+
const height = wrapperEl.clientHeight;
|
479
|
+
let currentBreakpoint = initialBreakpoint;
|
480
|
+
let offset = 0;
|
481
|
+
const wrapperAnimation = animation.childAnimations.find(ani => ani.id === 'wrapperAnimation');
|
482
|
+
const backdropAnimation = animation.childAnimations.find(ani => ani.id === 'backdropAnimation');
|
483
|
+
const maxBreakpoint = breakpoints[breakpoints.length - 1];
|
484
|
+
const enableBackdrop = () => {
|
485
|
+
baseEl.style.setProperty('pointer-events', 'auto');
|
486
|
+
backdropEl.style.setProperty('pointer-events', 'auto');
|
487
|
+
/**
|
488
|
+
* When the backdrop is enabled, elements such
|
489
|
+
* as inputs should not be focusable outside
|
490
|
+
* the sheet.
|
491
|
+
*/
|
492
|
+
baseEl.classList.remove('ion-disable-focus-trap');
|
493
|
+
};
|
494
|
+
const disableBackdrop = () => {
|
495
|
+
baseEl.style.setProperty('pointer-events', 'none');
|
496
|
+
backdropEl.style.setProperty('pointer-events', 'none');
|
497
|
+
/**
|
498
|
+
* When the backdrop is enabled, elements such
|
499
|
+
* as inputs should not be focusable outside
|
500
|
+
* the sheet.
|
501
|
+
* Adding this class disables focus trapping
|
502
|
+
* for the sheet temporarily.
|
503
|
+
*/
|
504
|
+
baseEl.classList.add('ion-disable-focus-trap');
|
505
|
+
};
|
506
|
+
/**
|
507
|
+
* After the entering animation completes,
|
508
|
+
* we need to set the animation to go from
|
509
|
+
* offset 0 to offset 1 so that users can
|
510
|
+
* swipe in any direction. We then set the
|
511
|
+
* animation offset to the current breakpoint
|
512
|
+
* so there is no flickering.
|
513
|
+
*/
|
514
|
+
if (wrapperAnimation && backdropAnimation) {
|
515
|
+
wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
|
516
|
+
backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
|
517
|
+
animation.progressStart(true, 1 - currentBreakpoint);
|
518
|
+
/**
|
519
|
+
* If backdrop is not enabled, then content
|
520
|
+
* behind modal should be clickable. To do this, we need
|
521
|
+
* to remove pointer-events from ion-modal as a whole.
|
522
|
+
* ion-backdrop and .modal-wrapper always have pointer-events: auto
|
523
|
+
* applied, so the modal content can still be interacted with.
|
524
|
+
*/
|
525
|
+
const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;
|
526
|
+
if (shouldEnableBackdrop) {
|
527
|
+
enableBackdrop();
|
528
|
+
}
|
529
|
+
else {
|
530
|
+
disableBackdrop();
|
531
|
+
}
|
532
|
+
}
|
533
|
+
if (contentEl && currentBreakpoint !== maxBreakpoint) {
|
534
|
+
contentEl.scrollY = false;
|
535
|
+
}
|
536
|
+
const canStart = (detail) => {
|
537
|
+
/**
|
538
|
+
* If the sheet is fully expanded and
|
539
|
+
* the user is swiping on the content,
|
540
|
+
* the gesture should not start to
|
541
|
+
* allow for scrolling on the content.
|
542
|
+
*/
|
543
|
+
const content = detail.event.target.closest('ion-content');
|
544
|
+
if (currentBreakpoint === 1 && content) {
|
545
|
+
return false;
|
546
|
+
}
|
547
|
+
return true;
|
548
|
+
};
|
549
|
+
const onStart = () => {
|
550
|
+
/**
|
551
|
+
* If swiping on the content
|
552
|
+
* we should disable scrolling otherwise
|
553
|
+
* the sheet will expand and the content will scroll.
|
554
|
+
*/
|
555
|
+
if (contentEl) {
|
556
|
+
contentEl.scrollY = false;
|
557
|
+
}
|
558
|
+
raf(() => {
|
559
|
+
/**
|
560
|
+
* Dismisses the open keyboard when the sheet drag gesture is started.
|
561
|
+
* Sets the focus onto the modal element.
|
562
|
+
*/
|
563
|
+
baseEl.focus();
|
564
|
+
});
|
565
|
+
animation.progressStart(true, 1 - currentBreakpoint);
|
566
|
+
};
|
567
|
+
const onMove = (detail) => {
|
568
|
+
/**
|
569
|
+
* Given the change in gesture position on the Y axis,
|
570
|
+
* compute where the offset of the animation should be
|
571
|
+
* relative to where the user dragged.
|
572
|
+
*/
|
573
|
+
const initialStep = 1 - currentBreakpoint;
|
574
|
+
offset = clamp(0.0001, initialStep + (detail.deltaY / height), 0.9999);
|
575
|
+
animation.progressStep(offset);
|
576
|
+
};
|
577
|
+
const onEnd = (detail) => {
|
578
|
+
/**
|
579
|
+
* When the gesture releases, we need to determine
|
580
|
+
* the closest breakpoint to snap to.
|
581
|
+
*/
|
582
|
+
const velocity = detail.velocityY;
|
583
|
+
const threshold = (detail.deltaY + velocity * 100) / height;
|
584
|
+
const diff = currentBreakpoint - threshold;
|
585
|
+
const closest = breakpoints.reduce((a, b) => {
|
586
|
+
return Math.abs(b - diff) < Math.abs(a - diff) ? b : a;
|
587
|
+
});
|
588
|
+
const shouldRemainOpen = closest !== 0;
|
589
|
+
currentBreakpoint = 0;
|
590
|
+
/**
|
591
|
+
* Update the animation so that it plays from
|
592
|
+
* the last offset to the closest snap point.
|
593
|
+
*/
|
594
|
+
if (wrapperAnimation && backdropAnimation) {
|
595
|
+
wrapperAnimation.keyframes([
|
596
|
+
{ offset: 0, transform: `translateY(${offset * 100}%)` },
|
597
|
+
{ offset: 1, transform: `translateY(${(1 - closest) * 100}%)` }
|
598
|
+
]);
|
599
|
+
backdropAnimation.keyframes([
|
600
|
+
{ offset: 0, opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(1 - offset, backdropBreakpoint)})` },
|
601
|
+
{ offset: 1, opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(closest, backdropBreakpoint)})` }
|
602
|
+
]);
|
603
|
+
animation.progressStep(0);
|
604
|
+
}
|
605
|
+
/**
|
606
|
+
* Gesture should remain disabled until the
|
607
|
+
* snapping animation completes.
|
608
|
+
*/
|
609
|
+
gesture.enable(false);
|
610
|
+
animation
|
611
|
+
.onFinish(() => {
|
612
|
+
if (shouldRemainOpen) {
|
613
|
+
/**
|
614
|
+
* Once the snapping animation completes,
|
615
|
+
* we need to reset the animation to go
|
616
|
+
* from 0 to 1 so users can swipe in any direction.
|
617
|
+
* We then set the animation offset to the current
|
618
|
+
* breakpoint so that it starts at the snapped position.
|
619
|
+
*/
|
620
|
+
if (wrapperAnimation && backdropAnimation) {
|
621
|
+
raf(() => {
|
622
|
+
wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
|
623
|
+
backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
|
624
|
+
animation.progressStart(true, 1 - closest);
|
625
|
+
currentBreakpoint = closest;
|
626
|
+
onBreakpointChange(currentBreakpoint);
|
627
|
+
/**
|
628
|
+
* If the sheet is fully expanded, we can safely
|
629
|
+
* enable scrolling again.
|
630
|
+
*/
|
631
|
+
if (contentEl && currentBreakpoint === breakpoints[breakpoints.length - 1]) {
|
632
|
+
contentEl.scrollY = true;
|
633
|
+
}
|
634
|
+
/**
|
635
|
+
* Backdrop should become enabled
|
636
|
+
* after the backdropBreakpoint value
|
637
|
+
*/
|
638
|
+
const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;
|
639
|
+
if (shouldEnableBackdrop) {
|
640
|
+
enableBackdrop();
|
641
|
+
}
|
642
|
+
else {
|
643
|
+
disableBackdrop();
|
644
|
+
}
|
645
|
+
gesture.enable(true);
|
646
|
+
});
|
647
|
+
}
|
648
|
+
else {
|
649
|
+
gesture.enable(true);
|
650
|
+
}
|
651
|
+
}
|
652
|
+
/**
|
653
|
+
* This must be a one time callback
|
654
|
+
* otherwise a new callback will
|
655
|
+
* be added every time onEnd runs.
|
656
|
+
*/
|
657
|
+
}, { oneTimeCallback: true })
|
658
|
+
.progressEnd(1, 0, 500);
|
659
|
+
if (!shouldRemainOpen) {
|
660
|
+
onDismiss();
|
661
|
+
}
|
662
|
+
};
|
663
|
+
const gesture = createGesture({
|
664
|
+
el: wrapperEl,
|
665
|
+
gestureName: 'modalSheet',
|
666
|
+
gesturePriority: 40,
|
667
|
+
direction: 'y',
|
668
|
+
threshold: 10,
|
669
|
+
canStart,
|
670
|
+
onStart,
|
671
|
+
onMove,
|
672
|
+
onEnd
|
673
|
+
});
|
674
|
+
return gesture;
|
675
|
+
};
|
676
|
+
|
677
|
+
const modalIosCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:flex;position:absolute;align-items:center;justify-content:center;outline:none;contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;margin-left:auto;margin-right:auto;position:absolute;width:36px;height:5px;transform:translateZ(0);background:var(--ion-color-step-350, #c0c0be);z-index:11}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){.modal-handle{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl]):host(.modal-card) .modal-wrapper,:host-context([dir=rtl]).modal-card .modal-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{box-shadow:none}:host(.modal-card) .modal-shadow{box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl]):host(.modal-sheet) .modal-wrapper,:host-context([dir=rtl]).modal-sheet .modal-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-radius:0}";
|
311
678
|
|
312
|
-
const modalMdCss = "
|
679
|
+
const modalMdCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:flex;position:absolute;align-items:center;justify-content:center;outline:none;contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;margin-left:auto;margin-right:auto;position:absolute;width:36px;height:5px;transform:translateZ(0);background:var(--ion-color-step-350, #c0c0be);z-index:11}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){.modal-handle{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{transform:translate3d(0, 40px, 0);opacity:0.01}";
|
313
680
|
|
314
681
|
const Modal = class {
|
315
682
|
constructor(hostRef) {
|
@@ -318,13 +685,33 @@ const Modal = class {
|
|
318
685
|
this.willPresent = createEvent(this, "ionModalWillPresent", 7);
|
319
686
|
this.willDismiss = createEvent(this, "ionModalWillDismiss", 7);
|
320
687
|
this.didDismiss = createEvent(this, "ionModalDidDismiss", 7);
|
688
|
+
this.didPresentShorthand = createEvent(this, "didPresent", 7);
|
689
|
+
this.willPresentShorthand = createEvent(this, "willPresent", 7);
|
690
|
+
this.willDismissShorthand = createEvent(this, "willDismiss", 7);
|
691
|
+
this.didDismissShorthand = createEvent(this, "didDismiss", 7);
|
692
|
+
this.modalIndex = modalIds++;
|
693
|
+
this.coreDelegate = CoreDelegate();
|
694
|
+
this.isSheetModal = false;
|
695
|
+
this.inline = false;
|
321
696
|
// Whether or not modal is being dismissed via gesture
|
322
697
|
this.gestureAnimationDismissing = false;
|
323
698
|
this.presented = false;
|
699
|
+
/** @internal */
|
700
|
+
this.hasController = false;
|
324
701
|
/**
|
325
702
|
* If `true`, the keyboard will be automatically dismissed when the overlay is presented.
|
326
703
|
*/
|
327
704
|
this.keyboardClose = true;
|
705
|
+
/**
|
706
|
+
* A decimal value between 0 and 1 that indicates the
|
707
|
+
* point after which the backdrop will begin to fade in
|
708
|
+
* when using a sheet modal. Prior to this point, the
|
709
|
+
* backdrop will be hidden and the content underneath
|
710
|
+
* the sheet can be interacted with. This value is exclusive
|
711
|
+
* meaning the backdrop will become active after the value
|
712
|
+
* specified.
|
713
|
+
*/
|
714
|
+
this.backdropBreakpoint = 0;
|
328
715
|
/**
|
329
716
|
* If `true`, the modal will be dismissed when the backdrop is clicked.
|
330
717
|
*/
|
@@ -341,6 +728,34 @@ const Modal = class {
|
|
341
728
|
* If `true`, the modal can be swiped to dismiss. Only applies in iOS mode.
|
342
729
|
*/
|
343
730
|
this.swipeToClose = false;
|
731
|
+
/**
|
732
|
+
* If `true`, the modal will open. If `false`, the modal will close.
|
733
|
+
* Use this if you need finer grained control over presentation, otherwise
|
734
|
+
* just use the modalController or the `trigger` property.
|
735
|
+
* Note: `isOpen` will not automatically be set back to `false` when
|
736
|
+
* the modal dismisses. You will need to do that in your code.
|
737
|
+
*/
|
738
|
+
this.isOpen = false;
|
739
|
+
this.configureTriggerInteraction = () => {
|
740
|
+
const { trigger, el, destroyTriggerInteraction } = this;
|
741
|
+
if (destroyTriggerInteraction) {
|
742
|
+
destroyTriggerInteraction();
|
743
|
+
}
|
744
|
+
const triggerEl = (trigger !== undefined) ? document.getElementById(trigger) : null;
|
745
|
+
if (!triggerEl) {
|
746
|
+
return;
|
747
|
+
}
|
748
|
+
const configureTriggerInteraction = (trigEl, modalEl) => {
|
749
|
+
const openModal = () => {
|
750
|
+
modalEl.present();
|
751
|
+
};
|
752
|
+
trigEl.addEventListener('click', openModal);
|
753
|
+
return () => {
|
754
|
+
trigEl.removeEventListener('click', openModal);
|
755
|
+
};
|
756
|
+
};
|
757
|
+
this.destroyTriggerInteraction = configureTriggerInteraction(triggerEl, el);
|
758
|
+
};
|
344
759
|
this.onBackdropTap = () => {
|
345
760
|
this.dismiss(undefined, BACKDROP);
|
346
761
|
};
|
@@ -362,6 +777,17 @@ const Modal = class {
|
|
362
777
|
}
|
363
778
|
};
|
364
779
|
}
|
780
|
+
onIsOpenChange(newValue, oldValue) {
|
781
|
+
if (newValue === true && oldValue === false) {
|
782
|
+
this.present();
|
783
|
+
}
|
784
|
+
else if (newValue === false && oldValue === true) {
|
785
|
+
this.dismiss();
|
786
|
+
}
|
787
|
+
}
|
788
|
+
onTriggerChange() {
|
789
|
+
this.configureTriggerInteraction();
|
790
|
+
}
|
365
791
|
swipeToCloseChanged(enable) {
|
366
792
|
if (this.gesture) {
|
367
793
|
this.gesture.enable(enable);
|
@@ -373,6 +799,58 @@ const Modal = class {
|
|
373
799
|
connectedCallback() {
|
374
800
|
prepareOverlay(this.el);
|
375
801
|
}
|
802
|
+
componentWillLoad() {
|
803
|
+
const { breakpoints, initialBreakpoint } = this;
|
804
|
+
/**
|
805
|
+
* If user has custom ID set then we should
|
806
|
+
* not assign the default incrementing ID.
|
807
|
+
*/
|
808
|
+
this.modalId = (this.el.hasAttribute('id')) ? this.el.getAttribute('id') : `ion-modal-${this.modalIndex}`;
|
809
|
+
this.isSheetModal = breakpoints !== undefined && initialBreakpoint !== undefined;
|
810
|
+
if (breakpoints !== undefined && initialBreakpoint !== undefined && !breakpoints.includes(initialBreakpoint)) {
|
811
|
+
console.warn('[Ionic Warning]: Your breakpoints array must include the initialBreakpoint value.');
|
812
|
+
}
|
813
|
+
}
|
814
|
+
componentDidLoad() {
|
815
|
+
/**
|
816
|
+
* If modal was rendered with isOpen="true"
|
817
|
+
* then we should open modal immediately.
|
818
|
+
*/
|
819
|
+
if (this.isOpen === true) {
|
820
|
+
raf(() => this.present());
|
821
|
+
}
|
822
|
+
this.configureTriggerInteraction();
|
823
|
+
}
|
824
|
+
/**
|
825
|
+
* Determines whether or not an overlay
|
826
|
+
* is being used inline or via a controller/JS
|
827
|
+
* and returns the correct delegate.
|
828
|
+
* By default, subsequent calls to getDelegate
|
829
|
+
* will use a cached version of the delegate.
|
830
|
+
* This is useful for calling dismiss after
|
831
|
+
* present so that the correct delegate is given.
|
832
|
+
*/
|
833
|
+
getDelegate(force = false) {
|
834
|
+
if (this.workingDelegate && !force) {
|
835
|
+
return {
|
836
|
+
delegate: this.workingDelegate,
|
837
|
+
inline: this.inline
|
838
|
+
};
|
839
|
+
}
|
840
|
+
/**
|
841
|
+
* If using overlay inline
|
842
|
+
* we potentially need to use the coreDelegate
|
843
|
+
* so that this works in vanilla JS apps.
|
844
|
+
* If a developer has presented this component
|
845
|
+
* via a controller, then we can assume
|
846
|
+
* the component is already in the
|
847
|
+
* correct place.
|
848
|
+
*/
|
849
|
+
const parentEl = this.el.parentNode;
|
850
|
+
const inline = this.inline = parentEl !== null && !this.hasController;
|
851
|
+
const delegate = this.workingDelegate = (inline) ? this.delegate || this.coreDelegate : this.delegate;
|
852
|
+
return { inline, delegate };
|
853
|
+
}
|
376
854
|
/**
|
377
855
|
* Present the modal overlay after it has been created.
|
378
856
|
*/
|
@@ -380,18 +858,54 @@ const Modal = class {
|
|
380
858
|
if (this.presented) {
|
381
859
|
return;
|
382
860
|
}
|
383
|
-
|
384
|
-
|
385
|
-
|
861
|
+
/**
|
862
|
+
* When using an inline modal
|
863
|
+
* and dismissing a modal it is possible to
|
864
|
+
* quickly present the modal while it is
|
865
|
+
* dismissing. We need to await any current
|
866
|
+
* transition to allow the dismiss to finish
|
867
|
+
* before presenting again.
|
868
|
+
*/
|
869
|
+
if (this.currentTransition !== undefined) {
|
870
|
+
await this.currentTransition;
|
386
871
|
}
|
387
|
-
const
|
388
|
-
|
872
|
+
const data = Object.assign(Object.assign({}, this.componentProps), { modal: this.el });
|
873
|
+
const { inline, delegate } = this.getDelegate(true);
|
874
|
+
this.usersElement = await attachComponent(delegate, this.el, this.component, ['ion-page'], data, inline);
|
389
875
|
await deepReady(this.usersElement);
|
390
876
|
writeTask(() => this.el.classList.add('show-modal'));
|
391
|
-
|
392
|
-
|
877
|
+
this.currentTransition = present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, { presentingEl: this.presentingElement, currentBreakpoint: this.initialBreakpoint, backdropBreakpoint: this.backdropBreakpoint });
|
878
|
+
await this.currentTransition;
|
879
|
+
if (this.isSheetModal) {
|
880
|
+
this.initSheetGesture();
|
881
|
+
}
|
882
|
+
else if (this.swipeToClose) {
|
393
883
|
this.initSwipeToClose();
|
394
884
|
}
|
885
|
+
/* tslint:disable-next-line */
|
886
|
+
if (typeof window !== 'undefined') {
|
887
|
+
this.keyboardOpenCallback = () => {
|
888
|
+
if (this.gesture) {
|
889
|
+
/**
|
890
|
+
* When the native keyboard is opened and the webview
|
891
|
+
* is resized, the gesture implementation will become unresponsive
|
892
|
+
* and enter a free-scroll mode.
|
893
|
+
*
|
894
|
+
* When the keyboard is opened, we disable the gesture for
|
895
|
+
* a single frame and re-enable once the contents have repositioned
|
896
|
+
* from the keyboard placement.
|
897
|
+
*/
|
898
|
+
this.gesture.enable(false);
|
899
|
+
raf(() => {
|
900
|
+
if (this.gesture) {
|
901
|
+
this.gesture.enable(true);
|
902
|
+
}
|
903
|
+
});
|
904
|
+
}
|
905
|
+
};
|
906
|
+
window.addEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
|
907
|
+
}
|
908
|
+
this.currentTransition = undefined;
|
395
909
|
}
|
396
910
|
initSwipeToClose() {
|
397
911
|
if (getIonMode(this) !== 'ios') {
|
@@ -401,7 +915,7 @@ const Modal = class {
|
|
401
915
|
// should be in the DOM and referenced by now, except
|
402
916
|
// for the presenting el
|
403
917
|
const animationBuilder = this.leaveAnimation || config.get('modalLeave', iosLeaveAnimation);
|
404
|
-
const ani = this.animation = animationBuilder(this.el, this.presentingElement);
|
918
|
+
const ani = this.animation = animationBuilder(this.el, { presentingEl: this.presentingElement });
|
405
919
|
this.gesture = createSwipeToCloseGesture(this.el, ani, () => {
|
406
920
|
/**
|
407
921
|
* While the gesture animation is finishing
|
@@ -421,6 +935,37 @@ const Modal = class {
|
|
421
935
|
});
|
422
936
|
this.gesture.enable(true);
|
423
937
|
}
|
938
|
+
initSheetGesture() {
|
939
|
+
var _a;
|
940
|
+
const { wrapperEl, initialBreakpoint, backdropBreakpoint } = this;
|
941
|
+
if (!wrapperEl || initialBreakpoint === undefined) {
|
942
|
+
return;
|
943
|
+
}
|
944
|
+
const animationBuilder = this.enterAnimation || config.get('modalEnter', iosEnterAnimation);
|
945
|
+
const ani = this.animation = animationBuilder(this.el, { presentingEl: this.presentingElement, currentBreakpoint: initialBreakpoint, backdropBreakpoint });
|
946
|
+
ani.progressStart(true, 1);
|
947
|
+
const sortedBreakpoints = ((_a = this.breakpoints) === null || _a === void 0 ? void 0 : _a.sort((a, b) => a - b)) || [];
|
948
|
+
this.gesture = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, sortedBreakpoints, () => {
|
949
|
+
/**
|
950
|
+
* While the gesture animation is finishing
|
951
|
+
* it is possible for a user to tap the backdrop.
|
952
|
+
* This would result in the dismiss animation
|
953
|
+
* being played again. Typically this is avoided
|
954
|
+
* by setting `presented = false` on the overlay
|
955
|
+
* component; however, we cannot do that here as
|
956
|
+
* that would prevent the element from being
|
957
|
+
* removed from the DOM.
|
958
|
+
*/
|
959
|
+
this.gestureAnimationDismissing = true;
|
960
|
+
this.animation.onFinish(async () => {
|
961
|
+
await this.dismiss(undefined, 'gesture');
|
962
|
+
this.gestureAnimationDismissing = false;
|
963
|
+
});
|
964
|
+
}, (breakpoint) => {
|
965
|
+
this.currentBreakpoint = breakpoint;
|
966
|
+
});
|
967
|
+
this.gesture.enable(true);
|
968
|
+
}
|
424
969
|
/**
|
425
970
|
* Dismiss the modal overlay after it has been presented.
|
426
971
|
*
|
@@ -431,15 +976,37 @@ const Modal = class {
|
|
431
976
|
if (this.gestureAnimationDismissing && role !== 'gesture') {
|
432
977
|
return false;
|
433
978
|
}
|
979
|
+
/* tslint:disable-next-line */
|
980
|
+
if (typeof window !== 'undefined' && this.keyboardOpenCallback) {
|
981
|
+
window.removeEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
|
982
|
+
}
|
983
|
+
/**
|
984
|
+
* When using an inline modal
|
985
|
+
* and presenting a modal it is possible to
|
986
|
+
* quickly dismiss the modal while it is
|
987
|
+
* presenting. We need to await any current
|
988
|
+
* transition to allow the present to finish
|
989
|
+
* before dismissing again.
|
990
|
+
*/
|
991
|
+
if (this.currentTransition !== undefined) {
|
992
|
+
await this.currentTransition;
|
993
|
+
}
|
434
994
|
const enteringAnimation = activeAnimations.get(this) || [];
|
435
|
-
|
995
|
+
this.currentTransition = dismiss(this, data, role, 'modalLeave', iosLeaveAnimation, mdLeaveAnimation, { presentingEl: this.presentingElement, currentBreakpoint: this.currentBreakpoint || this.initialBreakpoint, backdropBreakpoint: this.backdropBreakpoint });
|
996
|
+
const dismissed = await this.currentTransition;
|
436
997
|
if (dismissed) {
|
437
|
-
|
998
|
+
const { delegate } = this.getDelegate();
|
999
|
+
await detachComponent(delegate, this.usersElement);
|
1000
|
+
writeTask(() => this.el.classList.remove('show-modal'));
|
438
1001
|
if (this.animation) {
|
439
1002
|
this.animation.destroy();
|
440
1003
|
}
|
1004
|
+
if (this.gesture) {
|
1005
|
+
this.gesture.destroy();
|
1006
|
+
}
|
441
1007
|
enteringAnimation.forEach(ani => ani.destroy());
|
442
1008
|
}
|
1009
|
+
this.currentTransition = undefined;
|
443
1010
|
this.animation = undefined;
|
444
1011
|
return dismissed;
|
445
1012
|
}
|
@@ -456,13 +1023,19 @@ const Modal = class {
|
|
456
1023
|
return eventMethod(this.el, 'ionModalWillDismiss');
|
457
1024
|
}
|
458
1025
|
render() {
|
1026
|
+
const { handle, isSheetModal, presentingElement, htmlAttributes } = this;
|
1027
|
+
const showHandle = handle !== false && isSheetModal;
|
459
1028
|
const mode = getIonMode(this);
|
460
|
-
|
1029
|
+
const { modalId } = this;
|
1030
|
+
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
1031
|
+
return (h(Host, Object.assign({ "no-router": true, "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
|
461
1032
|
zIndex: `${20000 + this.overlayIndex}`,
|
462
|
-
}, onIonBackdropTap: this.onBackdropTap, onIonDismiss: this.onDismiss, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }, h("ion-backdrop", { visible: this.showBackdrop, tappable: this.backdropDismiss }), mode === 'ios' && h("div", { class: "modal-shadow" }), h("div", {
|
1033
|
+
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, 'overlay-hidden': true }, getClassMap(this.cssClass)), id: modalId, onIonBackdropTap: this.onBackdropTap, onIonDismiss: this.onDismiss, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), h("ion-backdrop", { ref: el => this.backdropEl = el, visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { class: "modal-shadow" }), h("div", { role: "dialog", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: el => this.wrapperEl = el }, showHandle && h("div", { class: "modal-handle", part: "handle" }), h("slot", null))));
|
463
1034
|
}
|
464
1035
|
get el() { return getElement(this); }
|
465
1036
|
static get watchers() { return {
|
1037
|
+
"isOpen": ["onIsOpenChange"],
|
1038
|
+
"trigger": ["onTriggerChange"],
|
466
1039
|
"swipeToClose": ["swipeToCloseChanged"]
|
467
1040
|
}; }
|
468
1041
|
};
|
@@ -472,6 +1045,7 @@ const LIFECYCLE_MAP = {
|
|
472
1045
|
'ionModalWillDismiss': 'ionViewWillLeave',
|
473
1046
|
'ionModalDidDismiss': 'ionViewDidLeave',
|
474
1047
|
};
|
1048
|
+
let modalIds = 0;
|
475
1049
|
Modal.style = {
|
476
1050
|
ios: modalIosCss,
|
477
1051
|
md: modalMdCss
|