@ionic/core 7.5.7-dev.11701270755.14f050ad → 7.5.7-dev.11701273756.1eb73d4c
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/animation.js +12 -11
- package/components/backdrop.js +12 -0
- package/components/checkbox.js +2 -0
- package/components/data.js +1 -1
- package/components/gesture-controller.js +1 -1
- package/components/index4.js +10 -12
- package/components/index5.js +0 -22
- package/components/input-shims.js +12 -7
- package/components/input.utils.js +3 -2
- package/components/ion-content.js +1 -1
- package/components/ion-datetime.js +61 -28
- package/components/ion-input.js +31 -8
- package/components/ion-modal.js +2 -2
- package/components/ion-picker-column-internal.d.ts +11 -0
- package/components/ion-picker-column-internal.js +9 -0
- package/components/ion-picker-column.js +2 -2
- package/components/{ion-picker-legacy.d.ts → ion-picker-internal.d.ts} +4 -4
- package/components/ion-picker-internal.js +9 -0
- package/components/ion-picker.js +299 -1
- package/components/ion-range.js +2 -0
- package/components/ion-select.js +44 -29
- package/components/ion-skeleton-text.js +14 -1
- package/components/ion-textarea.js +30 -7
- package/components/ion-toast.js +419 -74
- package/components/ion-toggle.js +2 -0
- package/components/item.js +2 -2
- package/components/label.js +2 -2
- package/components/overlays.js +6 -12
- package/components/picker-column-internal.js +390 -0
- package/components/picker-column.js +320 -331
- package/components/{picker.js → picker-internal.js} +16 -16
- package/components/radio-group.js +2 -0
- package/components/radio.js +42 -2
- package/dist/cjs/{animation-1083855c.js → animation-d101aa7a.js} +13 -12
- package/dist/cjs/{button-active-cd07b55b.js → button-active-ba107e4e.js} +2 -2
- package/dist/cjs/{capacitor-2ffba62a.js → capacitor-f68447d3.js} +1 -1
- package/dist/cjs/compare-with-utils-c0444525.js +44 -0
- package/dist/cjs/{data-4845b494.js → data-c8d21093.js} +1 -1
- package/dist/cjs/{gesture-controller-d6a3f907.js → gesture-controller-b46721be.js} +0 -1
- package/dist/cjs/{haptic-678abc9f.js → haptic-a74c2767.js} +1 -1
- package/dist/cjs/{index-0f8b33f8.js → index-0ee995e4.js} +1 -1
- package/dist/cjs/{index-d7561763.js → index-4f0c67e1.js} +11 -13
- package/dist/cjs/{index-573877f3.js → index-56d41f51.js} +2 -2
- package/dist/cjs/index-c8d52405.js +10 -0
- package/dist/cjs/{index-9f379eaa.js → index-e9634bc9.js} +1 -1
- package/dist/cjs/index.cjs.js +10 -10
- package/dist/cjs/{input-shims-b0a75a01.js → input-shims-3e3f35b9.js} +15 -10
- package/dist/cjs/{input.utils-0fe3097c.js → input.utils-bdb6953c.js} +4 -3
- package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
- package/dist/cjs/ion-alert.cjs.entry.js +8 -8
- package/dist/cjs/ion-app_8.cjs.entry.js +10 -10
- package/dist/cjs/ion-backdrop.cjs.entry.js +12 -0
- package/dist/cjs/ion-checkbox.cjs.entry.js +2 -0
- package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +43 -30
- package/dist/cjs/ion-input.cjs.entry.js +34 -11
- package/dist/cjs/ion-item-option_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-item_8.cjs.entry.js +17 -4
- package/dist/cjs/ion-loading.cjs.entry.js +3 -4
- package/dist/cjs/ion-menu_3.cjs.entry.js +7 -7
- package/dist/cjs/ion-modal.cjs.entry.js +10 -10
- package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
- package/dist/cjs/{ion-picker-column.cjs.entry.js → ion-picker-column-internal.cjs.entry.js} +12 -12
- package/dist/cjs/{ion-picker.cjs.entry.js → ion-picker-internal.cjs.entry.js} +13 -13
- package/dist/cjs/ion-popover.cjs.entry.js +4 -5
- package/dist/cjs/ion-radio_2.cjs.entry.js +6 -1
- package/dist/cjs/ion-range.cjs.entry.js +3 -1
- package/dist/cjs/ion-refresher_2.cjs.entry.js +7 -7
- package/dist/cjs/ion-reorder_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-select_3.cjs.entry.js +51 -36
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-textarea.cjs.entry.js +33 -10
- package/dist/cjs/ion-toast.cjs.entry.js +434 -93
- package/dist/cjs/ion-toggle.cjs.entry.js +6 -4
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/{ios.transition-ac909bc8.js → ios.transition-f4caf640.js} +3 -3
- package/dist/cjs/{keyboard-fd7db491.js → keyboard-43df0428.js} +1 -1
- package/dist/cjs/{keyboard-38f2bb7b.js → keyboard-840107b3.js} +3 -3
- package/dist/cjs/{keyboard-controller-50beb83a.js → keyboard-controller-019f42df.js} +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{md.transition-907af519.js → md.transition-33331e93.js} +3 -3
- package/dist/cjs/{notch-controller-f4f6af5d.js → notch-controller-c22d1344.js} +1 -1
- package/dist/cjs/{overlays-dbb71984.js → overlays-4d8897dc.js} +7 -12
- package/dist/cjs/{swipe-back-a6dc6e5d.js → swipe-back-d0412fb6.js} +2 -2
- package/dist/collection/collection-manifest.json +6 -7
- package/dist/collection/components/backdrop/backdrop.js +12 -0
- package/dist/collection/components/checkbox/checkbox.js +2 -0
- package/dist/collection/components/content/content.css +4 -0
- package/dist/collection/components/datetime/datetime.ios.css +26 -84
- package/dist/collection/components/datetime/datetime.js +29 -14
- package/dist/collection/components/datetime/datetime.md.css +26 -89
- package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/a11y/datetime.spec.js +9 -6
- package/dist/collection/components/datetime/test/basic/datetime.e2e.js +0 -10
- package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
- package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +5 -5
- package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/values/datetime.e2e.js +5 -5
- package/dist/collection/components/datetime/utils/data.js +1 -1
- package/dist/collection/components/input/input.ios.css +10 -3
- package/dist/collection/components/input/input.js +31 -6
- package/dist/collection/components/input/input.md.css +13 -12
- package/dist/collection/components/input/test/slot/input.e2e.js +51 -0
- package/dist/collection/components/item/item.ios.css +25 -3
- package/dist/collection/components/item/item.md.css +25 -3
- package/dist/collection/components/item/test/basic/item.e2e.js +1 -1
- package/dist/collection/components/item/test/disabled/item.e2e.js +0 -1
- package/dist/collection/components/label/label.ios.css +14 -3
- package/dist/collection/components/label/label.md.css +14 -3
- package/dist/collection/components/modal/gestures/swipe-to-close.js +2 -1
- package/dist/collection/components/note/test/a11y/note.e2e.js +43 -0
- package/dist/collection/components/picker/picker.ios.css +205 -100
- package/dist/collection/components/picker/picker.js +735 -463
- package/dist/collection/components/picker/picker.md.css +194 -98
- package/dist/collection/components/picker/test/basic/picker.e2e.js +13 -106
- package/dist/collection/components/{picker-legacy → picker}/test/is-open/picker.e2e.js +4 -4
- package/dist/collection/components/{picker-legacy → picker}/test/picker-id.spec.js +5 -5
- package/dist/collection/components/{picker-legacy → picker}/test/trigger/picker.e2e.js +1 -1
- package/dist/collection/components/picker-column/picker-column.ios.css +176 -59
- package/dist/collection/components/picker-column/picker-column.js +333 -478
- package/dist/collection/components/picker-column/picker-column.md.css +113 -63
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-aria.spec.js +3 -3
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-dynamic.spec.js +2 -2
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column.spec.js +2 -2
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/standalone/picker-column.e2e.js +3 -3
- package/dist/collection/components/picker-column-internal/picker-column-internal.ios.css +138 -0
- package/dist/collection/components/picker-column-internal/picker-column-internal.js +565 -0
- package/dist/collection/components/{picker-legacy-column/picker-column.md.css → picker-column-internal/picker-column-internal.md.css} +63 -113
- package/dist/collection/components/{picker-column/test/basic/picker-column.e2e.js → picker-column-internal/test/basic/picker-column-internal.e2e.js} +7 -7
- package/dist/collection/components/{picker-column/test/disabled/picker-column.e2e.js → picker-column-internal/test/disabled/picker-column-internal.e2e.js} +39 -39
- package/dist/collection/components/{picker-legacy/picker.md.css → picker-internal/picker-internal.ios.css} +100 -192
- package/dist/collection/components/picker-internal/picker-internal.js +544 -0
- package/dist/collection/components/{picker-legacy-column/picker-column.ios.css → picker-internal/picker-internal.md.css} +101 -98
- package/dist/collection/components/{picker/test/a11y/picker.e2e.js → picker-internal/test/a11y/picker-internal.e2e.js} +2 -2
- package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +118 -0
- package/dist/collection/components/{picker/test/keyboard-entry/picker.e2e.js → picker-internal/test/keyboard-entry/picker-internal.e2e.js} +20 -20
- package/dist/collection/components/radio/radio.js +5 -2
- package/dist/collection/components/radio-group/radio-group.js +24 -0
- package/dist/collection/components/radio-group/test/radio-group.spec.js +69 -0
- package/dist/collection/components/range/range.js +2 -0
- package/dist/collection/components/select/select.ios.css +61 -7
- package/dist/collection/components/select/select.js +45 -28
- package/dist/collection/components/select/select.md.css +64 -19
- package/dist/collection/components/select/test/label/select.e2e.js +1 -1
- package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +1 -1
- package/dist/collection/components/select/test/slot/select.e2e.js +67 -0
- package/dist/collection/components/skeleton-text/skeleton-text.js +39 -0
- package/dist/collection/components/textarea/test/slot/textarea.e2e.js +51 -0
- package/dist/collection/components/textarea/textarea.ios.css +37 -5
- package/dist/collection/components/textarea/textarea.js +30 -5
- package/dist/collection/components/textarea/textarea.md.css +47 -14
- package/dist/collection/components/toast/animations/ios.enter.js +2 -1
- package/dist/collection/components/toast/animations/md.enter.js +4 -3
- package/dist/collection/components/toast/animations/utils.js +20 -14
- package/dist/collection/components/toast/gestures/swipe-to-dismiss.js +267 -0
- package/dist/collection/components/toast/test/swipe-gesture/toast.e2e.js +84 -0
- package/dist/collection/components/toast/test/toast-config.spec.js +25 -0
- package/dist/collection/components/toast/test/toast.spec.js +80 -0
- package/dist/collection/components/toast/toast.ios.css +10 -10
- package/dist/collection/components/toast/toast.js +104 -1
- package/dist/collection/components/toast/toast.md.css +10 -0
- package/dist/collection/components/toggle/toggle.js +2 -0
- package/dist/collection/utils/animation/animation.js +12 -11
- package/dist/collection/utils/animation/test/animation.spec.js +16 -0
- package/dist/collection/utils/browser/index.js +0 -22
- package/dist/collection/utils/forms/compare-with-utils.js +39 -0
- package/dist/collection/utils/forms/index.js +1 -0
- package/dist/collection/utils/gesture/gesture-controller.js +1 -1
- package/dist/collection/utils/input-shims/input-shims.js +12 -6
- package/dist/collection/utils/menu-controller/index.js +10 -12
- package/dist/collection/utils/overlays.js +5 -11
- package/dist/collection/utils/slot-mutation-controller.js +3 -2
- package/dist/docs.json +166 -385
- package/dist/esm/{animation-8aa13916.js → animation-cf3dd234.js} +13 -12
- package/dist/esm/{button-active-5b0516e7.js → button-active-47196c40.js} +2 -2
- package/dist/esm/{capacitor-b4979570.js → capacitor-f1f25364.js} +1 -1
- package/dist/esm/compare-with-utils-4928c09d.js +41 -0
- package/dist/esm/{data-12e24f00.js → data-44d9e816.js} +1 -1
- package/dist/esm/{gesture-controller-3723db7c.js → gesture-controller-0fa396c4.js} +1 -1
- package/dist/esm/{haptic-1243b917.js → haptic-1a66d69f.js} +1 -1
- package/dist/esm/{index-0aa6e61f.js → index-23c05a55.js} +11 -13
- package/dist/esm/{index-6a0ccabb.js → index-702b3cd3.js} +2 -2
- package/dist/esm/index-a5d50daf.js +7 -0
- package/dist/esm/{index-f0cc4e14.js → index-c9e82353.js} +1 -1
- package/dist/esm/{index-32cbee52.js → index-ff313b19.js} +2 -2
- package/dist/esm/index.js +10 -10
- package/dist/esm/{input-shims-d0c93e5d.js → input-shims-1d767845.js} +14 -9
- package/dist/esm/{input.utils-ec063df4.js → input.utils-2cf5e372.js} +4 -3
- package/dist/esm/ion-action-sheet.entry.js +8 -8
- package/dist/esm/ion-alert.entry.js +8 -8
- package/dist/esm/ion-app_8.entry.js +10 -10
- package/dist/esm/ion-backdrop.entry.js +12 -0
- package/dist/esm/ion-checkbox.entry.js +2 -0
- package/dist/esm/ion-datetime-button.entry.js +1 -1
- package/dist/esm/ion-datetime_3.entry.js +42 -29
- package/dist/esm/ion-input.entry.js +34 -11
- package/dist/esm/ion-item-option_3.entry.js +1 -1
- package/dist/esm/ion-item_8.entry.js +17 -4
- package/dist/esm/ion-loading.entry.js +3 -4
- package/dist/esm/ion-menu_3.entry.js +7 -7
- package/dist/esm/ion-modal.entry.js +10 -10
- package/dist/esm/ion-nav_2.entry.js +2 -2
- package/dist/esm/{ion-picker-column.entry.js → ion-picker-column-internal.entry.js} +12 -12
- package/dist/esm/{ion-picker.entry.js → ion-picker-internal.entry.js} +13 -13
- package/dist/esm/ion-popover.entry.js +4 -5
- package/dist/esm/ion-radio_2.entry.js +6 -1
- package/dist/esm/ion-range.entry.js +3 -1
- package/dist/esm/ion-refresher_2.entry.js +7 -7
- package/dist/esm/ion-reorder_2.entry.js +4 -4
- package/dist/esm/ion-segment_2.entry.js +1 -1
- package/dist/esm/ion-select_3.entry.js +47 -32
- package/dist/esm/ion-tab-bar_2.entry.js +4 -4
- package/dist/esm/ion-textarea.entry.js +33 -10
- package/dist/esm/ion-toast.entry.js +417 -76
- package/dist/esm/ion-toggle.entry.js +6 -4
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/{ios.transition-1651c430.js → ios.transition-c3e77862.js} +3 -3
- package/dist/esm/{keyboard-b551279d.js → keyboard-9f771a04.js} +3 -3
- package/dist/esm/{keyboard-b063f012.js → keyboard-b6230bfb.js} +1 -1
- package/dist/esm/{keyboard-controller-0c2dce71.js → keyboard-controller-3f0faa10.js} +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{md.transition-66f18369.js → md.transition-1173eca9.js} +3 -3
- package/dist/esm/{notch-controller-8c9c0e54.js → notch-controller-3f79197e.js} +1 -1
- package/dist/esm/{overlays-789cd7a7.js → overlays-34169295.js} +7 -13
- package/dist/esm/{swipe-back-cc4c2bcb.js → swipe-back-0f3bfc8e.js} +2 -2
- package/dist/esm-es5/{animation-8aa13916.js → animation-cf3dd234.js} +1 -1
- package/dist/esm-es5/{button-active-5b0516e7.js → button-active-47196c40.js} +1 -1
- package/dist/esm-es5/{capacitor-b4979570.js → capacitor-f1f25364.js} +1 -1
- package/dist/esm-es5/compare-with-utils-4928c09d.js +4 -0
- package/dist/esm-es5/{gesture-controller-3723db7c.js → gesture-controller-0fa396c4.js} +1 -1
- package/dist/esm-es5/{haptic-1243b917.js → haptic-1a66d69f.js} +1 -1
- package/dist/esm-es5/index-23c05a55.js +4 -0
- package/dist/esm-es5/{index-6a0ccabb.js → index-702b3cd3.js} +1 -1
- package/dist/esm-es5/index-c9e82353.js +4 -0
- package/dist/esm-es5/{index-32cbee52.js → index-ff313b19.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/input-shims-1d767845.js +4 -0
- package/dist/esm-es5/input.utils-2cf5e372.js +4 -0
- 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-backdrop.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-input.entry.js +1 -1
- package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
- package/dist/esm-es5/ion-item_8.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-picker-column-internal.entry.js +4 -0
- package/dist/esm-es5/ion-picker-internal.entry.js +4 -0
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-radio_2.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-segment_2.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-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-1651c430.js → ios.transition-c3e77862.js} +1 -1
- package/dist/esm-es5/{keyboard-b551279d.js → keyboard-9f771a04.js} +1 -1
- package/dist/esm-es5/{keyboard-b063f012.js → keyboard-b6230bfb.js} +1 -1
- package/dist/esm-es5/{keyboard-controller-0c2dce71.js → keyboard-controller-3f0faa10.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/md.transition-1173eca9.js +4 -0
- package/dist/esm-es5/{notch-controller-8c9c0e54.js → notch-controller-3f79197e.js} +1 -1
- package/dist/esm-es5/overlays-34169295.js +4 -0
- package/dist/esm-es5/swipe-back-0f3bfc8e.js +4 -0
- package/dist/html.html-data.json +15 -120
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-02d8fdba.system.entry.js → p-03ed6107.system.entry.js} +1 -1
- package/dist/ionic/p-0547e914.entry.js +4 -0
- package/dist/ionic/{p-81c818e7.js → p-11cb4e19.js} +1 -1
- package/dist/ionic/p-131761b4.entry.js +4 -0
- package/dist/ionic/p-196f2123.system.entry.js +4 -0
- package/dist/ionic/{p-64ed03a3.entry.js → p-1abc74d9.entry.js} +1 -1
- package/dist/ionic/p-1cf5e8d6.entry.js +4 -0
- package/dist/ionic/{p-c4042875.system.js → p-21b4981c.system.js} +1 -1
- package/dist/ionic/p-2207f3c2.js +4 -0
- package/dist/ionic/p-27eb8a91.system.entry.js +4 -0
- package/dist/ionic/p-2a41d4d1.js +4 -0
- package/dist/ionic/p-31189dae.entry.js +4 -0
- package/dist/ionic/p-314c4dee.js +4 -0
- package/dist/ionic/{p-4f3e2767.system.entry.js → p-37c69d34.system.entry.js} +1 -1
- package/dist/ionic/p-385c51f8.system.entry.js +4 -0
- package/dist/ionic/{p-477a182e.entry.js → p-3abf5b7a.entry.js} +1 -1
- package/dist/ionic/p-3bc3d880.system.js +4 -0
- package/dist/ionic/{p-56224549.entry.js → p-3de79805.entry.js} +1 -1
- package/dist/ionic/{p-9e6bf9ed.entry.js → p-3e655d4c.entry.js} +1 -1
- package/dist/ionic/p-40903d34.system.js +1 -1
- package/dist/ionic/p-43716898.js +4 -0
- package/dist/ionic/p-450a26bf.js +4 -0
- package/dist/ionic/p-485668f0.entry.js +4 -0
- package/dist/ionic/p-48c59094.system.entry.js +4 -0
- package/dist/ionic/p-494e75ad.js +4 -0
- package/dist/ionic/{p-cb62e3fc.system.entry.js → p-4c80afe1.system.entry.js} +1 -1
- package/dist/ionic/{p-0e23256e.system.entry.js → p-54824705.system.entry.js} +1 -1
- package/dist/ionic/p-561cc050.system.js +4 -0
- package/dist/ionic/{p-4a142496.system.entry.js → p-587afb80.system.entry.js} +1 -1
- package/dist/ionic/{p-8cf94fc1.js → p-5885e9af.js} +1 -1
- package/dist/ionic/p-5bd4e009.entry.js +4 -0
- package/dist/ionic/{p-b3e79338.system.entry.js → p-5e6bc319.system.entry.js} +1 -1
- package/dist/ionic/{p-939d903b.entry.js → p-64ab3eb3.entry.js} +1 -1
- package/dist/ionic/p-671dbd61.js +4 -0
- package/dist/ionic/{p-702d85d8.system.js → p-67951604.system.js} +1 -1
- package/dist/ionic/{p-835e0346.entry.js → p-6797887a.entry.js} +1 -1
- package/dist/ionic/{p-b923f3d7.js → p-6a309574.js} +1 -1
- package/dist/ionic/{p-a4cda7a8.system.entry.js → p-6e23777e.system.entry.js} +1 -1
- package/dist/ionic/{p-06e6d235.system.entry.js → p-7047a40c.system.entry.js} +2 -2
- package/dist/ionic/p-70dcf429.js +4 -0
- package/dist/ionic/p-710cea83.system.js +4 -0
- package/dist/ionic/p-7b44e419.js +4 -0
- package/dist/ionic/p-80a9b397.entry.js +4 -0
- package/dist/ionic/{p-9b5301cc.system.entry.js → p-823890d5.system.entry.js} +1 -1
- package/dist/ionic/{p-a57f223c.system.js → p-83a455fd.system.js} +1 -1
- package/dist/ionic/{p-baa7cb1e.entry.js → p-8ad82eb3.entry.js} +1 -1
- package/dist/ionic/{p-c1229981.entry.js → p-8b15ca22.entry.js} +1 -1
- package/dist/ionic/{p-a7e2ac5c.js → p-8b1be026.js} +1 -1
- package/dist/ionic/p-8dbdb163.system.js +4 -0
- package/dist/ionic/p-8ddfecbf.entry.js +4 -0
- package/dist/ionic/{p-b4b4bb29.system.js → p-9292fd42.system.js} +1 -1
- package/dist/ionic/{p-41477ad9.system.js → p-958f1c70.system.js} +1 -1
- package/dist/ionic/{p-5ce11143.entry.js → p-965677f1.entry.js} +1 -1
- package/dist/ionic/p-9c6787e2.entry.js +4 -0
- package/dist/ionic/{p-6500b298.system.js → p-9e852ff1.system.js} +1 -1
- package/dist/ionic/p-a11c1aff.system.entry.js +4 -0
- package/dist/ionic/{p-419eb426.js → p-a135e3ba.js} +1 -1
- package/dist/ionic/p-a31099a4.entry.js +4 -0
- package/dist/ionic/p-a6bc00ab.entry.js +4 -0
- package/dist/ionic/p-a9c3699b.system.entry.js +4 -0
- package/dist/ionic/p-ac668fb8.entry.js +4 -0
- package/dist/ionic/p-ad4b4f73.system.entry.js +4 -0
- package/dist/ionic/{p-ab4cff27.system.js → p-aec8a70a.system.js} +1 -1
- package/dist/ionic/p-b673ee9b.entry.js +4 -0
- package/dist/ionic/p-be0f6600.system.js +4 -0
- package/dist/ionic/p-beb64be7.system.entry.js +4 -0
- package/dist/ionic/{p-dd837fa8.entry.js → p-c1e725db.entry.js} +1 -1
- package/dist/ionic/p-c2db1374.system.js +4 -0
- package/dist/ionic/p-c3547c7a.system.js +4 -0
- package/dist/ionic/{p-c7fd81ba.system.js → p-c4de53af.system.js} +1 -1
- package/dist/ionic/p-c700acef.system.js +4 -0
- package/dist/ionic/p-c919498d.entry.js +4 -0
- package/dist/ionic/{p-3f88eab8.system.entry.js → p-cc615985.system.entry.js} +1 -1
- package/dist/ionic/p-d48872b1.system.js +4 -0
- package/dist/ionic/p-d4fba36b.system.entry.js +4 -0
- package/dist/ionic/{p-22813b28.system.entry.js → p-d61a2cee.system.entry.js} +1 -1
- package/dist/ionic/{p-c31fc05f.system.entry.js → p-db5043df.system.entry.js} +1 -1
- package/dist/ionic/{p-100ef961.js → p-e0b06b65.js} +1 -1
- package/dist/ionic/p-e5b8f2f7.js +4 -0
- package/dist/ionic/{p-3bad5c1a.js → p-e5fd9f10.js} +1 -1
- package/dist/ionic/{p-302091ab.js → p-e627ed84.js} +1 -1
- package/dist/ionic/{p-ccdcb022.system.js → p-e7d20dfb.system.js} +1 -1
- package/dist/ionic/{p-14b4348c.system.js → p-e9e5755c.system.js} +1 -1
- package/dist/ionic/p-ea9addc8.system.entry.js +4 -0
- package/dist/ionic/p-edd07654.system.entry.js +4 -0
- package/dist/ionic/p-f36112b4.entry.js +4 -0
- package/dist/ionic/p-f43f4102.entry.js +4 -0
- package/dist/ionic/p-f5d78105.entry.js +4 -0
- package/dist/ionic/p-f7769c83.js +4 -0
- package/dist/ionic/{p-bba2ce59.system.js → p-f9a641fa.system.js} +1 -1
- package/dist/ionic/{p-2e1794df.system.js → p-fa8d4788.system.js} +1 -1
- package/dist/ionic/p-fcb148dc.system.entry.js +4 -0
- package/dist/ionic/p-fcc23f25.system.entry.js +4 -0
- package/dist/ionic/{p-878c7aa5.system.entry.js → p-fce6b76a.system.entry.js} +1 -1
- package/dist/ionic/p-fdcf04c3.system.entry.js +4 -0
- package/dist/ionic/{p-a0b6d438.js → p-fe1f93f2.js} +1 -1
- package/dist/types/components/backdrop/backdrop.d.ts +3 -0
- package/dist/types/components/datetime/datetime.d.ts +1 -0
- package/dist/types/components/datetime/utils/data.d.ts +2 -2
- package/dist/types/components/input/input.d.ts +2 -0
- package/dist/types/components/menu/menu.d.ts +1 -1
- package/dist/types/components/picker/picker.d.ts +131 -74
- package/dist/types/components/picker-column/picker-column.d.ts +39 -94
- package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +102 -0
- package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +8 -0
- package/dist/types/components/picker-internal/picker-internal.d.ts +102 -0
- package/dist/types/components/radio-group/radio-group-interface.d.ts +1 -0
- package/dist/types/components/radio-group/radio-group.d.ts +8 -1
- package/dist/types/components/router/router.d.ts +2 -1
- package/dist/types/components/select/select.d.ts +6 -1
- package/dist/types/components/skeleton-text/skeleton-text.d.ts +9 -1
- package/dist/types/components/textarea/textarea.d.ts +2 -0
- package/dist/types/components/toast/animations/utils.d.ts +15 -4
- package/dist/types/components/toast/gestures/swipe-to-dismiss.d.ts +9 -0
- package/dist/types/components/toast/toast-interface.d.ts +2 -0
- package/dist/types/components/toast/toast.d.ts +28 -1
- package/dist/types/components.d.ts +159 -157
- package/dist/types/interface.d.ts +2 -6
- package/dist/types/utils/animation/animation-interface.d.ts +4 -4
- package/dist/types/utils/browser/index.d.ts +11 -2
- package/dist/types/utils/config.d.ts +2 -2
- package/dist/types/utils/forms/compare-with-utils.d.ts +18 -0
- package/dist/types/utils/forms/index.d.ts +1 -0
- package/dist/types/utils/gesture/gesture-controller.d.ts +0 -1
- package/dist/types/utils/hardware-back-button.d.ts +4 -0
- package/dist/types/utils/overlays.d.ts +3 -5
- package/dist/types/utils/slot-mutation-controller.d.ts +2 -2
- package/hydrate/index.js +2003 -1567
- package/package.json +1 -1
- package/components/ion-picker-column-option.d.ts +0 -11
- package/components/ion-picker-column-option.js +0 -52
- package/components/ion-picker-legacy-column.d.ts +0 -11
- package/components/ion-picker-legacy-column.js +0 -9
- package/components/ion-picker-legacy.js +0 -309
- package/components/picker-column2.js +0 -379
- package/dist/cjs/index-306a7476.js +0 -32
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +0 -35
- package/dist/collection/components/item/test/text/item.e2e.js +0 -14
- package/dist/collection/components/picker-column-option/picker-column-option.js +0 -68
- package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +0 -18
- package/dist/collection/components/picker-legacy/picker.ios.css +0 -367
- package/dist/collection/components/picker-legacy/picker.js +0 -817
- package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +0 -25
- package/dist/collection/components/picker-legacy-column/picker-column.js +0 -419
- package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +0 -65
- package/dist/esm/index-7a14ecec.js +0 -29
- package/dist/esm/ion-picker-column-option.entry.js +0 -31
- package/dist/esm-es5/index-0aa6e61f.js +0 -4
- package/dist/esm-es5/index-f0cc4e14.js +0 -4
- package/dist/esm-es5/input-shims-d0c93e5d.js +0 -4
- package/dist/esm-es5/input.utils-ec063df4.js +0 -4
- package/dist/esm-es5/ion-picker-column-option.entry.js +0 -4
- package/dist/esm-es5/ion-picker-column.entry.js +0 -4
- package/dist/esm-es5/ion-picker.entry.js +0 -4
- package/dist/esm-es5/md.transition-66f18369.js +0 -4
- package/dist/esm-es5/overlays-789cd7a7.js +0 -4
- package/dist/esm-es5/swipe-back-cc4c2bcb.js +0 -4
- package/dist/ionic/p-0c244faf.entry.js +0 -4
- package/dist/ionic/p-20cf4994.js +0 -4
- package/dist/ionic/p-234b9617.system.entry.js +0 -4
- package/dist/ionic/p-25c34422.system.entry.js +0 -4
- package/dist/ionic/p-276afddd.js +0 -4
- package/dist/ionic/p-2804781b.entry.js +0 -4
- package/dist/ionic/p-2ad38423.system.entry.js +0 -4
- package/dist/ionic/p-2ba9414e.entry.js +0 -4
- package/dist/ionic/p-2e8e0045.js +0 -4
- package/dist/ionic/p-332f64af.system.entry.js +0 -4
- package/dist/ionic/p-352c0232.system.entry.js +0 -4
- package/dist/ionic/p-3602001b.system.js +0 -4
- package/dist/ionic/p-3632220b.system.js +0 -4
- package/dist/ionic/p-39074595.entry.js +0 -4
- package/dist/ionic/p-439e20ef.entry.js +0 -4
- package/dist/ionic/p-4cd588b3.system.entry.js +0 -4
- package/dist/ionic/p-67aab78f.js +0 -4
- package/dist/ionic/p-67eecef4.system.js +0 -4
- package/dist/ionic/p-6893f6e4.entry.js +0 -4
- package/dist/ionic/p-77e7a9c8.entry.js +0 -4
- package/dist/ionic/p-7c66a566.system.entry.js +0 -4
- package/dist/ionic/p-8b4ab236.entry.js +0 -4
- package/dist/ionic/p-9403b297.system.entry.js +0 -4
- package/dist/ionic/p-966cf574.system.entry.js +0 -4
- package/dist/ionic/p-97c65aa5.js +0 -4
- package/dist/ionic/p-992d3bad.entry.js +0 -4
- package/dist/ionic/p-9ab6f3e6.system.js +0 -4
- package/dist/ionic/p-9b89cbde.js +0 -4
- package/dist/ionic/p-9c967a65.system.entry.js +0 -4
- package/dist/ionic/p-a21b8d05.entry.js +0 -4
- package/dist/ionic/p-b0cee324.entry.js +0 -4
- package/dist/ionic/p-b1142133.entry.js +0 -4
- package/dist/ionic/p-b4cbb736.js +0 -4
- package/dist/ionic/p-b6a8588f.entry.js +0 -4
- package/dist/ionic/p-b6f8ee31.entry.js +0 -4
- package/dist/ionic/p-ba70d455.entry.js +0 -4
- package/dist/ionic/p-bd7a3269.entry.js +0 -4
- package/dist/ionic/p-c32bf078.system.entry.js +0 -4
- package/dist/ionic/p-cc196b34.js +0 -4
- package/dist/ionic/p-d1de1188.js +0 -4
- package/dist/ionic/p-d21bfe66.system.entry.js +0 -4
- package/dist/ionic/p-d3952bd5.system.entry.js +0 -4
- package/dist/ionic/p-dc565ca3.js +0 -4
- package/dist/ionic/p-dfa756ed.system.js +0 -4
- package/dist/ionic/p-e88ed07f.system.js +0 -4
- package/dist/ionic/p-eb07ec1a.system.entry.js +0 -4
- package/dist/ionic/p-eb5697b5.system.js +0 -4
- package/dist/ionic/p-ee800093.entry.js +0 -4
- package/dist/ionic/p-f0559c5d.system.entry.js +0 -4
- package/dist/ionic/p-fdd22426.entry.js +0 -4
- package/dist/ionic/p-ff5a10f9.system.js +0 -4
- package/dist/types/components/picker/picker-interfaces.d.ts +0 -8
- package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -16
- package/dist/types/components/picker-legacy/picker.d.ts +0 -158
- package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
- /package/dist/collection/components/{picker-legacy → picker}/animations/ios.enter.js +0 -0
- /package/dist/collection/components/{picker-legacy → picker}/animations/ios.leave.js +0 -0
- /package/dist/collection/components/picker/{picker-interfaces.js → picker-interface.js} +0 -0
- /package/dist/collection/components/{picker-legacy-column → picker-column}/test/test.utils.js +0 -0
- /package/dist/collection/components/{picker-column/picker-column-interfaces.js → picker-column-internal/picker-column-internal-interfaces.js} +0 -0
- /package/dist/collection/components/{picker-legacy/picker-interface.js → picker-internal/picker-internal-interfaces.js} +0 -0
- /package/dist/esm-es5/{data-12e24f00.js → data-44d9e816.js} +0 -0
- /package/dist/esm-es5/{index-7a14ecec.js → index-a5d50daf.js} +0 -0
- /package/dist/ionic/{p-bb849ebb.js → p-17240d90.js} +0 -0
- /package/dist/ionic/{p-0e94957a.system.js → p-792919fd.system.js} +0 -0
- /package/dist/ionic/{p-b347cfd1.js → p-7b30edcc.js} +0 -0
- /package/dist/ionic/{p-e4219e27.system.js → p-b8c3f071.system.js} +0 -0
- /package/dist/types/components/{picker-legacy → picker}/animations/ios.enter.d.ts +0 -0
- /package/dist/types/components/{picker-legacy → picker}/animations/ios.leave.d.ts +0 -0
- /package/dist/types/components/{picker-legacy → picker}/picker-interface.d.ts +0 -0
- /package/dist/types/components/{picker-legacy-column → picker-column}/test/test.utils.d.ts +0 -0
- /package/dist/types/components/{picker-column/picker-column-interfaces.d.ts → picker-column-internal/picker-column-internal-interfaces.d.ts} +0 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { newSpecPage } from "@stencil/core/testing";
|
|
5
|
+
import { Toast } from "../toast";
|
|
6
|
+
import { config } from "../../../global/config";
|
|
7
|
+
describe('toast: duration config', () => {
|
|
8
|
+
it('should have duration set to 0', async () => {
|
|
9
|
+
const page = await newSpecPage({
|
|
10
|
+
components: [Toast],
|
|
11
|
+
html: `<ion-toast></ion-toast>`,
|
|
12
|
+
});
|
|
13
|
+
const toast = page.body.querySelector('ion-toast');
|
|
14
|
+
expect(toast.duration).toBe(0);
|
|
15
|
+
});
|
|
16
|
+
it('should have duration set to 5000', async () => {
|
|
17
|
+
config.reset({ toastDuration: 5000 });
|
|
18
|
+
const page = await newSpecPage({
|
|
19
|
+
components: [Toast],
|
|
20
|
+
html: `<ion-toast></ion-toast>`,
|
|
21
|
+
});
|
|
22
|
+
const toast = page.body.querySelector('ion-toast');
|
|
23
|
+
expect(toast.duration).toBe(5000);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { h } from "@stencil/core";
|
|
5
5
|
import { newSpecPage } from "@stencil/core/testing";
|
|
6
6
|
import { config } from "../../../global/config";
|
|
7
|
+
import { createAnimation } from "../../../utils/animation/animation";
|
|
7
8
|
import { Toast } from "../toast";
|
|
8
9
|
describe('toast: custom html', () => {
|
|
9
10
|
it('should not allow for custom html by default', async () => {
|
|
@@ -118,3 +119,82 @@ describe('toast: button cancel', () => {
|
|
|
118
119
|
expect(buttonCancel.getAttribute('part')).toBe('button cancel');
|
|
119
120
|
});
|
|
120
121
|
});
|
|
122
|
+
describe('toast: swipe gesture', () => {
|
|
123
|
+
describe('prefersSwipeGesture()', () => {
|
|
124
|
+
let toast;
|
|
125
|
+
beforeEach(() => {
|
|
126
|
+
toast = new Toast();
|
|
127
|
+
});
|
|
128
|
+
it('should return true if set to a valid swipe value', () => {
|
|
129
|
+
toast.swipeGesture = 'vertical';
|
|
130
|
+
expect(toast.prefersSwipeGesture()).toBe(true);
|
|
131
|
+
});
|
|
132
|
+
it('should return false if set to undefined', () => {
|
|
133
|
+
toast.swipeGesture = undefined;
|
|
134
|
+
expect(toast.prefersSwipeGesture()).toBe(false);
|
|
135
|
+
});
|
|
136
|
+
it('should return false if set to null', () => {
|
|
137
|
+
toast.swipeGesture = null;
|
|
138
|
+
expect(toast.prefersSwipeGesture()).toBe(false);
|
|
139
|
+
});
|
|
140
|
+
it('should return false if set to invalid string', () => {
|
|
141
|
+
toast.swipeGesture = 'limit'; // `'limit'` doesn't exist
|
|
142
|
+
expect(toast.prefersSwipeGesture()).toBe(false);
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
describe('swipeGesture property', () => {
|
|
146
|
+
let toast;
|
|
147
|
+
beforeEach(() => {
|
|
148
|
+
toast = new Toast();
|
|
149
|
+
// Stub the enter animation so we aren't querying elements in the DOM that may not exist
|
|
150
|
+
toast.enterAnimation = () => createAnimation();
|
|
151
|
+
});
|
|
152
|
+
it('should not create a swipe gesture on present if swipeGesture is undefined', async () => {
|
|
153
|
+
expect(toast.gesture).toBe(undefined);
|
|
154
|
+
await toast.present();
|
|
155
|
+
expect(toast.gesture).toBe(undefined);
|
|
156
|
+
});
|
|
157
|
+
it('should create a swipe gesture on present', async () => {
|
|
158
|
+
toast.swipeGesture = 'vertical';
|
|
159
|
+
expect(toast.gesture).toBe(undefined);
|
|
160
|
+
await toast.present();
|
|
161
|
+
expect(toast.gesture).not.toBe(undefined);
|
|
162
|
+
});
|
|
163
|
+
it('should destroy a swipe gesture on dismiss', async () => {
|
|
164
|
+
toast.swipeGesture = 'vertical';
|
|
165
|
+
await toast.present();
|
|
166
|
+
expect(toast.gesture).not.toBe(undefined);
|
|
167
|
+
await toast.dismiss();
|
|
168
|
+
expect(toast.gesture).toBe(undefined);
|
|
169
|
+
});
|
|
170
|
+
it('should create a swipe gesture if swipeGesture is set after present', async () => {
|
|
171
|
+
await toast.present();
|
|
172
|
+
expect(toast.gesture).toBe(undefined);
|
|
173
|
+
/**
|
|
174
|
+
* Manually invoke the watch
|
|
175
|
+
* callback synchronously.
|
|
176
|
+
*/
|
|
177
|
+
toast.swipeGesture = 'vertical';
|
|
178
|
+
toast.swipeGestureChanged();
|
|
179
|
+
expect(toast.gesture).not.toBe(undefined);
|
|
180
|
+
});
|
|
181
|
+
it('should destroy a swipe gesture if swipeGesture is cleared after present', async () => {
|
|
182
|
+
toast.swipeGesture = 'vertical';
|
|
183
|
+
await toast.present();
|
|
184
|
+
expect(toast.gesture).not.toBe(undefined);
|
|
185
|
+
/**
|
|
186
|
+
* Manually invoke the watch
|
|
187
|
+
* callback synchronously.
|
|
188
|
+
*/
|
|
189
|
+
toast.swipeGesture = undefined;
|
|
190
|
+
toast.swipeGestureChanged();
|
|
191
|
+
expect(toast.gesture).toBe(undefined);
|
|
192
|
+
});
|
|
193
|
+
it('should not create a swipe gesture if the toast is not presented', async () => {
|
|
194
|
+
expect(toast.gesture).toBe(undefined);
|
|
195
|
+
toast.swipeGesture = 'vertical';
|
|
196
|
+
toast.swipeGestureChanged();
|
|
197
|
+
expect(toast.gesture).toBe(undefined);
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
});
|
|
@@ -189,6 +189,16 @@
|
|
|
189
189
|
}
|
|
190
190
|
}
|
|
191
191
|
|
|
192
|
+
.toast-wrapper.toast-top {
|
|
193
|
+
transform: translate3d(0, -100%, 0);
|
|
194
|
+
top: 0;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.toast-wrapper.toast-bottom {
|
|
198
|
+
transform: translate3d(0, 100%, 0);
|
|
199
|
+
bottom: 0;
|
|
200
|
+
}
|
|
201
|
+
|
|
192
202
|
.toast-container {
|
|
193
203
|
display: flex;
|
|
194
204
|
align-items: center;
|
|
@@ -343,20 +353,10 @@
|
|
|
343
353
|
background: rgba(var(--ion-color-base-rgb), 0.8);
|
|
344
354
|
}
|
|
345
355
|
}
|
|
346
|
-
.toast-wrapper.toast-top {
|
|
347
|
-
transform: translate3d(0, -100%, 0);
|
|
348
|
-
top: 0;
|
|
349
|
-
}
|
|
350
|
-
|
|
351
356
|
.toast-wrapper.toast-middle {
|
|
352
357
|
opacity: 0.01;
|
|
353
358
|
}
|
|
354
359
|
|
|
355
|
-
.toast-wrapper.toast-bottom {
|
|
356
|
-
transform: translate3d(0, 100%, 0);
|
|
357
|
-
bottom: 0;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
360
|
.toast-content {
|
|
361
361
|
-webkit-padding-start: 15px;
|
|
362
362
|
padding-inline-start: 15px;
|
|
@@ -6,7 +6,7 @@ import { ENABLE_HTML_CONTENT_DEFAULT } from "../../utils/config";
|
|
|
6
6
|
import { raf } from "../../utils/helpers";
|
|
7
7
|
import { createLockController } from "../../utils/lock-controller";
|
|
8
8
|
import { printIonWarning } from "../../utils/logging/index";
|
|
9
|
-
import { createDelegateController, createTriggerController, dismiss, eventMethod, isCancel, prepareOverlay, present, safeCall, setOverlayId, } from "../../utils/overlays";
|
|
9
|
+
import { GESTURE, createDelegateController, createTriggerController, dismiss, eventMethod, isCancel, prepareOverlay, present, safeCall, setOverlayId, } from "../../utils/overlays";
|
|
10
10
|
import { sanitizeDOMString } from "../../utils/sanitization/index";
|
|
11
11
|
import { createColorClasses, getClassMap } from "../../utils/theme";
|
|
12
12
|
import { config } from "../../global/config";
|
|
@@ -16,6 +16,7 @@ import { iosLeaveAnimation } from "./animations/ios.leave";
|
|
|
16
16
|
import { mdEnterAnimation } from "./animations/md.enter";
|
|
17
17
|
import { mdLeaveAnimation } from "./animations/md.leave";
|
|
18
18
|
import { getAnimationPosition } from "./animations/utils";
|
|
19
|
+
import { createSwipeToDismissGesture } from "./gestures/swipe-to-dismiss";
|
|
19
20
|
// TODO(FW-2832): types
|
|
20
21
|
/**
|
|
21
22
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
@@ -41,6 +42,41 @@ export class Toast {
|
|
|
41
42
|
this.callButtonHandler(cancelButton);
|
|
42
43
|
}
|
|
43
44
|
};
|
|
45
|
+
/**
|
|
46
|
+
* Create a new swipe gesture so Toast
|
|
47
|
+
* can be swiped to dismiss.
|
|
48
|
+
*/
|
|
49
|
+
this.createSwipeGesture = (toastPosition) => {
|
|
50
|
+
const gesture = (this.gesture = createSwipeToDismissGesture(this.el, toastPosition, () => {
|
|
51
|
+
/**
|
|
52
|
+
* If the gesture completed then
|
|
53
|
+
* we should dismiss the toast.
|
|
54
|
+
*/
|
|
55
|
+
this.dismiss(undefined, GESTURE);
|
|
56
|
+
}));
|
|
57
|
+
gesture.enable(true);
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Destroy an existing swipe gesture
|
|
61
|
+
* so Toast can no longer be swiped to dismiss.
|
|
62
|
+
*/
|
|
63
|
+
this.destroySwipeGesture = () => {
|
|
64
|
+
const { gesture } = this;
|
|
65
|
+
if (gesture === undefined) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
gesture.destroy();
|
|
69
|
+
this.gesture = undefined;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Returns `true` if swipeGesture
|
|
73
|
+
* is configured to a value that enables the swipe behavior.
|
|
74
|
+
* Returns `false` otherwise.
|
|
75
|
+
*/
|
|
76
|
+
this.prefersSwipeGesture = () => {
|
|
77
|
+
const { swipeGesture } = this;
|
|
78
|
+
return swipeGesture === 'vertical';
|
|
79
|
+
};
|
|
44
80
|
this.revealContentToScreenReader = false;
|
|
45
81
|
this.overlayIndex = undefined;
|
|
46
82
|
this.delegate = undefined;
|
|
@@ -61,9 +97,37 @@ export class Toast {
|
|
|
61
97
|
this.animated = true;
|
|
62
98
|
this.icon = undefined;
|
|
63
99
|
this.htmlAttributes = undefined;
|
|
100
|
+
this.swipeGesture = undefined;
|
|
64
101
|
this.isOpen = false;
|
|
65
102
|
this.trigger = undefined;
|
|
66
103
|
}
|
|
104
|
+
swipeGestureChanged() {
|
|
105
|
+
/**
|
|
106
|
+
* If the Toast is presented, then we need to destroy
|
|
107
|
+
* any actives gestures before a new gesture is potentially
|
|
108
|
+
* created below.
|
|
109
|
+
*
|
|
110
|
+
* If the Toast is dismissed, then no gesture should be available
|
|
111
|
+
* since the Toast is not visible. This case should never
|
|
112
|
+
* happen since the "dismiss" method handles destroying
|
|
113
|
+
* any active swipe gestures, but we keep this code
|
|
114
|
+
* around to handle the first case.
|
|
115
|
+
*/
|
|
116
|
+
this.destroySwipeGesture();
|
|
117
|
+
/**
|
|
118
|
+
* A new swipe gesture should only be created
|
|
119
|
+
* if the Toast is presented. If the Toast is not
|
|
120
|
+
* yet presented then the "present" method will
|
|
121
|
+
* handle calling the swipe gesture setup function.
|
|
122
|
+
*/
|
|
123
|
+
if (this.presented && this.prefersSwipeGesture()) {
|
|
124
|
+
/**
|
|
125
|
+
* If the Toast is presented then
|
|
126
|
+
* lastPresentedPosition is defined.
|
|
127
|
+
*/
|
|
128
|
+
this.createSwipeGesture(this.lastPresentedPosition);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
67
131
|
onIsOpenChange(newValue, oldValue) {
|
|
68
132
|
if (newValue === true && oldValue === false) {
|
|
69
133
|
this.present();
|
|
@@ -125,6 +189,14 @@ export class Toast {
|
|
|
125
189
|
if (this.duration > 0) {
|
|
126
190
|
this.durationTimeout = setTimeout(() => this.dismiss(undefined, 'timeout'), this.duration);
|
|
127
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* If the Toast has a swipe gesture then we can
|
|
194
|
+
* create the gesture so users can swipe the
|
|
195
|
+
* presented Toast.
|
|
196
|
+
*/
|
|
197
|
+
if (this.prefersSwipeGesture()) {
|
|
198
|
+
this.createSwipeGesture(animationPosition);
|
|
199
|
+
}
|
|
128
200
|
unlock();
|
|
129
201
|
}
|
|
130
202
|
/**
|
|
@@ -159,6 +231,11 @@ export class Toast {
|
|
|
159
231
|
this.revealContentToScreenReader = false;
|
|
160
232
|
}
|
|
161
233
|
this.lastPresentedPosition = undefined;
|
|
234
|
+
/**
|
|
235
|
+
* If the Toast has a swipe gesture then we can
|
|
236
|
+
* safely destroy it now that it is dismissed.
|
|
237
|
+
*/
|
|
238
|
+
this.destroySwipeGesture();
|
|
162
239
|
unlock();
|
|
163
240
|
return dismissed;
|
|
164
241
|
}
|
|
@@ -699,6 +776,29 @@ export class Toast {
|
|
|
699
776
|
"text": "Additional attributes to pass to the toast."
|
|
700
777
|
}
|
|
701
778
|
},
|
|
779
|
+
"swipeGesture": {
|
|
780
|
+
"type": "string",
|
|
781
|
+
"mutable": false,
|
|
782
|
+
"complexType": {
|
|
783
|
+
"original": "ToastSwipeGestureDirection",
|
|
784
|
+
"resolved": "\"vertical\" | undefined",
|
|
785
|
+
"references": {
|
|
786
|
+
"ToastSwipeGestureDirection": {
|
|
787
|
+
"location": "import",
|
|
788
|
+
"path": "./toast-interface",
|
|
789
|
+
"id": "src/components/toast/toast-interface.ts::ToastSwipeGestureDirection"
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
},
|
|
793
|
+
"required": false,
|
|
794
|
+
"optional": true,
|
|
795
|
+
"docs": {
|
|
796
|
+
"tags": [],
|
|
797
|
+
"text": "If set to 'vertical', the Toast can be dismissed with\na swipe gesture. The swipe direction is determined by\nthe value of the `position` property:\n`top`: The Toast can be swiped up to dismiss.\n`bottom`: The Toast can be swiped down to dismiss.\n`middle`: The Toast can be swiped up or down to dismiss."
|
|
798
|
+
},
|
|
799
|
+
"attribute": "swipe-gesture",
|
|
800
|
+
"reflect": false
|
|
801
|
+
},
|
|
702
802
|
"isOpen": {
|
|
703
803
|
"type": "boolean",
|
|
704
804
|
"mutable": false,
|
|
@@ -1009,6 +1109,9 @@ export class Toast {
|
|
|
1009
1109
|
static get elementRef() { return "el"; }
|
|
1010
1110
|
static get watchers() {
|
|
1011
1111
|
return [{
|
|
1112
|
+
"propName": "swipeGesture",
|
|
1113
|
+
"methodName": "swipeGestureChanged"
|
|
1114
|
+
}, {
|
|
1012
1115
|
"propName": "isOpen",
|
|
1013
1116
|
"methodName": "onIsOpenChange"
|
|
1014
1117
|
}, {
|
|
@@ -189,6 +189,16 @@
|
|
|
189
189
|
}
|
|
190
190
|
}
|
|
191
191
|
|
|
192
|
+
.toast-wrapper.toast-top {
|
|
193
|
+
transform: translate3d(0, -100%, 0);
|
|
194
|
+
top: 0;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.toast-wrapper.toast-bottom {
|
|
198
|
+
transform: translate3d(0, 100%, 0);
|
|
199
|
+
bottom: 0;
|
|
200
|
+
}
|
|
201
|
+
|
|
192
202
|
.toast-container {
|
|
193
203
|
display: flex;
|
|
194
204
|
align-items: center;
|
|
@@ -463,6 +463,16 @@ export const createAnimation = (animationId) => {
|
|
|
463
463
|
}
|
|
464
464
|
}
|
|
465
465
|
});
|
|
466
|
+
/**
|
|
467
|
+
* Clean up any value coercion before
|
|
468
|
+
* the user callbacks fire otherwise
|
|
469
|
+
* they may get stale values. For example,
|
|
470
|
+
* if someone calls progressStart(0) the
|
|
471
|
+
* animation may still be reversed.
|
|
472
|
+
*/
|
|
473
|
+
forceDurationValue = undefined;
|
|
474
|
+
forceDirectionValue = undefined;
|
|
475
|
+
forceDelayValue = undefined;
|
|
466
476
|
onFinishCallbacks.forEach((onFinishCallback) => {
|
|
467
477
|
return onFinishCallback.c(currentStep, ani);
|
|
468
478
|
});
|
|
@@ -667,17 +677,8 @@ export const createAnimation = (animationId) => {
|
|
|
667
677
|
update(false, false);
|
|
668
678
|
}
|
|
669
679
|
}
|
|
670
|
-
if (playTo !== undefined) {
|
|
671
|
-
|
|
672
|
-
forceDurationValue = undefined;
|
|
673
|
-
forceDirectionValue = undefined;
|
|
674
|
-
forceDelayValue = undefined;
|
|
675
|
-
}, {
|
|
676
|
-
oneTimeCallback: true,
|
|
677
|
-
});
|
|
678
|
-
if (!parentAnimation) {
|
|
679
|
-
play();
|
|
680
|
-
}
|
|
680
|
+
if (playTo !== undefined && !parentAnimation) {
|
|
681
|
+
play();
|
|
681
682
|
}
|
|
682
683
|
return ani;
|
|
683
684
|
};
|
|
@@ -5,6 +5,22 @@ import { createAnimation } from "../animation";
|
|
|
5
5
|
import { processKeyframes } from "../animation-utils";
|
|
6
6
|
import { getTimeGivenProgression } from "../cubic-bezier";
|
|
7
7
|
describe('Animation Class', () => {
|
|
8
|
+
describe('progressEnd callbacks', () => {
|
|
9
|
+
test('coerced state should be reset before onFinish runs', (done) => {
|
|
10
|
+
const el = document.createElement('div');
|
|
11
|
+
const animation = createAnimation()
|
|
12
|
+
.addElement(el)
|
|
13
|
+
.fromTo('transform', 'translateX(0px)', 'translateX(100px)')
|
|
14
|
+
.duration(50);
|
|
15
|
+
animation
|
|
16
|
+
.onFinish(() => {
|
|
17
|
+
expect(animation.getDirection()).toBe('normal');
|
|
18
|
+
expect(animation.getDuration()).toBe(50);
|
|
19
|
+
done();
|
|
20
|
+
})
|
|
21
|
+
.progressEnd(0, 0.5, 10);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
8
24
|
describe('play()', () => {
|
|
9
25
|
it('should resolve when the animation is cancelled', async () => {
|
|
10
26
|
// Tell Jest to expect 1 assertion for async code
|
|
@@ -1,27 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
/**
|
|
5
|
-
* When accessing the document or window, it is important
|
|
6
|
-
* to account for SSR applications where the
|
|
7
|
-
* window is not available. Code that accesses
|
|
8
|
-
* window when it is not available will crash.
|
|
9
|
-
* Even checking if `window === undefined` will cause
|
|
10
|
-
* apps to crash in SSR.
|
|
11
|
-
*
|
|
12
|
-
* Use win below to access an SSR-safe version
|
|
13
|
-
* of the window.
|
|
14
|
-
*
|
|
15
|
-
* Example 1:
|
|
16
|
-
* Before:
|
|
17
|
-
* if (window.innerWidth > 768) { ... }
|
|
18
|
-
*
|
|
19
|
-
* After:
|
|
20
|
-
* import { win } from 'path/to/this/file';
|
|
21
|
-
* if (win?.innerWidth > 768) { ... }
|
|
22
|
-
*
|
|
23
|
-
* Note: Code inside of this if-block will
|
|
24
|
-
* not run in an SSR environment.
|
|
25
|
-
*/
|
|
26
4
|
export const win = typeof window !== 'undefined' ? window : undefined;
|
|
27
5
|
export const doc = typeof document !== 'undefined' ? document : undefined;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Uses the compareWith param to compare two values to determine if they are equal.
|
|
6
|
+
*
|
|
7
|
+
* @param currentValue The current value of the control.
|
|
8
|
+
* @param compareValue The value to compare against.
|
|
9
|
+
* @param compareWith The function or property name to use to compare values.
|
|
10
|
+
*/
|
|
11
|
+
export const compareOptions = (currentValue, compareValue, compareWith) => {
|
|
12
|
+
if (typeof compareWith === 'function') {
|
|
13
|
+
return compareWith(currentValue, compareValue);
|
|
14
|
+
}
|
|
15
|
+
else if (typeof compareWith === 'string') {
|
|
16
|
+
return currentValue[compareWith] === compareValue[compareWith];
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
return Array.isArray(compareValue) ? compareValue.includes(currentValue) : currentValue === compareValue;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Compares a value against the current value(s) to determine if it is selected.
|
|
24
|
+
*
|
|
25
|
+
* @param currentValue The current value of the control.
|
|
26
|
+
* @param compareValue The value to compare against.
|
|
27
|
+
* @param compareWith The function or property name to use to compare values.
|
|
28
|
+
*/
|
|
29
|
+
export const isOptionSelected = (currentValue, compareValue, compareWith) => {
|
|
30
|
+
if (currentValue === undefined) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
if (Array.isArray(currentValue)) {
|
|
34
|
+
return currentValue.some((val) => compareOptions(val, compareValue, compareWith));
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
return compareOptions(currentValue, compareValue, compareWith);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
+
import { doc } from "../browser/index";
|
|
4
5
|
import { findClosestIonContent } from "../content";
|
|
5
6
|
import { componentOnReady } from "../helpers";
|
|
6
7
|
import { Keyboard } from "../native/keyboard";
|
|
@@ -11,7 +12,13 @@ const INPUT_BLURRING = true;
|
|
|
11
12
|
const SCROLL_ASSIST = true;
|
|
12
13
|
const HIDE_CARET = true;
|
|
13
14
|
export const startInputShims = async (config, platform) => {
|
|
14
|
-
|
|
15
|
+
/**
|
|
16
|
+
* If doc is undefined then we are in an SSR environment
|
|
17
|
+
* where input shims do not apply.
|
|
18
|
+
*/
|
|
19
|
+
if (doc === undefined) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
15
22
|
const isIOS = platform === 'ios';
|
|
16
23
|
const isAndroid = platform === 'android';
|
|
17
24
|
/**
|
|
@@ -90,11 +97,10 @@ export const startInputShims = async (config, platform) => {
|
|
|
90
97
|
for (const input of inputs) {
|
|
91
98
|
registerInput(input);
|
|
92
99
|
}
|
|
93
|
-
|
|
94
|
-
doc.addEventListener('ionInputDidLoad', ((ev) => {
|
|
100
|
+
doc.addEventListener('ionInputDidLoad', (ev) => {
|
|
95
101
|
registerInput(ev.detail);
|
|
96
|
-
})
|
|
97
|
-
doc.addEventListener('ionInputDidUnload', (
|
|
102
|
+
});
|
|
103
|
+
doc.addEventListener('ionInputDidUnload', (ev) => {
|
|
98
104
|
unregisterInput(ev.detail);
|
|
99
|
-
})
|
|
105
|
+
});
|
|
100
106
|
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { doc } from "../browser/index";
|
|
5
5
|
import { MENU_BACK_BUTTON_PRIORITY } from "../hardware-back-button";
|
|
6
|
+
import { printIonWarning } from "../logging/index";
|
|
6
7
|
import { componentOnReady } from "../helpers";
|
|
7
8
|
import { menuOverlayAnimation } from "./animations/overlay";
|
|
8
9
|
import { menuPushAnimation } from "./animations/push";
|
|
@@ -184,17 +185,14 @@ const createMenuController = () => {
|
|
|
184
185
|
registerAnimation('reveal', menuRevealAnimation);
|
|
185
186
|
registerAnimation('push', menuPushAnimation);
|
|
186
187
|
registerAnimation('overlay', menuOverlayAnimation);
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
}
|
|
196
|
-
});
|
|
197
|
-
}
|
|
188
|
+
doc === null || doc === void 0 ? void 0 : doc.addEventListener('ionBackButton', (ev) => {
|
|
189
|
+
const openMenu = _getOpenSync();
|
|
190
|
+
if (openMenu) {
|
|
191
|
+
ev.detail.register(MENU_BACK_BUTTON_PRIORITY, () => {
|
|
192
|
+
return openMenu.close();
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
});
|
|
198
196
|
return {
|
|
199
197
|
registerAnimation,
|
|
200
198
|
get,
|
|
@@ -5,7 +5,6 @@ import { doc } from "./browser/index";
|
|
|
5
5
|
import { config } from "../global/config";
|
|
6
6
|
import { getIonMode } from "../global/ionic-global";
|
|
7
7
|
import { CoreDelegate } from "./framework-delegate";
|
|
8
|
-
import { BACKDROP_NO_SCROLL } from "./gesture/gesture-controller";
|
|
9
8
|
import { OVERLAY_BACK_BUTTON_PRIORITY } from "./hardware-back-button";
|
|
10
9
|
import { addEventListener, componentOnReady, focusElement, getElementRoot, removeEventListener } from "./helpers";
|
|
11
10
|
import { printIonWarning } from "./logging";
|
|
@@ -29,10 +28,7 @@ export const alertController = /*@__PURE__*/ createController('ion-alert');
|
|
|
29
28
|
export const actionSheetController = /*@__PURE__*/ createController('ion-action-sheet');
|
|
30
29
|
export const loadingController = /*@__PURE__*/ createController('ion-loading');
|
|
31
30
|
export const modalController = /*@__PURE__*/ createController('ion-modal');
|
|
32
|
-
|
|
33
|
-
* @deprecated Use the inline ion-picker component instead.
|
|
34
|
-
*/
|
|
35
|
-
export const pickerController = /*@__PURE__*/ createController('ion-picker-legacy');
|
|
31
|
+
export const pickerController = /*@__PURE__*/ createController('ion-picker');
|
|
36
32
|
export const popoverController = /*@__PURE__*/ createController('ion-popover');
|
|
37
33
|
export const toastController = /*@__PURE__*/ createController('ion-toast');
|
|
38
34
|
/**
|
|
@@ -142,7 +138,7 @@ const focusLastDescendant = (ref, overlay) => {
|
|
|
142
138
|
* Should NOT include: Toast
|
|
143
139
|
*/
|
|
144
140
|
const trapKeyboardFocus = (ev, doc) => {
|
|
145
|
-
const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker
|
|
141
|
+
const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover');
|
|
146
142
|
const target = ev.target;
|
|
147
143
|
/**
|
|
148
144
|
* If no active overlay, ignore this event.
|
|
@@ -327,7 +323,7 @@ export const dismissOverlay = (doc, data, role, overlayTag, id) => {
|
|
|
327
323
|
*/
|
|
328
324
|
export const getOverlays = (doc, selector) => {
|
|
329
325
|
if (selector === undefined) {
|
|
330
|
-
selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker
|
|
326
|
+
selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover,ion-toast';
|
|
331
327
|
}
|
|
332
328
|
return Array.from(doc.querySelectorAll(selector)).filter((c) => c.overlayIndex > 0);
|
|
333
329
|
};
|
|
@@ -393,7 +389,6 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
393
389
|
return;
|
|
394
390
|
}
|
|
395
391
|
setRootAriaHidden(true);
|
|
396
|
-
document.body.classList.add(BACKDROP_NO_SCROLL);
|
|
397
392
|
overlay.presented = true;
|
|
398
393
|
overlay.willPresent.emit();
|
|
399
394
|
(_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
|
|
@@ -456,14 +451,12 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
|
|
|
456
451
|
if (!overlay.presented) {
|
|
457
452
|
return false;
|
|
458
453
|
}
|
|
459
|
-
const lastOverlay = doc !== undefined && getPresentedOverlays(doc).length === 1;
|
|
460
454
|
/**
|
|
461
455
|
* If this is the last visible overlay then
|
|
462
456
|
* we want to re-add the root to the accessibility tree.
|
|
463
457
|
*/
|
|
464
|
-
if (
|
|
458
|
+
if (doc !== undefined && getPresentedOverlays(doc).length === 1) {
|
|
465
459
|
setRootAriaHidden(false);
|
|
466
|
-
document.body.classList.remove(BACKDROP_NO_SCROLL);
|
|
467
460
|
}
|
|
468
461
|
overlay.presented = false;
|
|
469
462
|
try {
|
|
@@ -569,6 +562,7 @@ export const safeCall = (handler, arg) => {
|
|
|
569
562
|
};
|
|
570
563
|
export const BACKDROP = 'backdrop';
|
|
571
564
|
export const GESTURE = 'gesture';
|
|
565
|
+
export const OVERLAY_GESTURE_PRIORITY = 39;
|
|
572
566
|
/**
|
|
573
567
|
* Creates a delegate controller.
|
|
574
568
|
*
|
|
@@ -9,13 +9,14 @@ import { raf } from "./helpers";
|
|
|
9
9
|
* This is not needed for components using native slots in the Shadow DOM.
|
|
10
10
|
* @internal
|
|
11
11
|
* @param el The host element to observe
|
|
12
|
-
* @param slotName mutationCallback will fire when nodes on
|
|
12
|
+
* @param slotName mutationCallback will fire when nodes on these slot(s) change
|
|
13
13
|
* @param mutationCallback The callback to fire whenever the slotted content changes
|
|
14
14
|
*/
|
|
15
15
|
export const createSlotMutationController = (el, slotName, mutationCallback) => {
|
|
16
16
|
let hostMutationObserver;
|
|
17
17
|
let slottedContentMutationObserver;
|
|
18
18
|
if (win !== undefined && 'MutationObserver' in win) {
|
|
19
|
+
const slots = Array.isArray(slotName) ? slotName : [slotName];
|
|
19
20
|
hostMutationObserver = new MutationObserver((entries) => {
|
|
20
21
|
for (const entry of entries) {
|
|
21
22
|
for (const node of entry.addedNodes) {
|
|
@@ -23,7 +24,7 @@ export const createSlotMutationController = (el, slotName, mutationCallback) =>
|
|
|
23
24
|
* Check to see if the added node
|
|
24
25
|
* is our slotted content.
|
|
25
26
|
*/
|
|
26
|
-
if (node.nodeType === Node.ELEMENT_NODE && node.slot
|
|
27
|
+
if (node.nodeType === Node.ELEMENT_NODE && slots.includes(node.slot)) {
|
|
27
28
|
/**
|
|
28
29
|
* If so, we want to watch the slotted
|
|
29
30
|
* content itself for changes. This lets us
|