@ionic/core 7.5.7-dev.11701270755.14f050ad → 7.5.7-dev.11701274462.156e6f06
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/animation.js +12 -11
- package/components/backdrop.js +12 -0
- package/components/checkbox.js +2 -0
- package/components/data.js +1 -1
- package/components/gesture-controller.js +1 -1
- package/components/index4.js +10 -12
- package/components/index5.js +0 -22
- package/components/input-shims.js +12 -7
- package/components/input.utils.js +3 -2
- package/components/ion-content.js +1 -1
- package/components/ion-datetime.js +61 -28
- package/components/ion-input.js +31 -8
- package/components/ion-modal.js +2 -2
- package/components/ion-picker-column-internal.d.ts +11 -0
- package/components/ion-picker-column-internal.js +9 -0
- package/components/ion-picker-column.js +2 -2
- package/components/{ion-picker-legacy.d.ts → ion-picker-internal.d.ts} +4 -4
- package/components/ion-picker-internal.js +9 -0
- package/components/ion-picker.js +299 -1
- package/components/ion-range.js +2 -0
- package/components/ion-select.js +44 -29
- package/components/ion-skeleton-text.js +14 -1
- package/components/ion-textarea.js +30 -7
- package/components/ion-toast.js +419 -74
- package/components/ion-toggle.js +2 -0
- package/components/item.js +2 -2
- package/components/label.js +2 -2
- package/components/overlays.js +6 -12
- package/components/picker-column-internal.js +390 -0
- package/components/picker-column.js +320 -331
- package/components/{picker.js → picker-internal.js} +16 -16
- package/components/radio-group.js +2 -0
- package/components/radio.js +42 -2
- package/dist/cjs/{animation-1083855c.js → animation-d101aa7a.js} +13 -12
- package/dist/cjs/{button-active-cd07b55b.js → button-active-ba107e4e.js} +2 -2
- package/dist/cjs/{capacitor-2ffba62a.js → capacitor-f68447d3.js} +1 -1
- package/dist/cjs/compare-with-utils-c0444525.js +44 -0
- package/dist/cjs/{data-4845b494.js → data-c8d21093.js} +1 -1
- package/dist/cjs/{gesture-controller-d6a3f907.js → gesture-controller-b46721be.js} +0 -1
- package/dist/cjs/{haptic-678abc9f.js → haptic-a74c2767.js} +1 -1
- package/dist/cjs/{index-0f8b33f8.js → index-0ee995e4.js} +1 -1
- package/dist/cjs/{index-d7561763.js → index-4f0c67e1.js} +11 -13
- package/dist/cjs/{index-573877f3.js → index-56d41f51.js} +2 -2
- package/dist/cjs/index-c8d52405.js +10 -0
- package/dist/cjs/{index-9f379eaa.js → index-e9634bc9.js} +1 -1
- package/dist/cjs/index.cjs.js +10 -10
- package/dist/cjs/{input-shims-b0a75a01.js → input-shims-3e3f35b9.js} +15 -10
- package/dist/cjs/{input.utils-0fe3097c.js → input.utils-bdb6953c.js} +4 -3
- package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
- package/dist/cjs/ion-alert.cjs.entry.js +8 -8
- package/dist/cjs/ion-app_8.cjs.entry.js +10 -10
- package/dist/cjs/ion-backdrop.cjs.entry.js +12 -0
- package/dist/cjs/ion-checkbox.cjs.entry.js +2 -0
- package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +43 -30
- package/dist/cjs/ion-input.cjs.entry.js +34 -11
- package/dist/cjs/ion-item-option_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-item_8.cjs.entry.js +17 -4
- package/dist/cjs/ion-loading.cjs.entry.js +3 -4
- package/dist/cjs/ion-menu_3.cjs.entry.js +7 -7
- package/dist/cjs/ion-modal.cjs.entry.js +10 -10
- package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
- package/dist/cjs/{ion-picker-column.cjs.entry.js → ion-picker-column-internal.cjs.entry.js} +12 -12
- package/dist/cjs/{ion-picker.cjs.entry.js → ion-picker-internal.cjs.entry.js} +13 -13
- package/dist/cjs/ion-popover.cjs.entry.js +4 -5
- package/dist/cjs/ion-radio_2.cjs.entry.js +6 -1
- package/dist/cjs/ion-range.cjs.entry.js +3 -1
- package/dist/cjs/ion-refresher_2.cjs.entry.js +7 -7
- package/dist/cjs/ion-reorder_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-select_3.cjs.entry.js +51 -36
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-textarea.cjs.entry.js +33 -10
- package/dist/cjs/ion-toast.cjs.entry.js +434 -93
- package/dist/cjs/ion-toggle.cjs.entry.js +6 -4
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/{ios.transition-ac909bc8.js → ios.transition-f4caf640.js} +3 -3
- package/dist/cjs/{keyboard-fd7db491.js → keyboard-43df0428.js} +1 -1
- package/dist/cjs/{keyboard-38f2bb7b.js → keyboard-840107b3.js} +3 -3
- package/dist/cjs/{keyboard-controller-50beb83a.js → keyboard-controller-019f42df.js} +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{md.transition-907af519.js → md.transition-33331e93.js} +3 -3
- package/dist/cjs/{notch-controller-f4f6af5d.js → notch-controller-c22d1344.js} +1 -1
- package/dist/cjs/{overlays-dbb71984.js → overlays-4d8897dc.js} +7 -12
- package/dist/cjs/{swipe-back-a6dc6e5d.js → swipe-back-d0412fb6.js} +2 -2
- package/dist/collection/collection-manifest.json +6 -7
- package/dist/collection/components/backdrop/backdrop.js +12 -0
- package/dist/collection/components/checkbox/checkbox.js +2 -0
- package/dist/collection/components/content/content.css +4 -0
- package/dist/collection/components/datetime/datetime.ios.css +26 -84
- package/dist/collection/components/datetime/datetime.js +29 -14
- package/dist/collection/components/datetime/datetime.md.css +26 -89
- package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/a11y/datetime.spec.js +9 -6
- package/dist/collection/components/datetime/test/basic/datetime.e2e.js +0 -10
- package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
- package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +5 -5
- package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/values/datetime.e2e.js +5 -5
- package/dist/collection/components/datetime/utils/data.js +1 -1
- package/dist/collection/components/input/input.ios.css +10 -3
- package/dist/collection/components/input/input.js +31 -6
- package/dist/collection/components/input/input.md.css +13 -12
- package/dist/collection/components/input/test/slot/input.e2e.js +51 -0
- package/dist/collection/components/item/item.ios.css +26 -3
- package/dist/collection/components/item/item.md.css +26 -3
- package/dist/collection/components/item/test/basic/item.e2e.js +1 -1
- package/dist/collection/components/item/test/disabled/item.e2e.js +0 -1
- package/dist/collection/components/label/label.ios.css +14 -3
- package/dist/collection/components/label/label.md.css +14 -3
- package/dist/collection/components/modal/gestures/swipe-to-close.js +2 -1
- package/dist/collection/components/note/test/a11y/note.e2e.js +43 -0
- package/dist/collection/components/picker/picker.ios.css +205 -100
- package/dist/collection/components/picker/picker.js +735 -463
- package/dist/collection/components/picker/picker.md.css +194 -98
- package/dist/collection/components/picker/test/basic/picker.e2e.js +13 -106
- package/dist/collection/components/{picker-legacy → picker}/test/is-open/picker.e2e.js +4 -4
- package/dist/collection/components/{picker-legacy → picker}/test/picker-id.spec.js +5 -5
- package/dist/collection/components/{picker-legacy → picker}/test/trigger/picker.e2e.js +1 -1
- package/dist/collection/components/picker-column/picker-column.ios.css +176 -59
- package/dist/collection/components/picker-column/picker-column.js +333 -478
- package/dist/collection/components/picker-column/picker-column.md.css +113 -63
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-aria.spec.js +3 -3
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-dynamic.spec.js +2 -2
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column.spec.js +2 -2
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/standalone/picker-column.e2e.js +3 -3
- package/dist/collection/components/picker-column-internal/picker-column-internal.ios.css +138 -0
- package/dist/collection/components/picker-column-internal/picker-column-internal.js +565 -0
- package/dist/collection/components/{picker-legacy-column/picker-column.md.css → picker-column-internal/picker-column-internal.md.css} +63 -113
- package/dist/collection/components/{picker-column/test/basic/picker-column.e2e.js → picker-column-internal/test/basic/picker-column-internal.e2e.js} +7 -7
- package/dist/collection/components/{picker-column/test/disabled/picker-column.e2e.js → picker-column-internal/test/disabled/picker-column-internal.e2e.js} +39 -39
- package/dist/collection/components/{picker-legacy/picker.md.css → picker-internal/picker-internal.ios.css} +100 -192
- package/dist/collection/components/picker-internal/picker-internal.js +544 -0
- package/dist/collection/components/{picker-legacy-column/picker-column.ios.css → picker-internal/picker-internal.md.css} +101 -98
- package/dist/collection/components/{picker/test/a11y/picker.e2e.js → picker-internal/test/a11y/picker-internal.e2e.js} +2 -2
- package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +118 -0
- package/dist/collection/components/{picker/test/keyboard-entry/picker.e2e.js → picker-internal/test/keyboard-entry/picker-internal.e2e.js} +20 -20
- package/dist/collection/components/radio/radio.js +5 -2
- package/dist/collection/components/radio-group/radio-group.js +24 -0
- package/dist/collection/components/radio-group/test/radio-group.spec.js +69 -0
- package/dist/collection/components/range/range.js +2 -0
- package/dist/collection/components/select/select.ios.css +61 -7
- package/dist/collection/components/select/select.js +45 -28
- package/dist/collection/components/select/select.md.css +64 -19
- package/dist/collection/components/select/test/item/select.e2e.js +13 -0
- package/dist/collection/components/select/test/label/select.e2e.js +1 -1
- package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +1 -1
- package/dist/collection/components/select/test/slot/select.e2e.js +67 -0
- package/dist/collection/components/skeleton-text/skeleton-text.js +39 -0
- package/dist/collection/components/textarea/test/slot/textarea.e2e.js +51 -0
- package/dist/collection/components/textarea/textarea.ios.css +37 -5
- package/dist/collection/components/textarea/textarea.js +30 -5
- package/dist/collection/components/textarea/textarea.md.css +47 -14
- package/dist/collection/components/toast/animations/ios.enter.js +2 -1
- package/dist/collection/components/toast/animations/md.enter.js +4 -3
- package/dist/collection/components/toast/animations/utils.js +20 -14
- package/dist/collection/components/toast/gestures/swipe-to-dismiss.js +267 -0
- package/dist/collection/components/toast/test/swipe-gesture/toast.e2e.js +84 -0
- package/dist/collection/components/toast/test/toast-config.spec.js +25 -0
- package/dist/collection/components/toast/test/toast.spec.js +80 -0
- package/dist/collection/components/toast/toast.ios.css +10 -10
- package/dist/collection/components/toast/toast.js +104 -1
- package/dist/collection/components/toast/toast.md.css +10 -0
- package/dist/collection/components/toggle/toggle.js +2 -0
- package/dist/collection/utils/animation/animation.js +12 -11
- package/dist/collection/utils/animation/test/animation.spec.js +16 -0
- package/dist/collection/utils/browser/index.js +0 -22
- package/dist/collection/utils/forms/compare-with-utils.js +39 -0
- package/dist/collection/utils/forms/index.js +1 -0
- package/dist/collection/utils/gesture/gesture-controller.js +1 -1
- package/dist/collection/utils/input-shims/input-shims.js +12 -6
- package/dist/collection/utils/menu-controller/index.js +10 -12
- package/dist/collection/utils/overlays.js +5 -11
- package/dist/collection/utils/slot-mutation-controller.js +3 -2
- package/dist/docs.json +166 -385
- package/dist/esm/{animation-8aa13916.js → animation-cf3dd234.js} +13 -12
- package/dist/esm/{button-active-5b0516e7.js → button-active-47196c40.js} +2 -2
- package/dist/esm/{capacitor-b4979570.js → capacitor-f1f25364.js} +1 -1
- package/dist/esm/compare-with-utils-4928c09d.js +41 -0
- package/dist/esm/{data-12e24f00.js → data-44d9e816.js} +1 -1
- package/dist/esm/{gesture-controller-3723db7c.js → gesture-controller-0fa396c4.js} +1 -1
- package/dist/esm/{haptic-1243b917.js → haptic-1a66d69f.js} +1 -1
- package/dist/esm/{index-0aa6e61f.js → index-23c05a55.js} +11 -13
- package/dist/esm/{index-6a0ccabb.js → index-702b3cd3.js} +2 -2
- package/dist/esm/index-a5d50daf.js +7 -0
- package/dist/esm/{index-f0cc4e14.js → index-c9e82353.js} +1 -1
- package/dist/esm/{index-32cbee52.js → index-ff313b19.js} +2 -2
- package/dist/esm/index.js +10 -10
- package/dist/esm/{input-shims-d0c93e5d.js → input-shims-1d767845.js} +14 -9
- package/dist/esm/{input.utils-ec063df4.js → input.utils-2cf5e372.js} +4 -3
- package/dist/esm/ion-action-sheet.entry.js +8 -8
- package/dist/esm/ion-alert.entry.js +8 -8
- package/dist/esm/ion-app_8.entry.js +10 -10
- package/dist/esm/ion-backdrop.entry.js +12 -0
- package/dist/esm/ion-checkbox.entry.js +2 -0
- package/dist/esm/ion-datetime-button.entry.js +1 -1
- package/dist/esm/ion-datetime_3.entry.js +42 -29
- package/dist/esm/ion-input.entry.js +34 -11
- package/dist/esm/ion-item-option_3.entry.js +1 -1
- package/dist/esm/ion-item_8.entry.js +17 -4
- package/dist/esm/ion-loading.entry.js +3 -4
- package/dist/esm/ion-menu_3.entry.js +7 -7
- package/dist/esm/ion-modal.entry.js +10 -10
- package/dist/esm/ion-nav_2.entry.js +2 -2
- package/dist/esm/{ion-picker-column.entry.js → ion-picker-column-internal.entry.js} +12 -12
- package/dist/esm/{ion-picker.entry.js → ion-picker-internal.entry.js} +13 -13
- package/dist/esm/ion-popover.entry.js +4 -5
- package/dist/esm/ion-radio_2.entry.js +6 -1
- package/dist/esm/ion-range.entry.js +3 -1
- package/dist/esm/ion-refresher_2.entry.js +7 -7
- package/dist/esm/ion-reorder_2.entry.js +4 -4
- package/dist/esm/ion-segment_2.entry.js +1 -1
- package/dist/esm/ion-select_3.entry.js +47 -32
- package/dist/esm/ion-tab-bar_2.entry.js +4 -4
- package/dist/esm/ion-textarea.entry.js +33 -10
- package/dist/esm/ion-toast.entry.js +417 -76
- package/dist/esm/ion-toggle.entry.js +6 -4
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/{ios.transition-1651c430.js → ios.transition-c3e77862.js} +3 -3
- package/dist/esm/{keyboard-b551279d.js → keyboard-9f771a04.js} +3 -3
- package/dist/esm/{keyboard-b063f012.js → keyboard-b6230bfb.js} +1 -1
- package/dist/esm/{keyboard-controller-0c2dce71.js → keyboard-controller-3f0faa10.js} +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{md.transition-66f18369.js → md.transition-1173eca9.js} +3 -3
- package/dist/esm/{notch-controller-8c9c0e54.js → notch-controller-3f79197e.js} +1 -1
- package/dist/esm/{overlays-789cd7a7.js → overlays-34169295.js} +7 -13
- package/dist/esm/{swipe-back-cc4c2bcb.js → swipe-back-0f3bfc8e.js} +2 -2
- package/dist/esm-es5/{animation-8aa13916.js → animation-cf3dd234.js} +1 -1
- package/dist/esm-es5/{button-active-5b0516e7.js → button-active-47196c40.js} +1 -1
- package/dist/esm-es5/{capacitor-b4979570.js → capacitor-f1f25364.js} +1 -1
- package/dist/esm-es5/compare-with-utils-4928c09d.js +4 -0
- package/dist/esm-es5/{gesture-controller-3723db7c.js → gesture-controller-0fa396c4.js} +1 -1
- package/dist/esm-es5/{haptic-1243b917.js → haptic-1a66d69f.js} +1 -1
- package/dist/esm-es5/index-23c05a55.js +4 -0
- package/dist/esm-es5/{index-6a0ccabb.js → index-702b3cd3.js} +1 -1
- package/dist/esm-es5/index-c9e82353.js +4 -0
- package/dist/esm-es5/{index-32cbee52.js → index-ff313b19.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/input-shims-1d767845.js +4 -0
- package/dist/esm-es5/input.utils-2cf5e372.js +4 -0
- package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
- package/dist/esm-es5/ion-alert.entry.js +1 -1
- package/dist/esm-es5/ion-app_8.entry.js +1 -1
- package/dist/esm-es5/ion-backdrop.entry.js +1 -1
- package/dist/esm-es5/ion-checkbox.entry.js +1 -1
- package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
- package/dist/esm-es5/ion-input.entry.js +1 -1
- package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
- package/dist/esm-es5/ion-item_8.entry.js +1 -1
- package/dist/esm-es5/ion-loading.entry.js +1 -1
- package/dist/esm-es5/ion-menu_3.entry.js +1 -1
- package/dist/esm-es5/ion-modal.entry.js +1 -1
- package/dist/esm-es5/ion-nav_2.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column-internal.entry.js +4 -0
- package/dist/esm-es5/ion-picker-internal.entry.js +4 -0
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-radio_2.entry.js +1 -1
- package/dist/esm-es5/ion-range.entry.js +1 -1
- package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
- package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
- package/dist/esm-es5/ion-segment_2.entry.js +1 -1
- package/dist/esm-es5/ion-select_3.entry.js +1 -1
- package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
- package/dist/esm-es5/ion-textarea.entry.js +1 -1
- package/dist/esm-es5/ion-toast.entry.js +1 -1
- package/dist/esm-es5/ion-toggle.entry.js +1 -1
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/{ios.transition-1651c430.js → ios.transition-c3e77862.js} +1 -1
- package/dist/esm-es5/{keyboard-b551279d.js → keyboard-9f771a04.js} +1 -1
- package/dist/esm-es5/{keyboard-b063f012.js → keyboard-b6230bfb.js} +1 -1
- package/dist/esm-es5/{keyboard-controller-0c2dce71.js → keyboard-controller-3f0faa10.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/md.transition-1173eca9.js +4 -0
- package/dist/esm-es5/{notch-controller-8c9c0e54.js → notch-controller-3f79197e.js} +1 -1
- package/dist/esm-es5/overlays-34169295.js +4 -0
- package/dist/esm-es5/swipe-back-0f3bfc8e.js +4 -0
- package/dist/html.html-data.json +15 -120
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-02d8fdba.system.entry.js → p-03ed6107.system.entry.js} +1 -1
- package/dist/ionic/p-0547e914.entry.js +4 -0
- package/dist/ionic/{p-81c818e7.js → p-11cb4e19.js} +1 -1
- package/dist/ionic/p-131761b4.entry.js +4 -0
- package/dist/ionic/p-196f2123.system.entry.js +4 -0
- package/dist/ionic/{p-64ed03a3.entry.js → p-1abc74d9.entry.js} +1 -1
- package/dist/ionic/p-1cf5e8d6.entry.js +4 -0
- package/dist/ionic/{p-c4042875.system.js → p-21b4981c.system.js} +1 -1
- package/dist/ionic/p-2207f3c2.js +4 -0
- package/dist/ionic/p-27eb8a91.system.entry.js +4 -0
- package/dist/ionic/p-2a41d4d1.js +4 -0
- package/dist/ionic/p-31189dae.entry.js +4 -0
- package/dist/ionic/p-314c4dee.js +4 -0
- package/dist/ionic/{p-4f3e2767.system.entry.js → p-37c69d34.system.entry.js} +1 -1
- package/dist/ionic/p-385c51f8.system.entry.js +4 -0
- package/dist/ionic/{p-477a182e.entry.js → p-3abf5b7a.entry.js} +1 -1
- package/dist/ionic/p-3bc3d880.system.js +4 -0
- package/dist/ionic/{p-56224549.entry.js → p-3de79805.entry.js} +1 -1
- package/dist/ionic/{p-9e6bf9ed.entry.js → p-3e655d4c.entry.js} +1 -1
- package/dist/ionic/p-40903d34.system.js +1 -1
- package/dist/ionic/p-43716898.js +4 -0
- package/dist/ionic/p-450a26bf.js +4 -0
- package/dist/ionic/p-485668f0.entry.js +4 -0
- package/dist/ionic/p-48c59094.system.entry.js +4 -0
- package/dist/ionic/p-494e75ad.js +4 -0
- package/dist/ionic/{p-cb62e3fc.system.entry.js → p-4c80afe1.system.entry.js} +1 -1
- package/dist/ionic/{p-0e23256e.system.entry.js → p-54824705.system.entry.js} +1 -1
- package/dist/ionic/p-561cc050.system.js +4 -0
- package/dist/ionic/{p-4a142496.system.entry.js → p-587afb80.system.entry.js} +1 -1
- package/dist/ionic/{p-8cf94fc1.js → p-5885e9af.js} +1 -1
- package/dist/ionic/p-5bd4e009.entry.js +4 -0
- package/dist/ionic/{p-b3e79338.system.entry.js → p-5e6bc319.system.entry.js} +1 -1
- package/dist/ionic/{p-939d903b.entry.js → p-64ab3eb3.entry.js} +1 -1
- package/dist/ionic/p-671dbd61.js +4 -0
- package/dist/ionic/{p-702d85d8.system.js → p-67951604.system.js} +1 -1
- package/dist/ionic/{p-835e0346.entry.js → p-6797887a.entry.js} +1 -1
- package/dist/ionic/p-693cabd5.entry.js +4 -0
- package/dist/ionic/{p-b923f3d7.js → p-6a309574.js} +1 -1
- package/dist/ionic/{p-a4cda7a8.system.entry.js → p-6e23777e.system.entry.js} +1 -1
- package/dist/ionic/{p-06e6d235.system.entry.js → p-7047a40c.system.entry.js} +2 -2
- package/dist/ionic/p-70dcf429.js +4 -0
- package/dist/ionic/p-710cea83.system.js +4 -0
- package/dist/ionic/p-7b44e419.js +4 -0
- package/dist/ionic/p-80a9b397.entry.js +4 -0
- package/dist/ionic/{p-9b5301cc.system.entry.js → p-823890d5.system.entry.js} +1 -1
- package/dist/ionic/{p-a57f223c.system.js → p-83a455fd.system.js} +1 -1
- package/dist/ionic/{p-baa7cb1e.entry.js → p-8ad82eb3.entry.js} +1 -1
- package/dist/ionic/{p-c1229981.entry.js → p-8b15ca22.entry.js} +1 -1
- package/dist/ionic/{p-a7e2ac5c.js → p-8b1be026.js} +1 -1
- package/dist/ionic/p-8dbdb163.system.js +4 -0
- package/dist/ionic/p-8ddfecbf.entry.js +4 -0
- package/dist/ionic/{p-b4b4bb29.system.js → p-9292fd42.system.js} +1 -1
- package/dist/ionic/{p-41477ad9.system.js → p-958f1c70.system.js} +1 -1
- package/dist/ionic/{p-5ce11143.entry.js → p-965677f1.entry.js} +1 -1
- package/dist/ionic/p-98712253.system.entry.js +4 -0
- package/dist/ionic/p-9c6787e2.entry.js +4 -0
- package/dist/ionic/{p-6500b298.system.js → p-9e852ff1.system.js} +1 -1
- package/dist/ionic/p-a11c1aff.system.entry.js +4 -0
- package/dist/ionic/{p-419eb426.js → p-a135e3ba.js} +1 -1
- package/dist/ionic/p-a31099a4.entry.js +4 -0
- package/dist/ionic/p-a6bc00ab.entry.js +4 -0
- package/dist/ionic/p-a9c3699b.system.entry.js +4 -0
- package/dist/ionic/p-ad4b4f73.system.entry.js +4 -0
- package/dist/ionic/{p-ab4cff27.system.js → p-aec8a70a.system.js} +1 -1
- package/dist/ionic/p-b673ee9b.entry.js +4 -0
- package/dist/ionic/p-be0f6600.system.js +4 -0
- package/dist/ionic/p-beb64be7.system.entry.js +4 -0
- package/dist/ionic/{p-dd837fa8.entry.js → p-c1e725db.entry.js} +1 -1
- package/dist/ionic/p-c2db1374.system.js +4 -0
- package/dist/ionic/p-c3547c7a.system.js +4 -0
- package/dist/ionic/{p-c7fd81ba.system.js → p-c4de53af.system.js} +1 -1
- package/dist/ionic/p-c700acef.system.js +4 -0
- package/dist/ionic/p-c919498d.entry.js +4 -0
- package/dist/ionic/{p-3f88eab8.system.entry.js → p-cc615985.system.entry.js} +1 -1
- package/dist/ionic/p-d48872b1.system.js +4 -0
- package/dist/ionic/p-d4fba36b.system.entry.js +4 -0
- package/dist/ionic/{p-22813b28.system.entry.js → p-d61a2cee.system.entry.js} +1 -1
- package/dist/ionic/{p-c31fc05f.system.entry.js → p-db5043df.system.entry.js} +1 -1
- package/dist/ionic/{p-100ef961.js → p-e0b06b65.js} +1 -1
- package/dist/ionic/p-e5b8f2f7.js +4 -0
- package/dist/ionic/{p-3bad5c1a.js → p-e5fd9f10.js} +1 -1
- package/dist/ionic/{p-302091ab.js → p-e627ed84.js} +1 -1
- package/dist/ionic/{p-ccdcb022.system.js → p-e7d20dfb.system.js} +1 -1
- package/dist/ionic/{p-14b4348c.system.js → p-e9e5755c.system.js} +1 -1
- package/dist/ionic/p-ea9addc8.system.entry.js +4 -0
- package/dist/ionic/p-f36112b4.entry.js +4 -0
- package/dist/ionic/p-f43f4102.entry.js +4 -0
- package/dist/ionic/p-f5d78105.entry.js +4 -0
- package/dist/ionic/p-f7769c83.js +4 -0
- package/dist/ionic/{p-bba2ce59.system.js → p-f9a641fa.system.js} +1 -1
- package/dist/ionic/{p-2e1794df.system.js → p-fa8d4788.system.js} +1 -1
- package/dist/ionic/p-fcb148dc.system.entry.js +4 -0
- package/dist/ionic/p-fcc23f25.system.entry.js +4 -0
- package/dist/ionic/{p-878c7aa5.system.entry.js → p-fce6b76a.system.entry.js} +1 -1
- package/dist/ionic/p-fdcf04c3.system.entry.js +4 -0
- package/dist/ionic/{p-a0b6d438.js → p-fe1f93f2.js} +1 -1
- package/dist/types/components/backdrop/backdrop.d.ts +3 -0
- package/dist/types/components/datetime/datetime.d.ts +1 -0
- package/dist/types/components/datetime/utils/data.d.ts +2 -2
- package/dist/types/components/input/input.d.ts +2 -0
- package/dist/types/components/menu/menu.d.ts +1 -1
- package/dist/types/components/picker/picker.d.ts +131 -74
- package/dist/types/components/picker-column/picker-column.d.ts +39 -94
- package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +102 -0
- package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +8 -0
- package/dist/types/components/picker-internal/picker-internal.d.ts +102 -0
- package/dist/types/components/radio-group/radio-group-interface.d.ts +1 -0
- package/dist/types/components/radio-group/radio-group.d.ts +8 -1
- package/dist/types/components/router/router.d.ts +2 -1
- package/dist/types/components/select/select.d.ts +6 -1
- package/dist/types/components/skeleton-text/skeleton-text.d.ts +9 -1
- package/dist/types/components/textarea/textarea.d.ts +2 -0
- package/dist/types/components/toast/animations/utils.d.ts +15 -4
- package/dist/types/components/toast/gestures/swipe-to-dismiss.d.ts +9 -0
- package/dist/types/components/toast/toast-interface.d.ts +2 -0
- package/dist/types/components/toast/toast.d.ts +28 -1
- package/dist/types/components.d.ts +159 -157
- package/dist/types/interface.d.ts +2 -6
- package/dist/types/utils/animation/animation-interface.d.ts +4 -4
- package/dist/types/utils/browser/index.d.ts +11 -2
- package/dist/types/utils/config.d.ts +2 -2
- package/dist/types/utils/forms/compare-with-utils.d.ts +18 -0
- package/dist/types/utils/forms/index.d.ts +1 -0
- package/dist/types/utils/gesture/gesture-controller.d.ts +0 -1
- package/dist/types/utils/hardware-back-button.d.ts +4 -0
- package/dist/types/utils/overlays.d.ts +3 -5
- package/dist/types/utils/slot-mutation-controller.d.ts +2 -2
- package/hydrate/index.js +2003 -1567
- package/package.json +1 -1
- package/components/ion-picker-column-option.d.ts +0 -11
- package/components/ion-picker-column-option.js +0 -52
- package/components/ion-picker-legacy-column.d.ts +0 -11
- package/components/ion-picker-legacy-column.js +0 -9
- package/components/ion-picker-legacy.js +0 -309
- package/components/picker-column2.js +0 -379
- package/dist/cjs/index-306a7476.js +0 -32
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +0 -35
- package/dist/collection/components/item/test/text/item.e2e.js +0 -14
- package/dist/collection/components/picker-column-option/picker-column-option.js +0 -68
- package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +0 -18
- package/dist/collection/components/picker-legacy/picker.ios.css +0 -367
- package/dist/collection/components/picker-legacy/picker.js +0 -817
- package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +0 -25
- package/dist/collection/components/picker-legacy-column/picker-column.js +0 -419
- package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +0 -65
- package/dist/esm/index-7a14ecec.js +0 -29
- package/dist/esm/ion-picker-column-option.entry.js +0 -31
- package/dist/esm-es5/index-0aa6e61f.js +0 -4
- package/dist/esm-es5/index-f0cc4e14.js +0 -4
- package/dist/esm-es5/input-shims-d0c93e5d.js +0 -4
- package/dist/esm-es5/input.utils-ec063df4.js +0 -4
- package/dist/esm-es5/ion-picker-column-option.entry.js +0 -4
- package/dist/esm-es5/ion-picker-column.entry.js +0 -4
- package/dist/esm-es5/ion-picker.entry.js +0 -4
- package/dist/esm-es5/md.transition-66f18369.js +0 -4
- package/dist/esm-es5/overlays-789cd7a7.js +0 -4
- package/dist/esm-es5/swipe-back-cc4c2bcb.js +0 -4
- package/dist/ionic/p-0c244faf.entry.js +0 -4
- package/dist/ionic/p-20cf4994.js +0 -4
- package/dist/ionic/p-234b9617.system.entry.js +0 -4
- package/dist/ionic/p-25c34422.system.entry.js +0 -4
- package/dist/ionic/p-276afddd.js +0 -4
- package/dist/ionic/p-2804781b.entry.js +0 -4
- package/dist/ionic/p-2ad38423.system.entry.js +0 -4
- package/dist/ionic/p-2ba9414e.entry.js +0 -4
- package/dist/ionic/p-2e8e0045.js +0 -4
- package/dist/ionic/p-332f64af.system.entry.js +0 -4
- package/dist/ionic/p-352c0232.system.entry.js +0 -4
- package/dist/ionic/p-3602001b.system.js +0 -4
- package/dist/ionic/p-3632220b.system.js +0 -4
- package/dist/ionic/p-39074595.entry.js +0 -4
- package/dist/ionic/p-439e20ef.entry.js +0 -4
- package/dist/ionic/p-4cd588b3.system.entry.js +0 -4
- package/dist/ionic/p-67aab78f.js +0 -4
- package/dist/ionic/p-67eecef4.system.js +0 -4
- package/dist/ionic/p-6893f6e4.entry.js +0 -4
- package/dist/ionic/p-77e7a9c8.entry.js +0 -4
- package/dist/ionic/p-7c66a566.system.entry.js +0 -4
- package/dist/ionic/p-8b4ab236.entry.js +0 -4
- package/dist/ionic/p-9403b297.system.entry.js +0 -4
- package/dist/ionic/p-966cf574.system.entry.js +0 -4
- package/dist/ionic/p-97c65aa5.js +0 -4
- package/dist/ionic/p-992d3bad.entry.js +0 -4
- package/dist/ionic/p-9ab6f3e6.system.js +0 -4
- package/dist/ionic/p-9b89cbde.js +0 -4
- package/dist/ionic/p-9c967a65.system.entry.js +0 -4
- package/dist/ionic/p-a21b8d05.entry.js +0 -4
- package/dist/ionic/p-b0cee324.entry.js +0 -4
- package/dist/ionic/p-b1142133.entry.js +0 -4
- package/dist/ionic/p-b4cbb736.js +0 -4
- package/dist/ionic/p-b6a8588f.entry.js +0 -4
- package/dist/ionic/p-b6f8ee31.entry.js +0 -4
- package/dist/ionic/p-ba70d455.entry.js +0 -4
- package/dist/ionic/p-bd7a3269.entry.js +0 -4
- package/dist/ionic/p-c32bf078.system.entry.js +0 -4
- package/dist/ionic/p-cc196b34.js +0 -4
- package/dist/ionic/p-d1de1188.js +0 -4
- package/dist/ionic/p-d21bfe66.system.entry.js +0 -4
- package/dist/ionic/p-d3952bd5.system.entry.js +0 -4
- package/dist/ionic/p-dc565ca3.js +0 -4
- package/dist/ionic/p-dfa756ed.system.js +0 -4
- package/dist/ionic/p-e88ed07f.system.js +0 -4
- package/dist/ionic/p-eb07ec1a.system.entry.js +0 -4
- package/dist/ionic/p-eb5697b5.system.js +0 -4
- package/dist/ionic/p-ee800093.entry.js +0 -4
- package/dist/ionic/p-f0559c5d.system.entry.js +0 -4
- package/dist/ionic/p-fdd22426.entry.js +0 -4
- package/dist/ionic/p-ff5a10f9.system.js +0 -4
- package/dist/types/components/picker/picker-interfaces.d.ts +0 -8
- package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -16
- package/dist/types/components/picker-legacy/picker.d.ts +0 -158
- package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
- /package/dist/collection/components/{picker-legacy → picker}/animations/ios.enter.js +0 -0
- /package/dist/collection/components/{picker-legacy → picker}/animations/ios.leave.js +0 -0
- /package/dist/collection/components/picker/{picker-interfaces.js → picker-interface.js} +0 -0
- /package/dist/collection/components/{picker-legacy-column → picker-column}/test/test.utils.js +0 -0
- /package/dist/collection/components/{picker-column/picker-column-interfaces.js → picker-column-internal/picker-column-internal-interfaces.js} +0 -0
- /package/dist/collection/components/{picker-legacy/picker-interface.js → picker-internal/picker-internal-interfaces.js} +0 -0
- /package/dist/esm-es5/{data-12e24f00.js → data-44d9e816.js} +0 -0
- /package/dist/esm-es5/{index-7a14ecec.js → index-a5d50daf.js} +0 -0
- /package/dist/ionic/{p-bb849ebb.js → p-17240d90.js} +0 -0
- /package/dist/ionic/{p-0e94957a.system.js → p-792919fd.system.js} +0 -0
- /package/dist/ionic/{p-b347cfd1.js → p-7b30edcc.js} +0 -0
- /package/dist/ionic/{p-e4219e27.system.js → p-b8c3f071.system.js} +0 -0
- /package/dist/types/components/{picker-legacy → picker}/animations/ios.enter.d.ts +0 -0
- /package/dist/types/components/{picker-legacy → picker}/animations/ios.leave.d.ts +0 -0
- /package/dist/types/components/{picker-legacy → picker}/picker-interface.d.ts +0 -0
- /package/dist/types/components/{picker-legacy-column → picker-column}/test/test.utils.d.ts +0 -0
- /package/dist/types/components/{picker-column/picker-column-interfaces.d.ts → picker-column-internal/picker-column-internal-interfaces.d.ts} +0 -0
|
@@ -161,7 +161,7 @@ class TimePickerFixture {
|
|
|
161
161
|
await this.page.waitForChanges();
|
|
162
162
|
}
|
|
163
163
|
async expectTime(hour, minute, ampm) {
|
|
164
|
-
const pickerColumns = this.timePicker.locator('ion-picker-column');
|
|
164
|
+
const pickerColumns = this.timePicker.locator('ion-picker-column-internal');
|
|
165
165
|
await expect(pickerColumns.nth(0)).toHaveJSProperty('value', hour);
|
|
166
166
|
await expect(pickerColumns.nth(1)).toHaveJSProperty('value', minute);
|
|
167
167
|
await expect(pickerColumns.nth(2)).toHaveJSProperty('value', ampm);
|
|
@@ -46,7 +46,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config, scree
|
|
|
46
46
|
const tabKey = browserName === 'webkit' ? 'Alt+Tab' : 'Tab';
|
|
47
47
|
await page.waitForSelector('.datetime-ready');
|
|
48
48
|
const calendarMonthYear = page.locator('ion-datetime .calendar-month-year');
|
|
49
|
-
const monthYearButton = page.locator('.calendar-month-year-
|
|
49
|
+
const monthYearButton = page.locator('.calendar-month-year ion-item');
|
|
50
50
|
await expect(calendarMonthYear).toHaveText('February 2022');
|
|
51
51
|
await page.keyboard.press(tabKey);
|
|
52
52
|
await expect(monthYearButton).toBeFocused();
|
|
@@ -75,7 +75,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config, scree
|
|
|
75
75
|
`, config);
|
|
76
76
|
const tabKey = browserName === 'webkit' ? 'Alt+Tab' : 'Tab';
|
|
77
77
|
const datetime = page.locator('ion-datetime');
|
|
78
|
-
const monthYearButton = page.locator('.calendar-month-year-
|
|
78
|
+
const monthYearButton = page.locator('.calendar-month-year ion-item');
|
|
79
79
|
const prevButton = page.locator('.calendar-next-prev ion-button:nth-child(1)');
|
|
80
80
|
const nextButton = page.locator('.calendar-next-prev ion-button:nth-child(2)');
|
|
81
81
|
const calendarMonthYear = page.locator('ion-datetime .calendar-month-year');
|
|
@@ -36,14 +36,14 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
36
36
|
await page.setContent(`
|
|
37
37
|
<ion-datetime locale="en-US" presentation="time" hour-values="1,2,3"></ion-datetime>
|
|
38
38
|
`, config);
|
|
39
|
-
const items = page.locator('ion-picker-column:first-of-type .picker-item:not(.picker-item-empty)');
|
|
39
|
+
const items = page.locator('ion-picker-column-internal:first-of-type .picker-item:not(.picker-item-empty)');
|
|
40
40
|
await expect(items).toHaveText(['1', '2', '3']);
|
|
41
41
|
});
|
|
42
42
|
test('should render correct minutes', async ({ page }) => {
|
|
43
43
|
await page.setContent(`
|
|
44
44
|
<ion-datetime locale="en-US" presentation="time" minute-values="1,2,3"></ion-datetime>
|
|
45
45
|
`, config);
|
|
46
|
-
const items = page.locator('ion-picker-column:nth-of-type(2) .picker-item:not(.picker-item-empty)');
|
|
46
|
+
const items = page.locator('ion-picker-column-internal:nth-of-type(2) .picker-item:not(.picker-item-empty)');
|
|
47
47
|
await expect(items).toHaveText(['01', '02', '03']);
|
|
48
48
|
});
|
|
49
49
|
test('should adjust default parts for allowed hour and minute values', async ({ page }) => {
|
|
@@ -69,17 +69,17 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
69
69
|
</script>
|
|
70
70
|
`, config);
|
|
71
71
|
await page.waitForSelector('.datetime-ready');
|
|
72
|
-
const minuteItems = page.locator('ion-picker-column:nth-of-type(2) .picker-item:not(.picker-item-empty)');
|
|
72
|
+
const minuteItems = page.locator('ion-picker-column-internal:nth-of-type(2) .picker-item:not(.picker-item-empty)');
|
|
73
73
|
await expect(minuteItems).toHaveText(['00', '15', '30', '45']);
|
|
74
74
|
await expect(minuteItems.nth(1)).toHaveClass(/picker-item-active/);
|
|
75
|
-
const hourItems = page.locator('ion-picker-column:nth-of-type(1) .picker-item:not(.picker-item-empty)');
|
|
75
|
+
const hourItems = page.locator('ion-picker-column-internal:nth-of-type(1) .picker-item:not(.picker-item-empty)');
|
|
76
76
|
await expect(hourItems).toHaveText(['2']);
|
|
77
77
|
await expect(hourItems.nth(0)).toHaveClass(/picker-item-active/);
|
|
78
78
|
/**
|
|
79
79
|
* Since the allowed hour is 2AM, the time period
|
|
80
80
|
* should switch from PM to AM.
|
|
81
81
|
*/
|
|
82
|
-
const ampmItems = page.locator('ion-picker-column:nth-of-type(3) .picker-item:not(.picker-item-empty)');
|
|
82
|
+
const ampmItems = page.locator('ion-picker-column-internal:nth-of-type(3) .picker-item:not(.picker-item-empty)');
|
|
83
83
|
await expect(ampmItems).toHaveText(['AM', 'PM']);
|
|
84
84
|
await expect(ampmItems.nth(0)).toHaveClass(/picker-item-active/);
|
|
85
85
|
});
|
|
@@ -323,7 +323,7 @@ export const getMonthColumnData = (locale, refParts, minParts, maxParts, monthVa
|
|
|
323
323
|
* @param minParts The minimum bound on the date that can be returned
|
|
324
324
|
* @param maxParts The maximum bound on the date that can be returned
|
|
325
325
|
* @param dayValues The allowed date values
|
|
326
|
-
* @returns Date data to be used in ion-picker-column
|
|
326
|
+
* @returns Date data to be used in ion-picker-column-internal
|
|
327
327
|
*/
|
|
328
328
|
export const getDayColumnData = (locale, refParts, minParts, maxParts, dayValues, formatOptions = {
|
|
329
329
|
day: 'numeric',
|
|
@@ -350,6 +350,7 @@
|
|
|
350
350
|
display: flex;
|
|
351
351
|
position: relative;
|
|
352
352
|
flex-grow: 1;
|
|
353
|
+
align-items: center;
|
|
353
354
|
width: 100%;
|
|
354
355
|
}
|
|
355
356
|
|
|
@@ -654,9 +655,7 @@
|
|
|
654
655
|
/**
|
|
655
656
|
* This makes the label sit above the input.
|
|
656
657
|
*/
|
|
657
|
-
:host(.
|
|
658
|
-
:host(.has-focus.input-label-placement-floating) .label-text-wrapper,
|
|
659
|
-
:host(.has-value.input-label-placement-floating) .label-text-wrapper {
|
|
658
|
+
:host(.label-floating) .label-text-wrapper {
|
|
660
659
|
transform: translateY(50%) scale(0.75);
|
|
661
660
|
/**
|
|
662
661
|
* Label text should not extend
|
|
@@ -665,6 +664,14 @@
|
|
|
665
664
|
max-width: calc(100% / 0.75);
|
|
666
665
|
}
|
|
667
666
|
|
|
667
|
+
::slotted([slot=start]) {
|
|
668
|
+
margin-inline-end: 16px;
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
::slotted([slot=end]) {
|
|
672
|
+
margin-inline-start: 16px;
|
|
673
|
+
}
|
|
674
|
+
|
|
668
675
|
/**
|
|
669
676
|
* Convert a font size to a dynamic font size.
|
|
670
677
|
* Fonts that participate in Dynamic Type should use
|
|
@@ -14,6 +14,8 @@ import { getCounterText } from "./input.utils";
|
|
|
14
14
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
15
15
|
*
|
|
16
16
|
* @slot label - The label text to associate with the input. Use the `labelPlacement` property to control where the label is placed relative to the input. Use this if you need to render a label with custom HTML. (EXPERIMENTAL)
|
|
17
|
+
* @slot start - Content to display at the leading edge of the input. (EXPERIMENTAL)
|
|
18
|
+
* @slot end - Content to display at the trailing edge of the input. (EXPERIMENTAL)
|
|
17
19
|
*/
|
|
18
20
|
export class Input {
|
|
19
21
|
constructor() {
|
|
@@ -157,7 +159,7 @@ export class Input {
|
|
|
157
159
|
connectedCallback() {
|
|
158
160
|
const { el } = this;
|
|
159
161
|
this.legacyFormController = createLegacyFormController(el);
|
|
160
|
-
this.slotMutationController = createSlotMutationController(el, 'label', () => forceUpdate(this));
|
|
162
|
+
this.slotMutationController = createSlotMutationController(el, ['label', 'start', 'end'], () => forceUpdate(this));
|
|
161
163
|
this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
|
|
162
164
|
this.emitStyle();
|
|
163
165
|
this.debounceChanged();
|
|
@@ -256,6 +258,8 @@ export class Input {
|
|
|
256
258
|
'has-value': this.hasValue(),
|
|
257
259
|
'has-focus': this.hasFocus,
|
|
258
260
|
'interactive-disabled': this.disabled,
|
|
261
|
+
// TODO(FW-2764): remove this
|
|
262
|
+
legacy: !!this.legacy,
|
|
259
263
|
});
|
|
260
264
|
}
|
|
261
265
|
}
|
|
@@ -361,29 +365,50 @@ export class Input {
|
|
|
361
365
|
return this.renderLabel();
|
|
362
366
|
}
|
|
363
367
|
renderInput() {
|
|
364
|
-
const { disabled, fill, readonly, shape, inputId, labelPlacement } = this;
|
|
368
|
+
const { disabled, fill, readonly, shape, inputId, labelPlacement, el, hasFocus } = this;
|
|
365
369
|
const mode = getIonMode(this);
|
|
366
370
|
const value = this.getValue();
|
|
367
371
|
const inItem = hostContext('ion-item', this.el);
|
|
368
372
|
const shouldRenderHighlight = mode === 'md' && fill !== 'outline' && !inItem;
|
|
373
|
+
const hasValue = this.hasValue();
|
|
374
|
+
const hasStartEndSlots = el.querySelector('[slot="start"], [slot="end"]') !== null;
|
|
375
|
+
/**
|
|
376
|
+
* If the label is stacked, it should always sit above the input.
|
|
377
|
+
* For floating labels, the label should move above the input if
|
|
378
|
+
* the input has a value, is focused, or has anything in either
|
|
379
|
+
* the start or end slot.
|
|
380
|
+
*
|
|
381
|
+
* If there is content in the start slot, the label would overlap
|
|
382
|
+
* it if not forced to float. This is also applied to the end slot
|
|
383
|
+
* because with the default or solid fills, the input is not
|
|
384
|
+
* vertically centered in the container, but the label is. This
|
|
385
|
+
* causes the slots and label to appear vertically offset from each
|
|
386
|
+
* other when the label isn't floating above the input. This doesn't
|
|
387
|
+
* apply to the outline fill, but this was not accounted for to keep
|
|
388
|
+
* things consistent.
|
|
389
|
+
*
|
|
390
|
+
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
391
|
+
*/
|
|
392
|
+
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
|
|
369
393
|
return (h(Host, { class: createColorClasses(this.color, {
|
|
370
394
|
[mode]: true,
|
|
371
|
-
'has-value':
|
|
372
|
-
'has-focus':
|
|
395
|
+
'has-value': hasValue,
|
|
396
|
+
'has-focus': hasFocus,
|
|
397
|
+
'label-floating': labelShouldFloat,
|
|
373
398
|
[`input-fill-${fill}`]: fill !== undefined,
|
|
374
399
|
[`input-shape-${shape}`]: shape !== undefined,
|
|
375
400
|
[`input-label-placement-${labelPlacement}`]: true,
|
|
376
401
|
'in-item': inItem,
|
|
377
402
|
'in-item-color': hostContext('ion-item.ion-color', this.el),
|
|
378
403
|
'input-disabled': disabled,
|
|
379
|
-
}) }, h("label", { class: "input-wrapper" }, this.renderLabelContainer(), h("div", { class: "native-wrapper" }, h("input", Object.assign({ class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, accept: this.accept, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, size: this.size, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (h("button", { "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
|
|
404
|
+
}) }, h("label", { class: "input-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { class: "native-wrapper" }, h("slot", { name: "start" }), h("input", Object.assign({ class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, accept: this.accept, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, size: this.size, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (h("button", { "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
|
|
380
405
|
/**
|
|
381
406
|
* This prevents mobile browsers from
|
|
382
407
|
* blurring the input when the clear
|
|
383
408
|
* button is activated.
|
|
384
409
|
*/
|
|
385
410
|
ev.preventDefault();
|
|
386
|
-
}, onClick: this.clearTextInput }, h("ion-icon", { "aria-hidden": "true", icon: mode === 'ios' ? closeCircle : closeSharp })))), shouldRenderHighlight && h("div", { class: "input-highlight" })), this.renderBottomContent()));
|
|
411
|
+
}, onClick: this.clearTextInput }, h("ion-icon", { "aria-hidden": "true", icon: mode === 'ios' ? closeCircle : closeSharp }))), h("slot", { name: "end" })), shouldRenderHighlight && h("div", { class: "input-highlight" })), this.renderBottomContent()));
|
|
387
412
|
}
|
|
388
413
|
// TODO FW-2764 Remove this
|
|
389
414
|
renderLegacyInput() {
|
|
@@ -350,6 +350,7 @@
|
|
|
350
350
|
display: flex;
|
|
351
351
|
position: relative;
|
|
352
352
|
flex-grow: 1;
|
|
353
|
+
align-items: center;
|
|
353
354
|
width: 100%;
|
|
354
355
|
}
|
|
355
356
|
|
|
@@ -654,9 +655,7 @@
|
|
|
654
655
|
/**
|
|
655
656
|
* This makes the label sit above the input.
|
|
656
657
|
*/
|
|
657
|
-
:host(.
|
|
658
|
-
:host(.has-focus.input-label-placement-floating) .label-text-wrapper,
|
|
659
|
-
:host(.has-value.input-label-placement-floating) .label-text-wrapper {
|
|
658
|
+
:host(.label-floating) .label-text-wrapper {
|
|
660
659
|
transform: translateY(50%) scale(0.75);
|
|
661
660
|
/**
|
|
662
661
|
* Label text should not extend
|
|
@@ -665,6 +664,14 @@
|
|
|
665
664
|
max-width: calc(100% / 0.75);
|
|
666
665
|
}
|
|
667
666
|
|
|
667
|
+
::slotted([slot=start]) {
|
|
668
|
+
margin-inline-end: 16px;
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
::slotted([slot=end]) {
|
|
672
|
+
margin-inline-start: 16px;
|
|
673
|
+
}
|
|
674
|
+
|
|
668
675
|
/**
|
|
669
676
|
* Convert a font size to a dynamic font size.
|
|
670
677
|
* Fonts that participate in Dynamic Type should use
|
|
@@ -907,9 +914,7 @@
|
|
|
907
914
|
}
|
|
908
915
|
}
|
|
909
916
|
|
|
910
|
-
:host(.input-fill-solid.input-label-placement-
|
|
911
|
-
:host(.has-focus.input-fill-solid.input-label-placement-floating) .label-text-wrapper,
|
|
912
|
-
:host(.has-value.input-fill-solid.input-label-placement-floating) .label-text-wrapper {
|
|
917
|
+
:host(.label-floating.input-fill-solid.input-label-placement-floating) .label-text-wrapper {
|
|
913
918
|
/**
|
|
914
919
|
* Label text should not extend
|
|
915
920
|
* beyond the bounds of the input.
|
|
@@ -1063,9 +1068,7 @@
|
|
|
1063
1068
|
/**
|
|
1064
1069
|
* This makes the label sit above the input.
|
|
1065
1070
|
*/
|
|
1066
|
-
:host(.
|
|
1067
|
-
:host(.has-value.input-fill-outline.input-label-placement-floating) .label-text-wrapper,
|
|
1068
|
-
:host(.input-fill-outline.input-label-placement-stacked) .label-text-wrapper {
|
|
1071
|
+
:host(.label-floating.input-fill-outline) .label-text-wrapper {
|
|
1069
1072
|
transform: translateY(-32%) scale(0.75);
|
|
1070
1073
|
margin-left: 0;
|
|
1071
1074
|
margin-right: 0;
|
|
@@ -1226,9 +1229,7 @@
|
|
|
1226
1229
|
* the floating/stacked label. We simulate this "cut out"
|
|
1227
1230
|
* by removing the top border from the notch fragment.
|
|
1228
1231
|
*/
|
|
1229
|
-
:host(.
|
|
1230
|
-
:host(.has-value.input-fill-outline.input-label-placement-floating) .input-outline-notch,
|
|
1231
|
-
:host(.input-fill-outline.input-label-placement-stacked) .input-outline-notch {
|
|
1232
|
+
:host(.label-floating.input-fill-outline) .input-outline-notch {
|
|
1232
1233
|
border-top: none;
|
|
1233
1234
|
}
|
|
1234
1235
|
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { expect } from "@playwright/test";
|
|
5
|
+
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
6
|
+
configs().forEach(({ title, screenshot, config }) => {
|
|
7
|
+
test.describe(title('input: start and end slots (visual checks)'), () => {
|
|
8
|
+
test('should not have visual regressions with a start-positioned label', async ({ page }) => {
|
|
9
|
+
await page.setContent(`
|
|
10
|
+
<ion-input label-placement="start" fill="solid" value="100" label="Weight" clear-input="true">
|
|
11
|
+
<ion-icon slot="start" name="barbell" aria-hidden="true"></ion-icon>
|
|
12
|
+
<ion-label slot="end">lbs</ion-label>
|
|
13
|
+
</ion-input>
|
|
14
|
+
`, config);
|
|
15
|
+
const input = page.locator('ion-input');
|
|
16
|
+
await expect(input).toHaveScreenshot(screenshot(`input-slots-label-start`));
|
|
17
|
+
});
|
|
18
|
+
test('should not have visual regressions with a floating label', async ({ page }) => {
|
|
19
|
+
await page.setContent(`
|
|
20
|
+
<ion-input label-placement="floating" fill="solid" value="100" label="Weight" clear-input="true">
|
|
21
|
+
<ion-icon slot="start" name="barbell" aria-hidden="true"></ion-icon>
|
|
22
|
+
<ion-label slot="end">lbs</ion-label>
|
|
23
|
+
</ion-input>
|
|
24
|
+
`, config);
|
|
25
|
+
const input = page.locator('ion-input');
|
|
26
|
+
await expect(input).toHaveScreenshot(screenshot(`input-slots-label-floating`));
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
31
|
+
test.describe(title('input: start and end slots (functionality checks)'), () => {
|
|
32
|
+
test('should raise floating label when there is content in the start slot', async ({ page }) => {
|
|
33
|
+
await page.setContent(`
|
|
34
|
+
<ion-input label-placement="floating" fill="solid" label="Weight">
|
|
35
|
+
<ion-icon slot="start" name="barbell" aria-hidden="true"></ion-icon>
|
|
36
|
+
</ion-input>
|
|
37
|
+
`, config);
|
|
38
|
+
const input = page.locator('ion-input');
|
|
39
|
+
await expect(input).toHaveClass(/label-floating/);
|
|
40
|
+
});
|
|
41
|
+
test('should raise floating label when there is content in the end slot', async ({ page }) => {
|
|
42
|
+
await page.setContent(`
|
|
43
|
+
<ion-input label-placement="floating" fill="solid" label="Weight">
|
|
44
|
+
<ion-icon slot="end" name="barbell" aria-hidden="true"></ion-icon>
|
|
45
|
+
</ion-input>
|
|
46
|
+
`, config);
|
|
47
|
+
const input = page.locator('ion-input');
|
|
48
|
+
await expect(input).toHaveClass(/label-floating/);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
});
|
|
@@ -126,6 +126,7 @@
|
|
|
126
126
|
-webkit-font-smoothing: antialiased;
|
|
127
127
|
display: block;
|
|
128
128
|
position: relative;
|
|
129
|
+
flex: 1;
|
|
129
130
|
align-items: center;
|
|
130
131
|
justify-content: space-between;
|
|
131
132
|
outline: none;
|
|
@@ -230,6 +231,7 @@
|
|
|
230
231
|
/* stylelint-enable */
|
|
231
232
|
display: flex;
|
|
232
233
|
position: relative;
|
|
234
|
+
flex-wrap: wrap;
|
|
233
235
|
align-items: inherit;
|
|
234
236
|
justify-content: inherit;
|
|
235
237
|
width: 100%;
|
|
@@ -241,8 +243,8 @@
|
|
|
241
243
|
outline: none;
|
|
242
244
|
background: var(--background);
|
|
243
245
|
overflow: inherit;
|
|
244
|
-
box-sizing: border-box;
|
|
245
246
|
z-index: 1;
|
|
247
|
+
box-sizing: border-box;
|
|
246
248
|
}
|
|
247
249
|
:host-context([dir=rtl]) .item-native {
|
|
248
250
|
padding-right: calc(var(--padding-start) + var(--ion-safe-area-right, 0px));
|
|
@@ -261,6 +263,10 @@
|
|
|
261
263
|
}
|
|
262
264
|
}
|
|
263
265
|
|
|
266
|
+
:host(.item-legacy) .item-native {
|
|
267
|
+
flex-wrap: unset;
|
|
268
|
+
}
|
|
269
|
+
|
|
264
270
|
.item-native::-moz-focus-inner {
|
|
265
271
|
border: 0;
|
|
266
272
|
}
|
|
@@ -296,10 +302,12 @@ button, a {
|
|
|
296
302
|
/* stylelint-enable */
|
|
297
303
|
display: flex;
|
|
298
304
|
position: relative;
|
|
299
|
-
flex: 1;
|
|
305
|
+
flex: 1 0 auto;
|
|
300
306
|
flex-direction: inherit;
|
|
307
|
+
flex-wrap: wrap;
|
|
301
308
|
align-items: inherit;
|
|
302
309
|
align-self: stretch;
|
|
310
|
+
max-width: 100%;
|
|
303
311
|
min-height: inherit;
|
|
304
312
|
border-width: var(--inner-border-width);
|
|
305
313
|
border-style: var(--border-style);
|
|
@@ -325,6 +333,12 @@ button, a {
|
|
|
325
333
|
}
|
|
326
334
|
}
|
|
327
335
|
|
|
336
|
+
:host(.item-legacy) .item-inner {
|
|
337
|
+
flex: 1;
|
|
338
|
+
flex-wrap: unset;
|
|
339
|
+
max-width: unset;
|
|
340
|
+
}
|
|
341
|
+
|
|
328
342
|
.item-bottom {
|
|
329
343
|
margin-left: 0;
|
|
330
344
|
margin-right: 0;
|
|
@@ -388,6 +402,7 @@ button, a {
|
|
|
388
402
|
|
|
389
403
|
::slotted(ion-label:not([slot=end])) {
|
|
390
404
|
flex: 1;
|
|
405
|
+
width: min-content;
|
|
391
406
|
}
|
|
392
407
|
|
|
393
408
|
:host(.item-input) {
|
|
@@ -396,15 +411,23 @@ button, a {
|
|
|
396
411
|
|
|
397
412
|
.input-wrapper {
|
|
398
413
|
display: flex;
|
|
399
|
-
flex: 1;
|
|
414
|
+
flex: 1 0 auto;
|
|
400
415
|
flex-direction: inherit;
|
|
416
|
+
flex-wrap: wrap;
|
|
401
417
|
align-items: inherit;
|
|
402
418
|
align-self: stretch;
|
|
419
|
+
max-width: 100%;
|
|
403
420
|
text-overflow: ellipsis;
|
|
404
421
|
overflow: inherit;
|
|
405
422
|
box-sizing: border-box;
|
|
406
423
|
}
|
|
407
424
|
|
|
425
|
+
:host(.item-legacy) .input-wrapper {
|
|
426
|
+
flex: 1;
|
|
427
|
+
flex-wrap: unset;
|
|
428
|
+
max-width: unset;
|
|
429
|
+
}
|
|
430
|
+
|
|
408
431
|
:host(.item-label-stacked),
|
|
409
432
|
:host(.item-label-floating) {
|
|
410
433
|
align-items: start;
|
|
@@ -126,6 +126,7 @@
|
|
|
126
126
|
-webkit-font-smoothing: antialiased;
|
|
127
127
|
display: block;
|
|
128
128
|
position: relative;
|
|
129
|
+
flex: 1;
|
|
129
130
|
align-items: center;
|
|
130
131
|
justify-content: space-between;
|
|
131
132
|
outline: none;
|
|
@@ -230,6 +231,7 @@
|
|
|
230
231
|
/* stylelint-enable */
|
|
231
232
|
display: flex;
|
|
232
233
|
position: relative;
|
|
234
|
+
flex-wrap: wrap;
|
|
233
235
|
align-items: inherit;
|
|
234
236
|
justify-content: inherit;
|
|
235
237
|
width: 100%;
|
|
@@ -241,8 +243,8 @@
|
|
|
241
243
|
outline: none;
|
|
242
244
|
background: var(--background);
|
|
243
245
|
overflow: inherit;
|
|
244
|
-
box-sizing: border-box;
|
|
245
246
|
z-index: 1;
|
|
247
|
+
box-sizing: border-box;
|
|
246
248
|
}
|
|
247
249
|
:host-context([dir=rtl]) .item-native {
|
|
248
250
|
padding-right: calc(var(--padding-start) + var(--ion-safe-area-right, 0px));
|
|
@@ -261,6 +263,10 @@
|
|
|
261
263
|
}
|
|
262
264
|
}
|
|
263
265
|
|
|
266
|
+
:host(.item-legacy) .item-native {
|
|
267
|
+
flex-wrap: unset;
|
|
268
|
+
}
|
|
269
|
+
|
|
264
270
|
.item-native::-moz-focus-inner {
|
|
265
271
|
border: 0;
|
|
266
272
|
}
|
|
@@ -296,10 +302,12 @@ button, a {
|
|
|
296
302
|
/* stylelint-enable */
|
|
297
303
|
display: flex;
|
|
298
304
|
position: relative;
|
|
299
|
-
flex: 1;
|
|
305
|
+
flex: 1 0 auto;
|
|
300
306
|
flex-direction: inherit;
|
|
307
|
+
flex-wrap: wrap;
|
|
301
308
|
align-items: inherit;
|
|
302
309
|
align-self: stretch;
|
|
310
|
+
max-width: 100%;
|
|
303
311
|
min-height: inherit;
|
|
304
312
|
border-width: var(--inner-border-width);
|
|
305
313
|
border-style: var(--border-style);
|
|
@@ -325,6 +333,12 @@ button, a {
|
|
|
325
333
|
}
|
|
326
334
|
}
|
|
327
335
|
|
|
336
|
+
:host(.item-legacy) .item-inner {
|
|
337
|
+
flex: 1;
|
|
338
|
+
flex-wrap: unset;
|
|
339
|
+
max-width: unset;
|
|
340
|
+
}
|
|
341
|
+
|
|
328
342
|
.item-bottom {
|
|
329
343
|
margin-left: 0;
|
|
330
344
|
margin-right: 0;
|
|
@@ -388,6 +402,7 @@ button, a {
|
|
|
388
402
|
|
|
389
403
|
::slotted(ion-label:not([slot=end])) {
|
|
390
404
|
flex: 1;
|
|
405
|
+
width: min-content;
|
|
391
406
|
}
|
|
392
407
|
|
|
393
408
|
:host(.item-input) {
|
|
@@ -396,15 +411,23 @@ button, a {
|
|
|
396
411
|
|
|
397
412
|
.input-wrapper {
|
|
398
413
|
display: flex;
|
|
399
|
-
flex: 1;
|
|
414
|
+
flex: 1 0 auto;
|
|
400
415
|
flex-direction: inherit;
|
|
416
|
+
flex-wrap: wrap;
|
|
401
417
|
align-items: inherit;
|
|
402
418
|
align-self: stretch;
|
|
419
|
+
max-width: 100%;
|
|
403
420
|
text-overflow: ellipsis;
|
|
404
421
|
overflow: inherit;
|
|
405
422
|
box-sizing: border-box;
|
|
406
423
|
}
|
|
407
424
|
|
|
425
|
+
:host(.item-legacy) .input-wrapper {
|
|
426
|
+
flex: 1;
|
|
427
|
+
flex-wrap: unset;
|
|
428
|
+
max-width: unset;
|
|
429
|
+
}
|
|
430
|
+
|
|
408
431
|
:host(.item-label-stacked),
|
|
409
432
|
:host(.item-label-floating) {
|
|
410
433
|
align-items: start;
|
|
@@ -29,7 +29,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|
|
29
29
|
</ion-item>
|
|
30
30
|
|
|
31
31
|
<ion-item>
|
|
32
|
-
<ion-label> Single line text that should have ellipses when it doesn't all fit in the item</ion-label>
|
|
32
|
+
<ion-label class="ion-text-nowrap"> Single line text that should have ellipses when it doesn't all fit in the item</ion-label>
|
|
33
33
|
</ion-item>
|
|
34
34
|
</ion-list>
|
|
35
35
|
`, config);
|
|
@@ -11,7 +11,6 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
11
11
|
test('should not have visual regressions', async ({ page }) => {
|
|
12
12
|
await page.goto(`/src/components/item/test/disabled`, config);
|
|
13
13
|
await page.setIonViewport();
|
|
14
|
-
// TODO: FW-4037 - Fix label color inconsistency between disabled controls
|
|
15
14
|
await expect(page).toHaveScreenshot(screenshot(`item-disabled-diff`));
|
|
16
15
|
});
|
|
17
16
|
});
|
|
@@ -63,17 +63,24 @@
|
|
|
63
63
|
font-family: var(--ion-font-family, inherit);
|
|
64
64
|
font-size: inherit;
|
|
65
65
|
text-overflow: ellipsis;
|
|
66
|
+
box-sizing: border-box;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
:host-context(.item-legacy) {
|
|
66
70
|
white-space: nowrap;
|
|
67
71
|
overflow: hidden;
|
|
68
|
-
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
:host-context(.item:not(.item-input):not(.item-legacy)) {
|
|
75
|
+
flex-grow: 1;
|
|
69
76
|
}
|
|
70
77
|
|
|
71
78
|
:host(.ion-color) {
|
|
72
79
|
color: var(--ion-color-base);
|
|
73
80
|
}
|
|
74
81
|
|
|
75
|
-
:host(.ion-text-
|
|
76
|
-
|
|
82
|
+
:host(.ion-text-nowrap) {
|
|
83
|
+
overflow: hidden;
|
|
77
84
|
}
|
|
78
85
|
|
|
79
86
|
:host-context(.item-interactive-disabled:not(.item-multiple-inputs)) {
|
|
@@ -92,6 +99,10 @@
|
|
|
92
99
|
align-self: baseline;
|
|
93
100
|
}
|
|
94
101
|
|
|
102
|
+
:host-context(.item-skeleton-text) {
|
|
103
|
+
overflow: hidden;
|
|
104
|
+
}
|
|
105
|
+
|
|
95
106
|
:host(.label-fixed) {
|
|
96
107
|
flex: 0 0 100px;
|
|
97
108
|
width: 100px;
|
|
@@ -63,17 +63,24 @@
|
|
|
63
63
|
font-family: var(--ion-font-family, inherit);
|
|
64
64
|
font-size: inherit;
|
|
65
65
|
text-overflow: ellipsis;
|
|
66
|
+
box-sizing: border-box;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
:host-context(.item-legacy) {
|
|
66
70
|
white-space: nowrap;
|
|
67
71
|
overflow: hidden;
|
|
68
|
-
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
:host-context(.item:not(.item-input):not(.item-legacy)) {
|
|
75
|
+
flex-grow: 1;
|
|
69
76
|
}
|
|
70
77
|
|
|
71
78
|
:host(.ion-color) {
|
|
72
79
|
color: var(--ion-color-base);
|
|
73
80
|
}
|
|
74
81
|
|
|
75
|
-
:host(.ion-text-
|
|
76
|
-
|
|
82
|
+
:host(.ion-text-nowrap) {
|
|
83
|
+
overflow: hidden;
|
|
77
84
|
}
|
|
78
85
|
|
|
79
86
|
:host-context(.item-interactive-disabled:not(.item-multiple-inputs)) {
|
|
@@ -92,6 +99,10 @@
|
|
|
92
99
|
align-self: baseline;
|
|
93
100
|
}
|
|
94
101
|
|
|
102
|
+
:host-context(.item-skeleton-text) {
|
|
103
|
+
overflow: hidden;
|
|
104
|
+
}
|
|
105
|
+
|
|
95
106
|
:host(.label-fixed) {
|
|
96
107
|
flex: 0 0 100px;
|
|
97
108
|
width: 100px;
|
|
@@ -5,6 +5,7 @@ import { getTimeGivenProgression } from "../../../utils/animation/cubic-bezier";
|
|
|
5
5
|
import { isIonContent, findClosestIonContent, disableContentScrollY, resetContentScrollY } from "../../../utils/content/index";
|
|
6
6
|
import { createGesture } from "../../../utils/gesture/index";
|
|
7
7
|
import { clamp, getElementRoot } from "../../../utils/helpers";
|
|
8
|
+
import { OVERLAY_GESTURE_PRIORITY } from "../../../utils/overlays";
|
|
8
9
|
import { setCardStatusBarDark, setCardStatusBarDefault } from "../utils";
|
|
9
10
|
import { calculateSpringStep, handleCanDismiss } from "./utils";
|
|
10
11
|
// Defaults for the card swipe animation
|
|
@@ -250,7 +251,7 @@ export const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismi
|
|
|
250
251
|
const gesture = createGesture({
|
|
251
252
|
el,
|
|
252
253
|
gestureName: 'modalSwipeToClose',
|
|
253
|
-
gesturePriority:
|
|
254
|
+
gesturePriority: OVERLAY_GESTURE_PRIORITY,
|
|
254
255
|
direction: 'y',
|
|
255
256
|
threshold: 10,
|
|
256
257
|
canStart,
|
|
@@ -48,5 +48,48 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
48
48
|
const note = page.locator('ion-note');
|
|
49
49
|
await expect(note).toHaveScreenshot(screenshot(`note-item-divider-scale`));
|
|
50
50
|
});
|
|
51
|
+
test('should wrap label to the next line without truncating', async ({ page }) => {
|
|
52
|
+
await page.setContent(`
|
|
53
|
+
<style>
|
|
54
|
+
html {
|
|
55
|
+
font-size: 310%;
|
|
56
|
+
}
|
|
57
|
+
</style>
|
|
58
|
+
|
|
59
|
+
<ion-list>
|
|
60
|
+
<ion-item>
|
|
61
|
+
<ion-note slot="start">Really really long note</ion-note>
|
|
62
|
+
<ion-label>Label</ion-label>
|
|
63
|
+
</ion-item>
|
|
64
|
+
|
|
65
|
+
<ion-item>
|
|
66
|
+
<ion-label>Label</ion-label>
|
|
67
|
+
<ion-note slot="end">Really really long note</ion-note>
|
|
68
|
+
</ion-item>
|
|
69
|
+
|
|
70
|
+
<ion-item>
|
|
71
|
+
<ion-note slot="start">Note</ion-note>
|
|
72
|
+
<ion-label>Really really long label</ion-label>
|
|
73
|
+
</ion-item>
|
|
74
|
+
|
|
75
|
+
<ion-item>
|
|
76
|
+
<ion-label>Really really long label</ion-label>
|
|
77
|
+
<ion-note slot="end">Note</ion-note>
|
|
78
|
+
</ion-item>
|
|
79
|
+
|
|
80
|
+
<ion-item>
|
|
81
|
+
<ion-note slot="start">Really really long note</ion-note>
|
|
82
|
+
<ion-label>Really really long label</ion-label>
|
|
83
|
+
</ion-item>
|
|
84
|
+
|
|
85
|
+
<ion-item>
|
|
86
|
+
<ion-label>Really really long label</ion-label>
|
|
87
|
+
<ion-note slot="end">Really really long note</ion-note>
|
|
88
|
+
</ion-item>
|
|
89
|
+
</ion-list>
|
|
90
|
+
`, config);
|
|
91
|
+
const list = page.locator('ion-list');
|
|
92
|
+
await expect(list).toHaveScreenshot(screenshot(`note-wrapping-label-scale`));
|
|
93
|
+
});
|
|
51
94
|
});
|
|
52
95
|
});
|