@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
|
@@ -4,12 +4,86 @@
|
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
6
|
const index = require('./index-c8d52405.js');
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
7
|
+
const helpers = require('./helpers-afaa9001.js');
|
|
8
|
+
const hardwareBackButton = require('./hardware-back-button-f66bce00.js');
|
|
9
|
+
const ionicGlobal = require('./ionic-global-94d8021d.js');
|
|
10
|
+
const frameworkDelegate = require('./framework-delegate-55f5683a.js');
|
|
10
11
|
const gestureController = require('./gesture-controller-9436f482.js');
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* This query string selects elements that
|
|
15
|
+
* are eligible to receive focus. We select
|
|
16
|
+
* interactive elements that meet the following
|
|
17
|
+
* criteria:
|
|
18
|
+
* 1. Element does not have a negative tabindex
|
|
19
|
+
* 2. Element does not have `hidden`
|
|
20
|
+
* 3. Element does not have `disabled` for non-Ionic components.
|
|
21
|
+
* 4. Element does not have `disabled` or `disabled="true"` for Ionic components.
|
|
22
|
+
* Note: We need this distinction because `disabled="false"` is
|
|
23
|
+
* valid usage for the disabled property on ion-button.
|
|
24
|
+
*/
|
|
25
|
+
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])';
|
|
26
|
+
/**
|
|
27
|
+
* Focuses the first descendant in a context
|
|
28
|
+
* that can receive focus. If none exists,
|
|
29
|
+
* a fallback element will be focused.
|
|
30
|
+
* This fallback is typically an ancestor
|
|
31
|
+
* container such as a menu or overlay so focus does not
|
|
32
|
+
* leave the container we are trying to trap focus in.
|
|
33
|
+
*
|
|
34
|
+
* If no fallback is specified then we focus the container itself.
|
|
35
|
+
*/
|
|
36
|
+
const focusFirstDescendant = (ref, fallbackElement) => {
|
|
37
|
+
const firstInput = ref.querySelector(focusableQueryString);
|
|
38
|
+
focusElementInContext(firstInput, fallbackElement !== null && fallbackElement !== void 0 ? fallbackElement : ref);
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Focuses the last descendant in a context
|
|
42
|
+
* that can receive focus. If none exists,
|
|
43
|
+
* a fallback element will be focused.
|
|
44
|
+
* This fallback is typically an ancestor
|
|
45
|
+
* container such as a menu or overlay so focus does not
|
|
46
|
+
* leave the container we are trying to trap focus in.
|
|
47
|
+
*
|
|
48
|
+
* If no fallback is specified then we focus the container itself.
|
|
49
|
+
*/
|
|
50
|
+
const focusLastDescendant = (ref, fallbackElement) => {
|
|
51
|
+
const inputs = Array.from(ref.querySelectorAll(focusableQueryString));
|
|
52
|
+
const lastInput = inputs.length > 0 ? inputs[inputs.length - 1] : null;
|
|
53
|
+
focusElementInContext(lastInput, fallbackElement !== null && fallbackElement !== void 0 ? fallbackElement : ref);
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Focuses a particular element in a context. If the element
|
|
57
|
+
* doesn't have anything focusable associated with it then
|
|
58
|
+
* a fallback element will be focused.
|
|
59
|
+
*
|
|
60
|
+
* This fallback is typically an ancestor
|
|
61
|
+
* container such as a menu or overlay so focus does not
|
|
62
|
+
* leave the container we are trying to trap focus in.
|
|
63
|
+
* This should be used instead of the focus() method
|
|
64
|
+
* on most elements because the focusable element
|
|
65
|
+
* may not be the host element.
|
|
66
|
+
*
|
|
67
|
+
* For example, if an ion-button should be focused
|
|
68
|
+
* then we should actually focus the native <button>
|
|
69
|
+
* element inside of ion-button's shadow root, not
|
|
70
|
+
* the host element itself.
|
|
71
|
+
*/
|
|
72
|
+
const focusElementInContext = (hostToFocus, fallbackElement) => {
|
|
73
|
+
let elementToFocus = hostToFocus;
|
|
74
|
+
const shadowRoot = hostToFocus === null || hostToFocus === void 0 ? void 0 : hostToFocus.shadowRoot;
|
|
75
|
+
if (shadowRoot) {
|
|
76
|
+
// If there are no inner focusable elements, just focus the host element.
|
|
77
|
+
elementToFocus = shadowRoot.querySelector(focusableQueryString) || hostToFocus;
|
|
78
|
+
}
|
|
79
|
+
if (elementToFocus) {
|
|
80
|
+
helpers.focusVisibleElement(elementToFocus);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
// Focus fallback element instead of letting focus escape
|
|
84
|
+
fallbackElement.focus();
|
|
85
|
+
}
|
|
86
|
+
};
|
|
13
87
|
|
|
14
88
|
let lastOverlayIndex = 0;
|
|
15
89
|
let lastId = 0;
|
|
@@ -91,39 +165,7 @@ const createOverlay = (tagName, opts) => {
|
|
|
91
165
|
}
|
|
92
166
|
return Promise.resolve();
|
|
93
167
|
};
|
|
94
|
-
/**
|
|
95
|
-
* This query string selects elements that
|
|
96
|
-
* are eligible to receive focus. We select
|
|
97
|
-
* interactive elements that meet the following
|
|
98
|
-
* criteria:
|
|
99
|
-
* 1. Element does not have a negative tabindex
|
|
100
|
-
* 2. Element does not have `hidden`
|
|
101
|
-
* 3. Element does not have `disabled` for non-Ionic components.
|
|
102
|
-
* 4. Element does not have `disabled` or `disabled="true"` for Ionic components.
|
|
103
|
-
* Note: We need this distinction because `disabled="false"` is
|
|
104
|
-
* valid usage for the disabled property on ion-button.
|
|
105
|
-
*/
|
|
106
|
-
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])';
|
|
107
168
|
const isOverlayHidden = (overlay) => overlay.classList.contains('overlay-hidden');
|
|
108
|
-
/**
|
|
109
|
-
* Focuses the first descendant in an overlay
|
|
110
|
-
* that can receive focus. If none exists,
|
|
111
|
-
* the entire overlay will be focused.
|
|
112
|
-
*/
|
|
113
|
-
const focusFirstDescendant = (ref, overlay) => {
|
|
114
|
-
const firstInput = ref.querySelector(focusableQueryString);
|
|
115
|
-
focusElementInOverlay(firstInput, overlay);
|
|
116
|
-
};
|
|
117
|
-
/**
|
|
118
|
-
* Focuses the last descendant in an overlay
|
|
119
|
-
* that can receive focus. If none exists,
|
|
120
|
-
* the entire overlay will be focused.
|
|
121
|
-
*/
|
|
122
|
-
const focusLastDescendant = (ref, overlay) => {
|
|
123
|
-
const inputs = Array.from(ref.querySelectorAll(focusableQueryString));
|
|
124
|
-
const lastInput = inputs.length > 0 ? inputs[inputs.length - 1] : null;
|
|
125
|
-
focusElementInOverlay(lastInput, overlay);
|
|
126
|
-
};
|
|
127
169
|
/**
|
|
128
170
|
* Focuses a particular element in an overlay. If the element
|
|
129
171
|
* doesn't have anything focusable associated with it then
|
|
@@ -314,7 +356,7 @@ const trapKeyboardFocus = (ev, doc) => {
|
|
|
314
356
|
*/
|
|
315
357
|
const lastFocus = lastOverlay.lastFocus;
|
|
316
358
|
// Focus the first element in the overlay wrapper
|
|
317
|
-
focusFirstDescendant(lastOverlay
|
|
359
|
+
focusFirstDescendant(lastOverlay);
|
|
318
360
|
/**
|
|
319
361
|
* If the cached last focused element is the
|
|
320
362
|
* same as the active element, then we need
|
|
@@ -325,7 +367,7 @@ const trapKeyboardFocus = (ev, doc) => {
|
|
|
325
367
|
* last focus to equal the active element.
|
|
326
368
|
*/
|
|
327
369
|
if (lastFocus === doc.activeElement) {
|
|
328
|
-
focusLastDescendant(lastOverlay
|
|
370
|
+
focusLastDescendant(lastOverlay);
|
|
329
371
|
}
|
|
330
372
|
lastOverlay.lastFocus = doc.activeElement;
|
|
331
373
|
}
|
|
@@ -370,7 +412,7 @@ const connectListeners = (doc) => {
|
|
|
370
412
|
* this behavior will be handled via the ionBackButton
|
|
371
413
|
* event.
|
|
372
414
|
*/
|
|
373
|
-
if (!hardwareBackButton.
|
|
415
|
+
if (!hardwareBackButton.shouldUseCloseWatcher()) {
|
|
374
416
|
doc.addEventListener('keydown', (ev) => {
|
|
375
417
|
if (ev.key === 'Escape') {
|
|
376
418
|
const lastOverlay = getPresentedOverlay(doc);
|
|
@@ -461,15 +503,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
461
503
|
}
|
|
462
504
|
setRootAriaHidden(true);
|
|
463
505
|
document.body.classList.add(gestureController.BACKDROP_NO_SCROLL);
|
|
464
|
-
|
|
465
|
-
* Hide all other overlays from screen readers so only this one
|
|
466
|
-
* can be read. Note that presenting an overlay always makes
|
|
467
|
-
* it the topmost one.
|
|
468
|
-
*/
|
|
469
|
-
if (index.doc !== undefined) {
|
|
470
|
-
const presentedOverlays = getPresentedOverlays(index.doc);
|
|
471
|
-
presentedOverlays.forEach((o) => o.setAttribute('aria-hidden', 'true'));
|
|
472
|
-
}
|
|
506
|
+
hideOverlaysFromScreenReaders(overlay.el);
|
|
473
507
|
overlay.presented = true;
|
|
474
508
|
overlay.willPresent.emit();
|
|
475
509
|
(_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
|
|
@@ -562,7 +596,7 @@ const restoreElementFocus = async (overlayEl) => {
|
|
|
562
596
|
}
|
|
563
597
|
};
|
|
564
598
|
const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnimation, opts) => {
|
|
565
|
-
var _a, _b
|
|
599
|
+
var _a, _b;
|
|
566
600
|
if (!overlay.presented) {
|
|
567
601
|
return false;
|
|
568
602
|
}
|
|
@@ -615,13 +649,7 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
|
|
|
615
649
|
console.error(err);
|
|
616
650
|
}
|
|
617
651
|
overlay.el.remove();
|
|
618
|
-
|
|
619
|
-
* If there are other overlays presented, unhide the new
|
|
620
|
-
* topmost one from screen readers.
|
|
621
|
-
*/
|
|
622
|
-
if (index.doc !== undefined) {
|
|
623
|
-
(_c = getPresentedOverlay(index.doc)) === null || _c === void 0 ? void 0 : _c.removeAttribute('aria-hidden');
|
|
624
|
-
}
|
|
652
|
+
revealOverlaysToScreenReaders();
|
|
625
653
|
return true;
|
|
626
654
|
};
|
|
627
655
|
const getAppRoot = (doc) => {
|
|
@@ -798,7 +826,7 @@ const createTriggerController = () => {
|
|
|
798
826
|
removeClickListener();
|
|
799
827
|
const triggerEl = trigger !== undefined ? document.getElementById(trigger) : null;
|
|
800
828
|
if (!triggerEl) {
|
|
801
|
-
|
|
829
|
+
ionicGlobal.printIonWarning(`A trigger element with the ID "${trigger}" was not found in the DOM. The trigger element must be in the DOM when the "trigger" property is set on an overlay component.`, el);
|
|
802
830
|
return;
|
|
803
831
|
}
|
|
804
832
|
const configureTriggerInteraction = (targetEl, overlayEl) => {
|
|
@@ -817,6 +845,62 @@ const createTriggerController = () => {
|
|
|
817
845
|
removeClickListener,
|
|
818
846
|
};
|
|
819
847
|
};
|
|
848
|
+
/**
|
|
849
|
+
* Ensure that underlying overlays have aria-hidden if necessary so that screen readers
|
|
850
|
+
* cannot move focus to these elements. Note that we cannot rely on focus/focusin/focusout
|
|
851
|
+
* events here because those events do not fire when the screen readers moves to a non-focusable
|
|
852
|
+
* element such as text.
|
|
853
|
+
* Without this logic screen readers would be able to move focus outside of the top focus-trapped overlay.
|
|
854
|
+
*
|
|
855
|
+
* @param newTopMostOverlay - The overlay that is being presented. Since the overlay has not been
|
|
856
|
+
* fully presented yet at the time this function is called it will not be included in the getPresentedOverlays result.
|
|
857
|
+
*/
|
|
858
|
+
const hideOverlaysFromScreenReaders = (newTopMostOverlay) => {
|
|
859
|
+
var _a;
|
|
860
|
+
if (index.doc === undefined)
|
|
861
|
+
return;
|
|
862
|
+
const overlays = getPresentedOverlays(index.doc);
|
|
863
|
+
for (let i = overlays.length - 1; i >= 0; i--) {
|
|
864
|
+
const presentedOverlay = overlays[i];
|
|
865
|
+
const nextPresentedOverlay = (_a = overlays[i + 1]) !== null && _a !== void 0 ? _a : newTopMostOverlay;
|
|
866
|
+
/**
|
|
867
|
+
* If next overlay has aria-hidden then all remaining overlays will have it too.
|
|
868
|
+
* Or, if the next overlay is a Toast that does not have aria-hidden then current overlay
|
|
869
|
+
* should not have aria-hidden either so focus can remain in the current overlay.
|
|
870
|
+
*/
|
|
871
|
+
if (nextPresentedOverlay.hasAttribute('aria-hidden') || nextPresentedOverlay.tagName !== 'ION-TOAST') {
|
|
872
|
+
presentedOverlay.setAttribute('aria-hidden', 'true');
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
};
|
|
876
|
+
/**
|
|
877
|
+
* When dismissing an overlay we need to reveal the new top-most overlay to screen readers.
|
|
878
|
+
* If the top-most overlay is a Toast we potentially need to reveal more overlays since
|
|
879
|
+
* focus is never automatically moved to the Toast.
|
|
880
|
+
*/
|
|
881
|
+
const revealOverlaysToScreenReaders = () => {
|
|
882
|
+
if (index.doc === undefined)
|
|
883
|
+
return;
|
|
884
|
+
const overlays = getPresentedOverlays(index.doc);
|
|
885
|
+
for (let i = overlays.length - 1; i >= 0; i--) {
|
|
886
|
+
const currentOverlay = overlays[i];
|
|
887
|
+
/**
|
|
888
|
+
* If the current we are looking at is a Toast then we can remove aria-hidden.
|
|
889
|
+
* However, we potentially need to keep looking at the overlay stack because there
|
|
890
|
+
* could be more Toasts underneath. Additionally, we need to unhide the closest non-Toast
|
|
891
|
+
* overlay too so focus can move there since focus is never automatically moved to the Toast.
|
|
892
|
+
*/
|
|
893
|
+
currentOverlay.removeAttribute('aria-hidden');
|
|
894
|
+
/**
|
|
895
|
+
* If we found a non-Toast element then we can just remove aria-hidden and stop searching entirely
|
|
896
|
+
* since this overlay should always receive focus. As a result, all underlying overlays should still
|
|
897
|
+
* be hidden from screen readers.
|
|
898
|
+
*/
|
|
899
|
+
if (currentOverlay.tagName !== 'ION-TOAST') {
|
|
900
|
+
break;
|
|
901
|
+
}
|
|
902
|
+
}
|
|
903
|
+
};
|
|
820
904
|
|
|
821
905
|
exports.BACKDROP = BACKDROP;
|
|
822
906
|
exports.GESTURE = GESTURE;
|
|
@@ -828,6 +912,7 @@ exports.createTriggerController = createTriggerController;
|
|
|
828
912
|
exports.dismiss = dismiss;
|
|
829
913
|
exports.eventMethod = eventMethod;
|
|
830
914
|
exports.focusFirstDescendant = focusFirstDescendant;
|
|
915
|
+
exports.focusLastDescendant = focusLastDescendant;
|
|
831
916
|
exports.getPresentedOverlay = getPresentedOverlay;
|
|
832
917
|
exports.isCancel = isCancel;
|
|
833
918
|
exports.loadingController = loadingController;
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
const index = require('./index-
|
|
7
|
-
const index$1 = require('./index-
|
|
8
|
-
const helpers = require('./helpers-
|
|
9
|
-
require('./
|
|
6
|
+
const index = require('./index-2d21d526.js');
|
|
7
|
+
const index$1 = require('./index-91435ed0.js');
|
|
8
|
+
const helpers = require('./helpers-afaa9001.js');
|
|
9
|
+
require('./ionic-global-94d8021d.js');
|
|
10
10
|
|
|
11
11
|
const startStatusTap = () => {
|
|
12
12
|
const win = window;
|
|
@@ -5,9 +5,10 @@ import { Host, h } from "@stencil/core";
|
|
|
5
5
|
import { addEventListener, getElementRoot, raf, removeEventListener, transitionEndAsync } from "../../utils/helpers";
|
|
6
6
|
import { chevronDown } from "ionicons/icons";
|
|
7
7
|
import { config } from "../../global/config";
|
|
8
|
-
import {
|
|
8
|
+
import { getIonTheme } from "../../global/ionic-global";
|
|
9
9
|
/**
|
|
10
|
-
* @virtualProp {"ios" | "md"} mode - The mode determines
|
|
10
|
+
* @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
|
|
11
|
+
* @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
|
|
11
12
|
*
|
|
12
13
|
* @slot header - Content is placed at the top and is used to
|
|
13
14
|
* expand or collapse the accordion item.
|
|
@@ -298,13 +299,13 @@ export class Accordion {
|
|
|
298
299
|
}
|
|
299
300
|
render() {
|
|
300
301
|
const { disabled, readonly } = this;
|
|
301
|
-
const
|
|
302
|
+
const theme = getIonTheme(this);
|
|
302
303
|
const expanded = this.state === 4 /* AccordionState.Expanded */ || this.state === 8 /* AccordionState.Expanding */;
|
|
303
304
|
const headerPart = expanded ? 'header expanded' : 'header';
|
|
304
305
|
const contentPart = expanded ? 'content expanded' : 'content';
|
|
305
306
|
this.setAria(expanded);
|
|
306
|
-
return (h(Host, { key: '
|
|
307
|
-
[
|
|
307
|
+
return (h(Host, { key: '9194c52382548c03e6277a1c11b5c768a3ec7b2a', class: {
|
|
308
|
+
[theme]: true,
|
|
308
309
|
'accordion-expanding': this.state === 8 /* AccordionState.Expanding */,
|
|
309
310
|
'accordion-expanded': this.state === 4 /* AccordionState.Expanded */,
|
|
310
311
|
'accordion-collapsing': this.state === 2 /* AccordionState.Collapsing */,
|
|
@@ -314,7 +315,7 @@ export class Accordion {
|
|
|
314
315
|
'accordion-disabled': disabled,
|
|
315
316
|
'accordion-readonly': readonly,
|
|
316
317
|
'accordion-animated': this.shouldAnimate(),
|
|
317
|
-
} }, h("div", { key: '
|
|
318
|
+
} }, h("div", { key: '9c40f20571f4da55407310da535f253739747b13', onClick: () => this.toggleExpanded(), id: "header", part: headerPart, "aria-controls": "content", ref: (headerEl) => (this.headerEl = headerEl) }, h("slot", { key: '2832eb9df3036722609c49e1ea935906599d04f8', name: "header" })), h("div", { key: '12161651ca3f193906c7f4533d3f6e027a19eca4', id: "content", part: contentPart, role: "region", "aria-labelledby": "header", ref: (contentEl) => (this.contentEl = contentEl) }, h("div", { key: 'c53cbbb9b5761f367e2915005305f3b823245285', id: "content-wrapper", ref: (contentElWrapper) => (this.contentElWrapper = contentElWrapper) }, h("slot", { key: '68c47cb66583b55d353ba9360dd6bb3b5af69847', name: "content" })))));
|
|
318
319
|
}
|
|
319
320
|
static get is() { return "ion-accordion"; }
|
|
320
321
|
static get encapsulation() { return "shadow"; }
|
|
@@ -322,13 +323,15 @@ export class Accordion {
|
|
|
322
323
|
static get originalStyleUrls() {
|
|
323
324
|
return {
|
|
324
325
|
"ios": ["accordion.ios.scss"],
|
|
325
|
-
"md": ["accordion.md.scss"]
|
|
326
|
+
"md": ["accordion.md.scss"],
|
|
327
|
+
"ionic": ["accordion.md.scss"]
|
|
326
328
|
};
|
|
327
329
|
}
|
|
328
330
|
static get styleUrls() {
|
|
329
331
|
return {
|
|
330
332
|
"ios": ["accordion.ios.css"],
|
|
331
|
-
"md": ["accordion.md.css"]
|
|
333
|
+
"md": ["accordion.md.css"],
|
|
334
|
+
"ionic": ["accordion.md.css"]
|
|
332
335
|
};
|
|
333
336
|
}
|
|
334
337
|
static get properties() {
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { Host, h } from "@stencil/core";
|
|
5
5
|
import { printIonWarning } from "../../utils/logging/index";
|
|
6
|
-
import {
|
|
6
|
+
import { getIonTheme } from "../../global/ionic-global";
|
|
7
7
|
/**
|
|
8
|
-
* @virtualProp {"ios" | "md"} mode - The mode determines
|
|
8
|
+
* @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
|
|
9
|
+
* @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
|
|
9
10
|
*/
|
|
10
11
|
export class AccordionGroup {
|
|
11
12
|
constructor() {
|
|
@@ -196,26 +197,28 @@ export class AccordionGroup {
|
|
|
196
197
|
}
|
|
197
198
|
render() {
|
|
198
199
|
const { disabled, readonly, expand } = this;
|
|
199
|
-
const
|
|
200
|
-
return (h(Host, { key: '
|
|
201
|
-
[
|
|
200
|
+
const theme = getIonTheme(this);
|
|
201
|
+
return (h(Host, { key: 'e71d4f6391a74fd3fc6551a21c58c80167e8a0ab', class: {
|
|
202
|
+
[theme]: true,
|
|
202
203
|
'accordion-group-disabled': disabled,
|
|
203
204
|
'accordion-group-readonly': readonly,
|
|
204
205
|
[`accordion-group-expand-${expand}`]: true,
|
|
205
|
-
}, role: "presentation" }, h("slot", { key: '
|
|
206
|
+
}, role: "presentation" }, h("slot", { key: '28f7034ff9e25a2be08a1c9465a1151619ae313d' })));
|
|
206
207
|
}
|
|
207
208
|
static get is() { return "ion-accordion-group"; }
|
|
208
209
|
static get encapsulation() { return "shadow"; }
|
|
209
210
|
static get originalStyleUrls() {
|
|
210
211
|
return {
|
|
211
212
|
"ios": ["accordion-group.ios.scss"],
|
|
212
|
-
"md": ["accordion-group.md.scss"]
|
|
213
|
+
"md": ["accordion-group.md.scss"],
|
|
214
|
+
"ionic": ["accordion-group.md.scss"]
|
|
213
215
|
};
|
|
214
216
|
}
|
|
215
217
|
static get styleUrls() {
|
|
216
218
|
return {
|
|
217
219
|
"ios": ["accordion-group.ios.css"],
|
|
218
|
-
"md": ["accordion-group.md.css"]
|
|
220
|
+
"md": ["accordion-group.md.css"],
|
|
221
|
+
"ionic": ["accordion-group.md.css"]
|
|
219
222
|
};
|
|
220
223
|
}
|
|
221
224
|
static get properties() {
|
|
@@ -7,13 +7,14 @@ import { raf } from "../../utils/helpers";
|
|
|
7
7
|
import { createLockController } from "../../utils/lock-controller";
|
|
8
8
|
import { BACKDROP, createDelegateController, createTriggerController, dismiss, eventMethod, isCancel, prepareOverlay, present, safeCall, setOverlayId, } from "../../utils/overlays";
|
|
9
9
|
import { getClassMap } from "../../utils/theme";
|
|
10
|
-
import { getIonMode } from "../../global/ionic-global";
|
|
10
|
+
import { getIonMode, getIonTheme } from "../../global/ionic-global";
|
|
11
11
|
import { iosEnterAnimation } from "./animations/ios.enter";
|
|
12
12
|
import { iosLeaveAnimation } from "./animations/ios.leave";
|
|
13
13
|
import { mdEnterAnimation } from "./animations/md.enter";
|
|
14
14
|
import { mdLeaveAnimation } from "./animations/md.leave";
|
|
15
15
|
/**
|
|
16
|
-
* @virtualProp {"ios" | "md"} mode - The mode determines
|
|
16
|
+
* @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
|
|
17
|
+
* @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
|
|
17
18
|
*/
|
|
18
19
|
export class ActionSheet {
|
|
19
20
|
constructor() {
|
|
@@ -149,6 +150,7 @@ export class ActionSheet {
|
|
|
149
150
|
setOverlayId(this.el);
|
|
150
151
|
}
|
|
151
152
|
componentDidLoad() {
|
|
153
|
+
const mode = getIonMode(this);
|
|
152
154
|
/**
|
|
153
155
|
* Only create gesture if:
|
|
154
156
|
* 1. A gesture does not already exist
|
|
@@ -157,7 +159,7 @@ export class ActionSheet {
|
|
|
157
159
|
* 4. A group ref exists
|
|
158
160
|
*/
|
|
159
161
|
const { groupEl, wrapperEl } = this;
|
|
160
|
-
if (!this.gesture &&
|
|
162
|
+
if (!this.gesture && mode === 'ios' && wrapperEl && groupEl) {
|
|
161
163
|
readTask(() => {
|
|
162
164
|
const isScrollable = groupEl.scrollHeight > groupEl.clientHeight;
|
|
163
165
|
if (!isScrollable) {
|
|
@@ -186,30 +188,32 @@ export class ActionSheet {
|
|
|
186
188
|
}
|
|
187
189
|
render() {
|
|
188
190
|
const { header, htmlAttributes, overlayIndex } = this;
|
|
189
|
-
const
|
|
191
|
+
const theme = getIonTheme(this);
|
|
190
192
|
const allButtons = this.getButtons();
|
|
191
193
|
const cancelButton = allButtons.find((b) => b.role === 'cancel');
|
|
192
194
|
const buttons = allButtons.filter((b) => b.role !== 'cancel');
|
|
193
195
|
const headerID = `action-sheet-${overlayIndex}-header`;
|
|
194
|
-
return (h(Host, Object.assign({ key: '
|
|
196
|
+
return (h(Host, Object.assign({ key: '52de0bdf7c4c1915d93863fc1d269c333d18046c', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
|
|
195
197
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
196
|
-
}, class: Object.assign(Object.assign({ [
|
|
198
|
+
}, class: Object.assign(Object.assign({ [theme]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), h("ion-backdrop", { key: '32703d8e6d5456f4563a10870cae3a5f99869d00', tappable: this.backdropDismiss }), h("div", { key: 'c2cb1704c0aae5918372c61abf48e82678075289', tabindex: "0" }), h("div", { key: '436b765c89194d5a71b4b5031e9a5353f67f13c5', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, h("div", { key: '2ed58d16a3c4b66114e7fc6ad9892b9320dfab33', class: "action-sheet-container" }, h("div", { key: 'd54f714f8a4958676b44a5b1809e2f906abce011', class: "action-sheet-group", ref: (el) => (this.groupEl = el) }, header !== undefined && (h("div", { id: headerID, class: {
|
|
197
199
|
'action-sheet-title': true,
|
|
198
200
|
'action-sheet-has-sub-title': this.subHeader !== undefined,
|
|
199
|
-
} }, header, this.subHeader && h("div", { class: "action-sheet-sub-title" }, this.subHeader))), buttons.map((b) => (h("button", Object.assign({}, b.htmlAttributes, { type: "button", id: b.id, class: buttonClass(b), onClick: () => this.buttonClick(b), disabled: b.disabled }), h("span", { class: "action-sheet-button-inner" }, b.icon && h("ion-icon", { icon: b.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" }), b.text),
|
|
201
|
+
} }, header, this.subHeader && h("div", { class: "action-sheet-sub-title" }, this.subHeader))), buttons.map((b) => (h("button", Object.assign({}, b.htmlAttributes, { type: "button", id: b.id, class: buttonClass(b), onClick: () => this.buttonClick(b), disabled: b.disabled }), h("span", { class: "action-sheet-button-inner" }, b.icon && h("ion-icon", { icon: b.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" }), b.text), theme === 'md' && h("ion-ripple-effect", null))))), cancelButton && (h("div", { class: "action-sheet-group action-sheet-group-cancel" }, h("button", Object.assign({}, cancelButton.htmlAttributes, { type: "button", class: buttonClass(cancelButton), onClick: () => this.buttonClick(cancelButton) }), h("span", { class: "action-sheet-button-inner" }, cancelButton.icon && (h("ion-icon", { icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), theme === 'md' && h("ion-ripple-effect", null)))))), h("div", { key: '2bc59eb8b384ea412d9f77c341370b2ff3c2c460', tabindex: "0" })));
|
|
200
202
|
}
|
|
201
203
|
static get is() { return "ion-action-sheet"; }
|
|
202
204
|
static get encapsulation() { return "scoped"; }
|
|
203
205
|
static get originalStyleUrls() {
|
|
204
206
|
return {
|
|
205
207
|
"ios": ["action-sheet.ios.scss"],
|
|
206
|
-
"md": ["action-sheet.md.scss"]
|
|
208
|
+
"md": ["action-sheet.md.scss"],
|
|
209
|
+
"ionic": ["action-sheet.md.scss"]
|
|
207
210
|
};
|
|
208
211
|
}
|
|
209
212
|
static get styleUrls() {
|
|
210
213
|
return {
|
|
211
214
|
"ios": ["action-sheet.ios.css"],
|
|
212
|
-
"md": ["action-sheet.md.css"]
|
|
215
|
+
"md": ["action-sheet.md.css"],
|
|
216
|
+
"ionic": ["action-sheet.md.css"]
|
|
213
217
|
};
|
|
214
218
|
}
|
|
215
219
|
static get properties() {
|
|
@@ -442,7 +446,7 @@ export class ActionSheet {
|
|
|
442
446
|
"optional": false,
|
|
443
447
|
"docs": {
|
|
444
448
|
"tags": [],
|
|
445
|
-
"text": "If `true`, the action sheet will be translucent.\nOnly applies when the
|
|
449
|
+
"text": "If `true`, the action sheet will be translucent.\nOnly applies when the theme is `\"ios\"` and the device supports\n[`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility)."
|
|
446
450
|
},
|
|
447
451
|
"attribute": "translucent",
|
|
448
452
|
"reflect": false,
|
|
@@ -26,7 +26,7 @@ const testAriaButton = async (page, buttonID, expectedAriaLabelledBy, expectedAr
|
|
|
26
26
|
await expect(actionSheetButton).toHaveAttribute('aria-labelledby', expectedAriaLabelledBy);
|
|
27
27
|
await expect(actionSheetButton).toHaveAttribute('aria-label', expectedAriaLabel);
|
|
28
28
|
};
|
|
29
|
-
configs({ directions: ['ltr'],
|
|
29
|
+
configs({ directions: ['ltr'], palettes: ['dark', 'light'] }).forEach(({ config, title }) => {
|
|
30
30
|
test.describe(title('action-sheet: Axe testing'), () => {
|
|
31
31
|
test('should not have accessibility violations when header is defined', async ({ page }) => {
|
|
32
32
|
await page.setContent(`
|
|
@@ -10,14 +10,15 @@ import { createDelegateController, createTriggerController, BACKDROP, dismiss, e
|
|
|
10
10
|
import { sanitizeDOMString } from "../../utils/sanitization/index";
|
|
11
11
|
import { getClassMap } from "../../utils/theme";
|
|
12
12
|
import { config } from "../../global/config";
|
|
13
|
-
import { getIonMode } from "../../global/ionic-global";
|
|
13
|
+
import { getIonMode, getIonTheme } from "../../global/ionic-global";
|
|
14
14
|
import { iosEnterAnimation } from "./animations/ios.enter";
|
|
15
15
|
import { iosLeaveAnimation } from "./animations/ios.leave";
|
|
16
16
|
import { mdEnterAnimation } from "./animations/md.enter";
|
|
17
17
|
import { mdLeaveAnimation } from "./animations/md.leave";
|
|
18
18
|
// TODO(FW-2832): types
|
|
19
19
|
/**
|
|
20
|
-
* @virtualProp {"ios" | "md"} mode - The mode determines
|
|
20
|
+
* @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
|
|
21
|
+
* @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
|
|
21
22
|
*/
|
|
22
23
|
export class Alert {
|
|
23
24
|
constructor() {
|
|
@@ -323,11 +324,11 @@ export class Alert {
|
|
|
323
324
|
}
|
|
324
325
|
renderCheckbox() {
|
|
325
326
|
const inputs = this.processedInputs;
|
|
326
|
-
const
|
|
327
|
+
const theme = getIonTheme(this);
|
|
327
328
|
if (inputs.length === 0) {
|
|
328
329
|
return null;
|
|
329
330
|
}
|
|
330
|
-
return (h("div", { class: "alert-checkbox-group" }, inputs.map((i) => (h("button", { type: "button", onClick: () => this.cbClick(i), "aria-checked": `${i.checked}`, id: i.id, disabled: i.disabled, tabIndex: i.tabindex, role: "checkbox", class: Object.assign(Object.assign({}, getClassMap(i.cssClass)), { 'alert-tappable': true, 'alert-checkbox': true, 'alert-checkbox-button': true, 'ion-focusable': true, 'alert-checkbox-button-disabled': i.disabled || false }) }, h("div", { class: "alert-button-inner" }, h("div", { class: "alert-checkbox-icon" }, h("div", { class: "alert-checkbox-inner" })), h("div", { class: "alert-checkbox-label" }, i.label)),
|
|
331
|
+
return (h("div", { class: "alert-checkbox-group" }, inputs.map((i) => (h("button", { type: "button", onClick: () => this.cbClick(i), "aria-checked": `${i.checked}`, id: i.id, disabled: i.disabled, tabIndex: i.tabindex, role: "checkbox", class: Object.assign(Object.assign({}, getClassMap(i.cssClass)), { 'alert-tappable': true, 'alert-checkbox': true, 'alert-checkbox-button': true, 'ion-focusable': true, 'alert-checkbox-button-disabled': i.disabled || false }) }, h("div", { class: "alert-button-inner" }, h("div", { class: "alert-checkbox-icon" }, h("div", { class: "alert-checkbox-inner" })), h("div", { class: "alert-checkbox-label" }, i.label)), theme === 'md' && h("ion-ripple-effect", null))))));
|
|
331
332
|
}
|
|
332
333
|
renderRadio() {
|
|
333
334
|
const inputs = this.processedInputs;
|
|
@@ -365,12 +366,12 @@ export class Alert {
|
|
|
365
366
|
}
|
|
366
367
|
renderAlertButtons() {
|
|
367
368
|
const buttons = this.processedButtons;
|
|
368
|
-
const
|
|
369
|
+
const theme = getIonTheme(this);
|
|
369
370
|
const alertButtonGroupClass = {
|
|
370
371
|
'alert-button-group': true,
|
|
371
372
|
'alert-button-group-vertical': buttons.length > 2,
|
|
372
373
|
};
|
|
373
|
-
return (h("div", { class: alertButtonGroupClass }, buttons.map((button) => (h("button", Object.assign({}, button.htmlAttributes, { type: "button", id: button.id, class: buttonClass(button), tabIndex: 0, onClick: () => this.buttonClick(button) }), h("span", { class: "alert-button-inner" }, button.text),
|
|
374
|
+
return (h("div", { class: alertButtonGroupClass }, buttons.map((button) => (h("button", Object.assign({}, button.htmlAttributes, { type: "button", id: button.id, class: buttonClass(button), tabIndex: 0, onClick: () => this.buttonClick(button) }), h("span", { class: "alert-button-inner" }, button.text), theme === 'md' && h("ion-ripple-effect", null))))));
|
|
374
375
|
}
|
|
375
376
|
renderAlertMessage(msgId) {
|
|
376
377
|
const { customHTMLEnabled, message } = this;
|
|
@@ -381,7 +382,7 @@ export class Alert {
|
|
|
381
382
|
}
|
|
382
383
|
render() {
|
|
383
384
|
const { overlayIndex, header, subHeader, message, htmlAttributes } = this;
|
|
384
|
-
const
|
|
385
|
+
const theme = getIonTheme(this);
|
|
385
386
|
const hdrId = `alert-${overlayIndex}-hdr`;
|
|
386
387
|
const subHdrId = `alert-${overlayIndex}-sub-hdr`;
|
|
387
388
|
const msgId = `alert-${overlayIndex}-msg`;
|
|
@@ -391,22 +392,24 @@ export class Alert {
|
|
|
391
392
|
* If neither is defined, don't set aria-labelledby.
|
|
392
393
|
*/
|
|
393
394
|
const ariaLabelledBy = header ? hdrId : subHeader ? subHdrId : null;
|
|
394
|
-
return (h(Host, Object.assign({ key: '
|
|
395
|
+
return (h(Host, Object.assign({ key: '4347164bd4d9d562730d703ef722f9c242dbfbac', role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "-1" }, htmlAttributes, { style: {
|
|
395
396
|
zIndex: `${20000 + overlayIndex}`,
|
|
396
|
-
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [
|
|
397
|
+
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [theme]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), h("ion-backdrop", { key: '700d37f6dfcb9f074a16d9eda932f240346a3309', tappable: this.backdropDismiss }), h("div", { key: '6be1a0c688d1f370b33c3cb15ac7cd595ab3173c', tabindex: "0" }), h("div", { key: '2cf6f440c7aa939042316b41e346b434265cd17b', class: "alert-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, h("div", { key: '6a5841d0e591eba94ee1fd43fef042186c755da7', class: "alert-head" }, header && (h("h2", { id: hdrId, class: "alert-title" }, header)), subHeader && (h("h2", { id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), h("div", { key: '692af01401fd3613c798ab85c53e1899f801aeec', tabindex: "0" })));
|
|
397
398
|
}
|
|
398
399
|
static get is() { return "ion-alert"; }
|
|
399
400
|
static get encapsulation() { return "scoped"; }
|
|
400
401
|
static get originalStyleUrls() {
|
|
401
402
|
return {
|
|
402
403
|
"ios": ["alert.ios.scss"],
|
|
403
|
-
"md": ["alert.md.scss"]
|
|
404
|
+
"md": ["alert.md.scss"],
|
|
405
|
+
"ionic": ["alert.md.scss"]
|
|
404
406
|
};
|
|
405
407
|
}
|
|
406
408
|
static get styleUrls() {
|
|
407
409
|
return {
|
|
408
410
|
"ios": ["alert.ios.css"],
|
|
409
|
-
"md": ["alert.md.css"]
|
|
411
|
+
"md": ["alert.md.css"],
|
|
412
|
+
"ionic": ["alert.md.css"]
|
|
410
413
|
};
|
|
411
414
|
}
|
|
412
415
|
static get properties() {
|
|
@@ -684,7 +687,7 @@ export class Alert {
|
|
|
684
687
|
"optional": false,
|
|
685
688
|
"docs": {
|
|
686
689
|
"tags": [],
|
|
687
|
-
"text": "If `true`, the alert will be translucent.\nOnly applies when the
|
|
690
|
+
"text": "If `true`, the alert will be translucent.\nOnly applies when the theme is `\"ios\"` and the device supports\n[`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility)."
|
|
688
691
|
},
|
|
689
692
|
"attribute": "translucent",
|
|
690
693
|
"reflect": false,
|
|
@@ -19,7 +19,7 @@ const testAria = async (page, buttonID, expectedAriaLabelledBy, expectedAriaDesc
|
|
|
19
19
|
expect(ariaLabelledBy).toBe(expectedAriaLabelledBy);
|
|
20
20
|
expect(ariaDescribedBy).toBe(expectedAriaDescribedBy);
|
|
21
21
|
};
|
|
22
|
-
configs({ directions: ['ltr'],
|
|
22
|
+
configs({ directions: ['ltr'], palettes: ['dark', 'light'] }).forEach(({ title, config }) => {
|
|
23
23
|
test.describe(title('alert: Axe testing'), () => {
|
|
24
24
|
test('should not have accessibility violations when header and message are defined', async ({ page }) => {
|
|
25
25
|
await page.setContent(`
|
|
@@ -235,6 +235,10 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
235
235
|
const ionAlertDidPresent = await page.spyOnEvent('ionAlertDidPresent');
|
|
236
236
|
await alert.evaluate((el) => el.present());
|
|
237
237
|
await ionAlertDidPresent.next();
|
|
238
|
+
/**
|
|
239
|
+
* The borders on the text fields may not be visible in the screenshot
|
|
240
|
+
* when using Safari, this is due to a WebKit rendering quirk.
|
|
241
|
+
*/
|
|
238
242
|
await expect(page).toHaveScreenshot(screenshot(`alert-text-fields-scale`));
|
|
239
243
|
});
|
|
240
244
|
});
|