@ionic/core 7.5.8-dev.11702664817.19cab605 → 7.5.8-dev.11704294569.1abc989d
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/action-sheet.js +1 -1
- package/components/alert.js +2 -2
- package/components/button.js +2 -2
- package/components/checkbox.js +2 -2
- package/components/data.js +1 -1
- package/components/ion-back-button.js +1 -1
- package/components/ion-badge.js +2 -2
- package/components/ion-content.js +2 -3
- package/components/ion-datetime.js +30 -39
- package/components/ion-fab-button.js +2 -2
- package/components/ion-input.js +2 -2
- package/components/ion-item-option.js +2 -2
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- 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 +309 -1
- package/components/ion-progress-bar.js +2 -2
- package/components/ion-range.js +2 -2
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-router-link.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-select.js +2 -2
- package/components/ion-tab-bar.js +2 -2
- package/components/ion-textarea.js +2 -2
- package/components/ion-title.js +1 -22
- package/components/ion-toast.js +2 -2
- package/components/ion-toggle.js +2 -2
- package/components/item.js +2 -2
- package/components/label.js +1 -1
- package/components/overlays.js +3 -6
- package/components/picker-column-internal.js +390 -0
- package/components/picker-column.js +322 -351
- package/components/{picker.js → picker-internal.js} +22 -29
- package/components/radio.js +2 -2
- package/components/select-popover.js +1 -1
- package/css/core.css +35 -34
- package/css/core.css.map +1 -1
- package/css/global.bundle.css +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/css/themes/dark.always.css +122 -0
- package/css/themes/dark.always.css.map +1 -0
- package/css/themes/dark.class.css +122 -0
- package/css/themes/dark.class.css.map +1 -0
- package/css/themes/dark.css +3 -0
- package/css/themes/dark.css.map +1 -0
- package/css/themes/dark.system.css +124 -0
- package/css/themes/dark.system.css.map +1 -0
- package/css/typography.css +1 -1
- package/dist/cjs/{data-e7526b58.js → data-36b9094e.js} +1 -1
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/ion-action-sheet.cjs.entry.js +2 -2
- package/dist/cjs/ion-alert.cjs.entry.js +3 -3
- package/dist/cjs/ion-app_8.cjs.entry.js +4 -25
- package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-back-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +36 -30
- package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-input.cjs.entry.js +2 -2
- package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-item_8.cjs.entry.js +3 -3
- package/dist/cjs/ion-loading.cjs.entry.js +2 -2
- package/dist/cjs/ion-menu_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-modal.cjs.entry.js +1 -1
- package/dist/cjs/{ion-picker-column.cjs.entry.js → ion-picker-column-internal.cjs.entry.js} +87 -104
- package/dist/cjs/{ion-picker.cjs.entry.js → ion-picker-internal.cjs.entry.js} +19 -26
- package/dist/cjs/ion-popover.cjs.entry.js +1 -1
- package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
- package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-range.cjs.entry.js +2 -2
- package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-route_4.cjs.entry.js +1 -1
- package/dist/cjs/ion-searchbar.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-select_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
- package/dist/cjs/ion-toast.cjs.entry.js +3 -3
- package/dist/cjs/ion-toggle.cjs.entry.js +2 -2
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{overlays-e8e05b0e.js → overlays-2c6b1072.js} +3 -6
- package/dist/collection/collection-manifest.json +8 -9
- package/dist/collection/components/action-sheet/action-sheet.ios.css +3 -3
- package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +23 -14
- package/dist/collection/components/alert/alert.ios.css +6 -6
- package/dist/collection/components/alert/alert.md.css +6 -6
- package/dist/collection/components/alert/test/a11y/alert.e2e.js +22 -9
- package/dist/collection/components/back-button/back-button.ios.css +1 -1
- package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +21 -0
- package/dist/collection/components/badge/badge.ios.css +1 -1
- package/dist/collection/components/badge/badge.md.css +1 -1
- package/dist/collection/components/badge/test/a11y/badge.e2e.js +18 -0
- package/dist/collection/components/button/button.ios.css +11 -11
- package/dist/collection/components/button/button.md.css +9 -9
- package/dist/collection/components/button/test/a11y/button.e2e.js +48 -0
- package/dist/collection/components/button/test/wrap/button.e2e.js +24 -12
- package/dist/collection/components/checkbox/checkbox.ios.css +2 -2
- package/dist/collection/components/checkbox/checkbox.md.css +2 -2
- package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +11 -2
- package/dist/collection/components/content/content.js +2 -3
- package/dist/collection/components/datetime/datetime.ios.css +13 -8
- package/dist/collection/components/datetime/datetime.js +16 -19
- package/dist/collection/components/datetime/datetime.md.css +13 -8
- package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
- package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
- package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +41 -43
- 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 +12 -15
- package/dist/collection/components/datetime/utils/data.js +1 -1
- package/dist/collection/components/fab-button/fab-button.ios.css +13 -13
- package/dist/collection/components/fab-button/fab-button.md.css +4 -4
- package/dist/collection/components/fab-button/test/a11y/fab-button.e2e.js +50 -0
- package/dist/collection/components/input/input.ios.css +3 -3
- package/dist/collection/components/input/input.md.css +3 -3
- package/dist/collection/components/input/test/a11y/input.e2e.js +35 -3
- package/dist/collection/components/item/item.ios.css +3 -3
- package/dist/collection/components/item/item.md.css +4 -4
- package/dist/collection/components/item-option/item-option.ios.css +2 -2
- package/dist/collection/components/item-option/item-option.md.css +1 -1
- package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +28 -0
- package/dist/collection/components/label/label.md.css +1 -1
- package/dist/collection/components/label/test/a11y/label.e2e.js +20 -0
- package/dist/collection/components/loading/loading.md.css +1 -1
- package/dist/collection/components/loading/test/a11y/loading.e2e.js +21 -5
- package/dist/collection/components/menu-button/menu-button.ios.css +1 -1
- package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +14 -0
- package/dist/collection/components/picker/picker.ios.css +211 -112
- package/dist/collection/components/picker/picker.js +744 -472
- package/dist/collection/components/picker/picker.md.css +198 -108
- package/dist/collection/components/picker/test/basic/picker.e2e.js +13 -99
- 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.js +335 -497
- package/dist/collection/components/{picker-legacy-column → picker-column}/picker-column.md.css +1 -1
- 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-option/picker-column-option.md.css → picker-column-internal/picker-column-internal.ios.css} +53 -6
- package/dist/collection/components/picker-column-internal/picker-column-internal.js +565 -0
- package/dist/collection/components/{picker-column/picker-column.css → picker-column-internal/picker-column-internal.md.css} +83 -96
- package/dist/collection/components/{picker-column/test/basic/picker-column.e2e.js → picker-column-internal/test/basic/picker-column-internal.e2e.js} +8 -8
- package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +162 -0
- 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/picker.ios.css → picker-internal/picker-internal.md.css} +98 -207
- package/dist/collection/components/picker-internal/test/a11y/picker-internal.e2e.js +31 -0
- 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} +32 -63
- package/dist/collection/components/progress-bar/progress-bar.ios.css +2 -2
- package/dist/collection/components/progress-bar/progress-bar.md.css +2 -2
- package/dist/collection/components/progress-bar/test/a11y/progress-bar.e2e.js +24 -0
- package/dist/collection/components/radio/radio.ios.css +2 -2
- package/dist/collection/components/radio/radio.md.css +2 -2
- package/dist/collection/components/radio/test/a11y/radio.e2e.js +44 -6
- package/dist/collection/components/range/range.ios.css +1 -1
- package/dist/collection/components/range/range.md.css +3 -3
- package/dist/collection/components/range/test/a11y/range.e2e.js +18 -8
- package/dist/collection/components/refresher/refresher.md.css +2 -2
- package/dist/collection/components/refresher/test/a11y/refresher.e2e.js +25 -0
- package/dist/collection/components/refresher-content/refresher-content.js +1 -1
- package/dist/collection/components/router-link/router-link.css +1 -1
- package/dist/collection/components/router-link/test/a11y/router-link.e2e.js +23 -0
- package/dist/collection/components/searchbar/searchbar.ios.css +1 -1
- package/dist/collection/components/segment/test/a11y/segment.e2e.js +23 -0
- package/dist/collection/components/segment-button/segment-button.md.css +2 -2
- package/dist/collection/components/select/select.ios.css +3 -3
- package/dist/collection/components/select/select.md.css +3 -3
- package/dist/collection/components/select/test/a11y/select.e2e.js +59 -4
- package/dist/collection/components/select-popover/select-popover.md.css +4 -4
- package/dist/collection/components/select-popover/test/a11y/select-popover.e2e.js +32 -0
- package/dist/collection/components/tab-bar/tab-bar.ios.css +1 -1
- package/dist/collection/components/tab-bar/tab-bar.md.css +1 -1
- package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +35 -3
- package/dist/collection/components/textarea/textarea.ios.css +3 -3
- package/dist/collection/components/textarea/textarea.md.css +3 -3
- package/dist/collection/components/title/test/a11y/title.e2e.js +0 -39
- package/dist/collection/components/title/title.js +1 -22
- package/dist/collection/components/toast/test/a11y/toast.e2e.js +56 -24
- package/dist/collection/components/toast/toast.ios.css +1 -1
- package/dist/collection/components/toast/toast.md.css +2 -2
- package/dist/collection/components/toggle/test/a11y/toggle.e2e.js +8 -2
- package/dist/collection/components/toggle/toggle.ios.css +1 -1
- package/dist/collection/components/toggle/toggle.md.css +2 -2
- package/dist/collection/css/test/a11y/typography.e2e.js +18 -0
- package/dist/collection/themes/test/colors/theme.e2e.js +114 -0
- package/dist/collection/utils/overlays.js +3 -6
- package/dist/collection/utils/test/playwright/generator.js +1 -0
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
- package/dist/docs.json +24 -472
- package/dist/esm/{data-4b9508c9.js → data-f5c75b4e.js} +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/ion-action-sheet.entry.js +2 -2
- package/dist/esm/ion-alert.entry.js +3 -3
- package/dist/esm/ion-app_8.entry.js +4 -25
- package/dist/esm/ion-avatar_3.entry.js +2 -2
- package/dist/esm/ion-back-button.entry.js +1 -1
- package/dist/esm/ion-button_2.entry.js +2 -2
- package/dist/esm/ion-checkbox.entry.js +2 -2
- package/dist/esm/ion-datetime-button.entry.js +1 -1
- package/dist/esm/ion-datetime_3.entry.js +35 -29
- package/dist/esm/ion-fab_3.entry.js +2 -2
- package/dist/esm/ion-input.entry.js +2 -2
- package/dist/esm/ion-item-option_3.entry.js +2 -2
- package/dist/esm/ion-item_8.entry.js +3 -3
- package/dist/esm/ion-loading.entry.js +2 -2
- package/dist/esm/ion-menu_3.entry.js +2 -2
- package/dist/esm/ion-modal.entry.js +1 -1
- package/dist/esm/{ion-picker-column.entry.js → ion-picker-column-internal.entry.js} +87 -104
- package/dist/esm/{ion-picker.entry.js → ion-picker-internal.entry.js} +19 -26
- package/dist/esm/ion-popover.entry.js +1 -1
- package/dist/esm/ion-progress-bar.entry.js +2 -2
- package/dist/esm/ion-radio_2.entry.js +2 -2
- package/dist/esm/ion-range.entry.js +2 -2
- package/dist/esm/ion-refresher_2.entry.js +2 -2
- package/dist/esm/ion-route_4.entry.js +1 -1
- package/dist/esm/ion-searchbar.entry.js +1 -1
- package/dist/esm/ion-segment_2.entry.js +1 -1
- package/dist/esm/ion-select_3.entry.js +4 -4
- package/dist/esm/ion-tab-bar_2.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +2 -2
- package/dist/esm/ion-toast.entry.js +3 -3
- package/dist/esm/ion-toggle.entry.js +2 -2
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{overlays-fbc5cab5.js → overlays-d23ea6e1.js} +3 -6
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
- package/dist/esm-es5/ion-alert.entry.js +1 -1
- package/dist/esm-es5/ion-app_8.entry.js +1 -1
- package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
- package/dist/esm-es5/ion-back-button.entry.js +1 -1
- package/dist/esm-es5/ion-button_2.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-fab_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-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-progress-bar.entry.js +1 -1
- package/dist/esm-es5/ion-radio_2.entry.js +1 -1
- package/dist/esm-es5/ion-range.entry.js +1 -1
- package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
- package/dist/esm-es5/ion-route_4.entry.js +1 -1
- package/dist/esm-es5/ion-searchbar.entry.js +1 -1
- package/dist/esm-es5/ion-segment_2.entry.js +1 -1
- package/dist/esm-es5/ion-select_3.entry.js +1 -1
- package/dist/esm-es5/ion-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/loader.js +1 -1
- package/dist/esm-es5/overlays-d23ea6e1.js +4 -0
- package/dist/html.html-data.json +1 -152
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-4911a5d6.entry.js → p-023b1cf4.entry.js} +1 -1
- package/dist/ionic/{p-232d1f22.entry.js → p-02e066a0.entry.js} +1 -1
- package/dist/ionic/{p-3fd26bd6.system.entry.js → p-0339b688.system.entry.js} +1 -1
- package/dist/ionic/{p-6d72fb44.entry.js → p-0941a5d7.entry.js} +1 -1
- package/dist/ionic/{p-ab9456e9.system.entry.js → p-098f4d12.system.entry.js} +1 -1
- package/dist/ionic/{p-73190c5f.entry.js → p-0afef6b9.entry.js} +1 -1
- package/dist/ionic/{p-51a087d6.entry.js → p-0ebcff25.entry.js} +1 -1
- package/dist/ionic/{p-34c39c48.entry.js → p-1286049a.entry.js} +1 -1
- package/dist/ionic/{p-5bebc7b3.system.entry.js → p-12869199.system.entry.js} +1 -1
- package/dist/ionic/{p-fbf3a689.system.entry.js → p-193ff029.system.entry.js} +1 -1
- package/dist/ionic/{p-22e5af95.entry.js → p-1de103b7.entry.js} +1 -1
- package/dist/ionic/{p-846ee227.entry.js → p-1e57bd24.entry.js} +1 -1
- package/dist/ionic/{p-21c3515a.entry.js → p-29bf41bd.entry.js} +1 -1
- package/dist/ionic/p-2dd0355d.system.entry.js +4 -0
- package/dist/ionic/{p-4a36430f.system.entry.js → p-2f2293da.system.entry.js} +1 -1
- package/dist/ionic/{p-ea69616e.entry.js → p-31cf9613.entry.js} +1 -1
- package/dist/ionic/{p-4a081ea9.entry.js → p-3b568d18.entry.js} +1 -1
- package/dist/ionic/p-3e13501a.system.entry.js +4 -0
- package/dist/ionic/{p-93000a81.system.entry.js → p-3e625023.system.entry.js} +1 -1
- package/dist/ionic/{p-3f6270b3.entry.js → p-55a0cd33.entry.js} +1 -1
- package/dist/ionic/{p-a8baa23e.entry.js → p-57798ba6.entry.js} +1 -1
- package/dist/ionic/{p-7b725280.entry.js → p-5b20db28.entry.js} +1 -1
- package/dist/ionic/{p-5d42b6b4.entry.js → p-5b834053.entry.js} +1 -1
- package/dist/ionic/{p-8f5d30f5.entry.js → p-5fbfa8c9.entry.js} +1 -1
- package/dist/ionic/p-5ff60387.system.entry.js +4 -0
- package/dist/ionic/{p-563c41f0.system.entry.js → p-60b386c9.system.entry.js} +1 -1
- package/dist/ionic/p-67da080d.entry.js +4 -0
- package/dist/ionic/{p-2ab4e925.system.entry.js → p-6f96f7b1.system.entry.js} +1 -1
- package/dist/ionic/p-73ea8f82.system.entry.js +4 -0
- package/dist/ionic/{p-c9a21dfd.system.entry.js → p-76c94634.system.entry.js} +1 -1
- package/dist/ionic/{p-b752714f.system.entry.js → p-7828a27f.system.entry.js} +1 -1
- package/dist/ionic/{p-4bee86bd.entry.js → p-7a63e024.entry.js} +1 -1
- package/dist/ionic/{p-4a31c99f.entry.js → p-7c7e21a7.entry.js} +1 -1
- package/dist/ionic/p-80fa068e.entry.js +4 -0
- package/dist/ionic/{p-26798a7b.system.entry.js → p-8e086176.system.entry.js} +1 -1
- package/dist/ionic/{p-96dbbac1.system.entry.js → p-90483001.system.entry.js} +1 -1
- package/dist/ionic/{p-e8e86f69.system.entry.js → p-93f25d0d.system.entry.js} +1 -1
- package/dist/ionic/{p-a9a80f5b.entry.js → p-9588396d.entry.js} +1 -1
- package/dist/ionic/{p-32303650.system.entry.js → p-98c798de.system.entry.js} +1 -1
- package/dist/ionic/p-9eae578e.system.entry.js +4 -0
- package/dist/ionic/{p-f910cc73.system.entry.js → p-9eec42cc.system.entry.js} +1 -1
- package/dist/ionic/{p-a225bf0f.system.entry.js → p-a8e90d15.system.entry.js} +1 -1
- package/dist/ionic/p-ab11130c.system.js +4 -0
- package/dist/ionic/{p-6fd64e7c.system.entry.js → p-ad8bed54.system.entry.js} +1 -1
- package/dist/ionic/{p-27bcbbc7.system.entry.js → p-b1a2a195.system.entry.js} +1 -1
- package/dist/ionic/{p-a98dc0c1.entry.js → p-bcd073dd.entry.js} +1 -1
- package/dist/ionic/{p-18ba8221.entry.js → p-be6344dd.entry.js} +1 -1
- package/dist/ionic/p-c14f8ac8.js +4 -0
- package/dist/ionic/{p-73aa7604.entry.js → p-c7c7c110.entry.js} +1 -1
- package/dist/ionic/p-c9e07b2f.entry.js +4 -0
- package/dist/ionic/p-ccc2fb62.system.entry.js +4 -0
- package/dist/ionic/p-cce9f61a.system.entry.js +4 -0
- package/dist/ionic/{p-6b7c55cd.entry.js → p-cef8c5c2.entry.js} +1 -1
- package/dist/ionic/{p-6fbecbda.entry.js → p-d1025b3d.entry.js} +1 -1
- package/dist/ionic/{p-b4d31b30.system.entry.js → p-d32188f3.system.entry.js} +1 -1
- package/dist/ionic/{p-ef126ae8.system.entry.js → p-d39db09e.system.entry.js} +1 -1
- package/dist/ionic/{p-42ba3902.entry.js → p-d51019a8.entry.js} +1 -1
- package/dist/ionic/p-d7e9a0ac.entry.js +4 -0
- package/dist/ionic/{p-b133e9b4.entry.js → p-ddb30596.entry.js} +1 -1
- package/dist/ionic/{p-8017aad2.system.entry.js → p-de74582b.system.entry.js} +1 -1
- package/dist/ionic/p-e3584231.system.js +1 -1
- package/dist/ionic/p-ebcf6eca.entry.js +4 -0
- package/dist/ionic/{p-c18de88a.system.entry.js → p-ec040c06.system.entry.js} +1 -1
- package/dist/ionic/{p-464975c5.system.entry.js → p-ed25b7cc.system.entry.js} +1 -1
- package/dist/ionic/{p-e7ea9815.system.entry.js → p-f957d584.system.entry.js} +1 -1
- package/dist/ionic/{p-54dfc9b5.system.js → p-fff7a57e.system.js} +1 -1
- package/dist/types/components/datetime/utils/data.d.ts +7 -11
- package/dist/types/components/picker/picker.d.ts +129 -75
- package/dist/types/components/picker-column/picker-column.d.ts +39 -99
- package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +5 -0
- 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.d.ts +122 -154
- package/dist/types/interface.d.ts +1 -1
- package/dist/types/utils/config.d.ts +2 -2
- package/dist/types/utils/overlays.d.ts +2 -5
- package/hydrate/index.js +1205 -1350
- package/package.json +1 -1
- package/components/ion-picker-column-option.d.ts +0 -11
- package/components/ion-picker-column-option.js +0 -9
- 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-column-option.js +0 -122
- package/components/picker-column2.js +0 -379
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +0 -104
- package/dist/collection/components/picker/test/a11y/picker.e2e.js +0 -15
- package/dist/collection/components/picker/test/custom/picker.e2e.js +0 -85
- package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +0 -91
- package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +0 -39
- package/dist/collection/components/picker-column-option/picker-column-option.ios.css +0 -87
- package/dist/collection/components/picker-column-option/picker-column-option.js +0 -173
- package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +0 -18
- package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +0 -37
- package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +0 -29
- 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/components/title/test/title.spec.js +0 -132
- package/dist/esm/ion-picker-column-option.entry.js +0 -100
- 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/overlays-fbc5cab5.js +0 -4
- package/dist/ionic/p-17da5ed1.entry.js +0 -4
- package/dist/ionic/p-36d194c5.entry.js +0 -4
- package/dist/ionic/p-3993ae66.entry.js +0 -4
- package/dist/ionic/p-5a1aac13.system.entry.js +0 -4
- package/dist/ionic/p-6e70dd1a.system.entry.js +0 -4
- package/dist/ionic/p-8e42850f.entry.js +0 -4
- package/dist/ionic/p-8fa6583d.system.js +0 -4
- package/dist/ionic/p-91af3c52.system.entry.js +0 -4
- package/dist/ionic/p-afcf4620.entry.js +0 -4
- package/dist/ionic/p-b3d0a3d6.system.entry.js +0 -4
- package/dist/ionic/p-b7010c69.system.entry.js +0 -4
- package/dist/ionic/p-c41bff4e.system.entry.js +0 -4
- package/dist/ionic/p-ca8938f4.js +0 -4
- package/dist/ionic/p-cde52378.system.entry.js +0 -4
- package/dist/ionic/p-ea74e0c6.entry.js +0 -4
- package/dist/ionic/p-ffd5dba4.system.entry.js +0 -4
- package/dist/types/components/picker/picker-interfaces.d.ts +0 -8
- package/dist/types/components/picker-column/picker-column-interfaces.d.ts +0 -4
- package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -66
- 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}/picker-column.ios.css +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-4b9508c9.js → data-f5c75b4e.js} +0 -0
- /package/dist/ionic/{p-368f5215.js → p-2aea8b1e.js} +0 -0
- /package/dist/ionic/{p-f58981c2.system.js → p-82e3d633.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
|
@@ -60,7 +60,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
60
60
|
<ion-datetime presentation="date" prefer-wheel="true" min="2019-05-05" max="2023-10-01" value="2019-05-30"></ion-datetime>
|
|
61
61
|
`, config);
|
|
62
62
|
await page.waitForSelector('.datetime-ready');
|
|
63
|
-
const dayValues = page.locator('ion-datetime .day-column
|
|
63
|
+
const dayValues = page.locator('ion-datetime .day-column .picker-item[data-value]');
|
|
64
64
|
expect(await dayValues.count()).toEqual(27);
|
|
65
65
|
});
|
|
66
66
|
test('should respect the max bounds', async ({ page }) => {
|
|
@@ -68,7 +68,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
68
68
|
<ion-datetime presentation="date" prefer-wheel="true" min="2019-05-05" max="2023-10-01" value="2023-10-01"></ion-datetime>
|
|
69
69
|
`, config);
|
|
70
70
|
await page.waitForSelector('.datetime-ready');
|
|
71
|
-
const dayValues = page.locator('ion-datetime .day-column
|
|
71
|
+
const dayValues = page.locator('ion-datetime .day-column .picker-item[data-value]');
|
|
72
72
|
expect(await dayValues.count()).toEqual(1);
|
|
73
73
|
});
|
|
74
74
|
test('should respect isDateEnabled preference', async ({ page }) => {
|
|
@@ -86,9 +86,9 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
86
86
|
</script>
|
|
87
87
|
`, config);
|
|
88
88
|
await page.waitForSelector('.datetime-ready');
|
|
89
|
-
const disabledMonths = page.locator('.month-column
|
|
90
|
-
const disabledYears = page.locator('.year-column
|
|
91
|
-
const disabledDays = page.locator('.day-column
|
|
89
|
+
const disabledMonths = page.locator('.month-column .picker-item[disabled]');
|
|
90
|
+
const disabledYears = page.locator('.year-column .picker-item[disabled]');
|
|
91
|
+
const disabledDays = page.locator('.day-column .picker-item[disabled]');
|
|
92
92
|
expect(await disabledMonths.count()).toBe(0);
|
|
93
93
|
expect(await disabledYears.count()).toBe(0);
|
|
94
94
|
expect(await disabledDays.count()).toBe(15);
|
|
@@ -105,9 +105,9 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
105
105
|
></ion-datetime>
|
|
106
106
|
`, config);
|
|
107
107
|
await page.waitForSelector('.datetime-ready');
|
|
108
|
-
const monthValues = page.locator('.month-column
|
|
109
|
-
const yearValues = page.locator('.year-column
|
|
110
|
-
const dayValues = page.locator('.day-column
|
|
108
|
+
const monthValues = page.locator('.month-column .picker-item:not(.picker-item-empty)');
|
|
109
|
+
const yearValues = page.locator('.year-column .picker-item:not(.picker-item-empty)');
|
|
110
|
+
const dayValues = page.locator('.day-column .picker-item:not(.picker-item-empty)');
|
|
111
111
|
expect(await monthValues.count()).toBe(2);
|
|
112
112
|
expect(await yearValues.count()).toBe(3);
|
|
113
113
|
expect(await dayValues.count()).toBe(5);
|
|
@@ -134,7 +134,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
134
134
|
`, config);
|
|
135
135
|
await page.waitForSelector('.datetime-ready');
|
|
136
136
|
const ionChange = await page.spyOnEvent('ionChange');
|
|
137
|
-
const monthValues = page.locator('.month-column
|
|
137
|
+
const monthValues = page.locator('.month-column .picker-item:not(.picker-item-empty)');
|
|
138
138
|
// Change month value
|
|
139
139
|
await monthValues.nth(0).click();
|
|
140
140
|
await ionChange.next();
|
|
@@ -161,7 +161,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
161
161
|
`, config);
|
|
162
162
|
await page.waitForSelector('.datetime-ready');
|
|
163
163
|
const ionChange = await page.spyOnEvent('ionChange');
|
|
164
|
-
const dayValues = page.locator('.day-column
|
|
164
|
+
const dayValues = page.locator('.day-column .picker-item:not(.picker-item-empty)');
|
|
165
165
|
// Change day value
|
|
166
166
|
await dayValues.nth(0).click();
|
|
167
167
|
await ionChange.next();
|
|
@@ -175,7 +175,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
175
175
|
`, config);
|
|
176
176
|
await page.waitForSelector('.datetime-ready');
|
|
177
177
|
const ionChange = await page.spyOnEvent('ionChange');
|
|
178
|
-
const yearValues = page.locator('.year-column
|
|
178
|
+
const yearValues = page.locator('.year-column .picker-item:not(.picker-item-empty)');
|
|
179
179
|
/**
|
|
180
180
|
* Change year value
|
|
181
181
|
* The 0th index is the current
|
|
@@ -192,9 +192,9 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
192
192
|
const datetime = page.locator('ion-datetime');
|
|
193
193
|
await datetime.evaluate((el) => (el.value = '2021-05-25T12:40:00.000Z'));
|
|
194
194
|
await page.waitForChanges();
|
|
195
|
-
const selectedMonth = datetime.locator('.month-column
|
|
196
|
-
const selectedDay = datetime.locator('.day-column
|
|
197
|
-
const selectedYear = datetime.locator('.year-column
|
|
195
|
+
const selectedMonth = datetime.locator('.month-column .picker-item-active');
|
|
196
|
+
const selectedDay = datetime.locator('.day-column .picker-item-active');
|
|
197
|
+
const selectedYear = datetime.locator('.year-column .picker-item-active');
|
|
198
198
|
await expect(selectedMonth).toHaveText(/May/);
|
|
199
199
|
await expect(selectedDay).toHaveText(/25/);
|
|
200
200
|
await expect(selectedYear).toHaveText(/2021/);
|
|
@@ -213,8 +213,8 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
213
213
|
></ion-datetime>
|
|
214
214
|
`, config);
|
|
215
215
|
await page.waitForSelector('.datetime-ready');
|
|
216
|
-
const monthValues = page.locator('.month-column
|
|
217
|
-
const dayValues = page.locator('.day-column
|
|
216
|
+
const monthValues = page.locator('.month-column .picker-item:not(.picker-item-empty)');
|
|
217
|
+
const dayValues = page.locator('.day-column .picker-item:not(.picker-item-empty)');
|
|
218
218
|
await expect(monthValues).toHaveText(['1月', '2月', '3月']);
|
|
219
219
|
await expect(dayValues).toHaveText(['1日', '2日', '3日']);
|
|
220
220
|
});
|
|
@@ -228,7 +228,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
228
228
|
></ion-datetime>
|
|
229
229
|
`, config);
|
|
230
230
|
await page.waitForSelector('.datetime-ready');
|
|
231
|
-
const columns = page.locator('ion-picker-column');
|
|
231
|
+
const columns = page.locator('ion-picker-column-internal');
|
|
232
232
|
await expect(columns.nth(0)).toHaveClass(/month-column/);
|
|
233
233
|
await expect(columns.nth(1)).toHaveClass(/day-column/);
|
|
234
234
|
await expect(columns.nth(2)).toHaveClass(/year-column/);
|
|
@@ -243,7 +243,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
243
243
|
></ion-datetime>
|
|
244
244
|
`, config);
|
|
245
245
|
await page.waitForSelector('.datetime-ready');
|
|
246
|
-
const columns = page.locator('ion-picker-column');
|
|
246
|
+
const columns = page.locator('ion-picker-column-internal');
|
|
247
247
|
await expect(columns.nth(0)).toHaveClass(/day-column/);
|
|
248
248
|
await expect(columns.nth(1)).toHaveClass(/month-column/);
|
|
249
249
|
await expect(columns.nth(2)).toHaveClass(/year-column/);
|
|
@@ -256,7 +256,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
256
256
|
<ion-datetime presentation="date-time" prefer-wheel="true" min="2019-05-05" value="2019-05-10T16:30:00"></ion-datetime>
|
|
257
257
|
`, config);
|
|
258
258
|
await page.waitForSelector('.datetime-ready');
|
|
259
|
-
const dayValues = page.locator('ion-datetime .date-column
|
|
259
|
+
const dayValues = page.locator('ion-datetime .date-column .picker-item[data-value]');
|
|
260
260
|
expect(await dayValues.count()).toEqual(57);
|
|
261
261
|
});
|
|
262
262
|
test('should respect the max bounds', async ({ page }) => {
|
|
@@ -264,7 +264,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
264
264
|
<ion-datetime presentation="date-time" prefer-wheel="true" max="2023-06-10" value="2023-06-05T16:30:00"></ion-datetime>
|
|
265
265
|
`, config);
|
|
266
266
|
await page.waitForSelector('.datetime-ready');
|
|
267
|
-
const dayValues = page.locator('ion-datetime .date-column
|
|
267
|
+
const dayValues = page.locator('ion-datetime .date-column .picker-item[data-value]');
|
|
268
268
|
expect(await dayValues.count()).toEqual(41);
|
|
269
269
|
});
|
|
270
270
|
test('should respect isDateEnabled preference', async ({ page }) => {
|
|
@@ -282,7 +282,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
282
282
|
</script>
|
|
283
283
|
`, config);
|
|
284
284
|
await page.waitForSelector('.datetime-ready');
|
|
285
|
-
const disabledDates = page.locator('.date-column
|
|
285
|
+
const disabledDates = page.locator('.date-column .picker-item[disabled]');
|
|
286
286
|
expect(await disabledDates.count()).toBe(44);
|
|
287
287
|
});
|
|
288
288
|
test('should respect month, day, and year preferences', async ({ page }) => {
|
|
@@ -297,7 +297,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
297
297
|
></ion-datetime>
|
|
298
298
|
`, config);
|
|
299
299
|
await page.waitForSelector('.datetime-ready');
|
|
300
|
-
const dateValues = page.locator('.date-column
|
|
300
|
+
const dateValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
|
|
301
301
|
expect(await dateValues.count()).toBe(5);
|
|
302
302
|
});
|
|
303
303
|
test('should correctly localize the date data', async ({ page }) => {
|
|
@@ -312,7 +312,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
312
312
|
></ion-datetime>
|
|
313
313
|
`, config);
|
|
314
314
|
await page.waitForSelector('.datetime-ready');
|
|
315
|
-
const dateValues = page.locator('.date-column
|
|
315
|
+
const dateValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
|
|
316
316
|
await expect(dateValues).toHaveText(['2月1日(火)', '2月2日(水)', '2月3日(木)']);
|
|
317
317
|
});
|
|
318
318
|
test('should respect min and max bounds even across years', async ({ page }) => {
|
|
@@ -327,16 +327,15 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
327
327
|
`, config);
|
|
328
328
|
await page.waitForSelector('.datetime-ready');
|
|
329
329
|
const dateColumn = page.locator('.date-column');
|
|
330
|
-
const
|
|
331
|
-
const dateValues = dateColumn.locator('ion-picker-column-option');
|
|
330
|
+
const dateValues = dateColumn.locator('.picker-item:not(.picker-item-empty)');
|
|
332
331
|
expect(await dateValues.count()).toBe(90);
|
|
333
332
|
/**
|
|
334
333
|
* Select 1st item to change the dates rendered
|
|
335
334
|
*/
|
|
336
|
-
await expect(dateValues.nth(0)).
|
|
337
|
-
await
|
|
335
|
+
await expect(dateValues.nth(0)).toHaveAttribute('data-value', '2022-1-1');
|
|
336
|
+
await dateColumn.evaluate((el) => (el.scrollTop = 0));
|
|
338
337
|
await page.waitForChanges();
|
|
339
|
-
await expect(dateValues.nth(0)).
|
|
338
|
+
await expect(dateValues.nth(0)).toHaveAttribute('data-value', '2021-12-1');
|
|
340
339
|
});
|
|
341
340
|
test('should keep sliding window if default window is within min and max constraints', async ({ page }) => {
|
|
342
341
|
await page.setContent(`
|
|
@@ -349,7 +348,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
349
348
|
></ion-datetime>
|
|
350
349
|
`, config);
|
|
351
350
|
await page.waitForSelector('.datetime-ready');
|
|
352
|
-
const dayValues = page.locator('.date-column
|
|
351
|
+
const dayValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
|
|
353
352
|
expect(await dayValues.count()).toBe(92);
|
|
354
353
|
});
|
|
355
354
|
test('should narrow sliding window if default window is not within min and max constraints', async ({ page }) => {
|
|
@@ -363,7 +362,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
363
362
|
></ion-datetime>
|
|
364
363
|
`, config);
|
|
365
364
|
await page.waitForSelector('.datetime-ready');
|
|
366
|
-
const dayValues = page.locator('.date-column
|
|
365
|
+
const dayValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
|
|
367
366
|
expect(await dayValues.count()).toBe(15);
|
|
368
367
|
});
|
|
369
368
|
test('selecting date should update value when no value is set', async ({ page }) => {
|
|
@@ -375,7 +374,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
375
374
|
`, config);
|
|
376
375
|
await page.waitForSelector('.datetime-ready');
|
|
377
376
|
const ionChange = await page.spyOnEvent('ionChange');
|
|
378
|
-
const dayValues = page.locator('.date-column
|
|
377
|
+
const dayValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
|
|
379
378
|
// Change day/month value
|
|
380
379
|
await dayValues.nth(0).click();
|
|
381
380
|
await ionChange.next();
|
|
@@ -387,7 +386,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
387
386
|
<ion-datetime presentation="time-date" prefer-wheel="true" min="2019-05-05" value="2019-05-10T16:30:00"></ion-datetime>
|
|
388
387
|
`, config);
|
|
389
388
|
await page.waitForSelector('.datetime-ready');
|
|
390
|
-
const dayValues = page.locator('ion-datetime .date-column
|
|
389
|
+
const dayValues = page.locator('ion-datetime .date-column .picker-item[data-value]');
|
|
391
390
|
expect(await dayValues.count()).toEqual(57);
|
|
392
391
|
});
|
|
393
392
|
test('should respect the max bounds', async ({ page }) => {
|
|
@@ -395,7 +394,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
395
394
|
<ion-datetime presentation="time-date" prefer-wheel="true" max="2023-06-10" value="2023-06-05T16:30:00"></ion-datetime>
|
|
396
395
|
`, config);
|
|
397
396
|
await page.waitForSelector('.datetime-ready');
|
|
398
|
-
const dayValues = page.locator('ion-datetime .date-column
|
|
397
|
+
const dayValues = page.locator('ion-datetime .date-column .picker-item[data-value]');
|
|
399
398
|
expect(await dayValues.count()).toEqual(41);
|
|
400
399
|
});
|
|
401
400
|
test('should respect isDateEnabled preference', async ({ page }) => {
|
|
@@ -413,7 +412,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
413
412
|
</script>
|
|
414
413
|
`, config);
|
|
415
414
|
await page.waitForSelector('.datetime-ready');
|
|
416
|
-
const disabledDates = page.locator('.date-column
|
|
415
|
+
const disabledDates = page.locator('.date-column .picker-item[disabled]');
|
|
417
416
|
expect(await disabledDates.count()).toBe(44);
|
|
418
417
|
});
|
|
419
418
|
test('should respect month, day, and year preferences', async ({ page }) => {
|
|
@@ -428,7 +427,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
428
427
|
></ion-datetime>
|
|
429
428
|
`, config);
|
|
430
429
|
await page.waitForSelector('.datetime-ready');
|
|
431
|
-
const dateValues = page.locator('.date-column
|
|
430
|
+
const dateValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
|
|
432
431
|
expect(await dateValues.count()).toBe(5);
|
|
433
432
|
});
|
|
434
433
|
test('should correctly localize the date data', async ({ page }) => {
|
|
@@ -443,7 +442,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
443
442
|
></ion-datetime>
|
|
444
443
|
`, config);
|
|
445
444
|
await page.waitForSelector('.datetime-ready');
|
|
446
|
-
const dateValues = page.locator('.date-column
|
|
445
|
+
const dateValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
|
|
447
446
|
await expect(dateValues).toHaveText(['2月1日(火)', '2月2日(水)', '2月3日(木)']);
|
|
448
447
|
});
|
|
449
448
|
test('should respect min and max bounds even across years', async ({ page }) => {
|
|
@@ -458,16 +457,15 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
458
457
|
`, config);
|
|
459
458
|
await page.waitForSelector('.datetime-ready');
|
|
460
459
|
const dateColumn = page.locator('.date-column');
|
|
461
|
-
const
|
|
462
|
-
const dateValues = dateColumn.locator('ion-picker-column-option');
|
|
460
|
+
const dateValues = dateColumn.locator('.picker-item:not(.picker-item-empty)');
|
|
463
461
|
expect(await dateValues.count()).toBe(90);
|
|
464
462
|
/**
|
|
465
463
|
* Select 1st item to change the dates rendered
|
|
466
464
|
*/
|
|
467
|
-
await expect(dateValues.nth(0)).
|
|
468
|
-
await
|
|
465
|
+
await expect(dateValues.nth(0)).toHaveAttribute('data-value', '2022-1-1');
|
|
466
|
+
await dateColumn.evaluate((el) => (el.scrollTop = 0));
|
|
469
467
|
await page.waitForChanges();
|
|
470
|
-
await expect(dateValues.nth(0)).
|
|
468
|
+
await expect(dateValues.nth(0)).toHaveAttribute('data-value', '2021-12-1');
|
|
471
469
|
});
|
|
472
470
|
test('should keep sliding window if default window is within min and max constraints', async ({ page }) => {
|
|
473
471
|
await page.setContent(`
|
|
@@ -480,7 +478,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
480
478
|
></ion-datetime>
|
|
481
479
|
`, config);
|
|
482
480
|
await page.waitForSelector('.datetime-ready');
|
|
483
|
-
const dayValues = page.locator('.date-column
|
|
481
|
+
const dayValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
|
|
484
482
|
expect(await dayValues.count()).toBe(92);
|
|
485
483
|
});
|
|
486
484
|
test('should narrow sliding window if default window is not within min and max constraints', async ({ page }) => {
|
|
@@ -494,7 +492,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
494
492
|
></ion-datetime>
|
|
495
493
|
`, config);
|
|
496
494
|
await page.waitForSelector('.datetime-ready');
|
|
497
|
-
const dayValues = page.locator('.date-column
|
|
495
|
+
const dayValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
|
|
498
496
|
expect(await dayValues.count()).toBe(15);
|
|
499
497
|
});
|
|
500
498
|
});
|
|
@@ -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);
|
|
@@ -34,7 +34,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config, scree
|
|
|
34
34
|
await expect(calendarMonthYear).toHaveText('February 2022');
|
|
35
35
|
await calendarMonthYear.click();
|
|
36
36
|
await page.waitForChanges();
|
|
37
|
-
await page.locator('.month-column
|
|
37
|
+
await page.locator('.month-column .picker-item[data-value="3"]').click();
|
|
38
38
|
await page.waitForChanges();
|
|
39
39
|
await expect(calendarMonthYear).toHaveText('March 2022');
|
|
40
40
|
await expect(ionChange).not.toHaveReceivedEvent();
|
|
@@ -53,7 +53,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config, scree
|
|
|
53
53
|
await page.waitForChanges();
|
|
54
54
|
await page.keyboard.press('Enter');
|
|
55
55
|
await page.waitForChanges();
|
|
56
|
-
const marchPickerItem = page.locator('.month-column
|
|
56
|
+
const marchPickerItem = page.locator('.month-column .picker-item[data-value="3"]');
|
|
57
57
|
await expect(marchPickerItem).toBeVisible();
|
|
58
58
|
});
|
|
59
59
|
test('should view next month via next button', async ({ page }) => {
|
|
@@ -22,28 +22,28 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
22
22
|
await page.setContent(`
|
|
23
23
|
<ion-datetime locale="en-US" presentation="month-year" month-values="5,6,10"></ion-datetime>
|
|
24
24
|
`, config);
|
|
25
|
-
const items = page.locator('.month-column
|
|
25
|
+
const items = page.locator('.month-column .picker-item:not(.picker-item-empty)');
|
|
26
26
|
await expect(items).toHaveText(['May', 'June', 'October']);
|
|
27
27
|
});
|
|
28
28
|
test('should render correct years', async ({ page }) => {
|
|
29
29
|
await page.setContent(`
|
|
30
30
|
<ion-datetime locale="en-US" presentation="month-year" year-values="2022,2021,2020"></ion-datetime>
|
|
31
31
|
`, config);
|
|
32
|
-
const items = page.locator('.year-column
|
|
32
|
+
const items = page.locator('.year-column .picker-item:not(.picker-item-empty)');
|
|
33
33
|
await expect(items).toHaveText(['2022', '2021', '2020']);
|
|
34
34
|
});
|
|
35
35
|
test('should render correct hours', async ({ page }) => {
|
|
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
|
|
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)
|
|
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,22 +69,19 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
69
69
|
</script>
|
|
70
70
|
`, config);
|
|
71
71
|
await page.waitForSelector('.datetime-ready');
|
|
72
|
-
const
|
|
73
|
-
const minuteItems = minuteColumn.locator('ion-picker-column-option');
|
|
72
|
+
const minuteItems = page.locator('ion-picker-column-internal:nth-of-type(2) .picker-item:not(.picker-item-empty)');
|
|
74
73
|
await expect(minuteItems).toHaveText(['00', '15', '30', '45']);
|
|
75
|
-
await expect(
|
|
76
|
-
const
|
|
77
|
-
const hourItems = hourColumn.locator('ion-picker-column-option');
|
|
74
|
+
await expect(minuteItems.nth(1)).toHaveClass(/picker-item-active/);
|
|
75
|
+
const hourItems = page.locator('ion-picker-column-internal:nth-of-type(1) .picker-item:not(.picker-item-empty)');
|
|
78
76
|
await expect(hourItems).toHaveText(['2']);
|
|
79
|
-
await expect(
|
|
77
|
+
await expect(hourItems.nth(0)).toHaveClass(/picker-item-active/);
|
|
80
78
|
/**
|
|
81
79
|
* Since the allowed hour is 2AM, the time period
|
|
82
80
|
* should switch from PM to AM.
|
|
83
81
|
*/
|
|
84
|
-
const
|
|
85
|
-
const ampmItems = ampmColumn.locator('ion-picker-column-option');
|
|
82
|
+
const ampmItems = page.locator('ion-picker-column-internal:nth-of-type(3) .picker-item:not(.picker-item-empty)');
|
|
86
83
|
await expect(ampmItems).toHaveText(['AM', 'PM']);
|
|
87
|
-
await expect(
|
|
84
|
+
await expect(ampmItems.nth(0)).toHaveClass(/picker-item-active/);
|
|
88
85
|
});
|
|
89
86
|
test('should adjust default parts month for allowed month values', async ({ page }) => {
|
|
90
87
|
/**
|
|
@@ -109,9 +106,9 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
109
106
|
</script>
|
|
110
107
|
`, config);
|
|
111
108
|
await page.waitForSelector('.datetime-ready');
|
|
112
|
-
const monthItems = page.locator('.month-column
|
|
109
|
+
const monthItems = page.locator('.month-column .picker-item:not(.picker-item-empty)');
|
|
113
110
|
await expect(monthItems).toHaveText(['January']);
|
|
114
|
-
await expect(monthItems.nth(0)).toHaveClass(/
|
|
111
|
+
await expect(monthItems.nth(0)).toHaveClass(/picker-item-active/);
|
|
115
112
|
});
|
|
116
113
|
test('today date highlight should persist even if disallowed from dayValues', async ({ page }) => {
|
|
117
114
|
/**
|
|
@@ -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',
|
|
@@ -334,10 +334,10 @@ ion-ripple-effect {
|
|
|
334
334
|
* }
|
|
335
335
|
*/
|
|
336
336
|
:host {
|
|
337
|
-
--background: var(--ion-color-primary, #
|
|
338
|
-
--background-activated: var(--ion-color-primary-shade, #
|
|
339
|
-
--background-focused: var(--ion-color-primary-shade, #
|
|
340
|
-
--background-hover: var(--ion-color-primary-tint, #
|
|
337
|
+
--background: var(--ion-color-primary, #0054e9);
|
|
338
|
+
--background-activated: var(--ion-color-primary-shade, #004acd);
|
|
339
|
+
--background-focused: var(--ion-color-primary-shade, #004acd);
|
|
340
|
+
--background-hover: var(--ion-color-primary-tint, #1a65eb);
|
|
341
341
|
--background-activated-opacity: 1;
|
|
342
342
|
--background-focused-opacity: 1;
|
|
343
343
|
--background-hover-opacity: 1;
|
|
@@ -358,10 +358,10 @@ ion-ripple-effect {
|
|
|
358
358
|
}
|
|
359
359
|
|
|
360
360
|
:host(.fab-button-in-list) {
|
|
361
|
-
--background: var(--ion-color-light, #
|
|
362
|
-
--background-activated: var(--ion-color-light-shade, #
|
|
361
|
+
--background: var(--ion-color-light, #f6f8fc);
|
|
362
|
+
--background-activated: var(--ion-color-light-shade, #d8dade);
|
|
363
363
|
--background-focused: var(--background-activated);
|
|
364
|
-
--background-hover: var(--ion-color-light-tint, #
|
|
364
|
+
--background-hover: var(--ion-color-light-tint, #f7f9fc);
|
|
365
365
|
--color: var(--ion-color-light-contrast, #000);
|
|
366
366
|
--color-activated: var(--ion-color-light-contrast, #000);
|
|
367
367
|
--color-focused: var(--color-activated);
|
|
@@ -395,15 +395,15 @@ ion-ripple-effect {
|
|
|
395
395
|
}
|
|
396
396
|
@supports (backdrop-filter: blur(0)) {
|
|
397
397
|
:host(.fab-button-translucent) {
|
|
398
|
-
--background: rgba(var(--ion-color-primary-rgb,
|
|
399
|
-
--background-hover: rgba(var(--ion-color-primary-rgb,
|
|
400
|
-
--background-focused: rgba(var(--ion-color-primary-rgb,
|
|
398
|
+
--background: rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.9);
|
|
399
|
+
--background-hover: rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.8);
|
|
400
|
+
--background-focused: rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.82);
|
|
401
401
|
--backdrop-filter: saturate(180%) blur(20px);
|
|
402
402
|
}
|
|
403
403
|
:host(.fab-button-translucent-in-list) {
|
|
404
|
-
--background: rgba(var(--ion-color-light-rgb,
|
|
405
|
-
--background-hover: rgba(var(--ion-color-light-rgb,
|
|
406
|
-
--background-focused: rgba(var(--ion-color-light-rgb,
|
|
404
|
+
--background: rgba(var(--ion-color-light-rgb, 246, 248, 252), 0.9);
|
|
405
|
+
--background-hover: rgba(var(--ion-color-light-rgb, 246, 248, 252), 0.8);
|
|
406
|
+
--background-focused: rgba(var(--ion-color-light-rgb, 246, 248, 252), 0.82);
|
|
407
407
|
}
|
|
408
408
|
}
|
|
409
409
|
@supports (backdrop-filter: blur(0)) {
|
|
@@ -334,7 +334,7 @@ ion-ripple-effect {
|
|
|
334
334
|
* }
|
|
335
335
|
*/
|
|
336
336
|
:host {
|
|
337
|
-
--background: var(--ion-color-primary, #
|
|
337
|
+
--background: var(--ion-color-primary, #0054e9);
|
|
338
338
|
--background-activated: transparent;
|
|
339
339
|
--background-focused: currentColor;
|
|
340
340
|
--background-hover: currentColor;
|
|
@@ -359,10 +359,10 @@ ion-ripple-effect {
|
|
|
359
359
|
--color: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54);
|
|
360
360
|
--color-activated: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54);
|
|
361
361
|
--color-focused: var(--color-activated);
|
|
362
|
-
--background: var(--ion-color-light, #
|
|
362
|
+
--background: var(--ion-color-light, #f6f8fc);
|
|
363
363
|
--background-activated: transparent;
|
|
364
|
-
--background-focused: var(--ion-color-light-shade, #
|
|
365
|
-
--background-hover: var(--ion-color-light-tint, #
|
|
364
|
+
--background-focused: var(--ion-color-light-shade, #d8dade);
|
|
365
|
+
--background-hover: var(--ion-color-light-tint, #f7f9fc);
|
|
366
366
|
}
|
|
367
367
|
|
|
368
368
|
:host(.fab-button-in-list) ::slotted(ion-icon) {
|
|
@@ -1,8 +1,58 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
+
import AxeBuilder from "@axe-core/playwright";
|
|
4
5
|
import { expect } from "@playwright/test";
|
|
5
6
|
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
7
|
+
configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
|
|
8
|
+
test.describe(title('fab-button: a11y'), () => {
|
|
9
|
+
test('should not have accessibility violations', async ({ page }) => {
|
|
10
|
+
await page.setContent(`
|
|
11
|
+
<ion-fab-button>FAB</ion-fab-button>
|
|
12
|
+
<ion-fab-button class="ion-activated">FAB</ion-fab-button>
|
|
13
|
+
`, config);
|
|
14
|
+
const results = await new AxeBuilder({ page }).analyze();
|
|
15
|
+
expect(results.violations).toEqual([]);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
test.describe(title('fab-list: contrast'), () => {
|
|
19
|
+
test('should not have accessibility violations', async ({ page }) => {
|
|
20
|
+
await page.setContent(`
|
|
21
|
+
<ion-fab activated="true">
|
|
22
|
+
<ion-fab-button>
|
|
23
|
+
Open
|
|
24
|
+
</ion-fab-button>
|
|
25
|
+
<ion-fab-list side="bottom">
|
|
26
|
+
<ion-fab-button>Down</ion-fab-button>
|
|
27
|
+
<ion-fab-button class="ion-activated">Down</ion-fab-button>
|
|
28
|
+
<ion-fab-button class="ion-focused">Down</ion-fab-button>
|
|
29
|
+
</ion-fab-list>
|
|
30
|
+
</ion-fab>
|
|
31
|
+
`, config);
|
|
32
|
+
const results = await new AxeBuilder({ page }).analyze();
|
|
33
|
+
expect(results.violations).toEqual([]);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
test.describe(title('fab: translucent contrast'), () => {
|
|
37
|
+
test('should not have accessibility violations', async ({ page }) => {
|
|
38
|
+
await page.setContent(`
|
|
39
|
+
<ion-fab-button translucent="true">FAB</ion-fab-button>
|
|
40
|
+
<ion-fab-button class="ion-focused" translucent="true">FAB</ion-fab-button>
|
|
41
|
+
<ion-fab activated="true">
|
|
42
|
+
<ion-fab-button>
|
|
43
|
+
Open
|
|
44
|
+
</ion-fab-button>
|
|
45
|
+
<ion-fab-list side="bottom">
|
|
46
|
+
<ion-fab-button translucent="true">Down</ion-fab-button>
|
|
47
|
+
<ion-fab-button class="ion-focused" translucent="true">Down</ion-fab-button>
|
|
48
|
+
</ion-fab-list>
|
|
49
|
+
</ion-fab>
|
|
50
|
+
`, config);
|
|
51
|
+
const results = await new AxeBuilder({ page }).analyze();
|
|
52
|
+
expect(results.violations).toEqual([]);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
});
|
|
6
56
|
configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
7
57
|
test.describe(title('fab-button: aria attributes'), () => {
|
|
8
58
|
test('should inherit aria attributes to inner button', async ({ page }) => {
|
|
@@ -89,9 +89,9 @@
|
|
|
89
89
|
--background: transparent;
|
|
90
90
|
--color: initial;
|
|
91
91
|
--border-style: solid;
|
|
92
|
-
--highlight-color-focused: var(--ion-color-primary, #
|
|
93
|
-
--highlight-color-valid: var(--ion-color-success, #
|
|
94
|
-
--highlight-color-invalid: var(--ion-color-danger, #
|
|
92
|
+
--highlight-color-focused: var(--ion-color-primary, #0054e9);
|
|
93
|
+
--highlight-color-valid: var(--ion-color-success, #2dd55b);
|
|
94
|
+
--highlight-color-invalid: var(--ion-color-danger, #c5000f);
|
|
95
95
|
/**
|
|
96
96
|
* This is a private API that is used to switch
|
|
97
97
|
* out the highlight color based on the state
|
|
@@ -89,9 +89,9 @@
|
|
|
89
89
|
--background: transparent;
|
|
90
90
|
--color: initial;
|
|
91
91
|
--border-style: solid;
|
|
92
|
-
--highlight-color-focused: var(--ion-color-primary, #
|
|
93
|
-
--highlight-color-valid: var(--ion-color-success, #
|
|
94
|
-
--highlight-color-invalid: var(--ion-color-danger, #
|
|
92
|
+
--highlight-color-focused: var(--ion-color-primary, #0054e9);
|
|
93
|
+
--highlight-color-valid: var(--ion-color-success, #2dd55b);
|
|
94
|
+
--highlight-color-invalid: var(--ion-color-danger, #c5000f);
|
|
95
95
|
/**
|
|
96
96
|
* This is a private API that is used to switch
|
|
97
97
|
* out the highlight color based on the state
|
|
@@ -4,14 +4,46 @@
|
|
|
4
4
|
import AxeBuilder from "@axe-core/playwright";
|
|
5
5
|
import { expect } from "@playwright/test";
|
|
6
6
|
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
7
|
-
configs({ directions: ['ltr'] }).forEach(({ title, config
|
|
7
|
+
configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
|
|
8
8
|
test.describe(title('input: a11y'), () => {
|
|
9
|
-
test('should not have accessibility violations', async ({ page }) => {
|
|
10
|
-
await page.
|
|
9
|
+
test('default layout should not have accessibility violations', async ({ page }) => {
|
|
10
|
+
await page.setContent(`
|
|
11
|
+
<main>
|
|
12
|
+
<ion-input label="Label" placeholder="Placeholder"></ion-input>
|
|
13
|
+
<ion-input placeholder="Placeholder">
|
|
14
|
+
<div slot="label">Label"></div>
|
|
15
|
+
</ion-input>
|
|
16
|
+
<ion-input label="Label" value="My Text"></ion-input>
|
|
17
|
+
<ion-input aria-label="Label"></ion-input>
|
|
18
|
+
</main>
|
|
19
|
+
`, config);
|
|
20
|
+
const results = await new AxeBuilder({ page }).analyze();
|
|
21
|
+
expect(results.violations).toEqual([]);
|
|
22
|
+
});
|
|
23
|
+
test('focused state should not have accessibility violations', async ({ page }) => {
|
|
24
|
+
/**
|
|
25
|
+
* The primary color against the focus background
|
|
26
|
+
* when using fill="solid" does not meet AA
|
|
27
|
+
* contrast guidelines so it excluded from the test.
|
|
28
|
+
* The contrast here is a significant improvement
|
|
29
|
+
* over what Ionic has had in the past, so the team
|
|
30
|
+
* has decided that this tradeoff is acceptable since
|
|
31
|
+
* the scope of the problem is limited to the focus
|
|
32
|
+
* state with the primary color when fill="solid".
|
|
33
|
+
*/
|
|
34
|
+
await page.setContent(`
|
|
35
|
+
<main>
|
|
36
|
+
<ion-input class="has-focus" label="Label" value="My Text"></ion-input>
|
|
37
|
+
<ion-input class="has-focus" label-placement="floating" label="Label" value="My Text"></ion-input>
|
|
38
|
+
<ion-input class="has-focus" fill="outline" label-placement="floating" label="Label" value="My Text"></ion-input>
|
|
39
|
+
</main>
|
|
40
|
+
`, config);
|
|
11
41
|
const results = await new AxeBuilder({ page }).analyze();
|
|
12
42
|
expect(results.violations).toEqual([]);
|
|
13
43
|
});
|
|
14
44
|
});
|
|
45
|
+
});
|
|
46
|
+
configs({ directions: ['ltr'] }).forEach(({ title, config, screenshot }) => {
|
|
15
47
|
test.describe(title('input: font scaling'), () => {
|
|
16
48
|
test('should scale text on larger font sizes', async ({ page }) => {
|
|
17
49
|
await page.setContent(`
|
|
@@ -656,9 +656,9 @@ ion-ripple-effect {
|
|
|
656
656
|
--border-color: var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, #c8c7cc)));
|
|
657
657
|
--color: var(--ion-item-color, var(--ion-text-color, #000));
|
|
658
658
|
--highlight-height: 0px;
|
|
659
|
-
--highlight-color-focused: var(--ion-color-primary, #
|
|
660
|
-
--highlight-color-valid: var(--ion-color-success, #
|
|
661
|
-
--highlight-color-invalid: var(--ion-color-danger, #
|
|
659
|
+
--highlight-color-focused: var(--ion-color-primary, #0054e9);
|
|
660
|
+
--highlight-color-valid: var(--ion-color-success, #2dd55b);
|
|
661
|
+
--highlight-color-invalid: var(--ion-color-danger, #c5000f);
|
|
662
662
|
--bottom-padding-start: 0px;
|
|
663
663
|
font-size: 1rem;
|
|
664
664
|
}
|