@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
|
@@ -83,6 +83,7 @@
|
|
|
83
83
|
* @prop --button-color-hover: Color of the action sheet button on hover
|
|
84
84
|
* @prop --button-color-focused: Color of the action sheet button when tabbed to
|
|
85
85
|
* @prop --button-color-selected: Color of the selected action sheet button
|
|
86
|
+
* @prop --button-color-disabled: Color of the selected action sheet button when disabled
|
|
86
87
|
*/
|
|
87
88
|
--color: initial;
|
|
88
89
|
--button-color-activated: var(--button-color);
|
|
@@ -143,6 +144,11 @@
|
|
|
143
144
|
overflow: hidden;
|
|
144
145
|
}
|
|
145
146
|
|
|
147
|
+
.action-sheet-button:disabled {
|
|
148
|
+
color: var(--button-color-disabled);
|
|
149
|
+
opacity: 0.4;
|
|
150
|
+
}
|
|
151
|
+
|
|
146
152
|
.action-sheet-button-inner {
|
|
147
153
|
display: flex;
|
|
148
154
|
position: relative;
|
|
@@ -232,10 +238,10 @@
|
|
|
232
238
|
}
|
|
233
239
|
|
|
234
240
|
@media (any-hover: hover) {
|
|
235
|
-
.action-sheet-button:hover {
|
|
241
|
+
.action-sheet-button:not(:disabled):hover {
|
|
236
242
|
color: var(--button-color-hover);
|
|
237
243
|
}
|
|
238
|
-
.action-sheet-button:hover::after {
|
|
244
|
+
.action-sheet-button:not(:disabled):hover::after {
|
|
239
245
|
background: var(--button-background-hover);
|
|
240
246
|
opacity: var(--button-background-hover-opacity);
|
|
241
247
|
}
|
|
@@ -308,6 +314,7 @@
|
|
|
308
314
|
--button-background-focused: currentColor;
|
|
309
315
|
--button-background-focused-opacity: .12;
|
|
310
316
|
--button-color: var(--ion-color-step-850, #262626);
|
|
317
|
+
--button-color-disabled: var(--button-color);
|
|
311
318
|
--color: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54);
|
|
312
319
|
}
|
|
313
320
|
|
|
@@ -26,33 +26,24 @@ const testAriaButton = async (page, buttonID, expectedAriaLabelledBy, expectedAr
|
|
|
26
26
|
await expect(actionSheetButton).toHaveAttribute('aria-labelledby', expectedAriaLabelledBy);
|
|
27
27
|
await expect(actionSheetButton).toHaveAttribute('aria-label', expectedAriaLabel);
|
|
28
28
|
};
|
|
29
|
-
configs({ directions: ['ltr'], themes: ['dark', 'light'] }).forEach(({ config, title }) => {
|
|
30
|
-
test.describe(title('action-sheet: Axe testing'), () => {
|
|
31
|
-
test('should not have accessibility violations when header is defined', async ({ page }) => {
|
|
32
|
-
await page.setContent(`
|
|
33
|
-
<ion-action-sheet></ion-action-sheet>
|
|
34
|
-
|
|
35
|
-
<script>
|
|
36
|
-
const actionSheet = document.querySelector('ion-action-sheet');
|
|
37
|
-
actionSheet.header = 'Header';
|
|
38
|
-
actionSheet.subHeader = 'Subtitle';
|
|
39
|
-
actionSheet.buttons = ['Confirm'];
|
|
40
|
-
</script>
|
|
41
|
-
`, config);
|
|
42
|
-
const ionActionSheetDidPresent = await page.spyOnEvent('ionActionSheetDidPresent');
|
|
43
|
-
const actionSheet = page.locator('ion-action-sheet');
|
|
44
|
-
await actionSheet.evaluate((el) => el.present());
|
|
45
|
-
await ionActionSheetDidPresent.next();
|
|
46
|
-
const results = await new AxeBuilder({ page }).analyze();
|
|
47
|
-
expect(results.violations).toEqual([]);
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
29
|
configs({ directions: ['ltr'] }).forEach(({ config, title }) => {
|
|
52
|
-
test.describe(title('action-sheet:
|
|
30
|
+
test.describe(title('action-sheet: a11y'), () => {
|
|
53
31
|
test.beforeEach(async ({ page }) => {
|
|
54
32
|
await page.goto(`/src/components/action-sheet/test/a11y`, config);
|
|
55
33
|
});
|
|
34
|
+
test('should not have accessibility violations when header is defined', async ({ page }) => {
|
|
35
|
+
const button = page.locator('#bothHeaders');
|
|
36
|
+
const didPresent = await page.spyOnEvent('ionActionSheetDidPresent');
|
|
37
|
+
await button.click();
|
|
38
|
+
await didPresent.next();
|
|
39
|
+
/**
|
|
40
|
+
* action-sheet overlays the entire screen, so
|
|
41
|
+
* Axe will be unable to verify color contrast
|
|
42
|
+
* on elements under the backdrop.
|
|
43
|
+
*/
|
|
44
|
+
const results = await new AxeBuilder({ page }).disableRules('color-contrast').analyze();
|
|
45
|
+
expect(results.violations).toEqual([]);
|
|
46
|
+
});
|
|
56
47
|
test('should have aria-labelledby when header is set', async ({ page }) => {
|
|
57
48
|
await testAria(page, 'bothHeaders', 'action-sheet-1-header');
|
|
58
49
|
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
+
import { expect } from "@playwright/test";
|
|
4
5
|
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
5
6
|
import { ActionSheetFixture } from "./fixture";
|
|
6
7
|
configs().forEach(({ config, screenshot, title }) => {
|
|
@@ -39,3 +40,21 @@ configs().forEach(({ config, screenshot, title }) => {
|
|
|
39
40
|
});
|
|
40
41
|
});
|
|
41
42
|
});
|
|
43
|
+
configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
44
|
+
test.describe(title('action sheet: disabled buttons'), () => {
|
|
45
|
+
test('should render disabled button', async ({ page }) => {
|
|
46
|
+
await page.setContent(`
|
|
47
|
+
<ion-action-sheet></ion-action-sheet>
|
|
48
|
+
<script>
|
|
49
|
+
const actionSheet = document.querySelector('ion-action-sheet');
|
|
50
|
+
actionSheet.buttons = [
|
|
51
|
+
{ text: 'Disabled', disabled: true }
|
|
52
|
+
];
|
|
53
|
+
</script>
|
|
54
|
+
`, config);
|
|
55
|
+
const actionSheet = page.locator('ion-action-sheet');
|
|
56
|
+
await actionSheet.evaluate((el) => el.present());
|
|
57
|
+
await expect(actionSheet).toHaveScreenshot(screenshot('action-sheet-disabled'));
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
});
|
|
@@ -16,3 +16,25 @@ describe('action sheet: htmlAttributes inheritance', () => {
|
|
|
16
16
|
await expect(actionSheet.getAttribute('data-testid')).toBe('basic-action-sheet');
|
|
17
17
|
});
|
|
18
18
|
});
|
|
19
|
+
describe('action sheet: disabled buttons', () => {
|
|
20
|
+
it('regular button should be disabled', async () => {
|
|
21
|
+
const page = await newSpecPage({
|
|
22
|
+
components: [ActionSheet],
|
|
23
|
+
template: () => (h("ion-action-sheet", { buttons: [{ text: 'cancel', disabled: true }], overlayIndex: 1 })),
|
|
24
|
+
});
|
|
25
|
+
const actionSheet = page.body.querySelector('ion-action-sheet');
|
|
26
|
+
await actionSheet.present();
|
|
27
|
+
const button = actionSheet.querySelector('.action-sheet-button');
|
|
28
|
+
await expect(button.hasAttribute('disabled')).toBe(true);
|
|
29
|
+
});
|
|
30
|
+
it('cancel button should not be disabled', async () => {
|
|
31
|
+
const page = await newSpecPage({
|
|
32
|
+
components: [ActionSheet],
|
|
33
|
+
template: () => (h("ion-action-sheet", { buttons: [{ text: 'cancel', role: 'cancel', disabled: true }], overlayIndex: 1 })),
|
|
34
|
+
});
|
|
35
|
+
const actionSheet = page.body.querySelector('ion-action-sheet');
|
|
36
|
+
await actionSheet.present();
|
|
37
|
+
const cancelButton = actionSheet.querySelector('.action-sheet-cancel');
|
|
38
|
+
await expect(cancelButton.hasAttribute('disabled')).toBe(false);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
@@ -477,17 +477,18 @@ textarea.alert-input {
|
|
|
477
477
|
}
|
|
478
478
|
|
|
479
479
|
.alert-input {
|
|
480
|
-
border-radius:
|
|
480
|
+
border-radius: 7px;
|
|
481
481
|
margin-top: 10px;
|
|
482
|
-
-webkit-padding-start:
|
|
483
|
-
padding-inline-start:
|
|
484
|
-
-webkit-padding-end:
|
|
485
|
-
padding-inline-end:
|
|
486
|
-
padding-top:
|
|
487
|
-
padding-bottom:
|
|
482
|
+
-webkit-padding-start: 7px;
|
|
483
|
+
padding-inline-start: 7px;
|
|
484
|
+
-webkit-padding-end: 7px;
|
|
485
|
+
padding-inline-end: 7px;
|
|
486
|
+
padding-top: 7px;
|
|
487
|
+
padding-bottom: 7px;
|
|
488
488
|
border: 0.55px solid var(--ion-color-step-250, #bfbfbf);
|
|
489
489
|
background-color: var(--ion-background-color, #fff);
|
|
490
490
|
appearance: none;
|
|
491
|
+
font-size: 1rem;
|
|
491
492
|
}
|
|
492
493
|
.alert-input::placeholder {
|
|
493
494
|
color: var(--ion-placeholder-color, var(--ion-color-step-400, #999999));
|
|
@@ -499,10 +500,10 @@ textarea.alert-input {
|
|
|
499
500
|
}
|
|
500
501
|
.alert-input::-webkit-date-and-time-value {
|
|
501
502
|
/**
|
|
502
|
-
* The -webkit-date-and-time-value pseudo element is used
|
|
503
|
+
* The -webkit-date-and-time-value pseudo element is used
|
|
503
504
|
* to style the date/time input on iOS/Mobile Safari.
|
|
504
505
|
* To avoid layout shift between an empty state and a selected state,
|
|
505
|
-
* we set the height `18px` to match the native input height for
|
|
506
|
+
* we set the height `18px` to match the native input height for
|
|
506
507
|
* date/time inputs on iOS/Mobile Safari.
|
|
507
508
|
*/
|
|
508
509
|
height: 18px;
|
|
@@ -534,7 +535,7 @@ textarea.alert-input {
|
|
|
534
535
|
}
|
|
535
536
|
|
|
536
537
|
[aria-checked=true] .alert-radio-label {
|
|
537
|
-
color: var(--ion-color-primary, #
|
|
538
|
+
color: var(--ion-color-primary, #3880ff);
|
|
538
539
|
}
|
|
539
540
|
|
|
540
541
|
.alert-radio-icon {
|
|
@@ -553,7 +554,7 @@ textarea.alert-input {
|
|
|
553
554
|
border-top-width: 0;
|
|
554
555
|
border-left-width: 0;
|
|
555
556
|
border-style: solid;
|
|
556
|
-
border-color: var(--ion-color-primary, #
|
|
557
|
+
border-color: var(--ion-color-primary, #3880ff);
|
|
557
558
|
}
|
|
558
559
|
@supports (inset-inline-start: 0) {
|
|
559
560
|
[aria-checked=true] .alert-radio-inner {
|
|
@@ -603,9 +604,9 @@ textarea.alert-input {
|
|
|
603
604
|
margin-top: 10px;
|
|
604
605
|
margin-bottom: 10px;
|
|
605
606
|
position: relative;
|
|
606
|
-
width: min(1.
|
|
607
|
-
height: min(1.
|
|
608
|
-
border-width: 0.
|
|
607
|
+
width: min(1.375rem, 55.836px);
|
|
608
|
+
height: min(1.375rem, 55.836px);
|
|
609
|
+
border-width: 0.125rem;
|
|
609
610
|
border-style: solid;
|
|
610
611
|
border-color: var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, #c8c7cc)));
|
|
611
612
|
background-color: var(--ion-item-background, var(--ion-background-color, #fff));
|
|
@@ -613,17 +614,17 @@ textarea.alert-input {
|
|
|
613
614
|
}
|
|
614
615
|
|
|
615
616
|
[aria-checked=true] .alert-checkbox-icon {
|
|
616
|
-
border-color: var(--ion-color-primary, #
|
|
617
|
-
background-color: var(--ion-color-primary, #
|
|
617
|
+
border-color: var(--ion-color-primary, #3880ff);
|
|
618
|
+
background-color: var(--ion-color-primary, #3880ff);
|
|
618
619
|
}
|
|
619
620
|
|
|
620
621
|
[aria-checked=true] .alert-checkbox-inner {
|
|
621
|
-
top: calc(min(1.
|
|
622
|
+
top: calc(min(1.375rem, 55.836px) / 8);
|
|
622
623
|
position: absolute;
|
|
623
|
-
width: calc(min(1.
|
|
624
|
-
height: calc(min(1.
|
|
624
|
+
width: calc(min(1.375rem, 55.836px) / 6 + 1px);
|
|
625
|
+
height: calc(min(1.375rem, 55.836px) * 0.5);
|
|
625
626
|
transform: rotate(45deg);
|
|
626
|
-
border-width: 0.
|
|
627
|
+
border-width: 0.125rem;
|
|
627
628
|
border-top-width: 0;
|
|
628
629
|
border-left-width: 0;
|
|
629
630
|
border-style: solid;
|
|
@@ -631,28 +632,28 @@ textarea.alert-input {
|
|
|
631
632
|
}
|
|
632
633
|
@supports (inset-inline-start: 0) {
|
|
633
634
|
[aria-checked=true] .alert-checkbox-inner {
|
|
634
|
-
inset-inline-start: calc(min(1.
|
|
635
|
+
inset-inline-start: calc(min(1.375rem, 55.836px) / 3);
|
|
635
636
|
}
|
|
636
637
|
}
|
|
637
638
|
@supports not (inset-inline-start: 0) {
|
|
638
639
|
[aria-checked=true] .alert-checkbox-inner {
|
|
639
|
-
left: calc(min(1.
|
|
640
|
+
left: calc(min(1.375rem, 55.836px) / 3);
|
|
640
641
|
}
|
|
641
642
|
:host-context([dir=rtl]) [aria-checked=true] .alert-checkbox-inner {
|
|
642
643
|
left: unset;
|
|
643
644
|
right: unset;
|
|
644
|
-
right: calc(min(1.
|
|
645
|
+
right: calc(min(1.375rem, 55.836px) / 3);
|
|
645
646
|
}
|
|
646
647
|
[dir=rtl] [aria-checked=true] .alert-checkbox-inner {
|
|
647
648
|
left: unset;
|
|
648
649
|
right: unset;
|
|
649
|
-
right: calc(min(1.
|
|
650
|
+
right: calc(min(1.375rem, 55.836px) / 3);
|
|
650
651
|
}
|
|
651
652
|
@supports selector(:dir(rtl)) {
|
|
652
653
|
[aria-checked=true] .alert-checkbox-inner:dir(rtl) {
|
|
653
654
|
left: unset;
|
|
654
655
|
right: unset;
|
|
655
|
-
right: calc(min(1.
|
|
656
|
+
right: calc(min(1.375rem, 55.836px) / 3);
|
|
656
657
|
}
|
|
657
658
|
}
|
|
658
659
|
}
|
|
@@ -684,7 +685,7 @@ textarea.alert-input {
|
|
|
684
685
|
border-top: 0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);
|
|
685
686
|
border-right: 0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);
|
|
686
687
|
background-color: transparent;
|
|
687
|
-
color: var(--ion-color-primary, #
|
|
688
|
+
color: var(--ion-color-primary, #3880ff);
|
|
688
689
|
font-size: max(17px, 1.0625rem);
|
|
689
690
|
overflow: hidden;
|
|
690
691
|
}
|
|
@@ -728,5 +729,5 @@ textarea.alert-input {
|
|
|
728
729
|
.alert-button-role-destructive,
|
|
729
730
|
.alert-button-role-destructive.ion-activated,
|
|
730
731
|
.alert-button-role-destructive.ion-focused {
|
|
731
|
-
color: var(--ion-color-danger, #
|
|
732
|
+
color: var(--ion-color-danger, #eb445a);
|
|
732
733
|
}
|
|
@@ -494,7 +494,7 @@ textarea.alert-input {
|
|
|
494
494
|
|
|
495
495
|
.alert-input:focus {
|
|
496
496
|
margin-bottom: 4px;
|
|
497
|
-
border-bottom: 2px solid var(--ion-color-primary, #
|
|
497
|
+
border-bottom: 2px solid var(--ion-color-primary, #3880ff);
|
|
498
498
|
}
|
|
499
499
|
|
|
500
500
|
.alert-radio-group,
|
|
@@ -580,7 +580,7 @@ textarea.alert-input {
|
|
|
580
580
|
height: 10px;
|
|
581
581
|
transform: scale3d(0, 0, 0);
|
|
582
582
|
transition: transform 280ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
583
|
-
background-color: var(--ion-color-primary, #
|
|
583
|
+
background-color: var(--ion-color-primary, #3880ff);
|
|
584
584
|
}
|
|
585
585
|
@supports (inset-inline-start: 0) {
|
|
586
586
|
.alert-radio-inner {
|
|
@@ -615,7 +615,7 @@ textarea.alert-input {
|
|
|
615
615
|
}
|
|
616
616
|
|
|
617
617
|
[aria-checked=true] .alert-radio-icon {
|
|
618
|
-
border-color: var(--ion-color-primary, #
|
|
618
|
+
border-color: var(--ion-color-primary, #3880ff);
|
|
619
619
|
}
|
|
620
620
|
|
|
621
621
|
[aria-checked=true] .alert-radio-inner {
|
|
@@ -675,8 +675,8 @@ textarea.alert-input {
|
|
|
675
675
|
}
|
|
676
676
|
|
|
677
677
|
[aria-checked=true] .alert-checkbox-icon {
|
|
678
|
-
border-color: var(--ion-color-primary, #
|
|
679
|
-
background-color: var(--ion-color-primary, #
|
|
678
|
+
border-color: var(--ion-color-primary, #3880ff);
|
|
679
|
+
background-color: var(--ion-color-primary, #3880ff);
|
|
680
680
|
}
|
|
681
681
|
|
|
682
682
|
[aria-checked=true] .alert-checkbox-inner {
|
|
@@ -747,7 +747,7 @@ textarea.alert-input {
|
|
|
747
747
|
padding-bottom: 10px;
|
|
748
748
|
position: relative;
|
|
749
749
|
background-color: transparent;
|
|
750
|
-
color: var(--ion-color-primary, #
|
|
750
|
+
color: var(--ion-color-primary, #3880ff);
|
|
751
751
|
font-weight: 500;
|
|
752
752
|
text-align: end;
|
|
753
753
|
text-transform: uppercase;
|
|
@@ -19,28 +19,6 @@ const testAria = async (page, buttonID, expectedAriaLabelledBy, expectedAriaDesc
|
|
|
19
19
|
expect(ariaLabelledBy).toBe(expectedAriaLabelledBy);
|
|
20
20
|
expect(ariaDescribedBy).toBe(expectedAriaDescribedBy);
|
|
21
21
|
};
|
|
22
|
-
configs({ directions: ['ltr'], themes: ['dark', 'light'] }).forEach(({ title, config }) => {
|
|
23
|
-
test.describe(title('alert: Axe testing'), () => {
|
|
24
|
-
test('should not have accessibility violations when header and message are defined', async ({ page }) => {
|
|
25
|
-
await page.setContent(`
|
|
26
|
-
<ion-alert></ion-alert>
|
|
27
|
-
|
|
28
|
-
<script>
|
|
29
|
-
const alert = document.querySelector('ion-alert');
|
|
30
|
-
alert.header = 'Header';
|
|
31
|
-
alert.subHeader = 'Subtitle';
|
|
32
|
-
alert.buttons = ['OK'];
|
|
33
|
-
</script>
|
|
34
|
-
`, config);
|
|
35
|
-
const ionAlertDidPresent = await page.spyOnEvent('ionAlertDidPresent');
|
|
36
|
-
const alert = page.locator('ion-alert');
|
|
37
|
-
await alert.evaluate((el) => el.present());
|
|
38
|
-
await ionAlertDidPresent.next();
|
|
39
|
-
const results = await new AxeBuilder({ page }).analyze();
|
|
40
|
-
expect(results.violations).toEqual([]);
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
22
|
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
45
23
|
test.describe(title('alert: text wrapping'), () => {
|
|
46
24
|
test('should break on words and white spaces for radios', async ({ page }, testInfo) => {
|
|
@@ -94,6 +72,15 @@ configs({ directions: ['ltr'] }).forEach(({ config, title }) => {
|
|
|
94
72
|
test.beforeEach(async ({ page }) => {
|
|
95
73
|
await page.goto(`/src/components/alert/test/a11y`, config);
|
|
96
74
|
});
|
|
75
|
+
test('should not have accessibility violations when header and message are defined', async ({ page }) => {
|
|
76
|
+
const didPresent = await page.spyOnEvent('ionAlertDidPresent');
|
|
77
|
+
const button = page.locator('#bothHeaders');
|
|
78
|
+
await button.click();
|
|
79
|
+
await didPresent.next();
|
|
80
|
+
// TODO FW-4375
|
|
81
|
+
const results = await new AxeBuilder({ page }).disableRules('color-contrast').analyze();
|
|
82
|
+
expect(results.violations).toEqual([]);
|
|
83
|
+
});
|
|
97
84
|
test('should have aria-labelledby when header is set', async ({ page }) => {
|
|
98
85
|
await testAria(page, 'noMessage', 'alert-1-hdr', null);
|
|
99
86
|
});
|
|
@@ -331,7 +331,7 @@ ion-icon {
|
|
|
331
331
|
--background-focused: currentColor;
|
|
332
332
|
--background-focused-opacity: .1;
|
|
333
333
|
--border-radius: 4px;
|
|
334
|
-
--color: var(--ion-color-primary, #
|
|
334
|
+
--color: var(--ion-color-primary, #3880ff);
|
|
335
335
|
--icon-margin-end: 1px;
|
|
336
336
|
--icon-margin-start: -4px;
|
|
337
337
|
/**
|
|
@@ -1,29 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import AxeBuilder from "@axe-core/playwright";
|
|
5
4
|
import { expect } from "@playwright/test";
|
|
6
5
|
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
7
|
-
/**
|
|
8
|
-
* Only ios mode uses ion-color() for the back button
|
|
9
|
-
*/
|
|
10
|
-
configs({ directions: ['ltr'], modes: ['ios'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
|
|
11
|
-
test.describe(title('back-button: a11y for ion-color()'), () => {
|
|
12
|
-
test('should not have accessibility violations', async ({ page }) => {
|
|
13
|
-
await page.setContent(`
|
|
14
|
-
<style>
|
|
15
|
-
ion-back-button {
|
|
16
|
-
display: inline-block !important;
|
|
17
|
-
vertical-align: middle;
|
|
18
|
-
}
|
|
19
|
-
</style>
|
|
20
|
-
<ion-back-button text="Back" aria-label="back button"></ion-back-button>
|
|
21
|
-
`, config);
|
|
22
|
-
const results = await new AxeBuilder({ page }).analyze();
|
|
23
|
-
expect(results.violations).toEqual([]);
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
6
|
configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
28
7
|
test.describe(title('back-button: font scaling'), () => {
|
|
29
8
|
test('should scale text on larger font sizes', async ({ page }) => {
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
* @prop --padding-bottom: Bottom padding of the badge
|
|
64
64
|
* @prop --padding-start: Left padding if direction is left-to-right, and right padding if direction is right-to-left of the badge
|
|
65
65
|
*/
|
|
66
|
-
--background: var(--ion-color-primary, #
|
|
66
|
+
--background: var(--ion-color-primary, #3880ff);
|
|
67
67
|
--color: var(--ion-color-primary-contrast, #fff);
|
|
68
68
|
--padding-top: 3px;
|
|
69
69
|
--padding-end: 8px;
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
* @prop --padding-bottom: Bottom padding of the badge
|
|
64
64
|
* @prop --padding-start: Left padding if direction is left-to-right, and right padding if direction is right-to-left of the badge
|
|
65
65
|
*/
|
|
66
|
-
--background: var(--ion-color-primary, #
|
|
66
|
+
--background: var(--ion-color-primary, #3880ff);
|
|
67
67
|
--color: var(--ion-color-primary-contrast, #fff);
|
|
68
68
|
--padding-top: 3px;
|
|
69
69
|
--padding-end: 8px;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import AxeBuilder from "@axe-core/playwright";
|
|
5
4
|
import { expect } from "@playwright/test";
|
|
6
5
|
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
7
6
|
configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
@@ -21,20 +20,3 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
21
20
|
});
|
|
22
21
|
});
|
|
23
22
|
});
|
|
24
|
-
configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ config, title }) => {
|
|
25
|
-
test.describe(title('badge: a11y'), () => {
|
|
26
|
-
test('should not have accessibility violations', async ({ page }) => {
|
|
27
|
-
/**
|
|
28
|
-
* All page content should be contained by landmarks (main, nav, etc.)
|
|
29
|
-
* By containing the badge in a main element, we can avoid this violation.
|
|
30
|
-
*/
|
|
31
|
-
await page.setContent(`
|
|
32
|
-
<main>
|
|
33
|
-
<ion-badge>123</ion-badge>
|
|
34
|
-
</main>
|
|
35
|
-
`, config);
|
|
36
|
-
const results = await new AxeBuilder({ page }).analyze();
|
|
37
|
-
expect(results.violations).toEqual([]);
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
});
|
|
@@ -114,20 +114,20 @@
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
:host(.button-solid) {
|
|
117
|
-
--background: var(--ion-color-primary, #
|
|
117
|
+
--background: var(--ion-color-primary, #3880ff);
|
|
118
118
|
--color: var(--ion-color-primary-contrast, #fff);
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
:host(.button-outline) {
|
|
122
|
-
--border-color: var(--ion-color-primary, #
|
|
122
|
+
--border-color: var(--ion-color-primary, #3880ff);
|
|
123
123
|
--background: transparent;
|
|
124
|
-
--color: var(--ion-color-primary, #
|
|
124
|
+
--color: var(--ion-color-primary, #3880ff);
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
:host(.button-clear) {
|
|
128
128
|
--border-width: 0;
|
|
129
129
|
--background: transparent;
|
|
130
|
-
--color: var(--ion-color-primary, #
|
|
130
|
+
--color: var(--ion-color-primary, #3880ff);
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
:host(.button-block) {
|
|
@@ -465,9 +465,9 @@ ion-ripple-effect {
|
|
|
465
465
|
}
|
|
466
466
|
|
|
467
467
|
:host(.button-solid) {
|
|
468
|
-
--background-activated: var(--ion-color-primary-shade, #
|
|
469
|
-
--background-focused: var(--ion-color-primary-shade, #
|
|
470
|
-
--background-hover: var(--ion-color-primary-tint, #
|
|
468
|
+
--background-activated: var(--ion-color-primary-shade, #3171e0);
|
|
469
|
+
--background-focused: var(--ion-color-primary-shade, #3171e0);
|
|
470
|
+
--background-hover: var(--ion-color-primary-tint, #4c8dff);
|
|
471
471
|
--background-activated-opacity: 1;
|
|
472
472
|
--background-focused-opacity: 1;
|
|
473
473
|
--background-hover-opacity: 1;
|
|
@@ -477,8 +477,8 @@ ion-ripple-effect {
|
|
|
477
477
|
--border-radius: 14px;
|
|
478
478
|
--border-width: 1px;
|
|
479
479
|
--border-style: solid;
|
|
480
|
-
--background-activated: var(--ion-color-primary, #
|
|
481
|
-
--background-focused: var(--ion-color-primary, #
|
|
480
|
+
--background-activated: var(--ion-color-primary, #3880ff);
|
|
481
|
+
--background-focused: var(--ion-color-primary, #3880ff);
|
|
482
482
|
--background-hover: transparent;
|
|
483
483
|
--background-focused-opacity: .1;
|
|
484
484
|
--color-activated: var(--ion-color-primary-contrast, #fff);
|
|
@@ -487,7 +487,7 @@ ion-ripple-effect {
|
|
|
487
487
|
:host(.button-clear) {
|
|
488
488
|
--background-activated: transparent;
|
|
489
489
|
--background-activated-opacity: 0;
|
|
490
|
-
--background-focused: var(--ion-color-primary, #
|
|
490
|
+
--background-focused: var(--ion-color-primary, #3880ff);
|
|
491
491
|
--background-hover: transparent;
|
|
492
492
|
--background-focused-opacity: .1;
|
|
493
493
|
font-size: min(1.0625rem, 51px);
|
|
@@ -114,20 +114,20 @@
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
:host(.button-solid) {
|
|
117
|
-
--background: var(--ion-color-primary, #
|
|
117
|
+
--background: var(--ion-color-primary, #3880ff);
|
|
118
118
|
--color: var(--ion-color-primary-contrast, #fff);
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
:host(.button-outline) {
|
|
122
|
-
--border-color: var(--ion-color-primary, #
|
|
122
|
+
--border-color: var(--ion-color-primary, #3880ff);
|
|
123
123
|
--background: transparent;
|
|
124
|
-
--color: var(--ion-color-primary, #
|
|
124
|
+
--color: var(--ion-color-primary, #3880ff);
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
:host(.button-clear) {
|
|
128
128
|
--border-width: 0;
|
|
129
129
|
--background: transparent;
|
|
130
|
-
--color: var(--ion-color-primary, #
|
|
130
|
+
--color: var(--ion-color-primary, #3880ff);
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
:host(.button-block) {
|
|
@@ -431,8 +431,8 @@ ion-ripple-effect {
|
|
|
431
431
|
--border-style: solid;
|
|
432
432
|
--box-shadow: none;
|
|
433
433
|
--background-activated: transparent;
|
|
434
|
-
--background-focused: var(--ion-color-primary, #
|
|
435
|
-
--background-hover: var(--ion-color-primary, #
|
|
434
|
+
--background-focused: var(--ion-color-primary, #3880ff);
|
|
435
|
+
--background-hover: var(--ion-color-primary, #3880ff);
|
|
436
436
|
--background-activated-opacity: 0;
|
|
437
437
|
--background-focused-opacity: .12;
|
|
438
438
|
--background-hover-opacity: .04;
|
|
@@ -444,8 +444,8 @@ ion-ripple-effect {
|
|
|
444
444
|
|
|
445
445
|
:host(.button-clear) {
|
|
446
446
|
--background-activated: transparent;
|
|
447
|
-
--background-focused: var(--ion-color-primary, #
|
|
448
|
-
--background-hover: var(--ion-color-primary, #
|
|
447
|
+
--background-focused: var(--ion-color-primary, #3880ff);
|
|
448
|
+
--background-hover: var(--ion-color-primary, #3880ff);
|
|
449
449
|
--background-activated-opacity: 0;
|
|
450
450
|
--background-focused-opacity: .12;
|
|
451
451
|
--background-hover-opacity: .04;
|
|
@@ -1,56 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import AxeBuilder from "@axe-core/playwright";
|
|
5
4
|
import { expect } from "@playwright/test";
|
|
6
5
|
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
7
|
-
configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
|
|
8
|
-
test.describe(title('button: a11y for ion-color()'), () => {
|
|
9
|
-
test('should not have accessibility violations', async ({ page }) => {
|
|
10
|
-
await page.setContent(`
|
|
11
|
-
<ion-button>Default</ion-button>
|
|
12
|
-
<ion-button fill="solid">Solid</ion-button>
|
|
13
|
-
<ion-button fill="outline">Outline</ion-button>
|
|
14
|
-
<ion-button fill="clear">Clear</ion-button>
|
|
15
|
-
`, config);
|
|
16
|
-
const results = await new AxeBuilder({ page }).analyze();
|
|
17
|
-
expect(results.violations).toEqual([]);
|
|
18
|
-
});
|
|
19
|
-
test('focused state should not have accessibility violations', async ({ page }) => {
|
|
20
|
-
await page.setContent(`
|
|
21
|
-
<ion-button class="ion-focused" fill="solid">Solid</ion-button>
|
|
22
|
-
<ion-button class="ion-focused" fill="outline">Outline</ion-button>
|
|
23
|
-
<ion-button class="ion-focused" fill="clear">Clear</ion-button>
|
|
24
|
-
`, config);
|
|
25
|
-
const results = await new AxeBuilder({ page }).analyze();
|
|
26
|
-
expect(results.violations).toEqual([]);
|
|
27
|
-
});
|
|
28
|
-
test('button in toolbar should not have accessibility violations', async ({ page }) => {
|
|
29
|
-
await page.setContent(`
|
|
30
|
-
<ion-toolbar>
|
|
31
|
-
<ion-button fill="outline" class="ion-activated">Start</ion-button>
|
|
32
|
-
</ion-toolbar>
|
|
33
|
-
`, config);
|
|
34
|
-
const results = await new AxeBuilder({ page }).analyze();
|
|
35
|
-
expect(results.violations).toEqual([]);
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
/**
|
|
40
|
-
* Only ios mode uses ion-color() for the activated button state
|
|
41
|
-
*/
|
|
42
|
-
configs({ directions: ['ltr'], modes: ['ios'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
|
|
43
|
-
test.describe(title('button: ios contrast'), () => {
|
|
44
|
-
test('activated state should not have accessibility violations', async ({ page }) => {
|
|
45
|
-
await page.setContent(`
|
|
46
|
-
<ion-button class="ion-activated" fill="solid">Solid</ion-button>
|
|
47
|
-
<ion-button class="ion-activated" fill="outline">Outline</ion-button>
|
|
48
|
-
`, config);
|
|
49
|
-
const results = await new AxeBuilder({ page }).analyze();
|
|
50
|
-
expect(results.violations).toEqual([]);
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
6
|
configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
55
7
|
test.describe(title('button: font scaling'), () => {
|
|
56
8
|
test('should scale default button text on larger font sizes', async ({ page }) => {
|
|
@@ -71,10 +71,9 @@
|
|
|
71
71
|
* @prop --checkmark-color: Color of the checkbox checkmark when checked
|
|
72
72
|
* @prop --checkmark-width: Stroke width of the checkbox checkmark
|
|
73
73
|
*/
|
|
74
|
-
--checkbox-background-checked: var(--ion-color-primary, #
|
|
75
|
-
--border-color-checked: var(--ion-color-primary, #
|
|
74
|
+
--checkbox-background-checked: var(--ion-color-primary, #3880ff);
|
|
75
|
+
--border-color-checked: var(--ion-color-primary, #3880ff);
|
|
76
76
|
--checkmark-color: var(--ion-color-primary-contrast, #fff);
|
|
77
|
-
--checkmark-width: 1;
|
|
78
77
|
--transition: none;
|
|
79
78
|
display: inline-block;
|
|
80
79
|
position: relative;
|
|
@@ -504,11 +503,12 @@ input {
|
|
|
504
503
|
*/
|
|
505
504
|
:host {
|
|
506
505
|
--border-radius: 50%;
|
|
507
|
-
--border-width: 0.
|
|
506
|
+
--border-width: 0.125rem;
|
|
508
507
|
--border-style: solid;
|
|
509
508
|
--border-color: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.23);
|
|
510
509
|
--checkbox-background: var(--ion-item-background, var(--ion-background-color, #fff));
|
|
511
|
-
--size: min(1.
|
|
510
|
+
--size: min(1.375rem, 55.836px);
|
|
511
|
+
--checkmark-width: 1.5px;
|
|
512
512
|
}
|
|
513
513
|
|
|
514
514
|
:host(.checkbox-disabled) {
|