@ionic/core 7.5.8-dev.11701876182.1e71e7a0 → 7.5.8-dev.11702056888.11188f48
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/backdrop.js +0 -12
- package/components/checkbox.js +3 -5
- package/components/data.js +1 -1
- package/components/gesture-controller.js +1 -1
- 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-content.js +1 -1
- package/components/ion-datetime.js +40 -64
- package/components/ion-infinite-scroll.js +3 -11
- package/components/ion-input.js +8 -31
- package/components/ion-modal.js +2 -2
- package/components/ion-picker-column-option.d.ts +11 -0
- package/components/ion-picker-column-option.js +9 -0
- package/components/ion-picker-column.js +2 -2
- package/components/ion-picker-legacy-column.d.ts +11 -0
- package/components/ion-picker-legacy-column.js +9 -0
- package/components/{ion-picker-internal.d.ts → ion-picker-legacy.d.ts} +4 -4
- package/components/ion-picker-legacy.js +309 -0
- package/components/ion-picker.js +1 -309
- package/components/ion-range.js +3 -5
- 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 +3 -5
- package/components/item.js +2 -2
- package/components/label.js +2 -2
- package/components/overlays.js +12 -6
- package/components/picker-column-option.js +122 -0
- package/components/picker-column.js +351 -322
- package/components/picker-column2.js +379 -0
- package/components/{picker-internal.js → picker.js} +29 -22
- package/components/radio-group.js +0 -2
- package/components/radio.js +5 -45
- package/dist/cjs/{animation-9b401d39.js → animation-cc40e39c.js} +12 -13
- package/dist/cjs/{button-active-a5185907.js → button-active-9d7e0640.js} +2 -2
- package/dist/cjs/{capacitor-c04564bf.js → capacitor-46980811.js} +1 -1
- package/dist/cjs/{data-36b9094e.js → data-e7526b58.js} +1 -1
- package/dist/cjs/{gesture-controller-c40c045a.js → gesture-controller-9436f482.js} +1 -0
- package/dist/cjs/{haptic-b882e0bb.js → haptic-216df36c.js} +1 -1
- package/dist/cjs/index-306a7476.js +32 -0
- package/dist/cjs/{index-ce101dc9.js → index-5cbb20f9.js} +13 -11
- package/dist/cjs/{index-b4f986cd.js → index-8c1e77d6.js} +1 -1
- package/dist/cjs/{index-f8f13389.js → index-d4c2e02c.js} +2 -2
- package/dist/cjs/{index-d1b59ffa.js → index-ee07ed59.js} +1 -1
- package/dist/cjs/index.cjs.js +10 -10
- package/dist/cjs/{input-shims-a23bb0f4.js → input-shims-87102b6a.js} +10 -15
- package/dist/cjs/{input.utils-3d0166a2.js → input.utils-2a11c1fe.js} +3 -4
- 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 +0 -12
- package/dist/cjs/ion-checkbox.cjs.entry.js +3 -5
- package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +40 -60
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -11
- package/dist/cjs/ion-input.cjs.entry.js +11 -34
- package/dist/cjs/ion-item-option_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-item_8.cjs.entry.js +4 -17
- package/dist/cjs/ion-loading.cjs.entry.js +4 -3
- 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-option.cjs.entry.js +104 -0
- package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +106 -89
- package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +26 -19
- package/dist/cjs/ion-popover.cjs.entry.js +5 -4
- package/dist/cjs/ion-radio_2.cjs.entry.js +4 -9
- package/dist/cjs/ion-range.cjs.entry.js +4 -6
- 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 +36 -51
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-textarea.cjs.entry.js +10 -33
- package/dist/cjs/ion-toast.cjs.entry.js +93 -434
- package/dist/cjs/ion-toggle.cjs.entry.js +7 -9
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/{ios.transition-6787b799.js → ios.transition-a4ffb5a2.js} +3 -3
- package/dist/cjs/{keyboard-af1bb365.js → keyboard-7d621ee9.js} +3 -3
- package/dist/cjs/{keyboard-0272231f.js → keyboard-9390928c.js} +1 -1
- package/dist/cjs/{keyboard-controller-c05e747a.js → keyboard-controller-2158b478.js} +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{md.transition-e033d20a.js → md.transition-292abe1c.js} +3 -3
- package/dist/cjs/{notch-controller-9735e7ac.js → notch-controller-1dce508a.js} +1 -1
- package/dist/cjs/{overlays-27a6fb16.js → overlays-e8e05b0e.js} +12 -7
- package/dist/cjs/{swipe-back-2a858bbd.js → swipe-back-b8f2330b.js} +2 -2
- package/dist/collection/collection-manifest.json +7 -6
- package/dist/collection/components/backdrop/backdrop.js +0 -12
- package/dist/collection/components/checkbox/checkbox.ios.css +6 -0
- package/dist/collection/components/checkbox/checkbox.js +1 -4
- package/dist/collection/components/checkbox/checkbox.md.css +6 -0
- package/dist/collection/components/checkbox/test/checkbox.spec.js +0 -14
- package/dist/collection/components/content/content.css +0 -4
- package/dist/collection/components/datetime/datetime.ios.css +85 -38
- package/dist/collection/components/datetime/datetime.js +24 -36
- package/dist/collection/components/datetime/datetime.md.css +90 -38
- package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/a11y/datetime.spec.js +6 -9
- package/dist/collection/components/datetime/test/basic/datetime.e2e.js +10 -0
- package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
- package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
- 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 +43 -41
- package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +4 -4
- package/dist/collection/components/datetime/test/values/datetime.e2e.js +15 -12
- package/dist/collection/components/datetime/utils/data.js +1 -1
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +3 -11
- 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 +3 -41
- package/dist/collection/components/item/item.md.css +3 -41
- package/dist/collection/components/item/test/basic/item.e2e.js +1 -1
- package/dist/collection/components/item/test/disabled/item.e2e.js +1 -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/picker/picker.ios.css +113 -211
- package/dist/collection/components/picker/picker.js +468 -743
- package/dist/collection/components/picker/picker.md.css +109 -198
- package/dist/collection/components/{picker-internal/test/a11y/picker-internal.e2e.js → picker/test/a11y/picker.e2e.js} +2 -2
- package/dist/collection/components/picker/test/basic/picker.e2e.js +99 -13
- package/dist/collection/components/picker/test/custom/picker.e2e.js +85 -0
- package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +63 -32
- package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-column/picker-column.css} +96 -83
- package/dist/collection/components/picker-column/picker-column.js +497 -335
- package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +8 -8
- package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +91 -0
- package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +39 -0
- package/dist/collection/components/picker-column-option/picker-column-option.ios.css +87 -0
- package/dist/collection/components/picker-column-option/picker-column-option.js +173 -0
- package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column-option/picker-column-option.md.css} +6 -53
- package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +18 -0
- package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +37 -0
- package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +29 -0
- package/dist/collection/components/{picker-internal/picker-internal.md.css → picker-legacy/picker.ios.css} +207 -98
- package/dist/collection/components/picker-legacy/picker.js +817 -0
- package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker-legacy/picker.md.css} +192 -100
- package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +25 -0
- package/dist/collection/components/{picker → picker-legacy}/test/is-open/picker.e2e.js +4 -4
- package/dist/collection/components/{picker → picker-legacy}/test/picker-id.spec.js +5 -5
- package/dist/collection/components/{picker → picker-legacy}/test/trigger/picker.e2e.js +1 -1
- package/dist/collection/components/picker-legacy-column/picker-column.js +419 -0
- package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-aria.spec.js +3 -3
- package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-dynamic.spec.js +2 -2
- package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column.spec.js +2 -2
- package/dist/collection/components/{picker-column → picker-legacy-column}/test/standalone/picker-column.e2e.js +3 -3
- package/dist/collection/components/radio/radio.ios.css +6 -0
- package/dist/collection/components/radio/radio.js +3 -7
- package/dist/collection/components/radio/radio.md.css +6 -0
- package/dist/collection/components/radio/test/radio.spec.js +0 -14
- package/dist/collection/components/radio-group/radio-group.js +0 -24
- package/dist/collection/components/range/range.ios.css +6 -0
- package/dist/collection/components/range/range.js +1 -4
- package/dist/collection/components/range/range.md.css +6 -0
- package/dist/collection/components/range/test/range.spec.js +0 -16
- package/dist/collection/components/select/select.ios.css +7 -60
- package/dist/collection/components/select/select.js +28 -45
- package/dist/collection/components/select/select.md.css +19 -63
- package/dist/collection/components/select/test/item/select.e2e.js +0 -15
- 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/test/toast.spec.js +0 -80
- 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/test/toggle.spec.js +0 -12
- package/dist/collection/components/toggle/toggle.ios.css +6 -0
- package/dist/collection/components/toggle/toggle.js +1 -4
- package/dist/collection/components/toggle/toggle.md.css +6 -0
- package/dist/collection/utils/animation/animation.js +11 -12
- package/dist/collection/utils/animation/test/animation.spec.js +0 -16
- package/dist/collection/utils/browser/index.js +22 -0
- package/dist/collection/utils/forms/index.js +0 -1
- package/dist/collection/utils/gesture/gesture-controller.js +1 -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 +11 -5
- package/dist/collection/utils/slot-mutation-controller.js +2 -3
- package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +65 -0
- package/dist/docs.json +573 -272
- package/dist/esm/{animation-dde8cc0d.js → animation-fb0e0f6f.js} +12 -13
- package/dist/esm/{button-active-c6ee4f50.js → button-active-ed9d848c.js} +2 -2
- package/dist/esm/{capacitor-59395cbd.js → capacitor-b0e5fe83.js} +1 -1
- package/dist/esm/{data-f5c75b4e.js → data-4b9508c9.js} +1 -1
- package/dist/esm/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
- package/dist/esm/{haptic-554688a5.js → haptic-152c4172.js} +1 -1
- package/dist/esm/{index-2cf77112.js → index-39782642.js} +2 -2
- package/dist/esm/index-7a14ecec.js +29 -0
- package/dist/esm/{index-0c12c22b.js → index-80492ed3.js} +13 -11
- package/dist/esm/{index-82eeb47f.js → index-ba9976bb.js} +1 -1
- package/dist/esm/{index-1932b201.js → index-d8817fb0.js} +2 -2
- package/dist/esm/index.js +10 -10
- package/dist/esm/{input-shims-6539ce13.js → input-shims-0a2e541d.js} +9 -14
- package/dist/esm/{input.utils-a5a2d164.js → input.utils-2846d430.js} +3 -4
- 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 +0 -12
- package/dist/esm/ion-checkbox.entry.js +3 -5
- package/dist/esm/ion-datetime-button.entry.js +1 -1
- package/dist/esm/ion-datetime_3.entry.js +39 -59
- package/dist/esm/ion-infinite-scroll_2.entry.js +3 -11
- package/dist/esm/ion-input.entry.js +11 -34
- package/dist/esm/ion-item-option_3.entry.js +1 -1
- package/dist/esm/ion-item_8.entry.js +4 -17
- package/dist/esm/ion-loading.entry.js +4 -3
- 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-option.entry.js +100 -0
- package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +106 -89
- package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +26 -19
- package/dist/esm/ion-popover.entry.js +5 -4
- package/dist/esm/ion-radio_2.entry.js +4 -9
- package/dist/esm/ion-range.entry.js +4 -6
- 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 +32 -47
- package/dist/esm/ion-tab-bar_2.entry.js +4 -4
- package/dist/esm/ion-textarea.entry.js +10 -33
- package/dist/esm/ion-toast.entry.js +76 -417
- package/dist/esm/ion-toggle.entry.js +7 -9
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/{ios.transition-802a84a6.js → ios.transition-fd16bec1.js} +3 -3
- package/dist/esm/{keyboard-52278bd7.js → keyboard-c402e885.js} +3 -3
- package/dist/esm/{keyboard-controller-ec5c2bfa.js → keyboard-controller-5d90929a.js} +2 -2
- package/dist/esm/{keyboard-73175e24.js → keyboard-dbb05fb9.js} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{md.transition-43c2874d.js → md.transition-94ac93e1.js} +3 -3
- package/dist/esm/{notch-controller-fea7f9c5.js → notch-controller-d09b6aca.js} +1 -1
- package/dist/esm/{overlays-32ef481d.js → overlays-fbc5cab5.js} +13 -7
- package/dist/esm/{swipe-back-a6f386fc.js → swipe-back-a8ca7f93.js} +2 -2
- package/dist/esm-es5/{animation-dde8cc0d.js → animation-fb0e0f6f.js} +1 -1
- package/dist/esm-es5/{button-active-c6ee4f50.js → button-active-ed9d848c.js} +1 -1
- package/dist/esm-es5/{capacitor-59395cbd.js → capacitor-b0e5fe83.js} +1 -1
- package/dist/esm-es5/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
- package/dist/esm-es5/{haptic-554688a5.js → haptic-152c4172.js} +1 -1
- package/dist/esm-es5/{index-2cf77112.js → index-39782642.js} +1 -1
- package/dist/esm-es5/index-80492ed3.js +4 -0
- package/dist/esm-es5/{index-82eeb47f.js → index-ba9976bb.js} +1 -1
- package/dist/esm-es5/{index-1932b201.js → index-d8817fb0.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/input-shims-0a2e541d.js +4 -0
- package/dist/esm-es5/input.utils-2846d430.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-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-option.entry.js +4 -0
- package/dist/esm-es5/ion-picker-column.entry.js +4 -0
- package/dist/esm-es5/ion-picker.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-802a84a6.js → ios.transition-fd16bec1.js} +1 -1
- package/dist/esm-es5/{keyboard-52278bd7.js → keyboard-c402e885.js} +1 -1
- package/dist/esm-es5/{keyboard-controller-ec5c2bfa.js → keyboard-controller-5d90929a.js} +1 -1
- package/dist/esm-es5/{keyboard-73175e24.js → keyboard-dbb05fb9.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/md.transition-94ac93e1.js +4 -0
- package/dist/esm-es5/{notch-controller-fea7f9c5.js → notch-controller-d09b6aca.js} +1 -1
- package/dist/esm-es5/overlays-fbc5cab5.js +4 -0
- package/dist/esm-es5/swipe-back-a8ca7f93.js +4 -0
- package/dist/html.html-data.json +153 -15
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-8985cdb6.system.js → p-0e4f2e17.system.js} +1 -1
- package/dist/ionic/{p-33a37fad.system.js → p-1d624e03.system.js} +1 -1
- package/dist/ionic/{p-3dd98a73.entry.js → p-1fc72959.entry.js} +1 -1
- package/dist/ionic/{p-c7c8429a.system.js → p-20d469d0.system.js} +1 -1
- package/dist/ionic/{p-251666e2.entry.js → p-21c3515a.entry.js} +1 -1
- package/dist/ionic/p-22e5af95.entry.js +4 -0
- package/dist/ionic/p-232d1f22.entry.js +4 -0
- package/dist/ionic/p-23672c82.system.entry.js +4 -0
- package/dist/ionic/p-26798a7b.system.entry.js +4 -0
- package/dist/ionic/p-27bcbbc7.system.entry.js +4 -0
- package/dist/ionic/p-2ab4e925.system.entry.js +4 -0
- package/dist/ionic/p-2d5aeccc.js +4 -0
- package/dist/ionic/p-2d600c25.system.js +4 -0
- package/dist/ionic/{p-31fcb233.system.js → p-30029cc2.system.js} +1 -1
- package/dist/ionic/{p-cabad15b.system.js → p-304383f9.system.js} +1 -1
- package/dist/ionic/p-308e1341.js +4 -0
- package/dist/ionic/{p-cdbeaadc.js → p-31158892.js} +1 -1
- package/dist/ionic/p-32303650.system.entry.js +4 -0
- package/dist/ionic/{p-0bd51c34.system.js → p-32e19bee.system.js} +1 -1
- package/dist/ionic/p-34c39c48.entry.js +4 -0
- package/dist/ionic/p-36d194c5.entry.js +4 -0
- package/dist/ionic/p-3ba01a9c.system.entry.js +4 -0
- package/dist/ionic/p-3c58a71b.js +4 -0
- package/dist/ionic/{p-31b2326e.system.js → p-3e1e14d9.system.js} +1 -1
- package/dist/ionic/{p-78aadecb.entry.js → p-3f6270b3.entry.js} +1 -1
- package/dist/ionic/p-3fd26bd6.system.entry.js +4 -0
- package/dist/ionic/p-3fe96156.system.js +4 -0
- package/dist/ionic/p-42ba3902.entry.js +4 -0
- package/dist/ionic/{p-6de472cb.js → p-4890093d.js} +1 -1
- package/dist/ionic/{p-88fde0e0.entry.js → p-4911a5d6.entry.js} +1 -1
- package/dist/ionic/p-4a081ea9.entry.js +4 -0
- package/dist/ionic/p-4a31c99f.entry.js +4 -0
- package/dist/ionic/p-4a36430f.system.entry.js +4 -0
- package/dist/ionic/{p-27281edd.js → p-4e8e09e1.js} +1 -1
- package/dist/ionic/p-51abefb7.system.js +4 -0
- package/dist/ionic/{p-4f3ae45a.entry.js → p-535d2a67.entry.js} +1 -1
- package/dist/ionic/{p-e24ce1e5.system.js → p-54dfc9b5.system.js} +1 -1
- package/dist/ionic/p-563c41f0.system.entry.js +4 -0
- package/dist/ionic/{p-5e745192.system.js → p-57477107.system.js} +1 -1
- package/dist/ionic/p-5a1aac13.system.entry.js +4 -0
- package/dist/ionic/p-5a68960f.entry.js +4 -0
- package/dist/ionic/{p-4d67d27a.entry.js → p-5d42b6b4.entry.js} +1 -1
- package/dist/ionic/{p-42f189f4.js → p-643a8fae.js} +1 -1
- package/dist/ionic/{p-a9978d08.entry.js → p-6b7c55cd.entry.js} +1 -1
- package/dist/ionic/p-6c37f051.js +4 -0
- package/dist/ionic/{p-a1987850.entry.js → p-6d72fb44.entry.js} +1 -1
- package/dist/ionic/{p-e6d68e02.system.entry.js → p-6fd64e7c.system.entry.js} +1 -1
- package/dist/ionic/p-73190c5f.entry.js +4 -0
- package/dist/ionic/p-73aa7604.entry.js +4 -0
- package/dist/ionic/{p-3a75d7fd.js → p-75445583.js} +1 -1
- package/dist/ionic/{p-f70970cf.js → p-76d3765d.js} +1 -1
- package/dist/ionic/{p-a0bb7b92.system.entry.js → p-77965464.system.entry.js} +1 -1
- package/dist/ionic/p-7b725280.entry.js +4 -0
- package/dist/ionic/p-8017aad2.system.entry.js +4 -0
- package/dist/ionic/p-83af3685.system.js +4 -0
- package/dist/ionic/p-846ee227.entry.js +4 -0
- package/dist/ionic/p-856c430d.js +4 -0
- package/dist/ionic/p-8a1ad27c.system.entry.js +4 -0
- package/dist/ionic/p-8ab2d8be.entry.js +4 -0
- package/dist/ionic/p-8c97cdc0.entry.js +4 -0
- package/dist/ionic/{p-f5d2dc9b.js → p-8ededb41.js} +1 -1
- package/dist/ionic/p-8fa6583d.system.js +4 -0
- package/dist/ionic/p-93000a81.system.entry.js +4 -0
- package/dist/ionic/{p-1cca10d6.system.js → p-95c26010.system.js} +1 -1
- package/dist/ionic/{p-8acae6b0.system.entry.js → p-96dbbac1.system.entry.js} +1 -1
- package/dist/ionic/{p-ddbb2d5b.system.js → p-98d82c73.system.js} +1 -1
- package/dist/ionic/p-990ffd0e.js +4 -0
- package/dist/ionic/{p-bb3615f7.js → p-9b97df10.js} +1 -1
- package/dist/ionic/{p-3137c025.system.entry.js → p-9c229210.system.entry.js} +2 -2
- package/dist/ionic/p-a225bf0f.system.entry.js +4 -0
- package/dist/ionic/p-a60a1ce5.js +4 -0
- package/dist/ionic/p-a8baa23e.entry.js +4 -0
- package/dist/ionic/p-a98dc0c1.entry.js +4 -0
- package/dist/ionic/{p-5eda1d7d.entry.js → p-a9a80f5b.entry.js} +1 -1
- package/dist/ionic/p-a9e3b5be.system.entry.js +4 -0
- package/dist/ionic/p-ab9456e9.system.entry.js +4 -0
- package/dist/ionic/p-afcf4620.entry.js +4 -0
- package/dist/ionic/{p-ddb30596.entry.js → p-b133e9b4.entry.js} +1 -1
- package/dist/ionic/{p-6de62649.system.entry.js → p-b4d31b30.system.entry.js} +1 -1
- package/dist/ionic/{p-46d400b4.system.entry.js → p-b752714f.system.entry.js} +1 -1
- package/dist/ionic/{p-fba0a6e7.system.entry.js → p-c18de88a.system.entry.js} +1 -1
- package/dist/ionic/p-c8f0a036.entry.js +4 -0
- package/dist/ionic/p-ca8938f4.js +4 -0
- package/dist/ionic/p-cde52378.system.entry.js +4 -0
- package/dist/ionic/p-d43f1f3d.system.js +4 -0
- package/dist/ionic/p-d662d908.js +4 -0
- package/dist/ionic/p-d9695ad9.system.js +4 -0
- package/dist/ionic/p-da15f571.system.entry.js +4 -0
- package/dist/ionic/p-e3584231.system.js +1 -1
- package/dist/ionic/p-e4d90573.js +4 -0
- package/dist/ionic/{p-6577aea9.system.entry.js → p-e8e86f69.system.entry.js} +1 -1
- package/dist/ionic/p-f54c72b0.system.js +4 -0
- package/dist/ionic/p-f7a36cd0.system.js +4 -0
- package/dist/ionic/{p-9eec42cc.system.entry.js → p-f910cc73.system.entry.js} +1 -1
- package/dist/ionic/p-f967631d.js +4 -0
- package/dist/ionic/{p-ada96dd0.system.entry.js → p-fbf3a689.system.entry.js} +1 -1
- package/dist/ionic/p-fe4dde76.entry.js +4 -0
- package/dist/ionic/p-ffd5dba4.system.entry.js +4 -0
- package/dist/types/components/backdrop/backdrop.d.ts +0 -3
- package/dist/types/components/checkbox/checkbox.d.ts +0 -1
- package/dist/types/components/datetime/datetime.d.ts +0 -1
- package/dist/types/components/datetime/utils/data.d.ts +11 -7
- package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +0 -7
- package/dist/types/components/input/input.d.ts +0 -2
- package/dist/types/components/menu/menu.d.ts +1 -1
- package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
- package/dist/types/components/picker/picker.d.ts +74 -131
- package/dist/types/components/picker-column/picker-column-interfaces.d.ts +4 -0
- package/dist/types/components/picker-column/picker-column.d.ts +99 -39
- package/dist/types/components/picker-column-option/picker-column-option.d.ts +66 -0
- package/dist/types/components/picker-legacy/picker.d.ts +158 -0
- package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
- package/dist/types/components/radio/radio.d.ts +0 -1
- 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/range/range.d.ts +0 -1
- 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/toggle/toggle.d.ts +0 -1
- package/dist/types/components.d.ts +161 -159
- package/dist/types/interface.d.ts +6 -2
- 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/config.d.ts +2 -2
- package/dist/types/utils/forms/index.d.ts +0 -1
- package/dist/types/utils/gesture/gesture-controller.d.ts +1 -0
- package/dist/types/utils/hardware-back-button.d.ts +0 -4
- package/dist/types/utils/overlays.d.ts +5 -3
- package/dist/types/utils/slot-mutation-controller.d.ts +2 -2
- package/hydrate/index.js +1528 -1886
- package/package.json +1 -1
- package/components/ion-picker-column-internal.d.ts +0 -11
- package/components/ion-picker-column-internal.js +0 -9
- package/components/ion-picker-internal.js +0 -9
- package/components/picker-column-internal.js +0 -390
- package/dist/cjs/compare-with-utils-df1001d7.js +0 -44
- package/dist/cjs/index-c8d52405.js +0 -10
- package/dist/collection/components/infinite-scroll/test/small-dom-update/infinite-scroll.e2e.js +0 -31
- package/dist/collection/components/input/test/slot/input.e2e.js +0 -51
- package/dist/collection/components/picker-column-internal/picker-column-internal.js +0 -565
- package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +0 -162
- package/dist/collection/components/picker-internal/picker-internal.js +0 -544
- package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +0 -118
- package/dist/collection/components/radio-group/test/radio-group.spec.js +0 -69
- 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/components/toast/test/toast-config.spec.js +0 -25
- package/dist/collection/utils/forms/compare-with-utils.js +0 -39
- package/dist/esm/compare-with-utils-a96ff2ea.js +0 -41
- package/dist/esm/index-a5d50daf.js +0 -7
- package/dist/esm-es5/compare-with-utils-a96ff2ea.js +0 -4
- package/dist/esm-es5/index-0c12c22b.js +0 -4
- package/dist/esm-es5/input-shims-6539ce13.js +0 -4
- package/dist/esm-es5/input.utils-a5a2d164.js +0 -4
- package/dist/esm-es5/ion-picker-column-internal.entry.js +0 -4
- package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
- package/dist/esm-es5/md.transition-43c2874d.js +0 -4
- package/dist/esm-es5/overlays-32ef481d.js +0 -4
- package/dist/esm-es5/swipe-back-a6f386fc.js +0 -4
- package/dist/ionic/p-01d14eba.system.entry.js +0 -4
- package/dist/ionic/p-042e6f4b.entry.js +0 -4
- package/dist/ionic/p-05d83227.system.entry.js +0 -4
- package/dist/ionic/p-16756e94.system.entry.js +0 -4
- package/dist/ionic/p-1b19c04b.entry.js +0 -4
- package/dist/ionic/p-1e4371bd.js +0 -4
- package/dist/ionic/p-28249b10.system.entry.js +0 -4
- package/dist/ionic/p-28a2c2a2.entry.js +0 -4
- package/dist/ionic/p-29d03b3a.js +0 -4
- package/dist/ionic/p-2b7827c7.js +0 -4
- package/dist/ionic/p-2d3b9fa3.system.entry.js +0 -4
- package/dist/ionic/p-2d539df1.entry.js +0 -4
- package/dist/ionic/p-35ce400e.system.js +0 -4
- package/dist/ionic/p-36d187af.js +0 -4
- package/dist/ionic/p-376a6063.js +0 -4
- package/dist/ionic/p-38f2c6bb.system.js +0 -4
- package/dist/ionic/p-39c31982.system.entry.js +0 -4
- package/dist/ionic/p-3e6b47e8.system.entry.js +0 -4
- package/dist/ionic/p-3f5179b5.entry.js +0 -4
- package/dist/ionic/p-40f68333.system.js +0 -4
- package/dist/ionic/p-438e1b8a.entry.js +0 -4
- package/dist/ionic/p-47b6ba5b.js +0 -4
- package/dist/ionic/p-517a9885.system.entry.js +0 -4
- package/dist/ionic/p-53ec4f1c.system.js +0 -4
- package/dist/ionic/p-5e4eec2e.entry.js +0 -4
- package/dist/ionic/p-6a6477b2.js +0 -4
- package/dist/ionic/p-72f6ff89.js +0 -4
- package/dist/ionic/p-765f4dde.entry.js +0 -4
- package/dist/ionic/p-7d92bf15.system.entry.js +0 -4
- package/dist/ionic/p-7ee0f3f2.entry.js +0 -4
- package/dist/ionic/p-80fa068e.entry.js +0 -4
- package/dist/ionic/p-8314281e.system.js +0 -4
- package/dist/ionic/p-88d5fbd3.js +0 -4
- package/dist/ionic/p-8d69a624.entry.js +0 -4
- package/dist/ionic/p-8de17614.system.entry.js +0 -4
- package/dist/ionic/p-908475e7.system.entry.js +0 -4
- package/dist/ionic/p-91d33c4a.js +0 -4
- package/dist/ionic/p-979d4f5c.system.js +0 -4
- package/dist/ionic/p-9b7f0b0f.entry.js +0 -4
- package/dist/ionic/p-9e447eb1.system.js +0 -4
- package/dist/ionic/p-9f6ee2c0.system.entry.js +0 -4
- package/dist/ionic/p-a0d7bb5e.system.js +0 -4
- package/dist/ionic/p-a3277a67.entry.js +0 -4
- package/dist/ionic/p-afd6ca9d.entry.js +0 -4
- package/dist/ionic/p-b56d0866.system.entry.js +0 -4
- package/dist/ionic/p-b6f9d32a.entry.js +0 -4
- package/dist/ionic/p-c61cc894.js +0 -4
- package/dist/ionic/p-cce9f61a.system.entry.js +0 -4
- package/dist/ionic/p-d032f825.system.entry.js +0 -4
- package/dist/ionic/p-d51674c5.system.js +0 -4
- package/dist/ionic/p-de6f8b28.system.js +0 -4
- package/dist/ionic/p-de756e5c.js +0 -4
- package/dist/ionic/p-dee7c1d0.system.entry.js +0 -4
- package/dist/ionic/p-dfd9432a.entry.js +0 -4
- package/dist/ionic/p-e94c392d.entry.js +0 -4
- package/dist/ionic/p-f0445d82.system.entry.js +0 -4
- package/dist/ionic/p-f656e032.system.entry.js +0 -4
- package/dist/ionic/p-feae5133.entry.js +0 -4
- package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +0 -5
- package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +0 -102
- package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
- package/dist/types/components/picker-internal/picker-internal.d.ts +0 -102
- package/dist/types/components/toast/gestures/swipe-to-dismiss.d.ts +0 -9
- package/dist/types/jest.d.ts +0 -5
- package/dist/types/utils/forms/compare-with-utils.d.ts +0 -18
- /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
- /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
- /package/dist/collection/components/{picker → picker-legacy}/animations/ios.enter.js +0 -0
- /package/dist/collection/components/{picker → picker-legacy}/animations/ios.leave.js +0 -0
- /package/dist/collection/components/{picker → picker-legacy}/picker-interface.js +0 -0
- /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.ios.css +0 -0
- /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.md.css +0 -0
- /package/dist/collection/components/{picker-column → picker-legacy-column}/test/test.utils.js +0 -0
- /package/dist/esm-es5/{data-f5c75b4e.js → data-4b9508c9.js} +0 -0
- /package/dist/esm-es5/{index-a5d50daf.js → index-7a14ecec.js} +0 -0
- /package/dist/ionic/{p-792919fd.system.js → p-0e94957a.system.js} +0 -0
- /package/dist/ionic/{p-2aea8b1e.js → p-368f5215.js} +0 -0
- /package/dist/ionic/{p-7b30edcc.js → p-b347cfd1.js} +0 -0
- /package/dist/ionic/{p-82e3d633.system.js → p-f58981c2.system.js} +0 -0
- /package/dist/types/components/{picker → picker-legacy}/animations/ios.enter.d.ts +0 -0
- /package/dist/types/components/{picker → picker-legacy}/animations/ios.leave.d.ts +0 -0
- /package/dist/types/components/{picker → picker-legacy}/picker-interface.d.ts +0 -0
- /package/dist/types/components/{picker-column → picker-legacy-column}/test/test.utils.d.ts +0 -0
|
@@ -13,8 +13,6 @@ import { getCounterText } from "../input/input.utils";
|
|
|
13
13
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
14
14
|
*
|
|
15
15
|
* @slot label - The label text to associate with the textarea. Use the `labelPlacement` property to control where the label is placed relative to the textarea. Use this if you need to render a label with custom HTML. (EXPERIMENTAL)
|
|
16
|
-
* @slot start - Content to display at the leading edge of the textarea. (EXPERIMENTAL)
|
|
17
|
-
* @slot end - Content to display at the trailing edge of the textarea. (EXPERIMENTAL)
|
|
18
16
|
*/
|
|
19
17
|
export class Textarea {
|
|
20
18
|
constructor() {
|
|
@@ -123,7 +121,7 @@ export class Textarea {
|
|
|
123
121
|
connectedCallback() {
|
|
124
122
|
const { el } = this;
|
|
125
123
|
this.legacyFormController = createLegacyFormController(el);
|
|
126
|
-
this.slotMutationController = createSlotMutationController(el,
|
|
124
|
+
this.slotMutationController = createSlotMutationController(el, 'label', () => forceUpdate(this));
|
|
127
125
|
this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
|
|
128
126
|
this.emitStyle();
|
|
129
127
|
this.debounceChanged();
|
|
@@ -193,8 +191,6 @@ export class Textarea {
|
|
|
193
191
|
'has-placeholder': this.placeholder !== undefined,
|
|
194
192
|
'has-value': this.hasValue(),
|
|
195
193
|
'has-focus': this.hasFocus,
|
|
196
|
-
// TODO(FW-2876): remove this
|
|
197
|
-
legacy: !!this.legacy,
|
|
198
194
|
});
|
|
199
195
|
}
|
|
200
196
|
}
|
|
@@ -366,41 +362,20 @@ Developers can use the "legacy" property to continue using the legacy form marku
|
|
|
366
362
|
return (h("div", { class: "textarea-bottom" }, this.renderHintText(), this.renderCounter()));
|
|
367
363
|
}
|
|
368
364
|
renderTextarea() {
|
|
369
|
-
const { inputId, disabled, fill, shape, labelPlacement
|
|
365
|
+
const { inputId, disabled, fill, shape, labelPlacement } = this;
|
|
370
366
|
const mode = getIonMode(this);
|
|
371
367
|
const value = this.getValue();
|
|
372
368
|
const inItem = hostContext('ion-item', this.el);
|
|
373
369
|
const shouldRenderHighlight = mode === 'md' && fill !== 'outline' && !inItem;
|
|
374
|
-
const hasValue = this.hasValue();
|
|
375
|
-
const hasStartEndSlots = el.querySelector('[slot="start"], [slot="end"]') !== null;
|
|
376
|
-
/**
|
|
377
|
-
* If the label is stacked, it should always sit above the textarea.
|
|
378
|
-
* For floating labels, the label should move above the textarea if
|
|
379
|
-
* the textarea has a value, is focused, or has anything in either
|
|
380
|
-
* the start or end slot.
|
|
381
|
-
*
|
|
382
|
-
* If there is content in the start slot, the label would overlap
|
|
383
|
-
* it if not forced to float. This is also applied to the end slot
|
|
384
|
-
* because with the default or solid fills, the textarea is not
|
|
385
|
-
* vertically centered in the container, but the label is. This
|
|
386
|
-
* causes the slots and label to appear vertically offset from each
|
|
387
|
-
* other when the label isn't floating above the input. This doesn't
|
|
388
|
-
* apply to the outline fill, but this was not accounted for to keep
|
|
389
|
-
* things consistent.
|
|
390
|
-
*
|
|
391
|
-
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
392
|
-
*/
|
|
393
|
-
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
|
|
394
370
|
return (h(Host, { class: createColorClasses(this.color, {
|
|
395
371
|
[mode]: true,
|
|
396
|
-
'has-value': hasValue,
|
|
397
|
-
'has-focus': hasFocus,
|
|
398
|
-
'label-floating': labelShouldFloat,
|
|
372
|
+
'has-value': this.hasValue(),
|
|
373
|
+
'has-focus': this.hasFocus,
|
|
399
374
|
[`textarea-fill-${fill}`]: fill !== undefined,
|
|
400
375
|
[`textarea-shape-${shape}`]: shape !== undefined,
|
|
401
376
|
[`textarea-label-placement-${labelPlacement}`]: true,
|
|
402
377
|
'textarea-disabled': disabled,
|
|
403
|
-
}) }, h("label", { class: "textarea-wrapper"
|
|
378
|
+
}) }, h("label", { class: "textarea-wrapper" }, this.renderLabelContainer(), h("div", { class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, h("textarea", Object.assign({ class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value)), shouldRenderHighlight && h("div", { class: "textarea-highlight" })), this.renderBottomContent()));
|
|
404
379
|
}
|
|
405
380
|
render() {
|
|
406
381
|
const { legacyFormController } = this;
|
|
@@ -356,7 +356,9 @@
|
|
|
356
356
|
}
|
|
357
357
|
|
|
358
358
|
.native-wrapper {
|
|
359
|
+
display: flex;
|
|
359
360
|
position: relative;
|
|
361
|
+
flex-grow: 1;
|
|
360
362
|
width: 100%;
|
|
361
363
|
height: 100%;
|
|
362
364
|
}
|
|
@@ -427,12 +429,6 @@
|
|
|
427
429
|
word-break: break-word;
|
|
428
430
|
}
|
|
429
431
|
|
|
430
|
-
.textarea-wrapper-inner {
|
|
431
|
-
display: flex;
|
|
432
|
-
width: 100%;
|
|
433
|
-
min-height: inherit;
|
|
434
|
-
}
|
|
435
|
-
|
|
436
432
|
:host(.ion-touched.ion-invalid) {
|
|
437
433
|
--highlight-color: var(--highlight-color-invalid);
|
|
438
434
|
}
|
|
@@ -708,13 +704,6 @@
|
|
|
708
704
|
margin-bottom: 0px;
|
|
709
705
|
}
|
|
710
706
|
|
|
711
|
-
:host(.textarea-label-placement-stacked) ::slotted([slot=start]),
|
|
712
|
-
:host(.textarea-label-placement-stacked) ::slotted([slot=end]),
|
|
713
|
-
:host(.textarea-label-placement-floating) ::slotted([slot=start]),
|
|
714
|
-
:host(.textarea-label-placement-floating) ::slotted([slot=end]) {
|
|
715
|
-
margin-top: 8px;
|
|
716
|
-
}
|
|
717
|
-
|
|
718
707
|
/**
|
|
719
708
|
* This makes the label sit over the textarea
|
|
720
709
|
* when the textarea is blurred and has no value.
|
|
@@ -740,7 +729,9 @@
|
|
|
740
729
|
/**
|
|
741
730
|
* This makes the label sit above the textarea.
|
|
742
731
|
*/
|
|
743
|
-
:host(.label-
|
|
732
|
+
:host(.textarea-label-placement-stacked) .label-text-wrapper,
|
|
733
|
+
:host(.has-focus.textarea-label-placement-floating) .label-text-wrapper,
|
|
734
|
+
:host(.has-value.textarea-label-placement-floating) .label-text-wrapper {
|
|
744
735
|
transform: translateY(50%) scale(0.75);
|
|
745
736
|
/**
|
|
746
737
|
* Label text should not extend
|
|
@@ -749,29 +740,6 @@
|
|
|
749
740
|
max-width: calc(100% / 0.75);
|
|
750
741
|
}
|
|
751
742
|
|
|
752
|
-
.start-slot-wrapper, .end-slot-wrapper {
|
|
753
|
-
padding-left: 0;
|
|
754
|
-
padding-right: 0;
|
|
755
|
-
padding-top: var(--padding-top);
|
|
756
|
-
padding-bottom: var(--padding-bottom);
|
|
757
|
-
display: flex;
|
|
758
|
-
flex-shrink: 0;
|
|
759
|
-
align-self: start;
|
|
760
|
-
}
|
|
761
|
-
|
|
762
|
-
::slotted([slot=start]),
|
|
763
|
-
::slotted([slot=end]) {
|
|
764
|
-
margin-top: 0;
|
|
765
|
-
}
|
|
766
|
-
|
|
767
|
-
::slotted([slot=start]) {
|
|
768
|
-
margin-inline-end: 16px;
|
|
769
|
-
}
|
|
770
|
-
|
|
771
|
-
::slotted([slot=end]) {
|
|
772
|
-
margin-inline-start: 16px;
|
|
773
|
-
}
|
|
774
|
-
|
|
775
743
|
/**
|
|
776
744
|
* Convert a font size to a dynamic font size.
|
|
777
745
|
* Fonts that participate in Dynamic Type should use
|
|
@@ -1069,7 +1037,9 @@
|
|
|
1069
1037
|
}
|
|
1070
1038
|
}
|
|
1071
1039
|
|
|
1072
|
-
:host(.
|
|
1040
|
+
:host(.textarea-fill-solid.textarea-label-placement-stacked) .label-text-wrapper,
|
|
1041
|
+
:host(.has-focus.textarea-fill-solid.textarea-label-placement-floating) .label-text-wrapper,
|
|
1042
|
+
:host(.has-value.textarea-fill-solid.textarea-label-placement-floating) .label-text-wrapper {
|
|
1073
1043
|
/**
|
|
1074
1044
|
* Label text should not extend
|
|
1075
1045
|
* beyond the bounds of the textarea.
|
|
@@ -1223,7 +1193,9 @@
|
|
|
1223
1193
|
/**
|
|
1224
1194
|
* This makes the label sit above the textarea.
|
|
1225
1195
|
*/
|
|
1226
|
-
:host(.
|
|
1196
|
+
:host(.has-focus.textarea-fill-outline.textarea-label-placement-floating) .label-text-wrapper,
|
|
1197
|
+
:host(.has-value.textarea-fill-outline.textarea-label-placement-floating) .label-text-wrapper,
|
|
1198
|
+
:host(.textarea-fill-outline.textarea-label-placement-stacked) .label-text-wrapper {
|
|
1227
1199
|
transform: translateY(-32%) scale(0.75);
|
|
1228
1200
|
margin-left: 0;
|
|
1229
1201
|
margin-right: 0;
|
|
@@ -1255,13 +1227,6 @@
|
|
|
1255
1227
|
margin-bottom: 0px;
|
|
1256
1228
|
}
|
|
1257
1229
|
|
|
1258
|
-
:host(.textarea-fill-outline.textarea-label-placement-stacked) ::slotted([slot=start]),
|
|
1259
|
-
:host(.textarea-fill-outline.textarea-label-placement-stacked) ::slotted([slot=end]),
|
|
1260
|
-
:host(.textarea-fill-outline.textarea-label-placement-floating) ::slotted([slot=start]),
|
|
1261
|
-
:host(.textarea-fill-outline.textarea-label-placement-floating) ::slotted([slot=end]) {
|
|
1262
|
-
margin-top: 12px;
|
|
1263
|
-
}
|
|
1264
|
-
|
|
1265
1230
|
:host(.textarea-fill-outline) .textarea-outline-container {
|
|
1266
1231
|
left: 0;
|
|
1267
1232
|
right: 0;
|
|
@@ -1397,7 +1362,9 @@
|
|
|
1397
1362
|
* the floating/stacked label. We simulate this "cut out"
|
|
1398
1363
|
* by removing the top border from the notch fragment.
|
|
1399
1364
|
*/
|
|
1400
|
-
:host(.
|
|
1365
|
+
:host(.has-focus.textarea-fill-outline.textarea-label-placement-floating) .textarea-outline-notch,
|
|
1366
|
+
:host(.has-value.textarea-fill-outline.textarea-label-placement-floating) .textarea-outline-notch,
|
|
1367
|
+
:host(.textarea-fill-outline.textarea-label-placement-stacked) .textarea-outline-notch {
|
|
1401
1368
|
border-top: none;
|
|
1402
1369
|
}
|
|
1403
1370
|
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { createAnimation } from "../../../utils/animation/animation";
|
|
5
5
|
import { getElementRoot } from "../../../utils/helpers";
|
|
6
|
-
import { getOffsetForMiddlePosition } from "./utils";
|
|
7
6
|
/**
|
|
8
7
|
* iOS Toast Enter Animation
|
|
9
8
|
*/
|
|
@@ -19,7 +18,7 @@ export const iosEnterAnimation = (baseEl, opts) => {
|
|
|
19
18
|
wrapperAnimation.fromTo('transform', 'translateY(-100%)', `translateY(${top})`);
|
|
20
19
|
break;
|
|
21
20
|
case 'middle':
|
|
22
|
-
const topPosition =
|
|
21
|
+
const topPosition = Math.floor(baseEl.clientHeight / 2 - wrapperEl.clientHeight / 2);
|
|
23
22
|
wrapperEl.style.top = `${topPosition}px`;
|
|
24
23
|
wrapperAnimation.fromTo('opacity', 0.01, 1);
|
|
25
24
|
break;
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { createAnimation } from "../../../utils/animation/animation";
|
|
5
5
|
import { getElementRoot } from "../../../utils/helpers";
|
|
6
|
-
import { getOffsetForMiddlePosition } from "./utils";
|
|
7
6
|
/**
|
|
8
7
|
* MD Toast Enter Animation
|
|
9
8
|
*/
|
|
@@ -16,16 +15,16 @@ export const mdEnterAnimation = (baseEl, opts) => {
|
|
|
16
15
|
wrapperAnimation.addElement(wrapperEl);
|
|
17
16
|
switch (position) {
|
|
18
17
|
case 'top':
|
|
19
|
-
wrapperEl.style.
|
|
18
|
+
wrapperEl.style.top = top;
|
|
20
19
|
wrapperAnimation.fromTo('opacity', 0.01, 1);
|
|
21
20
|
break;
|
|
22
21
|
case 'middle':
|
|
23
|
-
const topPosition =
|
|
22
|
+
const topPosition = Math.floor(baseEl.clientHeight / 2 - wrapperEl.clientHeight / 2);
|
|
24
23
|
wrapperEl.style.top = `${topPosition}px`;
|
|
25
24
|
wrapperAnimation.fromTo('opacity', 0.01, 1);
|
|
26
25
|
break;
|
|
27
26
|
default:
|
|
28
|
-
wrapperEl.style.
|
|
27
|
+
wrapperEl.style.bottom = bottom;
|
|
29
28
|
wrapperAnimation.fromTo('opacity', 0.01, 1);
|
|
30
29
|
break;
|
|
31
30
|
}
|
|
@@ -7,12 +7,10 @@ import { printIonWarning } from "../../../utils/logging/index";
|
|
|
7
7
|
* Calculate the CSS top and bottom position of the toast, to be used
|
|
8
8
|
* as starting points for the animation keyframes.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* top edge of the screen. This
|
|
13
|
-
*
|
|
14
|
-
* position='bottom' since we need to calculate from
|
|
15
|
-
* the bottom edge of the screen instead.
|
|
10
|
+
* Note that MD animates bottom-positioned toasts using style.bottom,
|
|
11
|
+
* which calculates from the bottom edge of the screen, while iOS uses
|
|
12
|
+
* translateY, which calculates from the top edge of the screen. This
|
|
13
|
+
* is why the bottom calculates differ slightly between modes.
|
|
16
14
|
*
|
|
17
15
|
* @param position The value of the toast's position prop.
|
|
18
16
|
* @param positionAnchor The element the toast should be anchored to,
|
|
@@ -27,7 +25,7 @@ export function getAnimationPosition(position, positionAnchor, mode, toast) {
|
|
|
27
25
|
*/
|
|
28
26
|
let offset;
|
|
29
27
|
if (mode === 'md') {
|
|
30
|
-
offset =
|
|
28
|
+
offset = 8;
|
|
31
29
|
}
|
|
32
30
|
else {
|
|
33
31
|
offset = position === 'top' ? 10 : -10;
|
|
@@ -50,7 +48,12 @@ export function getAnimationPosition(position, positionAnchor, mode, toast) {
|
|
|
50
48
|
* to the top edge of the anchor. We want to calculate from the
|
|
51
49
|
* bottom edge of the screen instead.
|
|
52
50
|
*/
|
|
53
|
-
|
|
51
|
+
if (mode === 'md') {
|
|
52
|
+
offset += win.innerHeight - box.top;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
offset -= win.innerHeight - box.top;
|
|
56
|
+
}
|
|
54
57
|
}
|
|
55
58
|
/**
|
|
56
59
|
* We don't include safe area here because that should already be
|
|
@@ -64,7 +67,9 @@ export function getAnimationPosition(position, positionAnchor, mode, toast) {
|
|
|
64
67
|
else {
|
|
65
68
|
return {
|
|
66
69
|
top: `calc(${offset}px + var(--ion-safe-area-top, 0px))`,
|
|
67
|
-
bottom:
|
|
70
|
+
bottom: mode === 'md'
|
|
71
|
+
? `calc(${offset}px + var(--ion-safe-area-bottom, 0px))`
|
|
72
|
+
: `calc(${offset}px - var(--ion-safe-area-bottom, 0px))`,
|
|
68
73
|
};
|
|
69
74
|
}
|
|
70
75
|
}
|
|
@@ -78,14 +83,3 @@ function warnIfAnchorIsHidden(positionAnchor, toast) {
|
|
|
78
83
|
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);
|
|
79
84
|
}
|
|
80
85
|
}
|
|
81
|
-
/**
|
|
82
|
-
* Returns the top offset required to place
|
|
83
|
-
* the toast in the middle of the screen.
|
|
84
|
-
* Only needed when position="toast".
|
|
85
|
-
* @param toastHeight - The height of the ion-toast element
|
|
86
|
-
* @param wrapperHeight - The height of the .toast-wrapper element
|
|
87
|
-
* inside the toast's shadow root.
|
|
88
|
-
*/
|
|
89
|
-
export const getOffsetForMiddlePosition = (toastHeight, wrapperHeight) => {
|
|
90
|
-
return Math.floor(toastHeight / 2 - wrapperHeight / 2);
|
|
91
|
-
};
|
|
@@ -4,7 +4,6 @@
|
|
|
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";
|
|
8
7
|
import { Toast } from "../toast";
|
|
9
8
|
describe('toast: custom html', () => {
|
|
10
9
|
it('should not allow for custom html by default', async () => {
|
|
@@ -119,82 +118,3 @@ describe('toast: button cancel', () => {
|
|
|
119
118
|
expect(buttonCancel.getAttribute('part')).toBe('button cancel');
|
|
120
119
|
});
|
|
121
120
|
});
|
|
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,16 +189,6 @@
|
|
|
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
|
-
|
|
202
192
|
.toast-container {
|
|
203
193
|
display: flex;
|
|
204
194
|
align-items: center;
|
|
@@ -353,10 +343,20 @@
|
|
|
353
343
|
background: rgba(var(--ion-color-base-rgb), 0.8);
|
|
354
344
|
}
|
|
355
345
|
}
|
|
346
|
+
.toast-wrapper.toast-top {
|
|
347
|
+
transform: translate3d(0, -100%, 0);
|
|
348
|
+
top: 0;
|
|
349
|
+
}
|
|
350
|
+
|
|
356
351
|
.toast-wrapper.toast-middle {
|
|
357
352
|
opacity: 0.01;
|
|
358
353
|
}
|
|
359
354
|
|
|
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 {
|
|
9
|
+
import { 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,7 +16,6 @@ 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";
|
|
20
19
|
// TODO(FW-2832): types
|
|
21
20
|
/**
|
|
22
21
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
@@ -42,41 +41,6 @@ export class Toast {
|
|
|
42
41
|
this.callButtonHandler(cancelButton);
|
|
43
42
|
}
|
|
44
43
|
};
|
|
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
|
-
};
|
|
80
44
|
this.revealContentToScreenReader = false;
|
|
81
45
|
this.overlayIndex = undefined;
|
|
82
46
|
this.delegate = undefined;
|
|
@@ -97,37 +61,9 @@ export class Toast {
|
|
|
97
61
|
this.animated = true;
|
|
98
62
|
this.icon = undefined;
|
|
99
63
|
this.htmlAttributes = undefined;
|
|
100
|
-
this.swipeGesture = undefined;
|
|
101
64
|
this.isOpen = false;
|
|
102
65
|
this.trigger = undefined;
|
|
103
66
|
}
|
|
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
|
-
}
|
|
131
67
|
onIsOpenChange(newValue, oldValue) {
|
|
132
68
|
if (newValue === true && oldValue === false) {
|
|
133
69
|
this.present();
|
|
@@ -199,14 +135,6 @@ export class Toast {
|
|
|
199
135
|
if (this.duration > 0) {
|
|
200
136
|
this.durationTimeout = setTimeout(() => this.dismiss(undefined, 'timeout'), this.duration);
|
|
201
137
|
}
|
|
202
|
-
/**
|
|
203
|
-
* If the Toast has a swipe gesture then we can
|
|
204
|
-
* create the gesture so users can swipe the
|
|
205
|
-
* presented Toast.
|
|
206
|
-
*/
|
|
207
|
-
if (this.prefersSwipeGesture()) {
|
|
208
|
-
this.createSwipeGesture(animationPosition);
|
|
209
|
-
}
|
|
210
138
|
unlock();
|
|
211
139
|
}
|
|
212
140
|
/**
|
|
@@ -241,11 +169,6 @@ export class Toast {
|
|
|
241
169
|
this.revealContentToScreenReader = false;
|
|
242
170
|
}
|
|
243
171
|
this.lastPresentedPosition = undefined;
|
|
244
|
-
/**
|
|
245
|
-
* If the Toast has a swipe gesture then we can
|
|
246
|
-
* safely destroy it now that it is dismissed.
|
|
247
|
-
*/
|
|
248
|
-
this.destroySwipeGesture();
|
|
249
172
|
unlock();
|
|
250
173
|
return dismissed;
|
|
251
174
|
}
|
|
@@ -786,29 +709,6 @@ export class Toast {
|
|
|
786
709
|
"text": "Additional attributes to pass to the toast."
|
|
787
710
|
}
|
|
788
711
|
},
|
|
789
|
-
"swipeGesture": {
|
|
790
|
-
"type": "string",
|
|
791
|
-
"mutable": false,
|
|
792
|
-
"complexType": {
|
|
793
|
-
"original": "ToastSwipeGestureDirection",
|
|
794
|
-
"resolved": "\"vertical\" | undefined",
|
|
795
|
-
"references": {
|
|
796
|
-
"ToastSwipeGestureDirection": {
|
|
797
|
-
"location": "import",
|
|
798
|
-
"path": "./toast-interface",
|
|
799
|
-
"id": "src/components/toast/toast-interface.ts::ToastSwipeGestureDirection"
|
|
800
|
-
}
|
|
801
|
-
}
|
|
802
|
-
},
|
|
803
|
-
"required": false,
|
|
804
|
-
"optional": true,
|
|
805
|
-
"docs": {
|
|
806
|
-
"tags": [],
|
|
807
|
-
"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."
|
|
808
|
-
},
|
|
809
|
-
"attribute": "swipe-gesture",
|
|
810
|
-
"reflect": false
|
|
811
|
-
},
|
|
812
712
|
"isOpen": {
|
|
813
713
|
"type": "boolean",
|
|
814
714
|
"mutable": false,
|
|
@@ -1119,9 +1019,6 @@ export class Toast {
|
|
|
1119
1019
|
static get elementRef() { return "el"; }
|
|
1120
1020
|
static get watchers() {
|
|
1121
1021
|
return [{
|
|
1122
|
-
"propName": "swipeGesture",
|
|
1123
|
-
"methodName": "swipeGestureChanged"
|
|
1124
|
-
}, {
|
|
1125
1022
|
"propName": "isOpen",
|
|
1126
1023
|
"methodName": "onIsOpenChange"
|
|
1127
1024
|
}, {
|
|
@@ -189,16 +189,6 @@
|
|
|
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
|
-
|
|
202
192
|
.toast-container {
|
|
203
193
|
display: flex;
|
|
204
194
|
align-items: center;
|
|
@@ -37,18 +37,6 @@ describe('toggle', () => {
|
|
|
37
37
|
expect(t.enableOnOffLabels).toBe(true);
|
|
38
38
|
});
|
|
39
39
|
});
|
|
40
|
-
describe('shadow parts', () => {
|
|
41
|
-
it('should have shadow parts', async () => {
|
|
42
|
-
const page = await newSpecPage({
|
|
43
|
-
components: [Toggle],
|
|
44
|
-
html: `<ion-toggle>Label</ion-toggle>`,
|
|
45
|
-
});
|
|
46
|
-
const toggle = page.body.querySelector('ion-toggle');
|
|
47
|
-
expect(toggle).toHaveShadowPart('label');
|
|
48
|
-
expect(toggle).toHaveShadowPart('track');
|
|
49
|
-
expect(toggle).toHaveShadowPart('handle');
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
40
|
});
|
|
53
41
|
describe('ion-toggle: disabled', () => {
|
|
54
42
|
it('clicking disabled toggle should not toggle checked state', async () => {
|
|
@@ -184,6 +184,12 @@ input {
|
|
|
184
184
|
}
|
|
185
185
|
|
|
186
186
|
.label-text-wrapper {
|
|
187
|
+
/**
|
|
188
|
+
* This ensures that double tapping this text
|
|
189
|
+
* clicks the <label> and focuses the input
|
|
190
|
+
* when a screen reader is enabled.
|
|
191
|
+
*/
|
|
192
|
+
pointer-events: none;
|
|
187
193
|
text-overflow: ellipsis;
|
|
188
194
|
white-space: nowrap;
|
|
189
195
|
overflow: hidden;
|