@ionic/core 8.0.0-dev.11709632212.139b6f63 → 8.0.0-dev.11711408410.14d71406
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 +11 -6
- package/components/alert.js +12 -8
- package/components/animation.js +9 -250
- package/components/backdrop.js +8 -4
- package/components/button.js +25 -9
- package/components/buttons.js +10 -6
- package/components/checkbox.js +13 -9
- package/components/data.js +27 -42
- package/components/haptic.js +6 -54
- package/components/hardware-back-button.js +3 -3
- package/components/helpers.js +1 -57
- package/components/index4.js +8 -7
- package/components/index6.js +25 -30
- package/components/index7.js +124 -25
- package/components/index8.js +150 -111
- package/components/input-shims.js +1 -1
- package/components/input.utils.js +13 -1
- package/components/ion-accordion-group.js +9 -6
- package/components/ion-accordion.js +10 -6
- package/components/ion-app.js +8 -9
- package/components/ion-avatar.js +9 -2
- package/components/ion-back-button.js +12 -8
- package/components/ion-badge.js +9 -5
- package/components/ion-breadcrumb.js +11 -7
- package/components/ion-breadcrumbs.js +9 -5
- package/components/ion-card-content.js +9 -5
- package/components/ion-card-header.js +9 -5
- package/components/ion-card-subtitle.js +9 -5
- package/components/ion-card-title.js +9 -5
- package/components/ion-card.js +11 -7
- package/components/ion-chip.js +9 -5
- package/components/ion-col.js +5 -5
- package/components/ion-content.js +10 -10
- package/components/ion-datetime-button.js +19 -15
- package/components/ion-datetime.js +93 -27
- package/components/ion-fab-button.js +10 -6
- package/components/ion-fab-list.js +5 -5
- package/components/ion-fab.js +5 -5
- package/components/ion-footer.js +14 -10
- package/components/ion-grid.js +5 -5
- package/components/ion-header.js +15 -11
- package/components/ion-img.js +5 -2
- package/components/ion-infinite-scroll-content.js +12 -8
- package/components/ion-infinite-scroll.js +5 -5
- package/components/ion-input.js +17 -14
- package/components/ion-item-divider.js +9 -5
- package/components/ion-item-group.js +9 -5
- package/components/ion-item-option.js +9 -5
- package/components/ion-item-options.js +9 -5
- package/components/ion-item-sliding.js +5 -5
- package/components/ion-loading.js +10 -6
- package/components/ion-menu-button.js +11 -7
- package/components/ion-menu-toggle.js +5 -5
- package/components/ion-menu.js +14 -31
- package/components/ion-modal.js +45 -10
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +6 -5
- package/components/ion-note.js +47 -1
- package/components/ion-picker-legacy.js +5 -6
- package/components/ion-progress-bar.js +8 -4
- package/components/ion-range.js +145 -50
- package/components/ion-refresher-content.js +9 -8
- package/components/ion-refresher.js +10 -6
- package/components/ion-reorder-group.js +5 -5
- package/components/ion-reorder.js +11 -5
- package/components/ion-router-link.js +5 -5
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-router.js +1 -1
- package/components/ion-row.js +5 -2
- package/components/ion-searchbar.js +46 -13
- package/components/ion-segment-button.js +10 -6
- package/components/ion-segment.js +9 -5
- package/components/ion-select-option.js +5 -2
- package/components/ion-select.js +48 -50
- package/components/ion-skeleton-text.js +5 -5
- package/components/ion-split-pane.js +10 -6
- package/components/ion-tab-bar.js +9 -5
- package/components/ion-tab-button.js +9 -5
- package/components/ion-tab.js +2 -2
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +5 -5
- package/components/ion-textarea.js +15 -12
- package/components/ion-thumbnail.js +5 -2
- package/components/ion-title.js +9 -5
- package/components/ion-toast.js +13 -9
- package/components/ion-toggle.js +17 -13
- package/components/ion-toolbar.js +9 -5
- package/components/ionic-global.js +190 -13
- package/components/ios.transition.js +1 -0
- package/components/item.js +39 -102
- package/components/label.js +12 -8
- package/components/list-header.js +9 -5
- package/components/list.js +10 -6
- package/components/overlays.js +141 -57
- package/components/picker-column-option.js +9 -5
- package/components/picker-column.js +28 -9
- package/components/picker-column2.js +4 -4
- package/components/picker.js +6 -2
- package/components/popover.js +11 -8
- package/components/radio-group.js +5 -3
- package/components/radio.js +10 -6
- package/components/ripple-effect.js +4 -4
- package/components/select-popover.js +21 -20
- package/components/spinner.js +6 -6
- package/components/status-tap.js +1 -1
- package/css/core.ionic.css +13 -0
- package/css/core.ionic.css.map +1 -0
- package/css/palettes/dark.always.css.map +1 -0
- package/css/{themes → palettes}/dark.class.css +4 -4
- package/css/palettes/dark.class.css.map +1 -0
- package/css/palettes/dark.system.css.map +1 -0
- package/css/palettes/high-contrast-dark.always.css.map +1 -0
- package/css/{themes → palettes}/high-contrast-dark.class.css +10 -10
- package/css/palettes/high-contrast-dark.class.css.map +1 -0
- package/css/palettes/high-contrast-dark.system.css.map +1 -0
- package/css/palettes/high-contrast.always.css.map +1 -0
- package/css/{themes → palettes}/high-contrast.class.css +31 -31
- package/css/palettes/high-contrast.class.css.map +1 -0
- package/css/palettes/high-contrast.system.css.map +1 -0
- package/dist/cjs/{animation-4ad55058.js → animation-b4fdf128.js} +9 -250
- package/dist/cjs/{app-globals-92ad1b3d.js → app-globals-98e49326.js} +1 -1
- package/dist/cjs/{button-active-8f6a8e77.js → button-active-e2ed5329.js} +2 -2
- package/dist/cjs/{data-e2bf21de.js → data-f2ccf911.js} +28 -45
- package/dist/cjs/{framework-delegate-53817ef1.js → framework-delegate-55f5683a.js} +1 -1
- package/dist/cjs/{haptic-b882e0bb.js → haptic-f6b37aa3.js} +6 -54
- package/dist/cjs/{hardware-back-button-2696acaf.js → hardware-back-button-f66bce00.js} +5 -5
- package/dist/cjs/{helpers-b71ca811.js → helpers-afaa9001.js} +0 -58
- package/dist/cjs/{index-0ffe376d.js → index-2d21d526.js} +443 -14
- package/dist/cjs/{index-88b3bd6f.js → index-5643c839.js} +4 -4
- package/dist/cjs/{index-347883f6.js → index-91435ed0.js} +3 -3
- package/dist/cjs/{index-7574e3d2.js → index-9509ecad.js} +5 -34
- package/dist/cjs/{index-16fc2c94.js → index-f5fcf972.js} +15 -14
- package/dist/cjs/index.cjs.js +11 -12
- package/dist/cjs/{input-shims-679d87bc.js → input-shims-837af288.js} +4 -3
- package/dist/cjs/{input.utils-5175aea1.js → input.utils-01c2fa15.js} +15 -3
- package/dist/cjs/ion-accordion_2.cjs.entry.js +20 -13
- package/dist/cjs/ion-action-sheet.cjs.entry.js +19 -15
- package/dist/cjs/ion-alert.cjs.entry.js +20 -17
- package/dist/cjs/ion-app_8.cjs.entry.js +87 -68
- package/dist/cjs/ion-avatar_3.cjs.entry.js +22 -8
- package/dist/cjs/ion-back-button.cjs.entry.js +13 -9
- package/dist/cjs/ion-backdrop.cjs.entry.js +9 -5
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +20 -12
- package/dist/cjs/ion-button_2.cjs.entry.js +28 -13
- package/dist/cjs/ion-card_5.cjs.entry.js +45 -25
- package/dist/cjs/ion-checkbox.cjs.entry.js +15 -11
- package/dist/cjs/ion-chip.cjs.entry.js +10 -6
- package/dist/cjs/ion-col_3.cjs.entry.js +14 -11
- package/dist/cjs/ion-datetime-button.cjs.entry.js +25 -21
- package/dist/cjs/ion-datetime_3.cjs.entry.js +175 -112
- package/dist/cjs/ion-fab_3.cjs.entry.js +19 -15
- package/dist/cjs/ion-img.cjs.entry.js +7 -4
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +18 -15
- package/dist/cjs/ion-input.cjs.entry.js +19 -17
- package/dist/cjs/ion-item-option_3.cjs.entry.js +23 -16
- package/dist/cjs/ion-item_8.cjs.entry.js +89 -116
- package/dist/cjs/ion-loading.cjs.entry.js +16 -13
- package/dist/cjs/ion-menu_3.cjs.entry.js +32 -46
- package/dist/cjs/ion-modal.cjs.entry.js +57 -22
- package/dist/cjs/ion-nav_2.cjs.entry.js +12 -10
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +11 -7
- package/dist/cjs/ion-picker-column.cjs.entry.js +31 -12
- package/dist/cjs/ion-picker.cjs.entry.js +8 -4
- package/dist/cjs/ion-popover.cjs.entry.js +20 -17
- package/dist/cjs/ion-progress-bar.cjs.entry.js +10 -6
- package/dist/cjs/ion-radio_2.cjs.entry.js +16 -10
- package/dist/cjs/ion-range.cjs.entry.js +151 -56
- package/dist/cjs/ion-refresher_2.cjs.entry.js +21 -17
- package/dist/cjs/ion-reorder_2.cjs.entry.js +17 -12
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +5 -5
- package/dist/cjs/ion-route_4.cjs.entry.js +7 -7
- package/dist/cjs/ion-searchbar.cjs.entry.js +41 -13
- package/dist/cjs/ion-segment_2.cjs.entry.js +20 -12
- package/dist/cjs/ion-select_3.cjs.entry.js +46 -33
- package/dist/cjs/ion-spinner.cjs.entry.js +7 -7
- package/dist/cjs/ion-split-pane.cjs.entry.js +11 -7
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +19 -11
- package/dist/cjs/ion-tab_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-text.cjs.entry.js +6 -6
- package/dist/cjs/ion-textarea.cjs.entry.js +18 -16
- package/dist/cjs/ion-toast.cjs.entry.js +39 -35
- package/dist/cjs/ion-toggle.cjs.entry.js +19 -15
- package/dist/cjs/ionic-global-94d8021d.js +411 -0
- package/dist/cjs/ionic.cjs.js +28 -5
- package/dist/cjs/{ios.transition-b102ee38.js → ios.transition-19155451.js} +5 -4
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-a5454240.js → md.transition-1b1135b1.js} +4 -4
- package/dist/cjs/{notch-controller-8e0ae870.js → notch-controller-d69150f5.js} +1 -1
- package/dist/cjs/{overlays-6b7d156b.js → overlays-de847251.js} +143 -58
- package/dist/cjs/{status-tap-b60dcbd8.js → status-tap-3ef7ca2b.js} +4 -4
- package/dist/cjs/{swipe-back-72c5c8b7.js → swipe-back-0303a5e4.js} +1 -1
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/accordion/accordion.js +11 -8
- package/dist/collection/components/accordion-group/accordion-group.js +11 -8
- package/dist/collection/components/action-sheet/action-sheet.js +14 -10
- package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +1 -1
- package/dist/collection/components/alert/alert.js +15 -12
- package/dist/collection/components/alert/test/a11y/alert.e2e.js +5 -1
- package/dist/collection/components/alert/test/basic/alert.e2e.js +1 -1
- package/dist/collection/components/app/app.js +11 -7
- package/dist/collection/components/avatar/avatar.js +13 -4
- package/dist/collection/components/back-button/back-button.js +13 -10
- package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +1 -1
- package/dist/collection/components/backdrop/backdrop.js +12 -6
- package/dist/collection/components/badge/badge.js +11 -8
- package/dist/collection/components/badge/test/a11y/badge.e2e.js +1 -1
- package/dist/collection/components/breadcrumb/breadcrumb.js +12 -9
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +11 -9
- package/dist/collection/components/button/button.ios.css +32 -10
- package/dist/collection/components/button/button.js +28 -8
- package/dist/collection/components/button/button.md.css +28 -13
- package/dist/collection/components/button/test/a11y/button.e2e.js +2 -2
- package/dist/collection/components/button/test/round/button.e2e.js +39 -4
- package/dist/collection/components/buttons/buttons.js +14 -8
- package/dist/collection/components/card/card.js +13 -10
- package/dist/collection/components/card-content/card-content.js +11 -8
- package/dist/collection/components/card-header/card-header.js +12 -9
- package/dist/collection/components/card-subtitle/card-subtitle.js +11 -8
- package/dist/collection/components/card-title/card-title.js +11 -8
- package/dist/collection/components/checkbox/checkbox.js +15 -12
- package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +1 -1
- package/dist/collection/components/checkbox/test/checkbox.spec.js +12 -0
- package/dist/collection/components/chip/chip.js +11 -8
- package/dist/collection/components/col/col.js +9 -5
- package/dist/collection/components/content/content.js +13 -10
- package/dist/collection/components/datetime/datetime.js +75 -28
- package/dist/collection/components/datetime/test/basic/datetime.e2e.js +80 -1
- package/dist/collection/components/datetime/test/format.spec.js +65 -15
- package/dist/collection/components/datetime/utils/data.js +3 -3
- package/dist/collection/components/datetime/utils/format.js +24 -37
- package/dist/collection/components/datetime/utils/validate.js +45 -0
- package/dist/collection/components/datetime-button/datetime-button.js +21 -17
- package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +65 -0
- package/dist/collection/components/fab/fab.js +9 -5
- package/dist/collection/components/fab-button/fab-button.js +12 -9
- package/dist/collection/components/fab-button/test/a11y/fab-button.e2e.js +1 -1
- package/dist/collection/components/fab-list/fab-list.js +9 -5
- package/dist/collection/components/footer/footer.js +17 -14
- package/dist/collection/components/grid/grid.js +9 -5
- package/dist/collection/components/header/header.ios.css +5 -2
- package/dist/collection/components/header/header.js +17 -14
- package/dist/collection/components/header/test/basic/header.e2e.js +77 -0
- package/dist/collection/components/img/img.js +8 -2
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +8 -4
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +16 -10
- package/dist/collection/components/input/input.ios.css +4 -2
- package/dist/collection/components/input/input.js +16 -37
- package/dist/collection/components/input/input.md.css +6 -4
- package/dist/collection/components/input/test/a11y/input.e2e.js +1 -1
- package/dist/collection/components/input/test/highlight/input.e2e.js +144 -0
- package/dist/collection/components/input/test/item/input.e2e.js +21 -0
- package/dist/collection/components/input/test/slot/input.e2e.js +8 -0
- package/dist/collection/components/item/item.ios.css +6 -198
- package/dist/collection/components/item/item.js +33 -178
- package/dist/collection/components/item/item.md.css +8 -361
- package/dist/collection/components/item/test/basic/item.e2e.js +0 -5
- package/dist/collection/components/item/test/buttons/item.e2e.js +20 -4
- package/dist/collection/components/item/test/item.spec.js +1 -1
- package/dist/collection/components/item-divider/item-divider.js +11 -8
- package/dist/collection/components/item-group/item-group.js +13 -7
- package/dist/collection/components/item-option/item-option.js +11 -8
- package/dist/collection/components/item-options/item-options.js +13 -7
- package/dist/collection/components/item-sliding/item-sliding.js +8 -4
- package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +1 -1
- package/dist/collection/components/label/label.ios.css +0 -5
- package/dist/collection/components/label/label.js +11 -8
- package/dist/collection/components/label/label.md.css +0 -75
- package/dist/collection/components/label/test/a11y/label.e2e.js +1 -1
- package/dist/collection/components/list/list.js +12 -9
- package/dist/collection/components/list-header/list-header.js +11 -8
- package/dist/collection/components/loading/loading.js +13 -10
- package/dist/collection/components/loading/test/a11y/loading.e2e.js +1 -1
- package/dist/collection/components/menu/menu.js +26 -35
- package/dist/collection/components/menu-button/menu-button.js +12 -9
- package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +1 -1
- package/dist/collection/components/menu-toggle/menu-toggle.js +8 -5
- package/dist/collection/components/modal/modal.js +46 -11
- package/dist/collection/components/modal/test/modal-attributes.spec.js +32 -0
- package/dist/collection/components/nav/nav.js +11 -5
- package/dist/collection/components/nav-link/nav-link.js +5 -1
- package/dist/collection/components/note/note.js +11 -8
- package/dist/collection/components/picker/picker.js +8 -5
- package/dist/collection/components/picker-column/picker-column.js +30 -10
- package/dist/collection/components/picker-column-option/picker-column-option.js +13 -7
- package/dist/collection/components/picker-legacy/picker.js +7 -6
- package/dist/collection/components/picker-legacy-column/picker-column.js +4 -4
- package/dist/collection/components/popover/popover.js +18 -14
- package/dist/collection/components/progress-bar/progress-bar.js +10 -7
- package/dist/collection/components/progress-bar/test/a11y/progress-bar.e2e.js +1 -1
- package/dist/collection/components/radio/radio.js +12 -9
- package/dist/collection/components/radio/test/a11y/radio.e2e.js +1 -1
- package/dist/collection/components/radio-group/radio-group.js +9 -3
- package/dist/collection/components/range/range.js +146 -51
- package/dist/collection/components/range/test/a11y/range.e2e.js +1 -1
- package/dist/collection/components/range/test/label/range.spec.js +24 -0
- package/dist/collection/components/range/test/range-events.e2e.js +27 -0
- package/dist/collection/components/refresher/refresher.js +11 -8
- package/dist/collection/components/refresher/test/a11y/refresher.e2e.js +1 -1
- package/dist/collection/components/refresher-content/refresher-content.js +12 -7
- package/dist/collection/components/reorder/reorder.js +13 -6
- package/dist/collection/components/reorder-group/reorder-group.js +8 -4
- package/dist/collection/components/ripple-effect/ripple-effect.js +8 -4
- package/dist/collection/components/route/route.js +4 -0
- package/dist/collection/components/router/router.js +4 -0
- package/dist/collection/components/router-link/router-link.js +9 -5
- package/dist/collection/components/router-link/test/a11y/router-link.e2e.js +1 -1
- package/dist/collection/components/router-outlet/router-outlet.js +5 -2
- package/dist/collection/components/row/row.js +9 -2
- package/dist/collection/components/searchbar/searchbar.js +101 -19
- package/dist/collection/components/searchbar/test/searchbar.spec.js +20 -2
- package/dist/collection/components/segment/segment.js +11 -8
- package/dist/collection/components/segment/test/a11y/segment.e2e.js +1 -1
- package/dist/collection/components/segment-button/segment-button.js +12 -9
- package/dist/collection/components/select/select.ios.css +7 -2
- package/dist/collection/components/select/select.js +32 -29
- package/dist/collection/components/select/select.md.css +6 -29
- package/dist/collection/components/select/test/a11y/select.e2e.js +1 -1
- package/dist/collection/components/select/test/highlight/select.e2e.js +88 -4
- package/dist/collection/components/select/test/select.spec.js +22 -0
- package/dist/collection/components/select/test/slot/select.e2e.js +8 -0
- package/dist/collection/components/select-option/select-option.js +9 -2
- package/dist/collection/components/select-popover/select-popover.js +12 -4
- package/dist/collection/components/select-popover/test/a11y/select-popover.e2e.js +1 -1
- package/dist/collection/components/skeleton-text/skeleton-text.js +9 -5
- package/dist/collection/components/spinner/spinner.js +10 -6
- package/dist/collection/components/split-pane/split-pane.js +14 -8
- package/dist/collection/components/tab/tab.js +6 -2
- package/dist/collection/components/tab-bar/tab-bar.js +12 -9
- package/dist/collection/components/tab-button/tab-button.js +11 -8
- package/dist/collection/components/tabs/tabs.js +4 -1
- package/dist/collection/components/text/text.js +7 -6
- package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +1 -1
- package/dist/collection/components/textarea/test/highlight/textarea.e2e.js +144 -0
- package/dist/collection/components/textarea/test/item/textarea.e2e.js +21 -0
- package/dist/collection/components/textarea/test/slot/textarea.e2e.js +8 -0
- package/dist/collection/components/textarea/textarea.ios.css +4 -22
- package/dist/collection/components/textarea/textarea.js +15 -36
- package/dist/collection/components/textarea/textarea.md.css +6 -17
- package/dist/collection/components/thumbnail/thumbnail.js +9 -2
- package/dist/collection/components/title/title.js +13 -7
- package/dist/collection/components/toast/animations/utils.js +1 -1
- package/dist/collection/components/toast/test/a11y/toast.e2e.js +2 -2
- package/dist/collection/components/toast/toast.js +15 -11
- package/dist/collection/components/toggle/test/a11y/toggle.e2e.js +1 -1
- package/dist/collection/components/toggle/toggle.js +19 -16
- package/dist/collection/components/toolbar/toolbar.js +13 -10
- package/dist/collection/css/test/a11y/typography.e2e.js +1 -1
- package/dist/collection/global/ionic-global.js +160 -12
- package/dist/collection/global/test/ionic-global.spec.js +109 -0
- package/dist/collection/themes/test/colors/theme.e2e.js +2 -2
- package/dist/collection/utils/animation/animation-utils.js +0 -102
- package/dist/collection/utils/animation/animation.js +10 -141
- package/dist/collection/utils/animation/test/animation.spec.js +0 -89
- package/dist/collection/utils/animation/test/animationbuilder/animation.e2e.js +0 -4
- package/dist/collection/utils/animation/test/basic/animation.e2e.js +0 -4
- package/dist/collection/utils/animation/test/display/animation.e2e.js +0 -4
- package/dist/collection/utils/animation/test/hooks/animation.e2e.js +0 -4
- package/dist/collection/utils/animation/test/multiple/animation.e2e.js +0 -7
- package/dist/collection/utils/focus-trap.js +78 -0
- package/dist/collection/utils/forms/index.js +0 -1
- package/dist/collection/utils/hardware-back-button.js +2 -2
- package/dist/collection/utils/helpers.js +0 -53
- package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
- package/dist/collection/utils/menu-controller/animations/push.js +2 -1
- package/dist/collection/utils/menu-controller/animations/reveal.js +2 -1
- package/dist/collection/utils/native/haptic.js +6 -54
- package/dist/collection/utils/overlays.js +64 -53
- package/dist/collection/utils/slot-mutation-controller.js +12 -0
- package/dist/collection/utils/tap-click/index.js +5 -34
- package/dist/collection/utils/test/overlays/overlays.spec.js +53 -0
- package/dist/collection/utils/test/playwright/generator.js +48 -25
- package/dist/collection/utils/test/playwright/page/utils/goto.js +13 -4
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +14 -2
- package/dist/collection/utils/transition/ios.transition.js +1 -0
- package/dist/docs.json +3992 -478
- package/dist/esm/{animation-a4acf150.js → animation-eab5a4ca.js} +9 -250
- package/dist/esm/{app-globals-5cf6195b.js → app-globals-4194f7b0.js} +1 -1
- package/dist/esm/{button-active-4407b98c.js → button-active-6f657ae4.js} +2 -2
- package/dist/esm/{data-691286f1.js → data-735635b1.js} +27 -42
- package/dist/esm/{framework-delegate-1eb3236c.js → framework-delegate-63d1a679.js} +1 -1
- package/dist/esm/{haptic-554688a5.js → haptic-ac164e4c.js} +6 -54
- package/dist/esm/{hardware-back-button-b410a047.js → hardware-back-button-ff84501f.js} +5 -5
- package/dist/esm/{helpers-ae74b3c9.js → helpers-da915de8.js} +1 -57
- package/dist/esm/{index-4c30cddd.js → index-3a495cc6.js} +443 -15
- package/dist/esm/{index-66871a1d.js → index-4bbc4ca3.js} +2 -2
- package/dist/esm/{index-8758824c.js → index-62041d9c.js} +11 -10
- package/dist/esm/{index-1f563746.js → index-79b30591.js} +5 -34
- package/dist/esm/{index-1eff8599.js → index-e3f4491c.js} +4 -4
- package/dist/esm/index.js +11 -12
- package/dist/esm/{input-shims-56c1f603.js → input-shims-131a3f9f.js} +4 -3
- package/dist/esm/{input.utils-482fc893.js → input.utils-41b26b54.js} +14 -2
- package/dist/esm/ion-accordion_2.entry.js +19 -12
- package/dist/esm/ion-action-sheet.entry.js +19 -15
- package/dist/esm/ion-alert.entry.js +20 -17
- package/dist/esm/ion-app_8.entry.js +76 -57
- package/dist/esm/ion-avatar_3.entry.js +22 -8
- package/dist/esm/ion-back-button.entry.js +13 -9
- package/dist/esm/ion-backdrop.entry.js +9 -5
- package/dist/esm/ion-breadcrumb_2.entry.js +20 -12
- package/dist/esm/ion-button_2.entry.js +25 -10
- package/dist/esm/ion-card_5.entry.js +45 -25
- package/dist/esm/ion-checkbox.entry.js +15 -11
- package/dist/esm/ion-chip.entry.js +10 -6
- package/dist/esm/ion-col_3.entry.js +14 -11
- package/dist/esm/ion-datetime-button.entry.js +21 -17
- package/dist/esm/ion-datetime_3.entry.js +103 -40
- package/dist/esm/ion-fab_3.entry.js +19 -15
- package/dist/esm/ion-img.entry.js +7 -4
- package/dist/esm/ion-infinite-scroll_2.entry.js +18 -15
- package/dist/esm/ion-input.entry.js +19 -17
- package/dist/esm/ion-item-option_3.entry.js +23 -16
- package/dist/esm/ion-item_8.entry.js +89 -116
- package/dist/esm/ion-loading.entry.js +16 -13
- package/dist/esm/ion-menu_3.entry.js +32 -46
- package/dist/esm/ion-modal.entry.js +52 -17
- package/dist/esm/ion-nav_2.entry.js +12 -10
- package/dist/esm/ion-picker-column-option.entry.js +11 -7
- package/dist/esm/ion-picker-column.entry.js +31 -12
- package/dist/esm/ion-picker.entry.js +8 -4
- package/dist/esm/ion-popover.entry.js +17 -14
- package/dist/esm/ion-progress-bar.entry.js +10 -6
- package/dist/esm/ion-radio_2.entry.js +16 -10
- package/dist/esm/ion-range.entry.js +146 -51
- package/dist/esm/ion-refresher_2.entry.js +21 -17
- package/dist/esm/ion-reorder_2.entry.js +17 -12
- package/dist/esm/ion-ripple-effect.entry.js +5 -5
- package/dist/esm/ion-route_4.entry.js +7 -7
- package/dist/esm/ion-searchbar.entry.js +41 -13
- package/dist/esm/ion-segment_2.entry.js +20 -12
- package/dist/esm/ion-select_3.entry.js +46 -33
- package/dist/esm/ion-spinner.entry.js +7 -7
- package/dist/esm/ion-split-pane.entry.js +11 -7
- package/dist/esm/ion-tab-bar_2.entry.js +19 -11
- package/dist/esm/ion-tab_2.entry.js +6 -6
- package/dist/esm/ion-text.entry.js +6 -6
- package/dist/esm/ion-textarea.entry.js +18 -16
- package/dist/esm/ion-toast.entry.js +19 -15
- package/dist/esm/ion-toggle.entry.js +19 -15
- package/dist/esm/ionic-global-d47e129d.js +401 -0
- package/dist/esm/ionic.js +29 -6
- package/dist/esm/{ios.transition-189b73b7.js → ios.transition-2187a9fd.js} +5 -4
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-c9761eef.js → md.transition-a8d52fcb.js} +4 -4
- package/dist/esm/{notch-controller-18bf9f76.js → notch-controller-55b09e11.js} +1 -1
- package/dist/esm/{overlays-c69d2a07.js → overlays-213b5a21.js} +142 -58
- package/dist/esm/{status-tap-1d638ee6.js → status-tap-8838c434.js} +4 -4
- package/dist/esm/{swipe-back-348f1971.js → swipe-back-e5394307.js} +1 -1
- package/dist/esm-es5/animation-eab5a4ca.js +4 -0
- package/dist/esm-es5/app-globals-4194f7b0.js +4 -0
- package/dist/esm-es5/{button-active-4407b98c.js → button-active-6f657ae4.js} +1 -1
- package/dist/esm-es5/data-735635b1.js +4 -0
- package/dist/esm-es5/{framework-delegate-1eb3236c.js → framework-delegate-63d1a679.js} +1 -1
- package/dist/esm-es5/haptic-ac164e4c.js +4 -0
- package/dist/esm-es5/hardware-back-button-ff84501f.js +4 -0
- package/dist/esm-es5/helpers-da915de8.js +4 -0
- package/dist/esm-es5/index-3a495cc6.js +5 -0
- package/dist/esm-es5/index-4bbc4ca3.js +4 -0
- package/dist/esm-es5/index-62041d9c.js +4 -0
- package/dist/esm-es5/index-79b30591.js +4 -0
- package/dist/esm-es5/{index-1eff8599.js → index-e3f4491c.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/input-shims-131a3f9f.js +4 -0
- package/dist/esm-es5/input.utils-41b26b54.js +4 -0
- package/dist/esm-es5/ion-accordion_2.entry.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-backdrop.entry.js +1 -1
- package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
- package/dist/esm-es5/ion-button_2.entry.js +1 -1
- package/dist/esm-es5/ion-card_5.entry.js +1 -1
- package/dist/esm-es5/ion-checkbox.entry.js +1 -1
- package/dist/esm-es5/ion-chip.entry.js +1 -1
- package/dist/esm-es5/ion-col_3.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-img.entry.js +1 -1
- package/dist/esm-es5/ion-infinite-scroll_2.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-picker-column-option.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column.entry.js +1 -1
- package/dist/esm-es5/ion-picker.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-reorder_2.entry.js +1 -1
- package/dist/esm-es5/ion-ripple-effect.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-spinner.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-tab_2.entry.js +1 -1
- package/dist/esm-es5/ion-text.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-global-d47e129d.js +4 -0
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/ios.transition-2187a9fd.js +4 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/{md.transition-c9761eef.js → md.transition-a8d52fcb.js} +1 -1
- package/dist/esm-es5/{notch-controller-18bf9f76.js → notch-controller-55b09e11.js} +1 -1
- package/dist/esm-es5/overlays-213b5a21.js +4 -0
- package/dist/esm-es5/status-tap-8838c434.js +4 -0
- package/dist/esm-es5/{swipe-back-348f1971.js → swipe-back-e5394307.js} +1 -1
- package/dist/html.html-data.json +1916 -132
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/ionic.js +1 -1
- package/dist/ionic/p-0507489e.system.entry.js +4 -0
- package/dist/ionic/p-09b71030.entry.js +4 -0
- package/dist/ionic/p-0c0065e8.js +4 -0
- package/dist/ionic/p-0daf382b.system.entry.js +4 -0
- package/dist/ionic/p-1126b6fb.entry.js +4 -0
- package/dist/ionic/p-116239e0.system.entry.js +4 -0
- package/dist/ionic/p-11f25a12.system.js +4 -0
- package/dist/ionic/{p-de55ec45.js → p-139e8ff1.js} +1 -1
- package/dist/ionic/p-13aa1338.entry.js +4 -0
- package/dist/ionic/p-16b3b748.system.js +4 -0
- package/dist/ionic/p-18d1e318.system.js +4 -0
- package/dist/ionic/p-197fca36.system.entry.js +4 -0
- package/dist/ionic/{p-8a50f8d6.system.js → p-19ea7bff.system.js} +1 -1
- package/dist/ionic/{p-98e6b3b8.system.js → p-1a488d6f.system.js} +1 -1
- package/dist/ionic/p-1f04779e.entry.js +4 -0
- package/dist/ionic/p-226bdf0f.entry.js +4 -0
- package/dist/ionic/p-23132e1f.js +4 -0
- package/dist/ionic/p-23a3320b.js +4 -0
- package/dist/ionic/p-23e053d0.system.entry.js +4 -0
- package/dist/ionic/p-24cc69ab.entry.js +4 -0
- package/dist/ionic/p-24e9aa21.entry.js +4 -0
- package/dist/ionic/p-29ceda88.js +4 -0
- package/dist/ionic/p-2a4641fb.system.entry.js +4 -0
- package/dist/ionic/p-2bc784c2.system.entry.js +4 -0
- package/dist/ionic/p-2c8cb8c0.system.entry.js +4 -0
- package/dist/ionic/p-2fad37de.system.entry.js +4 -0
- package/dist/ionic/p-30aed000.system.entry.js +4 -0
- package/dist/ionic/{p-892e2567.system.entry.js → p-30b7a6a6.system.entry.js} +2 -2
- package/dist/ionic/p-322eb715.system.js +4 -0
- package/dist/ionic/{p-8d4d902b.js → p-34b11c24.js} +1 -1
- package/dist/ionic/p-35b46c05.entry.js +4 -0
- package/dist/ionic/p-365d2cfe.system.entry.js +4 -0
- package/dist/ionic/p-385c76dc.system.entry.js +4 -0
- package/dist/ionic/p-3ad285e3.system.js +4 -0
- package/dist/ionic/p-3b03dd5b.entry.js +4 -0
- package/dist/ionic/{p-15708968.js → p-3cc276f4.js} +1 -1
- package/dist/ionic/p-3d7001d7.js +4 -0
- package/dist/ionic/p-3e47e61e.entry.js +4 -0
- package/dist/ionic/p-3e8cfe35.system.entry.js +4 -0
- package/dist/ionic/p-3e9e667a.entry.js +4 -0
- package/dist/ionic/p-3ecd1809.entry.js +4 -0
- package/dist/ionic/p-3ed32307.system.entry.js +4 -0
- package/dist/ionic/p-41908d5c.entry.js +4 -0
- package/dist/ionic/{p-d9b6b588.entry.js → p-44d8d5c3.entry.js} +1 -1
- package/dist/ionic/p-45684f75.system.entry.js +4 -0
- package/dist/ionic/p-46e489c1.entry.js +4 -0
- package/dist/ionic/p-4c2d5b80.system.js +4 -0
- package/dist/ionic/p-4c55c5ce.entry.js +4 -0
- package/dist/ionic/p-4c6278ca.system.entry.js +4 -0
- package/dist/ionic/p-4e7a18b3.entry.js +4 -0
- package/dist/ionic/p-4f30e4c3.system.entry.js +4 -0
- package/dist/ionic/p-52698131.entry.js +4 -0
- package/dist/ionic/p-56dfd814.entry.js +4 -0
- package/dist/ionic/{p-ab427719.entry.js → p-57082094.entry.js} +1 -1
- package/dist/ionic/{p-ceceac26.js → p-57a4c6c3.js} +1 -1
- package/dist/ionic/{p-c8d61b6c.system.entry.js → p-57b76977.system.entry.js} +1 -1
- package/dist/ionic/p-5919403e.js +4 -0
- package/dist/ionic/p-5fed4c24.system.entry.js +4 -0
- package/dist/ionic/p-605c456e.system.entry.js +4 -0
- package/dist/ionic/p-6087c7ac.system.entry.js +4 -0
- package/dist/ionic/p-617a8c10.system.entry.js +4 -0
- package/dist/ionic/p-62ad354a.system.entry.js +4 -0
- package/dist/ionic/{p-0a8a78db.system.entry.js → p-644df0cc.system.entry.js} +1 -1
- package/dist/ionic/p-6718dfd8.system.entry.js +4 -0
- package/dist/ionic/p-6770c46d.system.entry.js +4 -0
- package/dist/ionic/p-6981ada8.entry.js +4 -0
- package/dist/ionic/p-69e691df.system.entry.js +4 -0
- package/dist/ionic/p-6a5b979b.system.js +4 -0
- package/dist/ionic/p-6d1854de.system.entry.js +4 -0
- package/dist/ionic/p-70a396e0.entry.js +4 -0
- package/dist/ionic/p-716cc857.entry.js +4 -0
- package/dist/ionic/p-71784639.entry.js +4 -0
- package/dist/ionic/p-72812e99.js +4 -0
- package/dist/ionic/{p-f2473724.js → p-72bc8a1c.js} +1 -1
- package/dist/ionic/p-75257a79.system.js +5 -0
- package/dist/ionic/p-77cdf8f0.system.entry.js +4 -0
- package/dist/ionic/{p-1e07fdb2.system.entry.js → p-7c6ba817.system.entry.js} +2 -2
- package/dist/ionic/p-7d6993fa.entry.js +4 -0
- package/dist/ionic/{p-1ea88de9.system.js → p-7fefe43e.system.js} +2 -2
- package/dist/ionic/{p-8fe3c4ef.entry.js → p-820be1bf.entry.js} +1 -1
- package/dist/ionic/p-84dd4f6c.system.entry.js +4 -0
- package/dist/ionic/{p-19f6ac6c.system.js → p-8635f5e6.system.js} +1 -1
- package/dist/ionic/p-89b61afc.js +4 -0
- package/dist/ionic/{p-12b55b00.system.entry.js → p-8cd83c08.system.entry.js} +1 -1
- package/dist/ionic/p-8fbf7c49.entry.js +4 -0
- package/dist/ionic/p-8fd110c6.entry.js +4 -0
- package/dist/ionic/p-9146695e.system.js +4 -0
- package/dist/ionic/p-92b3df98.system.js +4 -0
- package/dist/ionic/{p-973c7550.system.entry.js → p-98ced5a7.system.entry.js} +2 -2
- package/dist/ionic/p-9a76dbbb.entry.js +4 -0
- package/dist/ionic/p-a15ddedb.system.js +4 -0
- package/dist/ionic/p-a5456295.entry.js +4 -0
- package/dist/ionic/p-a68b1b19.entry.js +4 -0
- package/dist/ionic/p-a93873de.system.js +4 -0
- package/dist/ionic/{p-df504a37.system.js → p-ac1eb107.system.js} +1 -1
- package/dist/ionic/p-ae2c6708.system.entry.js +4 -0
- package/dist/ionic/p-ae3fdd38.entry.js +4 -0
- package/dist/ionic/{p-eb9803e9.system.js → p-af732189.system.js} +1 -1
- package/dist/ionic/p-afeebbc2.entry.js +4 -0
- package/dist/ionic/p-b0bd2f28.system.entry.js +4 -0
- package/dist/ionic/p-b0da0e7e.entry.js +4 -0
- package/dist/ionic/p-b51e4004.js +4 -0
- package/dist/ionic/p-b69db5bf.entry.js +4 -0
- package/dist/ionic/{p-9f84474d.entry.js → p-b8df09fa.entry.js} +1 -1
- package/dist/ionic/p-bb01995b.entry.js +4 -0
- package/dist/ionic/p-bb4431d3.entry.js +4 -0
- package/dist/ionic/{p-31e02742.system.js → p-c11232d6.system.js} +1 -1
- package/dist/ionic/p-c1d0861e.entry.js +4 -0
- package/dist/ionic/p-c78731fc.system.js +4 -0
- package/dist/ionic/p-c7e16491.js +4 -0
- package/dist/ionic/p-c7e3ef1f.js +4 -0
- package/dist/ionic/p-c8985963.system.js +4 -0
- package/dist/ionic/p-c957dcbd.system.entry.js +4 -0
- package/dist/ionic/p-cb4da696.js +5 -0
- package/dist/ionic/p-cc1dabd2.system.entry.js +4 -0
- package/dist/ionic/p-cd1250d7.js +4 -0
- package/dist/ionic/p-cd94b05a.system.entry.js +4 -0
- package/dist/ionic/p-d2a65df9.js +4 -0
- package/dist/ionic/p-d6788bde.system.entry.js +4 -0
- package/dist/ionic/p-d83f3852.system.entry.js +4 -0
- package/dist/ionic/p-de5f6929.system.entry.js +4 -0
- package/dist/ionic/{p-89ca4c4b.system.js → p-df92bab7.system.js} +1 -1
- package/dist/ionic/p-dff73ffc.system.js +4 -0
- package/dist/ionic/p-e399a113.entry.js +4 -0
- package/dist/ionic/p-e4cd4316.system.entry.js +4 -0
- package/dist/ionic/p-e557901b.entry.js +4 -0
- package/dist/ionic/p-e62f29e0.system.entry.js +4 -0
- package/dist/ionic/p-e7522003.js +4 -0
- package/dist/ionic/p-e86fef55.system.js +4 -0
- package/dist/ionic/p-eab67c46.system.entry.js +4 -0
- package/dist/ionic/p-ed454419.entry.js +4 -0
- package/dist/ionic/p-efdba78a.system.entry.js +4 -0
- package/dist/ionic/p-f7a041dc.js +4 -0
- package/dist/ionic/p-f85988bd.entry.js +4 -0
- package/dist/ionic/p-f9398178.entry.js +4 -0
- package/dist/ionic/p-f977c8c5.entry.js +4 -0
- package/dist/ionic/p-fe1345b7.js +4 -0
- package/dist/ionic/{p-97248203.system.entry.js → p-fea6e789.system.entry.js} +1 -1
- package/dist/ionic/p-ff584ff5.entry.js +4 -0
- package/dist/ionic/p-ff93a0f3.entry.js +4 -0
- package/dist/types/components/accordion/accordion.d.ts +2 -1
- package/dist/types/components/accordion-group/accordion-group.d.ts +2 -1
- package/dist/types/components/action-sheet/action-sheet-interface.d.ts +3 -7
- package/dist/types/components/action-sheet/action-sheet.d.ts +3 -2
- package/dist/types/components/alert/alert-interface.d.ts +3 -7
- package/dist/types/components/alert/alert.d.ts +3 -2
- package/dist/types/components/app/app.d.ts +4 -0
- package/dist/types/components/avatar/avatar.d.ts +4 -0
- package/dist/types/components/back-button/back-button.d.ts +2 -1
- package/dist/types/components/backdrop/backdrop.d.ts +4 -0
- package/dist/types/components/badge/badge.d.ts +2 -1
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +2 -1
- package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
- package/dist/types/components/button/button.d.ts +7 -1
- package/dist/types/components/buttons/buttons.d.ts +5 -1
- package/dist/types/components/card/card.d.ts +2 -1
- package/dist/types/components/card-content/card-content.d.ts +2 -1
- package/dist/types/components/card-header/card-header.d.ts +3 -2
- package/dist/types/components/card-subtitle/card-subtitle.d.ts +2 -1
- package/dist/types/components/card-title/card-title.d.ts +2 -1
- package/dist/types/components/checkbox/checkbox.d.ts +2 -1
- package/dist/types/components/chip/chip.d.ts +2 -1
- package/dist/types/components/col/col.d.ts +4 -0
- package/dist/types/components/content/content.d.ts +3 -0
- package/dist/types/components/datetime/datetime-interface.d.ts +10 -0
- package/dist/types/components/datetime/datetime.d.ts +12 -2
- package/dist/types/components/datetime/utils/data.d.ts +3 -3
- package/dist/types/components/datetime/utils/format.d.ts +7 -13
- package/dist/types/components/datetime/utils/validate.d.ts +8 -0
- package/dist/types/components/datetime-button/datetime-button.d.ts +2 -1
- package/dist/types/components/fab/fab.d.ts +4 -0
- package/dist/types/components/fab-button/fab-button.d.ts +3 -2
- package/dist/types/components/fab-list/fab-list.d.ts +4 -0
- package/dist/types/components/footer/footer.d.ts +4 -3
- package/dist/types/components/grid/grid.d.ts +4 -0
- package/dist/types/components/header/header.d.ts +4 -3
- package/dist/types/components/img/img.d.ts +3 -0
- package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +4 -0
- package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +4 -0
- package/dist/types/components/input/input.d.ts +4 -8
- package/dist/types/components/item/item.d.ts +4 -35
- package/dist/types/components/item-divider/item-divider.d.ts +2 -1
- package/dist/types/components/item-group/item-group.d.ts +4 -0
- package/dist/types/components/item-option/item-option.d.ts +2 -1
- package/dist/types/components/item-options/item-options.d.ts +4 -0
- package/dist/types/components/item-sliding/item-sliding.d.ts +4 -0
- package/dist/types/components/label/label.d.ts +2 -1
- package/dist/types/components/list/list.d.ts +2 -1
- package/dist/types/components/list-header/list-header.d.ts +2 -1
- package/dist/types/components/loading/loading-interface.d.ts +2 -7
- package/dist/types/components/loading/loading.d.ts +3 -2
- package/dist/types/components/menu/menu-interface.d.ts +1 -0
- package/dist/types/components/menu/menu.d.ts +5 -4
- package/dist/types/components/menu-button/menu-button.d.ts +2 -1
- package/dist/types/components/menu-toggle/menu-toggle.d.ts +3 -0
- package/dist/types/components/modal/modal-interface.d.ts +3 -7
- package/dist/types/components/modal/modal.d.ts +2 -1
- package/dist/types/components/nav/nav-interface.d.ts +9 -1
- package/dist/types/components/nav/nav.d.ts +5 -1
- package/dist/types/components/nav-link/nav-link.d.ts +4 -0
- package/dist/types/components/note/note.d.ts +2 -1
- package/dist/types/components/picker/picker.d.ts +2 -1
- package/dist/types/components/picker-column/picker-column.d.ts +2 -1
- package/dist/types/components/picker-column-option/picker-column-option.d.ts +4 -0
- package/dist/types/components/picker-legacy/picker.d.ts +2 -1
- package/dist/types/components/popover/popover-interface.d.ts +3 -7
- package/dist/types/components/popover/popover.d.ts +6 -5
- package/dist/types/components/progress-bar/progress-bar.d.ts +2 -1
- package/dist/types/components/radio/radio.d.ts +2 -1
- package/dist/types/components/radio-group/radio-group.d.ts +4 -0
- package/dist/types/components/range/range.d.ts +31 -1
- package/dist/types/components/refresher/refresher.d.ts +2 -1
- package/dist/types/components/refresher-content/refresher-content.d.ts +4 -0
- package/dist/types/components/reorder/reorder.d.ts +3 -0
- package/dist/types/components/reorder-group/reorder-group.d.ts +4 -0
- package/dist/types/components/ripple-effect/ripple-effect.d.ts +4 -0
- package/dist/types/components/route/route.d.ts +4 -0
- package/dist/types/components/router/router.d.ts +4 -0
- package/dist/types/components/router-link/router-link.d.ts +4 -0
- package/dist/types/components/router-outlet/router-outlet.d.ts +4 -1
- package/dist/types/components/row/row.d.ts +4 -0
- package/dist/types/components/searchbar/searchbar.d.ts +46 -7
- package/dist/types/components/segment/segment.d.ts +2 -1
- package/dist/types/components/segment-button/segment-button.d.ts +2 -1
- package/dist/types/components/select/select.d.ts +6 -5
- package/dist/types/components/select-option/select-option.d.ts +4 -0
- package/dist/types/components/select-popover/select-popover.d.ts +3 -0
- package/dist/types/components/skeleton-text/skeleton-text.d.ts +4 -0
- package/dist/types/components/spinner/spinner.d.ts +4 -0
- package/dist/types/components/split-pane/split-pane.d.ts +4 -0
- package/dist/types/components/tab/tab.d.ts +4 -0
- package/dist/types/components/tab-bar/tab-bar.d.ts +3 -2
- package/dist/types/components/tab-button/tab-button.d.ts +2 -1
- package/dist/types/components/tabs/tabs.d.ts +3 -0
- package/dist/types/components/text/text.d.ts +2 -1
- package/dist/types/components/textarea/textarea.d.ts +4 -8
- package/dist/types/components/thumbnail/thumbnail.d.ts +4 -0
- package/dist/types/components/title/title.d.ts +4 -0
- package/dist/types/components/toast/animations/utils.d.ts +2 -2
- package/dist/types/components/toast/toast-interface.d.ts +3 -7
- package/dist/types/components/toast/toast.d.ts +3 -2
- package/dist/types/components/toggle/toggle.d.ts +3 -2
- package/dist/types/components/toolbar/toolbar.d.ts +4 -3
- package/dist/types/components.d.ts +1220 -206
- package/dist/types/global/ionic-global.d.ts +25 -2
- package/dist/types/interface.d.ts +3 -0
- package/dist/types/utils/animation/animation-utils.d.ts +0 -12
- package/dist/types/utils/config.d.ts +17 -2
- package/dist/types/utils/focus-trap.d.ts +35 -0
- package/dist/types/utils/forms/index.d.ts +0 -1
- package/dist/types/utils/hardware-back-button.d.ts +1 -1
- package/dist/types/utils/helpers.d.ts +0 -19
- package/dist/types/utils/overlays-interface.d.ts +31 -1
- package/dist/types/utils/overlays.d.ts +0 -6
- package/dist/types/utils/test/playwright/generator.d.ts +9 -2
- package/hydrate/index.js +1723 -1180
- package/package.json +7 -2
- package/components/index9.js +0 -196
- package/components/note.js +0 -48
- package/css/themes/dark.always.css.map +0 -1
- package/css/themes/dark.class.css.map +0 -1
- package/css/themes/dark.system.css.map +0 -1
- package/css/themes/high-contrast-dark.always.css.map +0 -1
- package/css/themes/high-contrast-dark.class.css.map +0 -1
- package/css/themes/high-contrast-dark.system.css.map +0 -1
- package/css/themes/high-contrast.always.css.map +0 -1
- package/css/themes/high-contrast.class.css.map +0 -1
- package/css/themes/high-contrast.system.css.map +0 -1
- package/dist/cjs/index-5915f9b3.js +0 -38
- package/dist/cjs/ionic-global-59a10130.js +0 -230
- package/dist/collection/components/item/test/legacy/disabled/item.e2e.js +0 -14
- package/dist/collection/components/modal/test/a11y/modal.spec.js +0 -22
- package/dist/collection/utils/forms/form-controller.js +0 -61
- package/dist/collection/utils/test/aria.spec.js +0 -80
- package/dist/esm/index-9b0d46f4.js +0 -34
- package/dist/esm/ionic-global-ad9a1810.js +0 -224
- package/dist/esm-es5/animation-a4acf150.js +0 -4
- package/dist/esm-es5/app-globals-5cf6195b.js +0 -4
- package/dist/esm-es5/data-691286f1.js +0 -4
- package/dist/esm-es5/haptic-554688a5.js +0 -4
- package/dist/esm-es5/hardware-back-button-b410a047.js +0 -4
- package/dist/esm-es5/helpers-ae74b3c9.js +0 -4
- package/dist/esm-es5/index-1f563746.js +0 -4
- package/dist/esm-es5/index-4c30cddd.js +0 -5
- package/dist/esm-es5/index-66871a1d.js +0 -4
- package/dist/esm-es5/index-8758824c.js +0 -4
- package/dist/esm-es5/index-9b0d46f4.js +0 -4
- package/dist/esm-es5/input-shims-56c1f603.js +0 -4
- package/dist/esm-es5/input.utils-482fc893.js +0 -4
- package/dist/esm-es5/ionic-global-ad9a1810.js +0 -4
- package/dist/esm-es5/ios.transition-189b73b7.js +0 -4
- package/dist/esm-es5/overlays-c69d2a07.js +0 -4
- package/dist/esm-es5/status-tap-1d638ee6.js +0 -4
- package/dist/ionic/p-00a762c9.entry.js +0 -4
- package/dist/ionic/p-0612cdcc.system.entry.js +0 -4
- package/dist/ionic/p-069388dd.system.js +0 -4
- package/dist/ionic/p-06fee233.js +0 -4
- package/dist/ionic/p-0b34d3a7.system.js +0 -4
- package/dist/ionic/p-0dca0eee.system.entry.js +0 -4
- package/dist/ionic/p-0dfbbdbe.entry.js +0 -4
- package/dist/ionic/p-0f25a7bb.system.js +0 -4
- package/dist/ionic/p-11bb459e.system.entry.js +0 -4
- package/dist/ionic/p-13e8ad2e.entry.js +0 -4
- package/dist/ionic/p-16e06393.system.js +0 -4
- package/dist/ionic/p-17082c91.system.js +0 -4
- package/dist/ionic/p-174856b4.system.js +0 -4
- package/dist/ionic/p-174b0d50.system.entry.js +0 -4
- package/dist/ionic/p-1a4db355.system.entry.js +0 -4
- package/dist/ionic/p-1d545773.entry.js +0 -4
- package/dist/ionic/p-1deadb7f.system.js +0 -4
- package/dist/ionic/p-1df25966.entry.js +0 -4
- package/dist/ionic/p-1f79e54a.entry.js +0 -4
- package/dist/ionic/p-2b3544ad.entry.js +0 -4
- package/dist/ionic/p-2c768965.entry.js +0 -4
- package/dist/ionic/p-2dcf2ec2.system.entry.js +0 -4
- package/dist/ionic/p-3209217f.entry.js +0 -4
- package/dist/ionic/p-32fb7d95.entry.js +0 -4
- package/dist/ionic/p-34d0f143.system.entry.js +0 -4
- package/dist/ionic/p-3807cd45.system.entry.js +0 -4
- package/dist/ionic/p-385f66bc.entry.js +0 -4
- package/dist/ionic/p-3c47c5c8.system.entry.js +0 -4
- package/dist/ionic/p-3c51cf97.system.entry.js +0 -4
- package/dist/ionic/p-3d77b300.system.entry.js +0 -4
- package/dist/ionic/p-415ccddd.entry.js +0 -4
- package/dist/ionic/p-42f189f4.js +0 -4
- package/dist/ionic/p-446f3909.system.entry.js +0 -4
- package/dist/ionic/p-4a8f173c.system.js +0 -4
- package/dist/ionic/p-4aba0454.system.entry.js +0 -4
- package/dist/ionic/p-4bbc949f.system.entry.js +0 -4
- package/dist/ionic/p-4dfe0487.system.entry.js +0 -4
- package/dist/ionic/p-4e7abe76.js +0 -4
- package/dist/ionic/p-5133c4a3.system.entry.js +0 -4
- package/dist/ionic/p-5289aade.js +0 -4
- package/dist/ionic/p-5797981d.system.entry.js +0 -4
- package/dist/ionic/p-5d530ae5.entry.js +0 -4
- package/dist/ionic/p-5d64e680.entry.js +0 -4
- package/dist/ionic/p-5d7e32ce.js +0 -4
- package/dist/ionic/p-5dbf7222.entry.js +0 -4
- package/dist/ionic/p-5e70f800.system.entry.js +0 -4
- package/dist/ionic/p-5eabaa80.js +0 -4
- package/dist/ionic/p-5f9fbad0.entry.js +0 -4
- package/dist/ionic/p-60a92a48.system.entry.js +0 -4
- package/dist/ionic/p-640fac4a.system.entry.js +0 -4
- package/dist/ionic/p-6525a8cd.system.js +0 -4
- package/dist/ionic/p-66e6860f.system.js +0 -4
- package/dist/ionic/p-67c4deed.system.entry.js +0 -4
- package/dist/ionic/p-6ad90d41.entry.js +0 -4
- package/dist/ionic/p-6aeb0272.entry.js +0 -4
- package/dist/ionic/p-6d659d62.entry.js +0 -4
- package/dist/ionic/p-6dbea874.system.entry.js +0 -4
- package/dist/ionic/p-6e14d3ca.system.entry.js +0 -4
- package/dist/ionic/p-717c4b72.entry.js +0 -4
- package/dist/ionic/p-7292add8.entry.js +0 -4
- package/dist/ionic/p-72fa96bf.system.js +0 -5
- package/dist/ionic/p-75861cd3.entry.js +0 -4
- package/dist/ionic/p-760dbd5e.js +0 -4
- package/dist/ionic/p-7e185a31.entry.js +0 -4
- package/dist/ionic/p-80704be1.entry.js +0 -4
- package/dist/ionic/p-816476b0.system.js +0 -4
- package/dist/ionic/p-842777af.js +0 -4
- package/dist/ionic/p-8ab308e9.js +0 -4
- package/dist/ionic/p-8b8b900d.entry.js +0 -4
- package/dist/ionic/p-916a4e14.entry.js +0 -4
- package/dist/ionic/p-93e79b55.js +0 -4
- package/dist/ionic/p-94f85e19.system.entry.js +0 -4
- package/dist/ionic/p-96107183.js +0 -4
- package/dist/ionic/p-986a47ee.system.entry.js +0 -4
- package/dist/ionic/p-993da5df.entry.js +0 -4
- package/dist/ionic/p-9c93fdcd.js +0 -4
- package/dist/ionic/p-9d6f351e.js +0 -4
- package/dist/ionic/p-9d795c4b.entry.js +0 -4
- package/dist/ionic/p-9e3b3f15.system.js +0 -4
- package/dist/ionic/p-9ecc1e42.entry.js +0 -4
- package/dist/ionic/p-a6cc38d4.js +0 -4
- package/dist/ionic/p-aaaefef6.entry.js +0 -4
- package/dist/ionic/p-acf70e64.system.entry.js +0 -4
- package/dist/ionic/p-b2d58604.system.entry.js +0 -4
- package/dist/ionic/p-b434ded7.system.entry.js +0 -4
- package/dist/ionic/p-bca27ea7.entry.js +0 -4
- package/dist/ionic/p-c68e75ea.system.js +0 -4
- package/dist/ionic/p-c6dbc089.system.entry.js +0 -4
- package/dist/ionic/p-c880c809.js +0 -4
- package/dist/ionic/p-c995da88.system.js +0 -4
- package/dist/ionic/p-c9e21694.system.entry.js +0 -4
- package/dist/ionic/p-cb944b1a.system.js +0 -4
- package/dist/ionic/p-cd0ffc8c.entry.js +0 -4
- package/dist/ionic/p-cefbb7b7.entry.js +0 -4
- package/dist/ionic/p-d13689a6.entry.js +0 -4
- package/dist/ionic/p-d47a1a78.system.entry.js +0 -4
- package/dist/ionic/p-d7c78a97.system.entry.js +0 -4
- package/dist/ionic/p-d7dc29c5.entry.js +0 -4
- package/dist/ionic/p-d84c9fc4.entry.js +0 -4
- package/dist/ionic/p-d8643420.system.entry.js +0 -4
- package/dist/ionic/p-dd7c79ce.system.entry.js +0 -4
- package/dist/ionic/p-de0a7606.system.entry.js +0 -4
- package/dist/ionic/p-df6a1571.entry.js +0 -4
- package/dist/ionic/p-e1819aee.js +0 -4
- package/dist/ionic/p-e311af42.entry.js +0 -4
- package/dist/ionic/p-e46adaf1.system.entry.js +0 -4
- package/dist/ionic/p-e4eeb3af.entry.js +0 -4
- package/dist/ionic/p-e755046f.system.entry.js +0 -4
- package/dist/ionic/p-ec77b7ad.system.entry.js +0 -4
- package/dist/ionic/p-ed7a529f.js +0 -5
- package/dist/ionic/p-ef636601.entry.js +0 -4
- package/dist/ionic/p-ef9736b9.entry.js +0 -4
- package/dist/ionic/p-f0a7e80b.js +0 -4
- package/dist/ionic/p-f7c3d736.system.entry.js +0 -4
- package/dist/ionic/p-f7ccf8d9.entry.js +0 -4
- package/dist/ionic/p-f7d802e1.entry.js +0 -4
- package/dist/ionic/p-fd783a38.system.entry.js +0 -4
- package/dist/ionic/p-ff4b7e40.system.js +0 -4
- package/dist/types/utils/forms/form-controller.d.ts +0 -15
- package/css/{themes → palettes}/dark.always.css +0 -0
- package/css/{themes → palettes}/dark.css +0 -0
- package/css/{themes → palettes}/dark.css.map +0 -0
- package/css/{themes → palettes}/dark.system.css +0 -0
- package/css/{themes → palettes}/high-contrast-dark.always.css +1 -1
- package/css/{themes → palettes}/high-contrast-dark.css +0 -0
- package/css/{themes → palettes}/high-contrast-dark.css.map +0 -0
- package/css/{themes → palettes}/high-contrast-dark.system.css +1 -1
- package/css/{themes → palettes}/high-contrast.always.css +25 -25
- package/css/{themes → palettes}/high-contrast.css +0 -0
- package/css/{themes → palettes}/high-contrast.css.map +0 -0
- package/css/{themes → palettes}/high-contrast.system.css +25 -25
|
@@ -46,12 +46,6 @@ export var NotificationType;
|
|
|
46
46
|
})(NotificationType || (NotificationType = {}));
|
|
47
47
|
const HapticEngine = {
|
|
48
48
|
getEngine() {
|
|
49
|
-
const tapticEngine = window.TapticEngine;
|
|
50
|
-
if (tapticEngine) {
|
|
51
|
-
// Cordova
|
|
52
|
-
// TODO FW-4707 - Remove this in Ionic 8
|
|
53
|
-
return tapticEngine;
|
|
54
|
-
}
|
|
55
49
|
const capacitor = getCapacitor();
|
|
56
50
|
if (capacitor === null || capacitor === void 0 ? void 0 : capacitor.isPluginAvailable('Haptics')) {
|
|
57
51
|
// Capacitor
|
|
@@ -80,85 +74,43 @@ const HapticEngine = {
|
|
|
80
74
|
}
|
|
81
75
|
return true;
|
|
82
76
|
},
|
|
83
|
-
isCordova() {
|
|
84
|
-
return window.TapticEngine !== undefined;
|
|
85
|
-
},
|
|
86
|
-
isCapacitor() {
|
|
87
|
-
return getCapacitor() !== undefined;
|
|
88
|
-
},
|
|
89
77
|
impact(options) {
|
|
90
78
|
const engine = this.getEngine();
|
|
91
79
|
if (!engine) {
|
|
92
80
|
return;
|
|
93
81
|
}
|
|
94
|
-
|
|
95
|
-
* To provide backwards compatibility with Cordova apps,
|
|
96
|
-
* we convert the style to lowercase.
|
|
97
|
-
*
|
|
98
|
-
* TODO: FW-4707 - Remove this in Ionic 8
|
|
99
|
-
*/
|
|
100
|
-
const style = this.isCapacitor() ? options.style : options.style.toLowerCase();
|
|
101
|
-
engine.impact({ style });
|
|
82
|
+
engine.impact({ style: options.style });
|
|
102
83
|
},
|
|
103
84
|
notification(options) {
|
|
104
85
|
const engine = this.getEngine();
|
|
105
86
|
if (!engine) {
|
|
106
87
|
return;
|
|
107
88
|
}
|
|
108
|
-
|
|
109
|
-
* To provide backwards compatibility with Cordova apps,
|
|
110
|
-
* we convert the style to lowercase.
|
|
111
|
-
*
|
|
112
|
-
* TODO: FW-4707 - Remove this in Ionic 8
|
|
113
|
-
*/
|
|
114
|
-
const type = this.isCapacitor() ? options.type : options.type.toLowerCase();
|
|
115
|
-
engine.notification({ type });
|
|
89
|
+
engine.notification({ type: options.type });
|
|
116
90
|
},
|
|
117
91
|
selection() {
|
|
118
|
-
|
|
119
|
-
* To provide backwards compatibility with Cordova apps,
|
|
120
|
-
* we convert the style to lowercase.
|
|
121
|
-
*
|
|
122
|
-
* TODO: FW-4707 - Remove this in Ionic 8
|
|
123
|
-
*/
|
|
124
|
-
const style = this.isCapacitor() ? ImpactStyle.Light : 'light';
|
|
125
|
-
this.impact({ style });
|
|
92
|
+
this.impact({ style: ImpactStyle.Light });
|
|
126
93
|
},
|
|
127
94
|
selectionStart() {
|
|
128
95
|
const engine = this.getEngine();
|
|
129
96
|
if (!engine) {
|
|
130
97
|
return;
|
|
131
98
|
}
|
|
132
|
-
|
|
133
|
-
engine.selectionStart();
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
engine.gestureSelectionStart();
|
|
137
|
-
}
|
|
99
|
+
engine.selectionStart();
|
|
138
100
|
},
|
|
139
101
|
selectionChanged() {
|
|
140
102
|
const engine = this.getEngine();
|
|
141
103
|
if (!engine) {
|
|
142
104
|
return;
|
|
143
105
|
}
|
|
144
|
-
|
|
145
|
-
engine.selectionChanged();
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
engine.gestureSelectionChanged();
|
|
149
|
-
}
|
|
106
|
+
engine.selectionChanged();
|
|
150
107
|
},
|
|
151
108
|
selectionEnd() {
|
|
152
109
|
const engine = this.getEngine();
|
|
153
110
|
if (!engine) {
|
|
154
111
|
return;
|
|
155
112
|
}
|
|
156
|
-
|
|
157
|
-
engine.selectionEnd();
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
engine.gestureSelectionEnd();
|
|
161
|
-
}
|
|
113
|
+
engine.selectionEnd();
|
|
162
114
|
},
|
|
163
115
|
};
|
|
164
116
|
/**
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { doc } from "./browser/index";
|
|
5
|
-
import {
|
|
5
|
+
import { focusFirstDescendant, focusLastDescendant, focusableQueryString } from "./focus-trap";
|
|
6
|
+
import { shouldUseCloseWatcher } from "./hardware-back-button";
|
|
6
7
|
import { config } from "../global/config";
|
|
7
8
|
import { getIonMode } from "../global/ionic-global";
|
|
8
9
|
import { CoreDelegate } from "./framework-delegate";
|
|
@@ -90,39 +91,7 @@ export const createOverlay = (tagName, opts) => {
|
|
|
90
91
|
}
|
|
91
92
|
return Promise.resolve();
|
|
92
93
|
};
|
|
93
|
-
/**
|
|
94
|
-
* This query string selects elements that
|
|
95
|
-
* are eligible to receive focus. We select
|
|
96
|
-
* interactive elements that meet the following
|
|
97
|
-
* criteria:
|
|
98
|
-
* 1. Element does not have a negative tabindex
|
|
99
|
-
* 2. Element does not have `hidden`
|
|
100
|
-
* 3. Element does not have `disabled` for non-Ionic components.
|
|
101
|
-
* 4. Element does not have `disabled` or `disabled="true"` for Ionic components.
|
|
102
|
-
* Note: We need this distinction because `disabled="false"` is
|
|
103
|
-
* valid usage for the disabled property on ion-button.
|
|
104
|
-
*/
|
|
105
|
-
const focusableQueryString = '[tabindex]:not([tabindex^="-"]):not([hidden]):not([disabled]), input:not([type=hidden]):not([tabindex^="-"]):not([hidden]):not([disabled]), textarea:not([tabindex^="-"]):not([hidden]):not([disabled]), button:not([tabindex^="-"]):not([hidden]):not([disabled]), select:not([tabindex^="-"]):not([hidden]):not([disabled]), .ion-focusable:not([tabindex^="-"]):not([hidden]):not([disabled]), .ion-focusable[disabled="false"]:not([tabindex^="-"]):not([hidden])';
|
|
106
94
|
const isOverlayHidden = (overlay) => overlay.classList.contains('overlay-hidden');
|
|
107
|
-
/**
|
|
108
|
-
* Focuses the first descendant in an overlay
|
|
109
|
-
* that can receive focus. If none exists,
|
|
110
|
-
* the entire overlay will be focused.
|
|
111
|
-
*/
|
|
112
|
-
export const focusFirstDescendant = (ref, overlay) => {
|
|
113
|
-
const firstInput = ref.querySelector(focusableQueryString);
|
|
114
|
-
focusElementInOverlay(firstInput, overlay);
|
|
115
|
-
};
|
|
116
|
-
/**
|
|
117
|
-
* Focuses the last descendant in an overlay
|
|
118
|
-
* that can receive focus. If none exists,
|
|
119
|
-
* the entire overlay will be focused.
|
|
120
|
-
*/
|
|
121
|
-
const focusLastDescendant = (ref, overlay) => {
|
|
122
|
-
const inputs = Array.from(ref.querySelectorAll(focusableQueryString));
|
|
123
|
-
const lastInput = inputs.length > 0 ? inputs[inputs.length - 1] : null;
|
|
124
|
-
focusElementInOverlay(lastInput, overlay);
|
|
125
|
-
};
|
|
126
95
|
/**
|
|
127
96
|
* Focuses a particular element in an overlay. If the element
|
|
128
97
|
* doesn't have anything focusable associated with it then
|
|
@@ -313,7 +282,7 @@ const trapKeyboardFocus = (ev, doc) => {
|
|
|
313
282
|
*/
|
|
314
283
|
const lastFocus = lastOverlay.lastFocus;
|
|
315
284
|
// Focus the first element in the overlay wrapper
|
|
316
|
-
focusFirstDescendant(lastOverlay
|
|
285
|
+
focusFirstDescendant(lastOverlay);
|
|
317
286
|
/**
|
|
318
287
|
* If the cached last focused element is the
|
|
319
288
|
* same as the active element, then we need
|
|
@@ -324,7 +293,7 @@ const trapKeyboardFocus = (ev, doc) => {
|
|
|
324
293
|
* last focus to equal the active element.
|
|
325
294
|
*/
|
|
326
295
|
if (lastFocus === doc.activeElement) {
|
|
327
|
-
focusLastDescendant(lastOverlay
|
|
296
|
+
focusLastDescendant(lastOverlay);
|
|
328
297
|
}
|
|
329
298
|
lastOverlay.lastFocus = doc.activeElement;
|
|
330
299
|
}
|
|
@@ -369,7 +338,7 @@ const connectListeners = (doc) => {
|
|
|
369
338
|
* this behavior will be handled via the ionBackButton
|
|
370
339
|
* event.
|
|
371
340
|
*/
|
|
372
|
-
if (!
|
|
341
|
+
if (!shouldUseCloseWatcher()) {
|
|
373
342
|
doc.addEventListener('keydown', (ev) => {
|
|
374
343
|
if (ev.key === 'Escape') {
|
|
375
344
|
const lastOverlay = getPresentedOverlay(doc);
|
|
@@ -460,15 +429,7 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
460
429
|
}
|
|
461
430
|
setRootAriaHidden(true);
|
|
462
431
|
document.body.classList.add(BACKDROP_NO_SCROLL);
|
|
463
|
-
|
|
464
|
-
* Hide all other overlays from screen readers so only this one
|
|
465
|
-
* can be read. Note that presenting an overlay always makes
|
|
466
|
-
* it the topmost one.
|
|
467
|
-
*/
|
|
468
|
-
if (doc !== undefined) {
|
|
469
|
-
const presentedOverlays = getPresentedOverlays(doc);
|
|
470
|
-
presentedOverlays.forEach((o) => o.setAttribute('aria-hidden', 'true'));
|
|
471
|
-
}
|
|
432
|
+
hideOverlaysFromScreenReaders(overlay.el);
|
|
472
433
|
overlay.presented = true;
|
|
473
434
|
overlay.willPresent.emit();
|
|
474
435
|
(_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
|
|
@@ -561,7 +522,7 @@ const restoreElementFocus = async (overlayEl) => {
|
|
|
561
522
|
}
|
|
562
523
|
};
|
|
563
524
|
export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnimation, opts) => {
|
|
564
|
-
var _a, _b
|
|
525
|
+
var _a, _b;
|
|
565
526
|
if (!overlay.presented) {
|
|
566
527
|
return false;
|
|
567
528
|
}
|
|
@@ -614,13 +575,7 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
|
|
|
614
575
|
console.error(err);
|
|
615
576
|
}
|
|
616
577
|
overlay.el.remove();
|
|
617
|
-
|
|
618
|
-
* If there are other overlays presented, unhide the new
|
|
619
|
-
* topmost one from screen readers.
|
|
620
|
-
*/
|
|
621
|
-
if (doc !== undefined) {
|
|
622
|
-
(_c = getPresentedOverlay(doc)) === null || _c === void 0 ? void 0 : _c.removeAttribute('aria-hidden');
|
|
623
|
-
}
|
|
578
|
+
revealOverlaysToScreenReaders();
|
|
624
579
|
return true;
|
|
625
580
|
};
|
|
626
581
|
const getAppRoot = (doc) => {
|
|
@@ -816,3 +771,59 @@ export const createTriggerController = () => {
|
|
|
816
771
|
removeClickListener,
|
|
817
772
|
};
|
|
818
773
|
};
|
|
774
|
+
/**
|
|
775
|
+
* Ensure that underlying overlays have aria-hidden if necessary so that screen readers
|
|
776
|
+
* cannot move focus to these elements. Note that we cannot rely on focus/focusin/focusout
|
|
777
|
+
* events here because those events do not fire when the screen readers moves to a non-focusable
|
|
778
|
+
* element such as text.
|
|
779
|
+
* Without this logic screen readers would be able to move focus outside of the top focus-trapped overlay.
|
|
780
|
+
*
|
|
781
|
+
* @param newTopMostOverlay - The overlay that is being presented. Since the overlay has not been
|
|
782
|
+
* fully presented yet at the time this function is called it will not be included in the getPresentedOverlays result.
|
|
783
|
+
*/
|
|
784
|
+
const hideOverlaysFromScreenReaders = (newTopMostOverlay) => {
|
|
785
|
+
var _a;
|
|
786
|
+
if (doc === undefined)
|
|
787
|
+
return;
|
|
788
|
+
const overlays = getPresentedOverlays(doc);
|
|
789
|
+
for (let i = overlays.length - 1; i >= 0; i--) {
|
|
790
|
+
const presentedOverlay = overlays[i];
|
|
791
|
+
const nextPresentedOverlay = (_a = overlays[i + 1]) !== null && _a !== void 0 ? _a : newTopMostOverlay;
|
|
792
|
+
/**
|
|
793
|
+
* If next overlay has aria-hidden then all remaining overlays will have it too.
|
|
794
|
+
* Or, if the next overlay is a Toast that does not have aria-hidden then current overlay
|
|
795
|
+
* should not have aria-hidden either so focus can remain in the current overlay.
|
|
796
|
+
*/
|
|
797
|
+
if (nextPresentedOverlay.hasAttribute('aria-hidden') || nextPresentedOverlay.tagName !== 'ION-TOAST') {
|
|
798
|
+
presentedOverlay.setAttribute('aria-hidden', 'true');
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
};
|
|
802
|
+
/**
|
|
803
|
+
* When dismissing an overlay we need to reveal the new top-most overlay to screen readers.
|
|
804
|
+
* If the top-most overlay is a Toast we potentially need to reveal more overlays since
|
|
805
|
+
* focus is never automatically moved to the Toast.
|
|
806
|
+
*/
|
|
807
|
+
const revealOverlaysToScreenReaders = () => {
|
|
808
|
+
if (doc === undefined)
|
|
809
|
+
return;
|
|
810
|
+
const overlays = getPresentedOverlays(doc);
|
|
811
|
+
for (let i = overlays.length - 1; i >= 0; i--) {
|
|
812
|
+
const currentOverlay = overlays[i];
|
|
813
|
+
/**
|
|
814
|
+
* If the current we are looking at is a Toast then we can remove aria-hidden.
|
|
815
|
+
* However, we potentially need to keep looking at the overlay stack because there
|
|
816
|
+
* could be more Toasts underneath. Additionally, we need to unhide the closest non-Toast
|
|
817
|
+
* overlay too so focus can move there since focus is never automatically moved to the Toast.
|
|
818
|
+
*/
|
|
819
|
+
currentOverlay.removeAttribute('aria-hidden');
|
|
820
|
+
/**
|
|
821
|
+
* If we found a non-Toast element then we can just remove aria-hidden and stop searching entirely
|
|
822
|
+
* since this overlay should always receive focus. As a result, all underlying overlays should still
|
|
823
|
+
* be hidden from screen readers.
|
|
824
|
+
*/
|
|
825
|
+
if (currentOverlay.tagName !== 'ION-TOAST') {
|
|
826
|
+
break;
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
};
|
|
@@ -45,6 +45,18 @@ export const createSlotMutationController = (el, slotName, mutationCallback) =>
|
|
|
45
45
|
});
|
|
46
46
|
hostMutationObserver.observe(el, {
|
|
47
47
|
childList: true,
|
|
48
|
+
/**
|
|
49
|
+
* This fixes an issue with the `ion-input` and
|
|
50
|
+
* `ion-textarea` not re-rendering in some cases
|
|
51
|
+
* when using the label slot functionality.
|
|
52
|
+
*
|
|
53
|
+
* HTML element patches in Stencil that are enabled
|
|
54
|
+
* by the `experimentalSlotFixes` flag in Stencil v4
|
|
55
|
+
* result in DOM manipulations that won't trigger
|
|
56
|
+
* the current mutation observer configuration and
|
|
57
|
+
* callback.
|
|
58
|
+
*/
|
|
59
|
+
subtree: true,
|
|
48
60
|
});
|
|
49
61
|
}
|
|
50
62
|
/**
|
|
@@ -2,43 +2,17 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { doc } from "../browser/index";
|
|
5
|
-
import {
|
|
5
|
+
import { pointerCoord } from "../helpers";
|
|
6
6
|
export const startTapClick = (config) => {
|
|
7
7
|
if (doc === undefined) {
|
|
8
8
|
return;
|
|
9
9
|
}
|
|
10
|
-
let lastTouch = -MOUSE_WAIT * 10;
|
|
11
10
|
let lastActivated = 0;
|
|
12
11
|
let activatableEle;
|
|
13
12
|
let activeRipple;
|
|
14
13
|
let activeDefer;
|
|
15
14
|
const useRippleEffect = config.getBoolean('animated', true) && config.getBoolean('rippleEffect', true);
|
|
16
15
|
const clearDefers = new WeakMap();
|
|
17
|
-
// Touch Events
|
|
18
|
-
const onTouchStart = (ev) => {
|
|
19
|
-
lastTouch = now(ev);
|
|
20
|
-
pointerDown(ev);
|
|
21
|
-
};
|
|
22
|
-
const onTouchEnd = (ev) => {
|
|
23
|
-
lastTouch = now(ev);
|
|
24
|
-
pointerUp(ev);
|
|
25
|
-
};
|
|
26
|
-
const onMouseDown = (ev) => {
|
|
27
|
-
// Ignore right clicks
|
|
28
|
-
if (ev.button === 2) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
const t = now(ev) - MOUSE_WAIT;
|
|
32
|
-
if (lastTouch < t) {
|
|
33
|
-
pointerDown(ev);
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
const onMouseUp = (ev) => {
|
|
37
|
-
const t = now(ev) - MOUSE_WAIT;
|
|
38
|
-
if (lastTouch < t) {
|
|
39
|
-
pointerUp(ev);
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
16
|
const cancelActive = () => {
|
|
43
17
|
if (activeDefer)
|
|
44
18
|
clearTimeout(activeDefer);
|
|
@@ -49,7 +23,8 @@ export const startTapClick = (config) => {
|
|
|
49
23
|
}
|
|
50
24
|
};
|
|
51
25
|
const pointerDown = (ev) => {
|
|
52
|
-
|
|
26
|
+
// Ignore right clicks
|
|
27
|
+
if (activatableEle || ev.button === 2) {
|
|
53
28
|
return;
|
|
54
29
|
}
|
|
55
30
|
setActivatedElement(getActivatableTarget(ev), ev);
|
|
@@ -133,9 +108,8 @@ export const startTapClick = (config) => {
|
|
|
133
108
|
}
|
|
134
109
|
};
|
|
135
110
|
doc.addEventListener('ionGestureCaptured', cancelActive);
|
|
136
|
-
doc.addEventListener('
|
|
137
|
-
doc.addEventListener('
|
|
138
|
-
doc.addEventListener('touchend', onTouchEnd, true);
|
|
111
|
+
doc.addEventListener('pointerdown', pointerDown, true);
|
|
112
|
+
doc.addEventListener('pointerup', pointerUp, true);
|
|
139
113
|
/**
|
|
140
114
|
* Tap click effects such as the ripple effect should
|
|
141
115
|
* not happen when scrolling. For example, if a user scrolls
|
|
@@ -149,8 +123,6 @@ export const startTapClick = (config) => {
|
|
|
149
123
|
* ion-content's scroll events.
|
|
150
124
|
*/
|
|
151
125
|
doc.addEventListener('pointercancel', cancelActive, true);
|
|
152
|
-
doc.addEventListener('mousedown', onMouseDown, true);
|
|
153
|
-
doc.addEventListener('mouseup', onMouseUp, true);
|
|
154
126
|
};
|
|
155
127
|
// TODO(FW-2832): type
|
|
156
128
|
const getActivatableTarget = (ev) => {
|
|
@@ -190,4 +162,3 @@ const getRippleEffect = (el) => {
|
|
|
190
162
|
const ACTIVATED = 'ion-activated';
|
|
191
163
|
const ADD_ACTIVATED_DEFERS = 100;
|
|
192
164
|
const CLEAR_STATE_DEFERS = 150;
|
|
193
|
-
const MOUSE_WAIT = 2500;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { newSpecPage } from "@stencil/core/testing";
|
|
5
5
|
import { Modal } from "../../../components/modal/modal";
|
|
6
|
+
import { Toast } from "../../../components/toast/toast";
|
|
6
7
|
import { Nav } from "../../../components/nav/nav";
|
|
7
8
|
import { RouterOutlet } from "../../../components/router-outlet/router-outlet";
|
|
8
9
|
import { setRootAriaHidden } from "../../overlays";
|
|
@@ -150,4 +151,56 @@ describe('aria-hidden on individual overlays', () => {
|
|
|
150
151
|
await modalOne.present();
|
|
151
152
|
expect(modalOne.hasAttribute('aria-hidden')).toEqual(false);
|
|
152
153
|
});
|
|
154
|
+
it('should not hide previous overlay if top-most overlay is toast', async () => {
|
|
155
|
+
const page = await newSpecPage({
|
|
156
|
+
components: [Modal, Toast],
|
|
157
|
+
html: `
|
|
158
|
+
<ion-modal id="m-one"></ion-modal>
|
|
159
|
+
<ion-modal id="m-two"></ion-modal>
|
|
160
|
+
<ion-toast id="t-one"></ion-toast>
|
|
161
|
+
<ion-toast id="t-two"></ion-toast>
|
|
162
|
+
`,
|
|
163
|
+
});
|
|
164
|
+
const modalOne = page.body.querySelector('ion-modal#m-one');
|
|
165
|
+
const modalTwo = page.body.querySelector('ion-modal#m-two');
|
|
166
|
+
const toastOne = page.body.querySelector('ion-toast#t-one');
|
|
167
|
+
const toastTwo = page.body.querySelector('ion-toast#t-two');
|
|
168
|
+
await modalOne.present();
|
|
169
|
+
await modalTwo.present();
|
|
170
|
+
await toastOne.present();
|
|
171
|
+
await toastTwo.present();
|
|
172
|
+
expect(modalOne.hasAttribute('aria-hidden')).toEqual(true);
|
|
173
|
+
expect(modalTwo.hasAttribute('aria-hidden')).toEqual(false);
|
|
174
|
+
expect(toastOne.hasAttribute('aria-hidden')).toEqual(false);
|
|
175
|
+
expect(toastTwo.hasAttribute('aria-hidden')).toEqual(false);
|
|
176
|
+
await toastTwo.dismiss();
|
|
177
|
+
expect(modalOne.hasAttribute('aria-hidden')).toEqual(true);
|
|
178
|
+
expect(modalTwo.hasAttribute('aria-hidden')).toEqual(false);
|
|
179
|
+
expect(toastOne.hasAttribute('aria-hidden')).toEqual(false);
|
|
180
|
+
await toastOne.dismiss();
|
|
181
|
+
expect(modalOne.hasAttribute('aria-hidden')).toEqual(true);
|
|
182
|
+
expect(modalTwo.hasAttribute('aria-hidden')).toEqual(false);
|
|
183
|
+
});
|
|
184
|
+
it('should hide previous overlay even with a toast that is not the top-most overlay', async () => {
|
|
185
|
+
const page = await newSpecPage({
|
|
186
|
+
components: [Modal, Toast],
|
|
187
|
+
html: `
|
|
188
|
+
<ion-modal id="m-one"></ion-modal>
|
|
189
|
+
<ion-toast id="t-one"></ion-toast>
|
|
190
|
+
<ion-modal id="m-two"></ion-modal>
|
|
191
|
+
`,
|
|
192
|
+
});
|
|
193
|
+
const modalOne = page.body.querySelector('ion-modal#m-one');
|
|
194
|
+
const modalTwo = page.body.querySelector('ion-modal#m-two');
|
|
195
|
+
const toastOne = page.body.querySelector('ion-toast#t-one');
|
|
196
|
+
await modalOne.present();
|
|
197
|
+
await toastOne.present();
|
|
198
|
+
await modalTwo.present();
|
|
199
|
+
expect(modalOne.hasAttribute('aria-hidden')).toEqual(true);
|
|
200
|
+
expect(toastOne.hasAttribute('aria-hidden')).toEqual(true);
|
|
201
|
+
expect(modalTwo.hasAttribute('aria-hidden')).toEqual(false);
|
|
202
|
+
await modalTwo.dismiss();
|
|
203
|
+
expect(modalOne.hasAttribute('aria-hidden')).toEqual(false);
|
|
204
|
+
expect(toastOne.hasAttribute('aria-hidden')).toEqual(false);
|
|
205
|
+
});
|
|
153
206
|
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
+
import { isModeValidForTheme } from "../../../global/ionic-global";
|
|
4
5
|
/**
|
|
5
6
|
* Generates a unique test title based on a base title
|
|
6
7
|
* and a test config. Playwright uses test titles to generate
|
|
@@ -8,53 +9,73 @@
|
|
|
8
9
|
* each test title is unique.
|
|
9
10
|
*/
|
|
10
11
|
const generateTitle = (title, config) => {
|
|
11
|
-
const {
|
|
12
|
-
if (theme ===
|
|
12
|
+
const { direction, palette, theme, mode } = config;
|
|
13
|
+
if (theme === mode) {
|
|
13
14
|
/**
|
|
14
|
-
*
|
|
15
|
-
* the
|
|
16
|
-
* compatibility, we will not include the theme in the test
|
|
17
|
-
* title if the theme is set to light.
|
|
15
|
+
* Fallback to the old test title naming convention
|
|
16
|
+
* when the theme and mode are the same.
|
|
18
17
|
*/
|
|
19
|
-
|
|
18
|
+
if (palette === 'light') {
|
|
19
|
+
/**
|
|
20
|
+
* Ionic has many existing tests that existed prior to
|
|
21
|
+
* the introduction of theme testing. To maintain backwards
|
|
22
|
+
* compatibility, we will not include the theme in the test
|
|
23
|
+
* title if the theme is set to light.
|
|
24
|
+
*/
|
|
25
|
+
return `${title} - ${theme}/${direction}`;
|
|
26
|
+
}
|
|
27
|
+
return `${title} - ${theme}/${direction}/${palette}`;
|
|
20
28
|
}
|
|
21
|
-
return `${title} - ${mode}/${direction}/${
|
|
29
|
+
return `${title} - ${theme}/${mode}/${direction}/${palette}`;
|
|
22
30
|
};
|
|
23
31
|
/**
|
|
24
32
|
* Generates a unique filename based on a base filename
|
|
25
33
|
* and a test config.
|
|
26
34
|
*/
|
|
27
35
|
const generateScreenshotName = (fileName, config) => {
|
|
28
|
-
const {
|
|
29
|
-
if (theme ===
|
|
36
|
+
const { theme, direction, palette, mode } = config;
|
|
37
|
+
if (theme === mode) {
|
|
30
38
|
/**
|
|
31
|
-
*
|
|
32
|
-
* the
|
|
33
|
-
* compatibility, we will not include the theme in the screenshot
|
|
34
|
-
* name if the theme is set to light.
|
|
39
|
+
* Fallback to the old screenshot naming convention
|
|
40
|
+
* when the theme and mode are the same.
|
|
35
41
|
*/
|
|
36
|
-
|
|
42
|
+
if (palette === 'light') {
|
|
43
|
+
/**
|
|
44
|
+
* Ionic has many existing tests that existed prior to
|
|
45
|
+
* the introduction of theme testing. To maintain backwards
|
|
46
|
+
* compatibility, we will not include the theme in the screenshot
|
|
47
|
+
* name if the theme is set to light.
|
|
48
|
+
*/
|
|
49
|
+
return `${fileName}-${theme}-${direction}.png`;
|
|
50
|
+
}
|
|
51
|
+
return `${fileName}-${theme}-${direction}-${palette}.png`;
|
|
37
52
|
}
|
|
38
|
-
return `${fileName}-${mode}-${direction}-${
|
|
53
|
+
return `${fileName}-${theme}-${mode}-${direction}-${palette}.png`;
|
|
39
54
|
};
|
|
40
55
|
/**
|
|
41
56
|
* Given a config generate an array of test variants.
|
|
42
57
|
*/
|
|
43
58
|
export const configs = (testConfig = DEFAULT_TEST_CONFIG_OPTION) => {
|
|
44
59
|
var _a;
|
|
45
|
-
const { modes, directions } = testConfig;
|
|
60
|
+
const { modes, themes, directions } = testConfig;
|
|
46
61
|
const configs = [];
|
|
47
62
|
/**
|
|
48
63
|
* If certain options are not provided,
|
|
49
64
|
* fall back to the defaults.
|
|
50
65
|
*/
|
|
51
|
-
const
|
|
66
|
+
const processedModes = modes !== null && modes !== void 0 ? modes : DEFAULT_MODES;
|
|
67
|
+
const processedTheme = themes !== null && themes !== void 0 ? themes : DEFAULT_THEMES;
|
|
52
68
|
const processedDirection = directions !== null && directions !== void 0 ? directions : DEFAULT_DIRECTIONS;
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
69
|
+
const processedPalette = (_a = testConfig.palettes) !== null && _a !== void 0 ? _a : DEFAULT_PALETTES;
|
|
70
|
+
processedModes.forEach((mode) => {
|
|
71
|
+
processedTheme.forEach((theme) => {
|
|
72
|
+
if (!isModeValidForTheme(mode, theme)) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
processedDirection.forEach((direction) => {
|
|
76
|
+
processedPalette.forEach((palette) => {
|
|
77
|
+
configs.push({ theme, direction, palette, mode });
|
|
78
|
+
});
|
|
58
79
|
});
|
|
59
80
|
});
|
|
60
81
|
});
|
|
@@ -67,10 +88,12 @@ export const configs = (testConfig = DEFAULT_TEST_CONFIG_OPTION) => {
|
|
|
67
88
|
});
|
|
68
89
|
};
|
|
69
90
|
const DEFAULT_MODES = ['ios', 'md'];
|
|
91
|
+
const DEFAULT_THEMES = ['ios', 'md'];
|
|
70
92
|
const DEFAULT_DIRECTIONS = ['ltr', 'rtl'];
|
|
71
|
-
const
|
|
93
|
+
const DEFAULT_PALETTES = ['light'];
|
|
72
94
|
const DEFAULT_TEST_CONFIG_OPTION = {
|
|
73
95
|
modes: DEFAULT_MODES,
|
|
74
|
-
directions: DEFAULT_DIRECTIONS,
|
|
75
96
|
themes: DEFAULT_THEMES,
|
|
97
|
+
directions: DEFAULT_DIRECTIONS,
|
|
98
|
+
palettes: DEFAULT_PALETTES,
|
|
76
99
|
};
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* to be hydrated before proceeding with the test.
|
|
10
10
|
*/
|
|
11
11
|
export const goto = async (page, url, testInfo, originalFn, options) => {
|
|
12
|
-
var _a, _b, _c;
|
|
12
|
+
var _a, _b, _c, _d;
|
|
13
13
|
if (options === undefined && testInfo.project.metadata.mode === undefined) {
|
|
14
14
|
throw new Error(`
|
|
15
15
|
A config must be passed to page.goto to use a generator test:
|
|
@@ -21,13 +21,16 @@ configs().forEach(({ config, title }) => {
|
|
|
21
21
|
});`);
|
|
22
22
|
}
|
|
23
23
|
let mode;
|
|
24
|
+
let theme;
|
|
24
25
|
let direction;
|
|
25
26
|
if (options == undefined) {
|
|
26
27
|
mode = testInfo.project.metadata.mode;
|
|
28
|
+
theme = testInfo.project.metadata.theme;
|
|
27
29
|
direction = testInfo.project.metadata.rtl ? 'rtl' : 'ltr';
|
|
28
30
|
}
|
|
29
31
|
else {
|
|
30
32
|
mode = options.mode;
|
|
33
|
+
theme = options.theme;
|
|
31
34
|
direction = options.direction;
|
|
32
35
|
}
|
|
33
36
|
const rtlString = direction === 'rtl' ? 'true' : undefined;
|
|
@@ -39,12 +42,14 @@ configs().forEach(({ config, title }) => {
|
|
|
39
42
|
*/
|
|
40
43
|
const urlToParams = new URLSearchParams(paramsString);
|
|
41
44
|
const formattedMode = (_a = urlToParams.get('ionic:mode')) !== null && _a !== void 0 ? _a : mode;
|
|
42
|
-
const
|
|
43
|
-
const
|
|
45
|
+
const formattedTheme = (_b = urlToParams.get('ionic:theme')) !== null && _b !== void 0 ? _b : theme;
|
|
46
|
+
const formattedRtl = (_c = urlToParams.get('rtl')) !== null && _c !== void 0 ? _c : rtlString;
|
|
47
|
+
const ionicTesting = (_d = urlToParams.get('ionic:_testing')) !== null && _d !== void 0 ? _d : true;
|
|
44
48
|
/**
|
|
45
49
|
* Pass through other custom query params
|
|
46
50
|
*/
|
|
47
51
|
urlToParams.delete('ionic:mode');
|
|
52
|
+
urlToParams.delete('ionic:theme');
|
|
48
53
|
urlToParams.delete('rtl');
|
|
49
54
|
urlToParams.delete('ionic:_testing');
|
|
50
55
|
/**
|
|
@@ -54,11 +59,15 @@ configs().forEach(({ config, title }) => {
|
|
|
54
59
|
*/
|
|
55
60
|
const remainingQueryParams = decodeURIComponent(urlToParams.toString());
|
|
56
61
|
const remainingQueryParamsString = remainingQueryParams == '' ? '' : `&${remainingQueryParams}`;
|
|
57
|
-
const formattedUrl = `${splitUrl[0]}?ionic:_testing=${ionicTesting}&ionic:mode=${formattedMode}&rtl=${formattedRtl}${remainingQueryParamsString}`;
|
|
62
|
+
const formattedUrl = `${splitUrl[0]}?ionic:_testing=${ionicTesting}&ionic:mode=${formattedMode}&ionic:theme=${formattedTheme}&rtl=${formattedRtl}${remainingQueryParamsString}`;
|
|
58
63
|
testInfo.annotations.push({
|
|
59
64
|
type: 'mode',
|
|
60
65
|
description: formattedMode,
|
|
61
66
|
});
|
|
67
|
+
testInfo.annotations.push({
|
|
68
|
+
type: 'theme',
|
|
69
|
+
description: formattedTheme,
|
|
70
|
+
});
|
|
62
71
|
testInfo.annotations.push({
|
|
63
72
|
type: 'direction',
|
|
64
73
|
description: formattedRtl === 'true' ? 'rtl' : 'ltr',
|
|
@@ -19,15 +19,18 @@ export const setContent = async (page, html, testInfo, options) => {
|
|
|
19
19
|
let mode;
|
|
20
20
|
let direction;
|
|
21
21
|
let theme;
|
|
22
|
+
let palette;
|
|
22
23
|
if (options == undefined) {
|
|
23
24
|
mode = testInfo.project.metadata.mode;
|
|
24
25
|
direction = testInfo.project.metadata.rtl ? 'rtl' : 'ltr';
|
|
25
26
|
theme = testInfo.project.metadata.theme;
|
|
27
|
+
palette = testInfo.project.metadata.palette;
|
|
26
28
|
}
|
|
27
29
|
else {
|
|
28
30
|
mode = options.mode;
|
|
29
31
|
direction = options.direction;
|
|
30
32
|
theme = options.theme;
|
|
33
|
+
palette = options.palette;
|
|
31
34
|
}
|
|
32
35
|
const baseUrl = process.env.PLAYWRIGHT_TEST_BASE_URL;
|
|
33
36
|
const output = `
|
|
@@ -39,13 +42,14 @@ export const setContent = async (page, html, testInfo, options) => {
|
|
|
39
42
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" />
|
|
40
43
|
<link href="${baseUrl}/css/ionic.bundle.css" rel="stylesheet" />
|
|
41
44
|
<link href="${baseUrl}/scripts/testing/styles.css" rel="stylesheet" />
|
|
42
|
-
${
|
|
45
|
+
${palette !== 'light' ? `<link href="${baseUrl}/css/palettes/${palette}.always.css" rel="stylesheet" />` : ''}
|
|
43
46
|
<script src="${baseUrl}/scripts/testing/scripts.js"></script>
|
|
44
47
|
<script type="module" src="${baseUrl}/dist/ionic/ionic.esm.js"></script>
|
|
45
48
|
<script>
|
|
46
49
|
window.Ionic = {
|
|
47
50
|
config: {
|
|
48
|
-
mode: '${mode}'
|
|
51
|
+
mode: '${mode}',
|
|
52
|
+
theme: '${theme}'
|
|
49
53
|
}
|
|
50
54
|
}
|
|
51
55
|
</script>
|
|
@@ -55,6 +59,14 @@ export const setContent = async (page, html, testInfo, options) => {
|
|
|
55
59
|
</body>
|
|
56
60
|
</html>
|
|
57
61
|
`;
|
|
62
|
+
testInfo.annotations.push({
|
|
63
|
+
type: 'mode',
|
|
64
|
+
description: mode,
|
|
65
|
+
});
|
|
66
|
+
testInfo.annotations.push({
|
|
67
|
+
type: 'palette',
|
|
68
|
+
description: palette,
|
|
69
|
+
});
|
|
58
70
|
testInfo.annotations.push({
|
|
59
71
|
type: 'theme',
|
|
60
72
|
description: theme,
|