@ionic/core 7.6.2-dev.11704390532.1202188d → 7.6.2-dev.11704834200.17f5bc99
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/action-sheet.js +1 -1
- package/components/alert.js +2 -2
- package/components/button.js +2 -2
- package/components/checkbox.js +2 -2
- package/components/ion-back-button.js +1 -1
- package/components/ion-badge.js +2 -2
- package/components/ion-content.js +2 -3
- package/components/ion-fab-button.js +2 -2
- package/components/ion-input.js +2 -2
- package/components/ion-item-option.js +2 -2
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-menu.js +6 -13
- package/components/ion-picker-legacy.js +2 -2
- package/components/ion-progress-bar.js +2 -2
- package/components/ion-range.js +2 -2
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-router-link.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-select.js +2 -2
- package/components/ion-split-pane.js +40 -12
- package/components/ion-tab-bar.js +2 -2
- 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 +35 -34
- package/css/core.css.map +1 -1
- package/css/global.bundle.css +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/css/themes/dark.always.css +122 -0
- package/css/themes/dark.always.css.map +1 -0
- package/css/themes/dark.class.css +122 -0
- package/css/themes/dark.class.css.map +1 -0
- package/css/themes/dark.css +3 -0
- package/css/themes/dark.css.map +1 -0
- package/css/themes/dark.system.css +124 -0
- package/css/themes/dark.system.css.map +1 -0
- package/css/typography.css +1 -1
- package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
- package/dist/cjs/ion-alert.cjs.entry.js +2 -2
- package/dist/cjs/ion-app_8.cjs.entry.js +2 -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_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-input.cjs.entry.js +2 -2
- package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-item_8.cjs.entry.js +3 -3
- package/dist/cjs/ion-loading.cjs.entry.js +1 -1
- package/dist/cjs/ion-menu_3.cjs.entry.js +7 -14
- package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
- package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-range.cjs.entry.js +2 -2
- package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-route_4.cjs.entry.js +1 -1
- package/dist/cjs/ion-searchbar.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-select_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-split-pane.cjs.entry.js +37 -10
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
- package/dist/cjs/ion-toast.cjs.entry.js +2 -2
- package/dist/cjs/ion-toggle.cjs.entry.js +2 -2
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/action-sheet/action-sheet.ios.css +3 -3
- package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +23 -14
- package/dist/collection/components/alert/alert.ios.css +6 -6
- package/dist/collection/components/alert/alert.md.css +6 -6
- package/dist/collection/components/alert/test/a11y/alert.e2e.js +22 -9
- package/dist/collection/components/back-button/back-button.ios.css +1 -1
- package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +21 -0
- package/dist/collection/components/badge/badge.ios.css +1 -1
- package/dist/collection/components/badge/badge.md.css +1 -1
- package/dist/collection/components/badge/test/a11y/badge.e2e.js +18 -0
- package/dist/collection/components/button/button.ios.css +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 +2 -2
- package/dist/collection/components/checkbox/checkbox.md.css +2 -2
- package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +11 -2
- package/dist/collection/components/content/content.js +2 -3
- package/dist/collection/components/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/test/a11y/item-sliding.e2e.js +28 -0
- package/dist/collection/components/label/label.md.css +1 -1
- package/dist/collection/components/label/test/a11y/label.e2e.js +20 -0
- package/dist/collection/components/loading/loading.md.css +1 -1
- package/dist/collection/components/loading/test/a11y/loading.e2e.js +21 -5
- package/dist/collection/components/menu/menu.ios.css +64 -3
- package/dist/collection/components/menu/menu.js +4 -11
- 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/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 +2 -2
- package/dist/collection/components/progress-bar/progress-bar.md.css +2 -2
- package/dist/collection/components/progress-bar/test/a11y/progress-bar.e2e.js +24 -0
- package/dist/collection/components/radio/radio.ios.css +2 -2
- package/dist/collection/components/radio/radio.md.css +2 -2
- package/dist/collection/components/radio/test/a11y/radio.e2e.js +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 +1 -1
- package/dist/collection/components/segment/test/a11y/segment.e2e.js +23 -0
- package/dist/collection/components/segment-button/segment-button.md.css +2 -2
- package/dist/collection/components/select/select.ios.css +3 -3
- package/dist/collection/components/select/select.md.css +3 -3
- package/dist/collection/components/select/test/a11y/select.e2e.js +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 +75 -8
- 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 +19 -0
- package/dist/collection/components/tab-bar/tab-bar.ios.css +1 -1
- package/dist/collection/components/tab-bar/tab-bar.md.css +1 -1
- package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +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 +1 -1
- package/dist/collection/components/toggle/toggle.md.css +2 -2
- package/dist/collection/css/test/a11y/typography.e2e.js +18 -0
- package/dist/collection/themes/test/colors/theme.e2e.js +114 -0
- package/dist/collection/utils/test/playwright/generator.js +1 -0
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
- package/dist/docs.json +8 -2
- package/dist/esm/ion-action-sheet.entry.js +1 -1
- package/dist/esm/ion-alert.entry.js +2 -2
- package/dist/esm/ion-app_8.entry.js +2 -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_3.entry.js +3 -3
- package/dist/esm/ion-fab_3.entry.js +2 -2
- package/dist/esm/ion-input.entry.js +2 -2
- package/dist/esm/ion-item-option_3.entry.js +2 -2
- package/dist/esm/ion-item_8.entry.js +3 -3
- package/dist/esm/ion-loading.entry.js +1 -1
- package/dist/esm/ion-menu_3.entry.js +7 -14
- package/dist/esm/ion-progress-bar.entry.js +2 -2
- package/dist/esm/ion-radio_2.entry.js +2 -2
- package/dist/esm/ion-range.entry.js +2 -2
- package/dist/esm/ion-refresher_2.entry.js +2 -2
- package/dist/esm/ion-route_4.entry.js +1 -1
- package/dist/esm/ion-searchbar.entry.js +1 -1
- package/dist/esm/ion-segment_2.entry.js +1 -1
- package/dist/esm/ion-select_3.entry.js +3 -3
- package/dist/esm/ion-split-pane.entry.js +37 -10
- package/dist/esm/ion-tab-bar_2.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +2 -2
- package/dist/esm/ion-toast.entry.js +2 -2
- package/dist/esm/ion-toggle.entry.js +2 -2
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm-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_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-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/loader.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-61e4d3ec.entry.js → p-068950da.entry.js} +1 -1
- package/dist/ionic/{p-80c6c078.entry.js → p-0832dedf.entry.js} +1 -1
- package/dist/ionic/p-19d9ceb8.system.js +1 -1
- 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-92d35b6a.entry.js → p-2724403e.entry.js} +1 -1
- package/dist/ionic/p-283bc1a1.system.entry.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-4793c14c.system.entry.js → p-456e19bb.system.entry.js} +1 -1
- package/dist/ionic/{p-77d78f68.system.entry.js → p-47e42aa3.system.entry.js} +1 -1
- package/dist/ionic/{p-529b24fb.entry.js → p-4abb1251.entry.js} +1 -1
- package/dist/ionic/{p-e2737fef.system.entry.js → p-530bb2af.system.entry.js} +1 -1
- package/dist/ionic/p-57f02351.entry.js +4 -0
- package/dist/ionic/{p-0e908476.system.entry.js → p-590447a5.system.entry.js} +1 -1
- package/dist/ionic/{p-642ac927.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-26c4bf85.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-c01803db.entry.js → p-713af1fe.entry.js} +1 -1
- package/dist/ionic/{p-6e0539ea.system.entry.js → p-7dade589.system.entry.js} +1 -1
- package/dist/ionic/{p-6e4c7340.system.entry.js → p-8a25bf30.system.entry.js} +1 -1
- package/dist/ionic/{p-71483cbb.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-97aaf697.system.entry.js +4 -0
- package/dist/ionic/{p-4685218a.system.entry.js → p-9a8bc8f3.system.entry.js} +1 -1
- package/dist/ionic/{p-bb3fd397.entry.js → p-9c48f42f.entry.js} +1 -1
- package/dist/ionic/{p-964dcdb2.system.entry.js → p-9f94e34a.system.entry.js} +1 -1
- package/dist/ionic/{p-75a3e35b.entry.js → p-a17a9130.entry.js} +1 -1
- package/dist/ionic/{p-7dcf795f.entry.js → p-a29db3a0.entry.js} +1 -1
- package/dist/ionic/{p-8ce4e506.system.entry.js → p-a6e5f54e.system.entry.js} +1 -1
- package/dist/ionic/{p-6855f26a.entry.js → p-aa975ff8.entry.js} +1 -1
- package/dist/ionic/{p-043aa6cc.system.entry.js → p-b59fe3bd.system.entry.js} +1 -1
- 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-7be412e8.system.entry.js → p-c16fbc5f.system.entry.js} +1 -1
- package/dist/ionic/p-c4f9e650.system.entry.js +4 -0
- package/dist/ionic/{p-0cc80201.entry.js → p-c6e9ef77.entry.js} +1 -1
- 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-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-d757eb10.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-20755eb0.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-ea6c3dd5.system.entry.js +4 -0
- package/dist/ionic/{p-f0dea903.system.entry.js → p-ec0a9b2c.system.entry.js} +1 -1
- package/dist/ionic/{p-b2b5d761.entry.js → p-ee8b825e.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/menu/menu.d.ts +1 -1
- package/dist/types/components/split-pane/split-pane.d.ts +26 -2
- package/dist/types/components.d.ts +1 -0
- package/hydrate/index.js +107 -72
- package/package.json +1 -1
- package/dist/ionic/p-2f449cdf.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-4981ea0a.system.entry.js +0 -4
- package/dist/ionic/p-950c05ad.entry.js +0 -4
- package/dist/ionic/p-a3013394.entry.js +0 -4
- package/dist/ionic/p-beed2450.system.entry.js +0 -4
- package/dist/ionic/p-beeed22c.system.entry.js +0 -4
- package/dist/ionic/p-ed8402d6.entry.js +0 -4
- package/dist/ionic/p-f8c5008f.entry.js +0 -4
|
@@ -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 {
|
|
@@ -371,4 +410,26 @@ ion-backdrop {
|
|
|
371
410
|
*/
|
|
372
411
|
:host(.menu-type-overlay) .menu-inner {
|
|
373
412
|
box-shadow: 4px 0px 16px rgba(0, 0, 0, 0.18);
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
:host(.menu-pane-visible.split-pane-side) {
|
|
416
|
+
-webkit-border-start: 0;
|
|
417
|
+
border-inline-start: 0;
|
|
418
|
+
-webkit-border-end: var(--border);
|
|
419
|
+
border-inline-end: var(--border);
|
|
420
|
+
border-top: 0;
|
|
421
|
+
border-bottom: 0;
|
|
422
|
+
min-width: var(--side-min-width);
|
|
423
|
+
max-width: var(--side-max-width);
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
:host(.menu-pane-visible.split-pane-side[side=end]) {
|
|
427
|
+
-webkit-border-start: var(--border);
|
|
428
|
+
border-inline-start: var(--border);
|
|
429
|
+
-webkit-border-end: 0;
|
|
430
|
+
border-inline-end: 0;
|
|
431
|
+
border-top: 0;
|
|
432
|
+
border-bottom: 0;
|
|
433
|
+
min-width: var(--side-min-width);
|
|
434
|
+
max-width: var(--side-max-width);
|
|
374
435
|
}
|
|
@@ -261,7 +261,7 @@ ion-icon {
|
|
|
261
261
|
--background-focused: currentColor;
|
|
262
262
|
--background-focused-opacity: .1;
|
|
263
263
|
--border-radius: 4px;
|
|
264
|
-
--color: var(--ion-color-primary, #
|
|
264
|
+
--color: var(--ion-color-primary, #0054e9);
|
|
265
265
|
--padding-start: 5px;
|
|
266
266
|
--padding-end: 5px;
|
|
267
267
|
min-height: 32px;
|
|
@@ -4,6 +4,20 @@
|
|
|
4
4
|
import AxeBuilder from "@axe-core/playwright";
|
|
5
5
|
import { expect } from "@playwright/test";
|
|
6
6
|
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
7
|
+
/**
|
|
8
|
+
* Only ios mode uses ion-color() for the menu button
|
|
9
|
+
*/
|
|
10
|
+
configs({ directions: ['ltr'], modes: ['ios'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
|
|
11
|
+
test.describe(title('menu-button: a11y for ion-color()'), () => {
|
|
12
|
+
test('should not have accessibility violations', async ({ page }) => {
|
|
13
|
+
await page.setContent(`
|
|
14
|
+
<ion-menu-button auto-hide="false"></ion-menu-button>
|
|
15
|
+
`, config);
|
|
16
|
+
const results = await new AxeBuilder({ page }).analyze();
|
|
17
|
+
expect(results.violations).toEqual([]);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
});
|
|
7
21
|
configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
8
22
|
test.describe(title('menu-button: a11y'), () => {
|
|
9
23
|
test('should not have accessibility violations', async ({ page }) => {
|
|
@@ -59,8 +59,8 @@
|
|
|
59
59
|
* @prop --progress-background: Background of the progress bar representing the current value
|
|
60
60
|
* @prop --buffer-background: DEPRECATED, use `--background` instead
|
|
61
61
|
*/
|
|
62
|
-
--background: rgba(var(--ion-color-primary-rgb,
|
|
63
|
-
--progress-background: var(--ion-color-primary, #
|
|
62
|
+
--background: rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.3);
|
|
63
|
+
--progress-background: var(--ion-color-primary, #0054e9);
|
|
64
64
|
--buffer-background: var(--background);
|
|
65
65
|
display: block;
|
|
66
66
|
position: relative;
|
|
@@ -59,8 +59,8 @@
|
|
|
59
59
|
* @prop --progress-background: Background of the progress bar representing the current value
|
|
60
60
|
* @prop --buffer-background: DEPRECATED, use `--background` instead
|
|
61
61
|
*/
|
|
62
|
-
--background: rgba(var(--ion-color-primary-rgb,
|
|
63
|
-
--progress-background: var(--ion-color-primary, #
|
|
62
|
+
--background: rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.3);
|
|
63
|
+
--progress-background: var(--ion-color-primary, #0054e9);
|
|
64
64
|
--buffer-background: var(--background);
|
|
65
65
|
display: block;
|
|
66
66
|
position: relative;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import AxeBuilder from "@axe-core/playwright";
|
|
5
|
+
import { expect } from "@playwright/test";
|
|
6
|
+
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
7
|
+
configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
|
|
8
|
+
test.describe(title('progress-bar: a11y'), () => {
|
|
9
|
+
test('should not have accessibility violations', async ({ page }) => {
|
|
10
|
+
/**
|
|
11
|
+
* All page content should be contained by landmarks (main, nav, etc.)
|
|
12
|
+
* By containing the badge in a main element, we can avoid this violation.
|
|
13
|
+
*/
|
|
14
|
+
await page.setContent(`
|
|
15
|
+
<main>
|
|
16
|
+
<ion-progress-bar type="indeterminate" aria-label="default"></ion-progress-bar>
|
|
17
|
+
<ion-progress-bar buffer="0.10" value="0.02" aria-label="buffer"></ion-progress-bar>
|
|
18
|
+
</main>
|
|
19
|
+
`, config);
|
|
20
|
+
const results = await new AxeBuilder({ page }).analyze();
|
|
21
|
+
expect(results.violations).toEqual([]);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
});
|
|
@@ -462,7 +462,7 @@ input {
|
|
|
462
462
|
* }
|
|
463
463
|
*/
|
|
464
464
|
:host {
|
|
465
|
-
--color-checked: var(--ion-color-primary, #
|
|
465
|
+
--color-checked: var(--ion-color-primary, #0054e9);
|
|
466
466
|
}
|
|
467
467
|
|
|
468
468
|
:host(.legacy-radio) {
|
|
@@ -504,7 +504,7 @@ input {
|
|
|
504
504
|
position: absolute;
|
|
505
505
|
width: 36px;
|
|
506
506
|
height: 36px;
|
|
507
|
-
background: var(--ion-color-primary-tint, #
|
|
507
|
+
background: var(--ion-color-primary-tint, #1a65eb);
|
|
508
508
|
content: "";
|
|
509
509
|
opacity: 0.2;
|
|
510
510
|
}
|
|
@@ -463,7 +463,7 @@ input {
|
|
|
463
463
|
*/
|
|
464
464
|
:host {
|
|
465
465
|
--color: rgb(var(--ion-text-color-rgb, 0, 0, 0), 0.6);
|
|
466
|
-
--color-checked: var(--ion-color-primary, #
|
|
466
|
+
--color-checked: var(--ion-color-primary, #0054e9);
|
|
467
467
|
--border-width: 0.125rem;
|
|
468
468
|
--border-style: solid;
|
|
469
469
|
--border-radius: 50%;
|
|
@@ -551,7 +551,7 @@ input {
|
|
|
551
551
|
position: absolute;
|
|
552
552
|
width: 36px;
|
|
553
553
|
height: 36px;
|
|
554
|
-
background: var(--ion-color-primary-tint, #
|
|
554
|
+
background: var(--ion-color-primary-tint, #1a65eb);
|
|
555
555
|
content: "";
|
|
556
556
|
opacity: 0.2;
|
|
557
557
|
}
|
|
@@ -4,82 +4,115 @@
|
|
|
4
4
|
import AxeBuilder from "@axe-core/playwright";
|
|
5
5
|
import { expect } from "@playwright/test";
|
|
6
6
|
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
7
|
-
|
|
8
|
-
* This behavior does not vary across modes/directions.
|
|
9
|
-
*/
|
|
10
|
-
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
7
|
+
configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
|
|
11
8
|
test.describe(title('radio: a11y'), () => {
|
|
12
|
-
test('should not have accessibility violations', async ({ page }) => {
|
|
13
|
-
await page.goto(`/src/components/radio/test/a11y`, config);
|
|
14
|
-
const results = await new AxeBuilder({ page }).analyze();
|
|
15
|
-
expect(results.violations).toEqual([]);
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
// TODO(FW-5715): re-enable test
|
|
19
|
-
test.skip(title('radio: keyboard navigation'), () => {
|
|
20
|
-
test.beforeEach(async ({ page }) => {
|
|
9
|
+
test('default layout should not have accessibility violations', async ({ page }) => {
|
|
21
10
|
await page.setContent(`
|
|
22
|
-
|
|
23
|
-
|
|
11
|
+
<main>
|
|
12
|
+
<ion-radio>my label</ion-radio>
|
|
13
|
+
<ion-radio aria-label="my aria label"></ion-radio>
|
|
14
|
+
<ion-radio-group>
|
|
15
|
+
<ion-radio>my label in a group</ion-radio>
|
|
16
|
+
</ion-radio-group>
|
|
17
|
+
<ion-radio-group>
|
|
18
|
+
<ion-radio aria-label="my aria label in a group"></ion-radio>
|
|
19
|
+
</ion-radio-group>
|
|
24
20
|
<ion-list>
|
|
25
|
-
<ion-
|
|
26
|
-
<ion-
|
|
27
|
-
<ion-radio
|
|
28
|
-
</ion-
|
|
29
|
-
|
|
30
|
-
<ion-radio value="dewey">Dewey</ion-radio>
|
|
31
|
-
</ion-item>
|
|
32
|
-
<ion-item>
|
|
33
|
-
<ion-radio value="fooey" disabled>Fooey</ion-radio>
|
|
34
|
-
</ion-item>
|
|
35
|
-
<ion-item>
|
|
36
|
-
<ion-radio value="louie">Louie</ion-radio>
|
|
37
|
-
</ion-item>
|
|
38
|
-
</ion-radio-group>
|
|
21
|
+
<ion-item>
|
|
22
|
+
<ion-radio-group>
|
|
23
|
+
<ion-radio>my label in a group in a list</ion-radio>
|
|
24
|
+
</ion-radio-group>
|
|
25
|
+
</ion-item>
|
|
39
26
|
</ion-list>
|
|
40
27
|
<ion-list>
|
|
41
|
-
<ion-
|
|
42
|
-
<ion-
|
|
43
|
-
<ion-radio
|
|
44
|
-
</ion-
|
|
45
|
-
|
|
46
|
-
<ion-radio value="dewey">Dewey</ion-radio>
|
|
47
|
-
</ion-item>
|
|
48
|
-
<ion-item>
|
|
49
|
-
<ion-radio value="fooey" disabled>Fooey</ion-radio>
|
|
50
|
-
</ion-item>
|
|
51
|
-
<ion-item>
|
|
52
|
-
<ion-radio value="louie">Louie</ion-radio>
|
|
53
|
-
</ion-item>
|
|
54
|
-
</ion-radio-group>
|
|
28
|
+
<ion-item>
|
|
29
|
+
<ion-radio-group>
|
|
30
|
+
<ion-radio aria-label="my aria label in a group in a list"></ion-radio>
|
|
31
|
+
</ion-radio-group>
|
|
32
|
+
</ion-item>
|
|
55
33
|
</ion-list>
|
|
56
|
-
</
|
|
57
|
-
|
|
58
|
-
|
|
34
|
+
</main>
|
|
35
|
+
`, config);
|
|
36
|
+
const results = await new AxeBuilder({ page }).analyze();
|
|
37
|
+
expect(results.violations).toEqual([]);
|
|
59
38
|
});
|
|
60
|
-
test('
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
await
|
|
39
|
+
test('selected state should not have accessibility violations', async ({ page }) => {
|
|
40
|
+
await page.setContent(`
|
|
41
|
+
<main>
|
|
42
|
+
<ion-radio-group value="a">
|
|
43
|
+
<ion-radio value="a">Selected radio</ion-radio>
|
|
44
|
+
</ion-radio-group>
|
|
45
|
+
</main>
|
|
46
|
+
`, config);
|
|
47
|
+
const results = await new AxeBuilder({ page }).analyze();
|
|
48
|
+
expect(results.violations).toEqual([]);
|
|
69
49
|
});
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
50
|
+
// TODO(FW-5715): re-enable test
|
|
51
|
+
test.skip(title('radio: keyboard navigation'), () => {
|
|
52
|
+
test.beforeEach(async ({ page }) => {
|
|
53
|
+
await page.setContent(`
|
|
54
|
+
<ion-app>
|
|
55
|
+
<ion-content>
|
|
56
|
+
<ion-list>
|
|
57
|
+
<ion-radio-group id="first-group" value="huey">
|
|
58
|
+
<ion-item>
|
|
59
|
+
<ion-radio value="huey">Huey</ion-radio>
|
|
60
|
+
</ion-item>
|
|
61
|
+
<ion-item>
|
|
62
|
+
<ion-radio value="dewey">Dewey</ion-radio>
|
|
63
|
+
</ion-item>
|
|
64
|
+
<ion-item>
|
|
65
|
+
<ion-radio value="fooey" disabled>Fooey</ion-radio>
|
|
66
|
+
</ion-item>
|
|
67
|
+
<ion-item>
|
|
68
|
+
<ion-radio value="louie">Louie</ion-radio>
|
|
69
|
+
</ion-item>
|
|
70
|
+
</ion-radio-group>
|
|
71
|
+
</ion-list>
|
|
72
|
+
<ion-list>
|
|
73
|
+
<ion-radio-group id="second-group" value="huey">
|
|
74
|
+
<ion-item>
|
|
75
|
+
<ion-radio value="huey">Huey</ion-radio>
|
|
76
|
+
</ion-item>
|
|
77
|
+
<ion-item>
|
|
78
|
+
<ion-radio value="dewey">Dewey</ion-radio>
|
|
79
|
+
</ion-item>
|
|
80
|
+
<ion-item>
|
|
81
|
+
<ion-radio value="fooey" disabled>Fooey</ion-radio>
|
|
82
|
+
</ion-item>
|
|
83
|
+
<ion-item>
|
|
84
|
+
<ion-radio value="louie">Louie</ion-radio>
|
|
85
|
+
</ion-item>
|
|
86
|
+
</ion-radio-group>
|
|
87
|
+
</ion-list>
|
|
88
|
+
</ion-content>
|
|
89
|
+
</ion-app>
|
|
90
|
+
`, config);
|
|
91
|
+
});
|
|
92
|
+
test('tabbing should switch between radio groups', async ({ page, pageUtils }) => {
|
|
93
|
+
const firstGroupRadios = page.locator('#first-group ion-radio');
|
|
94
|
+
const secondGroupRadios = page.locator('#second-group ion-radio');
|
|
95
|
+
await pageUtils.pressKeys('Tab');
|
|
96
|
+
await expect(firstGroupRadios.nth(0)).toBeFocused();
|
|
97
|
+
await pageUtils.pressKeys('Tab');
|
|
98
|
+
await expect(secondGroupRadios.nth(0)).toBeFocused();
|
|
99
|
+
await pageUtils.pressKeys('shift+Tab');
|
|
100
|
+
await expect(firstGroupRadios.nth(0)).toBeFocused();
|
|
101
|
+
});
|
|
102
|
+
test('using arrow keys should move between enabled radios within group', async ({ page, pageUtils }) => {
|
|
103
|
+
const firstGroupRadios = page.locator('#first-group ion-radio');
|
|
104
|
+
await pageUtils.pressKeys('Tab');
|
|
105
|
+
await expect(firstGroupRadios.nth(0)).toBeFocused();
|
|
106
|
+
await page.keyboard.press('ArrowDown');
|
|
107
|
+
await expect(firstGroupRadios.nth(1)).toBeFocused();
|
|
108
|
+
// firstGroupRadios.nth(2) is disabled so it should not receive focus.
|
|
109
|
+
await page.keyboard.press('ArrowDown');
|
|
110
|
+
await expect(firstGroupRadios.nth(3)).toBeFocused();
|
|
111
|
+
await page.keyboard.press('ArrowDown');
|
|
112
|
+
await expect(firstGroupRadios.nth(0)).toBeFocused();
|
|
113
|
+
await page.keyboard.press('ArrowUp');
|
|
114
|
+
await expect(firstGroupRadios.nth(3)).toBeFocused();
|
|
115
|
+
});
|
|
83
116
|
});
|
|
84
117
|
});
|
|
85
118
|
});
|
|
@@ -524,7 +524,7 @@
|
|
|
524
524
|
--knob-size: 26px;
|
|
525
525
|
--bar-height: 4px;
|
|
526
526
|
--bar-background: var(--ion-color-step-900, #e6e6e6);
|
|
527
|
-
--bar-background-active: var(--ion-color-primary, #
|
|
527
|
+
--bar-background-active: var(--ion-color-primary, #0054e9);
|
|
528
528
|
--bar-border-radius: 2px;
|
|
529
529
|
--height: 42px;
|
|
530
530
|
}
|
|
@@ -523,11 +523,11 @@
|
|
|
523
523
|
--knob-box-shadow: none;
|
|
524
524
|
--knob-size: 18px;
|
|
525
525
|
--bar-height: 2px;
|
|
526
|
-
--bar-background: rgba(var(--ion-color-primary-rgb,
|
|
527
|
-
--bar-background-active: var(--ion-color-primary, #
|
|
526
|
+
--bar-background: rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.26);
|
|
527
|
+
--bar-background-active: var(--ion-color-primary, #0054e9);
|
|
528
528
|
--bar-border-radius: 0;
|
|
529
529
|
--height: 42px;
|
|
530
|
-
--pin-background: var(--ion-color-primary, #
|
|
530
|
+
--pin-background: var(--ion-color-primary, #0054e9);
|
|
531
531
|
--pin-color: var(--ion-color-primary-contrast, #fff);
|
|
532
532
|
}
|
|
533
533
|
|
|
@@ -4,18 +4,28 @@
|
|
|
4
4
|
import AxeBuilder from "@axe-core/playwright";
|
|
5
5
|
import { expect } from "@playwright/test";
|
|
6
6
|
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
7
|
-
configs({
|
|
7
|
+
configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
|
|
8
8
|
test.describe(title('range: a11y'), () => {
|
|
9
9
|
test('should not have accessibility violations', async ({ page }) => {
|
|
10
|
-
await page.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
await page.setContent(`
|
|
11
|
+
<main>
|
|
12
|
+
<ion-range value="50"><span slot="label">my label</span></ion-range>
|
|
13
|
+
<ion-range label="my label"></ion-range>
|
|
14
|
+
<ion-range aria-label="my aria label"></ion-range>
|
|
15
|
+
<ion-range>
|
|
16
|
+
<span slot="label">temperature</span>
|
|
17
|
+
<ion-icon name="snow" slot="start" aria-hidden="true"></ion-icon>
|
|
18
|
+
<ion-icon name="flame" slot="end" aria-hidden="true"></ion-icon>
|
|
19
|
+
</ion-range>
|
|
20
|
+
</main>
|
|
21
|
+
`, config);
|
|
22
|
+
const results = await new AxeBuilder({ page }).analyze();
|
|
17
23
|
expect(results.violations).toEqual([]);
|
|
18
24
|
});
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
28
|
+
test.describe(title('range: a11y'), () => {
|
|
19
29
|
test('should not have visual regressions', async ({ page }) => {
|
|
20
30
|
await page.setContent(`<ion-app>
|
|
21
31
|
<ion-content>
|
|
@@ -260,7 +260,7 @@ ion-refresher.refresher-native ion-spinner {
|
|
|
260
260
|
margin-bottom: 0;
|
|
261
261
|
width: 24px;
|
|
262
262
|
height: 24px;
|
|
263
|
-
color: var(--ion-color-primary, #
|
|
263
|
+
color: var(--ion-color-primary, #0054e9);
|
|
264
264
|
}
|
|
265
265
|
ion-refresher.refresher-native .spinner-arrow-container {
|
|
266
266
|
display: inherit;
|
|
@@ -282,7 +282,7 @@ ion-refresher.refresher-native .arrow-container ion-icon {
|
|
|
282
282
|
right: 0;
|
|
283
283
|
bottom: -4px;
|
|
284
284
|
position: absolute;
|
|
285
|
-
color: var(--ion-color-primary, #
|
|
285
|
+
color: var(--ion-color-primary, #0054e9);
|
|
286
286
|
font-size: 12px;
|
|
287
287
|
}
|
|
288
288
|
ion-refresher.refresher-native.refresher-pulling ion-refresher-content .refresher-pulling, ion-refresher.refresher-native.refresher-ready ion-refresher-content .refresher-pulling {
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import AxeBuilder from "@axe-core/playwright";
|
|
5
|
+
import { expect } from "@playwright/test";
|
|
6
|
+
import { configs, test, dragElementBy } from "../../../../utils/test/playwright/index";
|
|
7
|
+
configs({ directions: ['ltr'], modes: ['md'], themes: ['light', 'dark'] }).forEach(({ config, title }) => {
|
|
8
|
+
test.describe(title('refresher: a11y for ion-color()'), () => {
|
|
9
|
+
test('should not have accessibility violations', async ({ page }) => {
|
|
10
|
+
await page.setContent(`
|
|
11
|
+
<ion-content>
|
|
12
|
+
<ion-refresher class="refresher-native" slot="fixed">
|
|
13
|
+
<ion-refresher-content></ion-refresher-content>
|
|
14
|
+
</ion-refresher>
|
|
15
|
+
</ion-content>
|
|
16
|
+
`, config);
|
|
17
|
+
const target = page.locator('body');
|
|
18
|
+
const refresher = await page.locator('ion-refresher');
|
|
19
|
+
await dragElementBy(target, page, 0, 320, undefined, undefined, false);
|
|
20
|
+
await expect(refresher).toHaveClass(/refresher-pulling/);
|
|
21
|
+
const results = await new AxeBuilder({ page }).analyze();
|
|
22
|
+
expect(results.violations).toEqual([]);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
});
|
|
@@ -46,7 +46,7 @@ export class RefresherContent {
|
|
|
46
46
|
const pullingIcon = this.pullingIcon;
|
|
47
47
|
const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
|
|
48
48
|
const mode = getIonMode(this);
|
|
49
|
-
return (h(Host, { class: mode }, h("div", { class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (h("div", { class: "refresher-pulling-icon" }, h("div", { class: "spinner-arrow-container" }, h("ion-spinner", { name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (h("div", { class: "arrow-container" }, h("ion-icon", { icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (h("div", { class: "refresher-pulling-icon" }, h("ion-icon", { icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), h("div", { class: "refresher-refreshing" }, this.refreshingSpinner && (h("div", { class: "refresher-refreshing-icon" }, h("ion-spinner", { name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
|
|
49
|
+
return (h(Host, { class: mode }, h("div", { class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (h("div", { class: "refresher-pulling-icon" }, h("div", { class: "spinner-arrow-container" }, h("ion-spinner", { name: this.pullingIcon, "aria-label": "pulling icon", paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (h("div", { class: "arrow-container" }, h("ion-icon", { icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (h("div", { class: "refresher-pulling-icon" }, h("ion-icon", { icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), h("div", { class: "refresher-refreshing" }, this.refreshingSpinner && (h("div", { class: "refresher-refreshing-icon" }, h("ion-spinner", { name: this.refreshingSpinner, "aria-label": "refreshing icon" }))), this.refreshingText !== undefined && this.renderRefreshingText())));
|
|
50
50
|
}
|
|
51
51
|
static get is() { return "ion-refresher-content"; }
|
|
52
52
|
static get properties() {
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import AxeBuilder from "@axe-core/playwright";
|
|
5
|
+
import { expect } from "@playwright/test";
|
|
6
|
+
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
7
|
+
configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
|
|
8
|
+
test.describe(title('router-link: a11y'), () => {
|
|
9
|
+
test('should not have accessibility violations', async ({ page }) => {
|
|
10
|
+
/**
|
|
11
|
+
* All page content should be contained by landmarks (main, nav, etc.)
|
|
12
|
+
* By containing the badge in a main element, we can avoid this violation.
|
|
13
|
+
*/
|
|
14
|
+
await page.setContent(`
|
|
15
|
+
<main>
|
|
16
|
+
<ion-router-link href="#">Router Link</ion-router-link>
|
|
17
|
+
</main>
|
|
18
|
+
`, config);
|
|
19
|
+
const results = await new AxeBuilder({ page }).analyze();
|
|
20
|
+
expect(results.violations).toEqual([]);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -262,7 +262,7 @@
|
|
|
262
262
|
--background: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.07);
|
|
263
263
|
--border-radius: 10px;
|
|
264
264
|
--box-shadow: none;
|
|
265
|
-
--cancel-button-color: var(--ion-color-primary, #
|
|
265
|
+
--cancel-button-color: var(--ion-color-primary, #0054e9);
|
|
266
266
|
--clear-button-color: var(--ion-color-step-600, #666666);
|
|
267
267
|
--color: var(--ion-text-color, #000);
|
|
268
268
|
--icon-color: var(--ion-color-step-600, #666666);
|
|
@@ -4,6 +4,29 @@
|
|
|
4
4
|
import AxeBuilder from "@axe-core/playwright";
|
|
5
5
|
import { expect } from "@playwright/test";
|
|
6
6
|
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
7
|
+
/**
|
|
8
|
+
* Only md mode uses ion-color() for the segment button
|
|
9
|
+
*/
|
|
10
|
+
configs({ directions: ['ltr'], modes: ['md'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
|
|
11
|
+
test.describe(title('segment: a11y for ion-color()'), () => {
|
|
12
|
+
test('should not have accessibility violations', async ({ page }) => {
|
|
13
|
+
await page.setContent(`
|
|
14
|
+
<main>
|
|
15
|
+
<ion-segment aria-label="Tab Options" value="bookmarks">
|
|
16
|
+
<ion-segment-button value="bookmarks">
|
|
17
|
+
<ion-label>Bookmarks</ion-label>
|
|
18
|
+
</ion-segment-button>
|
|
19
|
+
<ion-segment-button value="reading-list">
|
|
20
|
+
<ion-label>Reading List</ion-label>
|
|
21
|
+
</ion-segment-button>
|
|
22
|
+
</ion-segment>
|
|
23
|
+
</main>
|
|
24
|
+
`, config);
|
|
25
|
+
const results = await new AxeBuilder({ page }).analyze();
|
|
26
|
+
expect(results.violations).toEqual([]);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
});
|
|
7
30
|
configs().forEach(({ title, config }) => {
|
|
8
31
|
test.describe(title('segment: a11y'), () => {
|
|
9
32
|
test('should not have any axe violations', async ({ page }) => {
|
|
@@ -362,7 +362,7 @@ ion-ripple-effect {
|
|
|
362
362
|
--background-focused-opacity: .12;
|
|
363
363
|
--background-hover-opacity: .04;
|
|
364
364
|
--color: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.6);
|
|
365
|
-
--color-checked: var(--ion-color-primary, #
|
|
365
|
+
--color-checked: var(--ion-color-primary, #0054e9);
|
|
366
366
|
--indicator-box-shadow: none;
|
|
367
367
|
--indicator-color: var(--color-checked);
|
|
368
368
|
--indicator-height: 2px;
|
|
@@ -425,7 +425,7 @@ ion-ripple-effect {
|
|
|
425
425
|
--background: var(--ion-toolbar-segment-background, none);
|
|
426
426
|
--background-checked: var(--ion-toolbar-segment-background-checked, none);
|
|
427
427
|
--color: var(--ion-toolbar-segment-color, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.6));
|
|
428
|
-
--color-checked: var(--ion-toolbar-segment-color-checked, var(--ion-color-primary, #
|
|
428
|
+
--color-checked: var(--ion-toolbar-segment-color-checked, var(--ion-color-primary, #0054e9));
|
|
429
429
|
--indicator-color: var(--ion-toolbar-segment-color-checked, var(--color-checked));
|
|
430
430
|
}
|
|
431
431
|
|
|
@@ -83,9 +83,9 @@
|
|
|
83
83
|
--placeholder-opacity: 0.6;
|
|
84
84
|
--background: transparent;
|
|
85
85
|
--border-style: solid;
|
|
86
|
-
--highlight-color-focused: var(--ion-color-primary, #
|
|
87
|
-
--highlight-color-valid: var(--ion-color-success, #
|
|
88
|
-
--highlight-color-invalid: var(--ion-color-danger, #
|
|
86
|
+
--highlight-color-focused: var(--ion-color-primary, #0054e9);
|
|
87
|
+
--highlight-color-valid: var(--ion-color-success, #2dd55b);
|
|
88
|
+
--highlight-color-invalid: var(--ion-color-danger, #c5000f);
|
|
89
89
|
/**
|
|
90
90
|
* This is a private API that is used to switch
|
|
91
91
|
* out the highlight color based on the state
|