@ionic/core 7.7.2-dev.11707932366.16baf005 → 7.7.2-dev.11708036667.1fa730de
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/checkbox.js +8 -80
- package/components/helpers.js +1 -1
- package/components/index2.js +107 -1
- package/components/index9.js +1 -1
- package/components/ion-chip.js +2 -2
- package/components/ion-col.js +2 -2
- package/components/ion-content.js +4 -4
- package/components/ion-datetime-button.js +1 -1
- package/components/ion-datetime.js +1 -1
- 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 +3 -3
- 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.js +4 -4
- package/components/ion-item-divider.js +2 -2
- package/components/ion-item-group.js +1 -1
- package/components/ion-item-option.js +2 -2
- package/components/ion-item-options.js +2 -2
- package/components/ion-item-sliding.js +2 -2
- package/components/ion-loading.js +2 -2
- package/components/ion-menu-button.js +2 -2
- package/components/ion-menu-toggle.js +2 -2
- package/components/ion-menu.js +3 -3
- package/components/ion-modal.js +4 -4
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +2 -2
- package/components/ion-picker-legacy.js +2 -2
- package/components/ion-progress-bar.js +2 -2
- package/components/ion-range.js +34 -88
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +2 -2
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-router-link.js +2 -2
- package/components/ion-router-outlet.js +2 -2
- package/components/ion-router.js +1 -1
- package/components/ion-row.js +1 -1
- package/components/ion-searchbar.js +5 -5
- 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 +3 -3
- 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 +3 -3
- 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 +3 -3
- package/components/ion-toolbar.js +2 -2
- package/components/label.js +1 -1
- package/components/list-header.js +2 -2
- package/components/list.js +1 -1
- package/components/note.js +2 -2
- package/components/picker-column-option.js +2 -2
- package/components/picker-column.js +3 -3
- package/components/picker-column2.js +3 -3
- package/components/picker.js +2 -2
- package/components/popover.js +3 -3
- package/components/radio-group.js +1 -1
- package/components/radio.js +3 -3
- package/components/refresher.utils.js +1 -1
- package/components/ripple-effect.js +1 -1
- package/components/select-popover.js +1 -1
- package/components/spinner.js +1 -1
- package/components/swipe-back.js +1 -1
- package/css/core.css +10 -0
- package/css/core.css.map +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/dist/cjs/{animation-fdab9de5.js → animation-52066ac7.js} +1 -1
- package/dist/cjs/{framework-delegate-a3e6d060.js → framework-delegate-0aa2f151.js} +1 -1
- package/dist/cjs/{helpers-2e1028fa.js → helpers-3b96a6b0.js} +0 -1
- package/dist/cjs/{index-84351d21.js → index-199dfe7c.js} +110 -4
- package/dist/cjs/{index-8c679cbf.js → index-8a307f4a.js} +2 -2
- package/dist/cjs/{index-10da82ce.js → index-a31d3404.js} +1 -1
- package/dist/cjs/{index-53d162b2.js → index-e8a56f40.js} +1 -1
- package/dist/cjs/index.cjs.js +9 -9
- package/dist/cjs/{input-shims-6f804705.js → input-shims-49caf259.js} +2 -2
- package/dist/cjs/{input.utils-d693d18a.js → input.utils-ca76d6e6.js} +1 -1
- package/dist/cjs/ion-accordion_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-action-sheet.cjs.entry.js +4 -4
- package/dist/cjs/ion-alert.cjs.entry.js +4 -4
- package/dist/cjs/ion-app_8.cjs.entry.js +20 -20
- package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-back-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-button_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-card_5.cjs.entry.js +1 -1
- package/dist/cjs/ion-checkbox.cjs.entry.js +7 -75
- package/dist/cjs/ion-chip.cjs.entry.js +2 -2
- package/dist/cjs/ion-col_3.cjs.entry.js +5 -5
- package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime_3.cjs.entry.js +9 -9
- package/dist/cjs/ion-fab_3.cjs.entry.js +7 -7
- package/dist/cjs/ion-img.cjs.entry.js +2 -2
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-input.cjs.entry.js +6 -6
- package/dist/cjs/ion-item-option_3.cjs.entry.js +6 -6
- package/dist/cjs/ion-item_8.cjs.entry.js +12 -12
- package/dist/cjs/ion-loading.cjs.entry.js +6 -6
- package/dist/cjs/ion-menu_3.cjs.entry.js +11 -11
- package/dist/cjs/ion-modal.cjs.entry.js +9 -9
- package/dist/cjs/ion-nav_2.cjs.entry.js +7 -6
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +3 -3
- package/dist/cjs/ion-picker-column.cjs.entry.js +4 -4
- package/dist/cjs/ion-picker.cjs.entry.js +3 -3
- package/dist/cjs/ion-popover.cjs.entry.js +7 -7
- package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
- package/dist/cjs/ion-radio_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-range.cjs.entry.js +34 -87
- package/dist/cjs/ion-refresher_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-reorder_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
- package/dist/cjs/ion-route_4.cjs.entry.js +3 -3
- package/dist/cjs/ion-searchbar.cjs.entry.js +5 -5
- package/dist/cjs/ion-segment_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-select_3.cjs.entry.js +8 -8
- package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
- package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-tab_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-text.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +5 -5
- package/dist/cjs/ion-toast.cjs.entry.js +6 -6
- package/dist/cjs/ion-toggle.cjs.entry.js +4 -4
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/{ios.transition-8e40c54e.js → ios.transition-523565cb.js} +5 -3
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{md.transition-597a2479.js → md.transition-7e3cde49.js} +5 -3
- package/dist/cjs/{notch-controller-db0127c4.js → notch-controller-0b7bc5d8.js} +1 -1
- package/dist/cjs/{overlays-8f32c4ca.js → overlays-5a110990.js} +2 -2
- package/dist/cjs/{status-tap-b0bfea34.js → status-tap-8e84a16d.js} +2 -2
- package/dist/cjs/{swipe-back-f93021d8.js → swipe-back-766b4f1c.js} +1 -1
- package/dist/collection/components/checkbox/checkbox.ios.css +5 -65
- package/dist/collection/components/checkbox/checkbox.js +5 -118
- package/dist/collection/components/checkbox/checkbox.md.css +5 -64
- 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 +1 -1
- package/dist/collection/components/datetime-button/datetime-button.js +1 -1
- 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-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.js +2 -2
- 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.js +3 -3
- package/dist/collection/components/item-divider/item-divider.js +2 -2
- package/dist/collection/components/item-group/item-group.js +1 -1
- package/dist/collection/components/item-option/item-option.js +2 -2
- package/dist/collection/components/item-options/item-options.js +1 -1
- package/dist/collection/components/item-sliding/item-sliding.js +1 -1
- package/dist/collection/components/label/label.js +1 -1
- package/dist/collection/components/list/list.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/menu/menu.js +2 -2
- package/dist/collection/components/menu-button/menu-button.js +2 -2
- package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
- package/dist/collection/components/modal/modal.js +3 -3
- 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 +3 -3
- 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 +2 -2
- package/dist/collection/components/progress-bar/progress-bar.js +1 -1
- package/dist/collection/components/radio/radio.js +3 -3
- package/dist/collection/components/radio-group/radio-group.js +1 -1
- package/dist/collection/components/range/range.ios.css +0 -9
- package/dist/collection/components/range/range.js +30 -123
- package/dist/collection/components/range/range.md.css +3 -17
- package/dist/collection/components/range/test/a11y/range.e2e.js +2 -2
- package/dist/collection/components/range/test/range-events.e2e.js +1 -1
- package/dist/collection/components/range/test/range.spec.js +0 -12
- package/dist/collection/components/refresher/refresher.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-outlet/router-outlet.js +1 -1
- package/dist/collection/components/row/row.js +1 -1
- package/dist/collection/components/searchbar/searchbar.js +4 -4
- package/dist/collection/components/segment/segment.js +2 -2
- package/dist/collection/components/segment-button/segment-button.js +3 -3
- package/dist/collection/components/select/select.js +2 -2
- 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/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/textarea.js +2 -2
- package/dist/collection/components/thumbnail/thumbnail.js +1 -1
- package/dist/collection/components/title/title.js +2 -2
- package/dist/collection/components/toast/toast.js +2 -2
- package/dist/collection/components/toggle/toggle.js +3 -3
- package/dist/collection/components/toolbar/toolbar.js +2 -2
- package/dist/collection/utils/transition/index.js +107 -1
- package/dist/docs.json +6 -54
- package/dist/esm/{animation-60dbdd13.js → animation-2b6dd235.js} +1 -1
- package/dist/esm/{framework-delegate-fed7fe7c.js → framework-delegate-e8bffeeb.js} +1 -1
- package/dist/esm/{helpers-c0b9ca37.js → helpers-6f6a912f.js} +1 -1
- package/dist/esm/{index-48209844.js → index-02ec07ff.js} +2 -2
- package/dist/esm/{index-d64f34ea.js → index-1496c7cd.js} +1 -1
- package/dist/esm/{index-4b98143d.js → index-361e1f35.js} +110 -4
- package/dist/esm/{index-eb12ef92.js → index-c14233e6.js} +1 -1
- package/dist/esm/index.js +9 -9
- package/dist/esm/{input-shims-b90ca55f.js → input-shims-dd1a9a98.js} +2 -2
- package/dist/esm/{input.utils-6e9b0046.js → input.utils-5fee9f22.js} +1 -1
- package/dist/esm/ion-accordion_2.entry.js +1 -1
- package/dist/esm/ion-action-sheet.entry.js +4 -4
- package/dist/esm/ion-alert.entry.js +4 -4
- package/dist/esm/ion-app_8.entry.js +20 -20
- package/dist/esm/ion-avatar_3.entry.js +1 -1
- package/dist/esm/ion-back-button.entry.js +1 -1
- package/dist/esm/ion-breadcrumb_2.entry.js +1 -1
- package/dist/esm/ion-button_2.entry.js +1 -1
- package/dist/esm/ion-card_5.entry.js +1 -1
- package/dist/esm/ion-checkbox.entry.js +7 -75
- package/dist/esm/ion-chip.entry.js +2 -2
- package/dist/esm/ion-col_3.entry.js +5 -5
- package/dist/esm/ion-datetime-button.entry.js +2 -2
- package/dist/esm/ion-datetime_3.entry.js +9 -9
- package/dist/esm/ion-fab_3.entry.js +7 -7
- package/dist/esm/ion-img.entry.js +2 -2
- package/dist/esm/ion-infinite-scroll_2.entry.js +5 -5
- package/dist/esm/ion-input.entry.js +6 -6
- package/dist/esm/ion-item-option_3.entry.js +6 -6
- package/dist/esm/ion-item_8.entry.js +12 -12
- package/dist/esm/ion-loading.entry.js +6 -6
- package/dist/esm/ion-menu_3.entry.js +11 -11
- package/dist/esm/ion-modal.entry.js +9 -9
- package/dist/esm/ion-nav_2.entry.js +7 -6
- package/dist/esm/ion-picker-column-option.entry.js +3 -3
- package/dist/esm/ion-picker-column.entry.js +4 -4
- package/dist/esm/ion-picker.entry.js +3 -3
- package/dist/esm/ion-popover.entry.js +7 -7
- package/dist/esm/ion-progress-bar.entry.js +2 -2
- package/dist/esm/ion-radio_2.entry.js +5 -5
- package/dist/esm/ion-range.entry.js +35 -88
- package/dist/esm/ion-refresher_2.entry.js +5 -5
- package/dist/esm/ion-reorder_2.entry.js +4 -4
- package/dist/esm/ion-ripple-effect.entry.js +1 -1
- package/dist/esm/ion-route_4.entry.js +3 -3
- package/dist/esm/ion-searchbar.entry.js +5 -5
- package/dist/esm/ion-segment_2.entry.js +6 -6
- package/dist/esm/ion-select_3.entry.js +8 -8
- package/dist/esm/ion-spinner.entry.js +1 -1
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar_2.entry.js +5 -5
- package/dist/esm/ion-tab_2.entry.js +5 -5
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +5 -5
- package/dist/esm/ion-toast.entry.js +6 -6
- package/dist/esm/ion-toggle.entry.js +4 -4
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/{ios.transition-7ff7381d.js → ios.transition-8853da89.js} +5 -3
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{md.transition-28a9a26b.js → md.transition-e0cb5ce0.js} +5 -3
- package/dist/esm/{notch-controller-15d281a4.js → notch-controller-164523aa.js} +1 -1
- package/dist/esm/{overlays-2d8629c6.js → overlays-0552e35b.js} +2 -2
- package/dist/esm/{status-tap-2b335fb7.js → status-tap-11f4b446.js} +2 -2
- package/dist/esm/{swipe-back-7f7620ca.js → swipe-back-8f9b1f85.js} +1 -1
- package/dist/esm-es5/{animation-60dbdd13.js → animation-2b6dd235.js} +1 -1
- package/dist/esm-es5/{framework-delegate-fed7fe7c.js → framework-delegate-e8bffeeb.js} +1 -1
- package/dist/esm-es5/{helpers-c0b9ca37.js → helpers-6f6a912f.js} +1 -1
- package/dist/esm-es5/{index-48209844.js → index-02ec07ff.js} +1 -1
- package/dist/esm-es5/{index-d64f34ea.js → index-1496c7cd.js} +1 -1
- package/dist/esm-es5/index-361e1f35.js +4 -0
- package/dist/esm-es5/{index-eb12ef92.js → index-c14233e6.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/{input-shims-b90ca55f.js → input-shims-dd1a9a98.js} +1 -1
- package/dist/esm-es5/{input.utils-6e9b0046.js → input.utils-5fee9f22.js} +1 -1
- 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-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.js +1 -1
- package/dist/esm-es5/ios.transition-8853da89.js +4 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/md.transition-e0cb5ce0.js +4 -0
- package/dist/esm-es5/{notch-controller-15d281a4.js → notch-controller-164523aa.js} +1 -1
- package/dist/esm-es5/{overlays-2d8629c6.js → overlays-0552e35b.js} +1 -1
- package/dist/esm-es5/{status-tap-2b335fb7.js → status-tap-11f4b446.js} +1 -1
- package/dist/esm-es5/swipe-back-8f9b1f85.js +4 -0
- package/dist/html.html-data.json +0 -8
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-90fcbf72.js → p-012136be.js} +1 -1
- package/dist/ionic/{p-94be3ad7.js → p-023a5686.js} +1 -1
- package/dist/ionic/{p-6f5c2ebd.system.entry.js → p-04625eab.system.entry.js} +1 -1
- package/dist/ionic/{p-229d211f.entry.js → p-060ab03e.entry.js} +1 -1
- package/dist/ionic/{p-7e230af6.entry.js → p-06d1a11d.entry.js} +1 -1
- package/dist/ionic/{p-b46bdb73.system.entry.js → p-07d854da.system.entry.js} +1 -1
- package/dist/ionic/p-0b955124.system.js +1 -1
- package/dist/ionic/{p-c994c528.system.entry.js → p-0be9430d.system.entry.js} +1 -1
- package/dist/ionic/{p-6e8d0527.system.entry.js → p-0ccc3e49.system.entry.js} +1 -1
- package/dist/ionic/{p-02bf61be.entry.js → p-11cce714.entry.js} +1 -1
- package/dist/ionic/p-12c0fd06.system.entry.js +4 -0
- package/dist/ionic/{p-c80c7e90.system.js → p-17907fef.system.js} +1 -1
- package/dist/ionic/{p-ab782835.system.entry.js → p-19280211.system.entry.js} +1 -1
- package/dist/ionic/{p-814aa0b4.system.entry.js → p-1aa383c4.system.entry.js} +1 -1
- package/dist/ionic/{p-3db5b566.system.entry.js → p-1e68eb2d.system.entry.js} +2 -2
- package/dist/ionic/{p-2203ea50.system.entry.js → p-20a899d6.system.entry.js} +1 -1
- package/dist/ionic/p-217cfd24.entry.js +4 -0
- package/dist/ionic/{p-b8e465da.system.entry.js → p-285f83fb.system.entry.js} +1 -1
- package/dist/ionic/{p-dd79d499.system.entry.js → p-2a99d6a2.system.entry.js} +1 -1
- package/dist/ionic/p-316b88f6.system.entry.js +4 -0
- package/dist/ionic/{p-61ba2137.system.js → p-31aad1b8.system.js} +1 -1
- package/dist/ionic/{p-5642acf7.system.entry.js → p-32173330.system.entry.js} +1 -1
- package/dist/ionic/p-328ca978.system.js +4 -0
- package/dist/ionic/{p-aeb2bfc4.entry.js → p-32d31724.entry.js} +1 -1
- package/dist/ionic/{p-a6a15217.system.entry.js → p-381d53fe.system.entry.js} +1 -1
- package/dist/ionic/{p-3348d9b6.entry.js → p-3bce3d27.entry.js} +1 -1
- package/dist/ionic/{p-49cbf8ca.entry.js → p-3f06f873.entry.js} +1 -1
- package/dist/ionic/{p-fd8ced99.system.js → p-41fe384b.system.js} +1 -1
- package/dist/ionic/{p-e3c13a24.system.entry.js → p-4340cc94.system.entry.js} +1 -1
- package/dist/ionic/p-435cdd08.js +4 -0
- package/dist/ionic/{p-c8f93816.system.entry.js → p-437a54c3.system.entry.js} +1 -1
- package/dist/ionic/p-46cc595c.js +4 -0
- package/dist/ionic/{p-8aecc954.system.entry.js → p-487a1d0e.system.entry.js} +1 -1
- package/dist/ionic/{p-b8c685a7.system.js → p-492a99b4.system.js} +1 -1
- package/dist/ionic/p-4b4253b1.js +4 -0
- package/dist/ionic/{p-6ac84217.entry.js → p-4bd628c4.entry.js} +1 -1
- package/dist/ionic/p-4d957d64.system.js +4 -0
- package/dist/ionic/{p-2fbf97f4.system.entry.js → p-4eb51750.system.entry.js} +1 -1
- package/dist/ionic/{p-fd36799d.system.js → p-54325470.system.js} +1 -1
- package/dist/ionic/{p-ec4e0057.entry.js → p-56bb3ae7.entry.js} +1 -1
- package/dist/ionic/{p-c2938ad7.system.entry.js → p-582ff69e.system.entry.js} +1 -1
- package/dist/ionic/p-58cc3084.js +4 -0
- package/dist/ionic/{p-1d1ef635.entry.js → p-5998886f.entry.js} +1 -1
- package/dist/ionic/{p-6028d77a.entry.js → p-5ab08b08.entry.js} +1 -1
- package/dist/ionic/{p-f7d618b7.entry.js → p-5c439e4b.entry.js} +1 -1
- package/dist/ionic/{p-31c495c2.js → p-5d908b54.js} +1 -1
- package/dist/ionic/{p-9ff0b9d7.entry.js → p-5dde8d3f.entry.js} +1 -1
- package/dist/ionic/p-5fb5218b.js +4 -0
- package/dist/ionic/{p-37c33319.system.js → p-5fc74894.system.js} +1 -1
- package/dist/ionic/{p-6871553b.system.js → p-6754e438.system.js} +1 -1
- package/dist/ionic/{p-814129a1.system.entry.js → p-676d3d91.system.entry.js} +1 -1
- package/dist/ionic/{p-9c69a78d.system.entry.js → p-68197628.system.entry.js} +2 -2
- package/dist/ionic/p-683a7d40.entry.js +4 -0
- package/dist/ionic/{p-faea6b57.entry.js → p-68795208.entry.js} +1 -1
- package/dist/ionic/{p-46e78ed6.entry.js → p-6dbfb274.entry.js} +1 -1
- package/dist/ionic/p-70420d55.entry.js +4 -0
- package/dist/ionic/p-705e30ec.system.js +4 -0
- package/dist/ionic/{p-1dc24d13.system.entry.js → p-732bbcac.system.entry.js} +1 -1
- package/dist/ionic/{p-590ecff0.entry.js → p-7550b7cd.entry.js} +1 -1
- package/dist/ionic/{p-743030ee.entry.js → p-75def519.entry.js} +1 -1
- package/dist/ionic/{p-1c6bc252.system.entry.js → p-78f825e5.system.entry.js} +1 -1
- package/dist/ionic/{p-b5839dc2.js → p-7ab579e4.js} +1 -1
- package/dist/ionic/{p-2581c0b4.system.entry.js → p-7c5dc3c2.system.entry.js} +1 -1
- package/dist/ionic/{p-2aa9dbb1.entry.js → p-7f378a2a.entry.js} +1 -1
- package/dist/ionic/{p-ba7347c4.entry.js → p-85752011.entry.js} +1 -1
- package/dist/ionic/{p-73fef0c6.entry.js → p-8705efd9.entry.js} +1 -1
- package/dist/ionic/{p-ce1cf1e0.system.entry.js → p-874981aa.system.entry.js} +1 -1
- package/dist/ionic/{p-44ba1907.system.entry.js → p-878d5d3c.system.entry.js} +2 -2
- package/dist/ionic/p-8ae4d69b.entry.js +4 -0
- package/dist/ionic/{p-a3f572a7.js → p-8b213742.js} +1 -1
- package/dist/ionic/{p-158e5d3f.entry.js → p-8f68a594.entry.js} +1 -1
- package/dist/ionic/p-903305e2.entry.js +4 -0
- package/dist/ionic/{p-ef065e0d.system.entry.js → p-9451f3b1.system.entry.js} +2 -2
- package/dist/ionic/{p-f3c1bbcb.entry.js → p-945d28b0.entry.js} +1 -1
- package/dist/ionic/{p-364fd2ae.system.entry.js → p-95641c85.system.entry.js} +2 -2
- package/dist/ionic/{p-ffee8d11.system.entry.js → p-9705cb8a.system.entry.js} +1 -1
- package/dist/ionic/{p-50b79c48.entry.js → p-982d43c5.entry.js} +1 -1
- package/dist/ionic/{p-b8c4df21.entry.js → p-98d67336.entry.js} +1 -1
- package/dist/ionic/{p-41cd4e22.system.entry.js → p-990b12ed.system.entry.js} +1 -1
- package/dist/ionic/{p-aca86637.system.entry.js → p-990c4ffc.system.entry.js} +1 -1
- package/dist/ionic/{p-156299c1.system.entry.js → p-993e5fa8.system.entry.js} +1 -1
- package/dist/ionic/{p-9393a49f.js → p-9b502efc.js} +1 -1
- package/dist/ionic/{p-68211d11.entry.js → p-9d043a12.entry.js} +1 -1
- package/dist/ionic/{p-2b17eb06.entry.js → p-a1b7245f.entry.js} +1 -1
- package/dist/ionic/p-a1daeb4e.js +4 -0
- package/dist/ionic/{p-e1386ddc.system.entry.js → p-a5d14e60.system.entry.js} +1 -1
- package/dist/ionic/{p-115d351a.entry.js → p-a5dbbe9f.entry.js} +1 -1
- package/dist/ionic/{p-58e3ae88.system.entry.js → p-a9401d22.system.entry.js} +1 -1
- package/dist/ionic/{p-7f90cee1.entry.js → p-ad2a4aea.entry.js} +1 -1
- package/dist/ionic/{p-b253ad7f.js → p-ae965bbd.js} +1 -1
- package/dist/ionic/{p-a69ca607.system.entry.js → p-b0309b53.system.entry.js} +1 -1
- package/dist/ionic/{p-9d10df75.system.entry.js → p-b10f1da7.system.entry.js} +1 -1
- package/dist/ionic/{p-336ef060.entry.js → p-b6f61c31.entry.js} +1 -1
- package/dist/ionic/{p-9954f160.entry.js → p-baa8ce33.entry.js} +1 -1
- package/dist/ionic/{p-ab722722.system.entry.js → p-bb164152.system.entry.js} +1 -1
- package/dist/ionic/{p-416b7011.system.entry.js → p-bb3a4e1c.system.entry.js} +1 -1
- package/dist/ionic/{p-48346946.system.entry.js → p-bc5b1ee8.system.entry.js} +1 -1
- package/dist/ionic/{p-78aade1a.entry.js → p-beae3f98.entry.js} +1 -1
- package/dist/ionic/{p-8ddc00f7.js → p-c7361cf7.js} +1 -1
- package/dist/ionic/{p-6e7f5166.entry.js → p-c7691a0d.entry.js} +1 -1
- package/dist/ionic/{p-e88ae7f0.system.entry.js → p-ca169c31.system.entry.js} +1 -1
- package/dist/ionic/p-cd55d66b.system.js +4 -0
- package/dist/ionic/{p-e4162cae.entry.js → p-cdfd75f6.entry.js} +1 -1
- package/dist/ionic/{p-0bc978ee.entry.js → p-d59bebec.entry.js} +1 -1
- package/dist/ionic/{p-a53d820e.system.entry.js → p-d675b413.system.entry.js} +1 -1
- package/dist/ionic/{p-a0da38e6.system.js → p-d86520e8.system.js} +1 -1
- package/dist/ionic/{p-e2bb92ed.system.js → p-db501e46.system.js} +1 -1
- package/dist/ionic/p-dc0438ee.system.entry.js +4 -0
- package/dist/ionic/{p-23771339.entry.js → p-dd3026cb.entry.js} +1 -1
- package/dist/ionic/{p-dd2392f1.entry.js → p-df0033ae.entry.js} +1 -1
- package/dist/ionic/{p-6c48dd91.system.js → p-e2719d33.system.js} +1 -1
- package/dist/ionic/{p-b853d98f.system.entry.js → p-e30ca961.system.entry.js} +1 -1
- package/dist/ionic/{p-f83192d4.entry.js → p-e3184698.entry.js} +1 -1
- package/dist/ionic/p-ec1b948f.entry.js +4 -0
- package/dist/ionic/{p-0a90cc4d.system.entry.js → p-eddae453.system.entry.js} +1 -1
- package/dist/ionic/{p-77cf63b4.entry.js → p-f461bf4d.entry.js} +1 -1
- package/dist/ionic/{p-3c6f02cf.system.js → p-f4945d0c.system.js} +1 -1
- package/dist/ionic/p-f7dc1a03.entry.js +4 -0
- package/dist/ionic/{p-c2289cd1.js → p-f9680e94.js} +1 -1
- package/dist/ionic/{p-9a71fceb.system.entry.js → p-faa8c9fc.system.entry.js} +1 -1
- package/dist/ionic/{p-6b1b24df.entry.js → p-fb3ff439.entry.js} +1 -1
- package/dist/ionic/{p-62a3c609.system.js → p-fb62e0e9.system.js} +1 -1
- package/dist/ionic/{p-e45248be.entry.js → p-fc3aeb8f.entry.js} +1 -1
- package/dist/ionic/p-fd53465c.system.entry.js +4 -0
- package/dist/types/components/checkbox/checkbox.d.ts +1 -24
- package/dist/types/components/range/range.d.ts +1 -21
- package/dist/types/components.d.ts +0 -18
- package/dist/types/utils/config.d.ts +6 -0
- package/hydrate/index.js +532 -606
- package/package.json +1 -1
- package/components/form-controller.js +0 -64
- package/dist/cjs/form-controller-7b90d7b7.js +0 -66
- package/dist/collection/components/checkbox/test/legacy/basic/checkbox.e2e.js +0 -68
- package/dist/collection/components/checkbox/test/legacy/indeterminate/checkbox.e2e.js +0 -14
- package/dist/collection/components/range/test/legacy/a11y/range.e2e.js +0 -49
- package/dist/collection/components/range/test/legacy/active-bar-start/range.e2e.js +0 -14
- package/dist/collection/components/range/test/legacy/basic/range.e2e.js +0 -75
- package/dist/collection/components/range/test/legacy/range-events.e2e.js +0 -90
- package/dist/collection/components/range/test/legacy/scroll-target/range.e2e.js +0 -32
- package/dist/esm/form-controller-014aa89f.js +0 -64
- package/dist/esm-es5/form-controller-014aa89f.js +0 -4
- package/dist/esm-es5/index-4b98143d.js +0 -4
- package/dist/esm-es5/ios.transition-7ff7381d.js +0 -4
- package/dist/esm-es5/md.transition-28a9a26b.js +0 -4
- package/dist/esm-es5/swipe-back-7f7620ca.js +0 -4
- package/dist/ionic/p-0d25b742.js +0 -4
- package/dist/ionic/p-19385313.entry.js +0 -4
- package/dist/ionic/p-1b8684c2.system.entry.js +0 -4
- package/dist/ionic/p-25b08bc4.system.js +0 -4
- package/dist/ionic/p-2f6b3478.system.entry.js +0 -4
- package/dist/ionic/p-30d77a91.system.js +0 -4
- package/dist/ionic/p-3eb2da31.js +0 -4
- package/dist/ionic/p-4f777b5e.js +0 -4
- package/dist/ionic/p-54908979.entry.js +0 -4
- package/dist/ionic/p-7d6c9121.entry.js +0 -4
- package/dist/ionic/p-8f1ce253.js +0 -4
- package/dist/ionic/p-90149377.system.entry.js +0 -4
- package/dist/ionic/p-95861049.entry.js +0 -4
- package/dist/ionic/p-95c44e02.system.js +0 -4
- package/dist/ionic/p-b0ba9ea5.entry.js +0 -4
- package/dist/ionic/p-b17f058b.system.js +0 -4
- package/dist/ionic/p-b4d8fe47.js +0 -4
- package/dist/ionic/p-c5c3710c.js +0 -4
- package/dist/ionic/p-c6fef62b.system.js +0 -4
- package/dist/ionic/p-c858f685.js +0 -4
- package/dist/ionic/p-d2670dd3.entry.js +0 -4
- package/dist/ionic/p-d9310104.entry.js +0 -4
- package/dist/ionic/p-fe990e42.system.entry.js +0 -4
|
@@ -70,7 +70,7 @@ export class TabButton {
|
|
|
70
70
|
rel,
|
|
71
71
|
target,
|
|
72
72
|
};
|
|
73
|
-
return (h(Host, { key: '
|
|
73
|
+
return (h(Host, { key: 'b37743b20b93c27ffb0094b35545292533f9d30f', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
|
|
74
74
|
[mode]: true,
|
|
75
75
|
'tab-selected': selected,
|
|
76
76
|
'tab-disabled': disabled,
|
|
@@ -82,7 +82,7 @@ export class TabButton {
|
|
|
82
82
|
'ion-activatable': true,
|
|
83
83
|
'ion-selectable': true,
|
|
84
84
|
'ion-focusable': true,
|
|
85
|
-
} }, h("a", Object.assign({ key: '
|
|
85
|
+
} }, h("a", Object.assign({ key: '7dd2b3aaa96f64a8b7411730ed8b201466a97162' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), h("span", { key: 'cb328541793b6aa469d5d3bff662d2efa56dc977', class: "button-inner" }, h("slot", { key: '904a1b063f481ac86d5bea967a375addc9c96471' })), mode === 'md' && h("ion-ripple-effect", { type: "unbounded" }))));
|
|
86
86
|
}
|
|
87
87
|
static get is() { return "ion-tab-button"; }
|
|
88
88
|
static get encapsulation() { return "shadow"; }
|
|
@@ -135,7 +135,7 @@ export class Tabs {
|
|
|
135
135
|
return Array.from(this.el.querySelectorAll('ion-tab'));
|
|
136
136
|
}
|
|
137
137
|
render() {
|
|
138
|
-
return (h(Host, { key: '
|
|
138
|
+
return (h(Host, { key: 'e2cac6a2e54514f31cfe65692e34e88d530b204f', onIonTabButtonClick: this.onTabClicked }, h("slot", { key: '53bc64f37aebb9a68c6e2db2c89ec6d39cd64bbd', name: "top" }), h("div", { key: '72f4f0ae53518631d6c1b6276da3f63147c28cfc', class: "tabs-inner" }, h("slot", { key: '79f1eece652cf00a3dd8359b68e68059816ff704' })), h("slot", { key: '3fbaf52447720ee14c7db06f2bf71a92093847f4', name: "bottom" })));
|
|
139
139
|
}
|
|
140
140
|
static get is() { return "ion-tabs"; }
|
|
141
141
|
static get encapsulation() { return "shadow"; }
|
|
@@ -13,9 +13,9 @@ export class Text {
|
|
|
13
13
|
}
|
|
14
14
|
render() {
|
|
15
15
|
const mode = getIonMode(this);
|
|
16
|
-
return (h(Host, { key: '
|
|
16
|
+
return (h(Host, { key: '9b5decc6dfca4fbaf0fe42696a9833ffee269a7d', class: createColorClasses(this.color, {
|
|
17
17
|
[mode]: true,
|
|
18
|
-
}) }, h("slot", { key: '
|
|
18
|
+
}) }, h("slot", { key: '5b822dcc0f6255819cec7626d0c0f7f9873aaab9' })));
|
|
19
19
|
}
|
|
20
20
|
static get is() { return "ion-text"; }
|
|
21
21
|
static get encapsulation() { return "shadow"; }
|
|
@@ -359,7 +359,7 @@ export class Textarea {
|
|
|
359
359
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
360
360
|
*/
|
|
361
361
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
|
|
362
|
-
return (h(Host, { key: '
|
|
362
|
+
return (h(Host, { key: '3adbec7986ecb5a274ecf341b938432c3d04705a', class: createColorClasses(this.color, {
|
|
363
363
|
[mode]: true,
|
|
364
364
|
'has-value': hasValue,
|
|
365
365
|
'has-focus': hasFocus,
|
|
@@ -368,7 +368,7 @@ export class Textarea {
|
|
|
368
368
|
[`textarea-shape-${shape}`]: shape !== undefined,
|
|
369
369
|
[`textarea-label-placement-${labelPlacement}`]: true,
|
|
370
370
|
'textarea-disabled': disabled,
|
|
371
|
-
}) }, h("label", { key: '
|
|
371
|
+
}) }, h("label", { key: '9df12985193c4fa6a277b71bcac668d7e61f02ac', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: 'b39ac1d580d3bcaad8cc028e703960cd2277fa10', class: "textarea-wrapper-inner" }, h("div", { key: 'b2d6971c51683fe67121c4d0e4ac8e17723fa59d', class: "start-slot-wrapper" }, h("slot", { key: 'b229d482a4ff208858dffc6ff3a5ad661a2a7288', name: "start" })), h("div", { key: 'b2d2770afa7012f055463df6a302bed685b46107', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, h("textarea", Object.assign({ key: 'a18150f8d381e0569f6d71867451ce8176157521', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value)), h("div", { key: 'f20f6e5c9b339cff4bdd7bffe59afd27b05ce8b9', class: "end-slot-wrapper" }, h("slot", { key: '64a10ebdb4a89ec1c3d34c29e8c9403d3d788f3b', name: "end" }))), shouldRenderHighlight && h("div", { class: "textarea-highlight" })), this.renderBottomContent()));
|
|
372
372
|
}
|
|
373
373
|
static get is() { return "ion-textarea"; }
|
|
374
374
|
static get encapsulation() { return "scoped"; }
|
|
@@ -5,7 +5,7 @@ import { Host, h } from "@stencil/core";
|
|
|
5
5
|
import { getIonMode } from "../../global/ionic-global";
|
|
6
6
|
export class Thumbnail {
|
|
7
7
|
render() {
|
|
8
|
-
return (h(Host, { key: '
|
|
8
|
+
return (h(Host, { key: '68bac4e80f5d27131690fd20dfabff2618743206', class: getIonMode(this) }, h("slot", { key: '89f46a686288428391cdfaef3384824751ae3d05' })));
|
|
9
9
|
}
|
|
10
10
|
static get is() { return "ion-thumbnail"; }
|
|
11
11
|
static get encapsulation() { return "shadow"; }
|
|
@@ -27,11 +27,11 @@ export class ToolbarTitle {
|
|
|
27
27
|
render() {
|
|
28
28
|
const mode = getIonMode(this);
|
|
29
29
|
const size = this.getSize();
|
|
30
|
-
return (h(Host, { key: '
|
|
30
|
+
return (h(Host, { key: '53fb524f6763307bd0a1f077ada8e9ee82c865c0', class: createColorClasses(this.color, {
|
|
31
31
|
[mode]: true,
|
|
32
32
|
[`title-${size}`]: true,
|
|
33
33
|
'title-rtl': document.dir === 'rtl',
|
|
34
|
-
}) }, h("div", { key: '
|
|
34
|
+
}) }, h("div", { key: '5957214d78b666fd0ba988c3f4cc18368a92deac', class: "toolbar-title" }, h("slot", { key: '444b2019e079d5ed6decbfc4db488757fcf70094' }))));
|
|
35
35
|
}
|
|
36
36
|
static get is() { return "ion-title"; }
|
|
37
37
|
static get encapsulation() { return "shadow"; }
|
|
@@ -384,9 +384,9 @@ export class Toast {
|
|
|
384
384
|
if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
|
|
385
385
|
printIonWarning('This toast is using start and end buttons with the stacked toast layout. We recommend following the best practice of using either start or end buttons with the stacked toast layout.', el);
|
|
386
386
|
}
|
|
387
|
-
return (h(Host, Object.assign({ key: '
|
|
387
|
+
return (h(Host, Object.assign({ key: '883ac055d9c73336b8912bdf25e18d16cc6b81fe', tabindex: "-1" }, this.htmlAttributes, { style: {
|
|
388
388
|
zIndex: `${60000 + this.overlayIndex}`,
|
|
389
|
-
}, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { key: '
|
|
389
|
+
}, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { key: 'b34cc9f7cfa69a8d9ce343686aa14d0d0c174e97', class: wrapperClass }, h("div", { key: '08ff305e319454116f24a4d354c50949905411d6', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (h("ion-icon", { class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), h("div", { key: '854f71fc8a2ed078626011b07ee599cd17312a86', class: "toast-content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
|
|
390
390
|
}
|
|
391
391
|
static get is() { return "ion-toast"; }
|
|
392
392
|
static get encapsulation() { return "shadow"; }
|
|
@@ -157,7 +157,7 @@ export class Toggle {
|
|
|
157
157
|
const value = this.getValue();
|
|
158
158
|
const rtl = isRTL(el) ? 'rtl' : 'ltr';
|
|
159
159
|
renderHiddenInput(true, el, name, checked ? value : '', disabled);
|
|
160
|
-
return (h(Host, { key: '
|
|
160
|
+
return (h(Host, { key: '3c0acc5498682a610e7a6f095590ad79391e1ba4', onClick: this.onClick, class: createColorClasses(color, {
|
|
161
161
|
[mode]: true,
|
|
162
162
|
'in-item': hostContext('ion-item', el),
|
|
163
163
|
'toggle-activated': activated,
|
|
@@ -167,10 +167,10 @@ export class Toggle {
|
|
|
167
167
|
[`toggle-alignment-${alignment}`]: true,
|
|
168
168
|
[`toggle-label-placement-${labelPlacement}`]: true,
|
|
169
169
|
[`toggle-${rtl}`]: true,
|
|
170
|
-
}) }, h("label", { key: '
|
|
170
|
+
}) }, h("label", { key: '68133afe76d290ebcb8f05883a27875529f0bfff', class: "toggle-wrapper" }, h("input", Object.assign({ key: 'abd6aad2a3e62fbffb80d5c3dbdc57182bc97fab', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, this.inheritedAttributes)), h("div", { key: '8e70ddd2b4daada4bf16e85e56df9078116933f9', class: {
|
|
171
171
|
'label-text-wrapper': true,
|
|
172
172
|
'label-text-wrapper-hidden': !this.hasLabel,
|
|
173
|
-
}, part: "label" }, h("slot", { key: '
|
|
173
|
+
}, part: "label" }, h("slot", { key: 'eae25cdeefe1e6589f06b3a2568522e74cf44d66' })), h("div", { key: 'df9adddd1d8d73c8a23e1e91261d84c876ac5935', class: "native-wrapper" }, this.renderToggleControl()))));
|
|
174
174
|
}
|
|
175
175
|
static get is() { return "ion-toggle"; }
|
|
176
176
|
static get encapsulation() { return "shadow"; }
|
|
@@ -62,10 +62,10 @@ export class Toolbar {
|
|
|
62
62
|
this.childrenStyles.forEach((value) => {
|
|
63
63
|
Object.assign(childStyles, value);
|
|
64
64
|
});
|
|
65
|
-
return (h(Host, { key: '
|
|
65
|
+
return (h(Host, { key: 'f72d6a7ed20c88ba15d64050acfc20f320569862', class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {
|
|
66
66
|
[mode]: true,
|
|
67
67
|
'in-toolbar': hostContext('ion-toolbar', this.el),
|
|
68
|
-
})) }, h("div", { key: '
|
|
68
|
+
})) }, h("div", { key: 'ccf18eea9756ca56ca828b05bd3f86cf8a32e24c', class: "toolbar-background" }), h("div", { key: '1fa699d8e17f57b42a52d47a1bdb793f2cbbfe5d', class: "toolbar-container" }, h("slot", { key: 'ef4d877bad0918eefdc67fa7aa258024a58d26ef', name: "start" }), h("slot", { key: '41858db7a8d58c9165952c9336731d621ec3c2b8', name: "secondary" }), h("div", { key: '577770b9346b48a0fa1412cbdbd9393d553d2286', class: "toolbar-content" }, h("slot", { key: 'ae47b29e1f7d2c3dde7a170c9737b48f075139c2' })), h("slot", { key: 'cfbf7879daf1a38fee434335abff936d8f3690e0', name: "primary" }), h("slot", { key: 'ed3a66248f43e0749f6aef9fb78ea4f5034c0774', name: "end" }))));
|
|
69
69
|
}
|
|
70
70
|
static get is() { return "ion-toolbar"; }
|
|
71
71
|
static get encapsulation() { return "shadow"; }
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { Build, writeTask } from "@stencil/core";
|
|
5
|
+
import { printIonWarning } from "../logging/index";
|
|
5
6
|
import { LIFECYCLE_DID_ENTER, LIFECYCLE_DID_LEAVE, LIFECYCLE_WILL_ENTER, LIFECYCLE_WILL_LEAVE, } from "../../components/nav/constants";
|
|
7
|
+
import { config } from "../../global/config";
|
|
6
8
|
import { raf } from "../helpers";
|
|
7
9
|
const iosTransitionAnimation = () => import('./ios.transition');
|
|
8
10
|
const mdTransitionAnimation = () => import('./md.transition');
|
|
@@ -24,9 +26,23 @@ export const transition = (opts) => {
|
|
|
24
26
|
});
|
|
25
27
|
});
|
|
26
28
|
};
|
|
29
|
+
const LAST_FOCUS = 'ion-last-focus';
|
|
27
30
|
const beforeTransition = (opts) => {
|
|
28
31
|
const enteringEl = opts.enteringEl;
|
|
29
32
|
const leavingEl = opts.leavingEl;
|
|
33
|
+
const focusManagerEnabled = config.get('experimentalFocusManagerPriority', false);
|
|
34
|
+
/**
|
|
35
|
+
* When going back to a previously visited page
|
|
36
|
+
* focus should typically be moved back to the
|
|
37
|
+
* element that was last focused when the user
|
|
38
|
+
* was on this view.
|
|
39
|
+
*/
|
|
40
|
+
if (focusManagerEnabled) {
|
|
41
|
+
const activeEl = document.activeElement;
|
|
42
|
+
if (activeEl !== null && (leavingEl === null || leavingEl === void 0 ? void 0 : leavingEl.contains(activeEl))) {
|
|
43
|
+
activeEl.setAttribute(LAST_FOCUS, 'true');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
30
46
|
setZIndex(enteringEl, leavingEl, opts.direction);
|
|
31
47
|
if (opts.showGoBack) {
|
|
32
48
|
enteringEl.classList.add('can-go-back');
|
|
@@ -52,6 +68,24 @@ const runTransition = async (opts) => {
|
|
|
52
68
|
const ani = animationBuilder && Build.isBrowser ? animation(animationBuilder, opts) : noAnimation(opts); // fast path for no animation
|
|
53
69
|
return ani;
|
|
54
70
|
};
|
|
71
|
+
/**
|
|
72
|
+
* Moves focus to a specified element.
|
|
73
|
+
* Note that we do not remove the tabindex
|
|
74
|
+
* because that can result in an unintentional
|
|
75
|
+
* blur. Non-focusables can't be focused, so the
|
|
76
|
+
* body will get focused again.
|
|
77
|
+
*/
|
|
78
|
+
const moveFocus = (el) => {
|
|
79
|
+
el.tabIndex = -1;
|
|
80
|
+
el.focus();
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Elements that are hidden using `display: none` should
|
|
84
|
+
* not be focused even if they are present in the DOM.
|
|
85
|
+
*/
|
|
86
|
+
const isVisible = (el) => {
|
|
87
|
+
return el.offsetParent !== null;
|
|
88
|
+
};
|
|
55
89
|
const afterTransition = (opts) => {
|
|
56
90
|
const enteringEl = opts.enteringEl;
|
|
57
91
|
const leavingEl = opts.leavingEl;
|
|
@@ -61,6 +95,69 @@ const afterTransition = (opts) => {
|
|
|
61
95
|
leavingEl.classList.remove('ion-page-invisible');
|
|
62
96
|
leavingEl.style.removeProperty('pointer-events');
|
|
63
97
|
}
|
|
98
|
+
const focusManagerPriorities = config.get('experimentalFocusManagerPriority', false);
|
|
99
|
+
if (Array.isArray(focusManagerPriorities) && !enteringEl.contains(document.activeElement)) {
|
|
100
|
+
/**
|
|
101
|
+
* When going back to a previously visited view
|
|
102
|
+
* focus should always be moved back to the element
|
|
103
|
+
* that the user was last focused on when they were on this view.
|
|
104
|
+
*/
|
|
105
|
+
const lastFocus = enteringEl.querySelector(`[${LAST_FOCUS}]`);
|
|
106
|
+
if (lastFocus && isVisible(lastFocus)) {
|
|
107
|
+
moveFocus(lastFocus);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
for (const priority of focusManagerPriorities) {
|
|
111
|
+
switch (priority) {
|
|
112
|
+
case 'content':
|
|
113
|
+
/**
|
|
114
|
+
* If no level one heading exists then we should at least focus the
|
|
115
|
+
* header so focus starts at the top of the page.
|
|
116
|
+
*/
|
|
117
|
+
const content = enteringEl.querySelector('main, [role="main"]');
|
|
118
|
+
if (content && isVisible(content)) {
|
|
119
|
+
moveFocus(content);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
break;
|
|
123
|
+
case 'heading':
|
|
124
|
+
/**
|
|
125
|
+
* If no last focus exists then we should prefer to focus
|
|
126
|
+
* level one headings. We do not prioritize the header yet
|
|
127
|
+
* because the header can have non-title elements such as
|
|
128
|
+
* a back button which is not necessarily helpful
|
|
129
|
+
* to focus first.
|
|
130
|
+
*/
|
|
131
|
+
const headingOne = enteringEl.querySelector('h1, [role="heading"][aria-level="1"]');
|
|
132
|
+
if (headingOne && isVisible(headingOne)) {
|
|
133
|
+
moveFocus(headingOne);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
break;
|
|
137
|
+
case 'banner':
|
|
138
|
+
/**
|
|
139
|
+
* If no level one heading exists then we should at least focus the
|
|
140
|
+
* header so focus starts at the top of the page.
|
|
141
|
+
*/
|
|
142
|
+
const header = enteringEl.querySelector('header, [role="banner"]');
|
|
143
|
+
if (header && isVisible(header)) {
|
|
144
|
+
moveFocus(header);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
break;
|
|
148
|
+
default:
|
|
149
|
+
printIonWarning(`Unrecognized focus manager priority value ${priority}`);
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* If there is no header then focus the page
|
|
155
|
+
* so focus at least moves to the correct view.
|
|
156
|
+
* The browser will then determine where within the
|
|
157
|
+
* page to move focus to.
|
|
158
|
+
*/
|
|
159
|
+
moveFocus(enteringEl);
|
|
160
|
+
}
|
|
64
161
|
};
|
|
65
162
|
const getAnimationBuilder = async (opts) => {
|
|
66
163
|
if (!opts.leavingEl || !opts.animated || opts.duration === 0) {
|
|
@@ -93,7 +190,16 @@ const animation = async (animationBuilder, opts) => {
|
|
|
93
190
|
const noAnimation = async (opts) => {
|
|
94
191
|
const enteringEl = opts.enteringEl;
|
|
95
192
|
const leavingEl = opts.leavingEl;
|
|
96
|
-
|
|
193
|
+
const focusManagerEnabled = config.get('experimentalFocusManagerPriority', false);
|
|
194
|
+
/**
|
|
195
|
+
* If the focus manager is enabled then we
|
|
196
|
+
* need to wait for Ionic components to be rendered
|
|
197
|
+
* otherwise the correct component to focus may not
|
|
198
|
+
* be focused because it is still hidden.
|
|
199
|
+
* However, if the manager is not enabled
|
|
200
|
+
* then there's no need to wait since there will be no animation.
|
|
201
|
+
*/
|
|
202
|
+
await waitForReady(opts, focusManagerEnabled);
|
|
97
203
|
fireWillEvents(enteringEl, leavingEl);
|
|
98
204
|
fireDidEvents(enteringEl, leavingEl);
|
|
99
205
|
return {
|
package/dist/docs.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"timestamp": "2024-02-
|
|
2
|
+
"timestamp": "2024-02-15T22:39:30",
|
|
3
3
|
"compiler": {
|
|
4
4
|
"name": "@stencil/core",
|
|
5
5
|
"version": "4.12.0",
|
|
@@ -5199,30 +5199,6 @@
|
|
|
5199
5199
|
"optional": false,
|
|
5200
5200
|
"required": false
|
|
5201
5201
|
},
|
|
5202
|
-
{
|
|
5203
|
-
"name": "legacy",
|
|
5204
|
-
"type": "boolean | undefined",
|
|
5205
|
-
"complexType": {
|
|
5206
|
-
"original": "boolean",
|
|
5207
|
-
"resolved": "boolean | undefined",
|
|
5208
|
-
"references": {}
|
|
5209
|
-
},
|
|
5210
|
-
"mutable": false,
|
|
5211
|
-
"attr": "legacy",
|
|
5212
|
-
"reflectToAttr": false,
|
|
5213
|
-
"docs": "Set the `legacy` property to `true` to forcibly use the legacy form control markup.\nIonic will only opt checkboxes in to the modern form markup when they are\nusing either the `aria-label` attribute or have text in the default slot. As a result,\nthe `legacy` property should only be used as an escape hatch when you want to\navoid this automatic opt-in behavior.\n\nNote that this property will be removed in an upcoming major release\nof Ionic, and all form components will be opted-in to using the modern form markup.",
|
|
5214
|
-
"docsTags": [],
|
|
5215
|
-
"values": [
|
|
5216
|
-
{
|
|
5217
|
-
"type": "boolean"
|
|
5218
|
-
},
|
|
5219
|
-
{
|
|
5220
|
-
"type": "undefined"
|
|
5221
|
-
}
|
|
5222
|
-
],
|
|
5223
|
-
"optional": true,
|
|
5224
|
-
"required": false
|
|
5225
|
-
},
|
|
5226
5202
|
{
|
|
5227
5203
|
"name": "mode",
|
|
5228
5204
|
"type": "\"ios\" | \"md\"",
|
|
@@ -20631,30 +20607,6 @@
|
|
|
20631
20607
|
"optional": false,
|
|
20632
20608
|
"required": false
|
|
20633
20609
|
},
|
|
20634
|
-
{
|
|
20635
|
-
"name": "legacy",
|
|
20636
|
-
"type": "boolean | undefined",
|
|
20637
|
-
"complexType": {
|
|
20638
|
-
"original": "boolean",
|
|
20639
|
-
"resolved": "boolean | undefined",
|
|
20640
|
-
"references": {}
|
|
20641
|
-
},
|
|
20642
|
-
"mutable": false,
|
|
20643
|
-
"attr": "legacy",
|
|
20644
|
-
"reflectToAttr": false,
|
|
20645
|
-
"docs": "Set the `legacy` property to `true` to forcibly use the legacy form control markup.\nIonic will only opt components in to the modern form markup when they are\nusing either the `aria-label` attribute or the `label` property. As a result,\nthe `legacy` property should only be used as an escape hatch when you want to\navoid this automatic opt-in behavior.\nNote that this property will be removed in an upcoming major release\nof Ionic, and all form components will be opted-in to using the modern form markup.",
|
|
20646
|
-
"docsTags": [],
|
|
20647
|
-
"values": [
|
|
20648
|
-
{
|
|
20649
|
-
"type": "boolean"
|
|
20650
|
-
},
|
|
20651
|
-
{
|
|
20652
|
-
"type": "undefined"
|
|
20653
|
-
}
|
|
20654
|
-
],
|
|
20655
|
-
"optional": true,
|
|
20656
|
-
"required": false
|
|
20657
|
-
},
|
|
20658
20610
|
{
|
|
20659
20611
|
"name": "max",
|
|
20660
20612
|
"type": "number",
|
|
@@ -29635,11 +29587,6 @@
|
|
|
29635
29587
|
"docstring": "",
|
|
29636
29588
|
"path": "src/components/checkbox/checkbox-interface.ts"
|
|
29637
29589
|
},
|
|
29638
|
-
"src/interface.d.ts::StyleEventDetail": {
|
|
29639
|
-
"declaration": "export interface StyleEventDetail {\n [styleName: string]: boolean;\n}",
|
|
29640
|
-
"docstring": "",
|
|
29641
|
-
"path": "src/interface.d.ts"
|
|
29642
|
-
},
|
|
29643
29590
|
"src/components/content/content-interface.ts::ScrollBaseDetail": {
|
|
29644
29591
|
"declaration": "export interface ScrollBaseDetail {\n isScrolling: boolean;\n}",
|
|
29645
29592
|
"docstring": "",
|
|
@@ -29680,6 +29627,11 @@
|
|
|
29680
29627
|
"docstring": "",
|
|
29681
29628
|
"path": "src/components/datetime/datetime-interface.ts"
|
|
29682
29629
|
},
|
|
29630
|
+
"src/interface.d.ts::StyleEventDetail": {
|
|
29631
|
+
"declaration": "export interface StyleEventDetail {\n [styleName: string]: boolean;\n}",
|
|
29632
|
+
"docstring": "",
|
|
29633
|
+
"path": "src/interface.d.ts"
|
|
29634
|
+
},
|
|
29683
29635
|
"src/components/picker-column/picker-column-interfaces.ts::PickerColumnChangeEventDetail": {
|
|
29684
29636
|
"declaration": "export interface PickerColumnChangeEventDetail {\n value: PickerColumnValue;\n}",
|
|
29685
29637
|
"docstring": "",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { c as componentOnReady } from './helpers-
|
|
4
|
+
import { c as componentOnReady } from './helpers-6f6a912f.js';
|
|
5
5
|
|
|
6
6
|
// TODO(FW-2832): types
|
|
7
7
|
const attachComponent = async (delegate, container, component, cssClasses, componentProps, inline) => {
|
|
@@ -415,4 +415,4 @@ const shallowEqualStringMap = (map1, map2) => {
|
|
|
415
415
|
return true;
|
|
416
416
|
};
|
|
417
417
|
|
|
418
|
-
export { addEventListener as a, removeEventListener as b, componentOnReady as c, renderHiddenInput as d,
|
|
418
|
+
export { addEventListener as a, removeEventListener as b, componentOnReady as c, renderHiddenInput as d, debounceEvent as e, focusElement as f, getElementRoot as g, inheritAttributes as h, inheritAriaAttributes as i, clamp as j, hasLazyBuild as k, getAriaLabel as l, hasShadowDom as m, assert as n, isEndSide as o, debounce as p, now as q, raf as r, shallowEqualStringMap as s, transitionEndAsync as t, pointerCoord as u };
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
import { d as doc } from './index-a5d50daf.js';
|
|
5
5
|
import { MENU_BACK_BUTTON_PRIORITY } from './hardware-back-button-f42b9c80.js';
|
|
6
6
|
import { p as printIonWarning } from './index-9b0d46f4.js';
|
|
7
|
-
import { c as componentOnReady } from './helpers-
|
|
7
|
+
import { c as componentOnReady } from './helpers-6f6a912f.js';
|
|
8
8
|
import { b as getIonMode } from './ionic-global-778b7863.js';
|
|
9
|
-
import { c as createAnimation } from './animation-
|
|
9
|
+
import { c as createAnimation } from './animation-2b6dd235.js';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* baseAnimation
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { d as doc } from './index-a5d50daf.js';
|
|
5
|
-
import {
|
|
5
|
+
import { q as now, u as pointerCoord } from './helpers-6f6a912f.js';
|
|
6
6
|
|
|
7
7
|
const startTapClick = (config) => {
|
|
8
8
|
if (doc === undefined) {
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { w as writeTask, B as Build } from './index-73881b51.js';
|
|
5
|
-
import {
|
|
5
|
+
import { p as printIonWarning } from './index-9b0d46f4.js';
|
|
6
|
+
import { c as config } from './ionic-global-778b7863.js';
|
|
7
|
+
import { r as raf } from './helpers-6f6a912f.js';
|
|
6
8
|
|
|
7
9
|
const LIFECYCLE_WILL_ENTER = 'ionViewWillEnter';
|
|
8
10
|
const LIFECYCLE_DID_ENTER = 'ionViewDidEnter';
|
|
@@ -10,8 +12,8 @@ const LIFECYCLE_WILL_LEAVE = 'ionViewWillLeave';
|
|
|
10
12
|
const LIFECYCLE_DID_LEAVE = 'ionViewDidLeave';
|
|
11
13
|
const LIFECYCLE_WILL_UNLOAD = 'ionViewWillUnload';
|
|
12
14
|
|
|
13
|
-
const iosTransitionAnimation = () => import('./ios.transition-
|
|
14
|
-
const mdTransitionAnimation = () => import('./md.transition-
|
|
15
|
+
const iosTransitionAnimation = () => import('./ios.transition-8853da89.js');
|
|
16
|
+
const mdTransitionAnimation = () => import('./md.transition-e0cb5ce0.js');
|
|
15
17
|
// TODO(FW-2832): types
|
|
16
18
|
const transition = (opts) => {
|
|
17
19
|
return new Promise((resolve, reject) => {
|
|
@@ -30,9 +32,23 @@ const transition = (opts) => {
|
|
|
30
32
|
});
|
|
31
33
|
});
|
|
32
34
|
};
|
|
35
|
+
const LAST_FOCUS = 'ion-last-focus';
|
|
33
36
|
const beforeTransition = (opts) => {
|
|
34
37
|
const enteringEl = opts.enteringEl;
|
|
35
38
|
const leavingEl = opts.leavingEl;
|
|
39
|
+
const focusManagerEnabled = config.get('experimentalFocusManagerPriority', false);
|
|
40
|
+
/**
|
|
41
|
+
* When going back to a previously visited page
|
|
42
|
+
* focus should typically be moved back to the
|
|
43
|
+
* element that was last focused when the user
|
|
44
|
+
* was on this view.
|
|
45
|
+
*/
|
|
46
|
+
if (focusManagerEnabled) {
|
|
47
|
+
const activeEl = document.activeElement;
|
|
48
|
+
if (activeEl !== null && (leavingEl === null || leavingEl === void 0 ? void 0 : leavingEl.contains(activeEl))) {
|
|
49
|
+
activeEl.setAttribute(LAST_FOCUS, 'true');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
36
52
|
setZIndex(enteringEl, leavingEl, opts.direction);
|
|
37
53
|
if (opts.showGoBack) {
|
|
38
54
|
enteringEl.classList.add('can-go-back');
|
|
@@ -58,6 +74,24 @@ const runTransition = async (opts) => {
|
|
|
58
74
|
const ani = animationBuilder && Build.isBrowser ? animation(animationBuilder, opts) : noAnimation(opts); // fast path for no animation
|
|
59
75
|
return ani;
|
|
60
76
|
};
|
|
77
|
+
/**
|
|
78
|
+
* Moves focus to a specified element.
|
|
79
|
+
* Note that we do not remove the tabindex
|
|
80
|
+
* because that can result in an unintentional
|
|
81
|
+
* blur. Non-focusables can't be focused, so the
|
|
82
|
+
* body will get focused again.
|
|
83
|
+
*/
|
|
84
|
+
const moveFocus = (el) => {
|
|
85
|
+
el.tabIndex = -1;
|
|
86
|
+
el.focus();
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Elements that are hidden using `display: none` should
|
|
90
|
+
* not be focused even if they are present in the DOM.
|
|
91
|
+
*/
|
|
92
|
+
const isVisible = (el) => {
|
|
93
|
+
return el.offsetParent !== null;
|
|
94
|
+
};
|
|
61
95
|
const afterTransition = (opts) => {
|
|
62
96
|
const enteringEl = opts.enteringEl;
|
|
63
97
|
const leavingEl = opts.leavingEl;
|
|
@@ -67,6 +101,69 @@ const afterTransition = (opts) => {
|
|
|
67
101
|
leavingEl.classList.remove('ion-page-invisible');
|
|
68
102
|
leavingEl.style.removeProperty('pointer-events');
|
|
69
103
|
}
|
|
104
|
+
const focusManagerPriorities = config.get('experimentalFocusManagerPriority', false);
|
|
105
|
+
if (Array.isArray(focusManagerPriorities) && !enteringEl.contains(document.activeElement)) {
|
|
106
|
+
/**
|
|
107
|
+
* When going back to a previously visited view
|
|
108
|
+
* focus should always be moved back to the element
|
|
109
|
+
* that the user was last focused on when they were on this view.
|
|
110
|
+
*/
|
|
111
|
+
const lastFocus = enteringEl.querySelector(`[${LAST_FOCUS}]`);
|
|
112
|
+
if (lastFocus && isVisible(lastFocus)) {
|
|
113
|
+
moveFocus(lastFocus);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
for (const priority of focusManagerPriorities) {
|
|
117
|
+
switch (priority) {
|
|
118
|
+
case 'content':
|
|
119
|
+
/**
|
|
120
|
+
* If no level one heading exists then we should at least focus the
|
|
121
|
+
* header so focus starts at the top of the page.
|
|
122
|
+
*/
|
|
123
|
+
const content = enteringEl.querySelector('main, [role="main"]');
|
|
124
|
+
if (content && isVisible(content)) {
|
|
125
|
+
moveFocus(content);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
break;
|
|
129
|
+
case 'heading':
|
|
130
|
+
/**
|
|
131
|
+
* If no last focus exists then we should prefer to focus
|
|
132
|
+
* level one headings. We do not prioritize the header yet
|
|
133
|
+
* because the header can have non-title elements such as
|
|
134
|
+
* a back button which is not necessarily helpful
|
|
135
|
+
* to focus first.
|
|
136
|
+
*/
|
|
137
|
+
const headingOne = enteringEl.querySelector('h1, [role="heading"][aria-level="1"]');
|
|
138
|
+
if (headingOne && isVisible(headingOne)) {
|
|
139
|
+
moveFocus(headingOne);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
break;
|
|
143
|
+
case 'banner':
|
|
144
|
+
/**
|
|
145
|
+
* If no level one heading exists then we should at least focus the
|
|
146
|
+
* header so focus starts at the top of the page.
|
|
147
|
+
*/
|
|
148
|
+
const header = enteringEl.querySelector('header, [role="banner"]');
|
|
149
|
+
if (header && isVisible(header)) {
|
|
150
|
+
moveFocus(header);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
break;
|
|
154
|
+
default:
|
|
155
|
+
printIonWarning(`Unrecognized focus manager priority value ${priority}`);
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* If there is no header then focus the page
|
|
161
|
+
* so focus at least moves to the correct view.
|
|
162
|
+
* The browser will then determine where within the
|
|
163
|
+
* page to move focus to.
|
|
164
|
+
*/
|
|
165
|
+
moveFocus(enteringEl);
|
|
166
|
+
}
|
|
70
167
|
};
|
|
71
168
|
const getAnimationBuilder = async (opts) => {
|
|
72
169
|
if (!opts.leavingEl || !opts.animated || opts.duration === 0) {
|
|
@@ -99,7 +196,16 @@ const animation = async (animationBuilder, opts) => {
|
|
|
99
196
|
const noAnimation = async (opts) => {
|
|
100
197
|
const enteringEl = opts.enteringEl;
|
|
101
198
|
const leavingEl = opts.leavingEl;
|
|
102
|
-
|
|
199
|
+
const focusManagerEnabled = config.get('experimentalFocusManagerPriority', false);
|
|
200
|
+
/**
|
|
201
|
+
* If the focus manager is enabled then we
|
|
202
|
+
* need to wait for Ionic components to be rendered
|
|
203
|
+
* otherwise the correct component to focus may not
|
|
204
|
+
* be focused because it is still hidden.
|
|
205
|
+
* However, if the manager is not enabled
|
|
206
|
+
* then there's no need to wait since there will be no animation.
|
|
207
|
+
*/
|
|
208
|
+
await waitForReady(opts, focusManagerEnabled);
|
|
103
209
|
fireWillEvents(enteringEl, leavingEl);
|
|
104
210
|
fireDidEvents(enteringEl, leavingEl);
|
|
105
211
|
return {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { c as componentOnReady } from './helpers-
|
|
4
|
+
import { c as componentOnReady } from './helpers-6f6a912f.js';
|
|
5
5
|
import { b as printRequiredElementError } from './index-9b0d46f4.js';
|
|
6
6
|
|
|
7
7
|
const ION_CONTENT_TAG_NAME = 'ION-CONTENT';
|