@ionic/core 7.5.4-dev.11701112913.1ea61220 → 7.5.4-dev.11702935369.11a4baba
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 +11 -12
- package/components/checkbox.js +0 -2
- package/components/index4.js +12 -10
- package/components/index5.js +22 -0
- package/components/input-shims.js +7 -12
- package/components/input.utils.js +2 -3
- package/components/ion-datetime.js +2 -2
- package/components/ion-input.js +8 -31
- package/components/ion-modal.js +2 -2
- package/components/ion-range.js +0 -2
- package/components/ion-select.js +29 -44
- package/components/ion-skeleton-text.js +1 -14
- package/components/ion-textarea.js +7 -30
- package/components/ion-toast.js +74 -419
- package/components/ion-toggle.js +0 -2
- package/components/item.js +2 -2
- package/components/label.js +2 -2
- package/components/overlays.js +1 -2
- package/components/radio-group.js +0 -2
- package/components/radio.js +2 -42
- package/dist/cjs/{animation-d101aa7a.js → animation-1083855c.js} +12 -13
- package/dist/cjs/{app-globals-ef077808.js → app-globals-d1892126.js} +1 -1
- package/dist/cjs/{button-active-69c3bee4.js → button-active-e93ab34d.js} +2 -2
- package/dist/cjs/{capacitor-f68447d3.js → capacitor-2ffba62a.js} +1 -1
- package/dist/cjs/{haptic-a74c2767.js → haptic-678abc9f.js} +1 -1
- package/dist/cjs/index-306a7476.js +32 -0
- package/dist/cjs/{index-9146d04a.js → index-4323b635.js} +14 -12
- package/dist/cjs/{index-adbcffee.js → index-84c4c696.js} +3 -3
- package/dist/cjs/{index-e9634bc9.js → index-9f379eaa.js} +1 -1
- package/dist/cjs/index.cjs.js +10 -10
- package/dist/cjs/{input-shims-3e3f35b9.js → input-shims-b0a75a01.js} +10 -15
- package/dist/cjs/{input.utils-bdb6953c.js → input.utils-0fe3097c.js} +3 -4
- package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -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 +11 -11
- package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-back-button.cjs.entry.js +3 -3
- package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
- package/dist/cjs/ion-checkbox.cjs.entry.js +2 -4
- package/dist/cjs/ion-chip.cjs.entry.js +2 -2
- package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime_3.cjs.entry.js +10 -10
- package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-img.cjs.entry.js +2 -2
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-input.cjs.entry.js +14 -37
- package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-item_8.cjs.entry.js +7 -20
- package/dist/cjs/ion-loading.cjs.entry.js +5 -5
- package/dist/cjs/ion-menu_3.cjs.entry.js +8 -8
- package/dist/cjs/ion-modal.cjs.entry.js +10 -10
- package/dist/cjs/ion-nav_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-picker-column-internal.cjs.entry.js +5 -5
- package/dist/cjs/ion-picker-internal.cjs.entry.js +1 -1
- package/dist/cjs/ion-popover.cjs.entry.js +6 -6
- package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
- package/dist/cjs/ion-radio_2.cjs.entry.js +3 -8
- package/dist/cjs/ion-range.cjs.entry.js +2 -4
- package/dist/cjs/ion-refresher_2.cjs.entry.js +7 -7
- package/dist/cjs/ion-reorder_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
- package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
- package/dist/cjs/ion-searchbar.cjs.entry.js +3 -3
- package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-select_3.cjs.entry.js +38 -54
- package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
- package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-text.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +12 -35
- package/dist/cjs/ion-toast.cjs.entry.js +93 -435
- package/dist/cjs/ion-toggle.cjs.entry.js +6 -8
- package/dist/cjs/{ionic-global-4538d91c.js → ionic-global-91f1f8f2.js} +1 -1
- package/dist/cjs/ionic.cjs.js +4 -4
- package/dist/cjs/{ios.transition-7972d9e3.js → ios.transition-facbe500.js} +4 -4
- package/dist/cjs/{keyboard-840107b3.js → keyboard-38f2bb7b.js} +3 -3
- package/dist/cjs/{keyboard-controller-019f42df.js → keyboard-controller-50beb83a.js} +2 -2
- package/dist/cjs/{keyboard-43df0428.js → keyboard-fd7db491.js} +1 -1
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-6e61a10f.js → md.transition-0a7d53f1.js} +4 -4
- package/dist/cjs/{notch-controller-c22d1344.js → notch-controller-f4f6af5d.js} +1 -1
- package/dist/cjs/{overlays-ba1a1e21.js → overlays-91bb8ff7.js} +2 -4
- package/dist/cjs/{status-tap-2e9f9c86.js → status-tap-a9d8edcf.js} +1 -1
- package/dist/collection/components/checkbox/checkbox.js +0 -2
- package/dist/collection/components/datetime/datetime.ios.css +0 -1
- package/dist/collection/components/datetime/datetime.md.css +0 -1
- package/dist/collection/components/icon/test/dir/heart-broken.svg +0 -0
- package/dist/collection/components/input/input.ios.css +3 -10
- package/dist/collection/components/input/input.js +6 -31
- package/dist/collection/components/input/input.md.css +12 -13
- package/dist/collection/components/item/item.ios.css +15 -85
- package/dist/collection/components/item/item.md.css +15 -85
- package/dist/collection/components/item/test/basic/item.e2e.js +0 -26
- package/dist/collection/components/item/test/disabled/item.e2e.js +1 -0
- package/dist/collection/components/item/test/icons/heart-broken.svg +0 -0
- package/dist/collection/components/item/test/text/item.e2e.js +14 -0
- package/dist/collection/components/label/label.ios.css +3 -14
- package/dist/collection/components/label/label.md.css +3 -14
- package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -2
- package/dist/collection/components/note/test/a11y/note.e2e.js +0 -43
- package/dist/collection/components/radio/radio.js +2 -5
- package/dist/collection/components/radio-group/radio-group.js +0 -24
- package/dist/collection/components/range/range.js +0 -2
- package/dist/collection/components/select/select.ios.css +7 -61
- package/dist/collection/components/select/select.js +28 -45
- package/dist/collection/components/select/select.md.css +19 -64
- 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/skeleton-text/skeleton-text.js +0 -39
- package/dist/collection/components/textarea/textarea.ios.css +5 -37
- package/dist/collection/components/textarea/textarea.js +5 -30
- package/dist/collection/components/textarea/textarea.md.css +14 -47
- package/dist/collection/components/toast/animations/ios.enter.js +1 -2
- package/dist/collection/components/toast/animations/md.enter.js +3 -4
- package/dist/collection/components/toast/animations/utils.js +14 -20
- package/dist/collection/components/toast/toast.ios.css +10 -10
- package/dist/collection/components/toast/toast.js +1 -104
- package/dist/collection/components/toast/toast.md.css +0 -10
- package/dist/collection/components/toggle/toggle.js +0 -2
- package/dist/collection/utils/animation/animation.js +11 -12
- package/dist/collection/utils/browser/index.js +22 -0
- package/dist/collection/utils/forms/index.js +0 -1
- package/dist/collection/utils/input-shims/input-shims.js +6 -12
- package/dist/collection/utils/menu-controller/index.js +12 -10
- package/dist/collection/utils/overlays.js +0 -1
- package/dist/collection/utils/slot-mutation-controller.js +2 -3
- package/dist/docs.json +2 -127
- package/dist/esm/{animation-cf3dd234.js → animation-8aa13916.js} +12 -13
- package/dist/esm/{app-globals-ba8b3a06.js → app-globals-8d413354.js} +1 -1
- package/dist/esm/{button-active-109ba60d.js → button-active-c7a04c9a.js} +2 -2
- package/dist/esm/{capacitor-f1f25364.js → capacitor-b4979570.js} +1 -1
- package/dist/esm/{haptic-1a66d69f.js → haptic-1243b917.js} +1 -1
- package/dist/esm/index-7a14ecec.js +29 -0
- package/dist/esm/{index-50582f1c.js → index-d62333a6.js} +3 -3
- package/dist/esm/{index-6a48e009.js → index-e2052f20.js} +14 -12
- package/dist/esm/{index-c9e82353.js → index-f0cc4e14.js} +1 -1
- package/dist/esm/index.js +10 -10
- package/dist/esm/{input-shims-1d767845.js → input-shims-d0c93e5d.js} +9 -14
- package/dist/esm/{input.utils-2cf5e372.js → input.utils-ec063df4.js} +3 -4
- package/dist/esm/ion-accordion_2.entry.js +3 -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 +11 -11
- package/dist/esm/ion-avatar_3.entry.js +2 -2
- package/dist/esm/ion-back-button.entry.js +3 -3
- package/dist/esm/ion-backdrop.entry.js +2 -2
- package/dist/esm/ion-breadcrumb_2.entry.js +3 -3
- package/dist/esm/ion-button_2.entry.js +2 -2
- package/dist/esm/ion-card_5.entry.js +2 -2
- package/dist/esm/ion-checkbox.entry.js +2 -4
- package/dist/esm/ion-chip.entry.js +2 -2
- package/dist/esm/ion-col_3.entry.js +2 -2
- package/dist/esm/ion-datetime-button.entry.js +2 -2
- package/dist/esm/ion-datetime_3.entry.js +10 -10
- package/dist/esm/ion-fab_3.entry.js +3 -3
- package/dist/esm/ion-img.entry.js +2 -2
- package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
- package/dist/esm/ion-input.entry.js +14 -37
- package/dist/esm/ion-item-option_3.entry.js +2 -2
- package/dist/esm/ion-item_8.entry.js +7 -20
- package/dist/esm/ion-loading.entry.js +5 -5
- package/dist/esm/ion-menu_3.entry.js +8 -8
- package/dist/esm/ion-modal.entry.js +10 -10
- package/dist/esm/ion-nav_2.entry.js +3 -3
- package/dist/esm/ion-picker-column-internal.entry.js +5 -5
- package/dist/esm/ion-picker-internal.entry.js +1 -1
- package/dist/esm/ion-popover.entry.js +6 -6
- package/dist/esm/ion-progress-bar.entry.js +2 -2
- package/dist/esm/ion-radio_2.entry.js +3 -8
- package/dist/esm/ion-range.entry.js +2 -4
- package/dist/esm/ion-refresher_2.entry.js +7 -7
- package/dist/esm/ion-reorder_2.entry.js +6 -6
- package/dist/esm/ion-ripple-effect.entry.js +2 -2
- package/dist/esm/ion-route_4.entry.js +2 -2
- package/dist/esm/ion-searchbar.entry.js +3 -3
- package/dist/esm/ion-segment_2.entry.js +2 -2
- package/dist/esm/ion-select_3.entry.js +34 -50
- package/dist/esm/ion-spinner.entry.js +2 -2
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar_2.entry.js +6 -6
- package/dist/esm/ion-tab_2.entry.js +1 -1
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +12 -35
- package/dist/esm/ion-toast.entry.js +77 -419
- package/dist/esm/ion-toggle.entry.js +6 -8
- package/dist/esm/{ionic-global-7efdecd0.js → ionic-global-8673c5ce.js} +1 -1
- package/dist/esm/ionic.js +5 -5
- package/dist/esm/{ios.transition-e20d71bc.js → ios.transition-2fdb6f26.js} +4 -4
- package/dist/esm/{keyboard-b6230bfb.js → keyboard-b063f012.js} +1 -1
- package/dist/esm/{keyboard-9f771a04.js → keyboard-b551279d.js} +3 -3
- package/dist/esm/{keyboard-controller-3f0faa10.js → keyboard-controller-0c2dce71.js} +2 -2
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-a8469407.js → md.transition-6f8b3cd0.js} +4 -4
- package/dist/esm/{notch-controller-3f79197e.js → notch-controller-8c9c0e54.js} +1 -1
- package/dist/esm/{overlays-d79b34b4.js → overlays-d4c45da6.js} +3 -4
- package/dist/esm/polyfills/core-js.js +0 -0
- package/dist/esm/polyfills/dom.js +0 -0
- package/dist/esm/polyfills/es5-html-element.js +0 -0
- package/dist/esm/polyfills/index.js +0 -0
- package/dist/esm/polyfills/system.js +0 -0
- package/dist/esm/{status-tap-7ca28a1c.js → status-tap-71db1a8f.js} +1 -1
- package/dist/esm-es5/{animation-cf3dd234.js → animation-8aa13916.js} +1 -1
- package/dist/esm-es5/app-globals-8d413354.js +4 -0
- package/dist/esm-es5/{button-active-109ba60d.js → button-active-c7a04c9a.js} +1 -1
- package/dist/esm-es5/{capacitor-f1f25364.js → capacitor-b4979570.js} +1 -1
- package/dist/esm-es5/{haptic-1a66d69f.js → haptic-1243b917.js} +1 -1
- package/dist/esm-es5/{index-50582f1c.js → index-d62333a6.js} +1 -1
- package/dist/esm-es5/index-e2052f20.js +4 -0
- package/dist/esm-es5/index-f0cc4e14.js +4 -0
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/input-shims-d0c93e5d.js +4 -0
- package/dist/esm-es5/input.utils-ec063df4.js +4 -0
- 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-avatar_3.entry.js +1 -1
- package/dist/esm-es5/ion-back-button.entry.js +1 -1
- package/dist/esm-es5/ion-backdrop.entry.js +1 -1
- package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
- package/dist/esm-es5/ion-button_2.entry.js +1 -1
- package/dist/esm-es5/ion-card_5.entry.js +1 -1
- package/dist/esm-es5/ion-checkbox.entry.js +1 -1
- package/dist/esm-es5/ion-chip.entry.js +1 -1
- package/dist/esm-es5/ion-col_3.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-fab_3.entry.js +1 -1
- package/dist/esm-es5/ion-img.entry.js +1 -1
- package/dist/esm-es5/ion-infinite-scroll_2.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 +1 -1
- package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-progress-bar.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-ripple-effect.entry.js +1 -1
- package/dist/esm-es5/ion-route_4.entry.js +1 -1
- package/dist/esm-es5/ion-searchbar.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-spinner.entry.js +1 -1
- package/dist/esm-es5/ion-split-pane.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-text.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-global-7efdecd0.js → ionic-global-8673c5ce.js} +1 -1
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/{ios.transition-e20d71bc.js → ios.transition-2fdb6f26.js} +1 -1
- package/dist/esm-es5/{keyboard-b6230bfb.js → keyboard-b063f012.js} +1 -1
- package/dist/esm-es5/{keyboard-9f771a04.js → keyboard-b551279d.js} +1 -1
- package/dist/esm-es5/{keyboard-controller-3f0faa10.js → keyboard-controller-0c2dce71.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/md.transition-6f8b3cd0.js +4 -0
- package/dist/esm-es5/{notch-controller-3f79197e.js → notch-controller-8c9c0e54.js} +1 -1
- package/dist/esm-es5/{overlays-d79b34b4.js → overlays-d4c45da6.js} +1 -1
- package/dist/esm-es5/{status-tap-7ca28a1c.js → status-tap-71db1a8f.js} +1 -1
- package/dist/html.html-data.json +1 -14
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/ionic.js +1 -1
- package/dist/ionic/p-02863edb.system.js +4 -0
- package/dist/ionic/{p-bf3396e1.entry.js → p-0335e66c.entry.js} +1 -1
- package/dist/ionic/{p-1b5b6845.system.entry.js → p-076e622f.system.entry.js} +1 -1
- package/dist/ionic/{p-35787a6f.entry.js → p-08dcf03a.entry.js} +1 -1
- package/dist/ionic/{p-4c50b357.system.entry.js → p-091702af.system.entry.js} +1 -1
- package/dist/ionic/{p-e53f2605.entry.js → p-094dbfa5.entry.js} +1 -1
- package/dist/ionic/{p-1fc6b5a5.system.entry.js → p-0993782a.system.entry.js} +1 -1
- package/dist/ionic/p-0d8e9076.system.entry.js +4 -0
- package/dist/ionic/p-0f23c3a5.entry.js +4 -0
- package/dist/ionic/p-0f4f11eb.entry.js +4 -0
- package/dist/ionic/{p-8a9760f7.system.entry.js → p-10a2ab8c.system.entry.js} +1 -1
- package/dist/ionic/{p-3fc0b7ba.entry.js → p-1289df52.entry.js} +1 -1
- package/dist/ionic/{p-35e25602.system.entry.js → p-14be0381.system.entry.js} +1 -1
- package/dist/ionic/{p-2151a4a4.system.entry.js → p-153ea88b.system.entry.js} +1 -1
- package/dist/ionic/{p-e4d66e2d.system.entry.js → p-176a386b.system.entry.js} +1 -1
- package/dist/ionic/{p-15512a5e.system.entry.js → p-1acd1607.system.entry.js} +1 -1
- package/dist/ionic/{p-eec1aa12.system.entry.js → p-1b16c2ef.system.entry.js} +1 -1
- package/dist/ionic/{p-a3434028.system.entry.js → p-1df460d5.system.entry.js} +1 -1
- package/dist/ionic/{p-0148306b.system.js → p-1e87e3fb.system.js} +1 -1
- package/dist/ionic/{p-3962542f.system.entry.js → p-202654b4.system.entry.js} +1 -1
- package/dist/ionic/p-276afddd.js +4 -0
- package/dist/ionic/{p-ce20c101.entry.js → p-287d76e0.entry.js} +1 -1
- package/dist/ionic/{p-20ff4d7f.system.entry.js → p-2954d245.system.entry.js} +1 -1
- package/dist/ionic/p-2ac243b7.entry.js +4 -0
- package/dist/ionic/p-2e8e0045.js +4 -0
- package/dist/ionic/{p-138a4a93.entry.js → p-31589ed7.entry.js} +1 -1
- package/dist/ionic/{p-70bf6086.system.entry.js → p-3299adbf.system.entry.js} +1 -1
- package/dist/ionic/p-3602001b.system.js +4 -0
- package/dist/ionic/p-3632220b.system.js +4 -0
- package/dist/ionic/{p-3dedd258.system.entry.js → p-3878d22f.system.entry.js} +1 -1
- package/dist/ionic/{p-957f3028.system.entry.js → p-38fbf9f5.system.entry.js} +1 -1
- package/dist/ionic/{p-13dd7d20.system.js → p-3b3046e8.system.js} +1 -1
- package/dist/ionic/{p-e5fd9f10.js → p-3bad5c1a.js} +1 -1
- package/dist/ionic/{p-0c40f7d3.system.js → p-3d074f21.system.js} +1 -1
- package/dist/ionic/p-3daa6ecf.js +4 -0
- package/dist/ionic/{p-510bc27b.entry.js → p-40f5a803.entry.js} +1 -1
- package/dist/ionic/{p-958f1c70.system.js → p-41477ad9.system.js} +1 -1
- package/dist/ionic/{p-a135e3ba.js → p-419eb426.js} +1 -1
- package/dist/ionic/{p-0e8335b9.entry.js → p-44723fa5.entry.js} +1 -1
- package/dist/ionic/{p-5b978c94.system.js → p-4639874e.system.js} +2 -2
- package/dist/ionic/p-4c724478.entry.js +4 -0
- package/dist/ionic/{p-f6d089a7.entry.js → p-4d06fd5b.entry.js} +1 -1
- package/dist/ionic/{p-938c4956.js → p-4f91b9c6.js} +1 -1
- package/dist/ionic/{p-ed8a02a2.system.entry.js → p-51086b36.system.entry.js} +1 -1
- package/dist/ionic/{p-abaa9b48.system.js → p-5504ca9b.system.js} +1 -1
- package/dist/ionic/{p-020dd47f.entry.js → p-55a8f9a3.entry.js} +1 -1
- package/dist/ionic/p-5916b355.system.entry.js +4 -0
- package/dist/ionic/{p-bedc16f0.system.entry.js → p-5b9cb91d.system.entry.js} +1 -1
- package/dist/ionic/{p-2d86b19a.entry.js → p-6008efa0.entry.js} +1 -1
- package/dist/ionic/{p-cb6c380e.system.entry.js → p-664cb3ad.system.entry.js} +1 -1
- package/dist/ionic/p-67eecef4.system.js +4 -0
- package/dist/ionic/{p-27923249.system.entry.js → p-6a61d423.system.entry.js} +1 -1
- package/dist/ionic/{p-e525dbea.entry.js → p-6e4225ed.entry.js} +1 -1
- package/dist/ionic/{p-00a10b94.system.entry.js → p-793625e5.system.entry.js} +1 -1
- package/dist/ionic/{p-89703003.entry.js → p-7e6cf80c.entry.js} +1 -1
- package/dist/ionic/{p-c7138053.system.entry.js → p-7eaa28eb.system.entry.js} +1 -1
- package/dist/ionic/{p-696c63fb.system.entry.js → p-7fd77f56.system.entry.js} +1 -1
- package/dist/ionic/{p-11cb4e19.js → p-81c818e7.js} +1 -1
- package/dist/ionic/p-843fe6e3.entry.js +4 -0
- package/dist/ionic/p-8708a93c.entry.js +4 -0
- package/dist/ionic/{p-ab1908ba.system.entry.js → p-889118cf.system.entry.js} +1 -1
- package/dist/ionic/{p-9471d511.system.entry.js → p-88cfa8f1.system.entry.js} +1 -1
- package/dist/ionic/{p-edd568c5.js → p-8bda8767.js} +1 -1
- package/dist/ionic/p-8c44e074.system.entry.js +4 -0
- package/dist/ionic/{p-53f75103.system.js → p-8c63eccf.system.js} +1 -1
- package/dist/ionic/{p-5885e9af.js → p-8cf94fc1.js} +1 -1
- package/dist/ionic/p-8d9c5be5.system.entry.js +4 -0
- package/dist/ionic/{p-5a7df436.entry.js → p-8f518e79.entry.js} +1 -1
- package/dist/ionic/p-910c1904.system.entry.js +4 -0
- package/dist/ionic/{p-47826f19.entry.js → p-93a2c76b.entry.js} +1 -1
- package/dist/ionic/p-94154db4.js +4 -0
- package/dist/ionic/{p-c4381a06.entry.js → p-952c64ea.entry.js} +1 -1
- package/dist/ionic/{p-60f25049.js → p-959e7a7a.js} +1 -1
- package/dist/ionic/p-97c65aa5.js +4 -0
- package/dist/ionic/p-9ab6f3e6.system.js +4 -0
- package/dist/ionic/p-9c7a56f0.entry.js +4 -0
- package/dist/ionic/{p-51b94085.system.entry.js → p-9c933855.system.entry.js} +1 -1
- package/dist/ionic/{p-c2e199ac.entry.js → p-9da6eef4.entry.js} +1 -1
- package/dist/ionic/p-9e4bb700.entry.js +4 -0
- package/dist/ionic/{p-50375f3b.system.entry.js → p-a134a81b.system.entry.js} +1 -1
- package/dist/ionic/p-a30595f3.system.entry.js +4 -0
- package/dist/ionic/p-a3b6e1b2.entry.js +4 -0
- package/dist/ionic/{p-d3278cb8.entry.js → p-a7c33806.entry.js} +1 -1
- package/dist/ionic/p-a809a205.js +4 -0
- package/dist/ionic/{p-aec8a70a.system.js → p-ab4cff27.system.js} +1 -1
- package/dist/ionic/p-ad227931.system.js +4 -0
- package/dist/ionic/{p-5c7107b4.system.entry.js → p-ae2e4e30.system.entry.js} +1 -1
- package/dist/ionic/{p-8be2b964.entry.js → p-b1200f55.entry.js} +1 -1
- package/dist/ionic/{p-400a78f3.system.entry.js → p-b4085a03.system.entry.js} +1 -1
- package/dist/ionic/{p-9292fd42.system.js → p-b4b4bb29.system.js} +1 -1
- package/dist/ionic/{p-6a309574.js → p-b923f3d7.js} +1 -1
- package/dist/ionic/{p-25b8d65c.entry.js → p-b95cc39b.entry.js} +1 -1
- package/dist/ionic/{p-3e8d7ed8.js → p-b977b57a.js} +1 -1
- package/dist/ionic/{p-f9a641fa.system.js → p-bba2ce59.system.js} +1 -1
- package/dist/ionic/{p-d73eb00e.entry.js → p-bd946be0.entry.js} +1 -1
- package/dist/ionic/p-c096895d.system.js +4 -0
- package/dist/ionic/{p-a03566c4.system.entry.js → p-c2af8468.system.entry.js} +2 -2
- package/dist/ionic/p-c3b62be8.system.entry.js +4 -0
- package/dist/ionic/{p-2fb115dc.entry.js → p-c5106edf.entry.js} +1 -1
- package/dist/ionic/p-c75422d5.entry.js +4 -0
- package/dist/ionic/p-c87d155e.entry.js +4 -0
- package/dist/ionic/p-cbe7738f.entry.js +4 -0
- package/dist/ionic/p-cc196b34.js +4 -0
- package/dist/ionic/{p-1511dc35.system.js → p-cc68ad40.system.js} +1 -1
- package/dist/ionic/{p-e7d20dfb.system.js → p-ccdcb022.system.js} +1 -1
- package/dist/ionic/{p-6825ff8d.entry.js → p-cd1c8ab2.entry.js} +1 -1
- package/dist/ionic/{p-a6880f79.system.entry.js → p-cd3a87bd.system.entry.js} +1 -1
- package/dist/ionic/{p-7dafac2c.system.entry.js → p-ce62bf2c.system.entry.js} +1 -1
- package/dist/ionic/{p-ebdaf11b.entry.js → p-ce9bf0ed.entry.js} +1 -1
- package/dist/ionic/p-d05b431a.system.entry.js +4 -0
- package/dist/ionic/{p-71e70a57.system.entry.js → p-d0c701d0.system.entry.js} +1 -1
- package/dist/ionic/{p-03a36678.entry.js → p-d1ac0094.entry.js} +1 -1
- package/dist/ionic/p-d1de1188.js +4 -0
- package/dist/ionic/{p-f8febce9.system.entry.js → p-d27ade6f.system.entry.js} +1 -1
- package/dist/ionic/p-d37d3ebc.system.entry.js +4 -0
- package/dist/ionic/{p-b3d50a72.entry.js → p-d59f70db.entry.js} +1 -1
- package/dist/ionic/{p-152998a6.system.entry.js → p-d9c86724.system.entry.js} +1 -1
- package/dist/ionic/{p-df18d20d.js → p-da26ba41.js} +1 -1
- package/dist/ionic/{p-4430713b.entry.js → p-da6b2907.entry.js} +1 -1
- package/dist/ionic/p-dee844d7.js +4 -0
- package/dist/ionic/{p-9939c98e.entry.js → p-e23c3d22.entry.js} +1 -1
- package/dist/ionic/{p-bc48e521.system.entry.js → p-ecbc7728.system.entry.js} +1 -1
- package/dist/ionic/{p-12d62aa9.entry.js → p-ef0d410f.entry.js} +1 -1
- package/dist/ionic/{p-6abde4f1.system.entry.js → p-f2743f0f.system.entry.js} +1 -1
- package/dist/ionic/{p-a9424586.entry.js → p-f30dabf4.entry.js} +1 -1
- package/dist/ionic/{p-3e1deb37.system.entry.js → p-f323209c.system.entry.js} +1 -1
- package/dist/ionic/{p-664cc492.entry.js → p-f33808d4.entry.js} +1 -1
- package/dist/ionic/{p-bc6e32d2.entry.js → p-f3d770d2.entry.js} +1 -1
- package/dist/ionic/p-f47f2024.entry.js +4 -0
- package/dist/ionic/p-f9336ef9.system.js +4 -0
- package/dist/ionic/{p-d2de097b.entry.js → p-fc758470.entry.js} +1 -1
- package/dist/ionic/p-ff5a10f9.system.js +4 -0
- package/dist/types/components/input/input.d.ts +0 -2
- package/dist/types/components/radio-group/radio-group-interface.d.ts +0 -1
- package/dist/types/components/radio-group/radio-group.d.ts +1 -8
- package/dist/types/components/router/router.d.ts +1 -2
- package/dist/types/components/select/select.d.ts +1 -6
- package/dist/types/components/skeleton-text/skeleton-text.d.ts +1 -9
- package/dist/types/components/textarea/textarea.d.ts +0 -2
- package/dist/types/components/toast/animations/utils.d.ts +4 -15
- package/dist/types/components/toast/toast-interface.d.ts +0 -2
- package/dist/types/components/toast/toast.d.ts +1 -28
- package/dist/types/components.d.ts +6 -37
- package/dist/types/interface.d.ts +5 -1
- package/dist/types/utils/animation/animation-interface.d.ts +4 -4
- package/dist/types/utils/browser/index.d.ts +2 -11
- package/dist/types/utils/forms/index.d.ts +0 -1
- package/dist/types/utils/hardware-back-button.d.ts +0 -4
- package/dist/types/utils/overlays.d.ts +0 -1
- package/dist/types/utils/slot-mutation-controller.d.ts +2 -2
- package/dist/types/utils/test/playwright/page/utils/goto.d.ts +1 -1
- package/hydrate/index.js +169 -616
- package/package.json +31 -30
- package/dist/cjs/compare-with-utils-c0444525.js +0 -44
- package/dist/cjs/index-c8d52405.js +0 -10
- package/dist/collection/components/input/test/slot/input.e2e.js +0 -51
- package/dist/collection/components/select/test/slot/select.e2e.js +0 -67
- package/dist/collection/components/textarea/test/slot/textarea.e2e.js +0 -51
- package/dist/collection/components/toast/gestures/swipe-to-dismiss.js +0 -267
- package/dist/collection/components/toast/test/swipe-gesture/toast.e2e.js +0 -84
- package/dist/collection/utils/forms/compare-with-utils.js +0 -39
- package/dist/esm/compare-with-utils-4928c09d.js +0 -41
- package/dist/esm/index-a5d50daf.js +0 -7
- package/dist/esm-es5/app-globals-ba8b3a06.js +0 -4
- package/dist/esm-es5/compare-with-utils-4928c09d.js +0 -4
- package/dist/esm-es5/index-6a48e009.js +0 -4
- package/dist/esm-es5/index-c9e82353.js +0 -4
- package/dist/esm-es5/input-shims-1d767845.js +0 -4
- package/dist/esm-es5/input.utils-2cf5e372.js +0 -4
- package/dist/esm-es5/md.transition-a8469407.js +0 -4
- package/dist/ionic/p-02663394.system.js +0 -4
- package/dist/ionic/p-0fa05d7a.system.entry.js +0 -4
- package/dist/ionic/p-11104d0d.entry.js +0 -4
- package/dist/ionic/p-314c4dee.js +0 -4
- package/dist/ionic/p-33c650c5.entry.js +0 -4
- package/dist/ionic/p-3554b264.js +0 -4
- package/dist/ionic/p-37afecd5.entry.js +0 -4
- package/dist/ionic/p-3afb9c3d.entry.js +0 -4
- package/dist/ionic/p-3bc3d880.system.js +0 -4
- package/dist/ionic/p-40dd5937.system.js +0 -4
- package/dist/ionic/p-43716898.js +0 -4
- package/dist/ionic/p-494e75ad.js +0 -4
- package/dist/ionic/p-4e3c07a6.system.js +0 -4
- package/dist/ionic/p-4e4ee05e.js +0 -4
- package/dist/ionic/p-561cc050.system.js +0 -4
- package/dist/ionic/p-57b14769.js +0 -4
- package/dist/ionic/p-647fcea8.entry.js +0 -4
- package/dist/ionic/p-6b45cfd0.system.entry.js +0 -4
- package/dist/ionic/p-6c89025e.system.entry.js +0 -4
- package/dist/ionic/p-6dc21cd1.system.entry.js +0 -4
- package/dist/ionic/p-70dcf429.js +0 -4
- package/dist/ionic/p-710cea83.system.js +0 -4
- package/dist/ionic/p-78a8e1e8.entry.js +0 -4
- package/dist/ionic/p-79841aa8.entry.js +0 -4
- package/dist/ionic/p-7ac30f6a.entry.js +0 -4
- package/dist/ionic/p-7acd17bc.entry.js +0 -4
- package/dist/ionic/p-7b44e419.js +0 -4
- package/dist/ionic/p-81bdfa1c.system.entry.js +0 -4
- package/dist/ionic/p-8414ed31.entry.js +0 -4
- package/dist/ionic/p-92ac915c.system.js +0 -4
- package/dist/ionic/p-a6b819ca.entry.js +0 -4
- package/dist/ionic/p-ad6ed7ab.system.entry.js +0 -4
- package/dist/ionic/p-be499f29.entry.js +0 -4
- package/dist/ionic/p-c2db1374.system.js +0 -4
- package/dist/ionic/p-c3547c7a.system.js +0 -4
- package/dist/ionic/p-c700acef.system.js +0 -4
- package/dist/ionic/p-cd73cfd1.system.entry.js +0 -4
- package/dist/ionic/p-e3b7a2d0.system.entry.js +0 -4
- package/dist/ionic/p-e9fe3c8b.system.entry.js +0 -4
- package/dist/ionic/p-f2d4e3c8.entry.js +0 -4
- package/dist/ionic/p-f4ccdc77.js +0 -4
- package/dist/ionic/p-f7769c83.js +0 -4
- package/dist/node_modules/ionicons/dist/collection/components/icon/icon.css +0 -144
- package/dist/types/components/toast/gestures/swipe-to-dismiss.d.ts +0 -9
- package/dist/types/utils/forms/compare-with-utils.d.ts +0 -18
- /package/dist/cjs/{index-73186843.js → index-53026db1.js} +0 -0
- /package/dist/cjs/{index-09471526.js → index-677c4d13.js} +0 -0
- /package/dist/esm/{index-c132c5f1.js → index-4d016006.js} +0 -0
- /package/dist/esm/{index-4392ebcb.js → index-8eb0239b.js} +0 -0
- /package/dist/esm-es5/{index-c132c5f1.js → index-4d016006.js} +0 -0
- /package/dist/esm-es5/{index-a5d50daf.js → index-7a14ecec.js} +0 -0
- /package/dist/esm-es5/{index-4392ebcb.js → index-8eb0239b.js} +0 -0
- /package/dist/ionic/{p-8050b9b9.system.js → p-0c55ffe1.system.js} +0 -0
- /package/dist/ionic/{p-792919fd.system.js → p-0e94957a.system.js} +0 -0
- /package/dist/ionic/{p-dab42c1b.system.js → p-2814c8e5.system.js} +0 -0
- /package/dist/ionic/{p-f5e886cd.js → p-8a40746c.js} +0 -0
- /package/dist/ionic/{p-7b30edcc.js → p-b347cfd1.js} +0 -0
- /package/dist/ionic/{p-ea96fa73.js → p-e90d610c.js} +0 -0
package/components/ion-toast.js
CHANGED
|
@@ -1,107 +1,19 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
|
|
5
5
|
import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './config.js';
|
|
6
6
|
import { g as getElementRoot, r as raf } from './helpers.js';
|
|
7
7
|
import { c as createLockController } from './lock-controller.js';
|
|
8
8
|
import { p as printIonWarning } from './index6.js';
|
|
9
|
-
import {
|
|
9
|
+
import { d as createDelegateController, e as createTriggerController, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays.js';
|
|
10
10
|
import { g as getClassMap, c as createColorClasses } from './theme.js';
|
|
11
11
|
import { c as config, b as getIonMode } from './ionic-global.js';
|
|
12
12
|
import { c as createAnimation } from './animation.js';
|
|
13
13
|
import { w as win } from './index5.js';
|
|
14
|
-
import { createGesture } from './index3.js';
|
|
15
14
|
import { d as defineCustomElement$3 } from './icon.js';
|
|
16
15
|
import { d as defineCustomElement$2 } from './ripple-effect.js';
|
|
17
16
|
|
|
18
|
-
/**
|
|
19
|
-
* Calculate the CSS top and bottom position of the toast, to be used
|
|
20
|
-
* as starting points for the animation keyframes.
|
|
21
|
-
*
|
|
22
|
-
* The default animations for both MD and iOS
|
|
23
|
-
* use translateY, which calculates from the
|
|
24
|
-
* top edge of the screen. This behavior impacts
|
|
25
|
-
* how we compute the offset when a toast has
|
|
26
|
-
* position='bottom' since we need to calculate from
|
|
27
|
-
* the bottom edge of the screen instead.
|
|
28
|
-
*
|
|
29
|
-
* @param position The value of the toast's position prop.
|
|
30
|
-
* @param positionAnchor The element the toast should be anchored to,
|
|
31
|
-
* if applicable.
|
|
32
|
-
* @param mode The toast component's mode (md, ios, etc).
|
|
33
|
-
* @param toast A reference to the toast element itself.
|
|
34
|
-
*/
|
|
35
|
-
function getAnimationPosition(position, positionAnchor, mode, toast) {
|
|
36
|
-
/**
|
|
37
|
-
* Start with a predefined offset from the edge the toast will be
|
|
38
|
-
* positioned relative to, whether on the screen or anchor element.
|
|
39
|
-
*/
|
|
40
|
-
let offset;
|
|
41
|
-
if (mode === 'md') {
|
|
42
|
-
offset = position === 'top' ? 8 : -8;
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
offset = position === 'top' ? 10 : -10;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* If positionAnchor is defined, add in the distance from the target
|
|
49
|
-
* screen edge to the target anchor edge. For position="top", the
|
|
50
|
-
* bottom anchor edge is targeted. For position="bottom", the top
|
|
51
|
-
* anchor edge is targeted.
|
|
52
|
-
*/
|
|
53
|
-
if (positionAnchor && win) {
|
|
54
|
-
warnIfAnchorIsHidden(positionAnchor, toast);
|
|
55
|
-
const box = positionAnchor.getBoundingClientRect();
|
|
56
|
-
if (position === 'top') {
|
|
57
|
-
offset += box.bottom;
|
|
58
|
-
}
|
|
59
|
-
else if (position === 'bottom') {
|
|
60
|
-
/**
|
|
61
|
-
* Just box.top is the distance from the top edge of the screen
|
|
62
|
-
* to the top edge of the anchor. We want to calculate from the
|
|
63
|
-
* bottom edge of the screen instead.
|
|
64
|
-
*/
|
|
65
|
-
offset -= win.innerHeight - box.top;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* We don't include safe area here because that should already be
|
|
69
|
-
* accounted for when checking the position of the anchor.
|
|
70
|
-
*/
|
|
71
|
-
return {
|
|
72
|
-
top: `${offset}px`,
|
|
73
|
-
bottom: `${offset}px`,
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
return {
|
|
78
|
-
top: `calc(${offset}px + var(--ion-safe-area-top, 0px))`,
|
|
79
|
-
bottom: `calc(${offset}px - var(--ion-safe-area-bottom, 0px))`,
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* If the anchor element is hidden, getBoundingClientRect()
|
|
85
|
-
* will return all 0s for it, which can cause unexpected
|
|
86
|
-
* results in the position calculation when animating.
|
|
87
|
-
*/
|
|
88
|
-
function warnIfAnchorIsHidden(positionAnchor, toast) {
|
|
89
|
-
if (positionAnchor.offsetParent === null) {
|
|
90
|
-
printIonWarning('The positionAnchor element for ion-toast was found in the DOM, but appears to be hidden. This may lead to unexpected positioning of the toast.', toast);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Returns the top offset required to place
|
|
95
|
-
* the toast in the middle of the screen.
|
|
96
|
-
* Only needed when position="toast".
|
|
97
|
-
* @param toastHeight - The height of the ion-toast element
|
|
98
|
-
* @param wrapperHeight - The height of the .toast-wrapper element
|
|
99
|
-
* inside the toast's shadow root.
|
|
100
|
-
*/
|
|
101
|
-
const getOffsetForMiddlePosition = (toastHeight, wrapperHeight) => {
|
|
102
|
-
return Math.floor(toastHeight / 2 - wrapperHeight / 2);
|
|
103
|
-
};
|
|
104
|
-
|
|
105
17
|
/**
|
|
106
18
|
* iOS Toast Enter Animation
|
|
107
19
|
*/
|
|
@@ -117,7 +29,7 @@ const iosEnterAnimation = (baseEl, opts) => {
|
|
|
117
29
|
wrapperAnimation.fromTo('transform', 'translateY(-100%)', `translateY(${top})`);
|
|
118
30
|
break;
|
|
119
31
|
case 'middle':
|
|
120
|
-
const topPosition =
|
|
32
|
+
const topPosition = Math.floor(baseEl.clientHeight / 2 - wrapperEl.clientHeight / 2);
|
|
121
33
|
wrapperEl.style.top = `${topPosition}px`;
|
|
122
34
|
wrapperAnimation.fromTo('opacity', 0.01, 1);
|
|
123
35
|
break;
|
|
@@ -164,16 +76,16 @@ const mdEnterAnimation = (baseEl, opts) => {
|
|
|
164
76
|
wrapperAnimation.addElement(wrapperEl);
|
|
165
77
|
switch (position) {
|
|
166
78
|
case 'top':
|
|
167
|
-
wrapperEl.style.
|
|
79
|
+
wrapperEl.style.top = top;
|
|
168
80
|
wrapperAnimation.fromTo('opacity', 0.01, 1);
|
|
169
81
|
break;
|
|
170
82
|
case 'middle':
|
|
171
|
-
const topPosition =
|
|
83
|
+
const topPosition = Math.floor(baseEl.clientHeight / 2 - wrapperEl.clientHeight / 2);
|
|
172
84
|
wrapperEl.style.top = `${topPosition}px`;
|
|
173
85
|
wrapperAnimation.fromTo('opacity', 0.01, 1);
|
|
174
86
|
break;
|
|
175
87
|
default:
|
|
176
|
-
wrapperEl.style.
|
|
88
|
+
wrapperEl.style.bottom = bottom;
|
|
177
89
|
wrapperAnimation.fromTo('opacity', 0.01, 1);
|
|
178
90
|
break;
|
|
179
91
|
}
|
|
@@ -193,267 +105,89 @@ const mdLeaveAnimation = (baseEl) => {
|
|
|
193
105
|
};
|
|
194
106
|
|
|
195
107
|
/**
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
*
|
|
200
|
-
*
|
|
108
|
+
* Calculate the CSS top and bottom position of the toast, to be used
|
|
109
|
+
* as starting points for the animation keyframes.
|
|
110
|
+
*
|
|
111
|
+
* Note that MD animates bottom-positioned toasts using style.bottom,
|
|
112
|
+
* which calculates from the bottom edge of the screen, while iOS uses
|
|
113
|
+
* translateY, which calculates from the top edge of the screen. This
|
|
114
|
+
* is why the bottom calculates differ slightly between modes.
|
|
115
|
+
*
|
|
116
|
+
* @param position The value of the toast's position prop.
|
|
117
|
+
* @param positionAnchor The element the toast should be anchored to,
|
|
118
|
+
* if applicable.
|
|
119
|
+
* @param mode The toast component's mode (md, ios, etc).
|
|
120
|
+
* @param toast A reference to the toast element itself.
|
|
201
121
|
*/
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* Users should swipe on the visible toast wrapper
|
|
205
|
-
* rather than on ion-toast which covers the entire screen.
|
|
206
|
-
* When testing the class instance the inner wrapper will not
|
|
207
|
-
* be defined. As a result, we use a placeholder element in those environments.
|
|
208
|
-
*/
|
|
209
|
-
const wrapperEl = Build.isTesting
|
|
210
|
-
? document.createElement('div')
|
|
211
|
-
: getElementRoot(el).querySelector('.toast-wrapper');
|
|
212
|
-
const hostElHeight = el.clientHeight;
|
|
213
|
-
const wrapperElBox = wrapperEl.getBoundingClientRect();
|
|
214
|
-
/**
|
|
215
|
-
* The maximum amount that
|
|
216
|
-
* the toast can be swiped. This should
|
|
217
|
-
* account for the wrapper element's height
|
|
218
|
-
* too so the toast can be swiped offscreen
|
|
219
|
-
* completely.
|
|
220
|
-
*/
|
|
221
|
-
let MAX_SWIPE_DISTANCE = 0;
|
|
222
|
-
/**
|
|
223
|
-
* The step value at which a toast
|
|
224
|
-
* is eligible for dismissing via gesture.
|
|
225
|
-
*/
|
|
226
|
-
const DISMISS_THRESHOLD = 0.5;
|
|
227
|
-
/**
|
|
228
|
-
* The middle position Toast starts 50% of the way
|
|
229
|
-
* through the animation, so we need to use this
|
|
230
|
-
* as the starting point for our step values.
|
|
231
|
-
*/
|
|
232
|
-
const STEP_OFFSET = el.position === 'middle' ? 0.5 : 0;
|
|
122
|
+
function getAnimationPosition(position, positionAnchor, mode, toast) {
|
|
233
123
|
/**
|
|
234
|
-
*
|
|
235
|
-
*
|
|
236
|
-
* negative numbers which will result in negative steps
|
|
237
|
-
* and thresholds. As a result, we need to make those numbers
|
|
238
|
-
* positive.
|
|
124
|
+
* Start with a predefined offset from the edge the toast will be
|
|
125
|
+
* positioned relative to, whether on the screen or anchor element.
|
|
239
126
|
*/
|
|
240
|
-
|
|
127
|
+
let offset;
|
|
128
|
+
if (mode === 'md') {
|
|
129
|
+
offset = 8;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
offset = position === 'top' ? 10 : -10;
|
|
133
|
+
}
|
|
241
134
|
/**
|
|
242
|
-
*
|
|
243
|
-
*
|
|
244
|
-
*
|
|
135
|
+
* If positionAnchor is defined, add in the distance from the target
|
|
136
|
+
* screen edge to the target anchor edge. For position="top", the
|
|
137
|
+
* bottom anchor edge is targeted. For position="bottom", the top
|
|
138
|
+
* anchor edge is targeted.
|
|
245
139
|
*/
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
];
|
|
252
|
-
const swipeAnimation = createAnimation('toast-swipe-to-dismiss-animation')
|
|
253
|
-
.addElement(wrapperEl)
|
|
254
|
-
/**
|
|
255
|
-
* The specific value here does not actually
|
|
256
|
-
* matter. We just need this to be a positive
|
|
257
|
-
* value so the animation does not jump
|
|
258
|
-
* to the end when the user beings to drag.
|
|
259
|
-
*/
|
|
260
|
-
.duration(100);
|
|
261
|
-
switch (el.position) {
|
|
262
|
-
case 'middle':
|
|
263
|
-
MAX_SWIPE_DISTANCE = hostElHeight + wrapperElBox.height;
|
|
264
|
-
swipeAnimation.keyframes(SWIPE_UP_DOWN_KEYFRAMES);
|
|
265
|
-
/**
|
|
266
|
-
* Toast can be swiped up or down but
|
|
267
|
-
* should start in the middle of the screen.
|
|
268
|
-
*/
|
|
269
|
-
swipeAnimation.progressStart(true, 0.5);
|
|
270
|
-
break;
|
|
271
|
-
case 'top':
|
|
272
|
-
/**
|
|
273
|
-
* The bottom edge of the wrapper
|
|
274
|
-
* includes the distance between the top
|
|
275
|
-
* of the screen and the top of the wrapper
|
|
276
|
-
* as well as the wrapper height so the wrapper
|
|
277
|
-
* can be dragged fully offscreen.
|
|
278
|
-
*/
|
|
279
|
-
MAX_SWIPE_DISTANCE = wrapperElBox.bottom;
|
|
280
|
-
swipeAnimation.keyframes([
|
|
281
|
-
{ offset: 0, transform: `translateY(${toastPosition.top})` },
|
|
282
|
-
{ offset: 1, transform: 'translateY(-100%)' },
|
|
283
|
-
]);
|
|
284
|
-
swipeAnimation.progressStart(true, 0);
|
|
285
|
-
break;
|
|
286
|
-
case 'bottom':
|
|
287
|
-
default:
|
|
288
|
-
/**
|
|
289
|
-
* This computes the distance between the
|
|
290
|
-
* top of the wrapper and the bottom of the
|
|
291
|
-
* screen including the height of the wrapper
|
|
292
|
-
* element so it can be dragged fully offscreen.
|
|
293
|
-
*/
|
|
294
|
-
MAX_SWIPE_DISTANCE = hostElHeight - wrapperElBox.top;
|
|
295
|
-
swipeAnimation.keyframes([
|
|
296
|
-
{ offset: 0, transform: `translateY(${toastPosition.bottom})` },
|
|
297
|
-
{ offset: 1, transform: 'translateY(100%)' },
|
|
298
|
-
]);
|
|
299
|
-
swipeAnimation.progressStart(true, 0);
|
|
300
|
-
break;
|
|
301
|
-
}
|
|
302
|
-
const computeStep = (delta) => {
|
|
303
|
-
return (delta * INVERSION_FACTOR) / MAX_SWIPE_DISTANCE;
|
|
304
|
-
};
|
|
305
|
-
const onMove = (detail) => {
|
|
306
|
-
const step = STEP_OFFSET + computeStep(detail.deltaY);
|
|
307
|
-
swipeAnimation.progressStep(step);
|
|
308
|
-
};
|
|
309
|
-
const onEnd = (detail) => {
|
|
310
|
-
const velocity = detail.velocityY;
|
|
311
|
-
const threshold = ((detail.deltaY + velocity * 1000) / MAX_SWIPE_DISTANCE) * INVERSION_FACTOR;
|
|
312
|
-
/**
|
|
313
|
-
* Disable the gesture for the remainder of the animation.
|
|
314
|
-
* It will be re-enabled if the toast animates back to
|
|
315
|
-
* its initial presented position.
|
|
316
|
-
*/
|
|
317
|
-
gesture.enable(false);
|
|
318
|
-
let shouldDismiss = true;
|
|
319
|
-
let playTo = 1;
|
|
320
|
-
let step = 0;
|
|
321
|
-
let remainingDistance = 0;
|
|
322
|
-
if (el.position === 'middle') {
|
|
323
|
-
/**
|
|
324
|
-
* A middle positioned Toast appears
|
|
325
|
-
* in the middle of the screen (at animation offset 0.5).
|
|
326
|
-
* As a result, the threshold will be calculated relative
|
|
327
|
-
* to this starting position. In other words at animation offset 0.5
|
|
328
|
-
* the threshold will be 0. We want the middle Toast to be eligible
|
|
329
|
-
* for dismiss when the user has swiped either half way up or down the
|
|
330
|
-
* screen. As a result, we divide DISMISS_THRESHOLD in half. We also
|
|
331
|
-
* consider when the threshold is a negative in the event the
|
|
332
|
-
* user drags up (since the deltaY will also be negative).
|
|
333
|
-
*/
|
|
334
|
-
shouldDismiss = threshold >= DISMISS_THRESHOLD / 2 || threshold <= -DISMISS_THRESHOLD / 2;
|
|
335
|
-
/**
|
|
336
|
-
* Since we are replacing the keyframes
|
|
337
|
-
* below the animation always starts from
|
|
338
|
-
* the beginning of the new keyframes.
|
|
339
|
-
* Similarly, we are always playing to
|
|
340
|
-
* the end of the new keyframes.
|
|
341
|
-
*/
|
|
342
|
-
playTo = 1;
|
|
343
|
-
step = 0;
|
|
344
|
-
/**
|
|
345
|
-
* The Toast should animate from wherever its
|
|
346
|
-
* current position is to the desired end state.
|
|
347
|
-
*
|
|
348
|
-
* To begin, we get the current position of the
|
|
349
|
-
* Toast for its starting state.
|
|
350
|
-
*/
|
|
351
|
-
const wrapperElBox = wrapperEl.getBoundingClientRect();
|
|
352
|
-
const startOffset = wrapperElBox.top - topPosition;
|
|
353
|
-
const startPosition = `${startOffset}px`;
|
|
354
|
-
/**
|
|
355
|
-
* If the deltaY is negative then the user is swiping
|
|
356
|
-
* up, so the Toast should animate to the top of the screen.
|
|
357
|
-
* If the deltaY is positive then the user is swiping
|
|
358
|
-
* down, so the Toast should animate to the bottom of the screen.
|
|
359
|
-
* We also account for when the deltaY is 0, but realistically
|
|
360
|
-
* that should never happen because it means the user did not drag
|
|
361
|
-
* the toast.
|
|
362
|
-
*/
|
|
363
|
-
const offsetFactor = detail.deltaY <= 0 ? -1 : 1;
|
|
364
|
-
const endOffset = (topPosition + wrapperElBox.height) * offsetFactor;
|
|
365
|
-
/**
|
|
366
|
-
* If the Toast should dismiss
|
|
367
|
-
* then we need to figure out which edge of
|
|
368
|
-
* the screen it should animate towards.
|
|
369
|
-
* By default, the Toast will come
|
|
370
|
-
* back to its default state in the
|
|
371
|
-
* middle of the screen.
|
|
372
|
-
*/
|
|
373
|
-
const endPosition = shouldDismiss ? `${endOffset}px` : '0px';
|
|
374
|
-
const KEYFRAMES = [
|
|
375
|
-
{ offset: 0, transform: `translateY(${startPosition})` },
|
|
376
|
-
{ offset: 1, transform: `translateY(${endPosition})` },
|
|
377
|
-
];
|
|
378
|
-
swipeAnimation.keyframes(KEYFRAMES);
|
|
379
|
-
/**
|
|
380
|
-
* Compute the remaining amount of pixels the
|
|
381
|
-
* toast needs to move to be fully dismissed.
|
|
382
|
-
*/
|
|
383
|
-
remainingDistance = endOffset - startOffset;
|
|
140
|
+
if (positionAnchor && win) {
|
|
141
|
+
warnIfAnchorIsHidden(positionAnchor, toast);
|
|
142
|
+
const box = positionAnchor.getBoundingClientRect();
|
|
143
|
+
if (position === 'top') {
|
|
144
|
+
offset += box.bottom;
|
|
384
145
|
}
|
|
385
|
-
else {
|
|
386
|
-
shouldDismiss = threshold >= DISMISS_THRESHOLD;
|
|
387
|
-
playTo = shouldDismiss ? 1 : 0;
|
|
388
|
-
step = computeStep(detail.deltaY);
|
|
146
|
+
else if (position === 'bottom') {
|
|
389
147
|
/**
|
|
390
|
-
*
|
|
391
|
-
*
|
|
148
|
+
* Just box.top is the distance from the top edge of the screen
|
|
149
|
+
* to the top edge of the anchor. We want to calculate from the
|
|
150
|
+
* bottom edge of the screen instead.
|
|
392
151
|
*/
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
}
|
|
396
|
-
/**
|
|
397
|
-
* The animation speed should depend on how quickly
|
|
398
|
-
* the user flicks the toast across the screen. However,
|
|
399
|
-
* it should be no slower than 200ms.
|
|
400
|
-
* We use Math.abs on the remainingDistance because that value
|
|
401
|
-
* can be negative when swiping up on a middle position toast.
|
|
402
|
-
*/
|
|
403
|
-
const duration = Math.min(Math.abs(remainingDistance) / Math.abs(velocity), 200);
|
|
404
|
-
swipeAnimation
|
|
405
|
-
.onFinish(() => {
|
|
406
|
-
if (shouldDismiss) {
|
|
407
|
-
onDismiss();
|
|
408
|
-
swipeAnimation.destroy();
|
|
152
|
+
if (mode === 'md') {
|
|
153
|
+
offset += win.innerHeight - box.top;
|
|
409
154
|
}
|
|
410
155
|
else {
|
|
411
|
-
|
|
412
|
-
/**
|
|
413
|
-
* If the toast snapped back to
|
|
414
|
-
* the middle of the screen we need
|
|
415
|
-
* to reset the keyframes
|
|
416
|
-
* so the toast can be swiped
|
|
417
|
-
* up or down again.
|
|
418
|
-
*/
|
|
419
|
-
swipeAnimation.keyframes(SWIPE_UP_DOWN_KEYFRAMES).progressStart(true, 0.5);
|
|
420
|
-
}
|
|
421
|
-
else {
|
|
422
|
-
swipeAnimation.progressStart(true, 0);
|
|
423
|
-
}
|
|
424
|
-
/**
|
|
425
|
-
* If the toast did not dismiss then
|
|
426
|
-
* the user should be able to swipe again.
|
|
427
|
-
*/
|
|
428
|
-
gesture.enable(true);
|
|
156
|
+
offset -= win.innerHeight - box.top;
|
|
429
157
|
}
|
|
430
|
-
|
|
431
|
-
* This must be a one time callback
|
|
432
|
-
* otherwise a new callback will
|
|
433
|
-
* be added every time onEnd runs.
|
|
434
|
-
*/
|
|
435
|
-
}, { oneTimeCallback: true })
|
|
436
|
-
.progressEnd(playTo, step, duration);
|
|
437
|
-
};
|
|
438
|
-
const gesture = createGesture({
|
|
439
|
-
el: wrapperEl,
|
|
440
|
-
gestureName: 'toast-swipe-to-dismiss',
|
|
441
|
-
gesturePriority: OVERLAY_GESTURE_PRIORITY,
|
|
158
|
+
}
|
|
442
159
|
/**
|
|
443
|
-
*
|
|
444
|
-
*
|
|
445
|
-
* support horizontal swipes.
|
|
160
|
+
* We don't include safe area here because that should already be
|
|
161
|
+
* accounted for when checking the position of the anchor.
|
|
446
162
|
*/
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
163
|
+
return {
|
|
164
|
+
top: `${offset}px`,
|
|
165
|
+
bottom: `${offset}px`,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
return {
|
|
170
|
+
top: `calc(${offset}px + var(--ion-safe-area-top, 0px))`,
|
|
171
|
+
bottom: mode === 'md'
|
|
172
|
+
? `calc(${offset}px + var(--ion-safe-area-bottom, 0px))`
|
|
173
|
+
: `calc(${offset}px - var(--ion-safe-area-bottom, 0px))`,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* If the anchor element is hidden, getBoundingClientRect()
|
|
179
|
+
* will return all 0s for it, which can cause unexpected
|
|
180
|
+
* results in the position calculation when animating.
|
|
181
|
+
*/
|
|
182
|
+
function warnIfAnchorIsHidden(positionAnchor, toast) {
|
|
183
|
+
if (positionAnchor.offsetParent === null) {
|
|
184
|
+
printIonWarning('The positionAnchor element for ion-toast was found in the DOM, but appears to be hidden. This may lead to unexpected positioning of the toast.', toast);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
453
187
|
|
|
454
|
-
const toastIosCss = ":host{--border-width:0;--border-style:none;--border-color:initial;--box-shadow:none;--min-width:auto;--width:auto;--min-height:auto;--height:auto;--max-height:auto;--white-space:normal;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;color:var(--color);font-family:var(--ion-font-family, inherit);contain:strict;z-index:1001;pointer-events:none}@supports (inset-inline-start: 0){:host{inset-inline-start:0}}@supports not (inset-inline-start: 0){:host{left:0}:host-context([dir=rtl]){left:unset;right:unset;right:0}@supports selector(:dir(rtl)){:host(:dir(rtl)){left:unset;right:unset;right:0}}}:host(.overlay-hidden){display:none}:host(.ion-color){--button-color:inherit;color:var(--ion-color-contrast)}:host(.ion-color) .toast-button-cancel{color:inherit}:host(.ion-color) .toast-wrapper{background:var(--ion-color-base)}.toast-wrapper{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)}@supports (inset-inline-start: 0){.toast-wrapper{inset-inline-start:var(--start);inset-inline-end:var(--end)}}@supports not (inset-inline-start: 0){.toast-wrapper{left:var(--start);right:var(--end)}:host-context([dir=rtl]) .toast-wrapper{left:unset;right:unset;left:var(--end);right:var(--start)}[dir=rtl] .toast-wrapper{left:unset;right:unset;left:var(--end);right:var(--start)}@supports selector(:dir(rtl)){.toast-wrapper:dir(rtl){left:unset;right:unset;left:var(--end);right:var(--start)}}}.toast-
|
|
188
|
+
const toastIosCss = ":host{--border-width:0;--border-style:none;--border-color:initial;--box-shadow:none;--min-width:auto;--width:auto;--min-height:auto;--height:auto;--max-height:auto;--white-space:normal;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;color:var(--color);font-family:var(--ion-font-family, inherit);contain:strict;z-index:1001;pointer-events:none}@supports (inset-inline-start: 0){:host{inset-inline-start:0}}@supports not (inset-inline-start: 0){:host{left:0}:host-context([dir=rtl]){left:unset;right:unset;right:0}@supports selector(:dir(rtl)){:host(:dir(rtl)){left:unset;right:unset;right:0}}}:host(.overlay-hidden){display:none}:host(.ion-color){--button-color:inherit;color:var(--ion-color-contrast)}:host(.ion-color) .toast-button-cancel{color:inherit}:host(.ion-color) .toast-wrapper{background:var(--ion-color-base)}.toast-wrapper{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)}@supports (inset-inline-start: 0){.toast-wrapper{inset-inline-start:var(--start);inset-inline-end:var(--end)}}@supports not (inset-inline-start: 0){.toast-wrapper{left:var(--start);right:var(--end)}:host-context([dir=rtl]) .toast-wrapper{left:unset;right:unset;left:var(--end);right:var(--start)}[dir=rtl] .toast-wrapper{left:unset;right:unset;left:var(--end);right:var(--start)}@supports selector(:dir(rtl)){.toast-wrapper:dir(rtl){left:unset;right:unset;left:var(--end);right:var(--start)}}}.toast-container{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;pointer-events:auto;height:inherit;min-height:inherit;max-height:inherit;contain:content}.toast-layout-stacked .toast-container{-ms-flex-wrap:wrap;flex-wrap:wrap}.toast-layout-baseline .toast-content{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center}.toast-icon{-webkit-margin-start:16px;margin-inline-start:16px}.toast-content{min-width:0}.toast-message{-ms-flex:1;flex:1;white-space:var(--white-space)}.toast-button-group{display:-ms-flexbox;display:flex}.toast-layout-stacked .toast-button-group{-ms-flex-pack:end;justify-content:end;width:100%}.toast-button{border:0;outline:none;color:var(--button-color);z-index:0}.toast-icon,.toast-button-icon{font-size:1.4em}.toast-button-inner{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}@media (any-hover: hover){.toast-button:hover{cursor:pointer}}:host{--background:var(--ion-color-step-50, #f2f2f2);--border-radius:14px;--button-color:var(--ion-color-primary, #3880ff);--color:var(--ion-color-step-850, #262626);--max-width:700px;--max-height:478px;--start:10px;--end:10px;font-size:clamp(14px, 0.875rem, 43.4px)}.toast-wrapper{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;display:block;position:absolute;z-index:10}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){:host(.toast-translucent) .toast-wrapper{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}:host(.ion-color.toast-translucent) .toast-wrapper{background:rgba(var(--ion-color-base-rgb), 0.8)}}.toast-wrapper.toast-top{-webkit-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0);top:0}.toast-wrapper.toast-middle{opacity:0.01}.toast-wrapper.toast-bottom{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);bottom:0}.toast-content{-webkit-padding-start:15px;padding-inline-start:15px;-webkit-padding-end:15px;padding-inline-end:15px;padding-top:15px;padding-bottom:15px}.toast-header{margin-bottom:2px;font-weight:500}.toast-button{-webkit-padding-start:15px;padding-inline-start:15px;-webkit-padding-end:15px;padding-inline-end:15px;padding-top:10px;padding-bottom:10px;min-height:44px;-webkit-transition:background-color, opacity 100ms linear;transition:background-color, opacity 100ms linear;border:0;background-color:transparent;font-family:var(--ion-font-family);font-size:clamp(17px, 1.0625rem, 21.998px);font-weight:500;overflow:hidden}.toast-button.ion-activated{opacity:0.4}@media (any-hover: hover){.toast-button:hover{opacity:0.6}}";
|
|
455
189
|
|
|
456
|
-
const toastMdCss = ":host{--border-width:0;--border-style:none;--border-color:initial;--box-shadow:none;--min-width:auto;--width:auto;--min-height:auto;--height:auto;--max-height:auto;--white-space:normal;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;color:var(--color);font-family:var(--ion-font-family, inherit);contain:strict;z-index:1001;pointer-events:none}@supports (inset-inline-start: 0){:host{inset-inline-start:0}}@supports not (inset-inline-start: 0){:host{left:0}:host-context([dir=rtl]){left:unset;right:unset;right:0}@supports selector(:dir(rtl)){:host(:dir(rtl)){left:unset;right:unset;right:0}}}:host(.overlay-hidden){display:none}:host(.ion-color){--button-color:inherit;color:var(--ion-color-contrast)}:host(.ion-color) .toast-button-cancel{color:inherit}:host(.ion-color) .toast-wrapper{background:var(--ion-color-base)}.toast-wrapper{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)}@supports (inset-inline-start: 0){.toast-wrapper{inset-inline-start:var(--start);inset-inline-end:var(--end)}}@supports not (inset-inline-start: 0){.toast-wrapper{left:var(--start);right:var(--end)}:host-context([dir=rtl]) .toast-wrapper{left:unset;right:unset;left:var(--end);right:var(--start)}[dir=rtl] .toast-wrapper{left:unset;right:unset;left:var(--end);right:var(--start)}@supports selector(:dir(rtl)){.toast-wrapper:dir(rtl){left:unset;right:unset;left:var(--end);right:var(--start)}}}.toast-
|
|
190
|
+
const toastMdCss = ":host{--border-width:0;--border-style:none;--border-color:initial;--box-shadow:none;--min-width:auto;--width:auto;--min-height:auto;--height:auto;--max-height:auto;--white-space:normal;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;color:var(--color);font-family:var(--ion-font-family, inherit);contain:strict;z-index:1001;pointer-events:none}@supports (inset-inline-start: 0){:host{inset-inline-start:0}}@supports not (inset-inline-start: 0){:host{left:0}:host-context([dir=rtl]){left:unset;right:unset;right:0}@supports selector(:dir(rtl)){:host(:dir(rtl)){left:unset;right:unset;right:0}}}:host(.overlay-hidden){display:none}:host(.ion-color){--button-color:inherit;color:var(--ion-color-contrast)}:host(.ion-color) .toast-button-cancel{color:inherit}:host(.ion-color) .toast-wrapper{background:var(--ion-color-base)}.toast-wrapper{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)}@supports (inset-inline-start: 0){.toast-wrapper{inset-inline-start:var(--start);inset-inline-end:var(--end)}}@supports not (inset-inline-start: 0){.toast-wrapper{left:var(--start);right:var(--end)}:host-context([dir=rtl]) .toast-wrapper{left:unset;right:unset;left:var(--end);right:var(--start)}[dir=rtl] .toast-wrapper{left:unset;right:unset;left:var(--end);right:var(--start)}@supports selector(:dir(rtl)){.toast-wrapper:dir(rtl){left:unset;right:unset;left:var(--end);right:var(--start)}}}.toast-container{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;pointer-events:auto;height:inherit;min-height:inherit;max-height:inherit;contain:content}.toast-layout-stacked .toast-container{-ms-flex-wrap:wrap;flex-wrap:wrap}.toast-layout-baseline .toast-content{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center}.toast-icon{-webkit-margin-start:16px;margin-inline-start:16px}.toast-content{min-width:0}.toast-message{-ms-flex:1;flex:1;white-space:var(--white-space)}.toast-button-group{display:-ms-flexbox;display:flex}.toast-layout-stacked .toast-button-group{-ms-flex-pack:end;justify-content:end;width:100%}.toast-button{border:0;outline:none;color:var(--button-color);z-index:0}.toast-icon,.toast-button-icon{font-size:1.4em}.toast-button-inner{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}@media (any-hover: hover){.toast-button:hover{cursor:pointer}}:host{--background:var(--ion-color-step-800, #333333);--border-radius:4px;--box-shadow:0 3px 5px -1px rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12);--button-color:var(--ion-color-primary, #3880ff);--color:var(--ion-color-step-50, #f2f2f2);--max-width:700px;--start:8px;--end:8px;font-size:0.875rem}.toast-wrapper{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;display:block;position:absolute;opacity:0.01;z-index:10}.toast-content{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:14px;padding-bottom:14px}.toast-header{margin-bottom:2px;font-weight:500;line-height:1.25rem}.toast-message{line-height:1.25rem}.toast-layout-baseline .toast-button-group-start{-webkit-margin-start:8px;margin-inline-start:8px}.toast-layout-stacked .toast-button-group-start{-webkit-margin-end:8px;margin-inline-end:8px;margin-top:8px}.toast-layout-baseline .toast-button-group-end{-webkit-margin-end:8px;margin-inline-end:8px}.toast-layout-stacked .toast-button-group-end{-webkit-margin-end:8px;margin-inline-end:8px;margin-bottom:8px}.toast-button{-webkit-padding-start:15px;padding-inline-start:15px;-webkit-padding-end:15px;padding-inline-end:15px;padding-top:10px;padding-bottom:10px;position:relative;background-color:transparent;font-family:var(--ion-font-family);font-size:0.875rem;font-weight:500;letter-spacing:0.84px;text-transform:uppercase;overflow:hidden}.toast-button-cancel{color:var(--ion-color-step-100, #e6e6e6)}.toast-button-icon-only{border-radius:50%;-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px;padding-top:9px;padding-bottom:9px;width:36px;height:36px}@media (any-hover: hover){.toast-button:hover{background-color:rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.08)}.toast-button-cancel:hover{background-color:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.08)}}";
|
|
457
191
|
|
|
458
192
|
const Toast = /*@__PURE__*/ proxyCustomElement(class Toast extends HTMLElement {
|
|
459
193
|
constructor() {
|
|
@@ -480,41 +214,6 @@ const Toast = /*@__PURE__*/ proxyCustomElement(class Toast extends HTMLElement {
|
|
|
480
214
|
this.callButtonHandler(cancelButton);
|
|
481
215
|
}
|
|
482
216
|
};
|
|
483
|
-
/**
|
|
484
|
-
* Create a new swipe gesture so Toast
|
|
485
|
-
* can be swiped to dismiss.
|
|
486
|
-
*/
|
|
487
|
-
this.createSwipeGesture = (toastPosition) => {
|
|
488
|
-
const gesture = (this.gesture = createSwipeToDismissGesture(this.el, toastPosition, () => {
|
|
489
|
-
/**
|
|
490
|
-
* If the gesture completed then
|
|
491
|
-
* we should dismiss the toast.
|
|
492
|
-
*/
|
|
493
|
-
this.dismiss(undefined, GESTURE);
|
|
494
|
-
}));
|
|
495
|
-
gesture.enable(true);
|
|
496
|
-
};
|
|
497
|
-
/**
|
|
498
|
-
* Destroy an existing swipe gesture
|
|
499
|
-
* so Toast can no longer be swiped to dismiss.
|
|
500
|
-
*/
|
|
501
|
-
this.destroySwipeGesture = () => {
|
|
502
|
-
const { gesture } = this;
|
|
503
|
-
if (gesture === undefined) {
|
|
504
|
-
return;
|
|
505
|
-
}
|
|
506
|
-
gesture.destroy();
|
|
507
|
-
this.gesture = undefined;
|
|
508
|
-
};
|
|
509
|
-
/**
|
|
510
|
-
* Returns `true` if swipeGesture
|
|
511
|
-
* is configured to a value that enables the swipe behavior.
|
|
512
|
-
* Returns `false` otherwise.
|
|
513
|
-
*/
|
|
514
|
-
this.prefersSwipeGesture = () => {
|
|
515
|
-
const { swipeGesture } = this;
|
|
516
|
-
return swipeGesture === 'vertical';
|
|
517
|
-
};
|
|
518
217
|
this.revealContentToScreenReader = false;
|
|
519
218
|
this.overlayIndex = undefined;
|
|
520
219
|
this.delegate = undefined;
|
|
@@ -535,37 +234,9 @@ const Toast = /*@__PURE__*/ proxyCustomElement(class Toast extends HTMLElement {
|
|
|
535
234
|
this.animated = true;
|
|
536
235
|
this.icon = undefined;
|
|
537
236
|
this.htmlAttributes = undefined;
|
|
538
|
-
this.swipeGesture = undefined;
|
|
539
237
|
this.isOpen = false;
|
|
540
238
|
this.trigger = undefined;
|
|
541
239
|
}
|
|
542
|
-
swipeGestureChanged() {
|
|
543
|
-
/**
|
|
544
|
-
* If the Toast is presented, then we need to destroy
|
|
545
|
-
* any actives gestures before a new gesture is potentially
|
|
546
|
-
* created below.
|
|
547
|
-
*
|
|
548
|
-
* If the Toast is dismissed, then no gesture should be available
|
|
549
|
-
* since the Toast is not visible. This case should never
|
|
550
|
-
* happen since the "dismiss" method handles destroying
|
|
551
|
-
* any active swipe gestures, but we keep this code
|
|
552
|
-
* around to handle the first case.
|
|
553
|
-
*/
|
|
554
|
-
this.destroySwipeGesture();
|
|
555
|
-
/**
|
|
556
|
-
* A new swipe gesture should only be created
|
|
557
|
-
* if the Toast is presented. If the Toast is not
|
|
558
|
-
* yet presented then the "present" method will
|
|
559
|
-
* handle calling the swipe gesture setup function.
|
|
560
|
-
*/
|
|
561
|
-
if (this.presented && this.prefersSwipeGesture()) {
|
|
562
|
-
/**
|
|
563
|
-
* If the Toast is presented then
|
|
564
|
-
* lastPresentedPosition is defined.
|
|
565
|
-
*/
|
|
566
|
-
this.createSwipeGesture(this.lastPresentedPosition);
|
|
567
|
-
}
|
|
568
|
-
}
|
|
569
240
|
onIsOpenChange(newValue, oldValue) {
|
|
570
241
|
if (newValue === true && oldValue === false) {
|
|
571
242
|
this.present();
|
|
@@ -627,14 +298,6 @@ const Toast = /*@__PURE__*/ proxyCustomElement(class Toast extends HTMLElement {
|
|
|
627
298
|
if (this.duration > 0) {
|
|
628
299
|
this.durationTimeout = setTimeout(() => this.dismiss(undefined, 'timeout'), this.duration);
|
|
629
300
|
}
|
|
630
|
-
/**
|
|
631
|
-
* If the Toast has a swipe gesture then we can
|
|
632
|
-
* create the gesture so users can swipe the
|
|
633
|
-
* presented Toast.
|
|
634
|
-
*/
|
|
635
|
-
if (this.prefersSwipeGesture()) {
|
|
636
|
-
this.createSwipeGesture(animationPosition);
|
|
637
|
-
}
|
|
638
301
|
unlock();
|
|
639
302
|
}
|
|
640
303
|
/**
|
|
@@ -669,11 +332,6 @@ const Toast = /*@__PURE__*/ proxyCustomElement(class Toast extends HTMLElement {
|
|
|
669
332
|
this.revealContentToScreenReader = false;
|
|
670
333
|
}
|
|
671
334
|
this.lastPresentedPosition = undefined;
|
|
672
|
-
/**
|
|
673
|
-
* If the Toast has a swipe gesture then we can
|
|
674
|
-
* safely destroy it now that it is dismissed.
|
|
675
|
-
*/
|
|
676
|
-
this.destroySwipeGesture();
|
|
677
335
|
unlock();
|
|
678
336
|
return dismissed;
|
|
679
337
|
}
|
|
@@ -818,7 +476,6 @@ const Toast = /*@__PURE__*/ proxyCustomElement(class Toast extends HTMLElement {
|
|
|
818
476
|
}
|
|
819
477
|
get el() { return this; }
|
|
820
478
|
static get watchers() { return {
|
|
821
|
-
"swipeGesture": ["swipeGestureChanged"],
|
|
822
479
|
"isOpen": ["onIsOpenChange"],
|
|
823
480
|
"trigger": ["triggerChanged"]
|
|
824
481
|
}; }
|
|
@@ -846,7 +503,6 @@ const Toast = /*@__PURE__*/ proxyCustomElement(class Toast extends HTMLElement {
|
|
|
846
503
|
"animated": [4],
|
|
847
504
|
"icon": [1],
|
|
848
505
|
"htmlAttributes": [16],
|
|
849
|
-
"swipeGesture": [1, "swipe-gesture"],
|
|
850
506
|
"isOpen": [4, "is-open"],
|
|
851
507
|
"trigger": [1],
|
|
852
508
|
"revealContentToScreenReader": [32],
|
|
@@ -855,7 +511,6 @@ const Toast = /*@__PURE__*/ proxyCustomElement(class Toast extends HTMLElement {
|
|
|
855
511
|
"onDidDismiss": [64],
|
|
856
512
|
"onWillDismiss": [64]
|
|
857
513
|
}, undefined, {
|
|
858
|
-
"swipeGesture": ["swipeGestureChanged"],
|
|
859
514
|
"isOpen": ["onIsOpenChange"],
|
|
860
515
|
"trigger": ["triggerChanged"]
|
|
861
516
|
}]);
|
package/components/ion-toggle.js
CHANGED
|
@@ -127,8 +127,6 @@ const Toggle = /*@__PURE__*/ proxyCustomElement(class Toggle extends HTMLElement
|
|
|
127
127
|
if (this.legacyFormController.hasLegacyControl()) {
|
|
128
128
|
this.ionStyle.emit({
|
|
129
129
|
'interactive-disabled': this.disabled,
|
|
130
|
-
// TODO(FW-2990): remove this
|
|
131
|
-
legacy: !!this.legacy,
|
|
132
130
|
});
|
|
133
131
|
}
|
|
134
132
|
}
|