@ionic/core 7.6.2-dev.11704998705.1e1f9850 → 7.6.2-dev.11705694334.11b34c62
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 +4 -4
- package/components/alert.js +2 -2
- package/components/animation.js +16 -1
- package/components/button-active.js +1 -1
- package/components/button.js +2 -2
- package/components/checkbox.js +2 -2
- package/components/ion-back-button.js +1 -1
- package/components/ion-badge.js +2 -2
- package/components/ion-content.js +3 -2
- package/components/ion-datetime-button.js +4 -4
- package/components/ion-datetime.js +1 -1
- 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-item-sliding.js +128 -7
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-picker-legacy.js +2 -2
- package/components/ion-progress-bar.js +5 -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-tab-button.js +1 -1
- package/components/ion-textarea.js +2 -2
- 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/picker-column2.js +1 -1
- package/components/radio.js +2 -2
- package/components/select-popover.js +1 -1
- package/css/core.css +34 -101
- 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/typography.css +1 -1
- package/dist/cjs/{animation-9b401d39.js → animation-8a4f9df4.js} +16 -0
- package/dist/cjs/{button-active-5bf1cac0.js → button-active-466dfc8a.js} +1 -1
- package/dist/cjs/{index-3b012034.js → index-8023641e.js} +1 -1
- package/dist/cjs/{index-17ab7794.js → index-d8b5d5f9.js} +2 -2
- package/dist/cjs/index.cjs.js +5 -5
- package/dist/cjs/ion-action-sheet.cjs.entry.js +6 -6
- package/dist/cjs/ion-alert.cjs.entry.js +4 -4
- package/dist/cjs/ion-app_8.cjs.entry.js +4 -3
- 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 +4 -4
- package/dist/cjs/ion-datetime_3.cjs.entry.js +5 -5
- 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 +130 -10
- 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 +3 -3
- package/dist/cjs/ion-modal.cjs.entry.js +3 -3
- package/dist/cjs/ion-nav_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-popover.cjs.entry.js +2 -2
- package/dist/cjs/ion-progress-bar.cjs.entry.js +5 -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 +3 -3
- 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 +3 -3
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +3 -3
- 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/{ios.transition-b5353f3e.js → ios.transition-34cad0cb.js} +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{md.transition-67157dd9.js → md.transition-5bcc289d.js} +2 -2
- package/dist/collection/components/action-sheet/action-sheet.ios.css +12 -5
- package/dist/collection/components/action-sheet/action-sheet.js +2 -2
- package/dist/collection/components/action-sheet/action-sheet.md.css +9 -2
- package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +14 -23
- package/dist/collection/components/action-sheet/test/basic/action-sheet-rendering.e2e.js +19 -0
- package/dist/collection/components/action-sheet/test/basic/action-sheet.spec.js +22 -0
- package/dist/collection/components/alert/alert.ios.css +28 -27
- package/dist/collection/components/alert/alert.md.css +6 -6
- package/dist/collection/components/alert/test/a11y/alert.e2e.js +9 -22
- package/dist/collection/components/back-button/back-button.ios.css +1 -1
- package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +0 -21
- 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 +0 -18
- package/dist/collection/components/button/button.ios.css +10 -10
- package/dist/collection/components/button/button.md.css +8 -8
- package/dist/collection/components/button/test/a11y/button.e2e.js +0 -48
- package/dist/collection/components/checkbox/checkbox.ios.css +5 -5
- package/dist/collection/components/checkbox/checkbox.md.css +2 -3
- package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +2 -11
- package/dist/collection/components/checkbox/test/basic/checkbox.e2e.js +10 -0
- package/dist/collection/components/content/content.js +3 -2
- package/dist/collection/components/datetime/datetime.ios.css +3 -2
- package/dist/collection/components/datetime-button/datetime-button.ios.css +107 -0
- package/dist/collection/components/datetime-button/datetime-button.js +4 -4
- package/dist/collection/components/datetime-button/{datetime-button.css → datetime-button.md.css} +9 -6
- package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +12 -0
- 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 +0 -50
- 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 +3 -41
- 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/animations/item-sliding-options.js +59 -0
- package/dist/collection/components/item-sliding/item-sliding.css +8 -4
- package/dist/collection/components/item-sliding/item-sliding.js +89 -6
- package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +0 -28
- package/dist/collection/components/item-sliding/test/basic/item-sliding.e2e.js +62 -25
- package/dist/collection/components/label/label.md.css +1 -1
- package/dist/collection/components/label/test/a11y/label.e2e.js +0 -20
- package/dist/collection/components/loading/loading.md.css +1 -1
- package/dist/collection/components/loading/test/a11y/loading.e2e.js +5 -21
- package/dist/collection/components/menu-button/menu-button.ios.css +1 -1
- package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +0 -14
- package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -1
- package/dist/collection/components/picker-legacy/picker.ios.css +1 -1
- package/dist/collection/components/picker-legacy/picker.md.css +1 -1
- package/dist/collection/components/picker-legacy-column/picker-column.md.css +1 -1
- package/dist/collection/components/progress-bar/progress-bar.ios.css +17 -11
- package/dist/collection/components/progress-bar/progress-bar.js +3 -0
- package/dist/collection/components/progress-bar/progress-bar.md.css +8 -10
- 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 +68 -101
- 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 +8 -18
- package/dist/collection/components/refresher/refresher.md.css +2 -2
- 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/searchbar/searchbar.ios.css +4 -4
- package/dist/collection/components/segment/test/a11y/segment.e2e.js +0 -23
- 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 +4 -68
- package/dist/collection/components/select-popover/select-popover.md.css +4 -4
- 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/tab-button/tab-button.ios.css +6 -1
- package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +3 -41
- package/dist/collection/components/textarea/textarea.ios.css +3 -3
- package/dist/collection/components/textarea/textarea.md.css +3 -3
- package/dist/collection/components/toast/test/a11y/toast.e2e.js +24 -56
- 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 +2 -8
- package/dist/collection/components/toggle/toggle.ios.css +8 -8
- package/dist/collection/components/toggle/toggle.md.css +2 -2
- package/dist/collection/css/test/a11y/typography.e2e.js +0 -18
- package/dist/collection/utils/animation/animation.js +15 -0
- package/dist/collection/utils/gesture/button-active.js +1 -1
- package/dist/collection/utils/test/playwright/generator.js +0 -1
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
- package/dist/docs.json +34 -7
- package/dist/esm/{animation-dde8cc0d.js → animation-ccab0993.js} +16 -1
- package/dist/esm/{button-active-48379dd2.js → button-active-2758ff14.js} +1 -1
- package/dist/esm/{index-4743453d.js → index-9dbb78a4.js} +2 -2
- package/dist/esm/{index-1193f005.js → index-b7e9478d.js} +1 -1
- package/dist/esm/index.js +5 -5
- package/dist/esm/ion-action-sheet.entry.js +6 -6
- package/dist/esm/ion-alert.entry.js +4 -4
- package/dist/esm/ion-app_8.entry.js +4 -3
- 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 +4 -4
- package/dist/esm/ion-datetime_3.entry.js +5 -5
- 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 +130 -10
- 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 +3 -3
- package/dist/esm/ion-modal.entry.js +3 -3
- package/dist/esm/ion-nav_2.entry.js +1 -1
- package/dist/esm/ion-popover.entry.js +2 -2
- package/dist/esm/ion-progress-bar.entry.js +5 -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 +3 -3
- 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 +3 -3
- package/dist/esm/ion-tab-bar_2.entry.js +3 -3
- 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/{ios.transition-3376ccb2.js → ios.transition-01176d76.js} +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{md.transition-f992779f.js → md.transition-558655c7.js} +2 -2
- package/dist/esm-es5/animation-ccab0993.js +4 -0
- package/dist/esm-es5/button-active-2758ff14.js +4 -0
- package/dist/esm-es5/{index-4743453d.js → index-9dbb78a4.js} +1 -1
- package/dist/esm-es5/{index-1193f005.js → index-b7e9478d.js} +1 -1
- 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-nav_2.entry.js +1 -1
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
- package/dist/esm-es5/ion-radio_2.entry.js +1 -1
- package/dist/esm-es5/ion-range.entry.js +1 -1
- package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
- package/dist/esm-es5/ion-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/{ios.transition-3376ccb2.js → ios.transition-01176d76.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/md.transition-558655c7.js +4 -0
- package/dist/html.html-data.json +12 -0
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-ec0a9b2c.system.entry.js → p-019e0d80.system.entry.js} +1 -1
- package/dist/ionic/p-02dc8c5b.entry.js +4 -0
- package/dist/ionic/{p-c6e9ef77.entry.js → p-0cc80201.entry.js} +1 -1
- package/dist/ionic/{p-662a9a47.system.entry.js → p-0dfa4ab4.system.entry.js} +1 -1
- package/dist/ionic/{p-590447a5.system.entry.js → p-0e908476.system.entry.js} +1 -1
- package/dist/ionic/{p-df6f50ef.entry.js → p-10339dcc.entry.js} +1 -1
- package/dist/ionic/{p-1d5b03e3.system.entry.js → p-11bf2ad0.system.entry.js} +1 -1
- package/dist/ionic/{p-3796194b.system.entry.js → p-19c379da.system.entry.js} +1 -1
- package/dist/ionic/p-19d9ceb8.system.js +1 -1
- package/dist/ionic/p-1a22895e.system.entry.js +4 -0
- package/dist/ionic/p-1c69a4ca.system.entry.js +4 -0
- package/dist/ionic/{p-92bfb607.entry.js → p-20a4ee02.entry.js} +1 -1
- package/dist/ionic/{p-530bb2af.system.entry.js → p-2316de85.system.entry.js} +1 -1
- package/dist/ionic/{p-5cbfce20.entry.js → p-26ff1180.entry.js} +1 -1
- package/dist/ionic/{p-aa8b021d.entry.js → p-289f354c.entry.js} +1 -1
- package/dist/ionic/p-2a3b87cd.entry.js +4 -0
- package/dist/ionic/p-2e01f1c5.system.entry.js +4 -0
- package/dist/ionic/{p-5f1b0512.entry.js → p-3b043115.entry.js} +1 -1
- package/dist/ionic/p-3b434dee.system.entry.js +4 -0
- package/dist/ionic/{p-d88ed181.system.entry.js → p-41208f54.system.entry.js} +1 -1
- package/dist/ionic/{p-f0dbd73e.system.entry.js → p-42925096.system.entry.js} +1 -1
- package/dist/ionic/p-44791cff.entry.js +4 -0
- package/dist/ionic/p-4981ea0a.system.entry.js +4 -0
- package/dist/ionic/{p-13d4dfe7.entry.js → p-5074a526.entry.js} +1 -1
- package/dist/ionic/{p-a41eaff2.system.entry.js → p-56b1a872.system.entry.js} +1 -1
- package/dist/ionic/p-57785713.system.entry.js +4 -0
- package/dist/ionic/p-57e9de81.system.js +4 -0
- package/dist/ionic/{p-c001b24f.entry.js → p-5dc16594.entry.js} +1 -1
- package/dist/ionic/{p-9f94e34a.system.entry.js → p-614e63a9.system.entry.js} +1 -1
- package/dist/ionic/{p-8b160fba.entry.js → p-67e52d31.entry.js} +1 -1
- package/dist/ionic/{p-aa975ff8.entry.js → p-6855f26a.entry.js} +1 -1
- package/dist/ionic/{p-7dade589.system.entry.js → p-69ce8bba.system.entry.js} +1 -1
- package/dist/ionic/p-6fb2b5e3.js +4 -0
- package/dist/ionic/{p-8e961825.entry.js → p-799da666.entry.js} +1 -1
- package/dist/ionic/{p-04377cfa.js → p-7b4649d7.js} +1 -1
- package/dist/ionic/{p-4abb1251.entry.js → p-7c7bc0cc.entry.js} +1 -1
- package/dist/ionic/{p-a29db3a0.entry.js → p-7dcf795f.entry.js} +1 -1
- package/dist/ionic/{p-a074be82.system.js → p-7de7a5fd.system.js} +1 -1
- package/dist/ionic/{p-f38c1f8d.entry.js → p-806a9810.entry.js} +1 -1
- package/dist/ionic/p-80ad9792.system.js +4 -0
- package/dist/ionic/{p-d08e0136.entry.js → p-84b567a6.entry.js} +1 -1
- package/dist/ionic/{p-a49931aa.system.js → p-9093afb1.system.js} +1 -1
- package/dist/ionic/p-922c234e.js +4 -0
- package/dist/ionic/p-97a9d526.system.entry.js +4 -0
- package/dist/ionic/p-99d448ba.system.entry.js +4 -0
- package/dist/ionic/p-9c5e3a2c.system.entry.js +4 -0
- package/dist/ionic/{p-1c453add.system.entry.js → p-a1bd098f.system.entry.js} +1 -1
- package/dist/ionic/p-a619ecad.entry.js +4 -0
- package/dist/ionic/{p-354682e8.system.entry.js → p-abd5d0d5.system.entry.js} +1 -1
- package/dist/ionic/{p-e9431a58.entry.js → p-ae4b7df8.entry.js} +1 -1
- package/dist/ionic/p-b20717fc.system.entry.js +4 -0
- package/dist/ionic/p-b61d7624.entry.js +4 -0
- package/dist/ionic/p-b660ba8a.system.js +4 -0
- package/dist/ionic/{p-2716d76c.entry.js → p-b68d435f.entry.js} +1 -1
- package/dist/ionic/p-ba2b1ef5.entry.js +4 -0
- package/dist/ionic/{p-bc01c384.entry.js → p-ba5d9e27.entry.js} +1 -1
- package/dist/ionic/{p-9c48f42f.entry.js → p-bb3fd397.entry.js} +1 -1
- package/dist/ionic/{p-44a56556.js → p-c75dc92f.js} +1 -1
- package/dist/ionic/{p-1ab2642a.system.js → p-c8f7e8c8.system.js} +1 -1
- package/dist/ionic/p-cd729946.js +4 -0
- package/dist/ionic/{p-385bb983.entry.js → p-cf53213c.entry.js} +1 -1
- package/dist/ionic/{p-e403ff07.entry.js → p-d1ab26de.entry.js} +1 -1
- package/dist/ionic/p-d2a73201.system.entry.js +4 -0
- package/dist/ionic/p-d3525765.js +4 -0
- package/dist/ionic/{p-d01449a3.system.entry.js → p-da666998.system.entry.js} +1 -1
- package/dist/ionic/{p-cc700688.system.entry.js → p-db05ecb6.system.entry.js} +1 -1
- package/dist/ionic/p-dc43a79e.entry.js +4 -0
- package/dist/ionic/{p-0aa78a8d.system.js → p-e755af39.system.js} +1 -1
- package/dist/ionic/p-ee71caaa.system.entry.js +4 -0
- package/dist/ionic/{p-5aec2208.entry.js → p-f0eafd38.entry.js} +1 -1
- package/dist/ionic/{p-25312768.system.entry.js → p-f25b4396.system.entry.js} +1 -1
- package/dist/ionic/{p-308b6cf2.system.entry.js → p-f65f4d3e.system.entry.js} +1 -1
- package/dist/ionic/p-fd98debb.entry.js +4 -0
- package/dist/ionic/p-fe458994.system.entry.js +4 -0
- package/dist/types/components/action-sheet/action-sheet-interface.d.ts +8 -0
- package/dist/types/components/item-sliding/animations/item-sliding-options.d.ts +10 -0
- package/dist/types/components/item-sliding/item-sliding.d.ts +19 -0
- package/dist/types/components.d.ts +8 -0
- package/dist/types/utils/animation/animation-interface.d.ts +6 -0
- package/dist/types/utils/animation/animation.d.ts +2 -0
- package/hydrate/index.js +203 -66
- package/package.json +1 -1
- package/css/themes/dark.always.css +0 -122
- package/css/themes/dark.always.css.map +0 -1
- package/css/themes/dark.class.css +0 -122
- package/css/themes/dark.class.css.map +0 -1
- package/css/themes/dark.css +0 -3
- package/css/themes/dark.css.map +0 -1
- package/css/themes/dark.system.css +0 -124
- package/css/themes/dark.system.css.map +0 -1
- package/dist/collection/components/progress-bar/test/a11y/progress-bar.e2e.js +0 -24
- package/dist/collection/components/refresher/test/a11y/refresher.e2e.js +0 -25
- package/dist/collection/components/router-link/test/a11y/router-link.e2e.js +0 -23
- package/dist/collection/components/select-popover/test/a11y/select-popover.e2e.js +0 -32
- package/dist/collection/themes/test/colors/theme.e2e.js +0 -114
- package/dist/esm-es5/animation-dde8cc0d.js +0 -4
- package/dist/esm-es5/button-active-48379dd2.js +0 -4
- package/dist/esm-es5/md.transition-f992779f.js +0 -4
- package/dist/ionic/p-04d84d5d.entry.js +0 -4
- package/dist/ionic/p-068950da.entry.js +0 -4
- package/dist/ionic/p-0832dedf.entry.js +0 -4
- package/dist/ionic/p-11c55ac8.system.js +0 -4
- package/dist/ionic/p-1b60cc53.js +0 -4
- package/dist/ionic/p-24c3f2cd.system.entry.js +0 -4
- package/dist/ionic/p-2724403e.entry.js +0 -4
- package/dist/ionic/p-283bc1a1.system.entry.js +0 -4
- package/dist/ionic/p-29d03b3a.js +0 -4
- package/dist/ionic/p-38f2c6bb.system.js +0 -4
- package/dist/ionic/p-3af5faf8.system.entry.js +0 -4
- package/dist/ionic/p-713af1fe.entry.js +0 -4
- package/dist/ionic/p-8a25bf30.system.entry.js +0 -4
- package/dist/ionic/p-97aaf697.system.entry.js +0 -4
- package/dist/ionic/p-98f35d98.js +0 -4
- package/dist/ionic/p-9a68d8ef.system.js +0 -4
- package/dist/ionic/p-9a8bc8f3.system.entry.js +0 -4
- package/dist/ionic/p-a6e5f54e.system.entry.js +0 -4
- package/dist/ionic/p-b59fe3bd.system.entry.js +0 -4
- package/dist/ionic/p-b7e03ff0.system.entry.js +0 -4
- package/dist/ionic/p-bec6ae40.entry.js +0 -4
- package/dist/ionic/p-c16fbc5f.system.entry.js +0 -4
- package/dist/ionic/p-cb6a1fa0.system.entry.js +0 -4
- package/dist/ionic/p-cd3e1a06.entry.js +0 -4
- package/dist/ionic/p-cd574dfa.js +0 -4
- package/dist/ionic/p-d1ad57d5.system.entry.js +0 -4
- package/dist/ionic/p-d2634efe.system.entry.js +0 -4
- package/dist/ionic/p-fc17f198.entry.js +0 -4
|
@@ -4,115 +4,82 @@
|
|
|
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
|
-
|
|
7
|
+
/**
|
|
8
|
+
* This behavior does not vary across modes/directions.
|
|
9
|
+
*/
|
|
10
|
+
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
8
11
|
test.describe(title('radio: a11y'), () => {
|
|
9
|
-
test('
|
|
12
|
+
test('should not have accessibility violations', async ({ page }) => {
|
|
13
|
+
await page.goto(`/src/components/radio/test/a11y`, config);
|
|
14
|
+
const results = await new AxeBuilder({ page }).analyze();
|
|
15
|
+
expect(results.violations).toEqual([]);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
// TODO(FW-5715): re-enable test
|
|
19
|
+
test.skip(title('radio: keyboard navigation'), () => {
|
|
20
|
+
test.beforeEach(async ({ page }) => {
|
|
10
21
|
await page.setContent(`
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
<ion-radio aria-label="my aria label"></ion-radio>
|
|
14
|
-
<ion-radio-group>
|
|
15
|
-
<ion-radio>my label in a group</ion-radio>
|
|
16
|
-
</ion-radio-group>
|
|
17
|
-
<ion-radio-group>
|
|
18
|
-
<ion-radio aria-label="my aria label in a group"></ion-radio>
|
|
19
|
-
</ion-radio-group>
|
|
22
|
+
<ion-app>
|
|
23
|
+
<ion-content>
|
|
20
24
|
<ion-list>
|
|
21
|
-
<ion-
|
|
22
|
-
<ion-
|
|
23
|
-
<ion-radio>
|
|
24
|
-
</ion-
|
|
25
|
-
|
|
25
|
+
<ion-radio-group id="first-group" value="huey">
|
|
26
|
+
<ion-item>
|
|
27
|
+
<ion-radio value="huey">Huey</ion-radio>
|
|
28
|
+
</ion-item>
|
|
29
|
+
<ion-item>
|
|
30
|
+
<ion-radio value="dewey">Dewey</ion-radio>
|
|
31
|
+
</ion-item>
|
|
32
|
+
<ion-item>
|
|
33
|
+
<ion-radio value="fooey" disabled>Fooey</ion-radio>
|
|
34
|
+
</ion-item>
|
|
35
|
+
<ion-item>
|
|
36
|
+
<ion-radio value="louie">Louie</ion-radio>
|
|
37
|
+
</ion-item>
|
|
38
|
+
</ion-radio-group>
|
|
26
39
|
</ion-list>
|
|
27
40
|
<ion-list>
|
|
28
|
-
<ion-
|
|
29
|
-
<ion-
|
|
30
|
-
<ion-radio
|
|
31
|
-
</ion-
|
|
32
|
-
|
|
41
|
+
<ion-radio-group id="second-group" value="huey">
|
|
42
|
+
<ion-item>
|
|
43
|
+
<ion-radio value="huey">Huey</ion-radio>
|
|
44
|
+
</ion-item>
|
|
45
|
+
<ion-item>
|
|
46
|
+
<ion-radio value="dewey">Dewey</ion-radio>
|
|
47
|
+
</ion-item>
|
|
48
|
+
<ion-item>
|
|
49
|
+
<ion-radio value="fooey" disabled>Fooey</ion-radio>
|
|
50
|
+
</ion-item>
|
|
51
|
+
<ion-item>
|
|
52
|
+
<ion-radio value="louie">Louie</ion-radio>
|
|
53
|
+
</ion-item>
|
|
54
|
+
</ion-radio-group>
|
|
33
55
|
</ion-list>
|
|
34
|
-
</
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
expect(results.violations).toEqual([]);
|
|
56
|
+
</ion-content>
|
|
57
|
+
</ion-app>
|
|
58
|
+
`, config);
|
|
38
59
|
});
|
|
39
|
-
test('
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
expect(results.violations).toEqual([]);
|
|
60
|
+
test('tabbing should switch between radio groups', async ({ page, pageUtils }) => {
|
|
61
|
+
const firstGroupRadios = page.locator('#first-group ion-radio');
|
|
62
|
+
const secondGroupRadios = page.locator('#second-group ion-radio');
|
|
63
|
+
await pageUtils.pressKeys('Tab');
|
|
64
|
+
await expect(firstGroupRadios.nth(0)).toBeFocused();
|
|
65
|
+
await pageUtils.pressKeys('Tab');
|
|
66
|
+
await expect(secondGroupRadios.nth(0)).toBeFocused();
|
|
67
|
+
await pageUtils.pressKeys('shift+Tab');
|
|
68
|
+
await expect(firstGroupRadios.nth(0)).toBeFocused();
|
|
49
69
|
});
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
</ion-item>
|
|
64
|
-
<ion-item>
|
|
65
|
-
<ion-radio value="fooey" disabled>Fooey</ion-radio>
|
|
66
|
-
</ion-item>
|
|
67
|
-
<ion-item>
|
|
68
|
-
<ion-radio value="louie">Louie</ion-radio>
|
|
69
|
-
</ion-item>
|
|
70
|
-
</ion-radio-group>
|
|
71
|
-
</ion-list>
|
|
72
|
-
<ion-list>
|
|
73
|
-
<ion-radio-group id="second-group" value="huey">
|
|
74
|
-
<ion-item>
|
|
75
|
-
<ion-radio value="huey">Huey</ion-radio>
|
|
76
|
-
</ion-item>
|
|
77
|
-
<ion-item>
|
|
78
|
-
<ion-radio value="dewey">Dewey</ion-radio>
|
|
79
|
-
</ion-item>
|
|
80
|
-
<ion-item>
|
|
81
|
-
<ion-radio value="fooey" disabled>Fooey</ion-radio>
|
|
82
|
-
</ion-item>
|
|
83
|
-
<ion-item>
|
|
84
|
-
<ion-radio value="louie">Louie</ion-radio>
|
|
85
|
-
</ion-item>
|
|
86
|
-
</ion-radio-group>
|
|
87
|
-
</ion-list>
|
|
88
|
-
</ion-content>
|
|
89
|
-
</ion-app>
|
|
90
|
-
`, config);
|
|
91
|
-
});
|
|
92
|
-
test('tabbing should switch between radio groups', async ({ page, pageUtils }) => {
|
|
93
|
-
const firstGroupRadios = page.locator('#first-group ion-radio');
|
|
94
|
-
const secondGroupRadios = page.locator('#second-group ion-radio');
|
|
95
|
-
await pageUtils.pressKeys('Tab');
|
|
96
|
-
await expect(firstGroupRadios.nth(0)).toBeFocused();
|
|
97
|
-
await pageUtils.pressKeys('Tab');
|
|
98
|
-
await expect(secondGroupRadios.nth(0)).toBeFocused();
|
|
99
|
-
await pageUtils.pressKeys('shift+Tab');
|
|
100
|
-
await expect(firstGroupRadios.nth(0)).toBeFocused();
|
|
101
|
-
});
|
|
102
|
-
test('using arrow keys should move between enabled radios within group', async ({ page, pageUtils }) => {
|
|
103
|
-
const firstGroupRadios = page.locator('#first-group ion-radio');
|
|
104
|
-
await pageUtils.pressKeys('Tab');
|
|
105
|
-
await expect(firstGroupRadios.nth(0)).toBeFocused();
|
|
106
|
-
await page.keyboard.press('ArrowDown');
|
|
107
|
-
await expect(firstGroupRadios.nth(1)).toBeFocused();
|
|
108
|
-
// firstGroupRadios.nth(2) is disabled so it should not receive focus.
|
|
109
|
-
await page.keyboard.press('ArrowDown');
|
|
110
|
-
await expect(firstGroupRadios.nth(3)).toBeFocused();
|
|
111
|
-
await page.keyboard.press('ArrowDown');
|
|
112
|
-
await expect(firstGroupRadios.nth(0)).toBeFocused();
|
|
113
|
-
await page.keyboard.press('ArrowUp');
|
|
114
|
-
await expect(firstGroupRadios.nth(3)).toBeFocused();
|
|
115
|
-
});
|
|
70
|
+
test('using arrow keys should move between enabled radios within group', async ({ page, pageUtils }) => {
|
|
71
|
+
const firstGroupRadios = page.locator('#first-group ion-radio');
|
|
72
|
+
await pageUtils.pressKeys('Tab');
|
|
73
|
+
await expect(firstGroupRadios.nth(0)).toBeFocused();
|
|
74
|
+
await page.keyboard.press('ArrowDown');
|
|
75
|
+
await expect(firstGroupRadios.nth(1)).toBeFocused();
|
|
76
|
+
// firstGroupRadios.nth(2) is disabled so it should not receive focus.
|
|
77
|
+
await page.keyboard.press('ArrowDown');
|
|
78
|
+
await expect(firstGroupRadios.nth(3)).toBeFocused();
|
|
79
|
+
await page.keyboard.press('ArrowDown');
|
|
80
|
+
await expect(firstGroupRadios.nth(0)).toBeFocused();
|
|
81
|
+
await page.keyboard.press('ArrowUp');
|
|
82
|
+
await expect(firstGroupRadios.nth(3)).toBeFocused();
|
|
116
83
|
});
|
|
117
84
|
});
|
|
118
85
|
});
|
|
@@ -524,7 +524,7 @@
|
|
|
524
524
|
--knob-size: 26px;
|
|
525
525
|
--bar-height: 4px;
|
|
526
526
|
--bar-background: var(--ion-color-step-900, #e6e6e6);
|
|
527
|
-
--bar-background-active: var(--ion-color-primary, #
|
|
527
|
+
--bar-background-active: var(--ion-color-primary, #3880ff);
|
|
528
528
|
--bar-border-radius: 2px;
|
|
529
529
|
--height: 42px;
|
|
530
530
|
}
|
|
@@ -523,11 +523,11 @@
|
|
|
523
523
|
--knob-box-shadow: none;
|
|
524
524
|
--knob-size: 18px;
|
|
525
525
|
--bar-height: 2px;
|
|
526
|
-
--bar-background: rgba(var(--ion-color-primary-rgb,
|
|
527
|
-
--bar-background-active: var(--ion-color-primary, #
|
|
526
|
+
--bar-background: rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.26);
|
|
527
|
+
--bar-background-active: var(--ion-color-primary, #3880ff);
|
|
528
528
|
--bar-border-radius: 0;
|
|
529
529
|
--height: 42px;
|
|
530
|
-
--pin-background: var(--ion-color-primary, #
|
|
530
|
+
--pin-background: var(--ion-color-primary, #3880ff);
|
|
531
531
|
--pin-color: var(--ion-color-primary-contrast, #fff);
|
|
532
532
|
}
|
|
533
533
|
|
|
@@ -4,28 +4,18 @@
|
|
|
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({
|
|
7
|
+
configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
8
8
|
test.describe(title('range: a11y'), () => {
|
|
9
9
|
test('should not have accessibility violations', async ({ page }) => {
|
|
10
|
-
await page.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<ion-icon name="snow" slot="start" aria-hidden="true"></ion-icon>
|
|
18
|
-
<ion-icon name="flame" slot="end" aria-hidden="true"></ion-icon>
|
|
19
|
-
</ion-range>
|
|
20
|
-
</main>
|
|
21
|
-
`, config);
|
|
22
|
-
const results = await new AxeBuilder({ page }).analyze();
|
|
10
|
+
await page.goto(`/src/components/range/test/a11y`, config);
|
|
11
|
+
/**
|
|
12
|
+
* Axe does not take <slot> elements into account
|
|
13
|
+
* when checking color-contrast. As a result, it will
|
|
14
|
+
* incorrectly report color-contrast issues: https://github.com/dequelabs/axe-core/issues/3329
|
|
15
|
+
*/
|
|
16
|
+
const results = await new AxeBuilder({ page }).disableRules('color-contrast').analyze();
|
|
23
17
|
expect(results.violations).toEqual([]);
|
|
24
18
|
});
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
28
|
-
test.describe(title('range: a11y'), () => {
|
|
29
19
|
test('should not have visual regressions', async ({ page }) => {
|
|
30
20
|
await page.setContent(`<ion-app>
|
|
31
21
|
<ion-content>
|
|
@@ -260,7 +260,7 @@ ion-refresher.refresher-native ion-spinner {
|
|
|
260
260
|
margin-bottom: 0;
|
|
261
261
|
width: 24px;
|
|
262
262
|
height: 24px;
|
|
263
|
-
color: var(--ion-color-primary, #
|
|
263
|
+
color: var(--ion-color-primary, #3880ff);
|
|
264
264
|
}
|
|
265
265
|
ion-refresher.refresher-native .spinner-arrow-container {
|
|
266
266
|
display: inherit;
|
|
@@ -282,7 +282,7 @@ ion-refresher.refresher-native .arrow-container ion-icon {
|
|
|
282
282
|
right: 0;
|
|
283
283
|
bottom: -4px;
|
|
284
284
|
position: absolute;
|
|
285
|
-
color: var(--ion-color-primary, #
|
|
285
|
+
color: var(--ion-color-primary, #3880ff);
|
|
286
286
|
font-size: 12px;
|
|
287
287
|
}
|
|
288
288
|
ion-refresher.refresher-native.refresher-pulling ion-refresher-content .refresher-pulling, ion-refresher.refresher-native.refresher-ready ion-refresher-content .refresher-pulling {
|
|
@@ -46,7 +46,7 @@ export class RefresherContent {
|
|
|
46
46
|
const pullingIcon = this.pullingIcon;
|
|
47
47
|
const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
|
|
48
48
|
const mode = getIonMode(this);
|
|
49
|
-
return (h(Host, { class: mode }, h("div", { class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (h("div", { class: "refresher-pulling-icon" }, h("div", { class: "spinner-arrow-container" }, h("ion-spinner", { name: this.pullingIcon,
|
|
49
|
+
return (h(Host, { class: mode }, h("div", { class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (h("div", { class: "refresher-pulling-icon" }, h("div", { class: "spinner-arrow-container" }, h("ion-spinner", { name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (h("div", { class: "arrow-container" }, h("ion-icon", { icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (h("div", { class: "refresher-pulling-icon" }, h("ion-icon", { icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), h("div", { class: "refresher-refreshing" }, this.refreshingSpinner && (h("div", { class: "refresher-refreshing-icon" }, h("ion-spinner", { name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
|
|
50
50
|
}
|
|
51
51
|
static get is() { return "ion-refresher-content"; }
|
|
52
52
|
static get properties() {
|
|
@@ -262,7 +262,7 @@
|
|
|
262
262
|
--background: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.07);
|
|
263
263
|
--border-radius: 10px;
|
|
264
264
|
--box-shadow: none;
|
|
265
|
-
--cancel-button-color: var(--ion-color-primary, #
|
|
265
|
+
--cancel-button-color: var(--ion-color-primary, #3880ff);
|
|
266
266
|
--clear-button-color: var(--ion-color-step-600, #666666);
|
|
267
267
|
--color: var(--ion-text-color, #000);
|
|
268
268
|
--icon-color: var(--ion-color-step-600, #666666);
|
|
@@ -385,15 +385,15 @@
|
|
|
385
385
|
}
|
|
386
386
|
|
|
387
387
|
.searchbar-cancel-button {
|
|
388
|
-
-webkit-padding-start:
|
|
389
|
-
padding-inline-start:
|
|
388
|
+
-webkit-padding-start: 12px;
|
|
389
|
+
padding-inline-start: 12px;
|
|
390
390
|
-webkit-padding-end: 0;
|
|
391
391
|
padding-inline-end: 0;
|
|
392
392
|
padding-top: 0;
|
|
393
393
|
padding-bottom: 0;
|
|
394
394
|
flex-shrink: 0;
|
|
395
395
|
background-color: transparent;
|
|
396
|
-
font-size:
|
|
396
|
+
font-size: 17px;
|
|
397
397
|
}
|
|
398
398
|
|
|
399
399
|
:host(.searchbar-left-aligned) .searchbar-search-icon {
|
|
@@ -4,29 +4,6 @@
|
|
|
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
|
-
/**
|
|
8
|
-
* Only md mode uses ion-color() for the segment button
|
|
9
|
-
*/
|
|
10
|
-
configs({ directions: ['ltr'], modes: ['md'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
|
|
11
|
-
test.describe(title('segment: a11y for ion-color()'), () => {
|
|
12
|
-
test('should not have accessibility violations', async ({ page }) => {
|
|
13
|
-
await page.setContent(`
|
|
14
|
-
<main>
|
|
15
|
-
<ion-segment aria-label="Tab Options" value="bookmarks">
|
|
16
|
-
<ion-segment-button value="bookmarks">
|
|
17
|
-
<ion-label>Bookmarks</ion-label>
|
|
18
|
-
</ion-segment-button>
|
|
19
|
-
<ion-segment-button value="reading-list">
|
|
20
|
-
<ion-label>Reading List</ion-label>
|
|
21
|
-
</ion-segment-button>
|
|
22
|
-
</ion-segment>
|
|
23
|
-
</main>
|
|
24
|
-
`, config);
|
|
25
|
-
const results = await new AxeBuilder({ page }).analyze();
|
|
26
|
-
expect(results.violations).toEqual([]);
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
7
|
configs().forEach(({ title, config }) => {
|
|
31
8
|
test.describe(title('segment: a11y'), () => {
|
|
32
9
|
test('should not have any axe violations', async ({ page }) => {
|
|
@@ -362,7 +362,7 @@ ion-ripple-effect {
|
|
|
362
362
|
--background-focused-opacity: .12;
|
|
363
363
|
--background-hover-opacity: .04;
|
|
364
364
|
--color: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.6);
|
|
365
|
-
--color-checked: var(--ion-color-primary, #
|
|
365
|
+
--color-checked: var(--ion-color-primary, #3880ff);
|
|
366
366
|
--indicator-box-shadow: none;
|
|
367
367
|
--indicator-color: var(--color-checked);
|
|
368
368
|
--indicator-height: 2px;
|
|
@@ -425,7 +425,7 @@ ion-ripple-effect {
|
|
|
425
425
|
--background: var(--ion-toolbar-segment-background, none);
|
|
426
426
|
--background-checked: var(--ion-toolbar-segment-background-checked, none);
|
|
427
427
|
--color: var(--ion-toolbar-segment-color, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.6));
|
|
428
|
-
--color-checked: var(--ion-toolbar-segment-color-checked, var(--ion-color-primary, #
|
|
428
|
+
--color-checked: var(--ion-toolbar-segment-color-checked, var(--ion-color-primary, #3880ff));
|
|
429
429
|
--indicator-color: var(--ion-toolbar-segment-color-checked, var(--color-checked));
|
|
430
430
|
}
|
|
431
431
|
|
|
@@ -83,9 +83,9 @@
|
|
|
83
83
|
--placeholder-opacity: 0.6;
|
|
84
84
|
--background: transparent;
|
|
85
85
|
--border-style: solid;
|
|
86
|
-
--highlight-color-focused: var(--ion-color-primary, #
|
|
87
|
-
--highlight-color-valid: var(--ion-color-success, #
|
|
88
|
-
--highlight-color-invalid: var(--ion-color-danger, #
|
|
86
|
+
--highlight-color-focused: var(--ion-color-primary, #3880ff);
|
|
87
|
+
--highlight-color-valid: var(--ion-color-success, #2dd36f);
|
|
88
|
+
--highlight-color-invalid: var(--ion-color-danger, #eb445a);
|
|
89
89
|
/**
|
|
90
90
|
* This is a private API that is used to switch
|
|
91
91
|
* out the highlight color based on the state
|
|
@@ -83,9 +83,9 @@
|
|
|
83
83
|
--placeholder-opacity: 0.6;
|
|
84
84
|
--background: transparent;
|
|
85
85
|
--border-style: solid;
|
|
86
|
-
--highlight-color-focused: var(--ion-color-primary, #
|
|
87
|
-
--highlight-color-valid: var(--ion-color-success, #
|
|
88
|
-
--highlight-color-invalid: var(--ion-color-danger, #
|
|
86
|
+
--highlight-color-focused: var(--ion-color-primary, #3880ff);
|
|
87
|
+
--highlight-color-valid: var(--ion-color-success, #2dd36f);
|
|
88
|
+
--highlight-color-invalid: var(--ion-color-danger, #eb445a);
|
|
89
89
|
/**
|
|
90
90
|
* This is a private API that is used to switch
|
|
91
91
|
* out the highlight color based on the state
|
|
@@ -4,74 +4,10 @@
|
|
|
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({
|
|
8
|
-
test.describe(title('
|
|
9
|
-
test('
|
|
10
|
-
await page.
|
|
11
|
-
<main>
|
|
12
|
-
<ion-select label="Label" placeholder="Placeholder"></ion-select>
|
|
13
|
-
<ion-select placeholder="Placeholder">
|
|
14
|
-
<div slot="label">Label</div>
|
|
15
|
-
</ion-select>
|
|
16
|
-
<ion-select label="Label" value="a">
|
|
17
|
-
<ion-select-option value="a">Apple</ion-select-option>
|
|
18
|
-
</ion-select>
|
|
19
|
-
<ion-select aria-label="Label"></ion-select>
|
|
20
|
-
<ion-item>
|
|
21
|
-
<ion-select label="My Label" value="apples">
|
|
22
|
-
<ion-select-option value="apples">Apples</ion-select-option>
|
|
23
|
-
<ion-select-option value="bananas">Bananas</ion-select-option>
|
|
24
|
-
<ion-select-option value="oranges">Oranges</ion-select-option>
|
|
25
|
-
</ion-select>
|
|
26
|
-
</ion-item>
|
|
27
|
-
<ion-select id="multiple" multiple="true" label="My Label">
|
|
28
|
-
<ion-select-option value="apples">Apples</ion-select-option>
|
|
29
|
-
<ion-select-option value="bananas">Bananas</ion-select-option>
|
|
30
|
-
<ion-select-option value="oranges">Oranges</ion-select-option>
|
|
31
|
-
</ion-select>
|
|
32
|
-
<ion-select label="My Label" label-placement="floating">
|
|
33
|
-
<ion-icon slot="start" name="pizza" aria-hidden="true"></ion-icon>
|
|
34
|
-
<ion-select-option value="apples">Apples</ion-select-option>
|
|
35
|
-
<ion-select-option value="bananas">Bananas</ion-select-option>
|
|
36
|
-
<ion-select-option value="oranges">Oranges</ion-select-option>
|
|
37
|
-
<ion-button slot="end" aria-label="button">
|
|
38
|
-
<ion-icon slot="icon-only" name="lock-closed" aria-hidden="true"></ion-icon>
|
|
39
|
-
</ion-button>
|
|
40
|
-
</ion-select>
|
|
41
|
-
|
|
42
|
-
<script>
|
|
43
|
-
const multiple = document.querySelector('#multiple');
|
|
44
|
-
multiple.value = ['apples', 'bananas'];
|
|
45
|
-
</script>
|
|
46
|
-
</main>
|
|
47
|
-
`, config);
|
|
48
|
-
const results = await new AxeBuilder({ page }).analyze();
|
|
49
|
-
expect(results.violations).toEqual([]);
|
|
50
|
-
});
|
|
51
|
-
test('focused state should not have accessibility violations', async ({ page }) => {
|
|
52
|
-
/**
|
|
53
|
-
* The primary color against the focus background
|
|
54
|
-
* when using fill="solid" does not meet AA
|
|
55
|
-
* contrast guidelines so it excluded from the test.
|
|
56
|
-
* The contrast here is a significant improvement
|
|
57
|
-
* over what Ionic has had in the past, so the team
|
|
58
|
-
* has decided that this tradeoff is acceptable since
|
|
59
|
-
* the scope of the problem is limited to the focus
|
|
60
|
-
* state with the primary color when fill="solid".
|
|
61
|
-
*/
|
|
62
|
-
await page.setContent(`
|
|
63
|
-
<main>
|
|
64
|
-
<ion-select class="has-focus" label="Label" value="a">
|
|
65
|
-
<ion-select-option value="a">Apple</ion-select-option>
|
|
66
|
-
</ion-select>
|
|
67
|
-
<ion-select class="has-focus" label-placement="floating" label="Label" value="a">
|
|
68
|
-
<ion-select-option value="a">Apple</ion-select-option>
|
|
69
|
-
</ion-select>
|
|
70
|
-
<ion-select class="has-focus" fill="outline" label-placement="floating" label="Label" value="a">
|
|
71
|
-
<ion-select-option value="a">Apple</ion-select-option>
|
|
72
|
-
</ion-select>
|
|
73
|
-
</main>
|
|
74
|
-
`, config);
|
|
7
|
+
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
8
|
+
test.describe(title('select: a11y'), () => {
|
|
9
|
+
test('should not have accessibility violations', async ({ page }) => {
|
|
10
|
+
await page.goto(`/src/components/select/test/a11y`, config);
|
|
75
11
|
const results = await new AxeBuilder({ page }).analyze();
|
|
76
12
|
expect(results.violations).toEqual([]);
|
|
77
13
|
});
|
|
@@ -187,10 +187,10 @@ ion-item {
|
|
|
187
187
|
}
|
|
188
188
|
|
|
189
189
|
.item-radio-checked {
|
|
190
|
-
--background: rgba(var(--ion-color-primary-rgb,
|
|
191
|
-
--background-focused: var(--ion-color-primary, #
|
|
190
|
+
--background: rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.08);
|
|
191
|
+
--background-focused: var(--ion-color-primary, #3880ff);
|
|
192
192
|
--background-focused-opacity: 0.2;
|
|
193
|
-
--background-hover: var(--ion-color-primary, #
|
|
193
|
+
--background-hover: var(--ion-color-primary, #3880ff);
|
|
194
194
|
--background-hover-opacity: 0.12;
|
|
195
195
|
}
|
|
196
196
|
|
|
@@ -198,5 +198,5 @@ ion-item {
|
|
|
198
198
|
--background-activated: var(--ion-item-color, var(--ion-text-color, #000));
|
|
199
199
|
--background-focused: var(--ion-item-color, var(--ion-text-color, #000));
|
|
200
200
|
--background-hover: var(--ion-item-color, var(--ion-text-color, #000));
|
|
201
|
-
--color: var(--ion-color-primary, #
|
|
201
|
+
--color: var(--ion-color-primary, #3880ff);
|
|
202
202
|
}
|
|
@@ -234,7 +234,7 @@
|
|
|
234
234
|
--background-focused: var(--ion-tab-bar-background-focused, #e0e0e0);
|
|
235
235
|
--border: 0.55px solid var(--ion-tab-bar-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.2))));
|
|
236
236
|
--color: var(--ion-tab-bar-color, var(--ion-color-step-600, #666666));
|
|
237
|
-
--color-selected: var(--ion-tab-bar-color-selected, var(--ion-color-primary, #
|
|
237
|
+
--color-selected: var(--ion-tab-bar-color-selected, var(--ion-color-primary, #3880ff));
|
|
238
238
|
height: 50px;
|
|
239
239
|
}
|
|
240
240
|
|
|
@@ -234,6 +234,6 @@
|
|
|
234
234
|
--background-focused: var(--ion-tab-bar-background-focused, #e0e0e0);
|
|
235
235
|
--border: 1px solid var(--ion-tab-bar-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.07))));
|
|
236
236
|
--color: var(--ion-tab-bar-color, var(--ion-color-step-650, #595959));
|
|
237
|
-
--color-selected: var(--ion-tab-bar-color-selected, var(--ion-color-primary, #
|
|
237
|
+
--color-selected: var(--ion-tab-bar-color-selected, var(--ion-color-primary, #3880ff));
|
|
238
238
|
height: 56px;
|
|
239
239
|
}
|
|
@@ -332,7 +332,7 @@ ion-ripple-effect {
|
|
|
332
332
|
::slotted(ion-icon) {
|
|
333
333
|
margin-top: 2px;
|
|
334
334
|
margin-bottom: 2px;
|
|
335
|
-
font-size:
|
|
335
|
+
font-size: 24px;
|
|
336
336
|
}
|
|
337
337
|
|
|
338
338
|
::slotted(ion-icon::before) {
|
|
@@ -474,4 +474,9 @@ ion-ripple-effect {
|
|
|
474
474
|
margin-right: 0;
|
|
475
475
|
margin-top: 0;
|
|
476
476
|
margin-bottom: 0;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
:host(.tab-layout-label-hide) ::slotted(ion-icon),
|
|
480
|
+
:host(.tab-has-icon-only) ::slotted(ion-icon) {
|
|
481
|
+
font-size: 30px;
|
|
477
482
|
}
|
|
@@ -4,52 +4,14 @@
|
|
|
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']
|
|
7
|
+
configs({ directions: ['ltr'] }).forEach(({ title, config, screenshot }) => {
|
|
8
8
|
test.describe(title('textarea: a11y'), () => {
|
|
9
|
-
test('
|
|
10
|
-
await page.
|
|
11
|
-
<main>
|
|
12
|
-
<ion-textarea label="Label" placeholder="Placeholder"></ion-textarea>
|
|
13
|
-
<ion-textarea placeholder="Placeholder">
|
|
14
|
-
<div slot="label">Label"></div>
|
|
15
|
-
</ion-textarea>
|
|
16
|
-
<ion-textarea label="Label" value="My Text"></ion-textarea>
|
|
17
|
-
<ion-textarea aria-label="Label"></ion-textarea>
|
|
18
|
-
<ion-textarea label="Email" label-placement="floating" fill="solid" value="hi@ionic.io">
|
|
19
|
-
<ion-icon slot="start" name="lock-closed" aria-hidden="true"></ion-icon>
|
|
20
|
-
<ion-button slot="end" aria-label="button">
|
|
21
|
-
<ion-icon slot="icon-only" name="lock-closed" aria-hidden="true"></ion-icon>
|
|
22
|
-
</ion-button>
|
|
23
|
-
</ion-textarea>
|
|
24
|
-
</main>
|
|
25
|
-
`, config);
|
|
26
|
-
const results = await new AxeBuilder({ page }).analyze();
|
|
27
|
-
expect(results.violations).toEqual([]);
|
|
28
|
-
});
|
|
29
|
-
test('focused state should not have accessibility violations', async ({ page }) => {
|
|
30
|
-
/**
|
|
31
|
-
* The primary color against the focus background
|
|
32
|
-
* when using fill="solid" does not meet AA
|
|
33
|
-
* contrast guidelines so it excluded from the test.
|
|
34
|
-
* The contrast here is a significant improvement
|
|
35
|
-
* over what Ionic has had in the past, so the team
|
|
36
|
-
* has decided that this tradeoff is acceptable since
|
|
37
|
-
* the scope of the problem is limited to the focus
|
|
38
|
-
* state with the primary color when fill="solid".
|
|
39
|
-
*/
|
|
40
|
-
await page.setContent(`
|
|
41
|
-
<main>
|
|
42
|
-
<ion-textarea class="has-focus" label="Label" value="My Text"></ion-textarea>
|
|
43
|
-
<ion-textarea class="has-focus" label-placement="floating" label="Label" value="My Text"></ion-textarea>
|
|
44
|
-
<ion-textarea class="has-focus" fill="outline" label-placement="floating" label="Label" value="My Text"></ion-textarea>
|
|
45
|
-
</main>
|
|
46
|
-
`, config);
|
|
9
|
+
test('should not have accessibility violations', async ({ page }) => {
|
|
10
|
+
await page.goto(`/src/components/textarea/test/a11y`, config);
|
|
47
11
|
const results = await new AxeBuilder({ page }).analyze();
|
|
48
12
|
expect(results.violations).toEqual([]);
|
|
49
13
|
});
|
|
50
14
|
});
|
|
51
|
-
});
|
|
52
|
-
configs({ directions: ['ltr'] }).forEach(({ title, config, screenshot }) => {
|
|
53
15
|
test.describe(title('textarea: font scaling'), () => {
|
|
54
16
|
test('should scale text on larger font sizes', async ({ page }) => {
|
|
55
17
|
await page.setContent(`
|
|
@@ -91,9 +91,9 @@
|
|
|
91
91
|
--padding-start: 0;
|
|
92
92
|
--border-radius: 0;
|
|
93
93
|
--border-style: solid;
|
|
94
|
-
--highlight-color-focused: var(--ion-color-primary, #
|
|
95
|
-
--highlight-color-valid: var(--ion-color-success, #
|
|
96
|
-
--highlight-color-invalid: var(--ion-color-danger, #
|
|
94
|
+
--highlight-color-focused: var(--ion-color-primary, #3880ff);
|
|
95
|
+
--highlight-color-valid: var(--ion-color-success, #2dd36f);
|
|
96
|
+
--highlight-color-invalid: var(--ion-color-danger, #eb445a);
|
|
97
97
|
/**
|
|
98
98
|
* This is a private API that is used to switch
|
|
99
99
|
* out the highlight color based on the state
|
|
@@ -91,9 +91,9 @@
|
|
|
91
91
|
--padding-start: 0;
|
|
92
92
|
--border-radius: 0;
|
|
93
93
|
--border-style: solid;
|
|
94
|
-
--highlight-color-focused: var(--ion-color-primary, #
|
|
95
|
-
--highlight-color-valid: var(--ion-color-success, #
|
|
96
|
-
--highlight-color-invalid: var(--ion-color-danger, #
|
|
94
|
+
--highlight-color-focused: var(--ion-color-primary, #3880ff);
|
|
95
|
+
--highlight-color-valid: var(--ion-color-success, #2dd36f);
|
|
96
|
+
--highlight-color-invalid: var(--ion-color-danger, #eb445a);
|
|
97
97
|
/**
|
|
98
98
|
* This is a private API that is used to switch
|
|
99
99
|
* out the highlight color based on the state
|