@ionic/core 8.4.4-dev.11738863153.1dafb0b9 → 8.4.4-nightly.20250131
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/checkbox.js +4 -6
- package/components/content.js +4 -4
- package/components/index6.js +3 -11
- package/components/ion-select.js +4 -6
- package/components/ion-tab-button.js +1 -1
- package/components/ion-tab.js +2 -2
- package/components/ion-tabs.js +1 -2
- package/components/ion-toggle.js +4 -6
- package/components/modal.js +35 -259
- package/components/toolbar.js +2 -2
- package/css/core.css.map +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/dist/cjs/{data-108e531d.js → data-21dc0f81.js} +1 -1
- package/dist/cjs/{index-2a46a047.js → index-5915f9b3.js} +3 -11
- package/dist/cjs/{index-0d762bba.js → index-5b6a7459.js} +1 -1
- package/dist/cjs/{index-3652c918.js → index-8e789962.js} +1 -1
- package/dist/cjs/{index-e975c92b.js → index-f05acd21.js} +3 -3
- package/dist/cjs/index.cjs.js +6 -6
- package/dist/cjs/{input-shims-cd05268a.js → input-shims-9e59ef62.js} +2 -4
- package/dist/cjs/{input.utils-ffb2f81b.js → input.utils-611cde0b.js} +1 -1
- package/dist/cjs/ion-accordion_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-action-sheet.cjs.entry.js +2 -2
- package/dist/cjs/ion-alert.cjs.entry.js +2 -2
- package/dist/cjs/ion-app_8.cjs.entry.js +11 -11
- package/dist/cjs/ion-button_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-checkbox.cjs.entry.js +4 -5
- package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +1 -1
- package/dist/cjs/ion-input.cjs.entry.js +2 -2
- package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-loading.cjs.entry.js +2 -2
- package/dist/cjs/ion-menu_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-modal.cjs.entry.js +39 -262
- package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-popover.cjs.entry.js +3 -3
- package/dist/cjs/ion-range.cjs.entry.js +2 -2
- package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-select-modal.cjs.entry.js +2 -2
- package/dist/cjs/ion-select_3.cjs.entry.js +6 -7
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-tab_2.cjs.entry.js +3 -4
- package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
- package/dist/cjs/ion-toast.cjs.entry.js +2 -2
- package/dist/cjs/ion-toggle.cjs.entry.js +4 -5
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/{ios.transition-0e664e88.js → ios.transition-cf40433b.js} +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{md.transition-2e8aef2c.js → md.transition-ededf99f.js} +2 -2
- package/dist/cjs/{overlays-65fdaff6.js → overlays-aa669eb8.js} +1 -1
- package/dist/cjs/{status-tap-d74f1429.js → status-tap-37681226.js} +2 -3
- package/dist/collection/components/checkbox/checkbox.js +4 -23
- package/dist/collection/components/content/content.js +4 -4
- package/dist/collection/components/modal/animations/ios.enter.js +4 -50
- package/dist/collection/components/modal/animations/ios.leave.js +2 -24
- package/dist/collection/components/modal/animations/md.enter.js +5 -52
- package/dist/collection/components/modal/animations/md.leave.js +3 -26
- package/dist/collection/components/modal/animations/sheet.js +2 -11
- package/dist/collection/components/modal/gestures/sheet.js +10 -79
- package/dist/collection/components/modal/modal.ios.css +0 -16
- package/dist/collection/components/modal/modal.js +7 -32
- package/dist/collection/components/modal/modal.md.css +0 -6
- package/dist/collection/components/select/select.js +4 -23
- package/dist/collection/components/tab/tab.js +2 -2
- package/dist/collection/components/tab-button/tab-button.js +1 -1
- package/dist/collection/components/tabs/tabs.js +1 -2
- package/dist/collection/components/toggle/toggle.js +4 -23
- package/dist/collection/components/toolbar/toolbar.js +2 -6
- package/dist/collection/utils/logging/index.js +3 -10
- package/dist/docs.json +2 -115
- package/dist/esm/{data-b3284b5e.js → data-ae11fd43.js} +1 -1
- package/dist/esm/{index-cb21eccb.js → index-24b48b06.js} +1 -1
- package/dist/esm/{index-2f7fde3d.js → index-3ad7f18b.js} +3 -3
- package/dist/esm/{index-efb8ecdf.js → index-5cc724f3.js} +1 -1
- package/dist/esm/{index-6ad967f3.js → index-9b0d46f4.js} +3 -11
- package/dist/esm/index.js +6 -6
- package/dist/esm/{input-shims-2fd7c6ef.js → input-shims-0314bbe5.js} +2 -4
- package/dist/esm/{input.utils-961c9f17.js → input.utils-09c71bc7.js} +1 -1
- package/dist/esm/ion-accordion_2.entry.js +1 -1
- package/dist/esm/ion-action-sheet.entry.js +2 -2
- package/dist/esm/ion-alert.entry.js +2 -2
- package/dist/esm/ion-app_8.entry.js +11 -11
- package/dist/esm/ion-button_2.entry.js +1 -1
- package/dist/esm/ion-checkbox.entry.js +4 -5
- package/dist/esm/ion-datetime-button.entry.js +2 -2
- package/dist/esm/ion-datetime_3.entry.js +3 -3
- package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
- package/dist/esm/ion-input-password-toggle.entry.js +1 -1
- package/dist/esm/ion-input.entry.js +2 -2
- package/dist/esm/ion-item-option_3.entry.js +2 -2
- package/dist/esm/ion-loading.entry.js +2 -2
- package/dist/esm/ion-menu_3.entry.js +3 -3
- package/dist/esm/ion-modal.entry.js +39 -262
- package/dist/esm/ion-nav_2.entry.js +2 -2
- package/dist/esm/ion-popover.entry.js +3 -3
- package/dist/esm/ion-range.entry.js +2 -2
- package/dist/esm/ion-refresher_2.entry.js +2 -2
- package/dist/esm/ion-reorder_2.entry.js +2 -2
- package/dist/esm/ion-select-modal.entry.js +2 -2
- package/dist/esm/ion-select_3.entry.js +6 -7
- package/dist/esm/ion-tab-bar_2.entry.js +1 -1
- package/dist/esm/ion-tab_2.entry.js +3 -4
- package/dist/esm/ion-textarea.entry.js +2 -2
- package/dist/esm/ion-toast.entry.js +2 -2
- package/dist/esm/ion-toggle.entry.js +4 -5
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/{ios.transition-b1da3753.js → ios.transition-4ee1a3af.js} +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{md.transition-571b3859.js → md.transition-5106a0d2.js} +2 -2
- package/dist/esm/{overlays-5deab4de.js → overlays-e7b9d6d9.js} +1 -1
- package/dist/esm/{status-tap-79eac0ac.js → status-tap-f472b09f.js} +2 -3
- package/dist/esm-es5/{data-b3284b5e.js → data-ae11fd43.js} +1 -1
- package/dist/esm-es5/{index-cb21eccb.js → index-24b48b06.js} +1 -1
- package/dist/esm-es5/{index-2f7fde3d.js → index-3ad7f18b.js} +1 -1
- package/dist/esm-es5/{index-efb8ecdf.js → index-5cc724f3.js} +1 -1
- package/dist/esm-es5/index-9b0d46f4.js +4 -0
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/input-shims-0314bbe5.js +4 -0
- package/dist/esm-es5/{input.utils-961c9f17.js → input.utils-09c71bc7.js} +1 -1
- package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
- package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
- package/dist/esm-es5/ion-alert.entry.js +1 -1
- package/dist/esm-es5/ion-app_8.entry.js +1 -1
- package/dist/esm-es5/ion-button_2.entry.js +1 -1
- package/dist/esm-es5/ion-checkbox.entry.js +1 -1
- package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
- package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
- package/dist/esm-es5/ion-input-password-toggle.entry.js +1 -1
- package/dist/esm-es5/ion-input.entry.js +1 -1
- package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
- package/dist/esm-es5/ion-loading.entry.js +1 -1
- package/dist/esm-es5/ion-menu_3.entry.js +1 -1
- package/dist/esm-es5/ion-modal.entry.js +1 -1
- package/dist/esm-es5/ion-nav_2.entry.js +1 -1
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-range.entry.js +1 -1
- package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
- package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
- package/dist/esm-es5/ion-select-modal.entry.js +1 -1
- package/dist/esm-es5/ion-select_3.entry.js +1 -1
- package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
- package/dist/esm-es5/ion-tab_2.entry.js +1 -1
- package/dist/esm-es5/ion-textarea.entry.js +1 -1
- package/dist/esm-es5/ion-toast.entry.js +1 -1
- package/dist/esm-es5/ion-toggle.entry.js +1 -1
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/{ios.transition-b1da3753.js → ios.transition-4ee1a3af.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/{md.transition-571b3859.js → md.transition-5106a0d2.js} +1 -1
- package/dist/esm-es5/{overlays-5deab4de.js → overlays-e7b9d6d9.js} +1 -1
- package/dist/esm-es5/status-tap-f472b09f.js +4 -0
- package/dist/html.html-data.json +0 -16
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-0303d0f8.js +4 -0
- package/dist/ionic/{p-9343a445.js → p-06e58c4e.js} +1 -1
- package/dist/ionic/p-06fee233.js +4 -0
- package/dist/ionic/{p-ada36597.system.js → p-0aa833fb.system.js} +1 -1
- package/dist/ionic/{p-0eb35a7f.system.js → p-0c06e09b.system.js} +1 -1
- package/dist/ionic/{p-cba1f9bc.system.entry.js → p-1046866e.system.entry.js} +1 -1
- package/dist/ionic/{p-6dfb0f39.system.entry.js → p-12a722b8.system.entry.js} +1 -1
- package/dist/ionic/{p-a4a2420e.system.entry.js → p-14e159ea.system.entry.js} +1 -1
- package/dist/ionic/p-17474161.system.js +4 -0
- package/dist/ionic/p-19a5be0a.entry.js +4 -0
- package/dist/ionic/{p-fceec762.entry.js → p-19ec4f42.entry.js} +1 -1
- package/dist/ionic/{p-e09d6392.system.entry.js → p-1e010627.system.entry.js} +2 -2
- package/dist/ionic/{p-f1120724.system.entry.js → p-1fe02220.system.entry.js} +1 -1
- package/dist/ionic/p-2172893e.system.entry.js +4 -0
- package/dist/ionic/{p-0af823e1.js → p-21e5e7e4.js} +1 -1
- package/dist/ionic/p-2690b1de.js +4 -0
- package/dist/ionic/{p-9b122e3c.system.entry.js → p-2799c6d3.system.entry.js} +1 -1
- package/dist/ionic/p-2b9b78c7.entry.js +4 -0
- package/dist/ionic/{p-d6eaffb1.system.entry.js → p-2bd0ae94.system.entry.js} +1 -1
- package/dist/ionic/{p-8694928f.entry.js → p-2fc0dafe.entry.js} +1 -1
- package/dist/ionic/p-322c5fb4.system.js +1 -1
- package/dist/ionic/{p-6933c482.system.entry.js → p-32d44024.system.entry.js} +1 -1
- package/dist/ionic/{p-248318e0.system.entry.js → p-37cb43bd.system.entry.js} +1 -1
- package/dist/ionic/{p-9b428d25.entry.js → p-4439fc2a.entry.js} +1 -1
- package/dist/ionic/{p-948e6c6a.entry.js → p-45693d7e.entry.js} +1 -1
- package/dist/ionic/p-4ec778aa.entry.js +4 -0
- package/dist/ionic/{p-7a02f476.entry.js → p-508d024a.entry.js} +1 -1
- package/dist/ionic/{p-74e3f0af.system.entry.js → p-5823babc.system.entry.js} +2 -2
- package/dist/ionic/p-5ab1b709.entry.js +4 -0
- package/dist/ionic/{p-d22e2a38.system.js → p-5da94421.system.js} +1 -1
- package/dist/ionic/{p-f1060cd8.entry.js → p-61e3f887.entry.js} +1 -1
- package/dist/ionic/{p-05b74e45.system.entry.js → p-6499df44.system.entry.js} +1 -1
- package/dist/ionic/{p-585b455c.system.entry.js → p-66640ff7.system.entry.js} +1 -1
- package/dist/ionic/{p-8ac07653.system.entry.js → p-69666e8a.system.entry.js} +2 -2
- package/dist/ionic/{p-2da9c8a7.entry.js → p-6b280620.entry.js} +1 -1
- package/dist/ionic/{p-1199e388.system.entry.js → p-797eeea8.system.entry.js} +1 -1
- package/dist/ionic/{p-f1c4dcd4.js → p-88e63c7d.js} +1 -1
- package/dist/ionic/p-8b8be2fd.entry.js +4 -0
- package/dist/ionic/p-908d6080.entry.js +4 -0
- package/dist/ionic/{p-a8f2c254.entry.js → p-942b5e13.entry.js} +1 -1
- package/dist/ionic/{p-1ab13b2b.js → p-96cc4814.js} +1 -1
- package/dist/ionic/{p-f63c2d12.entry.js → p-982315a6.entry.js} +1 -1
- package/dist/ionic/p-98ff6b32.entry.js +4 -0
- package/dist/ionic/{p-61db139d.entry.js → p-9e33104d.entry.js} +1 -1
- package/dist/ionic/{p-a88dec0d.system.js → p-9ea607bd.system.js} +2 -2
- package/dist/ionic/{p-5c9eb9af.entry.js → p-9ee1e8a6.entry.js} +1 -1
- package/dist/ionic/{p-b1eb86fd.entry.js → p-9fa07aec.entry.js} +1 -1
- package/dist/ionic/{p-e76dae93.entry.js → p-a43467d8.entry.js} +1 -1
- package/dist/ionic/{p-b3c60433.system.js → p-a4565eb5.system.js} +1 -1
- package/dist/ionic/{p-ab674093.system.entry.js → p-a49378bb.system.entry.js} +1 -1
- package/dist/ionic/{p-92763d3d.entry.js → p-a61cba41.entry.js} +1 -1
- package/dist/ionic/{p-9f364443.system.entry.js → p-b2272f51.system.entry.js} +1 -1
- package/dist/ionic/{p-302b50bb.system.entry.js → p-b335ffed.system.entry.js} +1 -1
- package/dist/ionic/{p-eef505e8.entry.js → p-b79ba17c.entry.js} +1 -1
- package/dist/ionic/{p-cb13696c.js → p-b82d4cab.js} +1 -1
- package/dist/ionic/{p-744c8672.system.entry.js → p-bc36ad98.system.entry.js} +1 -1
- package/dist/ionic/{p-8cfba7e9.system.entry.js → p-c29f8157.system.entry.js} +1 -1
- package/dist/ionic/{p-5c08627a.system.js → p-c449820c.system.js} +1 -1
- package/dist/ionic/{p-120fb79a.entry.js → p-c9f3a539.entry.js} +1 -1
- package/dist/ionic/{p-a090bce8.system.entry.js → p-ca065903.system.entry.js} +1 -1
- package/dist/ionic/{p-933727f9.system.entry.js → p-d18ab582.system.entry.js} +1 -1
- package/dist/ionic/{p-1a5bc5f7.js → p-d60342e3.js} +1 -1
- package/dist/ionic/{p-b6efeab8.js → p-d6841eac.js} +1 -1
- package/dist/ionic/{p-89bf08c7.entry.js → p-da074ff7.entry.js} +1 -1
- package/dist/ionic/p-ddaa748a.system.entry.js +4 -0
- package/dist/ionic/p-dfb78785.system.js +4 -0
- package/dist/ionic/{p-fbd41a7e.system.entry.js → p-e4f69534.system.entry.js} +1 -1
- package/dist/ionic/{p-15d18206.entry.js → p-e563a35c.entry.js} +1 -1
- package/dist/ionic/{p-28706c6f.js → p-e6635685.js} +1 -1
- package/dist/ionic/{p-7de1e42c.system.js → p-e7ed4a7f.system.js} +1 -1
- package/dist/ionic/p-e85d901b.system.entry.js +4 -0
- package/dist/ionic/p-eba29931.entry.js +4 -0
- package/dist/ionic/{p-bdf2cb2e.system.entry.js → p-ebf042e0.system.entry.js} +1 -1
- package/dist/ionic/{p-7a6eaf9e.entry.js → p-efaffe74.entry.js} +1 -1
- package/dist/ionic/{p-2346ab53.system.entry.js → p-f1acf541.system.entry.js} +1 -1
- package/dist/ionic/{p-343b6b1d.system.js → p-f687573e.system.js} +1 -1
- package/dist/ionic/{p-c4238c12.system.js → p-f9a53abb.system.js} +1 -1
- package/dist/ionic/p-ff4b7e40.system.js +4 -0
- package/dist/types/components/checkbox/checkbox.d.ts +0 -6
- package/dist/types/components/modal/animations/sheet.d.ts +0 -1
- package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
- package/dist/types/components/modal/modal-interface.d.ts +0 -1
- package/dist/types/components/modal/modal.d.ts +0 -11
- package/dist/types/components/select/select.d.ts +0 -6
- package/dist/types/components/toggle/toggle.d.ts +0 -6
- package/dist/types/components/toolbar/toolbar.d.ts +0 -4
- package/dist/types/components.d.ts +0 -32
- package/dist/types/utils/config.d.ts +0 -9
- package/dist/types/utils/logging/index.d.ts +1 -13
- package/hydrate/index.js +60 -301
- package/hydrate/index.mjs +60 -301
- package/package.json +1 -1
- package/dist/esm-es5/index-6ad967f3.js +0 -4
- package/dist/esm-es5/input-shims-2fd7c6ef.js +0 -4
- package/dist/esm-es5/status-tap-79eac0ac.js +0 -4
- package/dist/ionic/p-0430c2e0.entry.js +0 -4
- package/dist/ionic/p-126be614.system.entry.js +0 -4
- package/dist/ionic/p-4c98e2cf.system.js +0 -4
- package/dist/ionic/p-577bc414.entry.js +0 -4
- package/dist/ionic/p-67222c16.system.js +0 -4
- package/dist/ionic/p-6c95736e.entry.js +0 -4
- package/dist/ionic/p-722ec9c7.entry.js +0 -4
- package/dist/ionic/p-7513b0c4.js +0 -4
- package/dist/ionic/p-783411f1.entry.js +0 -4
- package/dist/ionic/p-98e41e4f.system.entry.js +0 -4
- package/dist/ionic/p-a3db8ee3.js +0 -4
- package/dist/ionic/p-d1c5b60e.system.js +0 -4
- package/dist/ionic/p-d57a57d6.entry.js +0 -4
- package/dist/ionic/p-d7dd8fb1.entry.js +0 -4
- package/dist/ionic/p-e3171ff3.entry.js +0 -4
- package/dist/ionic/p-e6376b93.system.entry.js +0 -4
- package/dist/ionic/p-e8d56122.js +0 -4
package/components/modal.js
CHANGED
|
@@ -500,7 +500,7 @@ const computeDuration = (remaining, velocity) => {
|
|
|
500
500
|
};
|
|
501
501
|
|
|
502
502
|
const createSheetEnterAnimation = (opts) => {
|
|
503
|
-
const { currentBreakpoint, backdropBreakpoint
|
|
503
|
+
const { currentBreakpoint, backdropBreakpoint } = opts;
|
|
504
504
|
/**
|
|
505
505
|
* If the backdropBreakpoint is undefined, then the backdrop
|
|
506
506
|
* should always fade in. If the backdropBreakpoint came before the
|
|
@@ -520,16 +520,7 @@ const createSheetEnterAnimation = (opts) => {
|
|
|
520
520
|
{ offset: 0, opacity: 1, transform: 'translateY(100%)' },
|
|
521
521
|
{ offset: 1, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },
|
|
522
522
|
]);
|
|
523
|
-
|
|
524
|
-
* This allows the content to be scrollable at any breakpoint.
|
|
525
|
-
*/
|
|
526
|
-
const contentAnimation = !expandToScroll
|
|
527
|
-
? createAnimation('contentAnimation').keyframes([
|
|
528
|
-
{ offset: 0, opacity: 1, maxHeight: `${(1 - currentBreakpoint) * 100}%` },
|
|
529
|
-
{ offset: 1, opacity: 1, maxHeight: `${currentBreakpoint * 100}%` },
|
|
530
|
-
])
|
|
531
|
-
: undefined;
|
|
532
|
-
return { wrapperAnimation, backdropAnimation, contentAnimation };
|
|
523
|
+
return { wrapperAnimation, backdropAnimation };
|
|
533
524
|
};
|
|
534
525
|
const createSheetLeaveAnimation = (opts) => {
|
|
535
526
|
const { currentBreakpoint, backdropBreakpoint } = opts;
|
|
@@ -564,68 +555,22 @@ const createEnterAnimation$1 = () => {
|
|
|
564
555
|
})
|
|
565
556
|
.afterClearStyles(['pointer-events']);
|
|
566
557
|
const wrapperAnimation = createAnimation().fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');
|
|
567
|
-
return { backdropAnimation, wrapperAnimation
|
|
558
|
+
return { backdropAnimation, wrapperAnimation };
|
|
568
559
|
};
|
|
569
560
|
/**
|
|
570
561
|
* iOS Modal Enter Animation for the Card presentation style
|
|
571
562
|
*/
|
|
572
563
|
const iosEnterAnimation = (baseEl, opts) => {
|
|
573
|
-
const { presentingEl, currentBreakpoint
|
|
564
|
+
const { presentingEl, currentBreakpoint } = opts;
|
|
574
565
|
const root = getElementRoot(baseEl);
|
|
575
|
-
const { wrapperAnimation, backdropAnimation
|
|
566
|
+
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
|
|
576
567
|
backdropAnimation.addElement(root.querySelector('ion-backdrop'));
|
|
577
568
|
wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')).beforeStyles({ opacity: 1 });
|
|
578
|
-
// The content animation is only added if scrolling is enabled for
|
|
579
|
-
// all the breakpoints.
|
|
580
|
-
!expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
|
|
581
569
|
const baseAnimation = createAnimation('entering-base')
|
|
582
570
|
.addElement(baseEl)
|
|
583
571
|
.easing('cubic-bezier(0.32,0.72,0,1)')
|
|
584
572
|
.duration(500)
|
|
585
|
-
.addAnimation(
|
|
586
|
-
.beforeAddWrite(() => {
|
|
587
|
-
if (expandToScroll) {
|
|
588
|
-
// Scroll can only be done when the modal is fully expanded.
|
|
589
|
-
return;
|
|
590
|
-
}
|
|
591
|
-
/**
|
|
592
|
-
* There are some browsers that causes flickering when
|
|
593
|
-
* dragging the content when scroll is enabled at every
|
|
594
|
-
* breakpoint. This is due to the wrapper element being
|
|
595
|
-
* transformed off the screen and having a snap animation.
|
|
596
|
-
*
|
|
597
|
-
* A workaround is to clone the footer element and append
|
|
598
|
-
* it outside of the wrapper element. This way, the footer
|
|
599
|
-
* is still visible and the drag can be done without
|
|
600
|
-
* flickering. The original footer is hidden until the modal
|
|
601
|
-
* is dismissed. This maintains the animation of the footer
|
|
602
|
-
* when the modal is dismissed.
|
|
603
|
-
*
|
|
604
|
-
* The workaround needs to be done before the animation starts
|
|
605
|
-
* so there are no flickering issues.
|
|
606
|
-
*/
|
|
607
|
-
const ionFooter = baseEl.querySelector('ion-footer');
|
|
608
|
-
/**
|
|
609
|
-
* This check is needed to prevent more than one footer
|
|
610
|
-
* from being appended to the shadow root.
|
|
611
|
-
* Otherwise, iOS and MD enter animations would append
|
|
612
|
-
* the footer twice.
|
|
613
|
-
*/
|
|
614
|
-
const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
|
|
615
|
-
if (ionFooter && !ionFooterAlreadyAppended) {
|
|
616
|
-
const footerHeight = ionFooter.clientHeight;
|
|
617
|
-
const clonedFooter = ionFooter.cloneNode(true);
|
|
618
|
-
baseEl.shadowRoot.appendChild(clonedFooter);
|
|
619
|
-
ionFooter.style.setProperty('display', 'none');
|
|
620
|
-
ionFooter.setAttribute('aria-hidden', 'true');
|
|
621
|
-
// Padding is added to prevent some content from being hidden.
|
|
622
|
-
const page = baseEl.querySelector('.ion-page');
|
|
623
|
-
page.style.setProperty('padding-bottom', `${footerHeight}px`);
|
|
624
|
-
}
|
|
625
|
-
});
|
|
626
|
-
if (contentAnimation) {
|
|
627
|
-
baseAnimation.addAnimation(contentAnimation);
|
|
628
|
-
}
|
|
573
|
+
.addAnimation(wrapperAnimation);
|
|
629
574
|
if (presentingEl) {
|
|
630
575
|
const isMobile = window.innerWidth < 768;
|
|
631
576
|
const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
|
|
@@ -703,7 +648,7 @@ const createLeaveAnimation$1 = () => {
|
|
|
703
648
|
* iOS Modal Leave Animation
|
|
704
649
|
*/
|
|
705
650
|
const iosLeaveAnimation = (baseEl, opts, duration = 500) => {
|
|
706
|
-
const { presentingEl, currentBreakpoint
|
|
651
|
+
const { presentingEl, currentBreakpoint } = opts;
|
|
707
652
|
const root = getElementRoot(baseEl);
|
|
708
653
|
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation$1();
|
|
709
654
|
backdropAnimation.addElement(root.querySelector('ion-backdrop'));
|
|
@@ -712,29 +657,7 @@ const iosLeaveAnimation = (baseEl, opts, duration = 500) => {
|
|
|
712
657
|
.addElement(baseEl)
|
|
713
658
|
.easing('cubic-bezier(0.32,0.72,0,1)')
|
|
714
659
|
.duration(duration)
|
|
715
|
-
.addAnimation(wrapperAnimation)
|
|
716
|
-
.beforeAddWrite(() => {
|
|
717
|
-
if (expandToScroll) {
|
|
718
|
-
// Scroll can only be done when the modal is fully expanded.
|
|
719
|
-
return;
|
|
720
|
-
}
|
|
721
|
-
/**
|
|
722
|
-
* If expandToScroll is disabled, we need to swap
|
|
723
|
-
* the visibility to the original, so the footer
|
|
724
|
-
* dismisses with the modal and doesn't stay
|
|
725
|
-
* until the modal is removed from the DOM.
|
|
726
|
-
*/
|
|
727
|
-
const ionFooter = baseEl.querySelector('ion-footer');
|
|
728
|
-
if (ionFooter) {
|
|
729
|
-
const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
|
|
730
|
-
ionFooter.style.removeProperty('display');
|
|
731
|
-
ionFooter.removeAttribute('aria-hidden');
|
|
732
|
-
clonedFooter.style.setProperty('display', 'none');
|
|
733
|
-
clonedFooter.setAttribute('aria-hidden', 'true');
|
|
734
|
-
const page = baseEl.querySelector('.ion-page');
|
|
735
|
-
page.style.removeProperty('padding-bottom');
|
|
736
|
-
}
|
|
737
|
-
});
|
|
660
|
+
.addAnimation(wrapperAnimation);
|
|
738
661
|
if (presentingEl) {
|
|
739
662
|
const isMobile = window.innerWidth < 768;
|
|
740
663
|
const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
|
|
@@ -812,69 +735,22 @@ const createEnterAnimation = () => {
|
|
|
812
735
|
{ offset: 0, opacity: 0.01, transform: 'translateY(40px)' },
|
|
813
736
|
{ offset: 1, opacity: 1, transform: `translateY(0px)` },
|
|
814
737
|
]);
|
|
815
|
-
return { backdropAnimation, wrapperAnimation
|
|
738
|
+
return { backdropAnimation, wrapperAnimation };
|
|
816
739
|
};
|
|
817
740
|
/**
|
|
818
741
|
* Md Modal Enter Animation
|
|
819
742
|
*/
|
|
820
743
|
const mdEnterAnimation = (baseEl, opts) => {
|
|
821
|
-
const { currentBreakpoint
|
|
744
|
+
const { currentBreakpoint } = opts;
|
|
822
745
|
const root = getElementRoot(baseEl);
|
|
823
|
-
const { wrapperAnimation, backdropAnimation
|
|
746
|
+
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
|
|
824
747
|
backdropAnimation.addElement(root.querySelector('ion-backdrop'));
|
|
825
748
|
wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
|
|
826
|
-
|
|
827
|
-
// all the breakpoints.
|
|
828
|
-
expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
|
|
829
|
-
const baseAnimation = createAnimation()
|
|
749
|
+
return createAnimation()
|
|
830
750
|
.addElement(baseEl)
|
|
831
751
|
.easing('cubic-bezier(0.36,0.66,0.04,1)')
|
|
832
752
|
.duration(280)
|
|
833
|
-
.addAnimation([backdropAnimation, wrapperAnimation])
|
|
834
|
-
.beforeAddWrite(() => {
|
|
835
|
-
if (expandToScroll) {
|
|
836
|
-
// Scroll can only be done when the modal is fully expanded.
|
|
837
|
-
return;
|
|
838
|
-
}
|
|
839
|
-
/**
|
|
840
|
-
* There are some browsers that causes flickering when
|
|
841
|
-
* dragging the content when scroll is enabled at every
|
|
842
|
-
* breakpoint. This is due to the wrapper element being
|
|
843
|
-
* transformed off the screen and having a snap animation.
|
|
844
|
-
*
|
|
845
|
-
* A workaround is to clone the footer element and append
|
|
846
|
-
* it outside of the wrapper element. This way, the footer
|
|
847
|
-
* is still visible and the drag can be done without
|
|
848
|
-
* flickering. The original footer is hidden until the modal
|
|
849
|
-
* is dismissed. This maintains the animation of the footer
|
|
850
|
-
* when the modal is dismissed.
|
|
851
|
-
*
|
|
852
|
-
* The workaround needs to be done before the animation starts
|
|
853
|
-
* so there are no flickering issues.
|
|
854
|
-
*/
|
|
855
|
-
const ionFooter = baseEl.querySelector('ion-footer');
|
|
856
|
-
/**
|
|
857
|
-
* This check is needed to prevent more than one footer
|
|
858
|
-
* from being appended to the shadow root.
|
|
859
|
-
* Otherwise, iOS and MD enter animations would append
|
|
860
|
-
* the footer twice.
|
|
861
|
-
*/
|
|
862
|
-
const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
|
|
863
|
-
if (ionFooter && !ionFooterAlreadyAppended) {
|
|
864
|
-
const footerHeight = ionFooter.clientHeight;
|
|
865
|
-
const clonedFooter = ionFooter.cloneNode(true);
|
|
866
|
-
baseEl.shadowRoot.appendChild(clonedFooter);
|
|
867
|
-
ionFooter.style.setProperty('display', 'none');
|
|
868
|
-
ionFooter.setAttribute('aria-hidden', 'true');
|
|
869
|
-
// Padding is added to prevent some content from being hidden.
|
|
870
|
-
const page = baseEl.querySelector('.ion-page');
|
|
871
|
-
page.style.setProperty('padding-bottom', `${footerHeight}px`);
|
|
872
|
-
}
|
|
873
|
-
});
|
|
874
|
-
if (contentAnimation) {
|
|
875
|
-
baseAnimation.addAnimation(contentAnimation);
|
|
876
|
-
}
|
|
877
|
-
return baseAnimation;
|
|
753
|
+
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
878
754
|
};
|
|
879
755
|
|
|
880
756
|
const createLeaveAnimation = () => {
|
|
@@ -889,41 +765,18 @@ const createLeaveAnimation = () => {
|
|
|
889
765
|
* Md Modal Leave Animation
|
|
890
766
|
*/
|
|
891
767
|
const mdLeaveAnimation = (baseEl, opts) => {
|
|
892
|
-
const { currentBreakpoint
|
|
768
|
+
const { currentBreakpoint } = opts;
|
|
893
769
|
const root = getElementRoot(baseEl);
|
|
894
770
|
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation();
|
|
895
771
|
backdropAnimation.addElement(root.querySelector('ion-backdrop'));
|
|
896
772
|
wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
|
|
897
|
-
|
|
773
|
+
return createAnimation()
|
|
898
774
|
.easing('cubic-bezier(0.47,0,0.745,0.715)')
|
|
899
775
|
.duration(200)
|
|
900
|
-
.addAnimation([backdropAnimation, wrapperAnimation])
|
|
901
|
-
.beforeAddWrite(() => {
|
|
902
|
-
if (expandToScroll) {
|
|
903
|
-
// Scroll can only be done when the modal is fully expanded.
|
|
904
|
-
return;
|
|
905
|
-
}
|
|
906
|
-
/**
|
|
907
|
-
* If expandToScroll is disabled, we need to swap
|
|
908
|
-
* the visibility to the original, so the footer
|
|
909
|
-
* dismisses with the modal and doesn't stay
|
|
910
|
-
* until the modal is removed from the DOM.
|
|
911
|
-
*/
|
|
912
|
-
const ionFooter = baseEl.querySelector('ion-footer');
|
|
913
|
-
if (ionFooter) {
|
|
914
|
-
const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
|
|
915
|
-
ionFooter.style.removeProperty('display');
|
|
916
|
-
ionFooter.removeAttribute('aria-hidden');
|
|
917
|
-
clonedFooter.style.setProperty('display', 'none');
|
|
918
|
-
clonedFooter.setAttribute('aria-hidden', 'true');
|
|
919
|
-
const page = baseEl.querySelector('.ion-page');
|
|
920
|
-
page.style.removeProperty('padding-bottom');
|
|
921
|
-
}
|
|
922
|
-
});
|
|
923
|
-
return baseAnimation;
|
|
776
|
+
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
924
777
|
};
|
|
925
778
|
|
|
926
|
-
const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [],
|
|
779
|
+
const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
|
|
927
780
|
// Defaults for the sheet swipe animation
|
|
928
781
|
const defaultBackdrop = [
|
|
929
782
|
{ offset: 0, opacity: 'var(--backdrop-opacity)' },
|
|
@@ -940,10 +793,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
940
793
|
{ offset: 1, transform: 'translateY(100%)' },
|
|
941
794
|
],
|
|
942
795
|
BACKDROP_KEYFRAMES: backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop,
|
|
943
|
-
CONTENT_KEYFRAMES: [
|
|
944
|
-
{ offset: 0, maxHeight: '100%' },
|
|
945
|
-
{ offset: 1, maxHeight: '0%' },
|
|
946
|
-
],
|
|
947
796
|
};
|
|
948
797
|
const contentEl = baseEl.querySelector('ion-content');
|
|
949
798
|
const height = wrapperEl.clientHeight;
|
|
@@ -951,11 +800,10 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
951
800
|
let offset = 0;
|
|
952
801
|
let canDismissBlocksGesture = false;
|
|
953
802
|
const canDismissMaxStep = 0.95;
|
|
954
|
-
const maxBreakpoint = breakpoints[breakpoints.length - 1];
|
|
955
|
-
const minBreakpoint = breakpoints[0];
|
|
956
803
|
const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation');
|
|
957
804
|
const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
|
|
958
|
-
const
|
|
805
|
+
const maxBreakpoint = breakpoints[breakpoints.length - 1];
|
|
806
|
+
const minBreakpoint = breakpoints[0];
|
|
959
807
|
const enableBackdrop = () => {
|
|
960
808
|
baseEl.style.setProperty('pointer-events', 'auto');
|
|
961
809
|
backdropEl.style.setProperty('pointer-events', 'auto');
|
|
@@ -978,31 +826,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
978
826
|
*/
|
|
979
827
|
baseEl.classList.add(FOCUS_TRAP_DISABLE_CLASS);
|
|
980
828
|
};
|
|
981
|
-
/**
|
|
982
|
-
* Toggles the visible modal footer when `expandToScroll` is disabled.
|
|
983
|
-
* @param footer The footer to show.
|
|
984
|
-
*/
|
|
985
|
-
const swapFooterVisibility = (footer) => {
|
|
986
|
-
const originalFooter = baseEl.querySelector('ion-footer');
|
|
987
|
-
if (!originalFooter) {
|
|
988
|
-
return;
|
|
989
|
-
}
|
|
990
|
-
const clonedFooter = wrapperEl.nextElementSibling;
|
|
991
|
-
const footerToHide = footer === 'original' ? clonedFooter : originalFooter;
|
|
992
|
-
const footerToShow = footer === 'original' ? originalFooter : clonedFooter;
|
|
993
|
-
footerToShow.style.removeProperty('display');
|
|
994
|
-
footerToShow.removeAttribute('aria-hidden');
|
|
995
|
-
const page = baseEl.querySelector('.ion-page');
|
|
996
|
-
if (footer === 'original') {
|
|
997
|
-
page.style.removeProperty('padding-bottom');
|
|
998
|
-
}
|
|
999
|
-
else {
|
|
1000
|
-
const pagePadding = footerToShow.clientHeight;
|
|
1001
|
-
page.style.setProperty('padding-bottom', `${pagePadding}px`);
|
|
1002
|
-
}
|
|
1003
|
-
footerToHide.style.setProperty('display', 'none');
|
|
1004
|
-
footerToHide.setAttribute('aria-hidden', 'true');
|
|
1005
|
-
};
|
|
1006
829
|
/**
|
|
1007
830
|
* After the entering animation completes,
|
|
1008
831
|
* we need to set the animation to go from
|
|
@@ -1014,7 +837,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1014
837
|
if (wrapperAnimation && backdropAnimation) {
|
|
1015
838
|
wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
|
|
1016
839
|
backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
|
|
1017
|
-
contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
|
|
1018
840
|
animation.progressStart(true, 1 - currentBreakpoint);
|
|
1019
841
|
/**
|
|
1020
842
|
* If backdrop is not enabled, then content
|
|
@@ -1031,7 +853,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1031
853
|
disableBackdrop();
|
|
1032
854
|
}
|
|
1033
855
|
}
|
|
1034
|
-
if (contentEl && currentBreakpoint !== maxBreakpoint
|
|
856
|
+
if (contentEl && currentBreakpoint !== maxBreakpoint) {
|
|
1035
857
|
contentEl.scrollY = false;
|
|
1036
858
|
}
|
|
1037
859
|
const canStart = (detail) => {
|
|
@@ -1045,13 +867,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1045
867
|
*/
|
|
1046
868
|
const contentEl = findClosestIonContent(detail.event.target);
|
|
1047
869
|
currentBreakpoint = getCurrentBreakpoint();
|
|
1048
|
-
/**
|
|
1049
|
-
* If we have expandToScroll disabled, we should not allow the swipe gesture to start
|
|
1050
|
-
* if the content is being swiped.
|
|
1051
|
-
*/
|
|
1052
|
-
if (!expandToScroll && contentEl) {
|
|
1053
|
-
return false;
|
|
1054
|
-
}
|
|
1055
870
|
if (currentBreakpoint === 1 && contentEl) {
|
|
1056
871
|
/**
|
|
1057
872
|
* The modal should never swipe to close on the content with a refresher.
|
|
@@ -1082,15 +897,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1082
897
|
* Remove undefined check
|
|
1083
898
|
*/
|
|
1084
899
|
canDismissBlocksGesture = baseEl.canDismiss !== undefined && baseEl.canDismiss !== true && minBreakpoint === 0;
|
|
1085
|
-
/**
|
|
1086
|
-
* If expandToScroll is disabled, we need to swap
|
|
1087
|
-
* the footer visibility to the original, so if the modal
|
|
1088
|
-
* is dismissed, the footer dismisses with the modal
|
|
1089
|
-
* and doesn't stay on the screen after the modal is gone.
|
|
1090
|
-
*/
|
|
1091
|
-
if (!expandToScroll) {
|
|
1092
|
-
swapFooterVisibility('original');
|
|
1093
|
-
}
|
|
1094
900
|
/**
|
|
1095
901
|
* If we are pulling down, then it is possible we are pulling on the content.
|
|
1096
902
|
* We do not want scrolling to happen at the same time as the gesture.
|
|
@@ -1206,19 +1012,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1206
1012
|
opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(snapToBreakpoint, backdropBreakpoint)})`,
|
|
1207
1013
|
},
|
|
1208
1014
|
]);
|
|
1209
|
-
if (contentAnimation) {
|
|
1210
|
-
/**
|
|
1211
|
-
* The modal content should scroll at any breakpoint when expandToScroll
|
|
1212
|
-
* is disabled. In order to do this, the content needs to be completely
|
|
1213
|
-
* viewable so scrolling can access everything. Otherwise, the default
|
|
1214
|
-
* behavior would show the content off the screen and only allow
|
|
1215
|
-
* scrolling when the sheet is fully expanded.
|
|
1216
|
-
*/
|
|
1217
|
-
contentAnimation.keyframes([
|
|
1218
|
-
{ offset: 0, maxHeight: `${(1 - breakpointOffset) * 100}%` },
|
|
1219
|
-
{ offset: 1, maxHeight: `${snapToBreakpoint * 100}%` },
|
|
1220
|
-
]);
|
|
1221
|
-
}
|
|
1222
1015
|
animation.progressStep(0);
|
|
1223
1016
|
}
|
|
1224
1017
|
/**
|
|
@@ -1226,14 +1019,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1226
1019
|
* snapping animation completes.
|
|
1227
1020
|
*/
|
|
1228
1021
|
gesture.enable(false);
|
|
1229
|
-
/**
|
|
1230
|
-
* If expandToScroll is disabled, we need to swap
|
|
1231
|
-
* the footer visibility to the cloned one so the footer
|
|
1232
|
-
* doesn't flicker when the sheet's height is animated.
|
|
1233
|
-
*/
|
|
1234
|
-
if (!expandToScroll && shouldRemainOpen) {
|
|
1235
|
-
swapFooterVisibility('cloned');
|
|
1236
|
-
}
|
|
1237
1022
|
if (shouldPreventDismiss) {
|
|
1238
1023
|
handleCanDismiss(baseEl, animation);
|
|
1239
1024
|
}
|
|
@@ -1241,13 +1026,13 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1241
1026
|
onDismiss();
|
|
1242
1027
|
}
|
|
1243
1028
|
/**
|
|
1244
|
-
*
|
|
1245
|
-
*
|
|
1246
|
-
*
|
|
1247
|
-
*
|
|
1248
|
-
* released, so we align with that
|
|
1029
|
+
* If the sheet is going to be fully expanded then we should enable
|
|
1030
|
+
* scrolling immediately. The sheet modal animation takes ~500ms to finish
|
|
1031
|
+
* so if we wait until then there is a visible delay for when scrolling is
|
|
1032
|
+
* re-enabled. Native iOS allows for scrolling on the sheet modal as soon
|
|
1033
|
+
* as the gesture is released, so we align with that.
|
|
1249
1034
|
*/
|
|
1250
|
-
if (contentEl &&
|
|
1035
|
+
if (contentEl && snapToBreakpoint === breakpoints[breakpoints.length - 1]) {
|
|
1251
1036
|
contentEl.scrollY = true;
|
|
1252
1037
|
}
|
|
1253
1038
|
return new Promise((resolve) => {
|
|
@@ -1265,7 +1050,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1265
1050
|
raf(() => {
|
|
1266
1051
|
wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
|
|
1267
1052
|
backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
|
|
1268
|
-
contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
|
|
1269
1053
|
animation.progressStart(true, 1 - snapToBreakpoint);
|
|
1270
1054
|
currentBreakpoint = snapToBreakpoint;
|
|
1271
1055
|
onBreakpointChange(currentBreakpoint);
|
|
@@ -1318,10 +1102,10 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1318
1102
|
};
|
|
1319
1103
|
};
|
|
1320
1104
|
|
|
1321
|
-
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:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);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);-webkit-box-shadow:var(--box-shadow);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;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}: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
|
|
1105
|
+
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:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);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);-webkit-box-shadow:var(--box-shadow);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;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}: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{-webkit-transform:translate3d(0, 100%, 0);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-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;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);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}";
|
|
1322
1106
|
const IonModalIosStyle0 = modalIosCss;
|
|
1323
1107
|
|
|
1324
|
-
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:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);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);-webkit-box-shadow:var(--box-shadow);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;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}: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
|
|
1108
|
+
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:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);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);-webkit-box-shadow:var(--box-shadow);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;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}: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{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}";
|
|
1325
1109
|
const IonModalMdStyle0 = modalMdCss;
|
|
1326
1110
|
|
|
1327
1111
|
const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
|
|
@@ -1392,7 +1176,6 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
|
|
|
1392
1176
|
this.enterAnimation = undefined;
|
|
1393
1177
|
this.leaveAnimation = undefined;
|
|
1394
1178
|
this.breakpoints = undefined;
|
|
1395
|
-
this.expandToScroll = true;
|
|
1396
1179
|
this.initialBreakpoint = undefined;
|
|
1397
1180
|
this.backdropBreakpoint = 0;
|
|
1398
1181
|
this.handle = undefined;
|
|
@@ -1608,7 +1391,6 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
|
|
|
1608
1391
|
presentingEl: presentingElement,
|
|
1609
1392
|
currentBreakpoint: this.initialBreakpoint,
|
|
1610
1393
|
backdropBreakpoint: this.backdropBreakpoint,
|
|
1611
|
-
expandToScroll: this.expandToScroll,
|
|
1612
1394
|
});
|
|
1613
1395
|
/* tslint:disable-next-line */
|
|
1614
1396
|
if (typeof window !== 'undefined') {
|
|
@@ -1659,10 +1441,7 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
|
|
|
1659
1441
|
// should be in the DOM and referenced by now, except
|
|
1660
1442
|
// for the presenting el
|
|
1661
1443
|
const animationBuilder = this.leaveAnimation || config.get('modalLeave', iosLeaveAnimation);
|
|
1662
|
-
const ani = (this.animation = animationBuilder(el, {
|
|
1663
|
-
presentingEl: this.presentingElement,
|
|
1664
|
-
expandToScroll: this.expandToScroll,
|
|
1665
|
-
}));
|
|
1444
|
+
const ani = (this.animation = animationBuilder(el, { presentingEl: this.presentingElement }));
|
|
1666
1445
|
const contentEl = findIonContent(el);
|
|
1667
1446
|
if (!contentEl) {
|
|
1668
1447
|
printIonContentErrorMsg(el);
|
|
@@ -1707,10 +1486,9 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
|
|
|
1707
1486
|
presentingEl: this.presentingElement,
|
|
1708
1487
|
currentBreakpoint: initialBreakpoint,
|
|
1709
1488
|
backdropBreakpoint,
|
|
1710
|
-
expandToScroll: this.expandToScroll,
|
|
1711
1489
|
}));
|
|
1712
1490
|
ani.progressStart(true, 1);
|
|
1713
|
-
const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints,
|
|
1491
|
+
const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, () => { var _a; return (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : 0; }, () => this.sheetOnDismiss(), (breakpoint) => {
|
|
1714
1492
|
if (this.currentBreakpoint !== breakpoint) {
|
|
1715
1493
|
this.currentBreakpoint = breakpoint;
|
|
1716
1494
|
this.ionBreakpointDidChange.emit({ breakpoint });
|
|
@@ -1788,7 +1566,6 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
|
|
|
1788
1566
|
presentingEl: presentingElement,
|
|
1789
1567
|
currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
|
|
1790
1568
|
backdropBreakpoint: this.backdropBreakpoint,
|
|
1791
|
-
expandToScroll: this.expandToScroll,
|
|
1792
1569
|
});
|
|
1793
1570
|
if (dismissed) {
|
|
1794
1571
|
const { delegate } = this.getDelegate();
|
|
@@ -1874,23 +1651,23 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
|
|
|
1874
1651
|
return true;
|
|
1875
1652
|
}
|
|
1876
1653
|
render() {
|
|
1877
|
-
const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap
|
|
1654
|
+
const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap } = this;
|
|
1878
1655
|
const showHandle = handle !== false && isSheetModal;
|
|
1879
1656
|
const mode = getIonMode(this);
|
|
1880
1657
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
1881
1658
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
1882
|
-
return (h(Host, Object.assign({ key: '
|
|
1659
|
+
return (h(Host, Object.assign({ key: 'b4da5111fe4719fa450c39b2d4bd884a302a7924', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
|
|
1883
1660
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
1884
|
-
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal,
|
|
1661
|
+
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), h("ion-backdrop", { key: 'c12dbf747e0eb914eaf1331798548ffc7e147763', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: 'da546ee80c6576b5acc66e959fd5009e0b9a8160', class: "modal-shadow" }), h("div", Object.assign({ key: '306ebe6427440ad5f7ed36d590e562d15a503b75',
|
|
1885
1662
|
/*
|
|
1886
1663
|
role and aria-modal must be used on the
|
|
1887
1664
|
same element. They must also be set inside the
|
|
1888
1665
|
shadow DOM otherwise ion-button will not be highlighted
|
|
1889
1666
|
when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
|
|
1890
1667
|
*/
|
|
1891
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '
|
|
1668
|
+
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: 'c5d17e346fe255a7c0cacbbf15c0083f2d09c488', class: "modal-handle",
|
|
1892
1669
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
1893
|
-
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), h("slot", { key: '
|
|
1670
|
+
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), h("slot", { key: '5cc714170a00b67f3eda0cd1d6f37c1489a99c83' }))));
|
|
1894
1671
|
}
|
|
1895
1672
|
get el() { return this; }
|
|
1896
1673
|
static get watchers() { return {
|
|
@@ -1909,7 +1686,6 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
|
|
|
1909
1686
|
"enterAnimation": [16],
|
|
1910
1687
|
"leaveAnimation": [16],
|
|
1911
1688
|
"breakpoints": [16],
|
|
1912
|
-
"expandToScroll": [4, "expand-to-scroll"],
|
|
1913
1689
|
"initialBreakpoint": [2, "initial-breakpoint"],
|
|
1914
1690
|
"backdropBreakpoint": [2, "backdrop-breakpoint"],
|
|
1915
1691
|
"handle": [4],
|
package/components/toolbar.js
CHANGED
|
@@ -63,10 +63,10 @@ const Toolbar = /*@__PURE__*/ proxyCustomElement(class Toolbar extends HTMLEleme
|
|
|
63
63
|
this.childrenStyles.forEach((value) => {
|
|
64
64
|
Object.assign(childStyles, value);
|
|
65
65
|
});
|
|
66
|
-
return (h(Host, { key: '
|
|
66
|
+
return (h(Host, { key: '462538a5ecd01baf3cde116c9f029aeda26c81be', class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {
|
|
67
67
|
[mode]: true,
|
|
68
68
|
'in-toolbar': hostContext('ion-toolbar', this.el),
|
|
69
|
-
})) }, h("div", { key: '
|
|
69
|
+
})) }, h("div", { key: 'c0b4415d3b2472de643a9be7cb3b13b3b628621b', class: "toolbar-background" }), h("div", { key: '0ccb8a2dbeaa28d8f9bed87629c0c097446690c2', class: "toolbar-container" }, h("slot", { key: '3e726dac359e923df21d80301651f16063a3de20', name: "start" }), h("slot", { key: 'cd799330b56a7f8833bc61bb2807aafb21846f71', name: "secondary" }), h("div", { key: '395282e6ac8c53576922dcdb5f08c25d34638c86', class: "toolbar-content" }, h("slot", { key: 'a437c60e4ba5aae65e55169ae82a6f379868ec1d' })), h("slot", { key: '711af9b9d321a7b31ede924c9bdcad767aa9a1ca', name: "primary" }), h("slot", { key: 'ecc02edeaf80a837890bcb08d5096df1e22a0b9a', name: "end" }))));
|
|
70
70
|
}
|
|
71
71
|
get el() { return this; }
|
|
72
72
|
static get style() { return {
|