@ionic/core 7.5.8-dev.11701876182.1e71e7a0 → 7.5.8-dev.11701894917.1c1465bd
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/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 +15 -48
- 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-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 +6 -3
- 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/{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_3.cjs.entry.js +14 -28
- 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-internal.cjs.entry.js +3 -3
- 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-2c6b1072.js} +6 -4
- package/dist/cjs/{swipe-back-2a858bbd.js → swipe-back-b8f2330b.js} +2 -2
- 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 +83 -25
- package/dist/collection/components/datetime/datetime.js +5 -20
- package/dist/collection/components/datetime/datetime.md.css +88 -25
- 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/month-year-picker/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +2 -2
- 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/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 +5 -2
- 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 +8 -176
- 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/{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_3.entry.js +14 -28
- 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-internal.entry.js +3 -3
- 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-d23ea6e1.js} +7 -4
- 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_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-internal.entry.js +1 -1
- 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-d23ea6e1.js +4 -0
- package/dist/esm-es5/swipe-back-a8ca7f93.js +4 -0
- 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/{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-1e57bd24.entry.js +4 -0
- package/dist/ionic/p-1f620cd4.system.entry.js +4 -0
- 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-22e5af95.entry.js +4 -0
- package/dist/ionic/p-232d1f22.entry.js +4 -0
- package/dist/ionic/{p-4d67d27a.entry.js → p-27ea6f4e.entry.js} +1 -1
- 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-a9978d08.entry.js → p-2dc43d20.entry.js} +1 -1
- package/dist/ionic/p-2f2293da.system.entry.js +4 -0
- package/dist/ionic/{p-251666e2.entry.js → p-2f300cca.entry.js} +1 -1
- 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-39a335b6.system.entry.js +4 -0
- package/dist/ionic/p-3b568d18.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-fba0a6e7.system.entry.js → p-3e3d06a6.system.entry.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-4a31c99f.entry.js +4 -0
- package/dist/ionic/{p-8acae6b0.system.entry.js → p-4df97e3c.system.entry.js} +1 -1
- 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-5e745192.system.js → p-57477107.system.js} +1 -1
- package/dist/ionic/p-5a68960f.entry.js +4 -0
- package/dist/ionic/p-60502e3f.system.entry.js +4 -0
- package/dist/ionic/p-60b386c9.system.entry.js +4 -0
- package/dist/ionic/{p-42f189f4.js → p-643a8fae.js} +1 -1
- package/dist/ionic/{p-b6f9d32a.entry.js → p-67da080d.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-dee7c1d0.system.entry.js → p-73ea8f82.system.entry.js} +1 -1
- 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-83af3685.system.js +4 -0
- package/dist/ionic/p-856c430d.js +4 -0
- package/dist/ionic/p-8780cc2a.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-93000a81.system.entry.js +4 -0
- package/dist/ionic/{p-1cca10d6.system.js → p-95c26010.system.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-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-ab11130c.system.js +4 -0
- package/dist/ionic/p-ab9456e9.system.entry.js +4 -0
- package/dist/ionic/p-af16fe62.entry.js +4 -0
- package/dist/ionic/p-af19a573.entry.js +4 -0
- 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-c14f8ac8.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-e1e5afe1.system.entry.js +4 -0
- package/dist/ionic/p-e3584231.system.js +1 -1
- package/dist/ionic/{p-ada96dd0.system.entry.js → p-e3ad9607.system.entry.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-f78efbd1.entry.js +4 -0
- package/dist/ionic/p-f7a36cd0.system.js +4 -0
- package/dist/ionic/p-f967631d.js +4 -0
- package/dist/ionic/p-fe4dde76.entry.js +4 -0
- package/dist/ionic/{p-e24ce1e5.system.js → p-fff7a57e.system.js} +1 -1
- 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/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/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 +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/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 +0 -1
- package/dist/types/utils/slot-mutation-controller.d.ts +2 -2
- package/hydrate/index.js +194 -676
- package/package.json +1 -1
- 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/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/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-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-c61cc894.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-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/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/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-7b30edcc.js → p-b347cfd1.js} +0 -0
|
@@ -47,7 +47,6 @@ export class RadioGroup {
|
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
49
|
this.allowEmptySelection = false;
|
|
50
|
-
this.compareWith = undefined;
|
|
51
50
|
this.name = this.inputId;
|
|
52
51
|
this.value = undefined;
|
|
53
52
|
}
|
|
@@ -168,29 +167,6 @@ export class RadioGroup {
|
|
|
168
167
|
"reflect": false,
|
|
169
168
|
"defaultValue": "false"
|
|
170
169
|
},
|
|
171
|
-
"compareWith": {
|
|
172
|
-
"type": "string",
|
|
173
|
-
"mutable": false,
|
|
174
|
-
"complexType": {
|
|
175
|
-
"original": "string | RadioGroupCompareFn | null",
|
|
176
|
-
"resolved": "((currentValue: any, compareValue: any) => boolean) | null | string | undefined",
|
|
177
|
-
"references": {
|
|
178
|
-
"RadioGroupCompareFn": {
|
|
179
|
-
"location": "import",
|
|
180
|
-
"path": "./radio-group-interface",
|
|
181
|
-
"id": "src/components/radio-group/radio-group-interface.ts::RadioGroupCompareFn"
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
},
|
|
185
|
-
"required": false,
|
|
186
|
-
"optional": true,
|
|
187
|
-
"docs": {
|
|
188
|
-
"tags": [],
|
|
189
|
-
"text": "This property allows developers to specify a custom function or property\nname for comparing objects when determining the selected option in the\nion-radio-group. When not specified, the default behavior will use strict\nequality (===) for comparison."
|
|
190
|
-
},
|
|
191
|
-
"attribute": "compare-with",
|
|
192
|
-
"reflect": false
|
|
193
|
-
},
|
|
194
170
|
"name": {
|
|
195
171
|
"type": "string",
|
|
196
172
|
"mutable": false,
|
|
@@ -325,6 +325,12 @@
|
|
|
325
325
|
* would not be able to see the range.
|
|
326
326
|
*/
|
|
327
327
|
max-width: 200px;
|
|
328
|
+
/**
|
|
329
|
+
* This ensures that double tapping this text
|
|
330
|
+
* clicks the <label> and focuses the range
|
|
331
|
+
* when a screen reader is enabled.
|
|
332
|
+
*/
|
|
333
|
+
pointer-events: none;
|
|
328
334
|
text-overflow: ellipsis;
|
|
329
335
|
white-space: nowrap;
|
|
330
336
|
overflow: hidden;
|
|
@@ -24,7 +24,6 @@ import { roundToMaxDecimalPlaces } from "../../utils/floating-point";
|
|
|
24
24
|
* @part knob - The handle that is used to drag the range.
|
|
25
25
|
* @part bar - The inactive part of the bar.
|
|
26
26
|
* @part bar-active - The active part of the bar.
|
|
27
|
-
* @part label - The label text describing the range.
|
|
28
27
|
*/
|
|
29
28
|
export class Range {
|
|
30
29
|
constructor() {
|
|
@@ -227,8 +226,6 @@ export class Range {
|
|
|
227
226
|
this.ionStyle.emit({
|
|
228
227
|
interactive: true,
|
|
229
228
|
'interactive-disabled': this.disabled,
|
|
230
|
-
// TODO(FW-2997): remove this
|
|
231
|
-
legacy: !!this.legacy,
|
|
232
229
|
});
|
|
233
230
|
}
|
|
234
231
|
}
|
|
@@ -417,7 +414,7 @@ Developers can dismiss this warning by removing their usage of the "legacy" prop
|
|
|
417
414
|
}) }, h("label", { class: "range-wrapper", id: "range-label" }, h("div", { class: {
|
|
418
415
|
'label-text-wrapper': true,
|
|
419
416
|
'label-text-wrapper-hidden': !hasLabel,
|
|
420
|
-
}
|
|
417
|
+
} }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { class: "native-wrapper" }, h("slot", { name: "start" }), this.renderRangeSlider(), h("slot", { name: "end" })))));
|
|
421
418
|
}
|
|
422
419
|
get hasLabel() {
|
|
423
420
|
return this.label !== undefined || this.el.querySelector('[slot="label"]') !== null;
|
|
@@ -325,6 +325,12 @@
|
|
|
325
325
|
* would not be able to see the range.
|
|
326
326
|
*/
|
|
327
327
|
max-width: 200px;
|
|
328
|
+
/**
|
|
329
|
+
* This ensures that double tapping this text
|
|
330
|
+
* clicks the <label> and focuses the range
|
|
331
|
+
* when a screen reader is enabled.
|
|
332
|
+
*/
|
|
333
|
+
pointer-events: none;
|
|
328
334
|
text-overflow: ellipsis;
|
|
329
335
|
white-space: nowrap;
|
|
330
336
|
overflow: hidden;
|
|
@@ -202,20 +202,4 @@ describe('range: item adjustments', () => {
|
|
|
202
202
|
expect(range.classList.contains('range-item-start-adjustment')).toBe(false);
|
|
203
203
|
expect(range.classList.contains('range-item-end-adjustment')).toBe(false);
|
|
204
204
|
});
|
|
205
|
-
describe('shadow parts', () => {
|
|
206
|
-
it('should have shadow parts', async () => {
|
|
207
|
-
const page = await newSpecPage({
|
|
208
|
-
components: [Range],
|
|
209
|
-
html: `<ion-range pin="true" snaps="true" value="50" label="Label"></ion-range>`,
|
|
210
|
-
});
|
|
211
|
-
const range = page.body.querySelector('ion-range');
|
|
212
|
-
expect(range).toHaveShadowPart('label');
|
|
213
|
-
expect(range).toHaveShadowPart('pin');
|
|
214
|
-
expect(range).toHaveShadowPart('knob');
|
|
215
|
-
expect(range).toHaveShadowPart('bar');
|
|
216
|
-
expect(range).toHaveShadowPart('bar-active');
|
|
217
|
-
expect(range).toHaveShadowPart('tick');
|
|
218
|
-
expect(range).toHaveShadowPart('tick-active');
|
|
219
|
-
});
|
|
220
|
-
});
|
|
221
205
|
});
|
|
@@ -132,10 +132,6 @@
|
|
|
132
132
|
overflow: hidden;
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
:host(.in-item:not(.legacy-select)) {
|
|
136
|
-
flex: 1 1 0;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
135
|
:host(.in-item.legacy-select) {
|
|
140
136
|
position: static;
|
|
141
137
|
max-width: 45%;
|
|
@@ -236,12 +232,6 @@ button {
|
|
|
236
232
|
margin-top: 0;
|
|
237
233
|
margin-bottom: 0;
|
|
238
234
|
position: relative;
|
|
239
|
-
/**
|
|
240
|
-
* Prevent the icon from shrinking when the label and/or
|
|
241
|
-
* selected item text is long enough to fill the rest of
|
|
242
|
-
* the container.
|
|
243
|
-
*/
|
|
244
|
-
flex-shrink: 0;
|
|
245
235
|
}
|
|
246
236
|
|
|
247
237
|
/**
|
|
@@ -325,23 +315,6 @@ button {
|
|
|
325
315
|
transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
326
316
|
}
|
|
327
317
|
|
|
328
|
-
.select-wrapper-inner {
|
|
329
|
-
display: flex;
|
|
330
|
-
align-items: center;
|
|
331
|
-
overflow: hidden;
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
:host(.select-label-placement-stacked) .select-wrapper-inner,
|
|
335
|
-
:host(.select-label-placement-floating) .select-wrapper-inner {
|
|
336
|
-
/**
|
|
337
|
-
* When using a stacked/floating label, the inner wrapper is
|
|
338
|
-
* stacked vertically under the label container. This line
|
|
339
|
-
* ensures that the inner wrapper fills all the remaining height
|
|
340
|
-
* of the component.
|
|
341
|
-
*/
|
|
342
|
-
flex-grow: 1;
|
|
343
|
-
}
|
|
344
|
-
|
|
345
318
|
:host(.ion-touched.ion-invalid) {
|
|
346
319
|
--highlight-color: var(--highlight-color-invalid);
|
|
347
320
|
}
|
|
@@ -582,23 +555,11 @@ button {
|
|
|
582
555
|
* The placeholder should be hidden when the label
|
|
583
556
|
* is on top of the select. This prevents the label
|
|
584
557
|
* from overlapping any placeholder value.
|
|
585
|
-
*
|
|
586
|
-
* TODO(FW-5592): Remove :not(.label-floating) piece
|
|
587
558
|
*/
|
|
588
|
-
:host(.select-label-placement-floating
|
|
559
|
+
:host(.select-label-placement-floating) .native-wrapper .select-placeholder {
|
|
589
560
|
opacity: 0;
|
|
590
561
|
}
|
|
591
562
|
|
|
592
|
-
/**
|
|
593
|
-
* We don't use .label-floating here because that would
|
|
594
|
-
* also include the case where the label is floating due
|
|
595
|
-
* to content in the start/end slot. We want the opacity
|
|
596
|
-
* to remain at the default in this case, since the select
|
|
597
|
-
* isn't being actively interacted with.
|
|
598
|
-
*
|
|
599
|
-
* TODO(FW-5592): Change entire selector to:
|
|
600
|
-
* :host(.label-floating.select-label-placement-floating) .native-wrapper .select-placeholder
|
|
601
|
-
*/
|
|
602
563
|
:host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,
|
|
603
564
|
:host(.ion-focused.select-label-placement-floating) .native-wrapper .select-placeholder,
|
|
604
565
|
:host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder {
|
|
@@ -608,7 +569,10 @@ button {
|
|
|
608
569
|
/**
|
|
609
570
|
* This makes the label sit above the input.
|
|
610
571
|
*/
|
|
611
|
-
:host(.label-
|
|
572
|
+
:host(.select-label-placement-stacked) .label-text-wrapper,
|
|
573
|
+
:host(.select-expanded.select-label-placement-floating) .label-text-wrapper,
|
|
574
|
+
:host(.ion-focused.select-label-placement-floating) .label-text-wrapper,
|
|
575
|
+
:host(.has-value.select-label-placement-floating) .label-text-wrapper {
|
|
612
576
|
transform: translateY(50%) scale(0.75);
|
|
613
577
|
/**
|
|
614
578
|
* Label text should not extend
|
|
@@ -617,23 +581,6 @@ button {
|
|
|
617
581
|
max-width: calc(100% / 0.75);
|
|
618
582
|
}
|
|
619
583
|
|
|
620
|
-
::slotted([slot=start]), ::slotted([slot=end]) {
|
|
621
|
-
/**
|
|
622
|
-
* Prevent the slots from shrinking when the label and/or
|
|
623
|
-
* selected item text is long enough to fill the rest of
|
|
624
|
-
* the container.
|
|
625
|
-
*/
|
|
626
|
-
flex-shrink: 0;
|
|
627
|
-
}
|
|
628
|
-
|
|
629
|
-
::slotted([slot=start]) {
|
|
630
|
-
margin-inline-end: 16px;
|
|
631
|
-
}
|
|
632
|
-
|
|
633
|
-
::slotted([slot=end]) {
|
|
634
|
-
margin-inline-start: 16px;
|
|
635
|
-
}
|
|
636
|
-
|
|
637
584
|
/**
|
|
638
585
|
* Convert a font size to a dynamic font size.
|
|
639
586
|
* Fonts that participate in Dynamic Type should use
|
|
@@ -757,8 +704,8 @@ button {
|
|
|
757
704
|
color: var(--ion-color-step-650, #595959);
|
|
758
705
|
}
|
|
759
706
|
|
|
760
|
-
:host(.select-label-placement-stacked) .
|
|
761
|
-
:host(.select-label-placement-floating) .
|
|
707
|
+
:host(.select-label-placement-stacked) .native-wrapper,
|
|
708
|
+
:host(.select-label-placement-floating) .native-wrapper {
|
|
762
709
|
width: calc(100% - 1.125rem - 4px);
|
|
763
710
|
}
|
|
764
711
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { Host, h, forceUpdate } from "@stencil/core";
|
|
5
|
-
import {
|
|
5
|
+
import { createLegacyFormController, createNotchController } from "../../utils/forms/index";
|
|
6
6
|
import { findItemLabel, focusElement, getAriaLabel, renderHiddenInput, inheritAttributes } from "../../utils/helpers";
|
|
7
7
|
import { printIonWarning } from "../../utils/logging/index";
|
|
8
8
|
import { actionSheetController, alertController, popoverController } from "../../utils/overlays";
|
|
@@ -16,8 +16,6 @@ import { getIonMode } from "../../global/ionic-global";
|
|
|
16
16
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
17
17
|
*
|
|
18
18
|
* @slot label - The label text to associate with the select. Use the `labelPlacement` property to control where the label is placed relative to the select. Use this if you need to render a label with custom HTML.
|
|
19
|
-
* @slot start - Content to display at the leading edge of the select.
|
|
20
|
-
* @slot end - Content to display at the trailing edge of the select.
|
|
21
19
|
*
|
|
22
20
|
* @part placeholder - The text displayed in the select when there is no value.
|
|
23
21
|
* @part text - The displayed value of the select.
|
|
@@ -32,22 +30,8 @@ export class Select {
|
|
|
32
30
|
// This flag ensures we log the deprecation warning at most once.
|
|
33
31
|
this.hasLoggedDeprecationWarning = false;
|
|
34
32
|
this.onClick = (ev) => {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if (target === this.el || closestSlot === null) {
|
|
38
|
-
this.setFocus();
|
|
39
|
-
this.open(ev);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
/**
|
|
43
|
-
* Prevent clicks to the start/end slots from opening the select.
|
|
44
|
-
* We ensure the target isn't this element in case the select is slotted
|
|
45
|
-
* in, for example, an item. This would prevent the select from ever
|
|
46
|
-
* being opened since the element itself has slot="start"/"end".
|
|
47
|
-
*/
|
|
48
|
-
ev.stopPropagation();
|
|
49
|
-
ev.preventDefault();
|
|
50
|
-
}
|
|
33
|
+
this.setFocus();
|
|
34
|
+
this.open(ev);
|
|
51
35
|
};
|
|
52
36
|
this.onFocus = () => {
|
|
53
37
|
this.ionFocus.emit();
|
|
@@ -481,8 +465,6 @@ export class Select {
|
|
|
481
465
|
style['has-placeholder'] = this.placeholder !== undefined;
|
|
482
466
|
style['has-value'] = this.hasValue();
|
|
483
467
|
style['has-focus'] = this.isExpanded;
|
|
484
|
-
// TODO(FW-3194): remove this
|
|
485
|
-
style['legacy'] = !!this.legacy;
|
|
486
468
|
}
|
|
487
469
|
this.ionStyle.emit(style);
|
|
488
470
|
}
|
|
@@ -550,27 +532,7 @@ export class Select {
|
|
|
550
532
|
const rtl = isRTL(el) ? 'rtl' : 'ltr';
|
|
551
533
|
const inItem = hostContext('ion-item', this.el);
|
|
552
534
|
const shouldRenderHighlight = mode === 'md' && fill !== 'outline' && !inItem;
|
|
553
|
-
const hasValue = this.hasValue();
|
|
554
|
-
const hasStartEndSlots = el.querySelector('[slot="start"], [slot="end"]') !== null;
|
|
555
535
|
renderHiddenInput(true, el, name, parseValue(value), disabled);
|
|
556
|
-
/**
|
|
557
|
-
* If the label is stacked, it should always sit above the select.
|
|
558
|
-
* For floating labels, the label should move above the select if
|
|
559
|
-
* the select has a value, is open, or has anything in either
|
|
560
|
-
* the start or end slot.
|
|
561
|
-
*
|
|
562
|
-
* If there is content in the start slot, the label would overlap
|
|
563
|
-
* it if not forced to float. This is also applied to the end slot
|
|
564
|
-
* because with the default or solid fills, the select is not
|
|
565
|
-
* vertically centered in the container, but the label is. This
|
|
566
|
-
* causes the slots and label to appear vertically offset from each
|
|
567
|
-
* other when the label isn't floating above the input. This doesn't
|
|
568
|
-
* apply to the outline fill, but this was not accounted for to keep
|
|
569
|
-
* things consistent.
|
|
570
|
-
*
|
|
571
|
-
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
572
|
-
*/
|
|
573
|
-
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
|
|
574
536
|
return (h(Host, { onClick: this.onClick, class: createColorClasses(this.color, {
|
|
575
537
|
[mode]: true,
|
|
576
538
|
'in-item': inItem,
|
|
@@ -578,8 +540,7 @@ export class Select {
|
|
|
578
540
|
'select-disabled': disabled,
|
|
579
541
|
'select-expanded': isExpanded,
|
|
580
542
|
'has-expanded-icon': expandedIcon !== undefined,
|
|
581
|
-
'has-value': hasValue,
|
|
582
|
-
'label-floating': labelShouldFloat,
|
|
543
|
+
'has-value': this.hasValue(),
|
|
583
544
|
'has-placeholder': placeholder !== undefined,
|
|
584
545
|
'ion-focusable': true,
|
|
585
546
|
[`select-${rtl}`]: true,
|
|
@@ -587,7 +548,7 @@ export class Select {
|
|
|
587
548
|
[`select-justify-${justify}`]: justifyEnabled,
|
|
588
549
|
[`select-shape-${shape}`]: shape !== undefined,
|
|
589
550
|
[`select-label-placement-${labelPlacement}`]: true,
|
|
590
|
-
}) }, h("label", { class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), h("div", { class: "
|
|
551
|
+
}) }, h("label", { class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), h("div", { class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), !hasFloatingOrStackedLabel && this.renderSelectIcon(), this.renderListbox()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { class: "select-highlight" }))));
|
|
591
552
|
}
|
|
592
553
|
// TODO FW-3194 - Remove this
|
|
593
554
|
renderLegacySelect() {
|
|
@@ -776,7 +737,7 @@ Developers can use the "legacy" property to continue using the legacy form marku
|
|
|
776
737
|
"optional": true,
|
|
777
738
|
"docs": {
|
|
778
739
|
"tags": [],
|
|
779
|
-
"text": "
|
|
740
|
+
"text": "A property name or function used to compare object values"
|
|
780
741
|
},
|
|
781
742
|
"attribute": "compare-with",
|
|
782
743
|
"reflect": false
|
|
@@ -1254,6 +1215,17 @@ Developers can use the "legacy" property to continue using the legacy form marku
|
|
|
1254
1215
|
}];
|
|
1255
1216
|
}
|
|
1256
1217
|
}
|
|
1218
|
+
const isOptionSelected = (currentValue, compareValue, compareWith) => {
|
|
1219
|
+
if (currentValue === undefined) {
|
|
1220
|
+
return false;
|
|
1221
|
+
}
|
|
1222
|
+
if (Array.isArray(currentValue)) {
|
|
1223
|
+
return currentValue.some((val) => compareOptions(val, compareValue, compareWith));
|
|
1224
|
+
}
|
|
1225
|
+
else {
|
|
1226
|
+
return compareOptions(currentValue, compareValue, compareWith);
|
|
1227
|
+
}
|
|
1228
|
+
};
|
|
1257
1229
|
const getOptionValue = (el) => {
|
|
1258
1230
|
const value = el.value;
|
|
1259
1231
|
return value === undefined ? el.textContent || '' : value;
|
|
@@ -1267,6 +1239,17 @@ const parseValue = (value) => {
|
|
|
1267
1239
|
}
|
|
1268
1240
|
return value.toString();
|
|
1269
1241
|
};
|
|
1242
|
+
const compareOptions = (currentValue, compareValue, compareWith) => {
|
|
1243
|
+
if (typeof compareWith === 'function') {
|
|
1244
|
+
return compareWith(currentValue, compareValue);
|
|
1245
|
+
}
|
|
1246
|
+
else if (typeof compareWith === 'string') {
|
|
1247
|
+
return currentValue[compareWith] === compareValue[compareWith];
|
|
1248
|
+
}
|
|
1249
|
+
else {
|
|
1250
|
+
return Array.isArray(compareValue) ? compareValue.includes(currentValue) : currentValue === compareValue;
|
|
1251
|
+
}
|
|
1252
|
+
};
|
|
1270
1253
|
const generateText = (opts, value, compareWith) => {
|
|
1271
1254
|
if (value === undefined) {
|
|
1272
1255
|
return '';
|
|
@@ -132,10 +132,6 @@
|
|
|
132
132
|
overflow: hidden;
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
:host(.in-item:not(.legacy-select)) {
|
|
136
|
-
flex: 1 1 0;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
135
|
:host(.in-item.legacy-select) {
|
|
140
136
|
position: static;
|
|
141
137
|
max-width: 45%;
|
|
@@ -236,12 +232,6 @@ button {
|
|
|
236
232
|
margin-top: 0;
|
|
237
233
|
margin-bottom: 0;
|
|
238
234
|
position: relative;
|
|
239
|
-
/**
|
|
240
|
-
* Prevent the icon from shrinking when the label and/or
|
|
241
|
-
* selected item text is long enough to fill the rest of
|
|
242
|
-
* the container.
|
|
243
|
-
*/
|
|
244
|
-
flex-shrink: 0;
|
|
245
235
|
}
|
|
246
236
|
|
|
247
237
|
/**
|
|
@@ -325,23 +315,6 @@ button {
|
|
|
325
315
|
transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
326
316
|
}
|
|
327
317
|
|
|
328
|
-
.select-wrapper-inner {
|
|
329
|
-
display: flex;
|
|
330
|
-
align-items: center;
|
|
331
|
-
overflow: hidden;
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
:host(.select-label-placement-stacked) .select-wrapper-inner,
|
|
335
|
-
:host(.select-label-placement-floating) .select-wrapper-inner {
|
|
336
|
-
/**
|
|
337
|
-
* When using a stacked/floating label, the inner wrapper is
|
|
338
|
-
* stacked vertically under the label container. This line
|
|
339
|
-
* ensures that the inner wrapper fills all the remaining height
|
|
340
|
-
* of the component.
|
|
341
|
-
*/
|
|
342
|
-
flex-grow: 1;
|
|
343
|
-
}
|
|
344
|
-
|
|
345
318
|
:host(.ion-touched.ion-invalid) {
|
|
346
319
|
--highlight-color: var(--highlight-color-invalid);
|
|
347
320
|
}
|
|
@@ -582,23 +555,11 @@ button {
|
|
|
582
555
|
* The placeholder should be hidden when the label
|
|
583
556
|
* is on top of the select. This prevents the label
|
|
584
557
|
* from overlapping any placeholder value.
|
|
585
|
-
*
|
|
586
|
-
* TODO(FW-5592): Remove :not(.label-floating) piece
|
|
587
558
|
*/
|
|
588
|
-
:host(.select-label-placement-floating
|
|
559
|
+
:host(.select-label-placement-floating) .native-wrapper .select-placeholder {
|
|
589
560
|
opacity: 0;
|
|
590
561
|
}
|
|
591
562
|
|
|
592
|
-
/**
|
|
593
|
-
* We don't use .label-floating here because that would
|
|
594
|
-
* also include the case where the label is floating due
|
|
595
|
-
* to content in the start/end slot. We want the opacity
|
|
596
|
-
* to remain at the default in this case, since the select
|
|
597
|
-
* isn't being actively interacted with.
|
|
598
|
-
*
|
|
599
|
-
* TODO(FW-5592): Change entire selector to:
|
|
600
|
-
* :host(.label-floating.select-label-placement-floating) .native-wrapper .select-placeholder
|
|
601
|
-
*/
|
|
602
563
|
:host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,
|
|
603
564
|
:host(.ion-focused.select-label-placement-floating) .native-wrapper .select-placeholder,
|
|
604
565
|
:host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder {
|
|
@@ -608,7 +569,10 @@ button {
|
|
|
608
569
|
/**
|
|
609
570
|
* This makes the label sit above the input.
|
|
610
571
|
*/
|
|
611
|
-
:host(.label-
|
|
572
|
+
:host(.select-label-placement-stacked) .label-text-wrapper,
|
|
573
|
+
:host(.select-expanded.select-label-placement-floating) .label-text-wrapper,
|
|
574
|
+
:host(.ion-focused.select-label-placement-floating) .label-text-wrapper,
|
|
575
|
+
:host(.has-value.select-label-placement-floating) .label-text-wrapper {
|
|
612
576
|
transform: translateY(50%) scale(0.75);
|
|
613
577
|
/**
|
|
614
578
|
* Label text should not extend
|
|
@@ -617,23 +581,6 @@ button {
|
|
|
617
581
|
max-width: calc(100% / 0.75);
|
|
618
582
|
}
|
|
619
583
|
|
|
620
|
-
::slotted([slot=start]), ::slotted([slot=end]) {
|
|
621
|
-
/**
|
|
622
|
-
* Prevent the slots from shrinking when the label and/or
|
|
623
|
-
* selected item text is long enough to fill the rest of
|
|
624
|
-
* the container.
|
|
625
|
-
*/
|
|
626
|
-
flex-shrink: 0;
|
|
627
|
-
}
|
|
628
|
-
|
|
629
|
-
::slotted([slot=start]) {
|
|
630
|
-
margin-inline-end: 16px;
|
|
631
|
-
}
|
|
632
|
-
|
|
633
|
-
::slotted([slot=end]) {
|
|
634
|
-
margin-inline-start: 16px;
|
|
635
|
-
}
|
|
636
|
-
|
|
637
584
|
/**
|
|
638
585
|
* Convert a font size to a dynamic font size.
|
|
639
586
|
* Fonts that participate in Dynamic Type should use
|
|
@@ -877,7 +824,10 @@ button {
|
|
|
877
824
|
}
|
|
878
825
|
}
|
|
879
826
|
|
|
880
|
-
:host(.
|
|
827
|
+
:host(.select-fill-solid.select-label-placement-stacked) .label-text-wrapper,
|
|
828
|
+
:host(.select-expanded.select-fill-solid.select-label-placement-floating) .label-text-wrapper,
|
|
829
|
+
:host(.ion-focused.select-fill-solid.select-label-placement-floating) .label-text-wrapper,
|
|
830
|
+
:host(.has-value.select-fill-solid.select-label-placement-floating) .label-text-wrapper {
|
|
881
831
|
/**
|
|
882
832
|
* Label text should not extend
|
|
883
833
|
* beyond the bounds of the select.
|
|
@@ -1033,7 +983,10 @@ button {
|
|
|
1033
983
|
/**
|
|
1034
984
|
* This makes the label sit above the select.
|
|
1035
985
|
*/
|
|
1036
|
-
:host(.
|
|
986
|
+
:host(.select-expanded.select-fill-outline.select-label-placement-floating) .label-text-wrapper,
|
|
987
|
+
:host(.ion-focused.select-fill-outline.select-label-placement-floating) .label-text-wrapper,
|
|
988
|
+
:host(.has-value.select-fill-outline.select-label-placement-floating) .label-text-wrapper,
|
|
989
|
+
:host(.select-fill-outline.select-label-placement-stacked) .label-text-wrapper {
|
|
1037
990
|
transform: translateY(-32%) scale(0.75);
|
|
1038
991
|
margin-left: 0;
|
|
1039
992
|
margin-right: 0;
|
|
@@ -1178,7 +1131,10 @@ button {
|
|
|
1178
1131
|
* the floating/stacked label. We simulate this "cut out"
|
|
1179
1132
|
* by removing the top border from the notch fragment.
|
|
1180
1133
|
*/
|
|
1181
|
-
:host(.
|
|
1134
|
+
:host(.select-expanded.select-fill-outline.select-label-placement-floating) .select-outline-notch,
|
|
1135
|
+
:host(.ion-focused.select-fill-outline.select-label-placement-floating) .select-outline-notch,
|
|
1136
|
+
:host(.has-value.select-fill-outline.select-label-placement-floating) .select-outline-notch,
|
|
1137
|
+
:host(.select-fill-outline.select-label-placement-stacked) .select-outline-notch {
|
|
1182
1138
|
border-top: none;
|
|
1183
1139
|
}
|
|
1184
1140
|
|
|
@@ -1343,8 +1299,8 @@ button {
|
|
|
1343
1299
|
--border-radius: 16px;
|
|
1344
1300
|
}
|
|
1345
1301
|
|
|
1346
|
-
:host(.select-label-placement-stacked) .
|
|
1347
|
-
:host(.select-label-placement-floating) .
|
|
1302
|
+
:host(.select-label-placement-stacked) .native-wrapper,
|
|
1303
|
+
:host(.select-label-placement-floating) .native-wrapper {
|
|
1348
1304
|
width: calc(100% - 0.8125rem - 4px);
|
|
1349
1305
|
}
|
|
1350
1306
|
|
|
@@ -37,20 +37,5 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
37
37
|
const list = page.locator('ion-list');
|
|
38
38
|
await expect(list).toHaveScreenshot(screenshot(`select-inset-list-no-fill`));
|
|
39
39
|
});
|
|
40
|
-
test('should render correctly in an item inside of a flex container', async ({ page }) => {
|
|
41
|
-
await page.setContent(`
|
|
42
|
-
<div id="container" style="display: flex">
|
|
43
|
-
<ion-list>
|
|
44
|
-
<ion-item>
|
|
45
|
-
<ion-select label="Fruit" value="apple">
|
|
46
|
-
<ion-select-option value="apple">Apple</ion-select-option>
|
|
47
|
-
</ion-select>
|
|
48
|
-
</ion-item>
|
|
49
|
-
<ion-list>
|
|
50
|
-
</div>
|
|
51
|
-
`, config);
|
|
52
|
-
const container = page.locator('#container');
|
|
53
|
-
await expect(container).toHaveScreenshot(screenshot(`select-item-flex-container`));
|
|
54
|
-
});
|
|
55
40
|
});
|
|
56
41
|
});
|
|
@@ -121,7 +121,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|
|
121
121
|
});
|
|
122
122
|
test('label should appear on top of the select when the select is expanded', async ({ page }) => {
|
|
123
123
|
await page.setContent(`
|
|
124
|
-
<ion-select class="select-expanded
|
|
124
|
+
<ion-select class="select-expanded" label="Label" label-placement="floating" placeholder="Select a Fruit">
|
|
125
125
|
<ion-select-option value="apples">Apples</ion-select-option>
|
|
126
126
|
</ion-select>
|
|
127
127
|
`, config);
|
|
@@ -27,7 +27,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
27
27
|
await page.setContent(`
|
|
28
28
|
<ion-item>
|
|
29
29
|
<ion-label>Really long label should not wrap</ion-label>
|
|
30
|
-
<ion-select value="wrap"
|
|
30
|
+
<ion-select value="wrap" class="ion-text-wrap">
|
|
31
31
|
<ion-select-option value="wrap">Should wrap value only when label exists and really long text exists to make it wrap the text</ion-select-option>
|
|
32
32
|
</ion-select>
|
|
33
33
|
</ion-item>
|
|
@@ -9,18 +9,6 @@ export class SkeletonText {
|
|
|
9
9
|
constructor() {
|
|
10
10
|
this.animated = false;
|
|
11
11
|
}
|
|
12
|
-
componentWillLoad() {
|
|
13
|
-
this.emitStyle();
|
|
14
|
-
}
|
|
15
|
-
emitStyle() {
|
|
16
|
-
// The emitted property is used by item in order
|
|
17
|
-
// to add the item-skeleton-text class which applies
|
|
18
|
-
// overflow: hidden to its label
|
|
19
|
-
const style = {
|
|
20
|
-
'skeleton-text': true,
|
|
21
|
-
};
|
|
22
|
-
this.ionStyle.emit(style);
|
|
23
|
-
}
|
|
24
12
|
render() {
|
|
25
13
|
const animated = this.animated && config.getBoolean('animated', true);
|
|
26
14
|
const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
|
|
@@ -65,32 +53,5 @@ export class SkeletonText {
|
|
|
65
53
|
}
|
|
66
54
|
};
|
|
67
55
|
}
|
|
68
|
-
static get events() {
|
|
69
|
-
return [{
|
|
70
|
-
"method": "ionStyle",
|
|
71
|
-
"name": "ionStyle",
|
|
72
|
-
"bubbles": true,
|
|
73
|
-
"cancelable": true,
|
|
74
|
-
"composed": true,
|
|
75
|
-
"docs": {
|
|
76
|
-
"tags": [{
|
|
77
|
-
"name": "internal",
|
|
78
|
-
"text": undefined
|
|
79
|
-
}],
|
|
80
|
-
"text": "Emitted when the styles change."
|
|
81
|
-
},
|
|
82
|
-
"complexType": {
|
|
83
|
-
"original": "StyleEventDetail",
|
|
84
|
-
"resolved": "StyleEventDetail",
|
|
85
|
-
"references": {
|
|
86
|
-
"StyleEventDetail": {
|
|
87
|
-
"location": "import",
|
|
88
|
-
"path": "../../interface",
|
|
89
|
-
"id": "src/interface.d.ts::StyleEventDetail"
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}];
|
|
94
|
-
}
|
|
95
56
|
static get elementRef() { return "el"; }
|
|
96
57
|
}
|