@ionic/core 7.6.2-dev.11705355381.14b22962 → 7.6.2-dev.11705694334.11b34c62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/action-sheet.js +4 -4
- package/components/alert.js +2 -2
- package/components/animation.js +16 -1
- package/components/button-active.js +1 -1
- package/components/button.js +2 -2
- package/components/checkbox.js +2 -2
- package/components/ion-back-button.js +1 -1
- package/components/ion-badge.js +2 -2
- package/components/ion-content.js +3 -2
- package/components/ion-datetime-button.js +4 -4
- package/components/ion-datetime.js +1 -1
- package/components/ion-fab-button.js +2 -2
- package/components/ion-input.js +2 -2
- package/components/ion-item-option.js +2 -2
- package/components/ion-item-sliding.js +128 -7
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-menu.js +15 -21
- package/components/ion-modal.js +1 -1
- package/components/ion-picker-legacy.js +2 -2
- package/components/ion-progress-bar.js +5 -2
- package/components/ion-range.js +2 -2
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-router-link.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-select.js +2 -2
- package/components/ion-split-pane.js +15 -26
- package/components/ion-tab-bar.js +2 -2
- package/components/ion-tab-button.js +1 -1
- package/components/ion-textarea.js +2 -2
- package/components/ion-toast.js +2 -2
- package/components/ion-toggle.js +2 -2
- package/components/item.js +2 -2
- package/components/label.js +1 -1
- package/components/picker-column2.js +1 -1
- package/components/radio.js +2 -2
- package/components/select-popover.js +1 -1
- package/css/core.css +34 -101
- package/css/core.css.map +1 -1
- package/css/global.bundle.css +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/css/typography.css +1 -1
- package/dist/cjs/{animation-9b401d39.js → animation-8a4f9df4.js} +16 -0
- package/dist/cjs/{button-active-5bf1cac0.js → button-active-466dfc8a.js} +1 -1
- package/dist/cjs/{index-3b012034.js → index-8023641e.js} +1 -1
- package/dist/cjs/{index-17ab7794.js → index-d8b5d5f9.js} +2 -2
- package/dist/cjs/index.cjs.js +5 -5
- package/dist/cjs/ion-action-sheet.cjs.entry.js +6 -6
- package/dist/cjs/ion-alert.cjs.entry.js +4 -4
- package/dist/cjs/ion-app_8.cjs.entry.js +4 -3
- package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-back-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime-button.cjs.entry.js +4 -4
- package/dist/cjs/ion-datetime_3.cjs.entry.js +5 -5
- package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-input.cjs.entry.js +2 -2
- package/dist/cjs/ion-item-option_3.cjs.entry.js +130 -10
- package/dist/cjs/ion-item_8.cjs.entry.js +3 -3
- package/dist/cjs/ion-loading.cjs.entry.js +2 -2
- package/dist/cjs/ion-menu_3.cjs.entry.js +19 -24
- package/dist/cjs/ion-modal.cjs.entry.js +3 -3
- package/dist/cjs/ion-nav_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-popover.cjs.entry.js +2 -2
- package/dist/cjs/ion-progress-bar.cjs.entry.js +5 -2
- package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-range.cjs.entry.js +2 -2
- package/dist/cjs/ion-refresher_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-route_4.cjs.entry.js +1 -1
- package/dist/cjs/ion-searchbar.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-select_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-split-pane.cjs.entry.js +14 -24
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
- package/dist/cjs/ion-toast.cjs.entry.js +3 -3
- package/dist/cjs/ion-toggle.cjs.entry.js +2 -2
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/{ios.transition-b5353f3e.js → ios.transition-34cad0cb.js} +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{md.transition-67157dd9.js → md.transition-5bcc289d.js} +2 -2
- package/dist/collection/components/action-sheet/action-sheet.ios.css +12 -5
- package/dist/collection/components/action-sheet/action-sheet.js +2 -2
- package/dist/collection/components/action-sheet/action-sheet.md.css +9 -2
- package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +14 -23
- package/dist/collection/components/action-sheet/test/basic/action-sheet-rendering.e2e.js +19 -0
- package/dist/collection/components/action-sheet/test/basic/action-sheet.spec.js +22 -0
- package/dist/collection/components/alert/alert.ios.css +28 -27
- package/dist/collection/components/alert/alert.md.css +6 -6
- package/dist/collection/components/alert/test/a11y/alert.e2e.js +9 -22
- package/dist/collection/components/back-button/back-button.ios.css +1 -1
- package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +0 -21
- package/dist/collection/components/badge/badge.ios.css +1 -1
- package/dist/collection/components/badge/badge.md.css +1 -1
- package/dist/collection/components/badge/test/a11y/badge.e2e.js +0 -18
- package/dist/collection/components/button/button.ios.css +10 -10
- package/dist/collection/components/button/button.md.css +8 -8
- package/dist/collection/components/button/test/a11y/button.e2e.js +0 -48
- package/dist/collection/components/checkbox/checkbox.ios.css +5 -5
- package/dist/collection/components/checkbox/checkbox.md.css +2 -3
- package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +2 -11
- package/dist/collection/components/checkbox/test/basic/checkbox.e2e.js +10 -0
- package/dist/collection/components/content/content.js +3 -2
- package/dist/collection/components/datetime/datetime.ios.css +3 -2
- package/dist/collection/components/datetime-button/datetime-button.ios.css +107 -0
- package/dist/collection/components/datetime-button/datetime-button.js +4 -4
- package/dist/collection/components/datetime-button/{datetime-button.css → datetime-button.md.css} +9 -6
- package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +12 -0
- package/dist/collection/components/fab-button/fab-button.ios.css +13 -13
- package/dist/collection/components/fab-button/fab-button.md.css +4 -4
- package/dist/collection/components/fab-button/test/a11y/fab-button.e2e.js +0 -50
- package/dist/collection/components/input/input.ios.css +3 -3
- package/dist/collection/components/input/input.md.css +3 -3
- package/dist/collection/components/input/test/a11y/input.e2e.js +3 -41
- package/dist/collection/components/item/item.ios.css +3 -3
- package/dist/collection/components/item/item.md.css +4 -4
- package/dist/collection/components/item-option/item-option.ios.css +2 -2
- package/dist/collection/components/item-option/item-option.md.css +1 -1
- package/dist/collection/components/item-sliding/animations/item-sliding-options.js +59 -0
- package/dist/collection/components/item-sliding/item-sliding.css +8 -4
- package/dist/collection/components/item-sliding/item-sliding.js +89 -6
- package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +0 -28
- package/dist/collection/components/item-sliding/test/basic/item-sliding.e2e.js +62 -25
- package/dist/collection/components/label/label.md.css +1 -1
- package/dist/collection/components/label/test/a11y/label.e2e.js +0 -20
- package/dist/collection/components/loading/loading.md.css +1 -1
- package/dist/collection/components/loading/test/a11y/loading.e2e.js +5 -21
- package/dist/collection/components/menu/menu.ios.css +3 -64
- package/dist/collection/components/menu/menu.js +13 -19
- package/dist/collection/components/menu/menu.md.css +3 -64
- package/dist/collection/components/menu-button/menu-button.ios.css +1 -1
- package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +0 -14
- package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -1
- package/dist/collection/components/picker-legacy/picker.ios.css +1 -1
- package/dist/collection/components/picker-legacy/picker.md.css +1 -1
- package/dist/collection/components/picker-legacy-column/picker-column.md.css +1 -1
- package/dist/collection/components/progress-bar/progress-bar.ios.css +17 -11
- package/dist/collection/components/progress-bar/progress-bar.js +3 -0
- package/dist/collection/components/progress-bar/progress-bar.md.css +8 -10
- package/dist/collection/components/radio/radio.ios.css +2 -2
- package/dist/collection/components/radio/radio.md.css +2 -2
- package/dist/collection/components/radio/test/a11y/radio.e2e.js +68 -101
- package/dist/collection/components/range/range.ios.css +1 -1
- package/dist/collection/components/range/range.md.css +3 -3
- package/dist/collection/components/range/test/a11y/range.e2e.js +8 -18
- package/dist/collection/components/refresher/refresher.md.css +2 -2
- package/dist/collection/components/refresher-content/refresher-content.js +1 -1
- package/dist/collection/components/router-link/router-link.css +1 -1
- package/dist/collection/components/searchbar/searchbar.ios.css +4 -4
- package/dist/collection/components/segment/test/a11y/segment.e2e.js +0 -23
- package/dist/collection/components/segment-button/segment-button.md.css +2 -2
- package/dist/collection/components/select/select.ios.css +3 -3
- package/dist/collection/components/select/select.md.css +3 -3
- package/dist/collection/components/select/test/a11y/select.e2e.js +4 -68
- package/dist/collection/components/select-popover/select-popover.md.css +4 -4
- package/dist/collection/components/split-pane/split-pane.ios.css +53 -1
- package/dist/collection/components/split-pane/split-pane.js +12 -46
- package/dist/collection/components/split-pane/split-pane.md.css +53 -1
- package/dist/collection/components/tab-bar/tab-bar.ios.css +1 -1
- package/dist/collection/components/tab-bar/tab-bar.md.css +1 -1
- package/dist/collection/components/tab-button/tab-button.ios.css +6 -1
- package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +3 -41
- package/dist/collection/components/textarea/textarea.ios.css +3 -3
- package/dist/collection/components/textarea/textarea.md.css +3 -3
- package/dist/collection/components/toast/test/a11y/toast.e2e.js +24 -56
- package/dist/collection/components/toast/toast.ios.css +1 -1
- package/dist/collection/components/toast/toast.md.css +2 -2
- package/dist/collection/components/toggle/test/a11y/toggle.e2e.js +2 -8
- package/dist/collection/components/toggle/toggle.ios.css +8 -8
- package/dist/collection/components/toggle/toggle.md.css +2 -2
- package/dist/collection/css/test/a11y/typography.e2e.js +0 -18
- package/dist/collection/utils/animation/animation.js +15 -0
- package/dist/collection/utils/gesture/button-active.js +1 -1
- package/dist/collection/utils/test/playwright/generator.js +0 -1
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
- package/dist/docs.json +34 -7
- package/dist/esm/{animation-dde8cc0d.js → animation-ccab0993.js} +16 -1
- package/dist/esm/{button-active-48379dd2.js → button-active-2758ff14.js} +1 -1
- package/dist/esm/{index-4743453d.js → index-9dbb78a4.js} +2 -2
- package/dist/esm/{index-1193f005.js → index-b7e9478d.js} +1 -1
- package/dist/esm/index.js +5 -5
- package/dist/esm/ion-action-sheet.entry.js +6 -6
- package/dist/esm/ion-alert.entry.js +4 -4
- package/dist/esm/ion-app_8.entry.js +4 -3
- package/dist/esm/ion-avatar_3.entry.js +2 -2
- package/dist/esm/ion-back-button.entry.js +1 -1
- package/dist/esm/ion-button_2.entry.js +2 -2
- package/dist/esm/ion-checkbox.entry.js +2 -2
- package/dist/esm/ion-datetime-button.entry.js +4 -4
- package/dist/esm/ion-datetime_3.entry.js +5 -5
- package/dist/esm/ion-fab_3.entry.js +2 -2
- package/dist/esm/ion-input.entry.js +2 -2
- package/dist/esm/ion-item-option_3.entry.js +130 -10
- package/dist/esm/ion-item_8.entry.js +3 -3
- package/dist/esm/ion-loading.entry.js +2 -2
- package/dist/esm/ion-menu_3.entry.js +19 -24
- package/dist/esm/ion-modal.entry.js +3 -3
- package/dist/esm/ion-nav_2.entry.js +1 -1
- package/dist/esm/ion-popover.entry.js +2 -2
- package/dist/esm/ion-progress-bar.entry.js +5 -2
- package/dist/esm/ion-radio_2.entry.js +2 -2
- package/dist/esm/ion-range.entry.js +2 -2
- package/dist/esm/ion-refresher_2.entry.js +3 -3
- package/dist/esm/ion-route_4.entry.js +1 -1
- package/dist/esm/ion-searchbar.entry.js +1 -1
- package/dist/esm/ion-segment_2.entry.js +1 -1
- package/dist/esm/ion-select_3.entry.js +3 -3
- package/dist/esm/ion-split-pane.entry.js +14 -24
- package/dist/esm/ion-tab-bar_2.entry.js +3 -3
- package/dist/esm/ion-textarea.entry.js +2 -2
- package/dist/esm/ion-toast.entry.js +3 -3
- package/dist/esm/ion-toggle.entry.js +2 -2
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/{ios.transition-3376ccb2.js → ios.transition-01176d76.js} +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{md.transition-f992779f.js → md.transition-558655c7.js} +2 -2
- package/dist/esm-es5/animation-ccab0993.js +4 -0
- package/dist/esm-es5/button-active-2758ff14.js +4 -0
- package/dist/esm-es5/{index-4743453d.js → index-9dbb78a4.js} +1 -1
- package/dist/esm-es5/{index-1193f005.js → index-b7e9478d.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
- package/dist/esm-es5/ion-alert.entry.js +1 -1
- package/dist/esm-es5/ion-app_8.entry.js +1 -1
- package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
- package/dist/esm-es5/ion-back-button.entry.js +1 -1
- package/dist/esm-es5/ion-button_2.entry.js +1 -1
- package/dist/esm-es5/ion-checkbox.entry.js +1 -1
- package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
- package/dist/esm-es5/ion-fab_3.entry.js +1 -1
- package/dist/esm-es5/ion-input.entry.js +1 -1
- package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
- package/dist/esm-es5/ion-item_8.entry.js +1 -1
- package/dist/esm-es5/ion-loading.entry.js +1 -1
- package/dist/esm-es5/ion-menu_3.entry.js +1 -1
- package/dist/esm-es5/ion-modal.entry.js +1 -1
- package/dist/esm-es5/ion-nav_2.entry.js +1 -1
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
- package/dist/esm-es5/ion-radio_2.entry.js +1 -1
- package/dist/esm-es5/ion-range.entry.js +1 -1
- package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
- package/dist/esm-es5/ion-route_4.entry.js +1 -1
- package/dist/esm-es5/ion-searchbar.entry.js +1 -1
- package/dist/esm-es5/ion-segment_2.entry.js +1 -1
- package/dist/esm-es5/ion-select_3.entry.js +1 -1
- package/dist/esm-es5/ion-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-3376ccb2.js → ios.transition-01176d76.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/md.transition-558655c7.js +4 -0
- package/dist/html.html-data.json +12 -0
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-ec0a9b2c.system.entry.js → p-019e0d80.system.entry.js} +1 -1
- package/dist/ionic/p-02dc8c5b.entry.js +4 -0
- package/dist/ionic/{p-c6e9ef77.entry.js → p-0cc80201.entry.js} +1 -1
- package/dist/ionic/{p-662a9a47.system.entry.js → p-0dfa4ab4.system.entry.js} +1 -1
- package/dist/ionic/{p-590447a5.system.entry.js → p-0e908476.system.entry.js} +1 -1
- package/dist/ionic/{p-df6f50ef.entry.js → p-10339dcc.entry.js} +1 -1
- package/dist/ionic/{p-1d5b03e3.system.entry.js → p-11bf2ad0.system.entry.js} +1 -1
- package/dist/ionic/{p-3796194b.system.entry.js → p-19c379da.system.entry.js} +1 -1
- package/dist/ionic/p-19d9ceb8.system.js +1 -1
- package/dist/ionic/p-1a22895e.system.entry.js +4 -0
- package/dist/ionic/p-1c69a4ca.system.entry.js +4 -0
- package/dist/ionic/{p-92bfb607.entry.js → p-20a4ee02.entry.js} +1 -1
- package/dist/ionic/{p-530bb2af.system.entry.js → p-2316de85.system.entry.js} +1 -1
- package/dist/ionic/{p-5cbfce20.entry.js → p-26ff1180.entry.js} +1 -1
- package/dist/ionic/p-289f354c.entry.js +4 -0
- package/dist/ionic/p-2a3b87cd.entry.js +4 -0
- package/dist/ionic/p-2e01f1c5.system.entry.js +4 -0
- package/dist/ionic/p-38531958.system.entry.js +4 -0
- package/dist/ionic/{p-5f1b0512.entry.js → p-3b043115.entry.js} +1 -1
- package/dist/ionic/p-3b434dee.system.entry.js +4 -0
- package/dist/ionic/{p-d88ed181.system.entry.js → p-41208f54.system.entry.js} +1 -1
- package/dist/ionic/{p-f0dbd73e.system.entry.js → p-42925096.system.entry.js} +1 -1
- package/dist/ionic/p-44791cff.entry.js +4 -0
- package/dist/ionic/p-4981ea0a.system.entry.js +4 -0
- package/dist/ionic/{p-13d4dfe7.entry.js → p-5074a526.entry.js} +1 -1
- package/dist/ionic/{p-a41eaff2.system.entry.js → p-56b1a872.system.entry.js} +1 -1
- package/dist/ionic/p-57785713.system.entry.js +4 -0
- package/dist/ionic/p-57e9de81.system.js +4 -0
- package/dist/ionic/{p-c001b24f.entry.js → p-5dc16594.entry.js} +1 -1
- package/dist/ionic/{p-9f94e34a.system.entry.js → p-614e63a9.system.entry.js} +1 -1
- package/dist/ionic/{p-8b160fba.entry.js → p-67e52d31.entry.js} +1 -1
- package/dist/ionic/{p-aa975ff8.entry.js → p-6855f26a.entry.js} +1 -1
- package/dist/ionic/{p-7dade589.system.entry.js → p-69ce8bba.system.entry.js} +1 -1
- package/dist/ionic/p-6fb2b5e3.js +4 -0
- package/dist/ionic/{p-8e961825.entry.js → p-799da666.entry.js} +1 -1
- package/dist/ionic/{p-04377cfa.js → p-7b4649d7.js} +1 -1
- package/dist/ionic/{p-4abb1251.entry.js → p-7c7bc0cc.entry.js} +1 -1
- package/dist/ionic/{p-a29db3a0.entry.js → p-7dcf795f.entry.js} +1 -1
- package/dist/ionic/{p-a074be82.system.js → p-7de7a5fd.system.js} +1 -1
- package/dist/ionic/{p-f38c1f8d.entry.js → p-806a9810.entry.js} +1 -1
- package/dist/ionic/p-80ad9792.system.js +4 -0
- package/dist/ionic/{p-d08e0136.entry.js → p-84b567a6.entry.js} +1 -1
- package/dist/ionic/{p-a49931aa.system.js → p-9093afb1.system.js} +1 -1
- package/dist/ionic/p-922c234e.js +4 -0
- package/dist/ionic/p-950c05ad.entry.js +4 -0
- package/dist/ionic/p-97a9d526.system.entry.js +4 -0
- package/dist/ionic/p-99d448ba.system.entry.js +4 -0
- package/dist/ionic/p-9c5e3a2c.system.entry.js +4 -0
- package/dist/ionic/{p-1c453add.system.entry.js → p-a1bd098f.system.entry.js} +1 -1
- package/dist/ionic/p-a619ecad.entry.js +4 -0
- package/dist/ionic/{p-354682e8.system.entry.js → p-abd5d0d5.system.entry.js} +1 -1
- package/dist/ionic/{p-e9431a58.entry.js → p-ae4b7df8.entry.js} +1 -1
- package/dist/ionic/p-b20717fc.system.entry.js +4 -0
- package/dist/ionic/p-b61d7624.entry.js +4 -0
- package/dist/ionic/p-b660ba8a.system.js +4 -0
- package/dist/ionic/{p-2716d76c.entry.js → p-b68d435f.entry.js} +1 -1
- package/dist/ionic/p-ba2b1ef5.entry.js +4 -0
- package/dist/ionic/{p-bc01c384.entry.js → p-ba5d9e27.entry.js} +1 -1
- package/dist/ionic/{p-9c48f42f.entry.js → p-bb3fd397.entry.js} +1 -1
- package/dist/ionic/{p-44a56556.js → p-c75dc92f.js} +1 -1
- package/dist/ionic/{p-1ab2642a.system.js → p-c8f7e8c8.system.js} +1 -1
- package/dist/ionic/p-cd729946.js +4 -0
- package/dist/ionic/{p-385bb983.entry.js → p-cf53213c.entry.js} +1 -1
- package/dist/ionic/{p-e403ff07.entry.js → p-d1ab26de.entry.js} +1 -1
- package/dist/ionic/p-d2a73201.system.entry.js +4 -0
- package/dist/ionic/p-d3525765.js +4 -0
- package/dist/ionic/{p-d01449a3.system.entry.js → p-da666998.system.entry.js} +1 -1
- package/dist/ionic/{p-cc700688.system.entry.js → p-db05ecb6.system.entry.js} +1 -1
- package/dist/ionic/p-dc43a79e.entry.js +4 -0
- package/dist/ionic/{p-0aa78a8d.system.js → p-e755af39.system.js} +1 -1
- package/dist/ionic/p-ee71caaa.system.entry.js +4 -0
- package/dist/ionic/{p-5aec2208.entry.js → p-f0eafd38.entry.js} +1 -1
- package/dist/ionic/{p-25312768.system.entry.js → p-f25b4396.system.entry.js} +1 -1
- package/dist/ionic/p-f65f4d3e.system.entry.js +4 -0
- package/dist/ionic/p-fd98debb.entry.js +4 -0
- package/dist/ionic/p-fe458994.system.entry.js +4 -0
- package/dist/types/components/action-sheet/action-sheet-interface.d.ts +8 -0
- package/dist/types/components/item-sliding/animations/item-sliding-options.d.ts +10 -0
- package/dist/types/components/item-sliding/item-sliding.d.ts +19 -0
- package/dist/types/components/menu/menu.d.ts +1 -11
- package/dist/types/components/split-pane/split-pane.d.ts +2 -14
- package/dist/types/components.d.ts +8 -1
- package/dist/types/utils/animation/animation-interface.d.ts +6 -0
- package/dist/types/utils/animation/animation.d.ts +2 -0
- package/hydrate/index.js +232 -108
- package/package.json +1 -1
- package/css/themes/dark.always.css +0 -122
- package/css/themes/dark.always.css.map +0 -1
- package/css/themes/dark.class.css +0 -122
- package/css/themes/dark.class.css.map +0 -1
- package/css/themes/dark.css +0 -3
- package/css/themes/dark.css.map +0 -1
- package/css/themes/dark.system.css +0 -124
- package/css/themes/dark.system.css.map +0 -1
- package/dist/collection/components/progress-bar/test/a11y/progress-bar.e2e.js +0 -24
- package/dist/collection/components/refresher/test/a11y/refresher.e2e.js +0 -25
- package/dist/collection/components/router-link/test/a11y/router-link.e2e.js +0 -23
- package/dist/collection/components/select-popover/test/a11y/select-popover.e2e.js +0 -32
- package/dist/collection/components/split-pane/test/wrapped-menu/split-pane.e2e.js +0 -41
- package/dist/collection/themes/test/colors/theme.e2e.js +0 -114
- package/dist/esm-es5/animation-dde8cc0d.js +0 -4
- package/dist/esm-es5/button-active-48379dd2.js +0 -4
- package/dist/esm-es5/md.transition-f992779f.js +0 -4
- package/dist/ionic/p-04d84d5d.entry.js +0 -4
- package/dist/ionic/p-068950da.entry.js +0 -4
- package/dist/ionic/p-0832dedf.entry.js +0 -4
- package/dist/ionic/p-11c55ac8.system.js +0 -4
- package/dist/ionic/p-1b60cc53.js +0 -4
- package/dist/ionic/p-24c3f2cd.system.entry.js +0 -4
- package/dist/ionic/p-2724403e.entry.js +0 -4
- package/dist/ionic/p-283bc1a1.system.entry.js +0 -4
- package/dist/ionic/p-29d03b3a.js +0 -4
- package/dist/ionic/p-38f2c6bb.system.js +0 -4
- package/dist/ionic/p-3af5faf8.system.entry.js +0 -4
- package/dist/ionic/p-4eae8c91.entry.js +0 -4
- package/dist/ionic/p-56944895.entry.js +0 -4
- package/dist/ionic/p-713af1fe.entry.js +0 -4
- package/dist/ionic/p-8a25bf30.system.entry.js +0 -4
- package/dist/ionic/p-97aaf697.system.entry.js +0 -4
- package/dist/ionic/p-98f35d98.js +0 -4
- package/dist/ionic/p-9a68d8ef.system.js +0 -4
- package/dist/ionic/p-9a8bc8f3.system.entry.js +0 -4
- package/dist/ionic/p-a6e5f54e.system.entry.js +0 -4
- package/dist/ionic/p-b231b7cf.system.entry.js +0 -4
- package/dist/ionic/p-b59fe3bd.system.entry.js +0 -4
- package/dist/ionic/p-b7e03ff0.system.entry.js +0 -4
- package/dist/ionic/p-bec6ae40.entry.js +0 -4
- package/dist/ionic/p-c16fbc5f.system.entry.js +0 -4
- package/dist/ionic/p-cb3ef9c1.system.entry.js +0 -4
- package/dist/ionic/p-cb6a1fa0.system.entry.js +0 -4
- package/dist/ionic/p-cd3e1a06.entry.js +0 -4
- package/dist/ionic/p-cd574dfa.js +0 -4
- package/dist/ionic/p-d1ad57d5.system.entry.js +0 -4
- package/dist/ionic/p-d2634efe.system.entry.js +0 -4
- package/dist/ionic/p-fc17f198.entry.js +0 -4
|
@@ -22,13 +22,8 @@ export class SplitPane {
|
|
|
22
22
|
this.when = QUERY['lg'];
|
|
23
23
|
}
|
|
24
24
|
visibleChanged(visible) {
|
|
25
|
-
this.
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* @internal
|
|
29
|
-
*/
|
|
30
|
-
async isVisible() {
|
|
31
|
-
return Promise.resolve(this.visible);
|
|
25
|
+
const detail = { visible, isPane: this.isPane.bind(this) };
|
|
26
|
+
this.ionSplitPaneVisible.emit(detail);
|
|
32
27
|
}
|
|
33
28
|
async connectedCallback() {
|
|
34
29
|
// TODO: connectedCallback is fired in CE build
|
|
@@ -36,7 +31,7 @@ export class SplitPane {
|
|
|
36
31
|
if (typeof customElements !== 'undefined' && customElements != null) {
|
|
37
32
|
await customElements.whenDefined('ion-split-pane');
|
|
38
33
|
}
|
|
39
|
-
this.
|
|
34
|
+
this.styleChildren();
|
|
40
35
|
this.updateState();
|
|
41
36
|
}
|
|
42
37
|
disconnectedCallback() {
|
|
@@ -82,16 +77,13 @@ export class SplitPane {
|
|
|
82
77
|
this.visible = mediaList.matches;
|
|
83
78
|
}
|
|
84
79
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
* pane load.
|
|
93
|
-
*/
|
|
94
|
-
styleMainElement() {
|
|
80
|
+
isPane(element) {
|
|
81
|
+
if (!this.visible) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
return element.parentElement === this.el && element.classList.contains(SPLIT_PANE_SIDE);
|
|
85
|
+
}
|
|
86
|
+
styleChildren() {
|
|
95
87
|
if (!Build.isBrowser) {
|
|
96
88
|
return;
|
|
97
89
|
}
|
|
@@ -107,11 +99,9 @@ export class SplitPane {
|
|
|
107
99
|
console.warn('split pane cannot have more than one main node');
|
|
108
100
|
return;
|
|
109
101
|
}
|
|
110
|
-
|
|
111
|
-
setPaneClass(child, isMain);
|
|
112
|
-
foundMain = true;
|
|
113
|
-
}
|
|
102
|
+
foundMain = true;
|
|
114
103
|
}
|
|
104
|
+
setPaneClass(child, isMain);
|
|
115
105
|
}
|
|
116
106
|
if (!foundMain) {
|
|
117
107
|
console.warn('split pane does not have a specified main node');
|
|
@@ -220,30 +210,6 @@ export class SplitPane {
|
|
|
220
210
|
}
|
|
221
211
|
}];
|
|
222
212
|
}
|
|
223
|
-
static get methods() {
|
|
224
|
-
return {
|
|
225
|
-
"isVisible": {
|
|
226
|
-
"complexType": {
|
|
227
|
-
"signature": "() => Promise<boolean>",
|
|
228
|
-
"parameters": [],
|
|
229
|
-
"references": {
|
|
230
|
-
"Promise": {
|
|
231
|
-
"location": "global",
|
|
232
|
-
"id": "global::Promise"
|
|
233
|
-
}
|
|
234
|
-
},
|
|
235
|
-
"return": "Promise<boolean>"
|
|
236
|
-
},
|
|
237
|
-
"docs": {
|
|
238
|
-
"text": "",
|
|
239
|
-
"tags": [{
|
|
240
|
-
"name": "internal",
|
|
241
|
-
"text": undefined
|
|
242
|
-
}]
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
};
|
|
246
|
-
}
|
|
247
213
|
static get elementRef() { return "el"; }
|
|
248
214
|
static get watchers() {
|
|
249
215
|
return [{
|
|
@@ -127,21 +127,51 @@
|
|
|
127
127
|
contain: strict;
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
+
/**
|
|
131
|
+
* Do not pass CSS Variables down on larger
|
|
132
|
+
* screens as we want them to affect the outer
|
|
133
|
+
* `ion-menu` rather than the inner content
|
|
134
|
+
*/
|
|
135
|
+
::slotted(ion-menu.menu-pane-visible) {
|
|
136
|
+
flex: 0 1 auto;
|
|
137
|
+
width: var(--side-width);
|
|
138
|
+
min-width: var(--side-min-width);
|
|
139
|
+
max-width: var(--side-max-width);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
:host(.split-pane-visible) ::slotted(.split-pane-side),
|
|
130
143
|
:host(.split-pane-visible) ::slotted(.split-pane-main) {
|
|
131
144
|
left: 0;
|
|
132
145
|
right: 0;
|
|
133
146
|
top: 0;
|
|
134
147
|
bottom: 0;
|
|
135
148
|
position: relative;
|
|
136
|
-
flex: 1;
|
|
137
149
|
box-shadow: none;
|
|
138
150
|
z-index: 0;
|
|
139
151
|
}
|
|
140
152
|
|
|
153
|
+
:host(.split-pane-visible) ::slotted(.split-pane-main) {
|
|
154
|
+
flex: 1;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
:host(.split-pane-visible) ::slotted(.split-pane-side:not(ion-menu)),
|
|
158
|
+
:host(.split-pane-visible) ::slotted(ion-menu.split-pane-side.menu-enabled) {
|
|
159
|
+
display: flex;
|
|
160
|
+
flex-shrink: 0;
|
|
161
|
+
}
|
|
162
|
+
|
|
141
163
|
::slotted(.split-pane-side:not(ion-menu)) {
|
|
142
164
|
display: none;
|
|
143
165
|
}
|
|
144
166
|
|
|
167
|
+
:host(.split-pane-visible) ::slotted(.split-pane-side) {
|
|
168
|
+
order: -1;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
:host(.split-pane-visible) ::slotted(.split-pane-side[side=end]) {
|
|
172
|
+
order: 1;
|
|
173
|
+
}
|
|
174
|
+
|
|
145
175
|
/**
|
|
146
176
|
* Convert a font size to a dynamic font size.
|
|
147
177
|
* Fonts that participate in Dynamic Type should use
|
|
@@ -201,4 +231,26 @@
|
|
|
201
231
|
--border: 1px solid var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))));
|
|
202
232
|
--side-min-width: 270px;
|
|
203
233
|
--side-max-width: 28%;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
:host(.split-pane-visible) ::slotted(.split-pane-side) {
|
|
237
|
+
-webkit-border-start: 0;
|
|
238
|
+
border-inline-start: 0;
|
|
239
|
+
-webkit-border-end: var(--border);
|
|
240
|
+
border-inline-end: var(--border);
|
|
241
|
+
border-top: 0;
|
|
242
|
+
border-bottom: 0;
|
|
243
|
+
min-width: var(--side-min-width);
|
|
244
|
+
max-width: var(--side-max-width);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
:host(.split-pane-visible) ::slotted(.split-pane-side[side=end]) {
|
|
248
|
+
-webkit-border-start: var(--border);
|
|
249
|
+
border-inline-start: var(--border);
|
|
250
|
+
-webkit-border-end: 0;
|
|
251
|
+
border-inline-end: 0;
|
|
252
|
+
border-top: 0;
|
|
253
|
+
border-bottom: 0;
|
|
254
|
+
min-width: var(--side-min-width);
|
|
255
|
+
max-width: var(--side-max-width);
|
|
204
256
|
}
|
|
@@ -234,7 +234,7 @@
|
|
|
234
234
|
--background-focused: var(--ion-tab-bar-background-focused, #e0e0e0);
|
|
235
235
|
--border: 0.55px solid var(--ion-tab-bar-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.2))));
|
|
236
236
|
--color: var(--ion-tab-bar-color, var(--ion-color-step-600, #666666));
|
|
237
|
-
--color-selected: var(--ion-tab-bar-color-selected, var(--ion-color-primary, #
|
|
237
|
+
--color-selected: var(--ion-tab-bar-color-selected, var(--ion-color-primary, #3880ff));
|
|
238
238
|
height: 50px;
|
|
239
239
|
}
|
|
240
240
|
|
|
@@ -234,6 +234,6 @@
|
|
|
234
234
|
--background-focused: var(--ion-tab-bar-background-focused, #e0e0e0);
|
|
235
235
|
--border: 1px solid var(--ion-tab-bar-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.07))));
|
|
236
236
|
--color: var(--ion-tab-bar-color, var(--ion-color-step-650, #595959));
|
|
237
|
-
--color-selected: var(--ion-tab-bar-color-selected, var(--ion-color-primary, #
|
|
237
|
+
--color-selected: var(--ion-tab-bar-color-selected, var(--ion-color-primary, #3880ff));
|
|
238
238
|
height: 56px;
|
|
239
239
|
}
|
|
@@ -332,7 +332,7 @@ ion-ripple-effect {
|
|
|
332
332
|
::slotted(ion-icon) {
|
|
333
333
|
margin-top: 2px;
|
|
334
334
|
margin-bottom: 2px;
|
|
335
|
-
font-size:
|
|
335
|
+
font-size: 24px;
|
|
336
336
|
}
|
|
337
337
|
|
|
338
338
|
::slotted(ion-icon::before) {
|
|
@@ -474,4 +474,9 @@ ion-ripple-effect {
|
|
|
474
474
|
margin-right: 0;
|
|
475
475
|
margin-top: 0;
|
|
476
476
|
margin-bottom: 0;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
:host(.tab-layout-label-hide) ::slotted(ion-icon),
|
|
480
|
+
:host(.tab-has-icon-only) ::slotted(ion-icon) {
|
|
481
|
+
font-size: 30px;
|
|
477
482
|
}
|
|
@@ -4,52 +4,14 @@
|
|
|
4
4
|
import AxeBuilder from "@axe-core/playwright";
|
|
5
5
|
import { expect } from "@playwright/test";
|
|
6
6
|
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
7
|
-
configs({ directions: ['ltr']
|
|
7
|
+
configs({ directions: ['ltr'] }).forEach(({ title, config, screenshot }) => {
|
|
8
8
|
test.describe(title('textarea: a11y'), () => {
|
|
9
|
-
test('
|
|
10
|
-
await page.
|
|
11
|
-
<main>
|
|
12
|
-
<ion-textarea label="Label" placeholder="Placeholder"></ion-textarea>
|
|
13
|
-
<ion-textarea placeholder="Placeholder">
|
|
14
|
-
<div slot="label">Label"></div>
|
|
15
|
-
</ion-textarea>
|
|
16
|
-
<ion-textarea label="Label" value="My Text"></ion-textarea>
|
|
17
|
-
<ion-textarea aria-label="Label"></ion-textarea>
|
|
18
|
-
<ion-textarea label="Email" label-placement="floating" fill="solid" value="hi@ionic.io">
|
|
19
|
-
<ion-icon slot="start" name="lock-closed" aria-hidden="true"></ion-icon>
|
|
20
|
-
<ion-button slot="end" aria-label="button">
|
|
21
|
-
<ion-icon slot="icon-only" name="lock-closed" aria-hidden="true"></ion-icon>
|
|
22
|
-
</ion-button>
|
|
23
|
-
</ion-textarea>
|
|
24
|
-
</main>
|
|
25
|
-
`, config);
|
|
26
|
-
const results = await new AxeBuilder({ page }).analyze();
|
|
27
|
-
expect(results.violations).toEqual([]);
|
|
28
|
-
});
|
|
29
|
-
test('focused state should not have accessibility violations', async ({ page }) => {
|
|
30
|
-
/**
|
|
31
|
-
* The primary color against the focus background
|
|
32
|
-
* when using fill="solid" does not meet AA
|
|
33
|
-
* contrast guidelines so it excluded from the test.
|
|
34
|
-
* The contrast here is a significant improvement
|
|
35
|
-
* over what Ionic has had in the past, so the team
|
|
36
|
-
* has decided that this tradeoff is acceptable since
|
|
37
|
-
* the scope of the problem is limited to the focus
|
|
38
|
-
* state with the primary color when fill="solid".
|
|
39
|
-
*/
|
|
40
|
-
await page.setContent(`
|
|
41
|
-
<main>
|
|
42
|
-
<ion-textarea class="has-focus" label="Label" value="My Text"></ion-textarea>
|
|
43
|
-
<ion-textarea class="has-focus" label-placement="floating" label="Label" value="My Text"></ion-textarea>
|
|
44
|
-
<ion-textarea class="has-focus" fill="outline" label-placement="floating" label="Label" value="My Text"></ion-textarea>
|
|
45
|
-
</main>
|
|
46
|
-
`, config);
|
|
9
|
+
test('should not have accessibility violations', async ({ page }) => {
|
|
10
|
+
await page.goto(`/src/components/textarea/test/a11y`, config);
|
|
47
11
|
const results = await new AxeBuilder({ page }).analyze();
|
|
48
12
|
expect(results.violations).toEqual([]);
|
|
49
13
|
});
|
|
50
14
|
});
|
|
51
|
-
});
|
|
52
|
-
configs({ directions: ['ltr'] }).forEach(({ title, config, screenshot }) => {
|
|
53
15
|
test.describe(title('textarea: font scaling'), () => {
|
|
54
16
|
test('should scale text on larger font sizes', async ({ page }) => {
|
|
55
17
|
await page.setContent(`
|
|
@@ -91,9 +91,9 @@
|
|
|
91
91
|
--padding-start: 0;
|
|
92
92
|
--border-radius: 0;
|
|
93
93
|
--border-style: solid;
|
|
94
|
-
--highlight-color-focused: var(--ion-color-primary, #
|
|
95
|
-
--highlight-color-valid: var(--ion-color-success, #
|
|
96
|
-
--highlight-color-invalid: var(--ion-color-danger, #
|
|
94
|
+
--highlight-color-focused: var(--ion-color-primary, #3880ff);
|
|
95
|
+
--highlight-color-valid: var(--ion-color-success, #2dd36f);
|
|
96
|
+
--highlight-color-invalid: var(--ion-color-danger, #eb445a);
|
|
97
97
|
/**
|
|
98
98
|
* This is a private API that is used to switch
|
|
99
99
|
* out the highlight color based on the state
|
|
@@ -91,9 +91,9 @@
|
|
|
91
91
|
--padding-start: 0;
|
|
92
92
|
--border-radius: 0;
|
|
93
93
|
--border-style: solid;
|
|
94
|
-
--highlight-color-focused: var(--ion-color-primary, #
|
|
95
|
-
--highlight-color-valid: var(--ion-color-success, #
|
|
96
|
-
--highlight-color-invalid: var(--ion-color-danger, #
|
|
94
|
+
--highlight-color-focused: var(--ion-color-primary, #3880ff);
|
|
95
|
+
--highlight-color-valid: var(--ion-color-success, #2dd36f);
|
|
96
|
+
--highlight-color-invalid: var(--ion-color-danger, #eb445a);
|
|
97
97
|
/**
|
|
98
98
|
* This is a private API that is used to switch
|
|
99
99
|
* out the highlight color based on the state
|
|
@@ -4,62 +4,6 @@
|
|
|
4
4
|
import AxeBuilder from "@axe-core/playwright";
|
|
5
5
|
import { expect } from "@playwright/test";
|
|
6
6
|
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
7
|
-
configs({ directions: ['ltr'], themes: ['dark', 'light'] }).forEach(({ title, config }) => {
|
|
8
|
-
test.describe(title('toast: Axe testing'), () => {
|
|
9
|
-
test('should not have any axe violations with inline toasts', async ({ page }) => {
|
|
10
|
-
await page.setContent(`
|
|
11
|
-
<ion-toast></ion-toast>
|
|
12
|
-
|
|
13
|
-
<script>
|
|
14
|
-
const toast = document.querySelector('ion-toast');
|
|
15
|
-
toast.icon = 'person';
|
|
16
|
-
toast.header = 'Inline Toast Header';
|
|
17
|
-
toast.message = 'Inline Toast Message';
|
|
18
|
-
toast.buttons = ['OK'];
|
|
19
|
-
</script>
|
|
20
|
-
`, config);
|
|
21
|
-
const ionToastDidPresent = await page.spyOnEvent('ionToastDidPresent');
|
|
22
|
-
const toast = page.locator('ion-toast');
|
|
23
|
-
await toast.evaluate((el) => el.present());
|
|
24
|
-
await ionToastDidPresent.next();
|
|
25
|
-
const results = await new AxeBuilder({ page }).analyze();
|
|
26
|
-
expect(results.violations).toEqual([]);
|
|
27
|
-
});
|
|
28
|
-
test('should not have any axe violations with controller toasts', async ({ page }) => {
|
|
29
|
-
await page.setContent(`
|
|
30
|
-
<script type="module">
|
|
31
|
-
import { toastController } from '../../../../dist/ionic/index.esm.js';
|
|
32
|
-
window.toastController = toastController;
|
|
33
|
-
</script>
|
|
34
|
-
|
|
35
|
-
<ion-button onclick="presentToast()">Present</ion-button>
|
|
36
|
-
|
|
37
|
-
<script>
|
|
38
|
-
const presentToast = async () => {
|
|
39
|
-
// we only want to test color contrast on the toast itself
|
|
40
|
-
const button = document.querySelector('ion-button');
|
|
41
|
-
button.style.display = 'none';
|
|
42
|
-
|
|
43
|
-
const toast = await toastController.create({
|
|
44
|
-
icon: 'person',
|
|
45
|
-
header: 'Controller Toast Header',
|
|
46
|
-
message: 'Controller Toast Message',
|
|
47
|
-
buttons: ['OK']
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
await toast.present();
|
|
51
|
-
};
|
|
52
|
-
</script>
|
|
53
|
-
`, config);
|
|
54
|
-
const ionToastDidPresent = await page.spyOnEvent('ionToastDidPresent');
|
|
55
|
-
const button = page.locator('ion-button');
|
|
56
|
-
await button.click();
|
|
57
|
-
await ionToastDidPresent.next();
|
|
58
|
-
const results = await new AxeBuilder({ page }).analyze();
|
|
59
|
-
expect(results.violations).toEqual([]);
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
7
|
/**
|
|
64
8
|
* This test does not check LTR vs RTL layouts
|
|
65
9
|
*/
|
|
@@ -68,6 +12,30 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
68
12
|
test.beforeEach(async ({ page }) => {
|
|
69
13
|
await page.goto(`/src/components/toast/test/a11y`, config);
|
|
70
14
|
});
|
|
15
|
+
test('should not have any axe violations with inline toasts', async ({ page }) => {
|
|
16
|
+
const didPresent = await page.spyOnEvent('ionToastDidPresent');
|
|
17
|
+
await page.click('#inline-toast-trigger');
|
|
18
|
+
await didPresent.next();
|
|
19
|
+
/**
|
|
20
|
+
* IonToast overlays the entire screen, so
|
|
21
|
+
* Axe will be unable to verify color contrast
|
|
22
|
+
* on elements under the toast.
|
|
23
|
+
*/
|
|
24
|
+
const results = await new AxeBuilder({ page }).disableRules('color-contrast').analyze();
|
|
25
|
+
expect(results.violations).toEqual([]);
|
|
26
|
+
});
|
|
27
|
+
test('should not have any axe violations with controller toasts', async ({ page }) => {
|
|
28
|
+
const didPresent = await page.spyOnEvent('ionToastDidPresent');
|
|
29
|
+
await page.click('#controller-toast-trigger');
|
|
30
|
+
await didPresent.next();
|
|
31
|
+
/**
|
|
32
|
+
* IonToast overlays the entire screen, so
|
|
33
|
+
* Axe will be unable to verify color contrast
|
|
34
|
+
* on elements under the toast.
|
|
35
|
+
*/
|
|
36
|
+
const results = await new AxeBuilder({ page }).disableRules('color-contrast').analyze();
|
|
37
|
+
expect(results.violations).toEqual([]);
|
|
38
|
+
});
|
|
71
39
|
test('should have aria-labelledby and aria-label added to the button when htmlAttributes is set', async ({ page, }) => {
|
|
72
40
|
const didPresent = await page.spyOnEvent('ionToastDidPresent');
|
|
73
41
|
await page.click('#aria-label-toast-trigger');
|
|
@@ -323,7 +323,7 @@
|
|
|
323
323
|
:host {
|
|
324
324
|
--background: var(--ion-color-step-50, #f2f2f2);
|
|
325
325
|
--border-radius: 14px;
|
|
326
|
-
--button-color: var(--ion-color-primary, #
|
|
326
|
+
--button-color: var(--ion-color-primary, #3880ff);
|
|
327
327
|
--color: var(--ion-color-step-850, #262626);
|
|
328
328
|
--max-width: 700px;
|
|
329
329
|
--max-height: 478px;
|
|
@@ -324,7 +324,7 @@
|
|
|
324
324
|
--background: var(--ion-color-step-800, #333333);
|
|
325
325
|
--border-radius: 4px;
|
|
326
326
|
--box-shadow: 0 3px 5px -1px rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12);
|
|
327
|
-
--button-color: var(--ion-color-primary, #
|
|
327
|
+
--button-color: var(--ion-color-primary, #3880ff);
|
|
328
328
|
--color: var(--ion-color-step-50, #f2f2f2);
|
|
329
329
|
--max-width: 700px;
|
|
330
330
|
--start: 8px;
|
|
@@ -421,7 +421,7 @@
|
|
|
421
421
|
|
|
422
422
|
@media (any-hover: hover) {
|
|
423
423
|
.toast-button:hover {
|
|
424
|
-
background-color: rgba(var(--ion-color-primary-rgb,
|
|
424
|
+
background-color: rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.08);
|
|
425
425
|
}
|
|
426
426
|
.toast-button-cancel:hover {
|
|
427
427
|
background-color: rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.08);
|
|
@@ -4,16 +4,10 @@
|
|
|
4
4
|
import AxeBuilder from "@axe-core/playwright";
|
|
5
5
|
import { expect } from "@playwright/test";
|
|
6
6
|
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
7
|
-
configs({
|
|
7
|
+
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
8
8
|
test.describe(title('toggle: a11y'), () => {
|
|
9
9
|
test('should not have accessibility violations', async ({ page }) => {
|
|
10
|
-
await page.
|
|
11
|
-
<main>
|
|
12
|
-
<ion-toggle>my label</ion-toggle>
|
|
13
|
-
<ion-toggle aria-label="my aria label"></ion-toggle>
|
|
14
|
-
<ion-toggle checked="true">Checked</ion-toggle>
|
|
15
|
-
</main>
|
|
16
|
-
`, config);
|
|
10
|
+
await page.goto(`/src/components/toggle/test/a11y`, config);
|
|
17
11
|
const results = await new AxeBuilder({ page }).analyze();
|
|
18
12
|
expect(results.violations).toEqual([]);
|
|
19
13
|
});
|
|
@@ -532,29 +532,29 @@ input {
|
|
|
532
532
|
*/
|
|
533
533
|
:host {
|
|
534
534
|
--track-background: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.088);
|
|
535
|
-
--track-background-checked: var(--ion-color-primary, #
|
|
536
|
-
--border-radius:
|
|
535
|
+
--track-background-checked: var(--ion-color-primary, #3880ff);
|
|
536
|
+
--border-radius: 15.5px;
|
|
537
537
|
--handle-background: #ffffff;
|
|
538
538
|
--handle-background-checked: #ffffff;
|
|
539
539
|
--handle-border-radius: 25.5px;
|
|
540
|
-
--handle-box-shadow: 0 3px
|
|
541
|
-
--handle-height: calc(
|
|
540
|
+
--handle-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.06), 0 3px 8px rgba(0, 0, 0, 0.06);
|
|
541
|
+
--handle-height: calc(31px - (2px * 2));
|
|
542
542
|
--handle-max-height: calc(100% - var(--handle-spacing) * 2);
|
|
543
|
-
--handle-width: calc(
|
|
543
|
+
--handle-width: calc(31px - (2px * 2));
|
|
544
544
|
--handle-spacing: 2px;
|
|
545
545
|
--handle-transition: transform 300ms, width 120ms ease-in-out 80ms, left 110ms ease-in-out 80ms, right 110ms ease-in-out 80ms;
|
|
546
546
|
}
|
|
547
547
|
|
|
548
548
|
:host(.legacy-toggle) {
|
|
549
549
|
width: 51px;
|
|
550
|
-
height:
|
|
550
|
+
height: 31px;
|
|
551
551
|
contain: strict;
|
|
552
552
|
overflow: hidden;
|
|
553
553
|
}
|
|
554
554
|
|
|
555
555
|
.native-wrapper .toggle-icon {
|
|
556
556
|
width: 51px;
|
|
557
|
-
height:
|
|
557
|
+
height: 31px;
|
|
558
558
|
/**
|
|
559
559
|
* The handle box shadow should not
|
|
560
560
|
* overflow outside of the track container.
|
|
@@ -590,7 +590,7 @@ input {
|
|
|
590
590
|
|
|
591
591
|
.toggle-switch-icon {
|
|
592
592
|
position: absolute;
|
|
593
|
-
color: var(--ion-color-dark
|
|
593
|
+
color: var(--ion-color-dark);
|
|
594
594
|
}
|
|
595
595
|
|
|
596
596
|
:host(.toggle-ltr) .toggle-switch-icon {
|
|
@@ -532,10 +532,10 @@ input {
|
|
|
532
532
|
*/
|
|
533
533
|
:host {
|
|
534
534
|
--track-background: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.39);
|
|
535
|
-
--track-background-checked: rgba(var(--ion-color-primary-rgb,
|
|
535
|
+
--track-background-checked: rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.5);
|
|
536
536
|
--border-radius: 14px;
|
|
537
537
|
--handle-background: #ffffff;
|
|
538
|
-
--handle-background-checked: var(--ion-color-primary, #
|
|
538
|
+
--handle-background-checked: var(--ion-color-primary, #3880ff);
|
|
539
539
|
--handle-border-radius: 50%;
|
|
540
540
|
--handle-box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
|
|
541
541
|
--handle-width: 20px;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import AxeBuilder from "@axe-core/playwright";
|
|
5
4
|
import { expect } from "@playwright/test";
|
|
6
5
|
import { configs, test } from "../../../utils/test/playwright/index";
|
|
7
6
|
configs({ directions: ['ltr'], modes: ['ios'] }).forEach(({ title, screenshot, config }) => {
|
|
@@ -31,20 +30,3 @@ configs({ directions: ['ltr'], modes: ['ios'] }).forEach(({ title, screenshot, c
|
|
|
31
30
|
});
|
|
32
31
|
});
|
|
33
32
|
});
|
|
34
|
-
configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ config, title }) => {
|
|
35
|
-
test.describe(title('typography: a11y'), () => {
|
|
36
|
-
test('should not have accessibility violations for anchor tags', async ({ page }) => {
|
|
37
|
-
/**
|
|
38
|
-
* All page content should be contained by landmarks (main, nav, etc.)
|
|
39
|
-
* By containing the badge in a main element, we can avoid this violation.
|
|
40
|
-
*/
|
|
41
|
-
await page.setContent(`
|
|
42
|
-
<main>
|
|
43
|
-
<a href="#">Link</a>
|
|
44
|
-
</main>
|
|
45
|
-
`, config);
|
|
46
|
-
const results = await new AxeBuilder({ page }).analyze();
|
|
47
|
-
expect(results.violations).toEqual([]);
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
});
|
|
@@ -4,6 +4,11 @@
|
|
|
4
4
|
import { win } from "../browser";
|
|
5
5
|
import { raf } from "../helpers";
|
|
6
6
|
import { addClassToArray, animationEnd, createKeyframeStylesheet, generateKeyframeName, generateKeyframeRules, processKeyframes, removeStyleProperty, setStyleProperty, } from "./animation-utils";
|
|
7
|
+
export const supportsAnimationEffect = typeof AnimationEffect === 'function' ||
|
|
8
|
+
(win !== undefined && typeof win.AnimationEffect === 'function');
|
|
9
|
+
export const supportsWebAnimations = typeof Element === 'function' &&
|
|
10
|
+
typeof Element.prototype.animate === 'function' &&
|
|
11
|
+
supportsAnimationEffect;
|
|
7
12
|
export const createAnimation = (animationId) => {
|
|
8
13
|
let _delay;
|
|
9
14
|
let _duration;
|
|
@@ -15,6 +20,7 @@ export const createAnimation = (animationId) => {
|
|
|
15
20
|
let beforeAddClasses = [];
|
|
16
21
|
let beforeRemoveClasses = [];
|
|
17
22
|
let initialized = false;
|
|
23
|
+
let _commitStyles = false;
|
|
18
24
|
let parentAnimation;
|
|
19
25
|
let beforeStylesValue = {};
|
|
20
26
|
let afterAddClasses = [];
|
|
@@ -323,6 +329,11 @@ export const createAnimation = (animationId) => {
|
|
|
323
329
|
update(true);
|
|
324
330
|
return ani;
|
|
325
331
|
};
|
|
332
|
+
const commitStyles = (shouldCommitStyles = true) => {
|
|
333
|
+
_commitStyles = shouldCommitStyles;
|
|
334
|
+
update(true);
|
|
335
|
+
return ani;
|
|
336
|
+
};
|
|
326
337
|
const duration = (animationDuration) => {
|
|
327
338
|
/**
|
|
328
339
|
* CSS Animation Durations of 0ms work fine on Chrome
|
|
@@ -563,6 +574,9 @@ export const createAnimation = (animationId) => {
|
|
|
563
574
|
// When creating the animation the delay is guaranteed to be set to a number.
|
|
564
575
|
animation.currentTime = animation.effect.getComputedTiming().delay + getDuration() * step;
|
|
565
576
|
animation.pause();
|
|
577
|
+
if (_commitStyles) {
|
|
578
|
+
animation.commitStyles();
|
|
579
|
+
}
|
|
566
580
|
});
|
|
567
581
|
}
|
|
568
582
|
else {
|
|
@@ -900,6 +914,7 @@ export const createAnimation = (animationId) => {
|
|
|
900
914
|
addAnimation,
|
|
901
915
|
addElement,
|
|
902
916
|
update,
|
|
917
|
+
commitStyles,
|
|
903
918
|
fill,
|
|
904
919
|
direction,
|
|
905
920
|
iterations,
|
|
@@ -12,7 +12,7 @@ export const createButtonActiveGesture = (el, isButton) => {
|
|
|
12
12
|
return;
|
|
13
13
|
}
|
|
14
14
|
const target = document.elementFromPoint(x, y);
|
|
15
|
-
if (!target || !isButton(target)) {
|
|
15
|
+
if (!target || !isButton(target) || target.disabled) {
|
|
16
16
|
clearActiveButton();
|
|
17
17
|
return;
|
|
18
18
|
}
|
|
@@ -39,7 +39,7 @@ export const setContent = async (page, html, testInfo, options) => {
|
|
|
39
39
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" />
|
|
40
40
|
<link href="${baseUrl}/css/ionic.bundle.css" rel="stylesheet" />
|
|
41
41
|
<link href="${baseUrl}/scripts/testing/styles.css" rel="stylesheet" />
|
|
42
|
-
${theme !== 'light' ? `<link href="${baseUrl}/
|
|
42
|
+
${theme !== 'light' ? `<link href="${baseUrl}/scripts/testing/themes/${theme}.css" rel="stylesheet" />` : ''}
|
|
43
43
|
<script src="${baseUrl}/scripts/testing/scripts.js"></script>
|
|
44
44
|
<script type="module" src="${baseUrl}/dist/ionic/ionic.esm.js"></script>
|
|
45
45
|
<script>
|