@ionic/core 7.6.2-dev.11705694334.11b34c62 → 7.6.2-dev.11706202387.1dfcd9b8
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 +1 -16
- 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 +2 -3
- 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 +7 -128
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-menu.js +21 -15
- package/components/ion-modal.js +1 -1
- package/components/ion-nav.js +7 -3
- package/components/ion-picker-legacy.js +2 -2
- package/components/ion-progress-bar.js +2 -5
- 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-split-pane.js +26 -15
- 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 +101 -34
- package/css/core.css.map +1 -1
- package/css/global.bundle.css +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/css/themes/dark.always.css +122 -0
- package/css/themes/dark.always.css.map +1 -0
- package/css/themes/dark.class.css +122 -0
- package/css/themes/dark.class.css.map +1 -0
- package/css/themes/dark.css +3 -0
- package/css/themes/dark.css.map +1 -0
- package/css/themes/dark.system.css +124 -0
- package/css/themes/dark.system.css.map +1 -0
- package/css/typography.css +1 -1
- package/dist/cjs/{animation-8a4f9df4.js → animation-9b401d39.js} +0 -16
- package/dist/cjs/{button-active-466dfc8a.js → button-active-5bf1cac0.js} +1 -1
- package/dist/cjs/{index-d8b5d5f9.js → index-17ab7794.js} +2 -2
- package/dist/cjs/{index-8023641e.js → index-3b012034.js} +1 -1
- 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 +3 -4
- 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 +10 -130
- 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 +24 -19
- package/dist/cjs/ion-modal.cjs.entry.js +3 -3
- package/dist/cjs/ion-nav_2.cjs.entry.js +6 -3
- package/dist/cjs/ion-popover.cjs.entry.js +2 -2
- package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -5
- 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-split-pane.cjs.entry.js +24 -14
- 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-34cad0cb.js → ios.transition-b5353f3e.js} +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{md.transition-5bcc289d.js → md.transition-67157dd9.js} +2 -2
- package/dist/collection/components/action-sheet/action-sheet.ios.css +5 -12
- package/dist/collection/components/action-sheet/action-sheet.js +2 -2
- package/dist/collection/components/action-sheet/action-sheet.md.css +2 -9
- package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +23 -14
- package/dist/collection/components/action-sheet/test/basic/action-sheet-rendering.e2e.js +0 -19
- package/dist/collection/components/action-sheet/test/basic/action-sheet.spec.js +0 -22
- package/dist/collection/components/alert/alert.ios.css +27 -28
- package/dist/collection/components/alert/alert.md.css +6 -6
- package/dist/collection/components/alert/test/a11y/alert.e2e.js +22 -9
- package/dist/collection/components/back-button/back-button.ios.css +1 -1
- package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +21 -0
- package/dist/collection/components/badge/badge.ios.css +1 -1
- package/dist/collection/components/badge/badge.md.css +1 -1
- package/dist/collection/components/badge/test/a11y/badge.e2e.js +18 -0
- package/dist/collection/components/button/button.ios.css +10 -10
- package/dist/collection/components/button/button.md.css +8 -8
- package/dist/collection/components/button/test/a11y/button.e2e.js +48 -0
- package/dist/collection/components/checkbox/checkbox.ios.css +5 -5
- package/dist/collection/components/checkbox/checkbox.md.css +3 -2
- package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +11 -2
- package/dist/collection/components/checkbox/test/basic/checkbox.e2e.js +0 -10
- package/dist/collection/components/content/content.js +2 -3
- package/dist/collection/components/datetime/datetime.ios.css +2 -3
- package/dist/collection/components/datetime-button/{datetime-button.md.css → datetime-button.css} +6 -9
- package/dist/collection/components/datetime-button/datetime-button.js +4 -4
- package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +0 -12
- package/dist/collection/components/fab-button/fab-button.ios.css +13 -13
- package/dist/collection/components/fab-button/fab-button.md.css +4 -4
- package/dist/collection/components/fab-button/test/a11y/fab-button.e2e.js +50 -0
- package/dist/collection/components/input/input.ios.css +3 -3
- package/dist/collection/components/input/input.md.css +3 -3
- package/dist/collection/components/input/test/a11y/input.e2e.js +41 -3
- package/dist/collection/components/item/item.ios.css +3 -3
- package/dist/collection/components/item/item.md.css +4 -4
- package/dist/collection/components/item-option/item-option.ios.css +2 -2
- package/dist/collection/components/item-option/item-option.md.css +1 -1
- package/dist/collection/components/item-sliding/item-sliding.css +4 -8
- package/dist/collection/components/item-sliding/item-sliding.js +6 -89
- package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +28 -0
- package/dist/collection/components/item-sliding/test/basic/item-sliding.e2e.js +25 -62
- package/dist/collection/components/label/label.md.css +1 -1
- package/dist/collection/components/label/test/a11y/label.e2e.js +20 -0
- package/dist/collection/components/loading/loading.md.css +1 -1
- package/dist/collection/components/loading/test/a11y/loading.e2e.js +21 -5
- package/dist/collection/components/menu/menu.ios.css +64 -3
- package/dist/collection/components/menu/menu.js +19 -13
- package/dist/collection/components/menu/menu.md.css +64 -3
- package/dist/collection/components/menu-button/menu-button.ios.css +1 -1
- package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +14 -0
- package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -1
- package/dist/collection/components/nav/nav.js +22 -2
- package/dist/collection/components/nav/test/nav-controller.spec.js +36 -36
- 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 +11 -17
- package/dist/collection/components/progress-bar/progress-bar.js +0 -3
- package/dist/collection/components/progress-bar/progress-bar.md.css +10 -8
- package/dist/collection/components/progress-bar/test/a11y/progress-bar.e2e.js +24 -0
- package/dist/collection/components/radio/radio.ios.css +2 -2
- package/dist/collection/components/radio/radio.md.css +2 -2
- package/dist/collection/components/radio/test/a11y/radio.e2e.js +101 -68
- package/dist/collection/components/range/range.ios.css +1 -1
- package/dist/collection/components/range/range.md.css +3 -3
- package/dist/collection/components/range/test/a11y/range.e2e.js +18 -8
- package/dist/collection/components/refresher/refresher.md.css +2 -2
- package/dist/collection/components/refresher/test/a11y/refresher.e2e.js +25 -0
- package/dist/collection/components/refresher-content/refresher-content.js +1 -1
- package/dist/collection/components/router-link/router-link.css +1 -1
- package/dist/collection/components/router-link/test/a11y/router-link.e2e.js +23 -0
- package/dist/collection/components/searchbar/searchbar.ios.css +4 -4
- package/dist/collection/components/segment/test/a11y/segment.e2e.js +23 -0
- package/dist/collection/components/segment-button/segment-button.md.css +2 -2
- package/dist/collection/components/select/select.ios.css +3 -3
- package/dist/collection/components/select/select.md.css +3 -3
- package/dist/collection/components/select/test/a11y/select.e2e.js +68 -4
- package/dist/collection/components/select-popover/select-popover.md.css +4 -4
- package/dist/collection/components/select-popover/test/a11y/select-popover.e2e.js +32 -0
- package/dist/collection/components/split-pane/split-pane.ios.css +1 -53
- package/dist/collection/components/split-pane/split-pane.js +46 -12
- package/dist/collection/components/split-pane/split-pane.md.css +1 -53
- package/dist/collection/components/split-pane/test/wrapped-menu/split-pane.e2e.js +41 -0
- package/dist/collection/components/tab-bar/tab-bar.ios.css +1 -1
- package/dist/collection/components/tab-bar/tab-bar.md.css +1 -1
- package/dist/collection/components/tab-button/tab-button.ios.css +1 -6
- package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +41 -3
- package/dist/collection/components/textarea/textarea.ios.css +3 -3
- package/dist/collection/components/textarea/textarea.md.css +3 -3
- package/dist/collection/components/toast/test/a11y/toast.e2e.js +56 -24
- package/dist/collection/components/toast/toast.ios.css +1 -1
- package/dist/collection/components/toast/toast.md.css +2 -2
- package/dist/collection/components/toggle/test/a11y/toggle.e2e.js +8 -2
- package/dist/collection/components/toggle/toggle.ios.css +8 -8
- package/dist/collection/components/toggle/toggle.md.css +2 -2
- package/dist/collection/css/test/a11y/typography.e2e.js +18 -0
- package/dist/collection/themes/test/colors/theme.e2e.js +114 -0
- package/dist/collection/utils/animation/animation.js +0 -15
- package/dist/collection/utils/gesture/button-active.js +1 -1
- package/dist/collection/utils/test/playwright/generator.js +1 -0
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
- package/dist/docs.json +29 -34
- package/dist/esm/{animation-ccab0993.js → animation-dde8cc0d.js} +1 -16
- package/dist/esm/{button-active-2758ff14.js → button-active-48379dd2.js} +1 -1
- package/dist/esm/{index-b7e9478d.js → index-1193f005.js} +1 -1
- package/dist/esm/{index-9dbb78a4.js → index-4743453d.js} +2 -2
- 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 +3 -4
- 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 +10 -130
- 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 +24 -19
- package/dist/esm/ion-modal.entry.js +3 -3
- package/dist/esm/ion-nav_2.entry.js +6 -3
- package/dist/esm/ion-popover.entry.js +2 -2
- package/dist/esm/ion-progress-bar.entry.js +2 -5
- 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-split-pane.entry.js +24 -14
- 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-01176d76.js → ios.transition-3376ccb2.js} +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{md.transition-558655c7.js → md.transition-f992779f.js} +2 -2
- package/dist/esm-es5/animation-dde8cc0d.js +4 -0
- package/dist/esm-es5/button-active-48379dd2.js +4 -0
- package/dist/esm-es5/{index-b7e9478d.js → index-1193f005.js} +1 -1
- package/dist/esm-es5/{index-9dbb78a4.js → index-4743453d.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-split-pane.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-01176d76.js → ios.transition-3376ccb2.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/md.transition-f992779f.js +4 -0
- package/dist/html.html-data.json +0 -12
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-7b4649d7.js → p-04377cfa.js} +1 -1
- package/dist/ionic/p-04d84d5d.entry.js +4 -0
- package/dist/ionic/p-068950da.entry.js +4 -0
- package/dist/ionic/p-0832dedf.entry.js +4 -0
- package/dist/ionic/{p-e755af39.system.js → p-0aa78a8d.system.js} +1 -1
- package/dist/ionic/p-11c55ac8.system.js +4 -0
- package/dist/ionic/p-124b6e41.system.entry.js +4 -0
- package/dist/ionic/p-19d9ceb8.system.js +1 -1
- package/dist/ionic/{p-c8f7e8c8.system.js → p-1ab2642a.system.js} +1 -1
- package/dist/ionic/p-1b60cc53.js +4 -0
- package/dist/ionic/{p-a1bd098f.system.entry.js → p-1c453add.system.entry.js} +1 -1
- package/dist/ionic/{p-11bf2ad0.system.entry.js → p-1d5b03e3.system.entry.js} +1 -1
- package/dist/ionic/p-24c3f2cd.system.entry.js +4 -0
- package/dist/ionic/{p-b68d435f.entry.js → p-2716d76c.entry.js} +1 -1
- package/dist/ionic/p-2724403e.entry.js +4 -0
- package/dist/ionic/p-283bc1a1.system.entry.js +4 -0
- package/dist/ionic/p-29d03b3a.js +4 -0
- package/dist/ionic/{p-abd5d0d5.system.entry.js → p-354682e8.system.entry.js} +1 -1
- package/dist/ionic/{p-19c379da.system.entry.js → p-3796194b.system.entry.js} +1 -1
- package/dist/ionic/{p-cf53213c.entry.js → p-385bb983.entry.js} +1 -1
- package/dist/ionic/p-38f2c6bb.system.js +4 -0
- package/dist/ionic/p-3af5faf8.system.entry.js +4 -0
- package/dist/ionic/{p-c75dc92f.js → p-44a56556.js} +1 -1
- package/dist/ionic/{p-7c7bc0cc.entry.js → p-4abb1251.entry.js} +1 -1
- package/dist/ionic/p-4eae8c91.entry.js +4 -0
- package/dist/ionic/{p-2316de85.system.entry.js → p-530bb2af.system.entry.js} +1 -1
- package/dist/ionic/p-56944895.entry.js +4 -0
- package/dist/ionic/{p-0e908476.system.entry.js → p-590447a5.system.entry.js} +1 -1
- package/dist/ionic/{p-f0eafd38.entry.js → p-5aec2208.entry.js} +1 -1
- package/dist/ionic/{p-26ff1180.entry.js → p-5cbfce20.entry.js} +1 -1
- package/dist/ionic/{p-3b043115.entry.js → p-5f1b0512.entry.js} +1 -1
- package/dist/ionic/{p-0dfa4ab4.system.entry.js → p-662a9a47.system.entry.js} +1 -1
- package/dist/ionic/p-713af1fe.entry.js +4 -0
- package/dist/ionic/{p-69ce8bba.system.entry.js → p-7dade589.system.entry.js} +1 -1
- package/dist/ionic/p-8a25bf30.system.entry.js +4 -0
- package/dist/ionic/{p-67e52d31.entry.js → p-8b160fba.entry.js} +1 -1
- package/dist/ionic/{p-799da666.entry.js → p-8e961825.entry.js} +1 -1
- package/dist/ionic/{p-20a4ee02.entry.js → p-92bfb607.entry.js} +1 -1
- package/dist/ionic/p-97aaf697.system.entry.js +4 -0
- package/dist/ionic/p-98f35d98.js +4 -0
- package/dist/ionic/p-9a68d8ef.system.js +4 -0
- package/dist/ionic/p-9a8bc8f3.system.entry.js +4 -0
- package/dist/ionic/{p-bb3fd397.entry.js → p-9c48f42f.entry.js} +1 -1
- package/dist/ionic/{p-614e63a9.system.entry.js → p-9f94e34a.system.entry.js} +1 -1
- package/dist/ionic/{p-7de7a5fd.system.js → p-a074be82.system.js} +1 -1
- package/dist/ionic/{p-7dcf795f.entry.js → p-a29db3a0.entry.js} +1 -1
- package/dist/ionic/{p-56b1a872.system.entry.js → p-a41eaff2.system.entry.js} +1 -1
- package/dist/ionic/{p-9093afb1.system.js → p-a49931aa.system.js} +1 -1
- package/dist/ionic/p-a6e5f54e.system.entry.js +4 -0
- package/dist/ionic/{p-6855f26a.entry.js → p-aa975ff8.entry.js} +1 -1
- package/dist/ionic/p-b231b7cf.system.entry.js +4 -0
- package/dist/ionic/p-b59fe3bd.system.entry.js +4 -0
- package/dist/ionic/p-b7e03ff0.system.entry.js +4 -0
- package/dist/ionic/{p-ba5d9e27.entry.js → p-bc01c384.entry.js} +1 -1
- package/dist/ionic/p-bec6ae40.entry.js +4 -0
- package/dist/ionic/{p-5dc16594.entry.js → p-c001b24f.entry.js} +1 -1
- package/dist/ionic/p-c16fbc5f.system.entry.js +4 -0
- package/dist/ionic/{p-0cc80201.entry.js → p-c6e9ef77.entry.js} +1 -1
- package/dist/ionic/p-cb3ef9c1.system.entry.js +4 -0
- package/dist/ionic/p-cb6a1fa0.system.entry.js +4 -0
- package/dist/ionic/p-cc1c26cc.entry.js +4 -0
- package/dist/ionic/{p-db05ecb6.system.entry.js → p-cc700688.system.entry.js} +1 -1
- package/dist/ionic/p-cd3e1a06.entry.js +4 -0
- package/dist/ionic/p-cd574dfa.js +4 -0
- package/dist/ionic/{p-da666998.system.entry.js → p-d01449a3.system.entry.js} +1 -1
- package/dist/ionic/{p-84b567a6.entry.js → p-d08e0136.entry.js} +1 -1
- package/dist/ionic/p-d1ad57d5.system.entry.js +4 -0
- package/dist/ionic/p-d2634efe.system.entry.js +4 -0
- package/dist/ionic/{p-41208f54.system.entry.js → p-d88ed181.system.entry.js} +1 -1
- package/dist/ionic/{p-10339dcc.entry.js → p-df6f50ef.entry.js} +1 -1
- package/dist/ionic/{p-d1ab26de.entry.js → p-e403ff07.entry.js} +1 -1
- package/dist/ionic/{p-ae4b7df8.entry.js → p-e9431a58.entry.js} +1 -1
- package/dist/ionic/{p-019e0d80.system.entry.js → p-ec0a9b2c.system.entry.js} +1 -1
- package/dist/ionic/{p-42925096.system.entry.js → p-f0dbd73e.system.entry.js} +1 -1
- package/dist/ionic/{p-806a9810.entry.js → p-f38c1f8d.entry.js} +1 -1
- package/dist/ionic/p-fc17f198.entry.js +4 -0
- package/dist/types/components/action-sheet/action-sheet-interface.d.ts +0 -8
- package/dist/types/components/item-sliding/item-sliding.d.ts +0 -19
- package/dist/types/components/menu/menu.d.ts +11 -1
- package/dist/types/components/nav/nav.d.ts +4 -1
- package/dist/types/components/split-pane/split-pane.d.ts +14 -2
- package/dist/types/components.d.ts +5 -8
- package/dist/types/utils/animation/animation-interface.d.ts +0 -6
- package/dist/types/utils/animation/animation.d.ts +0 -2
- package/hydrate/index.js +115 -235
- package/package.json +1 -1
- package/dist/collection/components/datetime-button/datetime-button.ios.css +0 -107
- package/dist/collection/components/item-sliding/animations/item-sliding-options.js +0 -59
- package/dist/esm-es5/animation-ccab0993.js +0 -4
- package/dist/esm-es5/button-active-2758ff14.js +0 -4
- package/dist/esm-es5/md.transition-558655c7.js +0 -4
- package/dist/ionic/p-02dc8c5b.entry.js +0 -4
- package/dist/ionic/p-1a22895e.system.entry.js +0 -4
- package/dist/ionic/p-1c69a4ca.system.entry.js +0 -4
- package/dist/ionic/p-289f354c.entry.js +0 -4
- package/dist/ionic/p-2a3b87cd.entry.js +0 -4
- package/dist/ionic/p-2e01f1c5.system.entry.js +0 -4
- package/dist/ionic/p-38531958.system.entry.js +0 -4
- package/dist/ionic/p-3b434dee.system.entry.js +0 -4
- package/dist/ionic/p-44791cff.entry.js +0 -4
- package/dist/ionic/p-4981ea0a.system.entry.js +0 -4
- package/dist/ionic/p-5074a526.entry.js +0 -4
- package/dist/ionic/p-57785713.system.entry.js +0 -4
- package/dist/ionic/p-57e9de81.system.js +0 -4
- package/dist/ionic/p-6fb2b5e3.js +0 -4
- package/dist/ionic/p-80ad9792.system.js +0 -4
- package/dist/ionic/p-922c234e.js +0 -4
- package/dist/ionic/p-950c05ad.entry.js +0 -4
- package/dist/ionic/p-97a9d526.system.entry.js +0 -4
- package/dist/ionic/p-99d448ba.system.entry.js +0 -4
- package/dist/ionic/p-9c5e3a2c.system.entry.js +0 -4
- package/dist/ionic/p-a619ecad.entry.js +0 -4
- package/dist/ionic/p-b20717fc.system.entry.js +0 -4
- package/dist/ionic/p-b61d7624.entry.js +0 -4
- package/dist/ionic/p-b660ba8a.system.js +0 -4
- package/dist/ionic/p-ba2b1ef5.entry.js +0 -4
- package/dist/ionic/p-cd729946.js +0 -4
- package/dist/ionic/p-d2a73201.system.entry.js +0 -4
- package/dist/ionic/p-d3525765.js +0 -4
- package/dist/ionic/p-dc43a79e.entry.js +0 -4
- package/dist/ionic/p-ee71caaa.system.entry.js +0 -4
- package/dist/ionic/p-f25b4396.system.entry.js +0 -4
- package/dist/ionic/p-f65f4d3e.system.entry.js +0 -4
- package/dist/ionic/p-fd98debb.entry.js +0 -4
- package/dist/ionic/p-fe458994.system.entry.js +0 -4
- package/dist/types/components/item-sliding/animations/item-sliding-options.d.ts +0 -10
|
@@ -4,14 +4,52 @@
|
|
|
4
4
|
import AxeBuilder from "@axe-core/playwright";
|
|
5
5
|
import { expect } from "@playwright/test";
|
|
6
6
|
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
7
|
-
configs({ directions: ['ltr'] }).forEach(({ title, config
|
|
7
|
+
configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
|
|
8
8
|
test.describe(title('input: a11y'), () => {
|
|
9
|
-
test('should not have accessibility violations', async ({ page }) => {
|
|
10
|
-
await page.
|
|
9
|
+
test('default layout should not have accessibility violations', async ({ page }) => {
|
|
10
|
+
await page.setContent(`
|
|
11
|
+
<main>
|
|
12
|
+
<ion-input label="Label" placeholder="Placeholder"></ion-input>
|
|
13
|
+
<ion-input placeholder="Placeholder">
|
|
14
|
+
<div slot="label">Label"></div>
|
|
15
|
+
</ion-input>
|
|
16
|
+
<ion-input label="Label" value="My Text"></ion-input>
|
|
17
|
+
<ion-input aria-label="Label"></ion-input>
|
|
18
|
+
<ion-input label="Email" 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-input>
|
|
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-input class="has-focus" label="Label" value="My Text"></ion-input>
|
|
43
|
+
<ion-input class="has-focus" label-placement="floating" label="Label" value="My Text"></ion-input>
|
|
44
|
+
<ion-input class="has-focus" fill="outline" label-placement="floating" label="Label" value="My Text"></ion-input>
|
|
45
|
+
</main>
|
|
46
|
+
`, config);
|
|
11
47
|
const results = await new AxeBuilder({ page }).analyze();
|
|
12
48
|
expect(results.violations).toEqual([]);
|
|
13
49
|
});
|
|
14
50
|
});
|
|
51
|
+
});
|
|
52
|
+
configs({ directions: ['ltr'] }).forEach(({ title, config, screenshot }) => {
|
|
15
53
|
test.describe(title('input: font scaling'), () => {
|
|
16
54
|
test('should scale text on larger font sizes', async ({ page }) => {
|
|
17
55
|
await page.setContent(`
|
|
@@ -700,9 +700,9 @@ ion-ripple-effect {
|
|
|
700
700
|
--border-color: var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, #c8c7cc)));
|
|
701
701
|
--color: var(--ion-item-color, var(--ion-text-color, #000));
|
|
702
702
|
--highlight-height: 0px;
|
|
703
|
-
--highlight-color-focused: var(--ion-color-primary, #
|
|
704
|
-
--highlight-color-valid: var(--ion-color-success, #
|
|
705
|
-
--highlight-color-invalid: var(--ion-color-danger, #
|
|
703
|
+
--highlight-color-focused: var(--ion-color-primary, #0054e9);
|
|
704
|
+
--highlight-color-valid: var(--ion-color-success, #2dd55b);
|
|
705
|
+
--highlight-color-invalid: var(--ion-color-danger, #c5000f);
|
|
706
706
|
--bottom-padding-start: 0px;
|
|
707
707
|
font-size: 1rem;
|
|
708
708
|
}
|
|
@@ -800,9 +800,9 @@ ion-ripple-effect {
|
|
|
800
800
|
--inner-padding-end: 16px;
|
|
801
801
|
--inner-border-width: 0 0 1px 0;
|
|
802
802
|
--highlight-height: 1px;
|
|
803
|
-
--highlight-color-focused: var(--ion-color-primary, #
|
|
804
|
-
--highlight-color-valid: var(--ion-color-success, #
|
|
805
|
-
--highlight-color-invalid: var(--ion-color-danger, #
|
|
803
|
+
--highlight-color-focused: var(--ion-color-primary, #0054e9);
|
|
804
|
+
--highlight-color-valid: var(--ion-color-success, #2dd55b);
|
|
805
|
+
--highlight-color-invalid: var(--ion-color-danger, #c5000f);
|
|
806
806
|
font-size: 1rem;
|
|
807
807
|
font-weight: normal;
|
|
808
808
|
text-transform: none;
|
|
@@ -1100,7 +1100,7 @@ ion-ripple-effect {
|
|
|
1100
1100
|
:host(.ion-focused:not(.ion-color)) ::slotted(.label-floating),
|
|
1101
1101
|
:host(.item-has-focus:not(.ion-color)) ::slotted(.label-stacked),
|
|
1102
1102
|
:host(.item-has-focus:not(.ion-color)) ::slotted(.label-floating) {
|
|
1103
|
-
color: var(--ion-color-primary, #
|
|
1103
|
+
color: var(--ion-color-primary, #0054e9);
|
|
1104
1104
|
}
|
|
1105
1105
|
|
|
1106
1106
|
:host(.ion-color) {
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
* @prop --background: Background of the item option
|
|
59
59
|
* @prop --color: Color of the item option
|
|
60
60
|
*/
|
|
61
|
-
--background: var(--ion-color-primary, #
|
|
61
|
+
--background: var(--ion-color-primary, #0054e9);
|
|
62
62
|
--color: var(--ion-color-primary-contrast, #fff);
|
|
63
63
|
background: var(--background);
|
|
64
64
|
color: var(--color);
|
|
@@ -234,7 +234,7 @@
|
|
|
234
234
|
}
|
|
235
235
|
|
|
236
236
|
:host(.ion-activated) {
|
|
237
|
-
background: var(--ion-color-primary-shade, #
|
|
237
|
+
background: var(--ion-color-primary-shade, #004acd);
|
|
238
238
|
}
|
|
239
239
|
|
|
240
240
|
:host(.ion-color.ion-activated) {
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
* @prop --background: Background of the item option
|
|
59
59
|
* @prop --color: Color of the item option
|
|
60
60
|
*/
|
|
61
|
-
--background: var(--ion-color-primary, #
|
|
61
|
+
--background: var(--ion-color-primary, #0054e9);
|
|
62
62
|
--color: var(--ion-color-primary-contrast, #fff);
|
|
63
63
|
background: var(--background);
|
|
64
64
|
color: var(--color);
|
|
@@ -79,7 +79,11 @@ ion-item-sliding .item {
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
.item-sliding-active-swipe-end .item-options-end .item-option-expandable {
|
|
82
|
+
/* stylelint-disable-next-line property-disallowed-list */
|
|
83
|
+
padding-left: 100%;
|
|
82
84
|
order: 1;
|
|
85
|
+
transition-duration: 0.6s;
|
|
86
|
+
transition-property: padding-left;
|
|
83
87
|
}
|
|
84
88
|
:host-context([dir=rtl]) .item-sliding-active-swipe-end .item-options-end .item-option-expandable {
|
|
85
89
|
order: -1;
|
|
@@ -95,14 +99,6 @@ ion-item-sliding .item {
|
|
|
95
99
|
}
|
|
96
100
|
}
|
|
97
101
|
|
|
98
|
-
.item-sliding-animation-legacy.item-sliding-active-swipe-end .item-options-end .item-option-expandable,
|
|
99
|
-
.item-sliding-animation-modern.item-sliding-active-swipe-end .item-options-end .item-option-expandable {
|
|
100
|
-
/* stylelint-disable-next-line property-disallowed-list */
|
|
101
|
-
padding-left: 100%;
|
|
102
|
-
transition-duration: 0.6s;
|
|
103
|
-
transition-property: padding-left;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
102
|
.item-sliding-active-swipe-start .item-options-start .item-option-expandable {
|
|
107
103
|
/* stylelint-disable-next-line property-disallowed-list */
|
|
108
104
|
padding-right: 100%;
|
|
@@ -2,14 +2,10 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { Host, h } from "@stencil/core";
|
|
5
|
-
import { supportsWebAnimations } from "../../utils/animation/animation";
|
|
6
5
|
import { findClosestIonContent, disableContentScrollY, resetContentScrollY } from "../../utils/content/index";
|
|
7
6
|
import { isEndSide } from "../../utils/helpers";
|
|
8
|
-
import { printIonWarning } from "../../utils/logging/index";
|
|
9
|
-
import { isRTL } from "../../utils/rtl/index";
|
|
10
7
|
import { watchForOptions } from "../../utils/watch-options";
|
|
11
8
|
import { getIonMode } from "../../global/ionic-global";
|
|
12
|
-
import { slidingItemAnimation } from "./animations/item-sliding-options";
|
|
13
9
|
const SWIPE_MARGIN = 30;
|
|
14
10
|
const ELASTIC_FACTOR = 0.55;
|
|
15
11
|
let openSlidingItem;
|
|
@@ -26,7 +22,6 @@ export class ItemSliding {
|
|
|
26
22
|
this.initialContentScrollY = true;
|
|
27
23
|
this.state = 2 /* SlidingState.Disabled */;
|
|
28
24
|
this.disabled = false;
|
|
29
|
-
this.animationType = 'legacy';
|
|
30
25
|
}
|
|
31
26
|
disabledChanged() {
|
|
32
27
|
if (this.gesture) {
|
|
@@ -75,12 +70,6 @@ export class ItemSliding {
|
|
|
75
70
|
this.mutationObserver = undefined;
|
|
76
71
|
}
|
|
77
72
|
}
|
|
78
|
-
componentWillLoad() {
|
|
79
|
-
if (!supportsWebAnimations && this.animationType === 'modern') {
|
|
80
|
-
printIonWarning('Animation type "modern" needs Web Animations API support. Falling back to "legacy".');
|
|
81
|
-
this.animationType = 'legacy';
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
73
|
/**
|
|
85
74
|
* Get the amount the item is open in pixels.
|
|
86
75
|
*/
|
|
@@ -185,20 +174,6 @@ export class ItemSliding {
|
|
|
185
174
|
return this.rightOptions;
|
|
186
175
|
}
|
|
187
176
|
}
|
|
188
|
-
/**
|
|
189
|
-
* Given a side, return the width of the options on that side.
|
|
190
|
-
*
|
|
191
|
-
* @param side The side of the options to get the width for.
|
|
192
|
-
*/
|
|
193
|
-
getOptionsWidth(side) {
|
|
194
|
-
if (side === 'start') {
|
|
195
|
-
return this.optsWidthLeftSide;
|
|
196
|
-
}
|
|
197
|
-
else if (side === 'end') {
|
|
198
|
-
return this.optsWidthRightSide;
|
|
199
|
-
}
|
|
200
|
-
return 0;
|
|
201
|
-
}
|
|
202
177
|
async updateOptions() {
|
|
203
178
|
const options = this.el.querySelectorAll('ion-item-options');
|
|
204
179
|
let sides = 0;
|
|
@@ -346,8 +321,7 @@ export class ItemSliding {
|
|
|
346
321
|
if (!this.item) {
|
|
347
322
|
return;
|
|
348
323
|
}
|
|
349
|
-
const { el
|
|
350
|
-
const rtl = isRTL(el);
|
|
324
|
+
const { el } = this;
|
|
351
325
|
const style = this.item.style;
|
|
352
326
|
this.openAmount = openAmount;
|
|
353
327
|
if (isFinal) {
|
|
@@ -391,51 +365,14 @@ export class ItemSliding {
|
|
|
391
365
|
}, 600);
|
|
392
366
|
openSlidingItem = undefined;
|
|
393
367
|
style.transform = '';
|
|
394
|
-
if (animationType === 'modern') {
|
|
395
|
-
this.animateSlidingItemOptions(0, rtl);
|
|
396
|
-
}
|
|
397
368
|
return;
|
|
398
369
|
}
|
|
399
370
|
style.transform = `translate3d(${-openAmount}px,0,0)`;
|
|
400
|
-
if (animationType === 'modern') {
|
|
401
|
-
this.animateSlidingItemOptions(openAmount, rtl);
|
|
402
|
-
}
|
|
403
371
|
this.ionDrag.emit({
|
|
404
372
|
amount: openAmount,
|
|
405
373
|
ratio: this.getSlidingRatioSync(),
|
|
406
374
|
});
|
|
407
375
|
}
|
|
408
|
-
animateSlidingItemOptions(openAmount, isRTL) {
|
|
409
|
-
var _a;
|
|
410
|
-
/**
|
|
411
|
-
* The total width of the 'processed' options.
|
|
412
|
-
* Used to calculate the offset to move each option off the
|
|
413
|
-
* screen, on top of each other.
|
|
414
|
-
*/
|
|
415
|
-
let optionWidthOffset = 0;
|
|
416
|
-
const side = this.state === 16 /* SlidingState.Start */ ? 'start' : 'end';
|
|
417
|
-
const options = Array.from(((_a = this.getOptions(side)) === null || _a === void 0 ? void 0 : _a.querySelectorAll('ion-item-option')) || []);
|
|
418
|
-
const optsWidth = this.getOptionsWidth(side);
|
|
419
|
-
const progress = Math.abs(openAmount / optsWidth);
|
|
420
|
-
options.forEach((option, index) => {
|
|
421
|
-
let isFinal = false;
|
|
422
|
-
let zIndex;
|
|
423
|
-
let viewportOffset = 0;
|
|
424
|
-
const isReset = openAmount === 0;
|
|
425
|
-
if (side === 'start') {
|
|
426
|
-
viewportOffset = isRTL ? -1 * (optsWidth - optionWidthOffset) : -1 * (option.clientWidth + optionWidthOffset);
|
|
427
|
-
isFinal = openAmount <= -optsWidth;
|
|
428
|
-
zIndex = isRTL ? undefined : options.length - index;
|
|
429
|
-
}
|
|
430
|
-
else {
|
|
431
|
-
viewportOffset = isRTL ? optionWidthOffset + option.clientWidth : optsWidth - optionWidthOffset;
|
|
432
|
-
isFinal = openAmount >= optsWidth;
|
|
433
|
-
zIndex = isRTL ? options.length - index : undefined;
|
|
434
|
-
}
|
|
435
|
-
slidingItemAnimation(option, viewportOffset, progress, isFinal, isReset, zIndex);
|
|
436
|
-
optionWidthOffset += option.clientWidth;
|
|
437
|
-
});
|
|
438
|
-
}
|
|
439
376
|
getSlidingRatioSync() {
|
|
440
377
|
if (this.openAmount > 0) {
|
|
441
378
|
return this.openAmount / this.optsWidthRightSide;
|
|
@@ -449,15 +386,13 @@ export class ItemSliding {
|
|
|
449
386
|
}
|
|
450
387
|
render() {
|
|
451
388
|
const mode = getIonMode(this);
|
|
452
|
-
const { state, animationType } = this;
|
|
453
389
|
return (h(Host, { class: {
|
|
454
390
|
[mode]: true,
|
|
455
|
-
|
|
456
|
-
'item-sliding-active-
|
|
457
|
-
'item-sliding-active-options-
|
|
458
|
-
'item-sliding-active-
|
|
459
|
-
'item-sliding-active-swipe-
|
|
460
|
-
'item-sliding-active-swipe-start': (state & 64 /* SlidingState.SwipeStart */) !== 0,
|
|
391
|
+
'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
|
|
392
|
+
'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
|
|
393
|
+
'item-sliding-active-options-start': (this.state & 16 /* SlidingState.Start */) !== 0,
|
|
394
|
+
'item-sliding-active-swipe-end': (this.state & 32 /* SlidingState.SwipeEnd */) !== 0,
|
|
395
|
+
'item-sliding-active-swipe-start': (this.state & 64 /* SlidingState.SwipeStart */) !== 0,
|
|
461
396
|
} }));
|
|
462
397
|
}
|
|
463
398
|
static get is() { return "ion-item-sliding"; }
|
|
@@ -490,24 +425,6 @@ export class ItemSliding {
|
|
|
490
425
|
"attribute": "disabled",
|
|
491
426
|
"reflect": false,
|
|
492
427
|
"defaultValue": "false"
|
|
493
|
-
},
|
|
494
|
-
"animationType": {
|
|
495
|
-
"type": "string",
|
|
496
|
-
"mutable": false,
|
|
497
|
-
"complexType": {
|
|
498
|
-
"original": "'modern' | 'legacy'",
|
|
499
|
-
"resolved": "\"legacy\" | \"modern\"",
|
|
500
|
-
"references": {}
|
|
501
|
-
},
|
|
502
|
-
"required": false,
|
|
503
|
-
"optional": false,
|
|
504
|
-
"docs": {
|
|
505
|
-
"tags": [],
|
|
506
|
-
"text": "Specifies the animation behavior for sliding item options.\nYou can choose between two available options: \"modern\" and \"legacy\".\n\n- \"legacy\": The item will be swiped to reveal the option buttons beneath it.\n- \"modern\": As the item is swiped, all item options will smoothly and gradually reveal themselves.\n\nThe \"modern\" animation type requires the [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API).\nCheck [Browser Support](https://caniuse.com/web-animation) for more information."
|
|
507
|
-
},
|
|
508
|
-
"attribute": "animation-type",
|
|
509
|
-
"reflect": false,
|
|
510
|
-
"defaultValue": "'legacy'"
|
|
511
428
|
}
|
|
512
429
|
};
|
|
513
430
|
}
|
|
@@ -1,8 +1,36 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
+
import AxeBuilder from "@axe-core/playwright";
|
|
5
|
+
import { expect } from "@playwright/test";
|
|
4
6
|
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
5
7
|
import { testSlidingItem } from "../test.utils";
|
|
8
|
+
configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
|
|
9
|
+
test.describe(title('item-sliding: a11y for ion-color()'), () => {
|
|
10
|
+
test('should not have accessibility violations', async ({ page }) => {
|
|
11
|
+
await page.setContent(`
|
|
12
|
+
<main>
|
|
13
|
+
<ion-item-sliding id="axe">
|
|
14
|
+
<ion-item>
|
|
15
|
+
<ion-label>Sliding Item with End Options</ion-label>
|
|
16
|
+
</ion-item>
|
|
17
|
+
|
|
18
|
+
<ion-item-options>
|
|
19
|
+
<ion-item-option>Favorite</ion-item-option>
|
|
20
|
+
<ion-item-option class="ion-activated">Activated</ion-item-option>
|
|
21
|
+
</ion-item-options>
|
|
22
|
+
</ion-item-sliding>
|
|
23
|
+
</main>
|
|
24
|
+
`, config);
|
|
25
|
+
await page.locator(`#axe`).evaluate(async (el) => {
|
|
26
|
+
await el.open('end');
|
|
27
|
+
});
|
|
28
|
+
await page.waitForChanges();
|
|
29
|
+
const results = await new AxeBuilder({ page }).analyze();
|
|
30
|
+
expect(results.violations).toEqual([]);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
});
|
|
6
34
|
/**
|
|
7
35
|
* This behavior does not vary across directions
|
|
8
36
|
*/
|
|
@@ -15,70 +15,33 @@ configs().forEach(({ title, screenshot, config }) => {
|
|
|
15
15
|
test.beforeEach(async ({ page }) => {
|
|
16
16
|
await page.goto(`/src/components/item-sliding/test/basic`, config);
|
|
17
17
|
});
|
|
18
|
-
test.describe('
|
|
19
|
-
test
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
await expect(item).toHaveScreenshot(screenshot('item-sliding-start'));
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
test.describe('end options', () => {
|
|
35
|
-
test('should not have visual regressions', async ({ page }) => {
|
|
36
|
-
const item = page.locator('#item2');
|
|
37
|
-
/**
|
|
38
|
-
* Negative dragByX value to drag element from the right to the left
|
|
39
|
-
* to reveal the options on the right side.
|
|
40
|
-
* Positive dragByX value to drag element from the left to the right
|
|
41
|
-
* to reveal the options on the left side.
|
|
42
|
-
*/
|
|
43
|
-
const dragByX = config.direction === 'rtl' ? 150 : -150;
|
|
44
|
-
await dragElementBy(item, page, dragByX);
|
|
45
|
-
await expect(item).toHaveScreenshot(screenshot('item-sliding-end'));
|
|
46
|
-
});
|
|
18
|
+
test.describe('start options', () => {
|
|
19
|
+
test('should not have visual regressions', async ({ page }) => {
|
|
20
|
+
const item = page.locator('#item2');
|
|
21
|
+
/**
|
|
22
|
+
* Negative dragByX value to drag element from the right to the left
|
|
23
|
+
* to reveal the options on the right side.
|
|
24
|
+
* Positive dragByX value to drag element from the left to the right
|
|
25
|
+
* to reveal the options on the left side.
|
|
26
|
+
*/
|
|
27
|
+
const dragByX = config.direction === 'rtl' ? -150 : 150;
|
|
28
|
+
await dragElementBy(item, page, dragByX);
|
|
29
|
+
await page.waitForChanges();
|
|
30
|
+
await expect(item).toHaveScreenshot(screenshot('item-sliding-start'));
|
|
47
31
|
});
|
|
48
32
|
});
|
|
49
|
-
test.describe('
|
|
50
|
-
test
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const dragByX = config.direction === 'rtl' ? -150 : 150;
|
|
62
|
-
await dragElementBy(item, page, dragByX);
|
|
63
|
-
await page.waitForChanges();
|
|
64
|
-
await expect(item).toHaveScreenshot(screenshot('modern-item-sliding-start'));
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
test.describe('end options', () => {
|
|
68
|
-
test('should not have visual regressions', async ({ page }) => {
|
|
69
|
-
const useModernAnimationBtn = page.locator('#useModernAnimation');
|
|
70
|
-
await useModernAnimationBtn.click();
|
|
71
|
-
const item = page.locator('#item2');
|
|
72
|
-
/**
|
|
73
|
-
* Negative dragByX value to drag element from the right to the left
|
|
74
|
-
* to reveal the options on the right side.
|
|
75
|
-
* Positive dragByX value to drag element from the left to the right
|
|
76
|
-
* to reveal the options on the left side.
|
|
77
|
-
*/
|
|
78
|
-
const dragByX = config.direction === 'rtl' ? 150 : -150;
|
|
79
|
-
await dragElementBy(item, page, dragByX);
|
|
80
|
-
await expect(item).toHaveScreenshot(screenshot('modern-item-sliding-end'));
|
|
81
|
-
});
|
|
33
|
+
test.describe('end options', () => {
|
|
34
|
+
test('should not have visual regressions', async ({ page }) => {
|
|
35
|
+
const item = page.locator('#item2');
|
|
36
|
+
/**
|
|
37
|
+
* Negative dragByX value to drag element from the right to the left
|
|
38
|
+
* to reveal the options on the right side.
|
|
39
|
+
* Positive dragByX value to drag element from the left to the right
|
|
40
|
+
* to reveal the options on the left side.
|
|
41
|
+
*/
|
|
42
|
+
const dragByX = config.direction === 'rtl' ? 150 : -150;
|
|
43
|
+
await dragElementBy(item, page, dragByX);
|
|
44
|
+
await expect(item).toHaveScreenshot(screenshot('item-sliding-end'));
|
|
82
45
|
});
|
|
83
46
|
});
|
|
84
47
|
});
|
|
@@ -348,7 +348,7 @@
|
|
|
348
348
|
:host-context(.ion-focused).label-floating:not(.ion-color),
|
|
349
349
|
:host-context(.item-has-focus).label-stacked:not(.ion-color),
|
|
350
350
|
:host-context(.item-has-focus).label-floating:not(.ion-color) {
|
|
351
|
-
color: var(--ion-color-primary, #
|
|
351
|
+
color: var(--ion-color-primary, #0054e9);
|
|
352
352
|
}
|
|
353
353
|
|
|
354
354
|
:host-context(.ion-focused.ion-color).label-stacked:not(.ion-color),
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
+
import AxeBuilder from "@axe-core/playwright";
|
|
4
5
|
import { expect } from "@playwright/test";
|
|
5
6
|
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
6
7
|
configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
@@ -64,6 +65,25 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
64
65
|
});
|
|
65
66
|
});
|
|
66
67
|
});
|
|
68
|
+
configs({ directions: ['ltr'], modes: ['md'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
|
|
69
|
+
test.describe(title('label: a11y for ion-color()'), () => {
|
|
70
|
+
test('should not have accessibility violations when focused', async ({ page }) => {
|
|
71
|
+
/**
|
|
72
|
+
* All page content should be contained by landmarks (main, nav, etc.)
|
|
73
|
+
* By containing the badge in a main element, we can avoid this violation.
|
|
74
|
+
*/
|
|
75
|
+
await page.setContent(`
|
|
76
|
+
<main>
|
|
77
|
+
<div class="ion-focused">
|
|
78
|
+
<ion-label position="stacked">Default Label</ion-label>
|
|
79
|
+
</div>
|
|
80
|
+
</main>
|
|
81
|
+
`, config);
|
|
82
|
+
const results = await new AxeBuilder({ page }).analyze();
|
|
83
|
+
expect(results.violations).toEqual([]);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
});
|
|
67
87
|
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
68
88
|
test.describe(title('label: text wrapping in item'), () => {
|
|
69
89
|
test('long text should not cause label to expand infinitely', async ({ page }) => {
|
|
@@ -173,7 +173,7 @@ ion-spinner {
|
|
|
173
173
|
--background: var(--ion-color-step-50, #f2f2f2);
|
|
174
174
|
--max-width: 280px;
|
|
175
175
|
--max-height: 90%;
|
|
176
|
-
--spinner-color: var(--ion-color-primary, #
|
|
176
|
+
--spinner-color: var(--ion-color-primary, #0054e9);
|
|
177
177
|
--backdrop-opacity: var(--ion-backdrop-opacity, 0.32);
|
|
178
178
|
color: var(--ion-color-step-850, #262626);
|
|
179
179
|
font-size: 0.875rem;
|
|
@@ -4,20 +4,36 @@
|
|
|
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({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
7
|
+
configs({ modes: ['ios'], directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
|
|
8
8
|
test.describe(title('loading: a11y'), () => {
|
|
9
9
|
test('should set aria-labelledby with a message', async ({ page }) => {
|
|
10
|
-
await page.
|
|
10
|
+
await page.setContent(`
|
|
11
|
+
<ion-loading></ion-loading>
|
|
12
|
+
|
|
13
|
+
<script>
|
|
14
|
+
const loading = document.querySelector('ion-loading');
|
|
15
|
+
loading.message = 'Loading';
|
|
16
|
+
</script>
|
|
17
|
+
`, config);
|
|
11
18
|
const ionLoadingDidPresent = await page.spyOnEvent('ionLoadingDidPresent');
|
|
12
|
-
|
|
19
|
+
const loading = page.locator('ion-loading');
|
|
20
|
+
await loading.evaluate((el) => el.present());
|
|
13
21
|
await ionLoadingDidPresent.next();
|
|
14
22
|
const results = await new AxeBuilder({ page }).analyze();
|
|
15
23
|
expect(results.violations).toEqual([]);
|
|
16
24
|
});
|
|
17
25
|
test('should set aria-labelledby with a label', async ({ page }) => {
|
|
18
|
-
await page.
|
|
26
|
+
await page.setContent(`
|
|
27
|
+
<ion-loading aria-label="Loading"></ion-loading>
|
|
28
|
+
|
|
29
|
+
<script>
|
|
30
|
+
const loading = document.querySelector('ion-loading');
|
|
31
|
+
loading.spinner = 'bubbles';
|
|
32
|
+
</script>
|
|
33
|
+
`, config);
|
|
19
34
|
const ionLoadingDidPresent = await page.spyOnEvent('ionLoadingDidPresent');
|
|
20
|
-
|
|
35
|
+
const loading = page.locator('ion-loading');
|
|
36
|
+
await loading.evaluate((el) => el.present());
|
|
21
37
|
await ionLoadingDidPresent.next();
|
|
22
38
|
const results = await new AxeBuilder({ page }).analyze();
|
|
23
39
|
expect(results.violations).toEqual([]);
|
|
@@ -295,10 +295,49 @@ ion-backdrop {
|
|
|
295
295
|
cursor: pointer;
|
|
296
296
|
}
|
|
297
297
|
|
|
298
|
+
/**
|
|
299
|
+
* The split pane styles for menu are defined
|
|
300
|
+
* in the menu stylesheets instead in the split pane
|
|
301
|
+
* stylesheets with ::slotted to allow for menus
|
|
302
|
+
* to be wrapped in custom components.
|
|
303
|
+
* If we used ::slotted to target the menu
|
|
304
|
+
* then menus wrapped in components would never
|
|
305
|
+
* receive these styles because they are not
|
|
306
|
+
* children of the split pane.
|
|
307
|
+
*/
|
|
308
|
+
/**
|
|
309
|
+
* Do not pass CSS Variables down on larger
|
|
310
|
+
* screens as we want them to affect the outer
|
|
311
|
+
* `ion-menu` rather than the inner content
|
|
312
|
+
*/
|
|
298
313
|
:host(.menu-pane-visible) {
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
314
|
+
flex: 0 1 auto;
|
|
315
|
+
width: var(--side-width, var(--width));
|
|
316
|
+
min-width: var(--side-min-width, var(--min-width));
|
|
317
|
+
max-width: var(--side-max-width, var(--max-width));
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
:host(.menu-pane-visible.split-pane-side) {
|
|
321
|
+
left: 0;
|
|
322
|
+
right: 0;
|
|
323
|
+
top: 0;
|
|
324
|
+
bottom: 0;
|
|
325
|
+
position: relative;
|
|
326
|
+
box-shadow: none;
|
|
327
|
+
z-index: 0;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
:host(.menu-pane-visible.split-pane-side.menu-enabled) {
|
|
331
|
+
display: flex;
|
|
332
|
+
flex-shrink: 0;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
:host(.menu-pane-visible.split-pane-side) {
|
|
336
|
+
order: -1;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
:host(.menu-pane-visible.split-pane-side[side=end]) {
|
|
340
|
+
order: 1;
|
|
302
341
|
}
|
|
303
342
|
|
|
304
343
|
:host(.menu-pane-visible) .menu-inner {
|
|
@@ -314,6 +353,28 @@ ion-backdrop {
|
|
|
314
353
|
display: hidden !important;
|
|
315
354
|
}
|
|
316
355
|
|
|
356
|
+
:host(.menu-pane-visible.split-pane-side) {
|
|
357
|
+
-webkit-border-start: 0;
|
|
358
|
+
border-inline-start: 0;
|
|
359
|
+
-webkit-border-end: var(--border);
|
|
360
|
+
border-inline-end: var(--border);
|
|
361
|
+
border-top: 0;
|
|
362
|
+
border-bottom: 0;
|
|
363
|
+
min-width: var(--side-min-width);
|
|
364
|
+
max-width: var(--side-max-width);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
:host(.menu-pane-visible.split-pane-side[side=end]) {
|
|
368
|
+
-webkit-border-start: var(--border);
|
|
369
|
+
border-inline-start: var(--border);
|
|
370
|
+
-webkit-border-end: 0;
|
|
371
|
+
border-inline-end: 0;
|
|
372
|
+
border-top: 0;
|
|
373
|
+
border-bottom: 0;
|
|
374
|
+
min-width: var(--side-min-width);
|
|
375
|
+
max-width: var(--side-max-width);
|
|
376
|
+
}
|
|
377
|
+
|
|
317
378
|
/**
|
|
318
379
|
* Convert a font size to a dynamic font size.
|
|
319
380
|
* Fonts that participate in Dynamic Type should use
|