@ionic/core 8.8.18-nightly.20260812 → 8.8.19-dev.11786610762.137bbb21
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/index.js +1 -1
- package/components/ion-accordion-group.js +1 -1
- package/components/ion-accordion.js +1 -1
- package/components/ion-action-sheet.js +1 -1
- package/components/ion-alert.js +1 -1
- package/components/ion-app.js +1 -1
- package/components/ion-avatar.js +1 -1
- package/components/ion-back-button.js +1 -1
- package/components/ion-backdrop.js +1 -1
- package/components/ion-badge.js +1 -1
- package/components/ion-breadcrumb.js +1 -1
- package/components/ion-breadcrumbs.js +1 -1
- package/components/ion-button.js +1 -1
- package/components/ion-buttons.js +1 -1
- package/components/ion-card-content.js +1 -1
- package/components/ion-card-header.js +1 -1
- package/components/ion-card-subtitle.js +1 -1
- package/components/ion-card-title.js +1 -1
- package/components/ion-card.js +1 -1
- package/components/ion-checkbox.js +1 -1
- package/components/ion-chip.js +1 -1
- package/components/ion-col.js +1 -1
- package/components/ion-content.js +1 -1
- package/components/ion-datetime-button.js +1 -1
- package/components/ion-datetime.js +1 -1
- package/components/ion-divider.d.ts +11 -0
- package/components/ion-divider.js +4 -0
- package/components/ion-fab-button.js +1 -1
- package/components/ion-fab-list.js +1 -1
- package/components/ion-fab.js +1 -1
- package/components/ion-footer.js +1 -1
- package/components/ion-gallery-item.d.ts +11 -0
- package/components/ion-gallery-item.js +4 -0
- package/components/ion-gallery.d.ts +11 -0
- package/components/ion-gallery.js +4 -0
- package/components/ion-grid.js +1 -1
- package/components/ion-header.js +1 -1
- package/components/ion-icon.js +1 -1
- package/components/ion-img.js +1 -1
- package/components/ion-infinite-scroll-content.js +1 -1
- package/components/ion-infinite-scroll.js +1 -1
- package/components/ion-input-otp.js +1 -1
- package/components/ion-input-password-toggle.js +1 -1
- package/components/ion-input.js +1 -1
- package/components/ion-item-divider.js +1 -1
- package/components/ion-item-group.js +1 -1
- package/components/ion-item-option.js +1 -1
- package/components/ion-item-options.js +1 -1
- package/components/ion-item-sliding.js +1 -1
- package/components/ion-item.js +1 -1
- package/components/ion-label.js +1 -1
- package/components/ion-list-header.js +1 -1
- package/components/ion-list.js +1 -1
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-menu-toggle.js +1 -1
- package/components/ion-menu.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +1 -1
- package/components/ion-note.js +1 -1
- package/components/ion-picker-column-option.js +1 -1
- package/components/ion-picker-column.js +1 -1
- package/components/ion-picker-legacy-column.js +1 -1
- package/components/ion-picker-legacy.js +1 -1
- package/components/ion-picker.js +1 -1
- package/components/ion-popover.js +1 -1
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-radio-group.js +1 -1
- package/components/ion-radio.js +1 -1
- package/components/ion-range.js +1 -1
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-ripple-effect.js +1 -1
- package/components/ion-route-redirect.js +1 -1
- package/components/ion-route.js +1 -1
- package/components/ion-router-link.js +1 -1
- 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 +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-segment-content.js +1 -1
- package/components/ion-segment-view.js +1 -1
- package/components/ion-segment.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select-option.js +1 -1
- package/components/ion-select-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-skeleton-text.js +1 -1
- package/components/ion-spinner.js +1 -1
- package/components/ion-split-pane.js +1 -1
- package/components/ion-tab-bar.js +1 -1
- package/components/ion-tab-button.js +1 -1
- package/components/ion-tab.js +1 -1
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +1 -1
- package/components/ion-textarea.js +1 -1
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-title.js +1 -1
- package/components/ion-toast.js +1 -1
- package/components/ion-toggle.js +1 -1
- package/components/ion-toolbar.js +1 -1
- package/components/p-6hUZIMBp.js +4 -0
- package/components/p-9mfpAwJh.js +4 -0
- package/components/{p-BkKAANMJ.js → p-B2SvA6NE.js} +1 -1
- package/components/p-B2aAAEfp.js +4 -0
- package/components/p-B2lpqDWK.js +4 -0
- package/components/p-BDoEcs72.js +4 -0
- package/components/p-BDqjX7Z_.js +4 -0
- package/components/{p-Cf2jSDS8.js → p-BE21dB_a.js} +1 -1
- package/components/p-BFpXpzD-.js +4 -0
- package/components/{p-cyNmxje6.js → p-BUNIyvqe.js} +1 -1
- package/components/p-BYSs-jZz.js +4 -0
- package/{dist/ionic/p-mjKAFv89.js → components/p-BYoGvMgh.js} +1 -1
- package/components/p-BYrCPOBM.js +4 -0
- package/components/{p-DqLB8yFQ.js → p-BZwQa9ey.js} +1 -1
- package/components/p-BbVhJs-a.js +4 -0
- package/components/p-BhRXIcSN.js +4 -0
- package/components/p-BjW8SOqw.js +4 -0
- package/components/p-BsiHrVPa.js +4 -0
- package/components/p-BwKpO3Is.js +4 -0
- package/components/p-Bz8jnuiy.js +4 -0
- package/components/p-C-Ea1l5K.js +4 -0
- package/components/p-C3X10Pc6.js +4 -0
- package/{dist/ionic/p-DC3RagnA.js → components/p-CA4M5WkT.js} +1 -1
- package/components/p-CH6jbAEI.js +4 -0
- package/components/p-CJE5t2qs.js +4 -0
- package/components/p-CODBQrPj.js +4 -0
- package/components/p-CUbb1HkU.js +4 -0
- package/components/p-CVYFPBs-.js +4 -0
- package/components/p-CVoLDZ7z.js +4 -0
- package/components/p-CZrORZXS.js +4 -0
- package/components/p-Cc3oC60a.js +4 -0
- package/components/{p-ChIZKXUu.js → p-Ch8jco3x.js} +1 -1
- package/components/p-CmoUesXp.js +4 -0
- package/components/{p-C_hpsif8.js → p-CpHPq11n.js} +1 -1
- package/components/p-CyNW8ypn.js +4 -0
- package/components/{p-D7uN07a3.js → p-CzlL9T_X.js} +1 -1
- package/components/p-CzxyxYID.js +4 -0
- package/components/p-D0Iqw6OZ.js +4 -0
- package/components/p-D0LT3Z3i.js +4 -0
- package/components/p-D1t981Ih.js +4 -0
- package/components/p-D6tqrIYY.js +4 -0
- package/components/p-D9C5yWpF.js +4 -0
- package/components/p-DCRXgAoM.js +4 -0
- package/components/p-DL5wyRub.js +4 -0
- package/components/p-DQlXUUDh.js +4 -0
- package/components/p-DRWN7QM2.js +4 -0
- package/components/p-DaJxRxSQ.js +4 -0
- package/components/p-DbmfFkd1.js +4 -0
- package/components/p-Dhi5xtNS.js +4 -0
- package/components/p-DnwLgh9U.js +4 -0
- package/components/p-DoZB3DcY.js +4 -0
- package/components/p-Dovs7FIs.js +4 -0
- package/components/p-DrrpZB81.js +4 -0
- package/components/p-DrzWRqnG.js +4 -0
- package/components/p-DylrHLJF.js +4 -0
- package/components/p-Dypq4kXE.js +4 -0
- package/components/p-DzeMJvWL.js +4 -0
- package/components/p-Dzk4Tr0X.js +4 -0
- package/components/p-Rkm2AOZ2.js +4 -0
- package/components/p-UYngqo1f.js +4 -0
- package/components/p-Va26YR7l.js +4 -0
- package/components/p-asUhrzOB.js +4 -0
- package/components/p-fIOYmaqA.js +4 -0
- package/components/p-jlwpz7Ms.js +4 -0
- package/components/p-kInyVu79.js +4 -0
- package/components/{p-Osve4qkc.js → p-miSYSxcc.js} +1 -1
- package/components/{p-A3O24YmY.js → p-paDbTUL9.js} +1 -1
- package/components/p-vXpMhGrs.js +4 -0
- package/{dist/ionic/p-D13Eaw-8.js → components/p-znZTPd7u.js} +1 -1
- package/css/core.css +1 -1
- package/css/core.css.map +1 -1
- package/css/display.css +1 -1
- package/css/display.css.map +1 -1
- package/css/flex-utils.css +1 -1
- package/css/flex-utils.css.map +1 -1
- package/css/float-elements.css.map +1 -1
- package/css/global.bundle.css.map +1 -1
- package/css/ionic/bundle.ionic.css +1 -0
- package/css/ionic/bundle.ionic.css.map +1 -0
- package/css/ionic/core.ionic.css +1 -0
- package/css/ionic/core.ionic.css.map +1 -0
- package/css/ionic/global.bundle.ionic.css +1 -0
- package/css/ionic/global.bundle.ionic.css.map +1 -0
- package/css/ionic/ionic-swiper.ionic.css +1 -0
- package/css/ionic/ionic-swiper.ionic.css.map +1 -0
- package/css/ionic/link.ionic.css +1 -0
- package/css/ionic/link.ionic.css.map +1 -0
- package/css/ionic/structure.ionic.css +1 -0
- package/css/ionic/structure.ionic.css.map +1 -0
- package/css/ionic/typography.ionic.css +1 -0
- package/css/ionic/typography.ionic.css.map +1 -0
- package/css/ionic/utils.bundle.ionic.css +1 -0
- package/css/ionic/utils.bundle.ionic.css.map +1 -0
- package/css/ionic-swiper.css +1 -1
- package/css/ionic-swiper.css.map +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/css/normalize.css.map +1 -1
- package/css/padding.css.map +1 -1
- package/css/palettes/dark.always.css.map +1 -1
- package/css/palettes/dark.class.css.map +1 -1
- package/css/palettes/dark.system.css.map +1 -1
- package/css/palettes/high-contrast-dark.always.css.map +1 -1
- package/css/palettes/high-contrast-dark.class.css.map +1 -1
- package/css/palettes/high-contrast-dark.system.css.map +1 -1
- package/css/palettes/high-contrast.always.css.map +1 -1
- package/css/palettes/high-contrast.class.css.map +1 -1
- package/css/palettes/high-contrast.system.css.map +1 -1
- package/css/structure.css.map +1 -1
- package/css/text-alignment.css.map +1 -1
- package/css/text-transformation.css.map +1 -1
- package/css/typography.css.map +1 -1
- package/css/utils.bundle.css +1 -1
- package/css/utils.bundle.css.map +1 -1
- package/dist/cjs/{animation-Ch16T-Nb.js → animation-qlGmEn5Y.js} +3 -3
- package/dist/cjs/{app-globals-Dd89e0MR.js → app-globals-CtK-3pCu.js} +1 -1
- package/dist/cjs/{button-active-COnxOe4X.js → button-active-CugpWmFI.js} +2 -2
- package/dist/cjs/{capacitor-DmA66EwP.js → capacitor-BixsAzyb.js} +3 -3
- package/dist/cjs/caret-down-vtVgfXIs.js +8 -0
- package/dist/cjs/caret-left-CxZXLRv5.js +8 -0
- package/dist/cjs/caret-right-CRCgv98E.js +8 -0
- package/dist/cjs/clear-button-press-controller-2hAy_qdm.js +45 -0
- package/dist/cjs/config-DWdFbSNK.js +35 -0
- package/dist/cjs/{focus-visible-CCvKiLh3.js → focus-visible-BIj-I3-C.js} +24 -0
- package/dist/cjs/{format-BUFWn4Bn.js → format-COAsdjOc.js} +1 -1
- package/dist/cjs/{framework-delegate-BgU6U9Ez.js → framework-delegate-CJT_QJQI.js} +4 -2
- package/dist/cjs/{haptic-ClPPQ_PS.js → haptic-BFgF-QCg.js} +1 -1
- package/dist/cjs/{helpers-gntk8bfm.js → helpers-Fh1iXsX9.js} +71 -4
- package/dist/cjs/{index-BfaXsATC.js → index-C1knGA9x.js} +53 -4
- package/dist/cjs/{index-ooS8B4p9.js → index-CM8iGvyx.js} +15 -15
- package/dist/cjs/{index-BhhuJ1Yx.js → index-CNicxECl.js} +9 -8
- package/dist/cjs/{index-DqmRDbxg.js → index-CxDnX7hd.js} +3 -1
- package/dist/cjs/{index-BS2uhvhT.js → index-D94mERjz.js} +4 -4
- package/dist/cjs/{index-BiRrzGDi.js → index-DRFkZu3V.js} +2 -2
- package/dist/cjs/index-YYUVCfP-.js +429 -0
- package/dist/cjs/index.cjs.js +16 -16
- package/dist/cjs/{input-shims-Bn1cXfCM.js → input-shims-C8NCYfWv.js} +18 -17
- package/dist/cjs/{input.utils-BwhxZooW.js → input.utils-CYZZsbdf.js} +5 -5
- package/dist/cjs/ion-accordion_2.cjs.entry.js +61 -29
- package/dist/cjs/ion-action-sheet.cjs.entry.js +41 -22
- package/dist/cjs/ion-alert.cjs.entry.js +78 -41
- package/dist/cjs/ion-app_8.cjs.entry.js +508 -194
- package/dist/cjs/ion-avatar_3.cjs.entry.js +125 -13
- package/dist/cjs/ion-back-button.cjs.entry.js +31 -22
- package/dist/cjs/ion-backdrop.cjs.entry.js +10 -7
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +54 -18
- package/dist/cjs/ion-button_2.cjs.entry.js +61 -24
- package/dist/cjs/ion-card_5.cjs.entry.js +55 -33
- package/dist/cjs/ion-checkbox.cjs.entry.js +34 -17
- package/dist/cjs/ion-chip.cjs.entry.js +50 -9
- package/dist/cjs/ion-col_3.cjs.entry.js +56 -57
- package/dist/cjs/ion-datetime-button.cjs.entry.js +13 -9
- package/dist/cjs/ion-datetime_3.cjs.entry.js +121 -46
- package/dist/cjs/ion-divider.cjs.entry.js +51 -0
- package/dist/cjs/ion-fab_3.cjs.entry.js +44 -28
- package/dist/cjs/ion-gallery-item.cjs.entry.js +59 -0
- package/dist/cjs/ion-gallery.cjs.entry.js +607 -0
- package/dist/cjs/ion-img.cjs.entry.js +8 -4
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +93 -17
- package/dist/cjs/ion-input-otp.cjs.entry.js +74 -9
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +53 -15
- package/dist/cjs/ion-input.cjs.entry.js +132 -40
- package/dist/cjs/ion-item-option_3.cjs.entry.js +467 -52
- package/dist/cjs/ion-item_8.cjs.entry.js +121 -50
- package/dist/cjs/ion-loading.cjs.entry.js +22 -19
- package/dist/cjs/ion-menu_3.cjs.entry.js +47 -29
- package/dist/cjs/ion-modal.cjs.entry.js +307 -143
- package/dist/cjs/ion-nav_2.cjs.entry.js +14 -11
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +12 -8
- package/dist/cjs/ion-picker-column.cjs.entry.js +14 -14
- package/dist/cjs/ion-picker.cjs.entry.js +10 -6
- package/dist/cjs/ion-popover.cjs.entry.js +21 -19
- package/dist/cjs/ion-progress-bar.cjs.entry.js +27 -9
- package/dist/cjs/ion-radio_2.cjs.entry.js +36 -18
- package/dist/cjs/ion-range.cjs.entry.js +20 -13
- package/dist/cjs/ion-refresher_2.cjs.entry.js +42 -23
- package/dist/cjs/ion-reorder_2.cjs.entry.js +38 -14
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +15 -7
- package/dist/cjs/ion-route_4.cjs.entry.js +11 -10
- package/dist/cjs/ion-searchbar.cjs.entry.js +146 -32
- package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment-view.cjs.entry.js +13 -3
- package/dist/cjs/ion-segment_2.cjs.entry.js +23 -16
- package/dist/cjs/ion-select-modal.cjs.entry.js +114 -38
- package/dist/cjs/ion-select_3.cjs.entry.js +557 -108
- package/dist/cjs/ion-spinner.cjs.entry.js +30 -8
- package/dist/cjs/ion-split-pane.cjs.entry.js +13 -9
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +150 -28
- package/dist/cjs/ion-tab_2.cjs.entry.js +8 -7
- package/dist/cjs/ion-text.cjs.entry.js +7 -7
- package/dist/cjs/ion-textarea.cjs.entry.js +137 -23
- package/dist/cjs/ion-toast.cjs.entry.js +70 -46
- package/dist/cjs/ion-toggle.cjs.entry.js +82 -26
- package/dist/cjs/ionic-global-DvEcO0tQ.js +519 -0
- package/dist/cjs/ionic.cjs.js +4 -4
- package/dist/cjs/{ios.transition-IMJRwn29.js → ios.transition-BgDCUY4Y.js} +7 -5
- package/dist/cjs/{item-multiple-inputs-jOJZE_I0.js → item-multiple-inputs-DKn76MYO.js} +1 -1
- package/dist/cjs/{keyboard-UuAS4D_9.js → keyboard-BbZXOwZg.js} +1 -1
- package/dist/cjs/{keyboard-hHzlEQpk.js → keyboard-nne7rvBK.js} +4 -3
- package/dist/cjs/list-a-7GSA6K.js +8 -0
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-CgQZxcoT.js → md.transition-Debf4tYr.js} +6 -5
- package/dist/cjs/{notch-controller-_SwR025y.js → notch-controller-CFlPw7ER.js} +4 -4
- package/dist/cjs/overlay-control-label-DnRLQR1t.js +52 -0
- package/dist/cjs/{overlays-DuSEMhIW.js → overlays-DYBUkNQu.js} +309 -18
- package/dist/cjs/scroll-hide-controller-DAf_DwKc.js +345 -0
- package/dist/cjs/select-option-render-BqJEK1N1.js +124 -0
- package/dist/cjs/{status-tap-CSvBT7FV.js → status-tap-hwqc0yb_.js} +4 -3
- package/dist/cjs/{swipe-back-CuIiziaa.js → swipe-back-DqQx5QCp.js} +3 -2
- package/dist/cjs/{theme-CeDs6Hcv.js → theme-IlOsGAz7.js} +25 -1
- package/dist/cjs/validity-QmuwEptc.js +51 -0
- package/dist/cjs/x-BTF99yFH.js +8 -0
- package/dist/collection/collection-manifest.json +9 -1
- package/dist/collection/components/accordion/accordion.ionic.css +201 -0
- package/dist/collection/components/accordion/accordion.ios.css +73 -58
- package/dist/collection/components/accordion/accordion.js +41 -27
- package/dist/collection/components/accordion/accordion.md.css +67 -59
- package/dist/collection/components/accordion-group/accordion-group.ionic.css +93 -0
- package/dist/collection/components/accordion-group/accordion-group.ios.css +16 -4
- package/dist/collection/components/accordion-group/accordion-group.js +44 -8
- package/dist/collection/components/accordion-group/accordion-group.md.css +22 -4
- package/dist/collection/components/action-sheet/action-sheet.ionic.css +494 -0
- package/dist/collection/components/action-sheet/action-sheet.ios.css +367 -11
- package/dist/collection/components/action-sheet/action-sheet.js +32 -13
- package/dist/collection/components/action-sheet/action-sheet.md.css +306 -10
- package/dist/collection/components/alert/alert.ionic.css +787 -0
- package/dist/collection/components/alert/alert.ios.css +481 -19
- package/dist/collection/components/alert/alert.js +67 -30
- package/dist/collection/components/alert/alert.md.css +464 -29
- package/dist/collection/components/app/app.js +15 -83
- package/dist/collection/components/avatar/avatar.ionic.css +385 -0
- package/dist/collection/components/avatar/avatar.ios.css +7 -33
- package/dist/collection/components/avatar/avatar.js +120 -4
- package/dist/collection/components/avatar/avatar.md.css +51 -0
- package/dist/collection/components/back-button/back-button.ios.css +60 -48
- package/dist/collection/components/back-button/back-button.js +27 -19
- package/dist/collection/components/back-button/back-button.md.css +60 -48
- package/dist/collection/components/backdrop/backdrop.ionic.css +109 -0
- package/dist/collection/components/backdrop/backdrop.ios.css +56 -19
- package/dist/collection/components/backdrop/backdrop.js +12 -6
- package/dist/collection/components/backdrop/backdrop.md.css +56 -19
- package/dist/collection/components/badge/badge.ionic.css +272 -0
- package/dist/collection/components/badge/badge.ios.css +137 -12
- package/dist/collection/components/badge/badge.js +145 -9
- package/dist/collection/components/badge/badge.md.css +122 -12
- package/dist/collection/components/breadcrumb/breadcrumb.ios.css +20 -8
- package/dist/collection/components/breadcrumb/breadcrumb.js +43 -11
- package/dist/collection/components/breadcrumb/breadcrumb.md.css +20 -8
- package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +6 -0
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +11 -9
- package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +6 -0
- package/dist/collection/components/button/button.ionic.css +644 -0
- package/dist/collection/components/button/button.ios.css +154 -46
- package/dist/collection/components/button/button.js +63 -27
- package/dist/collection/components/button/button.md.css +150 -50
- package/dist/collection/components/buttons/buttons.ionic.css +97 -0
- package/dist/collection/components/buttons/buttons.ios.css +59 -7
- package/dist/collection/components/buttons/buttons.js +15 -9
- package/dist/collection/components/buttons/buttons.md.css +55 -3
- package/dist/collection/components/card/card.ionic.css +144 -0
- package/dist/collection/components/card/card.ios.css +65 -14
- package/dist/collection/components/card/card.js +41 -10
- package/dist/collection/components/card/card.md.css +65 -14
- package/dist/collection/components/card-content/card-content.ionic.css +89 -0
- package/dist/collection/components/card-content/card-content.ios.css +20 -35
- package/dist/collection/components/card-content/card-content.js +12 -10
- package/dist/collection/components/card-content/card-content.md.css +20 -35
- package/dist/collection/components/card-header/card-header.ionic.css +85 -0
- package/dist/collection/components/card-header/card-header.ios.css +27 -15
- package/dist/collection/components/card-header/card-header.js +13 -10
- package/dist/collection/components/card-header/card-header.md.css +27 -15
- package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +144 -0
- package/dist/collection/components/card-subtitle/card-subtitle.ios.css +12 -0
- package/dist/collection/components/card-subtitle/card-subtitle.js +11 -8
- package/dist/collection/components/card-subtitle/card-subtitle.md.css +12 -0
- package/dist/collection/components/card-title/card-title.ios.css +73 -0
- package/dist/collection/components/card-title/card-title.js +11 -8
- package/dist/collection/components/card-title/card-title.md.css +73 -0
- package/dist/collection/components/checkbox/checkbox.ionic.css +543 -0
- package/dist/collection/components/checkbox/checkbox.ios.css +242 -117
- package/dist/collection/components/checkbox/checkbox.js +69 -14
- package/dist/collection/components/checkbox/checkbox.md.css +243 -118
- package/dist/collection/components/chip/chip.ionic.css +217 -0
- package/dist/collection/components/chip/chip.ios.css +67 -14
- package/dist/collection/components/chip/chip.js +108 -8
- package/dist/collection/components/chip/chip.md.css +67 -14
- package/dist/collection/components/col/col.css +192 -4
- package/dist/collection/components/col/col.js +211 -61
- package/dist/collection/components/content/content.css +47 -2
- package/dist/collection/components/content/content.js +68 -12
- package/dist/collection/components/datetime/datetime.ionic.css +703 -0
- package/dist/collection/components/datetime/datetime.ios.css +302 -106
- package/dist/collection/components/datetime/datetime.js +97 -20
- package/dist/collection/components/datetime/datetime.md.css +293 -96
- package/dist/collection/components/datetime/utils/data.js +5 -5
- package/dist/collection/components/datetime-button/datetime-button.ios.css +6 -0
- package/dist/collection/components/datetime-button/datetime-button.js +11 -8
- package/dist/collection/components/datetime-button/datetime-button.md.css +6 -0
- package/dist/collection/components/divider/divider.ionic.css +148 -0
- package/dist/collection/components/divider/divider.ios.css +87 -0
- package/dist/collection/components/divider/divider.js +94 -0
- package/dist/collection/components/divider/divider.md.css +87 -0
- package/dist/collection/components/fab/fab.css +25 -1
- package/dist/collection/components/fab/fab.js +9 -5
- package/dist/collection/components/fab-button/fab-button.ios.css +18 -6
- package/dist/collection/components/fab-button/fab-button.js +36 -21
- package/dist/collection/components/fab-button/fab-button.md.css +20 -8
- package/dist/collection/components/fab-list/fab-list.css +12 -0
- package/dist/collection/components/fab-list/fab-list.js +9 -5
- package/dist/collection/components/footer/footer-interface.js +1 -0
- package/dist/collection/components/footer/footer.ios.css +33 -6
- package/dist/collection/components/footer/footer.js +117 -25
- package/dist/collection/components/footer/footer.md.css +40 -0
- package/dist/collection/components/gallery/gallery-constants.js +12 -0
- package/dist/collection/components/gallery/gallery-interface.js +1 -0
- package/dist/collection/components/gallery/gallery.css +15 -0
- package/dist/collection/components/gallery/gallery.js +679 -0
- package/dist/collection/components/gallery/test/utils.js +100 -0
- package/dist/collection/components/gallery-item/gallery-item.css +49 -0
- package/dist/collection/components/gallery-item/gallery-item.js +99 -0
- package/dist/collection/components/grid/grid.css +12 -0
- package/dist/collection/components/grid/grid.js +9 -5
- package/dist/collection/components/header/header-interface.js +1 -0
- package/dist/collection/components/header/header.ionic.css +250 -0
- package/dist/collection/components/header/header.ios.css +178 -133
- package/dist/collection/components/header/header.js +181 -39
- package/dist/collection/components/header/header.md.css +199 -9
- package/dist/collection/components/header/header.utils.js +6 -13
- package/dist/collection/components/img/img.js +8 -2
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +100 -5
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +12 -0
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +16 -10
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +12 -0
- package/dist/collection/components/input/input.ionic.css +891 -0
- package/dist/collection/components/input/input.ios.css +224 -137
- package/dist/collection/components/input/input.js +158 -45
- package/dist/collection/components/input/input.md.css +194 -209
- package/dist/collection/components/input-otp/input-otp.ionic.css +371 -0
- package/dist/collection/components/input-otp/input-otp.ios.css +105 -60
- package/dist/collection/components/input-otp/input-otp.js +74 -7
- package/dist/collection/components/input-otp/input-otp.md.css +105 -60
- package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +78 -0
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +48 -12
- package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +61 -0
- package/dist/collection/components/item/item.ionic.css +496 -0
- package/dist/collection/components/item/item.ios.css +120 -80
- package/dist/collection/components/item/item.js +56 -21
- package/dist/collection/components/item/item.md.css +131 -79
- package/dist/collection/components/item-divider/item-divider.ios.css +18 -0
- package/dist/collection/components/item-divider/item-divider.js +11 -8
- package/dist/collection/components/item-divider/item-divider.md.css +18 -0
- package/dist/collection/components/item-group/item-group.ios.css +12 -0
- package/dist/collection/components/item-group/item-group.js +13 -7
- package/dist/collection/components/item-group/item-group.md.css +12 -0
- package/dist/collection/components/item-option/item-option.ionic.css +277 -0
- package/dist/collection/components/item-option/item-option.ios.css +136 -29
- package/dist/collection/components/item-option/item-option.js +73 -9
- package/dist/collection/components/item-option/item-option.md.css +136 -29
- package/dist/collection/components/item-options/item-options.ionic.css +221 -0
- package/dist/collection/components/item-options/item-options.ios.css +77 -34
- package/dist/collection/components/item-options/item-options.js +13 -7
- package/dist/collection/components/item-options/item-options.md.css +77 -34
- package/dist/collection/components/item-sliding/item-sliding.ionic.css +211 -0
- package/dist/collection/components/item-sliding/item-sliding.js +421 -35
- package/dist/collection/components/item-sliding/{item-sliding.css → item-sliding.native.css} +84 -9
- package/dist/collection/components/item-sliding/test/test.utils.js +13 -0
- package/dist/collection/components/label/label.ios.css +18 -0
- package/dist/collection/components/label/label.js +11 -8
- package/dist/collection/components/label/label.md.css +18 -0
- package/dist/collection/components/list/list.ionic.css +212 -0
- package/dist/collection/components/list/list.ios.css +54 -14
- package/dist/collection/components/list/list.js +48 -9
- package/dist/collection/components/list/list.md.css +56 -16
- package/dist/collection/components/list-header/list-header.ionic.css +190 -0
- package/dist/collection/components/list-header/list-header.ios.css +82 -38
- package/dist/collection/components/list-header/list-header.js +11 -8
- package/dist/collection/components/list-header/list-header.md.css +82 -38
- package/dist/collection/components/loading/loading.ios.css +13 -1
- package/dist/collection/components/loading/loading.js +14 -11
- package/dist/collection/components/loading/loading.md.css +13 -1
- package/dist/collection/components/menu/menu.ios.css +15 -3
- package/dist/collection/components/menu/menu.js +12 -7
- package/dist/collection/components/menu/menu.md.css +15 -3
- package/dist/collection/components/menu-button/menu-button.ionic.css +236 -0
- package/dist/collection/components/menu-button/menu-button.ios.css +48 -14
- package/dist/collection/components/menu-button/menu-button.js +26 -10
- package/dist/collection/components/menu-button/menu-button.md.css +49 -15
- package/dist/collection/components/menu-toggle/menu-toggle.js +8 -5
- package/dist/collection/components/modal/animations/ionic.enter.js +40 -0
- package/dist/collection/components/modal/animations/ionic.leave.js +28 -0
- package/dist/collection/components/modal/animations/sheet.js +8 -2
- package/dist/collection/components/modal/gestures/sheet.js +76 -10
- package/dist/collection/components/modal/modal.ionic.css +255 -0
- package/dist/collection/components/modal/modal.ios.css +178 -70
- package/dist/collection/components/modal/modal.js +62 -19
- package/dist/collection/components/modal/modal.md.css +178 -70
- package/dist/collection/components/modal/safe-area-utils.js +35 -0
- package/dist/collection/components/nav/nav.css +7 -1
- package/dist/collection/components/nav/nav.js +11 -5
- package/dist/collection/components/nav-link/nav-link.js +5 -1
- package/dist/collection/components/note/note.ios.css +12 -0
- package/dist/collection/components/note/note.js +11 -8
- package/dist/collection/components/note/note.md.css +12 -0
- package/dist/collection/components/picker/picker.ios.css +15 -3
- package/dist/collection/components/picker/picker.js +8 -5
- package/dist/collection/components/picker/picker.md.css +15 -3
- package/dist/collection/components/picker-column/picker-column.css +9 -2
- package/dist/collection/components/picker-column/picker-column.js +8 -7
- package/dist/collection/components/picker-column-option/picker-column-option.ios.css +6 -0
- package/dist/collection/components/picker-column-option/picker-column-option.js +13 -7
- package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -0
- package/dist/collection/components/picker-legacy/picker.ios.css +13 -1
- package/dist/collection/components/picker-legacy/picker.js +7 -6
- package/dist/collection/components/picker-legacy/picker.md.css +13 -1
- package/dist/collection/components/picker-legacy-column/picker-column.ios.css +12 -0
- package/dist/collection/components/picker-legacy-column/picker-column.js +4 -4
- package/dist/collection/components/picker-legacy-column/picker-column.md.css +12 -0
- package/dist/collection/components/popover/popover.ionic.css +290 -0
- package/dist/collection/components/popover/popover.ios.css +29 -1
- package/dist/collection/components/popover/popover.js +18 -15
- package/dist/collection/components/popover/popover.md.css +29 -1
- package/dist/collection/components/progress-bar/progress-bar.ionic.css +287 -0
- package/dist/collection/components/progress-bar/progress-bar.ios.css +48 -17
- package/dist/collection/components/progress-bar/progress-bar.js +43 -7
- package/dist/collection/components/progress-bar/progress-bar.md.css +48 -17
- package/dist/collection/components/radio/radio.ionic.css +422 -0
- package/dist/collection/components/radio/radio.ios.css +207 -102
- package/dist/collection/components/radio/radio.js +14 -9
- package/dist/collection/components/radio/radio.md.css +207 -102
- package/dist/collection/components/radio-group/radio-group.ionic.css +119 -0
- package/dist/collection/components/radio-group/radio-group.ios.css +43 -19
- package/dist/collection/components/radio-group/radio-group.js +48 -7
- package/dist/collection/components/radio-group/radio-group.md.css +43 -19
- package/dist/collection/components/range/range.ionic.css +567 -0
- package/dist/collection/components/range/range.ios.css +128 -85
- package/dist/collection/components/range/range.js +16 -10
- package/dist/collection/components/range/range.md.css +128 -85
- package/dist/collection/components/refresher/refresher.ios.css +14 -1
- package/dist/collection/components/refresher/refresher.js +11 -8
- package/dist/collection/components/refresher/refresher.md.css +15 -2
- package/dist/collection/components/refresher-content/refresher-content.js +28 -7
- package/dist/collection/components/reorder/reorder.ios.css +6 -0
- package/dist/collection/components/reorder/reorder.js +33 -6
- package/dist/collection/components/reorder/reorder.md.css +6 -0
- package/dist/collection/components/reorder-group/reorder-group.css +6 -0
- package/dist/collection/components/reorder-group/reorder-group.js +8 -4
- package/dist/collection/components/ripple-effect/{ripple-effect.css → ripple-effect.common.css} +7 -1
- package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +215 -0
- package/dist/collection/components/ripple-effect/ripple-effect.js +14 -6
- package/dist/collection/components/route/route.js +4 -0
- package/dist/collection/components/router/router.js +4 -0
- package/dist/collection/components/router-link/router-link.css +8 -2
- package/dist/collection/components/router-link/router-link.js +9 -5
- package/dist/collection/components/router-outlet/router-outlet.css +7 -1
- package/dist/collection/components/router-outlet/router-outlet.js +6 -3
- package/dist/collection/components/row/row.css +16 -0
- package/dist/collection/components/row/row.js +9 -2
- package/dist/collection/components/searchbar/searchbar.ionic.css +622 -0
- package/dist/collection/components/searchbar/searchbar.ios.css +56 -18
- package/dist/collection/components/searchbar/searchbar.js +191 -42
- package/dist/collection/components/searchbar/searchbar.md.css +56 -18
- package/dist/collection/components/segment/segment.ionic.css +115 -0
- package/dist/collection/components/segment/segment.ios.css +45 -2
- package/dist/collection/components/segment/segment.js +11 -8
- package/dist/collection/components/segment/segment.md.css +45 -2
- package/dist/collection/components/segment-button/segment-button.ionic.css +352 -0
- package/dist/collection/components/segment-button/segment-button.ios.css +146 -105
- package/dist/collection/components/segment-button/segment-button.js +11 -8
- package/dist/collection/components/segment-button/segment-button.md.css +148 -107
- package/dist/collection/components/segment-content/segment-content.js +1 -1
- package/dist/collection/components/segment-view/segment-view.ios.css +6 -0
- package/dist/collection/components/segment-view/segment-view.js +13 -4
- package/dist/collection/components/segment-view/segment-view.md.css +6 -0
- package/dist/collection/components/select/select.ionic.css +809 -0
- package/dist/collection/components/select/select.ios.css +348 -176
- package/dist/collection/components/select/select.js +521 -92
- package/dist/collection/components/select/select.md.css +364 -178
- package/dist/collection/components/select-modal/select-modal.ionic.css +257 -0
- package/dist/collection/components/select-modal/select-modal.ios.css +466 -0
- package/dist/collection/components/select-modal/select-modal.js +126 -30
- package/dist/collection/components/select-modal/select-modal.md.css +394 -0
- package/dist/collection/components/select-option/select-option.js +72 -4
- package/dist/collection/components/select-popover/select-popover.ionic.css +255 -0
- package/dist/collection/components/select-popover/select-popover.ios.css +302 -20
- package/dist/collection/components/select-popover/select-popover.js +89 -29
- package/dist/collection/components/select-popover/select-popover.md.css +345 -0
- package/dist/collection/components/skeleton-text/skeleton-text.css +6 -0
- package/dist/collection/components/skeleton-text/skeleton-text.js +9 -5
- package/dist/collection/components/spinner/{spinner.css → spinner.ionic.css} +78 -10
- package/dist/collection/components/spinner/spinner.js +47 -6
- package/dist/collection/components/spinner/spinner.native.css +199 -0
- package/dist/collection/components/split-pane/split-pane.ios.css +20 -2
- package/dist/collection/components/split-pane/split-pane.js +15 -8
- package/dist/collection/components/split-pane/split-pane.md.css +20 -2
- package/dist/collection/components/tab/tab.js +6 -2
- package/dist/collection/components/tab-bar/tab-bar.ionic.css +249 -0
- package/dist/collection/components/tab-bar/tab-bar.ios.css +86 -43
- package/dist/collection/components/tab-bar/tab-bar.js +179 -15
- package/dist/collection/components/tab-bar/tab-bar.md.css +86 -43
- package/dist/collection/components/tab-button/tab-button.ionic.css +373 -0
- package/dist/collection/components/tab-button/tab-button.ios.css +171 -95
- package/dist/collection/components/tab-button/tab-button.js +54 -9
- package/dist/collection/components/tab-button/tab-button.md.css +137 -93
- package/dist/collection/components/tabs/tabs.css +7 -1
- package/dist/collection/components/tabs/tabs.js +4 -1
- package/dist/collection/components/text/text.css +6 -0
- package/dist/collection/components/text/text.js +7 -6
- package/dist/collection/components/textarea/textarea.ionic.css +898 -0
- package/dist/collection/components/textarea/textarea.ios.css +298 -158
- package/dist/collection/components/textarea/textarea.js +162 -24
- package/dist/collection/components/textarea/textarea.md.css +312 -159
- package/dist/collection/components/thumbnail/thumbnail.css +6 -0
- package/dist/collection/components/thumbnail/thumbnail.js +9 -2
- package/dist/collection/components/title/title.ionic.css +127 -0
- package/dist/collection/components/title/title.ios.css +32 -4
- package/dist/collection/components/title/title.js +13 -7
- package/dist/collection/components/title/title.md.css +39 -4
- package/dist/collection/components/toast/animations/utils.js +1 -1
- package/dist/collection/components/toast/toast.ionic.css +394 -0
- package/dist/collection/components/toast/toast.ios.css +84 -45
- package/dist/collection/components/toast/toast.js +76 -13
- package/dist/collection/components/toast/toast.md.css +84 -45
- package/dist/collection/components/toggle/toggle.ionic.css +512 -0
- package/dist/collection/components/toggle/toggle.ios.css +247 -127
- package/dist/collection/components/toggle/toggle.js +72 -18
- package/dist/collection/components/toggle/toggle.md.css +245 -127
- package/dist/collection/components/toolbar/test/image.svg +1 -0
- package/dist/collection/components/toolbar/toolbar.ionic.css +249 -0
- package/dist/collection/components/toolbar/toolbar.ios.css +90 -47
- package/dist/collection/components/toolbar/toolbar.js +218 -13
- package/dist/collection/components/toolbar/toolbar.md.css +90 -47
- package/dist/collection/global/ionic-global.js +241 -13
- package/dist/collection/utils/css-value-validation.js +39 -0
- package/dist/collection/utils/focus-trap.js +13 -2
- package/dist/collection/utils/focus-visible.js +22 -0
- package/dist/collection/utils/forms/clear-button-press-controller.js +40 -0
- package/dist/collection/utils/forms/index.js +1 -0
- package/dist/collection/utils/forms/validity.js +31 -0
- package/dist/collection/utils/framework-delegate.js +3 -1
- package/dist/collection/utils/hardware-back-button.js +15 -0
- package/dist/collection/utils/helpers.js +70 -3
- package/dist/collection/utils/keyboard/keyboard-controller.js +3 -1
- package/dist/collection/utils/media.js +1 -0
- package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
- package/dist/collection/utils/menu-controller/animations/push.js +2 -1
- package/dist/collection/utils/menu-controller/animations/reveal.js +2 -1
- package/dist/collection/utils/overlay-control-label.js +47 -0
- package/dist/collection/utils/overlays.js +290 -8
- package/dist/collection/utils/sanitization/index.js +274 -18
- package/dist/collection/utils/scroll-hide-controller.js +178 -0
- package/dist/collection/utils/select-option-render.js +119 -0
- package/dist/collection/utils/test/playwright/drag-element.js +32 -9
- package/dist/collection/utils/test/playwright/generator.js +48 -23
- package/dist/collection/utils/test/playwright/page/utils/goto.js +14 -5
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +26 -3
- package/dist/collection/utils/theme.js +25 -1
- package/dist/collection/utils/transition/ios.transition.js +1 -0
- package/dist/docs.json +9090 -286
- package/dist/esm/{animation-DLJpuoEz.js → animation-ChfHU0RG.js} +2 -2
- package/dist/esm/{app-globals-D0C5S4hU.js → app-globals-D1OOQlqq.js} +1 -1
- package/dist/esm/{button-active-BSpTQmS9.js → button-active-CPYK0dNo.js} +2 -2
- package/dist/esm/{capacitor-CFERIeaU.js → capacitor-DG_4yVXz.js} +1 -1
- package/dist/esm/caret-down-D1t981Ih.js +6 -0
- package/dist/esm/caret-left-fIOYmaqA.js +6 -0
- package/dist/esm/caret-right-BYSs-jZz.js +6 -0
- package/dist/esm/clear-button-press-controller-C79TPm5p.js +43 -0
- package/dist/esm/config-BwKpO3Is.js +31 -0
- package/dist/esm/{focus-visible-BmVRXR1y.js → focus-visible-vXpMhGrs.js} +23 -1
- package/dist/esm/{format-CAmvpAez.js → format-2WlZcMvG.js} +1 -1
- package/dist/esm/{framework-delegate-FnPGymXL.js → framework-delegate-DO2QXccA.js} +4 -2
- package/dist/esm/{haptic-DzAMWJuk.js → haptic-BWlRCqa-.js} +1 -1
- package/dist/esm/{helpers-HEqiOzXb.js → helpers-DfF5_wJc.js} +71 -5
- package/dist/esm/{index-Q6UPU0Ay.js → index-7eS8XtuU.js} +11 -11
- package/dist/esm/{index-DV3sJJW8.js → index-B4Kq2YNk.js} +3 -2
- package/dist/esm/{index-B_dQk_WE.js → index-BSDDOljg.js} +4 -4
- package/dist/esm/{index-tcQvqkiX.js → index-C0EQceqV.js} +53 -4
- package/dist/esm/{index-BRHzoo00.js → index-DNY2GOUg.js} +4 -3
- package/dist/esm/index-Mq5pCWmZ.js +424 -0
- package/dist/esm/{index-Dw-wN0Ja.js → index-taYRjZGp.js} +2 -2
- package/dist/esm/index.js +14 -14
- package/dist/esm/{input-shims-LXhI7LEx.js → input-shims-tZfqB5a5.js} +7 -6
- package/dist/esm/{input.utils-Y6NgW8bw.js → input.utils-fs4B7WL5.js} +3 -3
- package/dist/esm/ion-accordion_2.entry.js +61 -29
- package/dist/esm/ion-action-sheet.entry.js +41 -22
- package/dist/esm/ion-alert.entry.js +77 -40
- package/dist/esm/ion-app_8.entry.js +507 -193
- package/dist/esm/ion-avatar_3.entry.js +125 -13
- package/dist/esm/ion-back-button.entry.js +31 -22
- package/dist/esm/ion-backdrop.entry.js +10 -7
- package/dist/esm/ion-breadcrumb_2.entry.js +54 -18
- package/dist/esm/ion-button_2.entry.js +61 -24
- package/dist/esm/ion-card_5.entry.js +55 -33
- package/dist/esm/ion-checkbox.entry.js +34 -17
- package/dist/esm/ion-chip.entry.js +50 -9
- package/dist/esm/ion-col_3.entry.js +56 -57
- package/dist/esm/ion-datetime-button.entry.js +13 -9
- package/dist/esm/ion-datetime_3.entry.js +121 -46
- package/dist/esm/ion-divider.entry.js +49 -0
- package/dist/esm/ion-fab_3.entry.js +44 -28
- package/dist/esm/ion-gallery-item.entry.js +57 -0
- package/dist/esm/ion-gallery.entry.js +605 -0
- package/dist/esm/ion-img.entry.js +8 -4
- package/dist/esm/ion-infinite-scroll_2.entry.js +92 -16
- package/dist/esm/ion-input-otp.entry.js +74 -9
- package/dist/esm/ion-input-password-toggle.entry.js +53 -15
- package/dist/esm/ion-input.entry.js +132 -40
- package/dist/esm/ion-item-option_3.entry.js +467 -52
- package/dist/esm/ion-item_8.entry.js +121 -50
- package/dist/esm/ion-loading.entry.js +21 -18
- package/dist/esm/ion-menu_3.entry.js +47 -29
- package/dist/esm/ion-modal.entry.js +261 -97
- package/dist/esm/ion-nav_2.entry.js +14 -11
- package/dist/esm/ion-picker-column-option.entry.js +12 -8
- package/dist/esm/ion-picker-column.entry.js +13 -13
- package/dist/esm/ion-picker.entry.js +10 -6
- package/dist/esm/ion-popover.entry.js +21 -19
- package/dist/esm/ion-progress-bar.entry.js +27 -9
- package/dist/esm/ion-radio_2.entry.js +36 -18
- package/dist/esm/ion-range.entry.js +20 -13
- package/dist/esm/ion-refresher_2.entry.js +40 -21
- package/dist/esm/ion-reorder_2.entry.js +38 -14
- package/dist/esm/ion-ripple-effect.entry.js +15 -7
- package/dist/esm/ion-route_4.entry.js +11 -10
- package/dist/esm/ion-searchbar.entry.js +146 -32
- package/dist/esm/ion-segment-content.entry.js +2 -2
- package/dist/esm/ion-segment-view.entry.js +13 -3
- package/dist/esm/ion-segment_2.entry.js +23 -16
- package/dist/esm/ion-select-modal.entry.js +114 -38
- package/dist/esm/ion-select_3.entry.js +557 -108
- package/dist/esm/ion-spinner.entry.js +30 -8
- package/dist/esm/ion-split-pane.entry.js +13 -9
- package/dist/esm/ion-tab-bar_2.entry.js +149 -27
- package/dist/esm/ion-tab_2.entry.js +8 -7
- package/dist/esm/ion-text.entry.js +7 -7
- package/dist/esm/ion-textarea.entry.js +137 -23
- package/dist/esm/ion-toast.entry.js +45 -21
- package/dist/esm/ion-toggle.entry.js +82 -26
- package/dist/esm/ionic-global-CEwbmRLz.js +508 -0
- package/dist/esm/ionic.js +5 -5
- package/dist/esm/{ios.transition-ClFrsIrS.js → ios.transition-C3r-0w96.js} +7 -5
- package/dist/esm/{item-multiple-inputs-DlNuqNJm.js → item-multiple-inputs-C6onMFOo.js} +1 -1
- package/dist/esm/{keyboard-ywgs5efA.js → keyboard-BzbtCDwZ.js} +4 -3
- package/dist/esm/{keyboard-CUw4ekVy.js → keyboard-DYGmALa7.js} +1 -1
- package/dist/esm/list-Dhi5xtNS.js +6 -0
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-D0msQmzI.js → md.transition-CPHOF5T9.js} +6 -5
- package/dist/esm/{notch-controller-DKDjU_O7.js → notch-controller-CsbpmbOz.js} +2 -2
- package/dist/esm/overlay-control-label-CODBQrPj.js +49 -0
- package/dist/esm/{overlays-Dg0q2_tJ.js → overlays-C1NQMs9y.js} +306 -15
- package/dist/esm/scroll-hide-controller-CfbtPBWv.js +342 -0
- package/dist/esm/select-option-render-BlKZ2H83.js +122 -0
- package/dist/esm/{status-tap-vO-6s4Yp.js → status-tap-BueE8Coq.js} +4 -3
- package/dist/esm/{swipe-back-DQ1q5MgD.js → swipe-back-qmvTRnSq.js} +3 -2
- package/dist/esm/{theme-DiVJyqlX.js → theme-DaJxRxSQ.js} +25 -1
- package/dist/esm/validity-BjW8SOqw.js +48 -0
- package/dist/esm/x-BDqjX7Z_.js +6 -0
- package/dist/html.html-data.json +2707 -168
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p--sroV-k-.js +4 -0
- package/dist/ionic/p-00731d20.entry.js +4 -0
- package/dist/ionic/p-03c20a50.entry.js +4 -0
- package/dist/ionic/p-03ec6673.entry.js +4 -0
- package/dist/ionic/p-0405ec57.entry.js +4 -0
- package/dist/ionic/p-04f16322.entry.js +4 -0
- package/dist/ionic/p-09123f89.entry.js +4 -0
- package/dist/ionic/p-15028853.entry.js +4 -0
- package/dist/ionic/p-16c5db90.entry.js +4 -0
- package/dist/ionic/p-1d1dfb68.entry.js +4 -0
- package/dist/ionic/p-231572a0.entry.js +4 -0
- package/dist/ionic/p-2740db6e.entry.js +4 -0
- package/dist/ionic/p-2a6d4601.entry.js +4 -0
- package/dist/ionic/p-2d8fe33c.entry.js +4 -0
- package/dist/ionic/p-2dbc50d9.entry.js +4 -0
- package/dist/ionic/p-32d3095c.entry.js +4 -0
- package/dist/ionic/p-356cd619.entry.js +4 -0
- package/dist/ionic/p-391bdb60.entry.js +4 -0
- package/dist/ionic/p-3b2ab5b4.entry.js +4 -0
- package/dist/ionic/p-4e3e750a.entry.js +4 -0
- package/dist/ionic/p-4fee0df6.entry.js +4 -0
- package/dist/ionic/p-547d010c.entry.js +4 -0
- package/dist/ionic/p-54895118.entry.js +4 -0
- package/dist/ionic/p-6163d04d.entry.js +4 -0
- package/dist/ionic/p-679c1448.entry.js +4 -0
- package/dist/ionic/p-6de524e5.entry.js +4 -0
- package/dist/ionic/p-764d7ea2.entry.js +4 -0
- package/dist/ionic/{p-C0eMdTCW.js → p-7k7Q1A38.js} +1 -1
- package/dist/ionic/p-81BMEE8Q.js +4 -0
- package/dist/ionic/p-8d6d7acb.entry.js +4 -0
- package/dist/ionic/p-96732fe2.entry.js +4 -0
- package/dist/ionic/p-96c4c1b9.entry.js +4 -0
- package/dist/ionic/p-9745f518.entry.js +4 -0
- package/dist/ionic/p-9a40af3c.entry.js +4 -0
- package/dist/ionic/p-9e725104.entry.js +4 -0
- package/dist/ionic/p-B4Kq2YNk.js +4 -0
- package/dist/ionic/p-BDqjX7Z_.js +4 -0
- package/dist/ionic/p-BYSs-jZz.js +4 -0
- package/dist/ionic/p-BbWo-T8F.js +4 -0
- package/dist/ionic/p-BjW8SOqw.js +4 -0
- package/dist/ionic/p-Bvz8PHo5.js +4 -0
- package/dist/ionic/p-BwKpO3Is.js +4 -0
- package/dist/ionic/p-C0EQceqV.js +5 -0
- package/dist/ionic/p-C1_a9uRb.js +4 -0
- package/dist/ionic/p-C6WD6qSF.js +4 -0
- package/dist/ionic/{p-CKvCXMs9.js → p-C7urd_wE.js} +1 -1
- package/{components/p-D13Eaw-8.js → dist/ionic/p-CCgRIJJv.js} +1 -1
- package/dist/ionic/p-CEkwLb3L.js +4 -0
- package/dist/ionic/p-CGFf6My7.js +4 -0
- package/dist/ionic/p-CLUwRxij.js +4 -0
- package/dist/ionic/p-CODBQrPj.js +4 -0
- package/dist/ionic/p-CP_sVwEm.js +4 -0
- package/dist/ionic/p-CSMWpRc0.js +4 -0
- package/dist/ionic/{p-VAemlbDS.js → p-CYYo93al.js} +1 -1
- package/dist/ionic/p-Cipl19Qe.js +4 -0
- package/{components/p-B-JJgYSG.js → dist/ionic/p-CnIzWLAn.js} +1 -1
- package/dist/ionic/p-Cvvva6Z7.js +4 -0
- package/dist/ionic/p-D1t981Ih.js +4 -0
- package/dist/ionic/{p-viFHDgRs.js → p-DINFwXlp.js} +1 -1
- package/dist/ionic/p-DIvCXVmD.js +4 -0
- package/dist/ionic/p-DTsDGZPd.js +4 -0
- package/dist/ionic/p-DaJxRxSQ.js +4 -0
- package/dist/ionic/p-Dhi5xtNS.js +4 -0
- package/dist/ionic/p-DtQgCTtW.js +4 -0
- package/dist/ionic/p-DuRx6DeQ.js +4 -0
- package/dist/ionic/p-YGLqXqFd.js +4 -0
- package/dist/ionic/p-YIsE5bNG.js +4 -0
- package/dist/ionic/p-a61c2ace.entry.js +4 -0
- package/dist/ionic/p-abb516e3.entry.js +4 -0
- package/dist/ionic/p-b54edee6.entry.js +4 -0
- package/dist/ionic/p-c076ac5c.entry.js +4 -0
- package/dist/ionic/p-c4ff25cb.entry.js +4 -0
- package/dist/ionic/p-c7279756.entry.js +4 -0
- package/dist/ionic/p-c7ebed50.entry.js +4 -0
- package/dist/ionic/p-cd0037e4.entry.js +4 -0
- package/dist/ionic/p-d261938d.entry.js +4 -0
- package/dist/ionic/p-d33dfc12.entry.js +4 -0
- package/dist/ionic/p-d7764330.entry.js +4 -0
- package/dist/ionic/p-defb23a2.entry.js +4 -0
- package/dist/ionic/p-df642ef5.entry.js +4 -0
- package/dist/ionic/p-e2a35249.entry.js +4 -0
- package/dist/ionic/p-e2b952ef.entry.js +4 -0
- package/dist/ionic/p-e77cfd1e.entry.js +4 -0
- package/dist/ionic/p-ecb9d3d3.entry.js +4 -0
- package/dist/ionic/p-efd13adf.entry.js +4 -0
- package/dist/ionic/p-f0904c1d.entry.js +4 -0
- package/dist/ionic/p-f33689f7.entry.js +4 -0
- package/dist/ionic/p-f693efe9.entry.js +4 -0
- package/dist/ionic/p-f788396b.entry.js +4 -0
- package/dist/ionic/p-fIOYmaqA.js +4 -0
- package/dist/ionic/p-fa16fad8.entry.js +4 -0
- package/dist/ionic/p-lMb_45ax.js +4 -0
- package/dist/ionic/p-oadJNPuo.js +4 -0
- package/dist/ionic/p-vXpMhGrs.js +4 -0
- package/dist/ionic/p-wNjWCZVO.js +4 -0
- package/dist/types/components/accordion/accordion.d.ts +6 -3
- package/dist/types/components/accordion-group/accordion-group.d.ts +12 -1
- package/dist/types/components/action-sheet/action-sheet-interface.d.ts +3 -7
- package/dist/types/components/action-sheet/action-sheet.d.ts +3 -2
- package/dist/types/components/alert/alert-interface.d.ts +3 -7
- package/dist/types/components/alert/alert.d.ts +3 -2
- package/dist/types/components/app/app.d.ts +4 -5
- package/dist/types/components/avatar/avatar.d.ts +32 -0
- package/dist/types/components/back-button/back-button.d.ts +2 -1
- package/dist/types/components/backdrop/backdrop.d.ts +4 -0
- package/dist/types/components/badge/badge.d.ts +34 -1
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +4 -1
- package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
- package/dist/types/components/button/button.d.ts +23 -8
- package/dist/types/components/buttons/buttons.d.ts +5 -1
- package/dist/types/components/card/card.d.ts +8 -1
- package/dist/types/components/card-content/card-content.d.ts +2 -1
- package/dist/types/components/card-header/card-header.d.ts +3 -2
- package/dist/types/components/card-subtitle/card-subtitle.d.ts +2 -1
- package/dist/types/components/card-title/card-title.d.ts +2 -1
- package/dist/types/components/checkbox/checkbox.d.ts +14 -4
- package/dist/types/components/chip/chip.d.ts +26 -1
- package/dist/types/components/col/col.d.ts +52 -5
- package/dist/types/components/content/content.d.ts +15 -0
- package/dist/types/components/datetime/datetime.d.ts +26 -1
- package/dist/types/components/datetime/utils/data.d.ts +5 -5
- package/dist/types/components/datetime-button/datetime-button.d.ts +2 -1
- package/dist/types/components/divider/divider.d.ts +20 -0
- package/dist/types/components/fab/fab.d.ts +4 -0
- package/dist/types/components/fab-button/fab-button.d.ts +5 -3
- package/dist/types/components/fab-list/fab-list.d.ts +4 -0
- package/dist/types/components/footer/footer-interface.d.ts +1 -0
- package/dist/types/components/footer/footer.d.ts +20 -3
- package/dist/types/components/gallery/gallery-constants.d.ts +9 -0
- package/dist/types/components/gallery/gallery-interface.d.ts +10 -0
- package/dist/types/components/gallery/gallery.d.ts +218 -0
- package/dist/types/components/gallery/test/utils.d.ts +3 -0
- package/dist/types/components/gallery-item/gallery-item.d.ts +33 -0
- package/dist/types/components/grid/grid.d.ts +4 -0
- package/dist/types/components/header/header-interface.d.ts +1 -0
- package/dist/types/components/header/header.d.ts +26 -3
- package/dist/types/components/header/header.utils.d.ts +4 -5
- package/dist/types/components/img/img.d.ts +3 -0
- package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +21 -0
- package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +4 -0
- package/dist/types/components/input/input.d.ts +34 -5
- package/dist/types/components/input-otp/input-otp.d.ts +37 -0
- package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +2 -0
- package/dist/types/components/item/item.d.ts +11 -4
- package/dist/types/components/item-divider/item-divider.d.ts +2 -1
- package/dist/types/components/item-group/item-group.d.ts +4 -0
- package/dist/types/components/item-option/item-option.d.ts +18 -1
- package/dist/types/components/item-options/item-options.d.ts +4 -0
- package/dist/types/components/item-sliding/item-sliding.d.ts +47 -1
- package/dist/types/components/item-sliding/test/test.utils.d.ts +13 -0
- package/dist/types/components/label/label.d.ts +2 -1
- package/dist/types/components/list/list.d.ts +15 -1
- package/dist/types/components/list-header/list-header.d.ts +2 -1
- package/dist/types/components/loading/loading-interface.d.ts +2 -7
- package/dist/types/components/loading/loading.d.ts +3 -2
- package/dist/types/components/menu/menu.d.ts +3 -0
- package/dist/types/components/menu-button/menu-button.d.ts +3 -1
- package/dist/types/components/menu-toggle/menu-toggle.d.ts +3 -0
- package/dist/types/components/modal/animations/ionic.enter.d.ts +6 -0
- package/dist/types/components/modal/animations/ionic.leave.d.ts +6 -0
- package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
- package/dist/types/components/modal/modal-interface.d.ts +4 -7
- package/dist/types/components/modal/modal.d.ts +16 -4
- package/dist/types/components/modal/safe-area-utils.d.ts +6 -0
- package/dist/types/components/nav/nav-interface.d.ts +9 -1
- package/dist/types/components/nav/nav.d.ts +5 -1
- package/dist/types/components/nav-link/nav-link.d.ts +4 -0
- package/dist/types/components/note/note.d.ts +2 -1
- package/dist/types/components/picker/picker.d.ts +2 -1
- package/dist/types/components/picker-column/picker-column.d.ts +2 -1
- package/dist/types/components/picker-column-option/picker-column-option.d.ts +4 -0
- package/dist/types/components/picker-legacy/picker.d.ts +2 -1
- package/dist/types/components/popover/popover-interface.d.ts +3 -6
- package/dist/types/components/popover/popover.d.ts +6 -5
- package/dist/types/components/progress-bar/progress-bar.d.ts +10 -1
- package/dist/types/components/radio/radio.d.ts +2 -1
- package/dist/types/components/radio-group/radio-group.d.ts +12 -0
- package/dist/types/components/range/range.d.ts +2 -1
- package/dist/types/components/refresher/refresher.d.ts +2 -1
- package/dist/types/components/refresher-content/refresher-content.d.ts +4 -0
- package/dist/types/components/reorder/reorder.d.ts +9 -0
- package/dist/types/components/reorder-group/reorder-group.d.ts +4 -0
- package/dist/types/components/ripple-effect/ripple-effect.d.ts +4 -0
- package/dist/types/components/route/route.d.ts +4 -0
- package/dist/types/components/router/router.d.ts +4 -0
- package/dist/types/components/router-link/router-link.d.ts +4 -0
- package/dist/types/components/router-outlet/router-outlet.d.ts +4 -1
- package/dist/types/components/row/row.d.ts +4 -0
- package/dist/types/components/searchbar/searchbar.d.ts +56 -10
- package/dist/types/components/segment/segment.d.ts +2 -1
- package/dist/types/components/segment-button/segment-button.d.ts +2 -1
- package/dist/types/components/select/select-interface.d.ts +31 -0
- package/dist/types/components/select/select.d.ts +66 -13
- package/dist/types/components/select-modal/select-modal.d.ts +8 -0
- package/dist/types/components/select-option/select-option.d.ts +45 -1
- package/dist/types/components/select-popover/select-popover.d.ts +3 -0
- package/dist/types/components/skeleton-text/skeleton-text.d.ts +4 -0
- package/dist/types/components/spinner/spinner.d.ts +15 -0
- package/dist/types/components/split-pane/split-pane.d.ts +4 -0
- package/dist/types/components/tab/tab.d.ts +4 -0
- package/dist/types/components/tab-bar/tab-bar-interface.d.ts +1 -0
- package/dist/types/components/tab-bar/tab-bar.d.ts +41 -3
- package/dist/types/components/tab-button/tab-button.d.ts +12 -1
- package/dist/types/components/tabs/tabs.d.ts +3 -0
- package/dist/types/components/text/text.d.ts +2 -1
- package/dist/types/components/textarea/textarea.d.ts +53 -4
- package/dist/types/components/thumbnail/thumbnail.d.ts +4 -0
- package/dist/types/components/title/title.d.ts +4 -0
- package/dist/types/components/toast/animations/utils.d.ts +2 -2
- package/dist/types/components/toast/toast-interface.d.ts +3 -7
- package/dist/types/components/toast/toast.d.ts +19 -2
- package/dist/types/components/toggle/toggle.d.ts +15 -1
- package/dist/types/components/toolbar/toolbar.d.ts +43 -3
- package/dist/types/components.d.ts +1881 -210
- package/dist/types/global/ionic-global.d.ts +28 -2
- package/dist/types/interface.d.ts +3 -0
- package/dist/types/utils/config.d.ts +106 -2
- package/dist/types/utils/css-value-validation.d.ts +21 -0
- package/dist/types/utils/focus-trap.d.ts +1 -1
- package/dist/types/utils/focus-visible.d.ts +13 -0
- package/dist/types/utils/forms/clear-button-press-controller.d.ts +20 -0
- package/dist/types/utils/forms/index.d.ts +1 -0
- package/dist/types/utils/forms/validity.d.ts +7 -0
- package/dist/types/utils/helpers.d.ts +22 -0
- package/dist/types/utils/overlay-control-label.d.ts +34 -0
- package/dist/types/utils/overlays-interface.d.ts +31 -1
- package/dist/types/utils/overlays.d.ts +1 -1
- package/dist/types/utils/sanitization/index.d.ts +58 -2
- package/dist/types/utils/scroll-hide-controller.d.ts +56 -0
- package/dist/types/utils/select-option-render.d.ts +53 -0
- package/dist/types/utils/test/playwright/drag-element.d.ts +16 -3
- package/dist/types/utils/test/playwright/generator.d.ts +31 -2
- package/dist/types/utils/theme.d.ts +9 -0
- package/hydrate/index.js +6481 -1412
- package/hydrate/index.mjs +6481 -1412
- package/package.json +9 -5
- package/components/p--JUspHvy.js +0 -4
- package/components/p-ABkNVeU9.js +0 -4
- package/components/p-B9jFTlwE.js +0 -4
- package/components/p-BLmJ0zRm.js +0 -4
- package/components/p-BMI53wYL.js +0 -4
- package/components/p-BMaKgJFV.js +0 -4
- package/components/p-BSEgsdFI.js +0 -4
- package/components/p-BlIAuGv2.js +0 -4
- package/components/p-BmVRXR1y.js +0 -4
- package/components/p-Bnsn6KaP.js +0 -4
- package/components/p-BsBCoGa-.js +0 -4
- package/components/p-BvmB20aD.js +0 -4
- package/components/p-Bz0dSlXZ.js +0 -4
- package/components/p-CHqRYvYm.js +0 -4
- package/components/p-CIGNaXM1.js +0 -4
- package/components/p-CO7fmmxt.js +0 -4
- package/components/p-CQGnMY3n.js +0 -4
- package/components/p-CSZf8_j0.js +0 -4
- package/components/p-C_xFdyXe.js +0 -4
- package/components/p-Cfx4M1Bn.js +0 -4
- package/components/p-CkMSOsFF.js +0 -4
- package/components/p-CmR5uXej.js +0 -4
- package/components/p-Cp4GRDqq.js +0 -4
- package/components/p-CsNJ1ULL.js +0 -4
- package/components/p-CtWGkNnJ.js +0 -4
- package/components/p-CzCbeKys.js +0 -4
- package/components/p-D-aHdMxW.js +0 -4
- package/components/p-D0d8qTwj.js +0 -4
- package/components/p-D3xo7hqU.js +0 -4
- package/components/p-D6Ynv7Xh.js +0 -4
- package/components/p-DCnGU1fF.js +0 -4
- package/components/p-DGvrK8dD.js +0 -4
- package/components/p-DJztqcrH.js +0 -4
- package/components/p-DOFCbuQR.js +0 -4
- package/components/p-DV5mPYQS.js +0 -4
- package/components/p-DWkAgceV.js +0 -4
- package/components/p-DiVJyqlX.js +0 -4
- package/components/p-DqZAXv2t.js +0 -4
- package/components/p-R8zmRi4c.js +0 -4
- package/components/p-SLS1rDZM.js +0 -4
- package/components/p-ZjP4CjeZ.js +0 -4
- package/components/p-aJ6PBUvj.js +0 -4
- package/components/p-gAg0kXZp.js +0 -4
- package/components/p-j5IxBIan.js +0 -4
- package/components/p-k_E4tX5Z.js +0 -4
- package/components/p-oD4kcBRX.js +0 -4
- package/components/p-rCa2eL0j.js +0 -4
- package/components/p-scxfI1Dd.js +0 -4
- package/components/p-vRBNsYbs.js +0 -4
- package/components/p-yzCsOZE2.js +0 -4
- package/dist/cjs/config-D6C-KlA9.js +0 -201
- package/dist/cjs/hardware-back-button-CXmUnTJC.js +0 -121
- package/dist/cjs/index-DkNv4J_i.js +0 -10
- package/dist/cjs/ionic-global-BerQGEpE.js +0 -151
- package/dist/cjs/keyboard-controller-GXBiBRKS.js +0 -167
- package/dist/cjs/validity-BpS37YFM.js +0 -19
- package/dist/esm/config-DQCONYYp.js +0 -195
- package/dist/esm/hardware-back-button-B93Gru0Y.js +0 -115
- package/dist/esm/index-ZjP4CjeZ.js +0 -7
- package/dist/esm/ionic-global-Cp_eT4sZ.js +0 -146
- package/dist/esm/keyboard-controller-BaaVITYt.js +0 -165
- package/dist/esm/validity-DJztqcrH.js +0 -17
- package/dist/ionic/p-01f81ea5.entry.js +0 -4
- package/dist/ionic/p-06c232a4.entry.js +0 -4
- package/dist/ionic/p-0caa922c.entry.js +0 -4
- package/dist/ionic/p-0dc33652.entry.js +0 -4
- package/dist/ionic/p-0fa9c382.entry.js +0 -4
- package/dist/ionic/p-10e833ef.entry.js +0 -4
- package/dist/ionic/p-15c9319c.entry.js +0 -4
- package/dist/ionic/p-21eb76d5.entry.js +0 -4
- package/dist/ionic/p-27d30585.entry.js +0 -4
- package/dist/ionic/p-2a05aa64.entry.js +0 -4
- package/dist/ionic/p-2b204c59.entry.js +0 -4
- package/dist/ionic/p-2bb2cb18.entry.js +0 -4
- package/dist/ionic/p-2fa58e80.entry.js +0 -4
- package/dist/ionic/p-3353c229.entry.js +0 -4
- package/dist/ionic/p-34586ead.entry.js +0 -4
- package/dist/ionic/p-37e720da.entry.js +0 -4
- package/dist/ionic/p-390ca786.entry.js +0 -4
- package/dist/ionic/p-3ae5f277.entry.js +0 -4
- package/dist/ionic/p-4654ae1c.entry.js +0 -4
- package/dist/ionic/p-4745f534.entry.js +0 -4
- package/dist/ionic/p-4858af1f.entry.js +0 -4
- package/dist/ionic/p-4baa5b82.entry.js +0 -4
- package/dist/ionic/p-4e92a11f.entry.js +0 -4
- package/dist/ionic/p-50e1194a.entry.js +0 -4
- package/dist/ionic/p-5334df12.entry.js +0 -4
- package/dist/ionic/p-5d1da0a2.entry.js +0 -4
- package/dist/ionic/p-5eb8e86d.entry.js +0 -4
- package/dist/ionic/p-65ebdf1b.entry.js +0 -4
- package/dist/ionic/p-746fa988.entry.js +0 -4
- package/dist/ionic/p-75dc25ba.entry.js +0 -4
- package/dist/ionic/p-7c319341.entry.js +0 -4
- package/dist/ionic/p-829367ed.entry.js +0 -4
- package/dist/ionic/p-84d5ce05.entry.js +0 -4
- package/dist/ionic/p-874b4bd8.entry.js +0 -4
- package/dist/ionic/p-8eb8ee76.entry.js +0 -4
- package/dist/ionic/p-9eeaBrnk.js +0 -4
- package/dist/ionic/p-9f9db3a2.entry.js +0 -4
- package/dist/ionic/p-9fa3c405.entry.js +0 -4
- package/dist/ionic/p-BGqMS-oh.js +0 -4
- package/dist/ionic/p-BUFIpxKM.js +0 -4
- package/dist/ionic/p-BmVRXR1y.js +0 -4
- package/dist/ionic/p-CFlfIb2g.js +0 -4
- package/dist/ionic/p-CIGNaXM1.js +0 -4
- package/dist/ionic/p-CmcFnK-B.js +0 -4
- package/dist/ionic/p-CtWGkNnJ.js +0 -4
- package/dist/ionic/p-Cx3IXROA.js +0 -4
- package/dist/ionic/p-D-3ycHmd.js +0 -4
- package/dist/ionic/p-D4uTWt4-.js +0 -4
- package/dist/ionic/p-DIuEbVLu.js +0 -4
- package/dist/ionic/p-DJztqcrH.js +0 -4
- package/dist/ionic/p-DV3sJJW8.js +0 -4
- package/dist/ionic/p-DiVJyqlX.js +0 -4
- package/dist/ionic/p-DoJvtrbw.js +0 -4
- package/dist/ionic/p-DqN5EA2O.js +0 -4
- package/dist/ionic/p-DzWaWHGc.js +0 -4
- package/dist/ionic/p-KjNvRoEp.js +0 -4
- package/dist/ionic/p-Nqf6uvGh.js +0 -4
- package/dist/ionic/p-SNAkTDfm.js +0 -4
- package/dist/ionic/p-ZjP4CjeZ.js +0 -4
- package/dist/ionic/p-a3bdcae6.entry.js +0 -4
- package/dist/ionic/p-aaeedb6b.entry.js +0 -4
- package/dist/ionic/p-af55a72f.entry.js +0 -4
- package/dist/ionic/p-b2020591.entry.js +0 -4
- package/dist/ionic/p-b9fadbfe.entry.js +0 -4
- package/dist/ionic/p-biz8zWmJ.js +0 -4
- package/dist/ionic/p-c0fb8edd.entry.js +0 -4
- package/dist/ionic/p-c38b648e.entry.js +0 -4
- package/dist/ionic/p-c4d8641b.entry.js +0 -4
- package/dist/ionic/p-c6e49f3f.entry.js +0 -4
- package/dist/ionic/p-ca2ab74d.entry.js +0 -4
- package/dist/ionic/p-d1aac015.entry.js +0 -4
- package/dist/ionic/p-d889ff6d.entry.js +0 -4
- package/dist/ionic/p-dfa8d673.entry.js +0 -4
- package/dist/ionic/p-ef4c3bee.entry.js +0 -4
- package/dist/ionic/p-f386f6ae.entry.js +0 -4
- package/dist/ionic/p-tcQvqkiX.js +0 -5
- package/dist/ionic/p-uWtqTrG8.js +0 -4
- package/dist/ionic/p-xWb6fgfq.js +0 -4
- /package/dist/collection/components/{input-password-toggle/input-password-toggle.css → refresher-content/refresher-content.css} +0 -0
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { r as registerInstance, e as config,
|
|
5
|
-
import {
|
|
6
|
-
import { a as isPlatform, b as getIonMode } from './ionic-global-
|
|
7
|
-
import { i as inheritAriaAttributes, h as hasLazyBuild, c as componentOnReady, e as clamp, s as shallowEqualStringMap } from './helpers-
|
|
4
|
+
import { r as registerInstance, h, e as config, d as Host, g as getElement, c as createEvent, a as readTask, i as forceUpdate, w as writeTask, f as printIonWarning, j as printIonError } from './index-C0EQceqV.js';
|
|
5
|
+
import { focusElements } from './focus-visible-vXpMhGrs.js';
|
|
6
|
+
import { c as getIonTheme, a as isPlatform, b as getIonMode } from './ionic-global-CEwbmRLz.js';
|
|
7
|
+
import { i as inheritAriaAttributes, h as hasLazyBuild, c as componentOnReady, e as clamp, s as shallowEqualStringMap } from './helpers-DfF5_wJc.js';
|
|
8
8
|
import { i as isRTL } from './dir-C53feagD.js';
|
|
9
|
-
import {
|
|
10
|
-
import { b as findIonContent, p as printIonContentErrorMsg, g as getScrollElement } from './index-
|
|
11
|
-
import { c as createKeyboardController } from './
|
|
9
|
+
import { h as hostContext, c as createColorClasses } from './theme-DaJxRxSQ.js';
|
|
10
|
+
import { b as findIonContent, p as printIonContentErrorMsg, g as getScrollElement } from './index-taYRjZGp.js';
|
|
11
|
+
import { c as createScrollHideController, a as createKeyboardController } from './scroll-hide-controller-CfbtPBWv.js';
|
|
12
12
|
import { g as getTimeGivenProgression } from './cubic-bezier-hHmYLOfE.js';
|
|
13
|
-
import { a as attachComponent, d as detachComponent } from './framework-delegate-
|
|
13
|
+
import { a as attachComponent, d as detachComponent } from './framework-delegate-DO2QXccA.js';
|
|
14
14
|
import { c as createLockController } from './lock-controller-B-hirT0v.js';
|
|
15
|
-
import { t as transition } from './index-
|
|
16
|
-
import './
|
|
17
|
-
import './
|
|
18
|
-
import './capacitor-CFERIeaU.js';
|
|
15
|
+
import { t as transition } from './index-BSDDOljg.js';
|
|
16
|
+
import './keyboard-DYGmALa7.js';
|
|
17
|
+
import './capacitor-DG_4yVXz.js';
|
|
19
18
|
|
|
20
19
|
const appCss = () => `html.plt-mobile ion-app{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.plt-mobile ion-app [contenteditable]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}ion-app.force-statusbar-padding{--ion-safe-area-top:20px}`;
|
|
21
20
|
|
|
@@ -23,51 +22,6 @@ const App = class {
|
|
|
23
22
|
constructor(hostRef) {
|
|
24
23
|
registerInstance(this, hostRef);
|
|
25
24
|
}
|
|
26
|
-
componentDidLoad() {
|
|
27
|
-
{
|
|
28
|
-
this.rIC(async () => {
|
|
29
|
-
const isHybrid = isPlatform(window, 'hybrid');
|
|
30
|
-
if (!config.getBoolean('_testing')) {
|
|
31
|
-
import('./index-BRHzoo00.js').then((module) => module.startTapClick(config));
|
|
32
|
-
}
|
|
33
|
-
if (config.getBoolean('statusTap', isHybrid)) {
|
|
34
|
-
import('./status-tap-vO-6s4Yp.js').then((module) => module.startStatusTap());
|
|
35
|
-
}
|
|
36
|
-
if (config.getBoolean('inputShims', needInputShims())) {
|
|
37
|
-
/**
|
|
38
|
-
* needInputShims() ensures that only iOS and Android
|
|
39
|
-
* platforms proceed into this block.
|
|
40
|
-
*/
|
|
41
|
-
const platform = isPlatform(window, 'ios') ? 'ios' : 'android';
|
|
42
|
-
import('./input-shims-LXhI7LEx.js').then((module) => module.startInputShims(config, platform));
|
|
43
|
-
}
|
|
44
|
-
const hardwareBackButtonModule = await import('./hardware-back-button-B93Gru0Y.js');
|
|
45
|
-
const supportsHardwareBackButtonEvents = isHybrid || shouldUseCloseWatcher();
|
|
46
|
-
if (config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {
|
|
47
|
-
hardwareBackButtonModule.startHardwareBackButton();
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
/**
|
|
51
|
-
* If an app sets hardwareBackButton: false and experimentalCloseWatcher: true
|
|
52
|
-
* then the close watcher will not be used.
|
|
53
|
-
*/
|
|
54
|
-
if (shouldUseCloseWatcher()) {
|
|
55
|
-
printIonWarning('[ion-app] - experimentalCloseWatcher was set to `true`, but hardwareBackButton was set to `false`. Both config options must be `true` for the Close Watcher API to be used.');
|
|
56
|
-
}
|
|
57
|
-
hardwareBackButtonModule.blockHardwareBackButton();
|
|
58
|
-
}
|
|
59
|
-
if (typeof window !== 'undefined') {
|
|
60
|
-
import('./keyboard-ywgs5efA.js').then((module) => module.startKeyboardAssist(window));
|
|
61
|
-
}
|
|
62
|
-
import('./focus-visible-BmVRXR1y.js').then((module) => (this.focusVisible = module.startFocusVisible()));
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
disconnectedCallback() {
|
|
67
|
-
if (this.loadTimeout) {
|
|
68
|
-
clearTimeout(this.loadTimeout);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
25
|
/**
|
|
72
26
|
* Used to set focus on an element that uses `ion-focusable`.
|
|
73
27
|
* Do not use this if focusing the element as a result of a keyboard
|
|
@@ -80,52 +34,29 @@ const App = class {
|
|
|
80
34
|
* @param elements An array of HTML elements to set focus on.
|
|
81
35
|
*/
|
|
82
36
|
async setFocus(elements) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if ('requestIdleCallback' in window) {
|
|
89
|
-
window.requestIdleCallback(callback);
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
this.loadTimeout = setTimeout(callback, 32);
|
|
93
|
-
}
|
|
37
|
+
/**
|
|
38
|
+
* The focus-visible utility is used to set focus on an
|
|
39
|
+
* element that uses `ion-focusable`.
|
|
40
|
+
*/
|
|
41
|
+
focusElements(elements);
|
|
94
42
|
}
|
|
95
43
|
render() {
|
|
96
|
-
const
|
|
97
|
-
return (h(Host, { key: '
|
|
98
|
-
[
|
|
44
|
+
const theme = getIonTheme(this);
|
|
45
|
+
return (h(Host, { key: '3b7e84c7c4187287123413f90838cda89136b2a4', class: {
|
|
46
|
+
[theme]: true,
|
|
99
47
|
'ion-page': true,
|
|
100
48
|
'force-statusbar-padding': config.getBoolean('_forceStatusbarPadding'),
|
|
101
49
|
} }));
|
|
102
50
|
}
|
|
103
51
|
get el() { return getElement(this); }
|
|
104
52
|
};
|
|
105
|
-
const needInputShims = () => {
|
|
106
|
-
/**
|
|
107
|
-
* iOS always needs input shims
|
|
108
|
-
*/
|
|
109
|
-
const needsShimsIOS = isPlatform(window, 'ios') && isPlatform(window, 'mobile');
|
|
110
|
-
if (needsShimsIOS) {
|
|
111
|
-
return true;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Android only needs input shims when running
|
|
115
|
-
* in the browser and only if the browser is using the
|
|
116
|
-
* new Chrome 108+ resize behavior: https://developer.chrome.com/blog/viewport-resize-behavior/
|
|
117
|
-
*/
|
|
118
|
-
const isAndroidMobileWeb = isPlatform(window, 'android') && isPlatform(window, 'mobileweb');
|
|
119
|
-
if (isAndroidMobileWeb) {
|
|
120
|
-
return true;
|
|
121
|
-
}
|
|
122
|
-
return false;
|
|
123
|
-
};
|
|
124
53
|
App.style = appCss();
|
|
125
54
|
|
|
126
|
-
const
|
|
55
|
+
const buttonsIonicCss = () => `.sc-ion-buttons-ionic-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0)}.sc-ion-buttons-ionic-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ionic-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ionic-s .button-clear{--color:var(--token-text-default, var(--token-primitives-neutral-1200, #242424));--background:transparent;--background-activated:transparent;--background-focused:transparent;--background-hover:transparent}.sc-ion-buttons-ionic-s .button-has-icon-only{width:var(--token-scale-1000, 40px);height:var(--token-scale-1000, 40px)}.sc-ion-buttons-ionic-s ion-icon[slot=icon-only]{font-size:var(--token-font-size-500, 1.25rem)}`;
|
|
127
56
|
|
|
128
|
-
const
|
|
57
|
+
const buttonsIosCss = () => `.sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0)}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-h{z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:5px;--padding-end:5px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-ios-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:0.12;--background-activated:#000;--background-activated-opacity:0.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast);--background-activated:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:0.12;--background-activated:#000;--background-activated-opacity:0.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.65em;line-height:0.67}`;
|
|
58
|
+
|
|
59
|
+
const buttonsMdCss = () => `.sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0)}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-h{z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:8px;--padding-end:8px;--box-shadow:none;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-md-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:3rem;height:3rem}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}`;
|
|
129
60
|
|
|
130
61
|
const Buttons = class {
|
|
131
62
|
constructor(hostRef) {
|
|
@@ -137,7 +68,7 @@ const Buttons = class {
|
|
|
137
68
|
* first toolbar, the buttons will be hidden and will
|
|
138
69
|
* only be shown once all toolbars have fully collapsed.
|
|
139
70
|
*
|
|
140
|
-
* Only applies in `ios`
|
|
71
|
+
* Only applies in the `ios` theme with `collapse` set to
|
|
141
72
|
* `true` on `ion-header`.
|
|
142
73
|
*
|
|
143
74
|
* Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
|
|
@@ -145,19 +76,20 @@ const Buttons = class {
|
|
|
145
76
|
this.collapse = false;
|
|
146
77
|
}
|
|
147
78
|
render() {
|
|
148
|
-
const
|
|
149
|
-
return (h(Host, { key: '
|
|
150
|
-
[
|
|
79
|
+
const theme = getIonTheme(this);
|
|
80
|
+
return (h(Host, { key: '95c107ba7871c801a5ef14c636dc8e2fe69debf3', class: {
|
|
81
|
+
[theme]: true,
|
|
151
82
|
['buttons-collapse']: this.collapse,
|
|
152
|
-
} }, h("slot", { key: '
|
|
83
|
+
} }, h("slot", { key: '58669abfce458e1344b84286d4200e305017b958' })));
|
|
153
84
|
}
|
|
154
85
|
};
|
|
155
86
|
Buttons.style = {
|
|
87
|
+
ionic: buttonsIonicCss(),
|
|
156
88
|
ios: buttonsIosCss(),
|
|
157
89
|
md: buttonsMdCss()
|
|
158
90
|
};
|
|
159
91
|
|
|
160
|
-
const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{
|
|
92
|
+
const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{right:0px;left:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{right:0px;left:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--internal-content-safe-area-padding-bottom, 0px));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:""}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}:host(.content-header-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll{-webkit-transition:height 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:height 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), height 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), height 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}:host(.content-header-hide-scroll-partner:not(.content-fullscreen).content-header-hide-scroll-hidden) .inner-scroll{height:calc(100% + var(--internal-header-hide-height, 0px));-webkit-transform:translateY(calc(-1 * var(--internal-header-hide-height, 0px)));transform:translateY(calc(-1 * var(--internal-header-hide-height, 0px)));-webkit-transition:height 200ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:height 200ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), height 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), height 200ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1)}:host(.content-footer-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll{-webkit-transition:height 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:height 200ms cubic-bezier(0.16, 1, 0.3, 1)}:host(.content-footer-hide-scroll-partner:not(.content-fullscreen).content-footer-hide-scroll-hidden) .inner-scroll{height:calc(100% + var(--internal-footer-hide-height, 0px));-webkit-transition:height 350ms cubic-bezier(0.4, 0, 1, 1);transition:height 350ms cubic-bezier(0.4, 0, 1, 1)}:host(.content-tab-bar-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll{-webkit-transition:height 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:height 200ms cubic-bezier(0.16, 1, 0.3, 1)}:host(.content-tab-bar-hide-scroll-partner:not(.content-fullscreen).content-tab-bar-hide-scroll-hidden) .inner-scroll{height:calc(100% + var(--internal-tab-bar-hide-height, 0px));-webkit-transition:height 350ms cubic-bezier(0.4, 0, 1, 1);transition:height 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){:host(.content-header-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll,:host(.content-header-hide-scroll-partner:not(.content-fullscreen).content-header-hide-scroll-hidden) .inner-scroll,:host(.content-footer-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll,:host(.content-footer-hide-scroll-partner:not(.content-fullscreen).content-footer-hide-scroll-hidden) .inner-scroll,:host(.content-tab-bar-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll,:host(.content-tab-bar-hide-scroll-partner:not(.content-fullscreen).content-tab-bar-hide-scroll-hidden) .inner-scroll{-webkit-transition:none;transition:none}}`;
|
|
161
93
|
|
|
162
94
|
const Content = class {
|
|
163
95
|
constructor(hostRef) {
|
|
@@ -224,6 +156,9 @@ const Content = class {
|
|
|
224
156
|
*/
|
|
225
157
|
this.scrollEvents = false;
|
|
226
158
|
}
|
|
159
|
+
fullscreenChanged() {
|
|
160
|
+
this.setupFullscreenResizeObserver();
|
|
161
|
+
}
|
|
227
162
|
componentWillLoad() {
|
|
228
163
|
this.inheritedAttributes = inheritAriaAttributes(this.el);
|
|
229
164
|
}
|
|
@@ -263,6 +198,12 @@ const Content = class {
|
|
|
263
198
|
closestTabs.addEventListener('ionTabBarLoaded', this.tabsLoadCallback);
|
|
264
199
|
}
|
|
265
200
|
}
|
|
201
|
+
// Re-observe on reattach, since componentDidLoad only fires once.
|
|
202
|
+
this.setupFullscreenResizeObserver();
|
|
203
|
+
}
|
|
204
|
+
componentDidLoad() {
|
|
205
|
+
// The custom elements build assigns fullscreen after connectedCallback.
|
|
206
|
+
this.setupFullscreenResizeObserver();
|
|
266
207
|
}
|
|
267
208
|
disconnectedCallback() {
|
|
268
209
|
this.onScrollEnd();
|
|
@@ -284,6 +225,42 @@ const Content = class {
|
|
|
284
225
|
clearTimeout(this.resizeTimeout);
|
|
285
226
|
this.resizeTimeout = null;
|
|
286
227
|
}
|
|
228
|
+
this.destroyFullscreenResizeObserver();
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Header and footer sizes can change after load without a window resize
|
|
232
|
+
* firing, so the `resize` listener alone misses those changes.
|
|
233
|
+
*
|
|
234
|
+
* Popover content is excluded because `contain: none` lets its offsets drive
|
|
235
|
+
* the host's own height, which would feed back into the observer.
|
|
236
|
+
*/
|
|
237
|
+
setupFullscreenResizeObserver() {
|
|
238
|
+
if (typeof ResizeObserver === 'undefined') {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
if (!this.fullscreen || hostContext('ion-popover', this.el)) {
|
|
242
|
+
this.destroyFullscreenResizeObserver();
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
if (this.fullscreenResizeObserver !== undefined) {
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
this.fullscreenResizeObserver = new ResizeObserver(() => {
|
|
249
|
+
// A hidden page reports a 0x0 box, which would zero the offsets. Same
|
|
250
|
+
// reasoning as the guard in onResize, minus its debounce so the
|
|
251
|
+
// correction lands in the next frame instead of 100ms later.
|
|
252
|
+
if (this.el.offsetParent === null) {
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
this.resize();
|
|
256
|
+
});
|
|
257
|
+
this.fullscreenResizeObserver.observe(this.el);
|
|
258
|
+
}
|
|
259
|
+
destroyFullscreenResizeObserver() {
|
|
260
|
+
if (this.fullscreenResizeObserver !== undefined) {
|
|
261
|
+
this.fullscreenResizeObserver.disconnect();
|
|
262
|
+
this.fullscreenResizeObserver = undefined;
|
|
263
|
+
}
|
|
287
264
|
}
|
|
288
265
|
/**
|
|
289
266
|
* Rotating certain devices can update
|
|
@@ -320,9 +297,8 @@ const Content = class {
|
|
|
320
297
|
this.resize();
|
|
321
298
|
}, 100);
|
|
322
299
|
}
|
|
323
|
-
shouldForceOverscroll() {
|
|
300
|
+
shouldForceOverscroll(mode) {
|
|
324
301
|
const { forceOverscroll } = this;
|
|
325
|
-
const mode = getIonMode(this);
|
|
326
302
|
return forceOverscroll === undefined ? mode === 'ios' && isPlatform('ios') : forceOverscroll;
|
|
327
303
|
}
|
|
328
304
|
resize() {
|
|
@@ -518,12 +494,13 @@ const Content = class {
|
|
|
518
494
|
render() {
|
|
519
495
|
const { fixedSlotPlacement, inheritedAttributes, isMainContent, scrollX, scrollY, el } = this;
|
|
520
496
|
const rtl = isRTL(el) ? 'rtl' : 'ltr';
|
|
521
|
-
const
|
|
522
|
-
const
|
|
523
|
-
const
|
|
497
|
+
const theme = getIonTheme(this);
|
|
498
|
+
const mode = getIonMode(this, theme);
|
|
499
|
+
const forceOverscroll = this.shouldForceOverscroll(mode);
|
|
500
|
+
const transitionShadow = theme === 'ios';
|
|
524
501
|
this.resize();
|
|
525
|
-
return (h(Host, Object.assign({ key: '
|
|
526
|
-
[
|
|
502
|
+
return (h(Host, Object.assign({ key: '8c7f646f58e7c38fb6d8661b1629b847a16753fb', role: isMainContent ? 'main' : undefined, class: createColorClasses(this.color, {
|
|
503
|
+
[theme]: true,
|
|
527
504
|
'content-fullscreen': this.fullscreen,
|
|
528
505
|
'content-sizing': hostContext('ion-popover', this.el),
|
|
529
506
|
overscroll: forceOverscroll,
|
|
@@ -531,14 +508,19 @@ const Content = class {
|
|
|
531
508
|
}), style: {
|
|
532
509
|
'--offset-top': `${this.cTop}px`,
|
|
533
510
|
'--offset-bottom': `${this.cBottom}px`,
|
|
534
|
-
} }, inheritedAttributes), h("div", { key: '
|
|
511
|
+
} }, inheritedAttributes), h("div", { key: '2b0505c3fdf5c92938b8419c0f57f8d999aec6b3', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? h("slot", { name: "fixed" }) : null, h("div", { key: '6b769596e491dea1d3618551497fde9364afdeda', class: {
|
|
535
512
|
'inner-scroll': true,
|
|
536
513
|
'scroll-x': scrollX,
|
|
537
514
|
'scroll-y': scrollY,
|
|
538
515
|
overscroll: (scrollX || scrollY) && forceOverscroll,
|
|
539
|
-
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, h("slot", { key: '
|
|
516
|
+
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, h("slot", { key: 'ba36c8468681d028352415039d2cb2a750f2638f' })), transitionShadow ? (h("div", { class: "transition-effect" }, h("div", { class: "transition-cover" }), h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? h("slot", { name: "fixed" }) : null));
|
|
540
517
|
}
|
|
541
518
|
get el() { return getElement(this); }
|
|
519
|
+
static get watchers() { return {
|
|
520
|
+
"fullscreen": [{
|
|
521
|
+
"fullscreenChanged": 0
|
|
522
|
+
}]
|
|
523
|
+
}; }
|
|
542
524
|
};
|
|
543
525
|
const getParentElement = (el) => {
|
|
544
526
|
var _a;
|
|
@@ -562,7 +544,8 @@ const getPageElement = (el) => {
|
|
|
562
544
|
* between the popover and the edges of the screen. But if the popover contains
|
|
563
545
|
* its own page element, we should use that instead.
|
|
564
546
|
*/
|
|
565
|
-
const
|
|
547
|
+
const appRootSelector = config.get('appRootSelector', 'ion-app');
|
|
548
|
+
const page = el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner, .popover-content`);
|
|
566
549
|
if (page) {
|
|
567
550
|
return page;
|
|
568
551
|
}
|
|
@@ -626,45 +609,90 @@ const handleFooterFade = (scrollEl, baseEl) => {
|
|
|
626
609
|
});
|
|
627
610
|
};
|
|
628
611
|
|
|
629
|
-
const
|
|
612
|
+
const ionicFooterMdCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}ion-footer.footer-scroll-effect-hide{-webkit-transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1), -webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1)}ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){ion-footer.footer-scroll-effect-hide,ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transition:none;transition:none}}.footer-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.footer-md.footer-collapse-fade{-webkit-box-shadow:none;box-shadow:none}.footer-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
|
|
630
613
|
|
|
631
|
-
const
|
|
614
|
+
const footerIosCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}ion-footer.footer-scroll-effect-hide{-webkit-transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1), -webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1)}ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){ion-footer.footer-scroll-effect-hide,ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transition:none;transition:none}}.footer-ios ion-toolbar:first-of-type{--border-width:0.55px 0 0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.footer-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.footer-translucent-ios ion-toolbar{--opacity:0.8}}.footer-ios.ion-no-border ion-toolbar:first-of-type{--border-width:0}`;
|
|
615
|
+
|
|
616
|
+
const footerMdCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}ion-footer.footer-scroll-effect-hide{-webkit-transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1), -webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1)}ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){ion-footer.footer-scroll-effect-hide,ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transition:none;transition:none}}.footer-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.footer-md.footer-collapse-fade{-webkit-box-shadow:none;box-shadow:none}.footer-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
|
|
632
617
|
|
|
633
618
|
const Footer = class {
|
|
634
619
|
constructor(hostRef) {
|
|
635
620
|
registerInstance(this, hostRef);
|
|
636
621
|
this.keyboardCtrl = null;
|
|
637
622
|
this.keyboardCtrlPromise = null;
|
|
623
|
+
this.scrollHideCtrlPromise = null;
|
|
624
|
+
this.hasWarnedCollapse = false;
|
|
625
|
+
this.fadeSetupId = 0;
|
|
638
626
|
this.keyboardVisible = false;
|
|
639
627
|
/**
|
|
640
628
|
* If `true`, the footer will be translucent.
|
|
641
|
-
* Only applies when the
|
|
629
|
+
* Only applies when the theme is `"ios"` and the device supports
|
|
642
630
|
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
643
631
|
*
|
|
644
632
|
* Note: In order to scroll content behind the footer, the `fullscreen`
|
|
645
633
|
* attribute needs to be set on the content.
|
|
646
634
|
*/
|
|
647
635
|
this.translucent = false;
|
|
648
|
-
this.checkCollapsibleFooter = () => {
|
|
649
|
-
const
|
|
650
|
-
if (
|
|
636
|
+
this.checkCollapsibleFooter = async () => {
|
|
637
|
+
const { scrollEffect, collapse } = this;
|
|
638
|
+
if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
|
|
639
|
+
this.hasWarnedCollapse = true;
|
|
640
|
+
printIonWarning(`[ion-footer] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-footer scroll-effect="${collapse}">`, this.el);
|
|
641
|
+
}
|
|
642
|
+
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
643
|
+
// Skip teardown/rebuild if the effect hasn't changed.
|
|
644
|
+
// This prevents keyboard toggles (which trigger re-renders via
|
|
645
|
+
// @State keyboardVisible) from destroying the scroll controller
|
|
646
|
+
// and resetting isHidden.
|
|
647
|
+
if (effect === this.activeEffect) {
|
|
651
648
|
return;
|
|
652
649
|
}
|
|
653
|
-
const
|
|
654
|
-
const hasFade =
|
|
650
|
+
const hasHide = effect === 'hide';
|
|
651
|
+
const hasFade = effect === 'fade';
|
|
655
652
|
this.destroyCollapsibleFooter();
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
653
|
+
const appRootSelector = config.get('appRootSelector', 'ion-app');
|
|
654
|
+
const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
|
|
655
|
+
const contentEl = pageEl ? findIonContent(pageEl) : null;
|
|
656
|
+
if (hasHide && contentEl) {
|
|
657
|
+
this.activeEffect = effect;
|
|
658
|
+
await this.setupScrollEffectHide(contentEl);
|
|
659
|
+
return;
|
|
660
|
+
}
|
|
661
|
+
// fade via the deprecated `collapse` prop is iOS-only.
|
|
662
|
+
// fade via the new `scrollEffect` prop works in all themes.
|
|
663
|
+
const isModeRestricted = scrollEffect === undefined && getIonTheme(this) !== 'ios';
|
|
664
|
+
if (hasFade && !isModeRestricted) {
|
|
659
665
|
if (!contentEl) {
|
|
660
666
|
printIonContentErrorMsg(this.el);
|
|
661
667
|
return;
|
|
662
668
|
}
|
|
663
669
|
this.setupFadeFooter(contentEl);
|
|
670
|
+
this.activeEffect = effect;
|
|
671
|
+
}
|
|
672
|
+
};
|
|
673
|
+
this.setupScrollEffectHide = async (contentEl) => {
|
|
674
|
+
const setupPromise = createScrollHideController(contentEl, {
|
|
675
|
+
el: this.el,
|
|
676
|
+
cssVar: '--internal-footer-hide-height',
|
|
677
|
+
hiddenClass: 'footer-scroll-hidden',
|
|
678
|
+
contentPartnerClass: 'content-footer-hide-scroll-partner',
|
|
679
|
+
contentHiddenClass: 'content-footer-hide-scroll-hidden',
|
|
680
|
+
});
|
|
681
|
+
this.scrollHideCtrlPromise = setupPromise;
|
|
682
|
+
const controller = await setupPromise;
|
|
683
|
+
if (this.scrollHideCtrlPromise === setupPromise) {
|
|
684
|
+
this.scrollHideCtrlPromise = null;
|
|
685
|
+
controller.init();
|
|
686
|
+
this.scrollHideCtrl = controller;
|
|
664
687
|
}
|
|
665
688
|
};
|
|
666
689
|
this.setupFadeFooter = async (contentEl) => {
|
|
667
|
-
const
|
|
690
|
+
const setupId = ++this.fadeSetupId;
|
|
691
|
+
const scrollEl = await getScrollElement(contentEl);
|
|
692
|
+
if (this.fadeSetupId !== setupId) {
|
|
693
|
+
return;
|
|
694
|
+
}
|
|
695
|
+
this.scrollEl = scrollEl;
|
|
668
696
|
/**
|
|
669
697
|
* Handle fading of toolbars on scroll
|
|
670
698
|
*/
|
|
@@ -709,6 +737,7 @@ const Footer = class {
|
|
|
709
737
|
}
|
|
710
738
|
}
|
|
711
739
|
disconnectedCallback() {
|
|
740
|
+
this.destroyCollapsibleFooter();
|
|
712
741
|
if (this.keyboardCtrlPromise) {
|
|
713
742
|
this.keyboardCtrlPromise.then((ctrl) => ctrl.destroy());
|
|
714
743
|
this.keyboardCtrlPromise = null;
|
|
@@ -719,29 +748,43 @@ const Footer = class {
|
|
|
719
748
|
}
|
|
720
749
|
}
|
|
721
750
|
destroyCollapsibleFooter() {
|
|
751
|
+
this.activeEffect = undefined;
|
|
752
|
+
this.fadeSetupId++;
|
|
753
|
+
this.scrollHideCtrlPromise = null;
|
|
754
|
+
if (this.scrollHideCtrl) {
|
|
755
|
+
this.scrollHideCtrl.destroy();
|
|
756
|
+
this.scrollHideCtrl = undefined;
|
|
757
|
+
}
|
|
722
758
|
if (this.scrollEl && this.contentScrollCallback) {
|
|
723
759
|
this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
|
|
724
760
|
this.contentScrollCallback = undefined;
|
|
725
761
|
}
|
|
726
762
|
}
|
|
727
763
|
render() {
|
|
728
|
-
const { translucent, collapse } = this;
|
|
729
|
-
const
|
|
764
|
+
const { translucent, scrollEffect, collapse } = this;
|
|
765
|
+
const theme = getIonTheme(this);
|
|
766
|
+
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
767
|
+
// fade via the deprecated `collapse` prop is iOS-only.
|
|
768
|
+
const isModeRestricted = scrollEffect === undefined && theme !== 'ios';
|
|
769
|
+
const hasHide = effect === 'hide';
|
|
770
|
+
const hasFade = effect === 'fade' && !isModeRestricted;
|
|
730
771
|
const tabs = this.el.closest('ion-tabs');
|
|
731
772
|
const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
|
|
732
|
-
return (h(Host, { key: '
|
|
733
|
-
[
|
|
773
|
+
return (h(Host, { key: 'a0777b4a639d22e15374879f018efcf589e756f8', role: "contentinfo", class: {
|
|
774
|
+
[theme]: true,
|
|
734
775
|
// Used internally for styling
|
|
735
|
-
[`footer-${
|
|
776
|
+
[`footer-${theme}`]: true,
|
|
736
777
|
[`footer-translucent`]: translucent,
|
|
737
|
-
[`footer-translucent-${
|
|
778
|
+
[`footer-translucent-${theme}`]: translucent,
|
|
738
779
|
['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
|
|
739
|
-
|
|
740
|
-
|
|
780
|
+
'footer-collapse-fade': hasFade,
|
|
781
|
+
'footer-scroll-effect-hide': hasHide,
|
|
782
|
+
} }, theme === 'ios' && translucent && h("div", { key: 'd78b46870cbf11c95b066d649c04ec398b66e614', class: "footer-background" }), h("slot", { key: '9dc34787cd29597fe1b1198db317602014ac1483' })));
|
|
741
783
|
}
|
|
742
784
|
get el() { return getElement(this); }
|
|
743
785
|
};
|
|
744
786
|
Footer.style = {
|
|
787
|
+
ionic: ionicFooterMdCss(),
|
|
745
788
|
ios: footerIosCss(),
|
|
746
789
|
md: footerMdCss()
|
|
747
790
|
};
|
|
@@ -793,13 +836,14 @@ const handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {
|
|
|
793
836
|
});
|
|
794
837
|
};
|
|
795
838
|
const setToolbarBackgroundOpacity = (headerEl, opacity) => {
|
|
839
|
+
var _a;
|
|
796
840
|
/**
|
|
797
841
|
* Fading in the backdrop opacity
|
|
798
842
|
* should happen after the large title
|
|
799
843
|
* has collapsed, so it is handled
|
|
800
844
|
* by handleHeaderFade()
|
|
801
845
|
*/
|
|
802
|
-
if (headerEl.collapse === 'fade') {
|
|
846
|
+
if (((_a = headerEl.scrollEffect) !== null && _a !== void 0 ? _a : headerEl.collapse) === 'fade') {
|
|
803
847
|
return;
|
|
804
848
|
}
|
|
805
849
|
if (opacity === undefined) {
|
|
@@ -957,46 +1001,69 @@ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
|
|
|
957
1001
|
* Get the role type for the ion-header.
|
|
958
1002
|
*
|
|
959
1003
|
* @param isInsideMenu If ion-header is inside ion-menu.
|
|
960
|
-
* @
|
|
961
|
-
*
|
|
962
|
-
*
|
|
963
|
-
* mode, otherwise 'banner'.
|
|
1004
|
+
* @returns 'none' if inside ion-menu, otherwise 'banner'.
|
|
1005
|
+
* Condensed headers start as 'banner' and have their role
|
|
1006
|
+
* toggled dynamically by setHeaderActive() on scroll.
|
|
964
1007
|
*/
|
|
965
|
-
const getRoleType = (isInsideMenu
|
|
1008
|
+
const getRoleType = (isInsideMenu) => {
|
|
966
1009
|
// If the header is inside a menu, it should not have the banner role.
|
|
967
1010
|
if (isInsideMenu) {
|
|
968
1011
|
return ROLE_NONE;
|
|
969
1012
|
}
|
|
970
|
-
/**
|
|
971
|
-
* Only apply role="none" to `md` mode condensed headers
|
|
972
|
-
* since the large header is never shown.
|
|
973
|
-
*/
|
|
974
|
-
if (isCondensed && mode === 'md') {
|
|
975
|
-
return ROLE_NONE;
|
|
976
|
-
}
|
|
977
1013
|
// Default to banner role.
|
|
978
1014
|
return ROLE_BANNER;
|
|
979
1015
|
};
|
|
980
1016
|
|
|
981
|
-
const
|
|
1017
|
+
const headerIonicCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header:not(.header-collapse-main):has(~ion-content ion-header.header-collapse-condense){opacity:0}.header-collapse-condense-hidden{display:none}ion-header.header-scroll-effect-hide{-webkit-transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);opacity:0}@media (prefers-reduced-motion: reduce){ion-header.header-scroll-effect-hide,ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transition:none;transition:none}}ion-header{z-index:10}ion-header.header-divider{border-bottom:var(--token-border-size-025, var(--token-scale-025, 1px)) var(--token-border-style-solid, solid) var(--token-border-default, var(--token-primitives-neutral-400, #d5d5d5))}ion-toolbar+ion-toolbar{--padding-start:var(--token-space-400, var(--token-scale-400, 16px));--padding-end:var(--token-space-400, var(--token-scale-400, 16px))}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(var(--token-scale-100, 4px));backdrop-filter:saturate(180%) blur(var(--token-scale-100, 4px))}.header-translucent-ionic ion-toolbar{--opacity:0.7}}`;
|
|
982
1018
|
|
|
983
|
-
const
|
|
1019
|
+
const headerIosCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header:not(.header-collapse-main):has(~ion-content ion-header.header-collapse-condense){opacity:0}.header-collapse-condense-hidden{display:none}ion-header.header-scroll-effect-hide{-webkit-transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);opacity:0}@media (prefers-reduced-motion: reduce){ion-header.header-scroll-effect-hide,ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transition:none;transition:none}}ion-header{z-index:10}.header-ios ion-toolbar:last-of-type{--border-width:0 0 0.55px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.header-translucent-ios ion-toolbar{--opacity:0.8}.header-collapse-condense-inactive .header-background{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.header-ios.ion-no-border ion-toolbar:last-of-type{--border-width:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}`;
|
|
1020
|
+
|
|
1021
|
+
const headerMdCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header:not(.header-collapse-main):has(~ion-content ion-header.header-collapse-condense){opacity:0}.header-collapse-condense-hidden{display:none}ion-header.header-scroll-effect-hide{-webkit-transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);opacity:0}@media (prefers-reduced-motion: reduce){ion-header.header-scroll-effect-hide,ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transition:none;transition:none}}ion-header{z-index:10}.header-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.header-md.header-collapse-condense{-webkit-box-shadow:none;box-shadow:none}.header-md.header-collapse-condense-inactive:not(.header-collapse-condense){-webkit-box-shadow:none;box-shadow:none}.header-md.header-collapse-fade{-webkit-box-shadow:none;box-shadow:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
|
|
984
1022
|
|
|
985
1023
|
const Header = class {
|
|
986
1024
|
constructor(hostRef) {
|
|
987
1025
|
registerInstance(this, hostRef);
|
|
988
1026
|
this.inheritedAttributes = {};
|
|
1027
|
+
this.scrollHideCtrlPromise = null;
|
|
1028
|
+
this.hasWarnedCollapse = false;
|
|
1029
|
+
this.fadeCondenseSetupId = 0;
|
|
1030
|
+
/**
|
|
1031
|
+
* If `true`, the header will have a line at the bottom.
|
|
1032
|
+
* TODO(ROU-10855): add support for this prop on ios/md themes
|
|
1033
|
+
*/
|
|
1034
|
+
this.divider = false;
|
|
989
1035
|
/**
|
|
990
1036
|
* If `true`, the header will be translucent.
|
|
991
|
-
* Only applies when the
|
|
1037
|
+
* Only applies when the theme is `"ios"` or `"ionic"` and the device supports
|
|
992
1038
|
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
993
1039
|
*
|
|
994
1040
|
* Note: In order to scroll content behind the header, the `fullscreen`
|
|
995
1041
|
* attribute needs to be set on the content.
|
|
996
1042
|
*/
|
|
997
1043
|
this.translucent = false;
|
|
1044
|
+
this.setupScrollEffectHide = async (contentEl) => {
|
|
1045
|
+
const setupPromise = createScrollHideController(contentEl, {
|
|
1046
|
+
el: this.el,
|
|
1047
|
+
cssVar: '--internal-header-hide-height',
|
|
1048
|
+
hiddenClass: 'header-scroll-hidden',
|
|
1049
|
+
contentPartnerClass: 'content-header-hide-scroll-partner',
|
|
1050
|
+
contentHiddenClass: 'content-header-hide-scroll-hidden',
|
|
1051
|
+
});
|
|
1052
|
+
this.scrollHideCtrlPromise = setupPromise;
|
|
1053
|
+
const controller = await setupPromise;
|
|
1054
|
+
if (this.scrollHideCtrlPromise === setupPromise) {
|
|
1055
|
+
this.scrollHideCtrlPromise = null;
|
|
1056
|
+
controller.init();
|
|
1057
|
+
this.scrollHideCtrl = controller;
|
|
1058
|
+
}
|
|
1059
|
+
};
|
|
998
1060
|
this.setupFadeHeader = async (contentEl, condenseHeader) => {
|
|
999
|
-
const
|
|
1061
|
+
const setupId = ++this.fadeCondenseSetupId;
|
|
1062
|
+
const scrollEl = await getScrollElement(contentEl);
|
|
1063
|
+
if (this.fadeCondenseSetupId !== setupId) {
|
|
1064
|
+
return;
|
|
1065
|
+
}
|
|
1066
|
+
this.scrollEl = scrollEl;
|
|
1000
1067
|
/**
|
|
1001
1068
|
* Handle fading of toolbars on scroll
|
|
1002
1069
|
*/
|
|
@@ -1020,37 +1087,63 @@ const Header = class {
|
|
|
1020
1087
|
this.destroyCollapsibleHeader();
|
|
1021
1088
|
}
|
|
1022
1089
|
async checkCollapsibleHeader() {
|
|
1023
|
-
const
|
|
1024
|
-
if (
|
|
1090
|
+
const { scrollEffect, collapse } = this;
|
|
1091
|
+
if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
|
|
1092
|
+
this.hasWarnedCollapse = true;
|
|
1093
|
+
printIonWarning(`[ion-header] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-header scroll-effect="${collapse}">`, this.el);
|
|
1094
|
+
}
|
|
1095
|
+
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
1096
|
+
// Skip teardown/rebuild if the effect hasn't changed.
|
|
1097
|
+
// This prevents re-renders from destroying the scroll controller
|
|
1098
|
+
// and resetting isHidden.
|
|
1099
|
+
if (effect === this.activeEffect) {
|
|
1025
1100
|
return;
|
|
1026
1101
|
}
|
|
1027
|
-
const
|
|
1028
|
-
const hasCondense =
|
|
1029
|
-
const hasFade =
|
|
1102
|
+
const hasHide = effect === 'hide';
|
|
1103
|
+
const hasCondense = effect === 'condense';
|
|
1104
|
+
const hasFade = effect === 'fade';
|
|
1030
1105
|
this.destroyCollapsibleHeader();
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1106
|
+
const appRootSelector = config.get('appRootSelector', 'ion-app');
|
|
1107
|
+
const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
|
|
1108
|
+
const contentEl = pageEl ? findIonContent(pageEl) : null;
|
|
1109
|
+
if (hasHide && contentEl) {
|
|
1110
|
+
this.activeEffect = effect;
|
|
1111
|
+
await this.setupScrollEffectHide(contentEl);
|
|
1112
|
+
return;
|
|
1113
|
+
}
|
|
1114
|
+
// condense/fade via the deprecated `collapse` prop are iOS-only.
|
|
1115
|
+
// condense/fade via the new `scrollEffect` prop work in all themes.
|
|
1116
|
+
const isModeRestricted = scrollEffect === undefined && getIonTheme(this) !== 'ios';
|
|
1117
|
+
if (hasCondense && !isModeRestricted) {
|
|
1034
1118
|
// Cloned elements are always needed in iOS transition
|
|
1035
1119
|
writeTask(() => {
|
|
1036
1120
|
const title = cloneElement('ion-title');
|
|
1037
1121
|
title.size = 'large';
|
|
1038
1122
|
cloneElement('ion-back-button');
|
|
1039
1123
|
});
|
|
1040
|
-
await this.setupCondenseHeader(contentEl, pageEl);
|
|
1124
|
+
const didSetup = await this.setupCondenseHeader(contentEl, pageEl);
|
|
1125
|
+
if (didSetup) {
|
|
1126
|
+
this.activeEffect = effect;
|
|
1127
|
+
}
|
|
1041
1128
|
}
|
|
1042
|
-
else if (hasFade) {
|
|
1043
|
-
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
1044
|
-
const contentEl = pageEl ? findIonContent(pageEl) : null;
|
|
1129
|
+
else if (hasFade && !isModeRestricted) {
|
|
1045
1130
|
if (!contentEl) {
|
|
1046
1131
|
printIonContentErrorMsg(this.el);
|
|
1047
1132
|
return;
|
|
1048
1133
|
}
|
|
1049
|
-
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
|
|
1134
|
+
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"],ion-header[scroll-effect="condense"]');
|
|
1135
|
+
this.activeEffect = effect;
|
|
1050
1136
|
await this.setupFadeHeader(contentEl, condenseHeader);
|
|
1051
1137
|
}
|
|
1052
1138
|
}
|
|
1053
1139
|
destroyCollapsibleHeader() {
|
|
1140
|
+
this.activeEffect = undefined;
|
|
1141
|
+
this.fadeCondenseSetupId++;
|
|
1142
|
+
this.scrollHideCtrlPromise = null;
|
|
1143
|
+
if (this.scrollHideCtrl) {
|
|
1144
|
+
this.scrollHideCtrl.destroy();
|
|
1145
|
+
this.scrollHideCtrl = undefined;
|
|
1146
|
+
}
|
|
1054
1147
|
if (this.intersectionObserver) {
|
|
1055
1148
|
this.intersectionObserver.disconnect();
|
|
1056
1149
|
this.intersectionObserver = undefined;
|
|
@@ -1067,21 +1160,40 @@ const Header = class {
|
|
|
1067
1160
|
async setupCondenseHeader(contentEl, pageEl) {
|
|
1068
1161
|
if (!contentEl || !pageEl) {
|
|
1069
1162
|
printIonContentErrorMsg(this.el);
|
|
1070
|
-
return;
|
|
1163
|
+
return false;
|
|
1071
1164
|
}
|
|
1072
1165
|
if (typeof IntersectionObserver === 'undefined') {
|
|
1073
|
-
return;
|
|
1166
|
+
return false;
|
|
1167
|
+
}
|
|
1168
|
+
const setupId = ++this.fadeCondenseSetupId;
|
|
1169
|
+
const scrollEl = await getScrollElement(contentEl);
|
|
1170
|
+
if (this.fadeCondenseSetupId !== setupId) {
|
|
1171
|
+
return false;
|
|
1172
|
+
}
|
|
1173
|
+
this.scrollEl = scrollEl;
|
|
1174
|
+
/**
|
|
1175
|
+
* The condense effect requires an ion-title with size="large"
|
|
1176
|
+
* in the condense header. Without it, there is nothing to
|
|
1177
|
+
* collapse into the main header toolbar.
|
|
1178
|
+
*/
|
|
1179
|
+
const hasLargeTitle = this.el.querySelector('ion-title[size="large"]') !== null;
|
|
1180
|
+
if (!hasLargeTitle) {
|
|
1181
|
+
printIonWarning('[ion-header] - The condense scroll effect requires an <ion-title size="large"> in the condense header.', this.el);
|
|
1182
|
+
return false;
|
|
1074
1183
|
}
|
|
1075
|
-
this.scrollEl = await getScrollElement(contentEl);
|
|
1076
1184
|
const headers = pageEl.querySelectorAll('ion-header');
|
|
1077
|
-
this.collapsibleMainHeader = Array.from(headers).find((header) =>
|
|
1185
|
+
this.collapsibleMainHeader = Array.from(headers).find((header) => {
|
|
1186
|
+
var _a;
|
|
1187
|
+
const effect = (_a = header.scrollEffect) !== null && _a !== void 0 ? _a : header.collapse;
|
|
1188
|
+
return effect !== 'condense';
|
|
1189
|
+
});
|
|
1078
1190
|
if (!this.collapsibleMainHeader) {
|
|
1079
|
-
return;
|
|
1191
|
+
return false;
|
|
1080
1192
|
}
|
|
1081
1193
|
const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);
|
|
1082
1194
|
const scrollHeaderIndex = createHeaderIndex(this.el);
|
|
1083
1195
|
if (!mainHeaderIndex || !scrollHeaderIndex) {
|
|
1084
|
-
return;
|
|
1196
|
+
return false;
|
|
1085
1197
|
}
|
|
1086
1198
|
setHeaderActive(mainHeaderIndex, false);
|
|
1087
1199
|
setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);
|
|
@@ -1113,31 +1225,45 @@ const Header = class {
|
|
|
1113
1225
|
this.collapsibleMainHeader.classList.add('header-collapse-main');
|
|
1114
1226
|
}
|
|
1115
1227
|
});
|
|
1228
|
+
return true;
|
|
1116
1229
|
}
|
|
1117
1230
|
render() {
|
|
1118
|
-
const { translucent, inheritedAttributes } = this;
|
|
1119
|
-
const
|
|
1120
|
-
const
|
|
1121
|
-
|
|
1231
|
+
const { translucent, inheritedAttributes, divider, scrollEffect, collapse } = this;
|
|
1232
|
+
const theme = getIonTheme(this);
|
|
1233
|
+
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
1234
|
+
// condense/fade via the deprecated `collapse` prop are iOS-only.
|
|
1235
|
+
const isModeRestricted = scrollEffect === undefined && theme !== 'ios';
|
|
1236
|
+
const hasHide = effect === 'hide';
|
|
1237
|
+
const hasCondense = effect === 'condense' && !isModeRestricted && this.el.querySelector('ion-title[size="large"]') !== null;
|
|
1238
|
+
const hasFade = effect === 'fade' && !isModeRestricted;
|
|
1239
|
+
// The condense header should be hidden when
|
|
1240
|
+
// - deprecated collapse prop is used on non-iOS (mode restricted), or
|
|
1241
|
+
// - scrollEffect="condense" is set but no ion-title[size="large"] is present
|
|
1242
|
+
const isHiddenCondense = effect === 'condense' && !hasCondense;
|
|
1122
1243
|
// banner role must be at top level, so remove role if inside a menu
|
|
1123
|
-
const roleType = getRoleType(hostContext('ion-menu', this.el)
|
|
1124
|
-
return (h(Host, Object.assign({ key: '
|
|
1125
|
-
[
|
|
1244
|
+
const roleType = isHiddenCondense ? 'none' : getRoleType(hostContext('ion-menu', this.el));
|
|
1245
|
+
return (h(Host, Object.assign({ key: '09f60ca014bb7b3a85d3c0a94e7989d5dbc43f46', role: roleType, class: {
|
|
1246
|
+
[theme]: true,
|
|
1126
1247
|
// Used internally for styling
|
|
1127
|
-
[`header-${
|
|
1248
|
+
[`header-${theme}`]: true,
|
|
1128
1249
|
[`header-translucent`]: this.translucent,
|
|
1129
|
-
[
|
|
1130
|
-
[
|
|
1131
|
-
|
|
1250
|
+
['header-collapse-condense']: hasCondense,
|
|
1251
|
+
['header-collapse-condense-hidden']: isHiddenCondense,
|
|
1252
|
+
['header-collapse-fade']: hasFade,
|
|
1253
|
+
[`header-translucent-${theme}`]: this.translucent,
|
|
1254
|
+
['header-divider']: divider,
|
|
1255
|
+
'header-scroll-effect-hide': hasHide,
|
|
1256
|
+
} }, inheritedAttributes), theme !== 'md' && translucent && h("div", { key: 'fd5ff245ae0166e5e1d50936cacc98c90625db48', class: "header-background" }), h("slot", { key: '1baa31af87b9eb6406a21073ec65afa191dfbb3d' })));
|
|
1132
1257
|
}
|
|
1133
1258
|
get el() { return getElement(this); }
|
|
1134
1259
|
};
|
|
1135
1260
|
Header.style = {
|
|
1261
|
+
ionic: headerIonicCss(),
|
|
1136
1262
|
ios: headerIosCss(),
|
|
1137
1263
|
md: headerMdCss()
|
|
1138
1264
|
};
|
|
1139
1265
|
|
|
1140
|
-
const routerOutletCss = () => `:host{
|
|
1266
|
+
const routerOutletCss = () => `:host{right:0;left:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
|
|
1141
1267
|
|
|
1142
1268
|
const RouterOutlet = class {
|
|
1143
1269
|
constructor(hostRef) {
|
|
@@ -1148,7 +1274,7 @@ const RouterOutlet = class {
|
|
|
1148
1274
|
this.lockController = createLockController();
|
|
1149
1275
|
this.gestureOrAnimationInProgress = false;
|
|
1150
1276
|
/**
|
|
1151
|
-
* The mode determines
|
|
1277
|
+
* The mode determines the platform behaviors of the component.
|
|
1152
1278
|
*/
|
|
1153
1279
|
this.mode = getIonMode(this);
|
|
1154
1280
|
/**
|
|
@@ -1168,7 +1294,7 @@ const RouterOutlet = class {
|
|
|
1168
1294
|
this.swipeHandler.onStart();
|
|
1169
1295
|
}
|
|
1170
1296
|
};
|
|
1171
|
-
this.gesture = (await import('./swipe-back-
|
|
1297
|
+
this.gesture = (await import('./swipe-back-qmvTRnSq.js')).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), (step) => { var _a; return (_a = this.ani) === null || _a === void 0 ? void 0 : _a.progressStep(step); }, (shouldComplete, step, dur) => {
|
|
1172
1298
|
if (this.ani) {
|
|
1173
1299
|
this.ani.onFinish(() => {
|
|
1174
1300
|
this.gestureOrAnimationInProgress = false;
|
|
@@ -1314,7 +1440,7 @@ const RouterOutlet = class {
|
|
|
1314
1440
|
return true;
|
|
1315
1441
|
}
|
|
1316
1442
|
render() {
|
|
1317
|
-
return h("slot", { key: '
|
|
1443
|
+
return h("slot", { key: '56e3d06ed939755796058e30ef19fbc7f7cb490d' });
|
|
1318
1444
|
}
|
|
1319
1445
|
get el() { return getElement(this); }
|
|
1320
1446
|
static get watchers() { return {
|
|
@@ -1325,9 +1451,11 @@ const RouterOutlet = class {
|
|
|
1325
1451
|
};
|
|
1326
1452
|
RouterOutlet.style = routerOutletCss();
|
|
1327
1453
|
|
|
1328
|
-
const
|
|
1454
|
+
const titleIonicCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{font-size:var(--token-font-size-450, 1.125rem);font-weight:var(--token-font-weight-medium, 500);letter-spacing:var(--token-font-letter-spacing-0, 0%);line-height:var(--token-font-line-height-700, var(--token-scale-700, 28px));text-decoration:none;text-transform:none;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host(.title-large){font-size:var(--token-font-size-700, 1.75rem);font-weight:var(--token-font-weight-medium, 500);letter-spacing:var(--token-font-letter-spacing-0, 0%);line-height:var(--token-font-line-height-900, var(--token-scale-900, 36px));text-decoration:none;text-transform:none}`;
|
|
1455
|
+
|
|
1456
|
+
const titleIosCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host(.ion-color){color:var(--ion-color-base)}:host{top:0;-webkit-padding-start:90px;padding-inline-start:90px;-webkit-padding-end:90px;padding-inline-end:90px;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);position:absolute;width:100%;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);font-size:min(1.0625rem, 20.4px);font-weight:600;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host{inset-inline-start:0}:host(.title-small){-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px;padding-top:6px;padding-bottom:16px;position:relative;font-size:min(0.8125rem, 23.4px);font-weight:normal}:host(.title-large){-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:2px;padding-bottom:4px;-webkit-transform-origin:left center;transform-origin:left center;position:static;-ms-flex-align:end;align-items:flex-end;min-width:100%;font-size:min(2.125rem, 61.2px);font-weight:700;text-align:start}:host(.title-large.title-rtl){-webkit-transform-origin:right center;transform-origin:right center}:host(.title-large.ion-cloned-element){--color:var(--ion-text-color, #000);font-family:var(--ion-font-family)}:host(.title-large) .toolbar-title{-webkit-transform-origin:inherit;transform-origin:inherit;width:auto}:host-context([dir=rtl]):host(.title-large) .toolbar-title,:host-context([dir=rtl]).title-large .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}@supports selector(:dir(rtl)){:host(.title-large:dir(rtl)) .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}}`;
|
|
1329
1457
|
|
|
1330
|
-
const titleMdCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}
|
|
1458
|
+
const titleMdCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host(.ion-color){color:var(--ion-color-base)}:host{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:0;padding-bottom:0;font-size:1.25rem;font-weight:500;letter-spacing:0.0125em}:host(.title-small){width:100%;height:100%;font-size:0.9375rem;font-weight:normal}:host(.title-large){width:100%;height:100%;font-size:1.75rem;font-weight:400}`;
|
|
1331
1459
|
|
|
1332
1460
|
const ToolbarTitle = class {
|
|
1333
1461
|
constructor(hostRef) {
|
|
@@ -1350,13 +1478,13 @@ const ToolbarTitle = class {
|
|
|
1350
1478
|
return this.size !== undefined ? this.size : 'default';
|
|
1351
1479
|
}
|
|
1352
1480
|
render() {
|
|
1353
|
-
const
|
|
1481
|
+
const theme = getIonTheme(this);
|
|
1354
1482
|
const size = this.getSize();
|
|
1355
|
-
return (h(Host, { key: '
|
|
1356
|
-
[
|
|
1483
|
+
return (h(Host, { key: 'd64e86bed418cba707d4a26c9274f18ed06c0e9e', class: createColorClasses(this.color, {
|
|
1484
|
+
[theme]: true,
|
|
1357
1485
|
[`title-${size}`]: true,
|
|
1358
1486
|
'title-rtl': document.dir === 'rtl',
|
|
1359
|
-
}) }, h("div", { key: '
|
|
1487
|
+
}) }, h("div", { key: '386a71e974cde0bfbf5b655d69ed5f718de8ce48', class: "toolbar-title" }, h("slot", { key: '8aa804c9e1b11574a42268805d3117a085e699b4' }))));
|
|
1360
1488
|
}
|
|
1361
1489
|
get el() { return getElement(this); }
|
|
1362
1490
|
static get watchers() { return {
|
|
@@ -1366,18 +1494,29 @@ const ToolbarTitle = class {
|
|
|
1366
1494
|
}; }
|
|
1367
1495
|
};
|
|
1368
1496
|
ToolbarTitle.style = {
|
|
1497
|
+
ionic: titleIonicCss(),
|
|
1369
1498
|
ios: titleIosCss(),
|
|
1370
1499
|
md: titleMdCss()
|
|
1371
1500
|
};
|
|
1372
1501
|
|
|
1373
|
-
const
|
|
1502
|
+
const toolbarIonicCss = () => `:host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);contain:content;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));pointer-events:none}::slotted(ion-progress-bar){right:0;left:0;bottom:0;position:absolute}:host{--background:var(--token-bg-surface-default, var(--token-primitives-base-white, #ffffff));--color:var(--token-text-default, var(--token-primitives-neutral-1200, #242424));--border-color:currentColor;--padding-top:var(--token-space-200, var(--token-scale-200, 8px));--padding-bottom:var(--token-space-200, var(--token-scale-200, 8px));--padding-start:var(--token-space-200, var(--token-scale-200, 8px));--padding-end:var(--token-space-200, var(--token-scale-200, 8px));--min-height:var(--token-scale-1400, 56px)}.toolbar-container{gap:var(--token-space-400, var(--token-scale-400, 16px));z-index:10}.toolbar-background{z-index:-1}.toolbar-content{-ms-flex:1 1 auto;flex:1 1 auto;min-width:0}:host(.toolbar-searchbar) ::slotted(ion-searchbar){padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}::slotted(ion-buttons){gap:var(--token-space-200, var(--token-scale-200, 8px))}::slotted(ion-title){-webkit-padding-start:var(--token-space-200, var(--token-scale-200, 8px));padding-inline-start:var(--token-space-200, var(--token-scale-200, 8px));-webkit-padding-end:var(--token-space-200, var(--token-scale-200, 8px));padding-inline-end:var(--token-space-200, var(--token-scale-200, 8px))}:host(.toolbar-title-large) ::slotted(ion-title){-webkit-padding-start:var(--token-space-400, var(--token-scale-400, 16px));padding-inline-start:var(--token-space-400, var(--token-scale-400, 16px));-webkit-padding-end:var(--token-space-400, var(--token-scale-400, 16px));padding-inline-end:var(--token-space-400, var(--token-scale-400, 16px))}:host(.has-end-content) slot[name=end],:host(.show-end) slot[name=end]{display:-ms-flexbox;display:flex;-ms-flex:0 0 var(--start-end-size, 0);flex:0 0 var(--start-end-size, 0);-ms-flex-pack:end;justify-content:flex-end;text-align:end}:host(.has-start-content) slot[name=start],:host(.show-start) slot[name=start]{display:-ms-flexbox;display:flex;-ms-flex:0 0 var(--start-end-size, 0);flex:0 0 var(--start-end-size, 0)}:host(.has-primary-content) slot[name=primary],:host(.show-primary) slot[name=primary]{display:-ms-flexbox;display:flex;-ms-flex:0 0 var(--primary-secondary-size, 0);flex:0 0 var(--primary-secondary-size, 0);-ms-flex-pack:end;justify-content:flex-end;text-align:end}:host(.has-secondary-content) slot[name=secondary],:host(.show-secondary) slot[name=secondary]{display:-ms-flexbox;display:flex;-ms-flex:0 0 var(--primary-secondary-size, 0);flex:0 0 var(--primary-secondary-size, 0)}:host(.toolbar-title-placement-start) ::slotted(ion-title){text-align:start}:host(.toolbar-title-placement-center) ::slotted(ion-title){text-align:center}:host(.toolbar-title-placement-end) ::slotted(ion-title){text-align:end}`;
|
|
1374
1503
|
|
|
1375
|
-
const
|
|
1504
|
+
const toolbarIosCss = () => `:host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);contain:content;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));pointer-events:none}::slotted(ion-progress-bar){right:0;left:0;bottom:0;position:absolute}:host{font-family:var(--ion-font-family, inherit);z-index:10}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{z-index:10}.toolbar-background{z-index:-1}:host{--background:var(--ion-toolbar-background, var(--ion-color-step-50, var(--ion-background-color-step-50, #f7f7f7)));--color:var(--ion-toolbar-color, var(--ion-text-color, #000));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.2)))));--padding-top:3px;--padding-bottom:3px;--padding-start:4px;--padding-end:4px;--min-height:44px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:4;order:4;min-width:0}:host(.toolbar-segment) .toolbar-content{display:-ms-inline-flexbox;display:inline-flex}:host(.toolbar-searchbar) .toolbar-container{padding-top:0;padding-bottom:0}:host(.toolbar-searchbar) ::slotted(*){-ms-flex-item-align:start;align-self:start}:host(.toolbar-searchbar) ::slotted(ion-chip){margin-top:3px}::slotted(ion-buttons){min-height:38px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:3;order:3}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}:host(.toolbar-title-large) .toolbar-container{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:start;align-items:flex-start}:host(.toolbar-title-large) .toolbar-content ion-title{-ms-flex:1;flex:1;-ms-flex-order:8;order:8;min-width:100%}`;
|
|
1505
|
+
|
|
1506
|
+
const toolbarMdCss = () => `:host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);contain:content;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));pointer-events:none}::slotted(ion-progress-bar){right:0;left:0;bottom:0;position:absolute}:host{font-family:var(--ion-font-family, inherit);z-index:10}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{z-index:10}.toolbar-background{z-index:-1}:host{--background:var(--ion-toolbar-background, var(--ion-background-color, #fff));--color:var(--ion-toolbar-color, var(--ion-text-color, #424242));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, #c1c4cd))));--padding-top:0;--padding-bottom:0;--padding-start:0;--padding-end:0;--min-height:56px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:3;order:3;min-width:0;max-width:100%}::slotted(.buttons-first-slot){-webkit-margin-start:4px;margin-inline-start:4px}::slotted(.buttons-last-slot){-webkit-margin-end:4px;margin-inline-end:4px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:4;order:4}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}`;
|
|
1376
1507
|
|
|
1377
1508
|
const Toolbar = class {
|
|
1378
1509
|
constructor(hostRef) {
|
|
1379
1510
|
registerInstance(this, hostRef);
|
|
1380
1511
|
this.childrenStyles = new Map();
|
|
1512
|
+
this.slotClasses = [
|
|
1513
|
+
'has-start-content',
|
|
1514
|
+
'has-end-content',
|
|
1515
|
+
'has-primary-content',
|
|
1516
|
+
'has-secondary-content',
|
|
1517
|
+
];
|
|
1518
|
+
this.showClasses = ['show-start', 'show-end', 'show-primary', 'show-secondary'];
|
|
1519
|
+
this.slotSizeVars = ['--start-end-size', '--primary-secondary-size'];
|
|
1381
1520
|
}
|
|
1382
1521
|
componentWillLoad() {
|
|
1383
1522
|
const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));
|
|
@@ -1394,6 +1533,173 @@ const Toolbar = class {
|
|
|
1394
1533
|
if (lastButtons) {
|
|
1395
1534
|
lastButtons.classList.add('buttons-last-slot');
|
|
1396
1535
|
}
|
|
1536
|
+
this.updateSlotClasses();
|
|
1537
|
+
}
|
|
1538
|
+
componentDidLoad() {
|
|
1539
|
+
this.updateSlotClasses();
|
|
1540
|
+
this.updateSlotWidths();
|
|
1541
|
+
}
|
|
1542
|
+
titlePlacementChanged() {
|
|
1543
|
+
this.updateSlotClasses();
|
|
1544
|
+
}
|
|
1545
|
+
/**
|
|
1546
|
+
* Gets the title placement.
|
|
1547
|
+
* Returns the title placement if it is set, otherwise returns `"center"`
|
|
1548
|
+
* for `ionic` and `ios`, and `"start"` for `md`.
|
|
1549
|
+
*/
|
|
1550
|
+
getTitlePlacement() {
|
|
1551
|
+
if (this.titlePlacement !== undefined) {
|
|
1552
|
+
return this.titlePlacement;
|
|
1553
|
+
}
|
|
1554
|
+
return getIonTheme(this) === 'ionic' || getIonTheme(this) === 'ios' ? 'center' : 'start';
|
|
1555
|
+
}
|
|
1556
|
+
/**
|
|
1557
|
+
* Updates the CSS custom properties for slot widths
|
|
1558
|
+
* This ensures that slots shown by their met conditions
|
|
1559
|
+
* have a minimum width matching their required slot
|
|
1560
|
+
*/
|
|
1561
|
+
updateSlotWidths(tries = 0) {
|
|
1562
|
+
// Set timeout to try to execute after everything is rendered
|
|
1563
|
+
setTimeout(() => {
|
|
1564
|
+
// Attempt to measure and update
|
|
1565
|
+
const success = this.measureAndUpdateSlots();
|
|
1566
|
+
// If not all measurements were successful, try again in 100 ms
|
|
1567
|
+
// cap recursion at 5 tries for safety
|
|
1568
|
+
if (!success && tries < 5) {
|
|
1569
|
+
setTimeout(() => {
|
|
1570
|
+
this.updateSlotWidths(tries + 1);
|
|
1571
|
+
}, 100);
|
|
1572
|
+
}
|
|
1573
|
+
});
|
|
1574
|
+
}
|
|
1575
|
+
/**
|
|
1576
|
+
* Measure the widths of the slots and update the CSS custom properties
|
|
1577
|
+
* for the minimum width of each pair of slots based on the largest width in each pair.
|
|
1578
|
+
* Returns whether we successfully measured all of the slots we expect to have content.
|
|
1579
|
+
* If not, the content probably hasn't rendered yet and we need to try again.
|
|
1580
|
+
*/
|
|
1581
|
+
measureAndUpdateSlots() {
|
|
1582
|
+
// Define the relationship between slots based on the conditions array
|
|
1583
|
+
// Group slots that should have the same width
|
|
1584
|
+
const slotPairs = [
|
|
1585
|
+
{ name: 'start-end', slots: ['start', 'end'] },
|
|
1586
|
+
{ name: 'primary-secondary', slots: ['primary', 'secondary'] },
|
|
1587
|
+
];
|
|
1588
|
+
// First, measure all slot widths
|
|
1589
|
+
const slotWidths = new Map();
|
|
1590
|
+
let allMeasurementsSuccessful = true;
|
|
1591
|
+
// Measure all slots with content
|
|
1592
|
+
const slots = ['start', 'end', 'primary', 'secondary'];
|
|
1593
|
+
slots.forEach((slot) => {
|
|
1594
|
+
var _a;
|
|
1595
|
+
if (this.el.classList.contains(`has-${slot}-content`)) {
|
|
1596
|
+
const slotElement = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slot}"]`);
|
|
1597
|
+
if (slotElement) {
|
|
1598
|
+
// Check if the slot contains an img or ion-img
|
|
1599
|
+
const assignedElements = slotElement.assignedElements({ flatten: true });
|
|
1600
|
+
const hasImg = assignedElements.some((el) => {
|
|
1601
|
+
if (el.tagName === 'IMG' || el.tagName === 'ION-IMG') {
|
|
1602
|
+
return true;
|
|
1603
|
+
}
|
|
1604
|
+
// Check for nested images
|
|
1605
|
+
return el.querySelector('img, ion-img');
|
|
1606
|
+
});
|
|
1607
|
+
// Temporarily allow slot to size to content by setting flex-basis
|
|
1608
|
+
// to 'auto'. This ensures that slotted images can render at their
|
|
1609
|
+
// intrinsic width for measurement.
|
|
1610
|
+
if (hasImg) {
|
|
1611
|
+
const { name } = slotPairs.find((pair) => pair.slots.includes(slot));
|
|
1612
|
+
this.el.style.setProperty(`--${name}-size`, 'auto');
|
|
1613
|
+
}
|
|
1614
|
+
const width = slotElement.offsetWidth;
|
|
1615
|
+
if (width > 0) {
|
|
1616
|
+
slotWidths.set(slot, width);
|
|
1617
|
+
}
|
|
1618
|
+
else {
|
|
1619
|
+
allMeasurementsSuccessful = false;
|
|
1620
|
+
}
|
|
1621
|
+
}
|
|
1622
|
+
}
|
|
1623
|
+
});
|
|
1624
|
+
// Then set the CSS custom properties based on the largest width in each pair
|
|
1625
|
+
slotPairs.forEach(({ name, slots }) => {
|
|
1626
|
+
// Find the maximum width among the slots in this pair
|
|
1627
|
+
let maxWidth = 0;
|
|
1628
|
+
let hasAnyContent = false;
|
|
1629
|
+
slots.forEach((slot) => {
|
|
1630
|
+
var _a;
|
|
1631
|
+
if (slotWidths.has(slot)) {
|
|
1632
|
+
hasAnyContent = true;
|
|
1633
|
+
maxWidth = Math.max(maxWidth, (_a = slotWidths.get(slot)) !== null && _a !== void 0 ? _a : 0);
|
|
1634
|
+
}
|
|
1635
|
+
});
|
|
1636
|
+
// If at least one slot in the pair has content, set the min-width for the pair
|
|
1637
|
+
if (hasAnyContent && maxWidth > 0) {
|
|
1638
|
+
// Set a single CSS variable for the pair
|
|
1639
|
+
this.el.style.setProperty(`--${name}-size`, `${maxWidth}px`);
|
|
1640
|
+
}
|
|
1641
|
+
});
|
|
1642
|
+
return allMeasurementsSuccessful;
|
|
1643
|
+
}
|
|
1644
|
+
/**
|
|
1645
|
+
* Removes all slot visibility classes and slot width CSS variables.
|
|
1646
|
+
*/
|
|
1647
|
+
removeSlotClasses() {
|
|
1648
|
+
this.el.classList.remove(...this.slotClasses, ...this.showClasses);
|
|
1649
|
+
this.slotSizeVars.forEach((cssVar) => this.el.style.removeProperty(cssVar));
|
|
1650
|
+
}
|
|
1651
|
+
updateSlotClasses() {
|
|
1652
|
+
const titlePlacement = this.getTitlePlacement();
|
|
1653
|
+
if (titlePlacement !== 'center') {
|
|
1654
|
+
this.removeSlotClasses();
|
|
1655
|
+
return;
|
|
1656
|
+
}
|
|
1657
|
+
// Check if slots have content
|
|
1658
|
+
const slots = ['start', 'end', 'primary', 'secondary'];
|
|
1659
|
+
const classesToAdd = [];
|
|
1660
|
+
const classesToRemove = [];
|
|
1661
|
+
slots.forEach((slot) => {
|
|
1662
|
+
const slotHasContent = this.hasSlotContent(slot);
|
|
1663
|
+
const slotClass = `has-${slot}-content`;
|
|
1664
|
+
if (slotHasContent) {
|
|
1665
|
+
classesToAdd.push(slotClass);
|
|
1666
|
+
}
|
|
1667
|
+
else {
|
|
1668
|
+
classesToRemove.push(slotClass);
|
|
1669
|
+
}
|
|
1670
|
+
});
|
|
1671
|
+
// Force visibilities in certain conditions. This works by adding a class to the toolbar
|
|
1672
|
+
// named `show-{slot}`. This class will be added if the toolbar has the required slots
|
|
1673
|
+
// and does not have any of the excluded slots, otherwise it will be removed.
|
|
1674
|
+
// This is useful to enforce centering of the toolbar content when there are different amounts
|
|
1675
|
+
// of slots on either side of the toolbar.
|
|
1676
|
+
const conditions = [
|
|
1677
|
+
{ name: 'end', requiredSlots: ['start'], excludeSlots: ['end', 'primary'] },
|
|
1678
|
+
{ name: 'start', requiredSlots: ['end'], excludeSlots: ['start', 'secondary'] },
|
|
1679
|
+
{ name: 'secondary', requiredSlots: ['primary'], excludeSlots: ['secondary', 'start'] },
|
|
1680
|
+
{ name: 'primary', requiredSlots: ['secondary'], excludeSlots: ['primary', 'end'] },
|
|
1681
|
+
];
|
|
1682
|
+
conditions.forEach((condition) => {
|
|
1683
|
+
const hasRequiredSlots = condition.requiredSlots.every((slot) => classesToAdd.includes(`has-${slot}-content`));
|
|
1684
|
+
const hasExcludedSlots = condition.excludeSlots.some((slot) => classesToAdd.includes(`has-${slot}-content`));
|
|
1685
|
+
const className = `show-${condition.name}`;
|
|
1686
|
+
if (hasRequiredSlots && !hasExcludedSlots) {
|
|
1687
|
+
classesToAdd.push(className);
|
|
1688
|
+
}
|
|
1689
|
+
else {
|
|
1690
|
+
classesToRemove.push(className);
|
|
1691
|
+
}
|
|
1692
|
+
});
|
|
1693
|
+
// Add classes to the toolbar element
|
|
1694
|
+
this.el.classList.add(...classesToAdd);
|
|
1695
|
+
this.el.classList.remove(...classesToRemove);
|
|
1696
|
+
// Update slot widths after classes have been updated
|
|
1697
|
+
this.updateSlotWidths();
|
|
1698
|
+
}
|
|
1699
|
+
hasSlotContent(slotName) {
|
|
1700
|
+
var _a;
|
|
1701
|
+
const slotNode = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slotName}"]`);
|
|
1702
|
+
return !!slotNode && slotNode.assignedNodes().length > 0;
|
|
1397
1703
|
}
|
|
1398
1704
|
childrenStyle(ev) {
|
|
1399
1705
|
ev.stopPropagation();
|
|
@@ -1418,19 +1724,27 @@ const Toolbar = class {
|
|
|
1418
1724
|
}
|
|
1419
1725
|
}
|
|
1420
1726
|
render() {
|
|
1421
|
-
const
|
|
1727
|
+
const theme = getIonTheme(this);
|
|
1422
1728
|
const childStyles = {};
|
|
1423
|
-
this.childrenStyles.forEach((
|
|
1424
|
-
Object.assign(childStyles,
|
|
1729
|
+
this.childrenStyles.forEach((style) => {
|
|
1730
|
+
Object.assign(childStyles, style);
|
|
1425
1731
|
});
|
|
1426
|
-
|
|
1427
|
-
|
|
1732
|
+
const titlePlacement = this.getTitlePlacement();
|
|
1733
|
+
return (h(Host, { key: 'bcb621674157410d7eaeb006779bdd677346587e', class: Object.assign(Object.assign({}, createColorClasses(this.color, {
|
|
1734
|
+
[theme]: true,
|
|
1428
1735
|
'in-toolbar': hostContext('ion-toolbar', this.el),
|
|
1429
|
-
|
|
1736
|
+
[`toolbar-title-placement-${titlePlacement}`]: true,
|
|
1737
|
+
})), childStyles) }, h("div", { key: '0d31a98b2571b9a0ae142fbdfd83e2ebdcd8e069', class: "toolbar-background", part: "background" }), h("div", { key: 'de938534c487c6cb4060dac44b40c2d872130f50', class: "toolbar-container", part: "container" }, h("slot", { key: 'a337150d353e439eae67c31ff86e383ed51f3d8f', name: "start", onSlotchange: () => this.updateSlotClasses }), h("slot", { key: '02effd3ce0cdad5ec5645fa58ccb329321449190', name: "secondary", onSlotchange: () => this.updateSlotClasses }), h("div", { key: '3e22f5feda2aea02117bdea2fe8a4b8905ba82f6', class: "toolbar-content", part: "content" }, h("slot", { key: 'ebf828643ff05a8bf662a54715d21d0859168d31' })), h("slot", { key: 'a6940648dfe25a7aa8792a1bd9267437274f333c', name: "primary", onSlotchange: () => this.updateSlotClasses }), h("slot", { key: 'afb1d61aa0e430fcf483ba482af64762474e06fe', name: "end", onSlotchange: () => this.updateSlotClasses }))));
|
|
1430
1738
|
}
|
|
1431
1739
|
get el() { return getElement(this); }
|
|
1740
|
+
static get watchers() { return {
|
|
1741
|
+
"titlePlacement": [{
|
|
1742
|
+
"titlePlacementChanged": 0
|
|
1743
|
+
}]
|
|
1744
|
+
}; }
|
|
1432
1745
|
};
|
|
1433
1746
|
Toolbar.style = {
|
|
1747
|
+
ionic: toolbarIonicCss(),
|
|
1434
1748
|
ios: toolbarIosCss(),
|
|
1435
1749
|
md: toolbarMdCss()
|
|
1436
1750
|
};
|