@ionic/core 8.0.0-dev.11709632212.139b6f63 → 8.0.0-dev.11711035263.183d2423
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 +3 -3
- package/components/alert.js +2 -2
- package/components/animation.js +9 -250
- package/components/backdrop.js +1 -1
- package/components/button.js +2 -2
- package/components/buttons.js +3 -3
- package/components/checkbox.js +3 -3
- package/components/data.js +23 -38
- package/components/haptic.js +6 -54
- package/components/hardware-back-button.js +3 -3
- package/components/helpers.js +1 -54
- package/components/index7.js +3 -1
- package/components/index9.js +1 -1
- package/components/input.utils.js +12 -0
- package/components/ion-app.js +4 -4
- package/components/ion-avatar.js +1 -1
- package/components/ion-back-button.js +2 -2
- package/components/ion-badge.js +2 -2
- package/components/ion-breadcrumb.js +2 -2
- package/components/ion-breadcrumbs.js +2 -2
- package/components/ion-card-content.js +1 -1
- package/components/ion-card-header.js +2 -2
- package/components/ion-card-subtitle.js +2 -2
- package/components/ion-card-title.js +2 -2
- package/components/ion-card.js +1 -1
- package/components/ion-chip.js +2 -2
- package/components/ion-col.js +2 -2
- package/components/ion-content.js +3 -3
- package/components/ion-datetime-button.js +11 -10
- package/components/ion-datetime.js +75 -12
- package/components/ion-fab-button.js +2 -2
- package/components/ion-fab-list.js +2 -2
- package/components/ion-fab.js +2 -2
- package/components/ion-footer.js +2 -2
- package/components/ion-grid.js +2 -2
- package/components/ion-header.js +3 -3
- package/components/ion-img.js +1 -1
- package/components/ion-infinite-scroll-content.js +2 -2
- package/components/ion-infinite-scroll.js +1 -1
- package/components/ion-input-password-toggle.d.ts +11 -0
- package/components/ion-input-password-toggle.js +132 -0
- package/components/ion-input.js +28 -9
- package/components/ion-loading.js +2 -2
- package/components/ion-menu-button.js +3 -3
- package/components/ion-menu-toggle.js +2 -2
- package/components/ion-menu.js +7 -28
- package/components/ion-modal.js +37 -5
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +1 -1
- package/components/ion-note.js +43 -1
- package/components/ion-picker-legacy.js +2 -2
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-range.js +137 -45
- package/components/ion-refresher-content.js +2 -2
- package/components/ion-refresher.js +1 -1
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +2 -2
- package/components/ion-router-link.js +2 -2
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-router.js +1 -1
- package/components/ion-row.js +1 -1
- package/components/ion-searchbar.js +35 -6
- package/components/ion-segment-button.js +3 -3
- package/components/ion-segment.js +2 -2
- package/components/ion-select-option.js +1 -1
- package/components/ion-select.js +28 -34
- package/components/ion-skeleton-text.js +2 -2
- package/components/ion-split-pane.js +2 -2
- package/components/ion-tab-bar.js +2 -2
- package/components/ion-tab-button.js +2 -2
- package/components/ion-tab.js +2 -2
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +2 -2
- package/components/ion-textarea.js +5 -6
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-title.js +2 -2
- package/components/ion-toast.js +2 -2
- package/components/ion-toggle.js +4 -4
- package/components/ion-toolbar.js +2 -2
- package/components/item.js +30 -97
- package/components/label.js +4 -4
- package/components/list-header.js +2 -2
- package/components/overlays.js +140 -55
- package/components/picker-column-option.js +2 -2
- package/components/picker-column.js +25 -6
- package/components/picker-column2.js +2 -2
- package/components/picker.js +2 -2
- package/components/popover.js +4 -4
- package/components/ripple-effect.js +1 -1
- package/components/select-popover.js +13 -19
- package/components/spinner.js +1 -1
- 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-e132c781.js} +1 -1
- package/dist/cjs/{button-active-8f6a8e77.js → button-active-e2ed5329.js} +2 -2
- package/dist/cjs/{data-e2bf21de.js → data-21dc0f81.js} +22 -39
- package/dist/cjs/{framework-delegate-53817ef1.js → framework-delegate-df3a2b04.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-1c67a5a2.js} +5 -5
- package/dist/cjs/{helpers-b71ca811.js → helpers-71097d9c.js} +0 -54
- package/dist/cjs/{index-f52c6d38.js → index-073c7cdc.js} +4 -0
- package/dist/cjs/{index-0ffe376d.js → index-2d21d526.js} +443 -14
- package/dist/cjs/{index-347883f6.js → index-7479ea5a.js} +1 -1
- package/dist/cjs/{index-7574e3d2.js → index-a91a3e24.js} +1 -1
- package/dist/cjs/{index-16fc2c94.js → index-c2191aa0.js} +4 -4
- package/dist/cjs/{index-88b3bd6f.js → index-ef9261f8.js} +4 -4
- package/dist/cjs/index.cjs.js +11 -11
- package/dist/cjs/{input-shims-679d87bc.js → input-shims-77b14f24.js} +2 -2
- package/dist/cjs/{input.utils-5175aea1.js → input.utils-ca74d73a.js} +13 -1
- package/dist/cjs/ion-accordion_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-action-sheet.cjs.entry.js +12 -12
- package/dist/cjs/ion-alert.cjs.entry.js +11 -11
- package/dist/cjs/ion-app_8.cjs.entry.js +30 -30
- package/dist/cjs/ion-avatar_3.cjs.entry.js +6 -6
- package/dist/cjs/ion-back-button.cjs.entry.js +6 -6
- package/dist/cjs/ion-backdrop.cjs.entry.js +3 -3
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +8 -8
- package/dist/cjs/ion-button_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-card_5.cjs.entry.js +11 -11
- package/dist/cjs/ion-checkbox.cjs.entry.js +6 -6
- package/dist/cjs/ion-chip.cjs.entry.js +4 -4
- package/dist/cjs/ion-col_3.cjs.entry.js +7 -7
- package/dist/cjs/ion-datetime-button.cjs.entry.js +14 -13
- package/dist/cjs/ion-datetime_3.cjs.entry.js +85 -25
- package/dist/cjs/ion-fab_3.cjs.entry.js +10 -10
- package/dist/cjs/ion-img.cjs.entry.js +4 -4
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +7 -7
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +93 -0
- package/dist/cjs/ion-input.cjs.entry.js +30 -12
- package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-item_8.cjs.entry.js +37 -92
- package/dist/cjs/ion-loading.cjs.entry.js +9 -9
- package/dist/cjs/ion-menu_3.cjs.entry.js +18 -39
- package/dist/cjs/ion-modal.cjs.entry.js +46 -14
- package/dist/cjs/ion-nav_2.cjs.entry.js +8 -8
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +5 -5
- package/dist/cjs/ion-picker-column.cjs.entry.js +29 -10
- package/dist/cjs/ion-picker.cjs.entry.js +4 -4
- package/dist/cjs/ion-popover.cjs.entry.js +11 -11
- package/dist/cjs/ion-progress-bar.cjs.entry.js +4 -4
- package/dist/cjs/ion-radio_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-range.cjs.entry.js +140 -48
- package/dist/cjs/ion-refresher_2.cjs.entry.js +9 -9
- package/dist/cjs/ion-reorder_2.cjs.entry.js +8 -8
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +3 -3
- package/dist/cjs/ion-route_4.cjs.entry.js +5 -5
- package/dist/cjs/ion-searchbar.cjs.entry.js +32 -8
- package/dist/cjs/ion-segment_2.cjs.entry.js +8 -8
- package/dist/cjs/ion-select_3.cjs.entry.js +18 -18
- package/dist/cjs/ion-spinner.cjs.entry.js +3 -3
- package/dist/cjs/ion-split-pane.cjs.entry.js +4 -4
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +7 -7
- package/dist/cjs/ion-tab_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-text.cjs.entry.js +4 -4
- package/dist/cjs/ion-textarea.cjs.entry.js +9 -10
- package/dist/cjs/ion-toast.cjs.entry.js +9 -9
- package/dist/cjs/ion-toggle.cjs.entry.js +8 -8
- package/dist/cjs/{ionic-global-59a10130.js → ionic-global-5762eca9.js} +1 -1
- package/dist/cjs/ionic.cjs.js +28 -5
- package/dist/cjs/{ios.transition-b102ee38.js → ios.transition-2bb1c4d1.js} +4 -4
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-a5454240.js → md.transition-c0afd670.js} +4 -4
- package/dist/cjs/{notch-controller-8e0ae870.js → notch-controller-0042ad49.js} +1 -1
- package/dist/cjs/{overlays-6b7d156b.js → overlays-30b83581.js} +142 -56
- package/dist/cjs/{status-tap-b60dcbd8.js → status-tap-dc3b8fda.js} +3 -3
- package/dist/cjs/{swipe-back-72c5c8b7.js → swipe-back-29e88360.js} +1 -1
- package/dist/collection/collection-manifest.json +2 -1
- package/dist/collection/components/action-sheet/action-sheet.js +3 -3
- package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +1 -1
- package/dist/collection/components/alert/alert.js +2 -2
- 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 +4 -4
- package/dist/collection/components/avatar/avatar.js +1 -1
- package/dist/collection/components/back-button/back-button.js +2 -2
- package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +1 -1
- package/dist/collection/components/backdrop/backdrop.js +1 -1
- package/dist/collection/components/badge/badge.js +2 -2
- package/dist/collection/components/badge/test/a11y/badge.e2e.js +1 -1
- package/dist/collection/components/breadcrumb/breadcrumb.js +2 -2
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +2 -2
- package/dist/collection/components/button/button.js +2 -2
- package/dist/collection/components/button/test/a11y/button.e2e.js +2 -2
- package/dist/collection/components/buttons/buttons.js +2 -2
- package/dist/collection/components/card/card.js +1 -1
- package/dist/collection/components/card-content/card-content.js +1 -1
- package/dist/collection/components/card-header/card-header.js +2 -2
- package/dist/collection/components/card-subtitle/card-subtitle.js +2 -2
- package/dist/collection/components/card-title/card-title.js +2 -2
- package/dist/collection/components/checkbox/checkbox.js +3 -3
- 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 +2 -2
- package/dist/collection/components/col/col.js +2 -2
- package/dist/collection/components/content/content.js +3 -3
- package/dist/collection/components/datetime/datetime.js +56 -12
- 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/format.js +24 -37
- package/dist/collection/components/datetime/utils/validate.js +45 -0
- package/dist/collection/components/datetime-button/datetime-button.js +11 -10
- package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +65 -0
- package/dist/collection/components/fab/fab.js +2 -2
- package/dist/collection/components/fab-button/fab-button.js +2 -2
- package/dist/collection/components/fab-button/test/a11y/fab-button.e2e.js +1 -1
- package/dist/collection/components/fab-list/fab-list.js +2 -2
- package/dist/collection/components/footer/footer.js +2 -2
- package/dist/collection/components/grid/grid.js +2 -2
- package/dist/collection/components/header/header.ios.css +5 -2
- package/dist/collection/components/header/header.js +2 -2
- package/dist/collection/components/header/test/basic/header.e2e.js +77 -0
- package/dist/collection/components/img/img.js +1 -1
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
- package/dist/collection/components/input/input.ios.css +15 -3
- package/dist/collection/components/input/input.js +26 -29
- package/dist/collection/components/input/input.md.css +17 -5
- 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/input-password-toggle/input-password-toggle.ios.css +0 -0
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +183 -0
- package/dist/collection/components/input-password-toggle/input-password-toggle.md.css +0 -0
- package/dist/collection/components/input-password-toggle/test/a11y/input-password-toggle.e2e.js +21 -0
- package/dist/collection/components/input-password-toggle/test/basic/input-password-toggle.e2e.js +38 -0
- package/dist/collection/components/input-password-toggle/test/input-password-toggle.spec.js +76 -0
- package/dist/collection/components/item/item.ios.css +6 -198
- package/dist/collection/components/item/item.js +22 -170
- 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-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 +1 -1
- 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-header/list-header.js +2 -2
- package/dist/collection/components/loading/loading.js +2 -2
- package/dist/collection/components/loading/test/a11y/loading.e2e.js +1 -1
- package/dist/collection/components/menu/menu.js +16 -30
- package/dist/collection/components/menu-button/menu-button.js +2 -2
- package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +1 -1
- package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
- package/dist/collection/components/modal/modal.js +37 -5
- package/dist/collection/components/modal/test/modal-attributes.spec.js +32 -0
- package/dist/collection/components/nav/nav.js +1 -1
- package/dist/collection/components/nav-link/nav-link.js +1 -1
- package/dist/collection/components/note/note.js +2 -2
- package/dist/collection/components/picker/picker.js +2 -2
- package/dist/collection/components/picker-column/picker-column.js +25 -6
- package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
- package/dist/collection/components/picker-legacy/picker.js +2 -2
- package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
- package/dist/collection/components/popover/popover.js +5 -4
- package/dist/collection/components/progress-bar/progress-bar.js +1 -1
- package/dist/collection/components/progress-bar/test/a11y/progress-bar.e2e.js +1 -1
- package/dist/collection/components/radio/test/a11y/radio.e2e.js +1 -1
- package/dist/collection/components/range/range.js +137 -45
- 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 +1 -1
- package/dist/collection/components/refresher/test/a11y/refresher.e2e.js +1 -1
- package/dist/collection/components/refresher-content/refresher-content.js +1 -1
- package/dist/collection/components/reorder/reorder.js +1 -1
- package/dist/collection/components/reorder-group/reorder-group.js +1 -1
- package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
- package/dist/collection/components/router-link/router-link.js +2 -2
- package/dist/collection/components/router-link/test/a11y/router-link.e2e.js +1 -1
- package/dist/collection/components/router-outlet/router-outlet.js +1 -1
- package/dist/collection/components/row/row.js +1 -1
- package/dist/collection/components/searchbar/searchbar.js +84 -5
- package/dist/collection/components/searchbar/test/searchbar.spec.js +20 -2
- package/dist/collection/components/segment/segment.js +2 -2
- package/dist/collection/components/segment/test/a11y/segment.e2e.js +1 -1
- package/dist/collection/components/segment-button/segment-button.js +3 -3
- package/dist/collection/components/select/select.ios.css +7 -2
- package/dist/collection/components/select/select.js +7 -7
- 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 +1 -1
- package/dist/collection/components/select-popover/select-popover.js +1 -1
- package/dist/collection/components/select-popover/test/a11y/select-popover.e2e.js +1 -1
- package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
- package/dist/collection/components/spinner/spinner.js +1 -1
- package/dist/collection/components/split-pane/split-pane.js +2 -2
- package/dist/collection/components/tab/tab.js +2 -2
- package/dist/collection/components/tab-bar/tab-bar.js +2 -2
- package/dist/collection/components/tab-button/tab-button.js +2 -2
- package/dist/collection/components/tabs/tabs.js +1 -1
- package/dist/collection/components/text/text.js +2 -2
- 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 +2 -26
- package/dist/collection/components/textarea/textarea.md.css +6 -17
- package/dist/collection/components/thumbnail/thumbnail.js +1 -1
- package/dist/collection/components/title/title.js +2 -2
- package/dist/collection/components/toast/test/a11y/toast.e2e.js +2 -2
- package/dist/collection/components/toast/toast.js +2 -2
- package/dist/collection/components/toggle/test/a11y/toggle.e2e.js +1 -1
- package/dist/collection/components/toggle/toggle.js +4 -4
- package/dist/collection/components/toolbar/toolbar.js +2 -2
- package/dist/collection/css/test/a11y/typography.e2e.js +1 -1
- 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/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/test/overlays/overlays.spec.js +53 -0
- package/dist/collection/utils/test/playwright/generator.js +17 -17
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +6 -6
- package/dist/docs.json +341 -193
- package/dist/esm/{animation-a4acf150.js → animation-eab5a4ca.js} +9 -250
- package/dist/esm/{app-globals-5cf6195b.js → app-globals-80842d68.js} +1 -1
- package/dist/esm/{button-active-4407b98c.js → button-active-824983fa.js} +2 -2
- package/dist/esm/{data-691286f1.js → data-ae11fd43.js} +23 -38
- package/dist/esm/{framework-delegate-1eb3236c.js → framework-delegate-3dede018.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-fb295e3a.js} +5 -5
- package/dist/esm/{helpers-ae74b3c9.js → helpers-eab4f597.js} +1 -54
- package/dist/esm/{index-8758824c.js → index-0089f1fa.js} +4 -4
- package/dist/esm/{index-66871a1d.js → index-044b5a86.js} +1 -1
- package/dist/esm/{index-4c30cddd.js → index-5d6a0317.js} +443 -15
- package/dist/esm/{index-f7dc70ba.js → index-e2cf2ceb.js} +3 -1
- package/dist/esm/{index-1eff8599.js → index-f27077ac.js} +4 -4
- package/dist/esm/{index-1f563746.js → index-fa221975.js} +1 -1
- package/dist/esm/index.js +11 -11
- package/dist/esm/{input-shims-56c1f603.js → input-shims-196afa11.js} +2 -2
- package/dist/esm/{input.utils-482fc893.js → input.utils-426cc674.js} +13 -1
- package/dist/esm/ion-accordion_2.entry.js +4 -4
- package/dist/esm/ion-action-sheet.entry.js +12 -12
- package/dist/esm/ion-alert.entry.js +11 -11
- package/dist/esm/ion-app_8.entry.js +30 -30
- package/dist/esm/ion-avatar_3.entry.js +6 -6
- package/dist/esm/ion-back-button.entry.js +6 -6
- package/dist/esm/ion-backdrop.entry.js +3 -3
- package/dist/esm/ion-breadcrumb_2.entry.js +8 -8
- package/dist/esm/ion-button_2.entry.js +5 -5
- package/dist/esm/ion-card_5.entry.js +11 -11
- package/dist/esm/ion-checkbox.entry.js +6 -6
- package/dist/esm/ion-chip.entry.js +4 -4
- package/dist/esm/ion-col_3.entry.js +7 -7
- package/dist/esm/ion-datetime-button.entry.js +14 -13
- package/dist/esm/ion-datetime_3.entry.js +85 -25
- package/dist/esm/ion-fab_3.entry.js +10 -10
- package/dist/esm/ion-img.entry.js +4 -4
- package/dist/esm/ion-infinite-scroll_2.entry.js +7 -7
- package/dist/esm/ion-input-password-toggle.entry.js +89 -0
- package/dist/esm/ion-input.entry.js +30 -12
- package/dist/esm/ion-item-option_3.entry.js +4 -4
- package/dist/esm/ion-item_8.entry.js +37 -92
- package/dist/esm/ion-loading.entry.js +9 -9
- package/dist/esm/ion-menu_3.entry.js +18 -39
- package/dist/esm/ion-modal.entry.js +46 -14
- package/dist/esm/ion-nav_2.entry.js +8 -8
- package/dist/esm/ion-picker-column-option.entry.js +5 -5
- package/dist/esm/ion-picker-column.entry.js +29 -10
- package/dist/esm/ion-picker.entry.js +4 -4
- package/dist/esm/ion-popover.entry.js +11 -11
- package/dist/esm/ion-progress-bar.entry.js +4 -4
- package/dist/esm/ion-radio_2.entry.js +3 -3
- package/dist/esm/ion-range.entry.js +140 -48
- package/dist/esm/ion-refresher_2.entry.js +9 -9
- package/dist/esm/ion-reorder_2.entry.js +8 -8
- package/dist/esm/ion-ripple-effect.entry.js +3 -3
- package/dist/esm/ion-route_4.entry.js +5 -5
- package/dist/esm/ion-searchbar.entry.js +32 -8
- package/dist/esm/ion-segment_2.entry.js +8 -8
- package/dist/esm/ion-select_3.entry.js +18 -18
- package/dist/esm/ion-spinner.entry.js +3 -3
- package/dist/esm/ion-split-pane.entry.js +4 -4
- package/dist/esm/ion-tab-bar_2.entry.js +7 -7
- package/dist/esm/ion-tab_2.entry.js +6 -6
- package/dist/esm/ion-text.entry.js +4 -4
- package/dist/esm/ion-textarea.entry.js +9 -10
- package/dist/esm/ion-toast.entry.js +9 -9
- package/dist/esm/ion-toggle.entry.js +8 -8
- package/dist/esm/{ionic-global-ad9a1810.js → ionic-global-a589c12c.js} +1 -1
- package/dist/esm/ionic.js +29 -6
- package/dist/esm/{ios.transition-189b73b7.js → ios.transition-632deb95.js} +4 -4
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-c9761eef.js → md.transition-3bcf4011.js} +4 -4
- package/dist/esm/{notch-controller-18bf9f76.js → notch-controller-cff691e5.js} +1 -1
- package/dist/esm/{overlays-c69d2a07.js → overlays-d41f74ac.js} +142 -57
- package/dist/esm/{status-tap-1d638ee6.js → status-tap-45595148.js} +3 -3
- package/dist/esm/{swipe-back-348f1971.js → swipe-back-57844616.js} +1 -1
- package/dist/esm-es5/animation-eab5a4ca.js +4 -0
- package/dist/esm-es5/app-globals-80842d68.js +4 -0
- package/dist/esm-es5/{button-active-4407b98c.js → button-active-824983fa.js} +1 -1
- package/dist/esm-es5/data-ae11fd43.js +4 -0
- package/dist/esm-es5/{framework-delegate-1eb3236c.js → framework-delegate-3dede018.js} +1 -1
- package/dist/esm-es5/haptic-ac164e4c.js +4 -0
- package/dist/esm-es5/hardware-back-button-fb295e3a.js +4 -0
- package/dist/esm-es5/helpers-eab4f597.js +4 -0
- package/dist/esm-es5/{index-8758824c.js → index-0089f1fa.js} +1 -1
- package/dist/esm-es5/{index-66871a1d.js → index-044b5a86.js} +1 -1
- package/dist/esm-es5/index-5d6a0317.js +5 -0
- package/dist/esm-es5/{index-f7dc70ba.js → index-e2cf2ceb.js} +1 -1
- package/dist/esm-es5/{index-1eff8599.js → index-f27077ac.js} +1 -1
- package/dist/esm-es5/{index-1f563746.js → index-fa221975.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/{input-shims-56c1f603.js → input-shims-196afa11.js} +1 -1
- package/dist/esm-es5/input.utils-426cc674.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-password-toggle.entry.js +4 -0
- 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-ad9a1810.js → ionic-global-a589c12c.js} +1 -1
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/{ios.transition-189b73b7.js → ios.transition-632deb95.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/md.transition-3bcf4011.js +4 -0
- package/dist/esm-es5/{notch-controller-18bf9f76.js → notch-controller-cff691e5.js} +1 -1
- package/dist/esm-es5/overlays-d41f74ac.js +4 -0
- package/dist/esm-es5/{status-tap-1d638ee6.js → status-tap-45595148.js} +1 -1
- package/dist/esm-es5/{swipe-back-348f1971.js → swipe-back-57844616.js} +1 -1
- package/dist/html.html-data.json +93 -27
- 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-5d7e32ce.js → p-031c5621.js} +1 -1
- package/dist/ionic/{p-1a4db355.system.entry.js → p-04bdc816.system.entry.js} +2 -2
- package/dist/ionic/p-07759435.system.js +4 -0
- package/dist/ionic/{p-4bbc949f.system.entry.js → p-07927036.system.entry.js} +1 -1
- package/dist/ionic/p-0e4c9e45.system.js +4 -0
- package/dist/ionic/{p-3c51cf97.system.entry.js → p-103ec049.system.entry.js} +1 -1
- package/dist/ionic/{p-f7d802e1.entry.js → p-126207f8.entry.js} +1 -1
- package/dist/ionic/{p-4dfe0487.system.entry.js → p-1d3f79b2.system.entry.js} +1 -1
- package/dist/ionic/{p-6e14d3ca.system.entry.js → p-1d528988.system.entry.js} +1 -1
- package/dist/ionic/p-1e955a45.system.js +4 -0
- package/dist/ionic/p-20bf9f84.entry.js +4 -0
- package/dist/ionic/{p-6dbea874.system.entry.js → p-210248f5.system.entry.js} +1 -1
- package/dist/ionic/{p-3d77b300.system.entry.js → p-219c17cf.system.entry.js} +1 -1
- package/dist/ionic/{p-de0a7606.system.entry.js → p-23838a94.system.entry.js} +1 -1
- package/dist/ionic/{p-ceceac26.js → p-239906f1.js} +1 -1
- package/dist/ionic/{p-916a4e14.entry.js → p-2807660b.entry.js} +1 -1
- package/dist/ionic/{p-0612cdcc.system.entry.js → p-282bd5f9.system.entry.js} +1 -1
- package/dist/ionic/p-29ef3b9b.entry.js +4 -0
- package/dist/ionic/{p-8a50f8d6.system.js → p-2cc2c631.system.js} +1 -1
- package/dist/ionic/p-2d34b04a.system.entry.js +4 -0
- package/dist/ionic/p-2f53c3eb.js +4 -0
- package/dist/ionic/{p-174856b4.system.js → p-31794e40.system.js} +1 -1
- package/dist/ionic/{p-c880c809.js → p-325c61a4.js} +1 -1
- package/dist/ionic/p-34b8c5bc.entry.js +4 -0
- package/dist/ionic/{p-cefbb7b7.entry.js → p-3599e243.entry.js} +1 -1
- package/dist/ionic/p-364044f0.js +4 -0
- package/dist/ionic/{p-3807cd45.system.entry.js → p-3739de23.system.entry.js} +1 -1
- package/dist/ionic/{p-d84c9fc4.entry.js → p-3785c067.entry.js} +1 -1
- package/dist/ionic/p-3895e131.system.entry.js +4 -0
- package/dist/ionic/p-38b129b6.entry.js +4 -0
- package/dist/ionic/p-38e25e67.js +4 -0
- package/dist/ionic/{p-3209217f.entry.js → p-3ad1b1c5.entry.js} +1 -1
- package/dist/ionic/p-3bf7a38d.system.entry.js +4 -0
- package/dist/ionic/{p-2dcf2ec2.system.entry.js → p-3c1aac30.system.entry.js} +1 -1
- package/dist/ionic/{p-d7c78a97.system.entry.js → p-3d55c50f.system.entry.js} +1 -1
- package/dist/ionic/{p-fd783a38.system.entry.js → p-3e6e53fe.system.entry.js} +1 -1
- package/dist/ionic/{p-174b0d50.system.entry.js → p-40976b1c.system.entry.js} +1 -1
- package/dist/ionic/{p-acf70e64.system.entry.js → p-456ae20a.system.entry.js} +1 -1
- package/dist/ionic/p-468e20c0.system.entry.js +4 -0
- package/dist/ionic/p-49e5401f.entry.js +4 -0
- package/dist/ionic/{p-c9e21694.system.entry.js → p-4a20a758.system.entry.js} +1 -1
- package/dist/ionic/p-4a3055ef.system.js +4 -0
- package/dist/ionic/{p-e46adaf1.system.entry.js → p-4b318f5e.system.entry.js} +1 -1
- package/dist/ionic/{p-b2d58604.system.entry.js → p-4d21e85e.system.entry.js} +2 -2
- package/dist/ionic/p-4decdc16.system.entry.js +4 -0
- package/dist/ionic/{p-ef9736b9.entry.js → p-50633cad.entry.js} +1 -1
- package/dist/ionic/{p-1f79e54a.entry.js → p-527e1d8a.entry.js} +1 -1
- package/dist/ionic/{p-6aeb0272.entry.js → p-5644df37.entry.js} +1 -1
- package/dist/ionic/p-564554d0.system.js +4 -0
- package/dist/ionic/{p-16e06393.system.js → p-56864c25.system.js} +1 -1
- package/dist/ionic/{p-f7c3d736.system.entry.js → p-57a3b59e.system.entry.js} +1 -1
- package/dist/ionic/{p-8fe3c4ef.entry.js → p-5b4b977f.entry.js} +1 -1
- package/dist/ionic/p-5b52897c.js +4 -0
- package/dist/ionic/{p-415ccddd.entry.js → p-5c6d4276.entry.js} +1 -1
- package/dist/ionic/{p-9f84474d.entry.js → p-5f6c0372.entry.js} +1 -1
- package/dist/ionic/{p-97248203.system.entry.js → p-647981a4.system.entry.js} +1 -1
- package/dist/ionic/{p-f0a7e80b.js → p-652a7913.js} +1 -1
- package/dist/ionic/p-659d8f84.entry.js +4 -0
- package/dist/ionic/p-668607c2.system.js +4 -0
- package/dist/ionic/{p-5d530ae5.entry.js → p-66e50777.entry.js} +1 -1
- package/dist/ionic/{p-eb9803e9.system.js → p-6a62da36.system.js} +1 -1
- package/dist/ionic/p-6f734552.system.entry.js +4 -0
- package/dist/ionic/{p-1df25966.entry.js → p-7002bc75.entry.js} +1 -1
- package/dist/ionic/{p-de55ec45.js → p-78b3da77.js} +1 -1
- package/dist/ionic/{p-5133c4a3.system.entry.js → p-7abeea68.system.entry.js} +1 -1
- package/dist/ionic/{p-df6a1571.entry.js → p-7b8ece87.entry.js} +1 -1
- package/dist/ionic/p-7c4c37ae.system.js +4 -0
- package/dist/ionic/p-7c7e495d.system.js +4 -0
- package/dist/ionic/p-84025e3c.entry.js +4 -0
- package/dist/ionic/{p-ec77b7ad.system.entry.js → p-8412860b.system.entry.js} +1 -1
- package/dist/ionic/p-8543c360.system.entry.js +4 -0
- package/dist/ionic/{p-12b55b00.system.entry.js → p-86bdb32e.system.entry.js} +1 -1
- package/dist/ionic/p-8818519d.entry.js +4 -0
- package/dist/ionic/{p-ef636601.entry.js → p-887984fc.entry.js} +1 -1
- package/dist/ionic/p-89b61afc.js +4 -0
- package/dist/ionic/{p-1d545773.entry.js → p-8ed900e4.entry.js} +1 -1
- package/dist/ionic/p-9146695e.system.js +4 -0
- package/dist/ionic/{p-0dca0eee.system.entry.js → p-91567c90.system.entry.js} +1 -1
- package/dist/ionic/{p-f2473724.js → p-91a83ede.js} +1 -1
- package/dist/ionic/{p-c8d61b6c.system.entry.js → p-92b05b70.system.entry.js} +1 -1
- package/dist/ionic/p-96c06026.entry.js +4 -0
- package/dist/ionic/p-978f4710.js +4 -0
- package/dist/ionic/{p-973c7550.system.entry.js → p-9a4b9c91.system.entry.js} +1 -1
- package/dist/ionic/p-9b5d033a.system.entry.js +4 -0
- package/dist/ionic/p-9d00a694.system.entry.js +4 -0
- package/dist/ionic/{p-6525a8cd.system.js → p-9e3177a5.system.js} +1 -1
- package/dist/ionic/p-9fd5857a.system.entry.js +4 -0
- package/dist/ionic/{p-1e07fdb2.system.entry.js → p-a2dc2ef1.system.entry.js} +2 -2
- package/dist/ionic/p-a3dae2ce.js +4 -0
- package/dist/ionic/{p-8d4d902b.js → p-a600a3e3.js} +1 -1
- package/dist/ionic/{p-5f9fbad0.entry.js → p-a668e0d4.entry.js} +1 -1
- package/dist/ionic/{p-80704be1.entry.js → p-a6ac25f2.entry.js} +1 -1
- package/dist/ionic/p-a6bce1f5.js +4 -0
- package/dist/ionic/{p-34d0f143.system.entry.js → p-a7270027.system.entry.js} +1 -1
- package/dist/ionic/p-a93873de.system.js +4 -0
- package/dist/ionic/p-a9d2fa95.entry.js +4 -0
- package/dist/ionic/{p-98e6b3b8.system.js → p-ab6879e7.system.js} +1 -1
- package/dist/ionic/{p-717c4b72.entry.js → p-ac585dba.entry.js} +1 -1
- package/dist/ionic/{p-89ca4c4b.system.js → p-af9256a0.system.js} +1 -1
- package/dist/ionic/p-b05c33d0.system.entry.js +4 -0
- package/dist/ionic/{p-2b3544ad.entry.js → p-b141e253.entry.js} +1 -1
- package/dist/ionic/{p-5d64e680.entry.js → p-b6d1ce6c.entry.js} +1 -1
- package/dist/ionic/p-bb01ff24.system.entry.js +4 -0
- package/dist/ionic/p-bb151f4b.entry.js +4 -0
- package/dist/ionic/p-c385e49d.entry.js +4 -0
- package/dist/ionic/p-c3f5d0e7.js +4 -0
- package/dist/ionic/p-c629d22b.system.js +5 -0
- package/dist/ionic/{p-15708968.js → p-c6f9f3eb.js} +1 -1
- package/dist/ionic/p-c7e16491.js +4 -0
- package/dist/ionic/p-c83741f7.entry.js +4 -0
- package/dist/ionic/{p-993da5df.entry.js → p-c8383c20.entry.js} +1 -1
- package/dist/ionic/{p-d7dc29c5.entry.js → p-c947155d.entry.js} +1 -1
- package/dist/ionic/{p-00a762c9.entry.js → p-cb970588.entry.js} +1 -1
- package/dist/ionic/{p-31e02742.system.js → p-cbb9269d.system.js} +1 -1
- package/dist/ionic/{p-dd7c79ce.system.entry.js → p-cc769fb6.system.entry.js} +1 -1
- package/dist/ionic/{p-5797981d.system.entry.js → p-cc978d16.system.entry.js} +2 -2
- package/dist/ionic/{p-b434ded7.system.entry.js → p-ce436e94.system.entry.js} +1 -1
- package/dist/ionic/{p-6ad90d41.entry.js → p-ce9eafa3.entry.js} +1 -1
- package/dist/ionic/p-cf07fee5.entry.js +4 -0
- package/dist/ionic/p-d0adc028.system.entry.js +4 -0
- package/dist/ionic/p-d0d674d0.entry.js +4 -0
- package/dist/ionic/p-d35d485c.entry.js +4 -0
- package/dist/ionic/p-d60342e3.js +4 -0
- package/dist/ionic/{p-816476b0.system.js → p-d704f798.system.js} +1 -1
- package/dist/ionic/p-d80b7e31.system.js +4 -0
- package/dist/ionic/p-d834c508.entry.js +4 -0
- package/dist/ionic/p-da2b833b.js +4 -0
- package/dist/ionic/{p-385f66bc.entry.js → p-da5bbd4f.entry.js} +1 -1
- package/dist/ionic/{p-5e70f800.system.entry.js → p-dbd782ec.system.entry.js} +1 -1
- package/dist/ionic/{p-e1819aee.js → p-e066780e.js} +1 -1
- package/dist/ionic/{p-1ea88de9.system.js → p-e0d52ee3.system.js} +2 -2
- package/dist/ionic/p-e170e351.js +4 -0
- package/dist/ionic/{p-0a8a78db.system.entry.js → p-e1d4298f.system.entry.js} +1 -1
- package/dist/ionic/p-e7b0b64d.system.js +4 -0
- package/dist/ionic/p-e7cd7553.system.js +4 -0
- package/dist/ionic/p-f270059b.entry.js +4 -0
- package/dist/ionic/p-f40aa619.entry.js +4 -0
- package/dist/ionic/{p-c6dbc089.system.entry.js → p-f47c47f2.system.entry.js} +1 -1
- package/dist/ionic/p-f687573e.system.js +4 -0
- package/dist/ionic/p-f8502e85.js +5 -0
- package/dist/ionic/p-facad328.entry.js +4 -0
- package/dist/ionic/{p-ab427719.entry.js → p-fbf23235.entry.js} +1 -1
- package/dist/ionic/{p-3c47c5c8.system.entry.js → p-fe5ff8fb.system.entry.js} +1 -1
- package/dist/ionic/{p-9d795c4b.entry.js → p-fe8f0dd2.entry.js} +1 -1
- package/dist/types/components/datetime/datetime-interface.d.ts +10 -0
- package/dist/types/components/datetime/datetime.d.ts +10 -1
- 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/input/input.d.ts +7 -6
- package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +37 -0
- package/dist/types/components/item/item.d.ts +0 -32
- package/dist/types/components/menu/menu-interface.d.ts +1 -0
- package/dist/types/components/menu/menu.d.ts +2 -4
- package/dist/types/components/range/range.d.ts +29 -0
- package/dist/types/components/searchbar/searchbar.d.ts +38 -0
- package/dist/types/components/textarea/textarea.d.ts +1 -6
- package/dist/types/components/toggle/toggle.d.ts +1 -1
- package/dist/types/components.d.ts +86 -50
- package/dist/types/utils/animation/animation-utils.d.ts +0 -12
- 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.d.ts +0 -6
- package/dist/types/utils/test/playwright/generator.d.ts +3 -3
- package/hydrate/index.js +853 -821
- package/package.json +7 -2
- 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/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-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-4c30cddd.js +0 -5
- package/dist/esm-es5/input.utils-482fc893.js +0 -4
- package/dist/esm-es5/md.transition-c9761eef.js +0 -4
- package/dist/esm-es5/overlays-c69d2a07.js +0 -4
- package/dist/ionic/p-069388dd.system.js +0 -4
- package/dist/ionic/p-0b34d3a7.system.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-17082c91.system.js +0 -4
- package/dist/ionic/p-19f6ac6c.system.js +0 -4
- package/dist/ionic/p-1deadb7f.system.js +0 -4
- package/dist/ionic/p-2c768965.entry.js +0 -4
- package/dist/ionic/p-32fb7d95.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-4e7abe76.js +0 -4
- package/dist/ionic/p-5289aade.js +0 -4
- package/dist/ionic/p-5dbf7222.entry.js +0 -4
- package/dist/ionic/p-5eabaa80.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-66e6860f.system.js +0 -4
- package/dist/ionic/p-67c4deed.system.entry.js +0 -4
- package/dist/ionic/p-6d659d62.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-831269de.js +0 -4
- package/dist/ionic/p-842777af.js +0 -4
- package/dist/ionic/p-892e2567.system.entry.js +0 -4
- package/dist/ionic/p-8ab308e9.js +0 -4
- package/dist/ionic/p-8b8b900d.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-9c93fdcd.js +0 -4
- package/dist/ionic/p-9d6f351e.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-bca27ea7.entry.js +0 -4
- package/dist/ionic/p-c68e75ea.system.js +0 -4
- package/dist/ionic/p-c995da88.system.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-d13689a6.entry.js +0 -4
- package/dist/ionic/p-d47a1a78.system.entry.js +0 -4
- package/dist/ionic/p-d8643420.system.entry.js +0 -4
- package/dist/ionic/p-d9b6b588.entry.js +0 -4
- package/dist/ionic/p-df504a37.system.js +0 -4
- package/dist/ionic/p-dfb6de03.system.js +0 -4
- package/dist/ionic/p-e311af42.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-ed7a529f.js +0 -5
- package/dist/ionic/p-f7ccf8d9.entry.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
|
@@ -2,36 +2,6 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
let animationPrefix;
|
|
5
|
-
/**
|
|
6
|
-
* Web Animations requires hyphenated CSS properties
|
|
7
|
-
* to be written in camelCase when animating
|
|
8
|
-
*/
|
|
9
|
-
export const processKeyframes = (keyframes) => {
|
|
10
|
-
keyframes.forEach((keyframe) => {
|
|
11
|
-
for (const key in keyframe) {
|
|
12
|
-
// eslint-disable-next-line no-prototype-builtins
|
|
13
|
-
if (keyframe.hasOwnProperty(key)) {
|
|
14
|
-
const value = keyframe[key];
|
|
15
|
-
if (key === 'easing') {
|
|
16
|
-
const newKey = 'animation-timing-function';
|
|
17
|
-
keyframe[newKey] = value;
|
|
18
|
-
delete keyframe[key];
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
const newKey = convertCamelCaseToHypen(key);
|
|
22
|
-
if (newKey !== key) {
|
|
23
|
-
keyframe[newKey] = value;
|
|
24
|
-
delete keyframe[key];
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
return keyframes;
|
|
31
|
-
};
|
|
32
|
-
const convertCamelCaseToHypen = (str) => {
|
|
33
|
-
return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
|
|
34
|
-
};
|
|
35
5
|
export const getAnimationPrefix = (el) => {
|
|
36
6
|
if (animationPrefix === undefined) {
|
|
37
7
|
const supportsUnprefixed = el.style.animationName !== undefined;
|
|
@@ -44,78 +14,6 @@ export const setStyleProperty = (element, propertyName, value) => {
|
|
|
44
14
|
const prefix = propertyName.startsWith('animation') ? getAnimationPrefix(element) : '';
|
|
45
15
|
element.style.setProperty(prefix + propertyName, value);
|
|
46
16
|
};
|
|
47
|
-
export const removeStyleProperty = (element, propertyName) => {
|
|
48
|
-
const prefix = propertyName.startsWith('animation') ? getAnimationPrefix(element) : '';
|
|
49
|
-
element.style.removeProperty(prefix + propertyName);
|
|
50
|
-
};
|
|
51
|
-
export const animationEnd = (el, callback) => {
|
|
52
|
-
let unRegTrans;
|
|
53
|
-
const opts = { passive: true };
|
|
54
|
-
const unregister = () => {
|
|
55
|
-
if (unRegTrans) {
|
|
56
|
-
unRegTrans();
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
const onTransitionEnd = (ev) => {
|
|
60
|
-
if (el === ev.target) {
|
|
61
|
-
unregister();
|
|
62
|
-
callback(ev);
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
if (el) {
|
|
66
|
-
el.addEventListener('webkitAnimationEnd', onTransitionEnd, opts);
|
|
67
|
-
el.addEventListener('animationend', onTransitionEnd, opts);
|
|
68
|
-
unRegTrans = () => {
|
|
69
|
-
el.removeEventListener('webkitAnimationEnd', onTransitionEnd, opts);
|
|
70
|
-
el.removeEventListener('animationend', onTransitionEnd, opts);
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
return unregister;
|
|
74
|
-
};
|
|
75
|
-
// TODO(FW-2832): type
|
|
76
|
-
export const generateKeyframeRules = (keyframes = []) => {
|
|
77
|
-
return keyframes
|
|
78
|
-
.map((keyframe) => {
|
|
79
|
-
const offset = keyframe.offset;
|
|
80
|
-
const frameString = [];
|
|
81
|
-
for (const property in keyframe) {
|
|
82
|
-
// eslint-disable-next-line no-prototype-builtins
|
|
83
|
-
if (keyframe.hasOwnProperty(property) && property !== 'offset') {
|
|
84
|
-
frameString.push(`${property}: ${keyframe[property]};`);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return `${offset * 100}% { ${frameString.join(' ')} }`;
|
|
88
|
-
})
|
|
89
|
-
.join(' ');
|
|
90
|
-
};
|
|
91
|
-
const keyframeIds = [];
|
|
92
|
-
export const generateKeyframeName = (keyframeRules) => {
|
|
93
|
-
let index = keyframeIds.indexOf(keyframeRules);
|
|
94
|
-
if (index < 0) {
|
|
95
|
-
index = keyframeIds.push(keyframeRules) - 1;
|
|
96
|
-
}
|
|
97
|
-
return `ion-animation-${index}`;
|
|
98
|
-
};
|
|
99
|
-
export const getStyleContainer = (element) => {
|
|
100
|
-
// getRootNode is not always available in SSR environments.
|
|
101
|
-
// TODO(FW-2832): types
|
|
102
|
-
const rootNode = element.getRootNode !== undefined ? element.getRootNode() : element;
|
|
103
|
-
return rootNode.head || rootNode;
|
|
104
|
-
};
|
|
105
|
-
export const createKeyframeStylesheet = (keyframeName, keyframeRules, element) => {
|
|
106
|
-
var _a;
|
|
107
|
-
const styleContainer = getStyleContainer(element);
|
|
108
|
-
const keyframePrefix = getAnimationPrefix(element);
|
|
109
|
-
const existingStylesheet = styleContainer.querySelector('#' + keyframeName);
|
|
110
|
-
if (existingStylesheet) {
|
|
111
|
-
return existingStylesheet;
|
|
112
|
-
}
|
|
113
|
-
const stylesheet = ((_a = element.ownerDocument) !== null && _a !== void 0 ? _a : document).createElement('style');
|
|
114
|
-
stylesheet.id = keyframeName;
|
|
115
|
-
stylesheet.textContent = `@${keyframePrefix}keyframes ${keyframeName} { ${keyframeRules} } @${keyframePrefix}keyframes ${keyframeName}-alt { ${keyframeRules} }`;
|
|
116
|
-
styleContainer.appendChild(stylesheet);
|
|
117
|
-
return stylesheet;
|
|
118
|
-
};
|
|
119
17
|
export const addClassToArray = (classes = [], className) => {
|
|
120
18
|
if (className !== undefined) {
|
|
121
19
|
const classNameToAppend = Array.isArray(className) ? className : [className];
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { win } from "../browser";
|
|
5
|
-
import {
|
|
6
|
-
import { addClassToArray, animationEnd, createKeyframeStylesheet, generateKeyframeName, generateKeyframeRules, processKeyframes, removeStyleProperty, setStyleProperty, } from "./animation-utils";
|
|
5
|
+
import { addClassToArray, setStyleProperty } from "./animation-utils";
|
|
7
6
|
export const createAnimation = (animationId) => {
|
|
8
7
|
let _delay;
|
|
9
8
|
let _duration;
|
|
@@ -30,7 +29,6 @@ export const createAnimation = (animationId) => {
|
|
|
30
29
|
let willComplete = true;
|
|
31
30
|
let finished = false;
|
|
32
31
|
let shouldCalculateNumAnimations = true;
|
|
33
|
-
let keyframeName;
|
|
34
32
|
let ani;
|
|
35
33
|
let paused = false;
|
|
36
34
|
const id = animationId;
|
|
@@ -47,10 +45,16 @@ export const createAnimation = (animationId) => {
|
|
|
47
45
|
const webAnimations = [];
|
|
48
46
|
const supportsAnimationEffect = typeof AnimationEffect === 'function' ||
|
|
49
47
|
(win !== undefined && typeof win.AnimationEffect === 'function');
|
|
48
|
+
/**
|
|
49
|
+
* This is a feature detection for Web Animations.
|
|
50
|
+
*
|
|
51
|
+
* Certain environments such as emulated browser environments for testing,
|
|
52
|
+
* do not support Web Animations. As a result, we need to check for support
|
|
53
|
+
* and provide a fallback to test certain functionality related to Web Animations.
|
|
54
|
+
*/
|
|
50
55
|
const supportsWebAnimations = typeof Element === 'function' &&
|
|
51
56
|
typeof Element.prototype.animate === 'function' &&
|
|
52
57
|
supportsAnimationEffect;
|
|
53
|
-
const ANIMATION_END_FALLBACK_PADDING_MS = 100;
|
|
54
58
|
const getWebAnimations = () => {
|
|
55
59
|
return webAnimations;
|
|
56
60
|
};
|
|
@@ -138,21 +142,6 @@ export const createAnimation = (animationId) => {
|
|
|
138
142
|
});
|
|
139
143
|
webAnimations.length = 0;
|
|
140
144
|
}
|
|
141
|
-
else {
|
|
142
|
-
const elementsArray = elements.slice();
|
|
143
|
-
raf(() => {
|
|
144
|
-
elementsArray.forEach((element) => {
|
|
145
|
-
removeStyleProperty(element, 'animation-name');
|
|
146
|
-
removeStyleProperty(element, 'animation-duration');
|
|
147
|
-
removeStyleProperty(element, 'animation-timing-function');
|
|
148
|
-
removeStyleProperty(element, 'animation-iteration-count');
|
|
149
|
-
removeStyleProperty(element, 'animation-delay');
|
|
150
|
-
removeStyleProperty(element, 'animation-play-state');
|
|
151
|
-
removeStyleProperty(element, 'animation-fill-mode');
|
|
152
|
-
removeStyleProperty(element, 'animation-direction');
|
|
153
|
-
});
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
145
|
};
|
|
157
146
|
/**
|
|
158
147
|
* Removes the animation's stylesheets
|
|
@@ -410,9 +399,6 @@ export const createAnimation = (animationId) => {
|
|
|
410
399
|
}
|
|
411
400
|
});
|
|
412
401
|
}
|
|
413
|
-
else {
|
|
414
|
-
initializeCSSAnimation();
|
|
415
|
-
}
|
|
416
402
|
};
|
|
417
403
|
/**
|
|
418
404
|
* Run all "before" animation hooks.
|
|
@@ -498,32 +484,6 @@ export const createAnimation = (animationId) => {
|
|
|
498
484
|
}
|
|
499
485
|
}
|
|
500
486
|
};
|
|
501
|
-
const initializeCSSAnimation = (toggleAnimationName = true) => {
|
|
502
|
-
cleanUpStyleSheets();
|
|
503
|
-
const processedKeyframes = processKeyframes(_keyframes);
|
|
504
|
-
elements.forEach((element) => {
|
|
505
|
-
if (processedKeyframes.length > 0) {
|
|
506
|
-
const keyframeRules = generateKeyframeRules(processedKeyframes);
|
|
507
|
-
keyframeName = animationId !== undefined ? animationId : generateKeyframeName(keyframeRules);
|
|
508
|
-
const stylesheet = createKeyframeStylesheet(keyframeName, keyframeRules, element);
|
|
509
|
-
stylesheets.push(stylesheet);
|
|
510
|
-
setStyleProperty(element, 'animation-duration', `${getDuration()}ms`);
|
|
511
|
-
setStyleProperty(element, 'animation-timing-function', getEasing());
|
|
512
|
-
setStyleProperty(element, 'animation-delay', `${getDelay()}ms`);
|
|
513
|
-
setStyleProperty(element, 'animation-fill-mode', getFill());
|
|
514
|
-
setStyleProperty(element, 'animation-direction', getDirection());
|
|
515
|
-
const iterationsCount = getIterations() === Infinity ? 'infinite' : getIterations().toString();
|
|
516
|
-
setStyleProperty(element, 'animation-iteration-count', iterationsCount);
|
|
517
|
-
setStyleProperty(element, 'animation-play-state', 'paused');
|
|
518
|
-
if (toggleAnimationName) {
|
|
519
|
-
setStyleProperty(element, 'animation-name', `${stylesheet.id}-alt`);
|
|
520
|
-
}
|
|
521
|
-
raf(() => {
|
|
522
|
-
setStyleProperty(element, 'animation-name', stylesheet.id || null);
|
|
523
|
-
});
|
|
524
|
-
}
|
|
525
|
-
});
|
|
526
|
-
};
|
|
527
487
|
const initializeWebAnimation = () => {
|
|
528
488
|
elements.forEach((element) => {
|
|
529
489
|
const animation = element.animate(_keyframes, {
|
|
@@ -544,15 +504,12 @@ export const createAnimation = (animationId) => {
|
|
|
544
504
|
};
|
|
545
505
|
}
|
|
546
506
|
};
|
|
547
|
-
const initializeAnimation = (
|
|
507
|
+
const initializeAnimation = () => {
|
|
548
508
|
beforeAnimation();
|
|
549
509
|
if (_keyframes.length > 0) {
|
|
550
510
|
if (supportsWebAnimations) {
|
|
551
511
|
initializeWebAnimation();
|
|
552
512
|
}
|
|
553
|
-
else {
|
|
554
|
-
initializeCSSAnimation(toggleAnimationName);
|
|
555
|
-
}
|
|
556
513
|
}
|
|
557
514
|
initialized = true;
|
|
558
515
|
};
|
|
@@ -565,15 +522,6 @@ export const createAnimation = (animationId) => {
|
|
|
565
522
|
animation.pause();
|
|
566
523
|
});
|
|
567
524
|
}
|
|
568
|
-
else {
|
|
569
|
-
const animationDuration = `-${getDuration() * step}ms`;
|
|
570
|
-
elements.forEach((element) => {
|
|
571
|
-
if (_keyframes.length > 0) {
|
|
572
|
-
setStyleProperty(element, 'animation-delay', animationDuration);
|
|
573
|
-
setStyleProperty(element, 'animation-play-state', 'paused');
|
|
574
|
-
}
|
|
575
|
-
});
|
|
576
|
-
}
|
|
577
525
|
};
|
|
578
526
|
const updateWebAnimation = (step) => {
|
|
579
527
|
webAnimations.forEach((animation) => {
|
|
@@ -590,26 +538,6 @@ export const createAnimation = (animationId) => {
|
|
|
590
538
|
setAnimationStep(step);
|
|
591
539
|
}
|
|
592
540
|
};
|
|
593
|
-
const updateCSSAnimation = (toggleAnimationName = true, step) => {
|
|
594
|
-
raf(() => {
|
|
595
|
-
elements.forEach((element) => {
|
|
596
|
-
setStyleProperty(element, 'animation-name', keyframeName || null);
|
|
597
|
-
setStyleProperty(element, 'animation-duration', `${getDuration()}ms`);
|
|
598
|
-
setStyleProperty(element, 'animation-timing-function', getEasing());
|
|
599
|
-
setStyleProperty(element, 'animation-delay', step !== undefined ? `-${step * getDuration()}ms` : `${getDelay()}ms`);
|
|
600
|
-
setStyleProperty(element, 'animation-fill-mode', getFill() || null);
|
|
601
|
-
setStyleProperty(element, 'animation-direction', getDirection() || null);
|
|
602
|
-
const iterationsCount = getIterations() === Infinity ? 'infinite' : getIterations().toString();
|
|
603
|
-
setStyleProperty(element, 'animation-iteration-count', iterationsCount);
|
|
604
|
-
if (toggleAnimationName) {
|
|
605
|
-
setStyleProperty(element, 'animation-name', `${keyframeName}-alt`);
|
|
606
|
-
}
|
|
607
|
-
raf(() => {
|
|
608
|
-
setStyleProperty(element, 'animation-name', keyframeName || null);
|
|
609
|
-
});
|
|
610
|
-
});
|
|
611
|
-
});
|
|
612
|
-
};
|
|
613
541
|
const update = (deep = false, toggleAnimationName = true, step) => {
|
|
614
542
|
if (deep) {
|
|
615
543
|
childAnimations.forEach((animation) => {
|
|
@@ -619,9 +547,6 @@ export const createAnimation = (animationId) => {
|
|
|
619
547
|
if (supportsWebAnimations) {
|
|
620
548
|
updateWebAnimation(step);
|
|
621
549
|
}
|
|
622
|
-
else {
|
|
623
|
-
updateCSSAnimation(toggleAnimationName, step);
|
|
624
|
-
}
|
|
625
550
|
return ani;
|
|
626
551
|
};
|
|
627
552
|
const progressStart = (forceLinearEasing = false, step) => {
|
|
@@ -704,10 +629,6 @@ export const createAnimation = (animationId) => {
|
|
|
704
629
|
pauseAnimation();
|
|
705
630
|
return ani;
|
|
706
631
|
};
|
|
707
|
-
const onAnimationEndFallback = () => {
|
|
708
|
-
cssAnimationsTimerFallback = undefined;
|
|
709
|
-
animationFinish();
|
|
710
|
-
};
|
|
711
632
|
const clearCSSAnimationsTimeout = () => {
|
|
712
633
|
if (cssAnimationsTimerFallback) {
|
|
713
634
|
clearTimeout(cssAnimationsTimerFallback);
|
|
@@ -715,56 +636,7 @@ export const createAnimation = (animationId) => {
|
|
|
715
636
|
};
|
|
716
637
|
const playCSSAnimations = () => {
|
|
717
638
|
clearCSSAnimationsTimeout();
|
|
718
|
-
|
|
719
|
-
elements.forEach((element) => {
|
|
720
|
-
if (_keyframes.length > 0) {
|
|
721
|
-
setStyleProperty(element, 'animation-play-state', 'running');
|
|
722
|
-
}
|
|
723
|
-
});
|
|
724
|
-
});
|
|
725
|
-
if (_keyframes.length === 0 || elements.length === 0) {
|
|
726
|
-
animationFinish();
|
|
727
|
-
}
|
|
728
|
-
else {
|
|
729
|
-
/**
|
|
730
|
-
* This is a catchall in the event that a CSS Animation did not finish.
|
|
731
|
-
* The Web Animations API has mechanisms in place for preventing this.
|
|
732
|
-
* CSS Animations will not fire an `animationend` event
|
|
733
|
-
* for elements with `display: none`. The Web Animations API
|
|
734
|
-
* accounts for this, but using raw CSS Animations requires
|
|
735
|
-
* this workaround.
|
|
736
|
-
*/
|
|
737
|
-
const animationDelay = getDelay() || 0;
|
|
738
|
-
const animationDuration = getDuration() || 0;
|
|
739
|
-
const animationIterations = getIterations() || 1;
|
|
740
|
-
// No need to set a timeout when animation has infinite iterations
|
|
741
|
-
if (isFinite(animationIterations)) {
|
|
742
|
-
cssAnimationsTimerFallback = setTimeout(onAnimationEndFallback, animationDelay + animationDuration * animationIterations + ANIMATION_END_FALLBACK_PADDING_MS);
|
|
743
|
-
}
|
|
744
|
-
animationEnd(elements[0], () => {
|
|
745
|
-
clearCSSAnimationsTimeout();
|
|
746
|
-
/**
|
|
747
|
-
* Ensure that clean up
|
|
748
|
-
* is always done a frame
|
|
749
|
-
* before the onFinish handlers
|
|
750
|
-
* are fired. Otherwise, there
|
|
751
|
-
* may be flickering if a new
|
|
752
|
-
* animation is started on the same
|
|
753
|
-
* element too quickly
|
|
754
|
-
*/
|
|
755
|
-
raf(() => {
|
|
756
|
-
clearCSSAnimationPlayState();
|
|
757
|
-
raf(animationFinish);
|
|
758
|
-
});
|
|
759
|
-
});
|
|
760
|
-
}
|
|
761
|
-
};
|
|
762
|
-
const clearCSSAnimationPlayState = () => {
|
|
763
|
-
elements.forEach((element) => {
|
|
764
|
-
removeStyleProperty(element, 'animation-duration');
|
|
765
|
-
removeStyleProperty(element, 'animation-delay');
|
|
766
|
-
removeStyleProperty(element, 'animation-play-state');
|
|
767
|
-
});
|
|
639
|
+
animationFinish();
|
|
768
640
|
};
|
|
769
641
|
const playWebAnimations = () => {
|
|
770
642
|
webAnimations.forEach((animation) => {
|
|
@@ -779,9 +651,6 @@ export const createAnimation = (animationId) => {
|
|
|
779
651
|
setAnimationStep(0);
|
|
780
652
|
updateWebAnimation();
|
|
781
653
|
}
|
|
782
|
-
else {
|
|
783
|
-
updateCSSAnimation();
|
|
784
|
-
}
|
|
785
654
|
};
|
|
786
655
|
const play = (opts) => {
|
|
787
656
|
return new Promise((resolve) => {
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { createAnimation } from "../animation";
|
|
5
|
-
import { processKeyframes } from "../animation-utils";
|
|
6
5
|
import { getTimeGivenProgression } from "../cubic-bezier";
|
|
7
6
|
describe('Animation Class', () => {
|
|
8
7
|
describe('progressEnd callbacks', () => {
|
|
@@ -48,84 +47,6 @@ describe('Animation Class', () => {
|
|
|
48
47
|
animation.play();
|
|
49
48
|
expect(animation.isRunning()).toEqual(false);
|
|
50
49
|
});
|
|
51
|
-
it('should be running', () => {
|
|
52
|
-
const el = document.createElement('div');
|
|
53
|
-
animation.addElement(el);
|
|
54
|
-
animation.keyframes([
|
|
55
|
-
{ transform: 'scale(1)', opacity: 1, offset: 0 },
|
|
56
|
-
{ transform: 'scale(0)', opacity: 0, offset: 1 },
|
|
57
|
-
]);
|
|
58
|
-
animation.duration(250);
|
|
59
|
-
animation.play();
|
|
60
|
-
expect(animation.isRunning()).toEqual(true);
|
|
61
|
-
});
|
|
62
|
-
it('should not be running after finishing the animation', async () => {
|
|
63
|
-
const el = document.createElement('div');
|
|
64
|
-
animation.addElement(el);
|
|
65
|
-
animation.keyframes([
|
|
66
|
-
{ transform: 'scale(1)', opacity: 1, offset: 0 },
|
|
67
|
-
{ transform: 'scale(0)', opacity: 0, offset: 1 },
|
|
68
|
-
]);
|
|
69
|
-
animation.duration(250);
|
|
70
|
-
await animation.play();
|
|
71
|
-
expect(animation.isRunning()).toEqual(false);
|
|
72
|
-
});
|
|
73
|
-
it('should not be running after calling pause', () => {
|
|
74
|
-
const el = document.createElement('div');
|
|
75
|
-
animation.addElement(el);
|
|
76
|
-
animation.keyframes([
|
|
77
|
-
{ transform: 'scale(1)', opacity: 1, offset: 0 },
|
|
78
|
-
{ transform: 'scale(0)', opacity: 0, offset: 1 },
|
|
79
|
-
]);
|
|
80
|
-
animation.duration(250);
|
|
81
|
-
animation.play();
|
|
82
|
-
expect(animation.isRunning()).toEqual(true);
|
|
83
|
-
animation.pause();
|
|
84
|
-
expect(animation.isRunning()).toEqual(false);
|
|
85
|
-
});
|
|
86
|
-
it('should not be running when doing progress steps', () => {
|
|
87
|
-
const el = document.createElement('div');
|
|
88
|
-
animation.addElement(el);
|
|
89
|
-
animation.keyframes([
|
|
90
|
-
{ transform: 'scale(1)', opacity: 1, offset: 0 },
|
|
91
|
-
{ transform: 'scale(0)', opacity: 0, offset: 1 },
|
|
92
|
-
]);
|
|
93
|
-
animation.duration(250);
|
|
94
|
-
animation.play();
|
|
95
|
-
animation.progressStart();
|
|
96
|
-
expect(animation.isRunning()).toEqual(false);
|
|
97
|
-
});
|
|
98
|
-
it('should be running after calling progressEnd', () => {
|
|
99
|
-
const el = document.createElement('div');
|
|
100
|
-
animation.addElement(el);
|
|
101
|
-
animation.keyframes([
|
|
102
|
-
{ transform: 'scale(1)', opacity: 1, offset: 0 },
|
|
103
|
-
{ transform: 'scale(0)', opacity: 0, offset: 1 },
|
|
104
|
-
]);
|
|
105
|
-
animation.duration(250);
|
|
106
|
-
animation.play();
|
|
107
|
-
animation.progressStart();
|
|
108
|
-
animation.progressEnd(1, 0);
|
|
109
|
-
expect(animation.isRunning()).toEqual(true);
|
|
110
|
-
});
|
|
111
|
-
it('should not be running after playing to beginning', async () => {
|
|
112
|
-
const el = document.createElement('div');
|
|
113
|
-
animation.addElement(el);
|
|
114
|
-
animation.keyframes([
|
|
115
|
-
{ transform: 'scale(1)', opacity: 1, offset: 0 },
|
|
116
|
-
{ transform: 'scale(0)', opacity: 0, offset: 1 },
|
|
117
|
-
]);
|
|
118
|
-
animation.duration(250);
|
|
119
|
-
await animation.play();
|
|
120
|
-
animation.progressStart();
|
|
121
|
-
animation.progressEnd(0, 0);
|
|
122
|
-
await new Promise((resolve) => {
|
|
123
|
-
animation.onFinish(() => {
|
|
124
|
-
expect(animation.isRunning()).toEqual(false);
|
|
125
|
-
resolve();
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
|
-
});
|
|
129
50
|
});
|
|
130
51
|
describe('addElement()', () => {
|
|
131
52
|
let animation;
|
|
@@ -183,16 +104,6 @@ describe('Animation Class', () => {
|
|
|
183
104
|
]);
|
|
184
105
|
expect(animation.getKeyframes().length).toEqual(3);
|
|
185
106
|
});
|
|
186
|
-
it('should convert properties for CSS Animations', () => {
|
|
187
|
-
const processedKeyframes = processKeyframes([
|
|
188
|
-
{ borderRadius: '0px', easing: 'ease-in', offset: 0 },
|
|
189
|
-
{ borderRadius: '4px', easing: 'ease-out', offset: 1 },
|
|
190
|
-
]);
|
|
191
|
-
expect(processedKeyframes).toEqual([
|
|
192
|
-
{ 'border-radius': '0px', 'animation-timing-function': 'ease-in', offset: 0 },
|
|
193
|
-
{ 'border-radius': '4px', 'animation-timing-function': 'ease-out', offset: 1 },
|
|
194
|
-
]);
|
|
195
|
-
});
|
|
196
107
|
it('should set the from keyframe properly', () => {
|
|
197
108
|
animation.from('opacity', 0).from('background', 'red').from('color', 'purple');
|
|
198
109
|
const keyframes = animation.getKeyframes();
|
|
@@ -12,10 +12,6 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
12
12
|
await page.goto('/src/utils/animation/test/animationbuilder', config);
|
|
13
13
|
await testNavigation(page);
|
|
14
14
|
});
|
|
15
|
-
test('ios-transition css', async ({ page }) => {
|
|
16
|
-
await page.goto('/src/utils/animation/test/animationbuilder?ionic:_forceCSSAnimations=true', config);
|
|
17
|
-
await testNavigation(page);
|
|
18
|
-
});
|
|
19
15
|
});
|
|
20
16
|
});
|
|
21
17
|
const testNavigation = async (page) => {
|
|
@@ -8,10 +8,6 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
8
8
|
await page.goto('/src/utils/animation/test/basic', config);
|
|
9
9
|
await testPage(page);
|
|
10
10
|
});
|
|
11
|
-
test(`should resolve using css animations`, async ({ page }) => {
|
|
12
|
-
await page.goto('/src/utils/animation/test/basic?ionic:_forceCSSAnimations=true', config);
|
|
13
|
-
await testPage(page);
|
|
14
|
-
});
|
|
15
11
|
});
|
|
16
12
|
});
|
|
17
13
|
const testPage = async (page) => {
|
|
@@ -9,10 +9,6 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
9
9
|
await page.goto('/src/utils/animation/test/display', config);
|
|
10
10
|
await testDisplay(page);
|
|
11
11
|
});
|
|
12
|
-
test(`should resolve using css animations`, async ({ page }) => {
|
|
13
|
-
await page.goto('/src/utils/animation/test/display?ionic:_forceCSSAnimations=true', config);
|
|
14
|
-
await testDisplay(page);
|
|
15
|
-
});
|
|
16
12
|
});
|
|
17
13
|
});
|
|
18
14
|
const testDisplay = async (page) => {
|
|
@@ -9,10 +9,6 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
9
9
|
await page.goto('/src/utils/animation/test/hooks', config);
|
|
10
10
|
await testHooks(page);
|
|
11
11
|
});
|
|
12
|
-
test(`should fire hooks using css animations`, async ({ page }) => {
|
|
13
|
-
await page.goto('/src/utils/animation/test/hooks?ionic:_forceCSSAnimations=true', config);
|
|
14
|
-
await testHooks(page);
|
|
15
|
-
});
|
|
16
12
|
});
|
|
17
13
|
});
|
|
18
14
|
const testHooks = async (page) => {
|
|
@@ -9,13 +9,6 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
9
9
|
await page.goto('/src/utils/animation/test/multiple', config);
|
|
10
10
|
await testMultiple(page);
|
|
11
11
|
});
|
|
12
|
-
/**
|
|
13
|
-
* CSS animations will occasionally resolve out of order, so we skip for now
|
|
14
|
-
*/
|
|
15
|
-
test.skip(`should resolve grouped animations using css animations`, async ({ page }) => {
|
|
16
|
-
await page.goto('/src/utils/animation/test/multiple?ionic:_forceCSSAnimations=true', config);
|
|
17
|
-
await testMultiple(page);
|
|
18
|
-
});
|
|
19
12
|
});
|
|
20
13
|
});
|
|
21
14
|
const testMultiple = async (page) => {
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { focusVisibleElement } from "./helpers";
|
|
5
|
+
/**
|
|
6
|
+
* This query string selects elements that
|
|
7
|
+
* are eligible to receive focus. We select
|
|
8
|
+
* interactive elements that meet the following
|
|
9
|
+
* criteria:
|
|
10
|
+
* 1. Element does not have a negative tabindex
|
|
11
|
+
* 2. Element does not have `hidden`
|
|
12
|
+
* 3. Element does not have `disabled` for non-Ionic components.
|
|
13
|
+
* 4. Element does not have `disabled` or `disabled="true"` for Ionic components.
|
|
14
|
+
* Note: We need this distinction because `disabled="false"` is
|
|
15
|
+
* valid usage for the disabled property on ion-button.
|
|
16
|
+
*/
|
|
17
|
+
export 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])';
|
|
18
|
+
/**
|
|
19
|
+
* Focuses the first descendant in a context
|
|
20
|
+
* that can receive focus. If none exists,
|
|
21
|
+
* a fallback element will be focused.
|
|
22
|
+
* This fallback is typically an ancestor
|
|
23
|
+
* container such as a menu or overlay so focus does not
|
|
24
|
+
* leave the container we are trying to trap focus in.
|
|
25
|
+
*
|
|
26
|
+
* If no fallback is specified then we focus the container itself.
|
|
27
|
+
*/
|
|
28
|
+
export const focusFirstDescendant = (ref, fallbackElement) => {
|
|
29
|
+
const firstInput = ref.querySelector(focusableQueryString);
|
|
30
|
+
focusElementInContext(firstInput, fallbackElement !== null && fallbackElement !== void 0 ? fallbackElement : ref);
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Focuses the last descendant in a context
|
|
34
|
+
* that can receive focus. If none exists,
|
|
35
|
+
* a fallback element will be focused.
|
|
36
|
+
* This fallback is typically an ancestor
|
|
37
|
+
* container such as a menu or overlay so focus does not
|
|
38
|
+
* leave the container we are trying to trap focus in.
|
|
39
|
+
*
|
|
40
|
+
* If no fallback is specified then we focus the container itself.
|
|
41
|
+
*/
|
|
42
|
+
export const focusLastDescendant = (ref, fallbackElement) => {
|
|
43
|
+
const inputs = Array.from(ref.querySelectorAll(focusableQueryString));
|
|
44
|
+
const lastInput = inputs.length > 0 ? inputs[inputs.length - 1] : null;
|
|
45
|
+
focusElementInContext(lastInput, fallbackElement !== null && fallbackElement !== void 0 ? fallbackElement : ref);
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Focuses a particular element in a context. If the element
|
|
49
|
+
* doesn't have anything focusable associated with it then
|
|
50
|
+
* a fallback element will be focused.
|
|
51
|
+
*
|
|
52
|
+
* This fallback is typically an ancestor
|
|
53
|
+
* container such as a menu or overlay so focus does not
|
|
54
|
+
* leave the container we are trying to trap focus in.
|
|
55
|
+
* This should be used instead of the focus() method
|
|
56
|
+
* on most elements because the focusable element
|
|
57
|
+
* may not be the host element.
|
|
58
|
+
*
|
|
59
|
+
* For example, if an ion-button should be focused
|
|
60
|
+
* then we should actually focus the native <button>
|
|
61
|
+
* element inside of ion-button's shadow root, not
|
|
62
|
+
* the host element itself.
|
|
63
|
+
*/
|
|
64
|
+
const focusElementInContext = (hostToFocus, fallbackElement) => {
|
|
65
|
+
let elementToFocus = hostToFocus;
|
|
66
|
+
const shadowRoot = hostToFocus === null || hostToFocus === void 0 ? void 0 : hostToFocus.shadowRoot;
|
|
67
|
+
if (shadowRoot) {
|
|
68
|
+
// If there are no inner focusable elements, just focus the host element.
|
|
69
|
+
elementToFocus = shadowRoot.querySelector(focusableQueryString) || hostToFocus;
|
|
70
|
+
}
|
|
71
|
+
if (elementToFocus) {
|
|
72
|
+
focusVisibleElement(elementToFocus);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// Focus fallback element instead of letting focus escape
|
|
76
|
+
fallbackElement.focus();
|
|
77
|
+
}
|
|
78
|
+
};
|
|
@@ -15,7 +15,7 @@ import { config } from "../global/config";
|
|
|
15
15
|
* moment this file is evaluated which could be
|
|
16
16
|
* before the config is set.
|
|
17
17
|
*/
|
|
18
|
-
export const
|
|
18
|
+
export const shouldUseCloseWatcher = () => config.get('experimentalCloseWatcher', false) && win !== undefined && 'CloseWatcher' in win;
|
|
19
19
|
/**
|
|
20
20
|
* When hardwareBackButton: false in config,
|
|
21
21
|
* we need to make sure we also block the default
|
|
@@ -85,7 +85,7 @@ export const startHardwareBackButton = () => {
|
|
|
85
85
|
* backbutton event otherwise we may get duplicate
|
|
86
86
|
* events firing.
|
|
87
87
|
*/
|
|
88
|
-
if (
|
|
88
|
+
if (shouldUseCloseWatcher()) {
|
|
89
89
|
let watcher;
|
|
90
90
|
const configureWatcher = () => {
|
|
91
91
|
watcher === null || watcher === void 0 ? void 0 : watcher.destroy();
|