@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
|
@@ -3,21 +3,20 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var index = require('./index-
|
|
7
|
-
var
|
|
8
|
-
var ionicGlobal = require('./ionic-global-
|
|
9
|
-
var helpers = require('./helpers-
|
|
6
|
+
var index = require('./index-C1knGA9x.js');
|
|
7
|
+
var focusVisible = require('./focus-visible-BIj-I3-C.js');
|
|
8
|
+
var ionicGlobal = require('./ionic-global-DvEcO0tQ.js');
|
|
9
|
+
var helpers = require('./helpers-Fh1iXsX9.js');
|
|
10
10
|
var dir = require('./dir-Cn0z1rJH.js');
|
|
11
|
-
var theme = require('./theme-
|
|
12
|
-
var index$1 = require('./index-
|
|
13
|
-
var
|
|
11
|
+
var theme = require('./theme-IlOsGAz7.js');
|
|
12
|
+
var index$1 = require('./index-DRFkZu3V.js');
|
|
13
|
+
var scrollHideController = require('./scroll-hide-controller-DAf_DwKc.js');
|
|
14
14
|
var cubicBezier = require('./cubic-bezier-DAjy1V-e.js');
|
|
15
|
-
var frameworkDelegate = require('./framework-delegate-
|
|
15
|
+
var frameworkDelegate = require('./framework-delegate-CJT_QJQI.js');
|
|
16
16
|
var lockController = require('./lock-controller-aDB9wrEf.js');
|
|
17
|
-
var index$2 = require('./index-
|
|
18
|
-
require('./
|
|
19
|
-
require('./
|
|
20
|
-
require('./capacitor-DmA66EwP.js');
|
|
17
|
+
var index$2 = require('./index-D94mERjz.js');
|
|
18
|
+
require('./keyboard-BbZXOwZg.js');
|
|
19
|
+
require('./capacitor-BixsAzyb.js');
|
|
21
20
|
|
|
22
21
|
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}`;
|
|
23
22
|
|
|
@@ -25,51 +24,6 @@ const App = class {
|
|
|
25
24
|
constructor(hostRef) {
|
|
26
25
|
index.registerInstance(this, hostRef);
|
|
27
26
|
}
|
|
28
|
-
componentDidLoad() {
|
|
29
|
-
{
|
|
30
|
-
this.rIC(async () => {
|
|
31
|
-
const isHybrid = ionicGlobal.isPlatform(window, 'hybrid');
|
|
32
|
-
if (!index.config.getBoolean('_testing')) {
|
|
33
|
-
Promise.resolve().then(function () { return require('./index-BhhuJ1Yx.js'); }).then((module) => module.startTapClick(index.config));
|
|
34
|
-
}
|
|
35
|
-
if (index.config.getBoolean('statusTap', isHybrid)) {
|
|
36
|
-
Promise.resolve().then(function () { return require('./status-tap-CSvBT7FV.js'); }).then((module) => module.startStatusTap());
|
|
37
|
-
}
|
|
38
|
-
if (index.config.getBoolean('inputShims', needInputShims())) {
|
|
39
|
-
/**
|
|
40
|
-
* needInputShims() ensures that only iOS and Android
|
|
41
|
-
* platforms proceed into this block.
|
|
42
|
-
*/
|
|
43
|
-
const platform = ionicGlobal.isPlatform(window, 'ios') ? 'ios' : 'android';
|
|
44
|
-
Promise.resolve().then(function () { return require('./input-shims-Bn1cXfCM.js'); }).then((module) => module.startInputShims(index.config, platform));
|
|
45
|
-
}
|
|
46
|
-
const hardwareBackButtonModule = await Promise.resolve().then(function () { return require('./hardware-back-button-CXmUnTJC.js'); });
|
|
47
|
-
const supportsHardwareBackButtonEvents = isHybrid || hardwareBackButton.shouldUseCloseWatcher();
|
|
48
|
-
if (index.config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {
|
|
49
|
-
hardwareBackButtonModule.startHardwareBackButton();
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
/**
|
|
53
|
-
* If an app sets hardwareBackButton: false and experimentalCloseWatcher: true
|
|
54
|
-
* then the close watcher will not be used.
|
|
55
|
-
*/
|
|
56
|
-
if (hardwareBackButton.shouldUseCloseWatcher()) {
|
|
57
|
-
index.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.');
|
|
58
|
-
}
|
|
59
|
-
hardwareBackButtonModule.blockHardwareBackButton();
|
|
60
|
-
}
|
|
61
|
-
if (typeof window !== 'undefined') {
|
|
62
|
-
Promise.resolve().then(function () { return require('./keyboard-hHzlEQpk.js'); }).then((module) => module.startKeyboardAssist(window));
|
|
63
|
-
}
|
|
64
|
-
Promise.resolve().then(function () { return require('./focus-visible-CCvKiLh3.js'); }).then((module) => (this.focusVisible = module.startFocusVisible()));
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
disconnectedCallback() {
|
|
69
|
-
if (this.loadTimeout) {
|
|
70
|
-
clearTimeout(this.loadTimeout);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
27
|
/**
|
|
74
28
|
* Used to set focus on an element that uses `ion-focusable`.
|
|
75
29
|
* Do not use this if focusing the element as a result of a keyboard
|
|
@@ -82,52 +36,29 @@ const App = class {
|
|
|
82
36
|
* @param elements An array of HTML elements to set focus on.
|
|
83
37
|
*/
|
|
84
38
|
async setFocus(elements) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
if ('requestIdleCallback' in window) {
|
|
91
|
-
window.requestIdleCallback(callback);
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
this.loadTimeout = setTimeout(callback, 32);
|
|
95
|
-
}
|
|
39
|
+
/**
|
|
40
|
+
* The focus-visible utility is used to set focus on an
|
|
41
|
+
* element that uses `ion-focusable`.
|
|
42
|
+
*/
|
|
43
|
+
focusVisible.focusElements(elements);
|
|
96
44
|
}
|
|
97
45
|
render() {
|
|
98
|
-
const
|
|
99
|
-
return (index.h(index.Host, { key: '
|
|
100
|
-
[
|
|
46
|
+
const theme = ionicGlobal.getIonTheme(this);
|
|
47
|
+
return (index.h(index.Host, { key: '3b7e84c7c4187287123413f90838cda89136b2a4', class: {
|
|
48
|
+
[theme]: true,
|
|
101
49
|
'ion-page': true,
|
|
102
50
|
'force-statusbar-padding': index.config.getBoolean('_forceStatusbarPadding'),
|
|
103
51
|
} }));
|
|
104
52
|
}
|
|
105
53
|
get el() { return index.getElement(this); }
|
|
106
54
|
};
|
|
107
|
-
const needInputShims = () => {
|
|
108
|
-
/**
|
|
109
|
-
* iOS always needs input shims
|
|
110
|
-
*/
|
|
111
|
-
const needsShimsIOS = ionicGlobal.isPlatform(window, 'ios') && ionicGlobal.isPlatform(window, 'mobile');
|
|
112
|
-
if (needsShimsIOS) {
|
|
113
|
-
return true;
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Android only needs input shims when running
|
|
117
|
-
* in the browser and only if the browser is using the
|
|
118
|
-
* new Chrome 108+ resize behavior: https://developer.chrome.com/blog/viewport-resize-behavior/
|
|
119
|
-
*/
|
|
120
|
-
const isAndroidMobileWeb = ionicGlobal.isPlatform(window, 'android') && ionicGlobal.isPlatform(window, 'mobileweb');
|
|
121
|
-
if (isAndroidMobileWeb) {
|
|
122
|
-
return true;
|
|
123
|
-
}
|
|
124
|
-
return false;
|
|
125
|
-
};
|
|
126
55
|
App.style = appCss();
|
|
127
56
|
|
|
128
|
-
const
|
|
57
|
+
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)}`;
|
|
129
58
|
|
|
130
|
-
const
|
|
59
|
+
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}`;
|
|
60
|
+
|
|
61
|
+
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}`;
|
|
131
62
|
|
|
132
63
|
const Buttons = class {
|
|
133
64
|
constructor(hostRef) {
|
|
@@ -139,7 +70,7 @@ const Buttons = class {
|
|
|
139
70
|
* first toolbar, the buttons will be hidden and will
|
|
140
71
|
* only be shown once all toolbars have fully collapsed.
|
|
141
72
|
*
|
|
142
|
-
* Only applies in `ios`
|
|
73
|
+
* Only applies in the `ios` theme with `collapse` set to
|
|
143
74
|
* `true` on `ion-header`.
|
|
144
75
|
*
|
|
145
76
|
* Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
|
|
@@ -147,19 +78,20 @@ const Buttons = class {
|
|
|
147
78
|
this.collapse = false;
|
|
148
79
|
}
|
|
149
80
|
render() {
|
|
150
|
-
const
|
|
151
|
-
return (index.h(index.Host, { key: '
|
|
152
|
-
[
|
|
81
|
+
const theme = ionicGlobal.getIonTheme(this);
|
|
82
|
+
return (index.h(index.Host, { key: '95c107ba7871c801a5ef14c636dc8e2fe69debf3', class: {
|
|
83
|
+
[theme]: true,
|
|
153
84
|
['buttons-collapse']: this.collapse,
|
|
154
|
-
} }, index.h("slot", { key: '
|
|
85
|
+
} }, index.h("slot", { key: '58669abfce458e1344b84286d4200e305017b958' })));
|
|
155
86
|
}
|
|
156
87
|
};
|
|
157
88
|
Buttons.style = {
|
|
89
|
+
ionic: buttonsIonicCss(),
|
|
158
90
|
ios: buttonsIosCss(),
|
|
159
91
|
md: buttonsMdCss()
|
|
160
92
|
};
|
|
161
93
|
|
|
162
|
-
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{
|
|
94
|
+
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}}`;
|
|
163
95
|
|
|
164
96
|
const Content = class {
|
|
165
97
|
constructor(hostRef) {
|
|
@@ -226,6 +158,9 @@ const Content = class {
|
|
|
226
158
|
*/
|
|
227
159
|
this.scrollEvents = false;
|
|
228
160
|
}
|
|
161
|
+
fullscreenChanged() {
|
|
162
|
+
this.setupFullscreenResizeObserver();
|
|
163
|
+
}
|
|
229
164
|
componentWillLoad() {
|
|
230
165
|
this.inheritedAttributes = helpers.inheritAriaAttributes(this.el);
|
|
231
166
|
}
|
|
@@ -265,6 +200,12 @@ const Content = class {
|
|
|
265
200
|
closestTabs.addEventListener('ionTabBarLoaded', this.tabsLoadCallback);
|
|
266
201
|
}
|
|
267
202
|
}
|
|
203
|
+
// Re-observe on reattach, since componentDidLoad only fires once.
|
|
204
|
+
this.setupFullscreenResizeObserver();
|
|
205
|
+
}
|
|
206
|
+
componentDidLoad() {
|
|
207
|
+
// The custom elements build assigns fullscreen after connectedCallback.
|
|
208
|
+
this.setupFullscreenResizeObserver();
|
|
268
209
|
}
|
|
269
210
|
disconnectedCallback() {
|
|
270
211
|
this.onScrollEnd();
|
|
@@ -286,6 +227,42 @@ const Content = class {
|
|
|
286
227
|
clearTimeout(this.resizeTimeout);
|
|
287
228
|
this.resizeTimeout = null;
|
|
288
229
|
}
|
|
230
|
+
this.destroyFullscreenResizeObserver();
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Header and footer sizes can change after load without a window resize
|
|
234
|
+
* firing, so the `resize` listener alone misses those changes.
|
|
235
|
+
*
|
|
236
|
+
* Popover content is excluded because `contain: none` lets its offsets drive
|
|
237
|
+
* the host's own height, which would feed back into the observer.
|
|
238
|
+
*/
|
|
239
|
+
setupFullscreenResizeObserver() {
|
|
240
|
+
if (typeof ResizeObserver === 'undefined') {
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
if (!this.fullscreen || theme.hostContext('ion-popover', this.el)) {
|
|
244
|
+
this.destroyFullscreenResizeObserver();
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
if (this.fullscreenResizeObserver !== undefined) {
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
this.fullscreenResizeObserver = new ResizeObserver(() => {
|
|
251
|
+
// A hidden page reports a 0x0 box, which would zero the offsets. Same
|
|
252
|
+
// reasoning as the guard in onResize, minus its debounce so the
|
|
253
|
+
// correction lands in the next frame instead of 100ms later.
|
|
254
|
+
if (this.el.offsetParent === null) {
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
this.resize();
|
|
258
|
+
});
|
|
259
|
+
this.fullscreenResizeObserver.observe(this.el);
|
|
260
|
+
}
|
|
261
|
+
destroyFullscreenResizeObserver() {
|
|
262
|
+
if (this.fullscreenResizeObserver !== undefined) {
|
|
263
|
+
this.fullscreenResizeObserver.disconnect();
|
|
264
|
+
this.fullscreenResizeObserver = undefined;
|
|
265
|
+
}
|
|
289
266
|
}
|
|
290
267
|
/**
|
|
291
268
|
* Rotating certain devices can update
|
|
@@ -322,9 +299,8 @@ const Content = class {
|
|
|
322
299
|
this.resize();
|
|
323
300
|
}, 100);
|
|
324
301
|
}
|
|
325
|
-
shouldForceOverscroll() {
|
|
302
|
+
shouldForceOverscroll(mode) {
|
|
326
303
|
const { forceOverscroll } = this;
|
|
327
|
-
const mode = ionicGlobal.getIonMode(this);
|
|
328
304
|
return forceOverscroll === undefined ? mode === 'ios' && ionicGlobal.isPlatform('ios') : forceOverscroll;
|
|
329
305
|
}
|
|
330
306
|
resize() {
|
|
@@ -520,12 +496,13 @@ const Content = class {
|
|
|
520
496
|
render() {
|
|
521
497
|
const { fixedSlotPlacement, inheritedAttributes, isMainContent, scrollX, scrollY, el } = this;
|
|
522
498
|
const rtl = dir.isRTL(el) ? 'rtl' : 'ltr';
|
|
523
|
-
const
|
|
524
|
-
const
|
|
525
|
-
const
|
|
499
|
+
const theme$1 = ionicGlobal.getIonTheme(this);
|
|
500
|
+
const mode = ionicGlobal.getIonMode(this, theme$1);
|
|
501
|
+
const forceOverscroll = this.shouldForceOverscroll(mode);
|
|
502
|
+
const transitionShadow = theme$1 === 'ios';
|
|
526
503
|
this.resize();
|
|
527
|
-
return (index.h(index.Host, Object.assign({ key: '
|
|
528
|
-
[
|
|
504
|
+
return (index.h(index.Host, Object.assign({ key: '8c7f646f58e7c38fb6d8661b1629b847a16753fb', role: isMainContent ? 'main' : undefined, class: theme.createColorClasses(this.color, {
|
|
505
|
+
[theme$1]: true,
|
|
529
506
|
'content-fullscreen': this.fullscreen,
|
|
530
507
|
'content-sizing': theme.hostContext('ion-popover', this.el),
|
|
531
508
|
overscroll: forceOverscroll,
|
|
@@ -533,14 +510,19 @@ const Content = class {
|
|
|
533
510
|
}), style: {
|
|
534
511
|
'--offset-top': `${this.cTop}px`,
|
|
535
512
|
'--offset-bottom': `${this.cBottom}px`,
|
|
536
|
-
} }, inheritedAttributes), index.h("div", { key: '
|
|
513
|
+
} }, inheritedAttributes), index.h("div", { key: '2b0505c3fdf5c92938b8419c0f57f8d999aec6b3', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? index.h("slot", { name: "fixed" }) : null, index.h("div", { key: '6b769596e491dea1d3618551497fde9364afdeda', class: {
|
|
537
514
|
'inner-scroll': true,
|
|
538
515
|
'scroll-x': scrollX,
|
|
539
516
|
'scroll-y': scrollY,
|
|
540
517
|
overscroll: (scrollX || scrollY) && forceOverscroll,
|
|
541
|
-
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: '
|
|
518
|
+
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: 'ba36c8468681d028352415039d2cb2a750f2638f' })), transitionShadow ? (index.h("div", { class: "transition-effect" }, index.h("div", { class: "transition-cover" }), index.h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? index.h("slot", { name: "fixed" }) : null));
|
|
542
519
|
}
|
|
543
520
|
get el() { return index.getElement(this); }
|
|
521
|
+
static get watchers() { return {
|
|
522
|
+
"fullscreen": [{
|
|
523
|
+
"fullscreenChanged": 0
|
|
524
|
+
}]
|
|
525
|
+
}; }
|
|
544
526
|
};
|
|
545
527
|
const getParentElement = (el) => {
|
|
546
528
|
var _a;
|
|
@@ -564,7 +546,8 @@ const getPageElement = (el) => {
|
|
|
564
546
|
* between the popover and the edges of the screen. But if the popover contains
|
|
565
547
|
* its own page element, we should use that instead.
|
|
566
548
|
*/
|
|
567
|
-
const
|
|
549
|
+
const appRootSelector = index.config.get('appRootSelector', 'ion-app');
|
|
550
|
+
const page = el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner, .popover-content`);
|
|
568
551
|
if (page) {
|
|
569
552
|
return page;
|
|
570
553
|
}
|
|
@@ -628,45 +611,90 @@ const handleFooterFade = (scrollEl, baseEl) => {
|
|
|
628
611
|
});
|
|
629
612
|
};
|
|
630
613
|
|
|
631
|
-
const
|
|
614
|
+
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}`;
|
|
632
615
|
|
|
633
|
-
const
|
|
616
|
+
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}`;
|
|
617
|
+
|
|
618
|
+
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}`;
|
|
634
619
|
|
|
635
620
|
const Footer = class {
|
|
636
621
|
constructor(hostRef) {
|
|
637
622
|
index.registerInstance(this, hostRef);
|
|
638
623
|
this.keyboardCtrl = null;
|
|
639
624
|
this.keyboardCtrlPromise = null;
|
|
625
|
+
this.scrollHideCtrlPromise = null;
|
|
626
|
+
this.hasWarnedCollapse = false;
|
|
627
|
+
this.fadeSetupId = 0;
|
|
640
628
|
this.keyboardVisible = false;
|
|
641
629
|
/**
|
|
642
630
|
* If `true`, the footer will be translucent.
|
|
643
|
-
* Only applies when the
|
|
631
|
+
* Only applies when the theme is `"ios"` and the device supports
|
|
644
632
|
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
645
633
|
*
|
|
646
634
|
* Note: In order to scroll content behind the footer, the `fullscreen`
|
|
647
635
|
* attribute needs to be set on the content.
|
|
648
636
|
*/
|
|
649
637
|
this.translucent = false;
|
|
650
|
-
this.checkCollapsibleFooter = () => {
|
|
651
|
-
const
|
|
652
|
-
if (
|
|
638
|
+
this.checkCollapsibleFooter = async () => {
|
|
639
|
+
const { scrollEffect, collapse } = this;
|
|
640
|
+
if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
|
|
641
|
+
this.hasWarnedCollapse = true;
|
|
642
|
+
index.printIonWarning(`[ion-footer] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-footer scroll-effect="${collapse}">`, this.el);
|
|
643
|
+
}
|
|
644
|
+
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
645
|
+
// Skip teardown/rebuild if the effect hasn't changed.
|
|
646
|
+
// This prevents keyboard toggles (which trigger re-renders via
|
|
647
|
+
// @State keyboardVisible) from destroying the scroll controller
|
|
648
|
+
// and resetting isHidden.
|
|
649
|
+
if (effect === this.activeEffect) {
|
|
653
650
|
return;
|
|
654
651
|
}
|
|
655
|
-
const
|
|
656
|
-
const hasFade =
|
|
652
|
+
const hasHide = effect === 'hide';
|
|
653
|
+
const hasFade = effect === 'fade';
|
|
657
654
|
this.destroyCollapsibleFooter();
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
655
|
+
const appRootSelector = index.config.get('appRootSelector', 'ion-app');
|
|
656
|
+
const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
|
|
657
|
+
const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
|
|
658
|
+
if (hasHide && contentEl) {
|
|
659
|
+
this.activeEffect = effect;
|
|
660
|
+
await this.setupScrollEffectHide(contentEl);
|
|
661
|
+
return;
|
|
662
|
+
}
|
|
663
|
+
// fade via the deprecated `collapse` prop is iOS-only.
|
|
664
|
+
// fade via the new `scrollEffect` prop works in all themes.
|
|
665
|
+
const isModeRestricted = scrollEffect === undefined && ionicGlobal.getIonTheme(this) !== 'ios';
|
|
666
|
+
if (hasFade && !isModeRestricted) {
|
|
661
667
|
if (!contentEl) {
|
|
662
668
|
index$1.printIonContentErrorMsg(this.el);
|
|
663
669
|
return;
|
|
664
670
|
}
|
|
665
671
|
this.setupFadeFooter(contentEl);
|
|
672
|
+
this.activeEffect = effect;
|
|
673
|
+
}
|
|
674
|
+
};
|
|
675
|
+
this.setupScrollEffectHide = async (contentEl) => {
|
|
676
|
+
const setupPromise = scrollHideController.createScrollHideController(contentEl, {
|
|
677
|
+
el: this.el,
|
|
678
|
+
cssVar: '--internal-footer-hide-height',
|
|
679
|
+
hiddenClass: 'footer-scroll-hidden',
|
|
680
|
+
contentPartnerClass: 'content-footer-hide-scroll-partner',
|
|
681
|
+
contentHiddenClass: 'content-footer-hide-scroll-hidden',
|
|
682
|
+
});
|
|
683
|
+
this.scrollHideCtrlPromise = setupPromise;
|
|
684
|
+
const controller = await setupPromise;
|
|
685
|
+
if (this.scrollHideCtrlPromise === setupPromise) {
|
|
686
|
+
this.scrollHideCtrlPromise = null;
|
|
687
|
+
controller.init();
|
|
688
|
+
this.scrollHideCtrl = controller;
|
|
666
689
|
}
|
|
667
690
|
};
|
|
668
691
|
this.setupFadeFooter = async (contentEl) => {
|
|
669
|
-
const
|
|
692
|
+
const setupId = ++this.fadeSetupId;
|
|
693
|
+
const scrollEl = await index$1.getScrollElement(contentEl);
|
|
694
|
+
if (this.fadeSetupId !== setupId) {
|
|
695
|
+
return;
|
|
696
|
+
}
|
|
697
|
+
this.scrollEl = scrollEl;
|
|
670
698
|
/**
|
|
671
699
|
* Handle fading of toolbars on scroll
|
|
672
700
|
*/
|
|
@@ -684,7 +712,7 @@ const Footer = class {
|
|
|
684
712
|
this.checkCollapsibleFooter();
|
|
685
713
|
}
|
|
686
714
|
async connectedCallback() {
|
|
687
|
-
const promise =
|
|
715
|
+
const promise = scrollHideController.createKeyboardController(async (keyboardOpen, waitForResize) => {
|
|
688
716
|
/**
|
|
689
717
|
* If the keyboard is hiding, then we need to wait
|
|
690
718
|
* for the webview to resize. Otherwise, the footer
|
|
@@ -711,6 +739,7 @@ const Footer = class {
|
|
|
711
739
|
}
|
|
712
740
|
}
|
|
713
741
|
disconnectedCallback() {
|
|
742
|
+
this.destroyCollapsibleFooter();
|
|
714
743
|
if (this.keyboardCtrlPromise) {
|
|
715
744
|
this.keyboardCtrlPromise.then((ctrl) => ctrl.destroy());
|
|
716
745
|
this.keyboardCtrlPromise = null;
|
|
@@ -721,29 +750,43 @@ const Footer = class {
|
|
|
721
750
|
}
|
|
722
751
|
}
|
|
723
752
|
destroyCollapsibleFooter() {
|
|
753
|
+
this.activeEffect = undefined;
|
|
754
|
+
this.fadeSetupId++;
|
|
755
|
+
this.scrollHideCtrlPromise = null;
|
|
756
|
+
if (this.scrollHideCtrl) {
|
|
757
|
+
this.scrollHideCtrl.destroy();
|
|
758
|
+
this.scrollHideCtrl = undefined;
|
|
759
|
+
}
|
|
724
760
|
if (this.scrollEl && this.contentScrollCallback) {
|
|
725
761
|
this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
|
|
726
762
|
this.contentScrollCallback = undefined;
|
|
727
763
|
}
|
|
728
764
|
}
|
|
729
765
|
render() {
|
|
730
|
-
const { translucent, collapse } = this;
|
|
731
|
-
const
|
|
766
|
+
const { translucent, scrollEffect, collapse } = this;
|
|
767
|
+
const theme = ionicGlobal.getIonTheme(this);
|
|
768
|
+
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
769
|
+
// fade via the deprecated `collapse` prop is iOS-only.
|
|
770
|
+
const isModeRestricted = scrollEffect === undefined && theme !== 'ios';
|
|
771
|
+
const hasHide = effect === 'hide';
|
|
772
|
+
const hasFade = effect === 'fade' && !isModeRestricted;
|
|
732
773
|
const tabs = this.el.closest('ion-tabs');
|
|
733
774
|
const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
|
|
734
|
-
return (index.h(index.Host, { key: '
|
|
735
|
-
[
|
|
775
|
+
return (index.h(index.Host, { key: 'a0777b4a639d22e15374879f018efcf589e756f8', role: "contentinfo", class: {
|
|
776
|
+
[theme]: true,
|
|
736
777
|
// Used internally for styling
|
|
737
|
-
[`footer-${
|
|
778
|
+
[`footer-${theme}`]: true,
|
|
738
779
|
[`footer-translucent`]: translucent,
|
|
739
|
-
[`footer-translucent-${
|
|
780
|
+
[`footer-translucent-${theme}`]: translucent,
|
|
740
781
|
['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
|
|
741
|
-
|
|
742
|
-
|
|
782
|
+
'footer-collapse-fade': hasFade,
|
|
783
|
+
'footer-scroll-effect-hide': hasHide,
|
|
784
|
+
} }, theme === 'ios' && translucent && index.h("div", { key: 'd78b46870cbf11c95b066d649c04ec398b66e614', class: "footer-background" }), index.h("slot", { key: '9dc34787cd29597fe1b1198db317602014ac1483' })));
|
|
743
785
|
}
|
|
744
786
|
get el() { return index.getElement(this); }
|
|
745
787
|
};
|
|
746
788
|
Footer.style = {
|
|
789
|
+
ionic: ionicFooterMdCss(),
|
|
747
790
|
ios: footerIosCss(),
|
|
748
791
|
md: footerMdCss()
|
|
749
792
|
};
|
|
@@ -795,13 +838,14 @@ const handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {
|
|
|
795
838
|
});
|
|
796
839
|
};
|
|
797
840
|
const setToolbarBackgroundOpacity = (headerEl, opacity) => {
|
|
841
|
+
var _a;
|
|
798
842
|
/**
|
|
799
843
|
* Fading in the backdrop opacity
|
|
800
844
|
* should happen after the large title
|
|
801
845
|
* has collapsed, so it is handled
|
|
802
846
|
* by handleHeaderFade()
|
|
803
847
|
*/
|
|
804
|
-
if (headerEl.collapse === 'fade') {
|
|
848
|
+
if (((_a = headerEl.scrollEffect) !== null && _a !== void 0 ? _a : headerEl.collapse) === 'fade') {
|
|
805
849
|
return;
|
|
806
850
|
}
|
|
807
851
|
if (opacity === undefined) {
|
|
@@ -959,46 +1003,69 @@ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
|
|
|
959
1003
|
* Get the role type for the ion-header.
|
|
960
1004
|
*
|
|
961
1005
|
* @param isInsideMenu If ion-header is inside ion-menu.
|
|
962
|
-
* @
|
|
963
|
-
*
|
|
964
|
-
*
|
|
965
|
-
* mode, otherwise 'banner'.
|
|
1006
|
+
* @returns 'none' if inside ion-menu, otherwise 'banner'.
|
|
1007
|
+
* Condensed headers start as 'banner' and have their role
|
|
1008
|
+
* toggled dynamically by setHeaderActive() on scroll.
|
|
966
1009
|
*/
|
|
967
|
-
const getRoleType = (isInsideMenu
|
|
1010
|
+
const getRoleType = (isInsideMenu) => {
|
|
968
1011
|
// If the header is inside a menu, it should not have the banner role.
|
|
969
1012
|
if (isInsideMenu) {
|
|
970
1013
|
return ROLE_NONE;
|
|
971
1014
|
}
|
|
972
|
-
/**
|
|
973
|
-
* Only apply role="none" to `md` mode condensed headers
|
|
974
|
-
* since the large header is never shown.
|
|
975
|
-
*/
|
|
976
|
-
if (isCondensed && mode === 'md') {
|
|
977
|
-
return ROLE_NONE;
|
|
978
|
-
}
|
|
979
1015
|
// Default to banner role.
|
|
980
1016
|
return ROLE_BANNER;
|
|
981
1017
|
};
|
|
982
1018
|
|
|
983
|
-
const
|
|
1019
|
+
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}}`;
|
|
984
1020
|
|
|
985
|
-
const
|
|
1021
|
+
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}`;
|
|
1022
|
+
|
|
1023
|
+
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}`;
|
|
986
1024
|
|
|
987
1025
|
const Header = class {
|
|
988
1026
|
constructor(hostRef) {
|
|
989
1027
|
index.registerInstance(this, hostRef);
|
|
990
1028
|
this.inheritedAttributes = {};
|
|
1029
|
+
this.scrollHideCtrlPromise = null;
|
|
1030
|
+
this.hasWarnedCollapse = false;
|
|
1031
|
+
this.fadeCondenseSetupId = 0;
|
|
1032
|
+
/**
|
|
1033
|
+
* If `true`, the header will have a line at the bottom.
|
|
1034
|
+
* TODO(ROU-10855): add support for this prop on ios/md themes
|
|
1035
|
+
*/
|
|
1036
|
+
this.divider = false;
|
|
991
1037
|
/**
|
|
992
1038
|
* If `true`, the header will be translucent.
|
|
993
|
-
* Only applies when the
|
|
1039
|
+
* Only applies when the theme is `"ios"` or `"ionic"` and the device supports
|
|
994
1040
|
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
995
1041
|
*
|
|
996
1042
|
* Note: In order to scroll content behind the header, the `fullscreen`
|
|
997
1043
|
* attribute needs to be set on the content.
|
|
998
1044
|
*/
|
|
999
1045
|
this.translucent = false;
|
|
1046
|
+
this.setupScrollEffectHide = async (contentEl) => {
|
|
1047
|
+
const setupPromise = scrollHideController.createScrollHideController(contentEl, {
|
|
1048
|
+
el: this.el,
|
|
1049
|
+
cssVar: '--internal-header-hide-height',
|
|
1050
|
+
hiddenClass: 'header-scroll-hidden',
|
|
1051
|
+
contentPartnerClass: 'content-header-hide-scroll-partner',
|
|
1052
|
+
contentHiddenClass: 'content-header-hide-scroll-hidden',
|
|
1053
|
+
});
|
|
1054
|
+
this.scrollHideCtrlPromise = setupPromise;
|
|
1055
|
+
const controller = await setupPromise;
|
|
1056
|
+
if (this.scrollHideCtrlPromise === setupPromise) {
|
|
1057
|
+
this.scrollHideCtrlPromise = null;
|
|
1058
|
+
controller.init();
|
|
1059
|
+
this.scrollHideCtrl = controller;
|
|
1060
|
+
}
|
|
1061
|
+
};
|
|
1000
1062
|
this.setupFadeHeader = async (contentEl, condenseHeader) => {
|
|
1001
|
-
const
|
|
1063
|
+
const setupId = ++this.fadeCondenseSetupId;
|
|
1064
|
+
const scrollEl = await index$1.getScrollElement(contentEl);
|
|
1065
|
+
if (this.fadeCondenseSetupId !== setupId) {
|
|
1066
|
+
return;
|
|
1067
|
+
}
|
|
1068
|
+
this.scrollEl = scrollEl;
|
|
1002
1069
|
/**
|
|
1003
1070
|
* Handle fading of toolbars on scroll
|
|
1004
1071
|
*/
|
|
@@ -1022,37 +1089,63 @@ const Header = class {
|
|
|
1022
1089
|
this.destroyCollapsibleHeader();
|
|
1023
1090
|
}
|
|
1024
1091
|
async checkCollapsibleHeader() {
|
|
1025
|
-
const
|
|
1026
|
-
if (
|
|
1092
|
+
const { scrollEffect, collapse } = this;
|
|
1093
|
+
if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
|
|
1094
|
+
this.hasWarnedCollapse = true;
|
|
1095
|
+
index.printIonWarning(`[ion-header] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-header scroll-effect="${collapse}">`, this.el);
|
|
1096
|
+
}
|
|
1097
|
+
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
1098
|
+
// Skip teardown/rebuild if the effect hasn't changed.
|
|
1099
|
+
// This prevents re-renders from destroying the scroll controller
|
|
1100
|
+
// and resetting isHidden.
|
|
1101
|
+
if (effect === this.activeEffect) {
|
|
1027
1102
|
return;
|
|
1028
1103
|
}
|
|
1029
|
-
const
|
|
1030
|
-
const hasCondense =
|
|
1031
|
-
const hasFade =
|
|
1104
|
+
const hasHide = effect === 'hide';
|
|
1105
|
+
const hasCondense = effect === 'condense';
|
|
1106
|
+
const hasFade = effect === 'fade';
|
|
1032
1107
|
this.destroyCollapsibleHeader();
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1108
|
+
const appRootSelector = index.config.get('appRootSelector', 'ion-app');
|
|
1109
|
+
const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
|
|
1110
|
+
const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
|
|
1111
|
+
if (hasHide && contentEl) {
|
|
1112
|
+
this.activeEffect = effect;
|
|
1113
|
+
await this.setupScrollEffectHide(contentEl);
|
|
1114
|
+
return;
|
|
1115
|
+
}
|
|
1116
|
+
// condense/fade via the deprecated `collapse` prop are iOS-only.
|
|
1117
|
+
// condense/fade via the new `scrollEffect` prop work in all themes.
|
|
1118
|
+
const isModeRestricted = scrollEffect === undefined && ionicGlobal.getIonTheme(this) !== 'ios';
|
|
1119
|
+
if (hasCondense && !isModeRestricted) {
|
|
1036
1120
|
// Cloned elements are always needed in iOS transition
|
|
1037
1121
|
index.writeTask(() => {
|
|
1038
1122
|
const title = cloneElement('ion-title');
|
|
1039
1123
|
title.size = 'large';
|
|
1040
1124
|
cloneElement('ion-back-button');
|
|
1041
1125
|
});
|
|
1042
|
-
await this.setupCondenseHeader(contentEl, pageEl);
|
|
1126
|
+
const didSetup = await this.setupCondenseHeader(contentEl, pageEl);
|
|
1127
|
+
if (didSetup) {
|
|
1128
|
+
this.activeEffect = effect;
|
|
1129
|
+
}
|
|
1043
1130
|
}
|
|
1044
|
-
else if (hasFade) {
|
|
1045
|
-
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
1046
|
-
const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
|
|
1131
|
+
else if (hasFade && !isModeRestricted) {
|
|
1047
1132
|
if (!contentEl) {
|
|
1048
1133
|
index$1.printIonContentErrorMsg(this.el);
|
|
1049
1134
|
return;
|
|
1050
1135
|
}
|
|
1051
|
-
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
|
|
1136
|
+
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"],ion-header[scroll-effect="condense"]');
|
|
1137
|
+
this.activeEffect = effect;
|
|
1052
1138
|
await this.setupFadeHeader(contentEl, condenseHeader);
|
|
1053
1139
|
}
|
|
1054
1140
|
}
|
|
1055
1141
|
destroyCollapsibleHeader() {
|
|
1142
|
+
this.activeEffect = undefined;
|
|
1143
|
+
this.fadeCondenseSetupId++;
|
|
1144
|
+
this.scrollHideCtrlPromise = null;
|
|
1145
|
+
if (this.scrollHideCtrl) {
|
|
1146
|
+
this.scrollHideCtrl.destroy();
|
|
1147
|
+
this.scrollHideCtrl = undefined;
|
|
1148
|
+
}
|
|
1056
1149
|
if (this.intersectionObserver) {
|
|
1057
1150
|
this.intersectionObserver.disconnect();
|
|
1058
1151
|
this.intersectionObserver = undefined;
|
|
@@ -1069,21 +1162,40 @@ const Header = class {
|
|
|
1069
1162
|
async setupCondenseHeader(contentEl, pageEl) {
|
|
1070
1163
|
if (!contentEl || !pageEl) {
|
|
1071
1164
|
index$1.printIonContentErrorMsg(this.el);
|
|
1072
|
-
return;
|
|
1165
|
+
return false;
|
|
1073
1166
|
}
|
|
1074
1167
|
if (typeof IntersectionObserver === 'undefined') {
|
|
1075
|
-
return;
|
|
1168
|
+
return false;
|
|
1169
|
+
}
|
|
1170
|
+
const setupId = ++this.fadeCondenseSetupId;
|
|
1171
|
+
const scrollEl = await index$1.getScrollElement(contentEl);
|
|
1172
|
+
if (this.fadeCondenseSetupId !== setupId) {
|
|
1173
|
+
return false;
|
|
1174
|
+
}
|
|
1175
|
+
this.scrollEl = scrollEl;
|
|
1176
|
+
/**
|
|
1177
|
+
* The condense effect requires an ion-title with size="large"
|
|
1178
|
+
* in the condense header. Without it, there is nothing to
|
|
1179
|
+
* collapse into the main header toolbar.
|
|
1180
|
+
*/
|
|
1181
|
+
const hasLargeTitle = this.el.querySelector('ion-title[size="large"]') !== null;
|
|
1182
|
+
if (!hasLargeTitle) {
|
|
1183
|
+
index.printIonWarning('[ion-header] - The condense scroll effect requires an <ion-title size="large"> in the condense header.', this.el);
|
|
1184
|
+
return false;
|
|
1076
1185
|
}
|
|
1077
|
-
this.scrollEl = await index$1.getScrollElement(contentEl);
|
|
1078
1186
|
const headers = pageEl.querySelectorAll('ion-header');
|
|
1079
|
-
this.collapsibleMainHeader = Array.from(headers).find((header) =>
|
|
1187
|
+
this.collapsibleMainHeader = Array.from(headers).find((header) => {
|
|
1188
|
+
var _a;
|
|
1189
|
+
const effect = (_a = header.scrollEffect) !== null && _a !== void 0 ? _a : header.collapse;
|
|
1190
|
+
return effect !== 'condense';
|
|
1191
|
+
});
|
|
1080
1192
|
if (!this.collapsibleMainHeader) {
|
|
1081
|
-
return;
|
|
1193
|
+
return false;
|
|
1082
1194
|
}
|
|
1083
1195
|
const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);
|
|
1084
1196
|
const scrollHeaderIndex = createHeaderIndex(this.el);
|
|
1085
1197
|
if (!mainHeaderIndex || !scrollHeaderIndex) {
|
|
1086
|
-
return;
|
|
1198
|
+
return false;
|
|
1087
1199
|
}
|
|
1088
1200
|
setHeaderActive(mainHeaderIndex, false);
|
|
1089
1201
|
setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);
|
|
@@ -1115,31 +1227,45 @@ const Header = class {
|
|
|
1115
1227
|
this.collapsibleMainHeader.classList.add('header-collapse-main');
|
|
1116
1228
|
}
|
|
1117
1229
|
});
|
|
1230
|
+
return true;
|
|
1118
1231
|
}
|
|
1119
1232
|
render() {
|
|
1120
|
-
const { translucent, inheritedAttributes } = this;
|
|
1121
|
-
const
|
|
1122
|
-
const
|
|
1123
|
-
|
|
1233
|
+
const { translucent, inheritedAttributes, divider, scrollEffect, collapse } = this;
|
|
1234
|
+
const theme$1 = ionicGlobal.getIonTheme(this);
|
|
1235
|
+
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
1236
|
+
// condense/fade via the deprecated `collapse` prop are iOS-only.
|
|
1237
|
+
const isModeRestricted = scrollEffect === undefined && theme$1 !== 'ios';
|
|
1238
|
+
const hasHide = effect === 'hide';
|
|
1239
|
+
const hasCondense = effect === 'condense' && !isModeRestricted && this.el.querySelector('ion-title[size="large"]') !== null;
|
|
1240
|
+
const hasFade = effect === 'fade' && !isModeRestricted;
|
|
1241
|
+
// The condense header should be hidden when
|
|
1242
|
+
// - deprecated collapse prop is used on non-iOS (mode restricted), or
|
|
1243
|
+
// - scrollEffect="condense" is set but no ion-title[size="large"] is present
|
|
1244
|
+
const isHiddenCondense = effect === 'condense' && !hasCondense;
|
|
1124
1245
|
// banner role must be at top level, so remove role if inside a menu
|
|
1125
|
-
const roleType = getRoleType(theme.hostContext('ion-menu', this.el)
|
|
1126
|
-
return (index.h(index.Host, Object.assign({ key: '
|
|
1127
|
-
[
|
|
1246
|
+
const roleType = isHiddenCondense ? 'none' : getRoleType(theme.hostContext('ion-menu', this.el));
|
|
1247
|
+
return (index.h(index.Host, Object.assign({ key: '09f60ca014bb7b3a85d3c0a94e7989d5dbc43f46', role: roleType, class: {
|
|
1248
|
+
[theme$1]: true,
|
|
1128
1249
|
// Used internally for styling
|
|
1129
|
-
[`header-${
|
|
1250
|
+
[`header-${theme$1}`]: true,
|
|
1130
1251
|
[`header-translucent`]: this.translucent,
|
|
1131
|
-
[
|
|
1132
|
-
[
|
|
1133
|
-
|
|
1252
|
+
['header-collapse-condense']: hasCondense,
|
|
1253
|
+
['header-collapse-condense-hidden']: isHiddenCondense,
|
|
1254
|
+
['header-collapse-fade']: hasFade,
|
|
1255
|
+
[`header-translucent-${theme$1}`]: this.translucent,
|
|
1256
|
+
['header-divider']: divider,
|
|
1257
|
+
'header-scroll-effect-hide': hasHide,
|
|
1258
|
+
} }, inheritedAttributes), theme$1 !== 'md' && translucent && index.h("div", { key: 'fd5ff245ae0166e5e1d50936cacc98c90625db48', class: "header-background" }), index.h("slot", { key: '1baa31af87b9eb6406a21073ec65afa191dfbb3d' })));
|
|
1134
1259
|
}
|
|
1135
1260
|
get el() { return index.getElement(this); }
|
|
1136
1261
|
};
|
|
1137
1262
|
Header.style = {
|
|
1263
|
+
ionic: headerIonicCss(),
|
|
1138
1264
|
ios: headerIosCss(),
|
|
1139
1265
|
md: headerMdCss()
|
|
1140
1266
|
};
|
|
1141
1267
|
|
|
1142
|
-
const routerOutletCss = () => `:host{
|
|
1268
|
+
const routerOutletCss = () => `:host{right:0;left:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
|
|
1143
1269
|
|
|
1144
1270
|
const RouterOutlet = class {
|
|
1145
1271
|
constructor(hostRef) {
|
|
@@ -1150,7 +1276,7 @@ const RouterOutlet = class {
|
|
|
1150
1276
|
this.lockController = lockController.createLockController();
|
|
1151
1277
|
this.gestureOrAnimationInProgress = false;
|
|
1152
1278
|
/**
|
|
1153
|
-
* The mode determines
|
|
1279
|
+
* The mode determines the platform behaviors of the component.
|
|
1154
1280
|
*/
|
|
1155
1281
|
this.mode = ionicGlobal.getIonMode(this);
|
|
1156
1282
|
/**
|
|
@@ -1170,7 +1296,7 @@ const RouterOutlet = class {
|
|
|
1170
1296
|
this.swipeHandler.onStart();
|
|
1171
1297
|
}
|
|
1172
1298
|
};
|
|
1173
|
-
this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-
|
|
1299
|
+
this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-DqQx5QCp.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) => {
|
|
1174
1300
|
if (this.ani) {
|
|
1175
1301
|
this.ani.onFinish(() => {
|
|
1176
1302
|
this.gestureOrAnimationInProgress = false;
|
|
@@ -1316,7 +1442,7 @@ const RouterOutlet = class {
|
|
|
1316
1442
|
return true;
|
|
1317
1443
|
}
|
|
1318
1444
|
render() {
|
|
1319
|
-
return index.h("slot", { key: '
|
|
1445
|
+
return index.h("slot", { key: '56e3d06ed939755796058e30ef19fbc7f7cb490d' });
|
|
1320
1446
|
}
|
|
1321
1447
|
get el() { return index.getElement(this); }
|
|
1322
1448
|
static get watchers() { return {
|
|
@@ -1327,9 +1453,11 @@ const RouterOutlet = class {
|
|
|
1327
1453
|
};
|
|
1328
1454
|
RouterOutlet.style = routerOutletCss();
|
|
1329
1455
|
|
|
1330
|
-
const
|
|
1456
|
+
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}`;
|
|
1457
|
+
|
|
1458
|
+
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)}}`;
|
|
1331
1459
|
|
|
1332
|
-
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)}
|
|
1460
|
+
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}`;
|
|
1333
1461
|
|
|
1334
1462
|
const ToolbarTitle = class {
|
|
1335
1463
|
constructor(hostRef) {
|
|
@@ -1352,13 +1480,13 @@ const ToolbarTitle = class {
|
|
|
1352
1480
|
return this.size !== undefined ? this.size : 'default';
|
|
1353
1481
|
}
|
|
1354
1482
|
render() {
|
|
1355
|
-
const
|
|
1483
|
+
const theme$1 = ionicGlobal.getIonTheme(this);
|
|
1356
1484
|
const size = this.getSize();
|
|
1357
|
-
return (index.h(index.Host, { key: '
|
|
1358
|
-
[
|
|
1485
|
+
return (index.h(index.Host, { key: 'd64e86bed418cba707d4a26c9274f18ed06c0e9e', class: theme.createColorClasses(this.color, {
|
|
1486
|
+
[theme$1]: true,
|
|
1359
1487
|
[`title-${size}`]: true,
|
|
1360
1488
|
'title-rtl': document.dir === 'rtl',
|
|
1361
|
-
}) }, index.h("div", { key: '
|
|
1489
|
+
}) }, index.h("div", { key: '386a71e974cde0bfbf5b655d69ed5f718de8ce48', class: "toolbar-title" }, index.h("slot", { key: '8aa804c9e1b11574a42268805d3117a085e699b4' }))));
|
|
1362
1490
|
}
|
|
1363
1491
|
get el() { return index.getElement(this); }
|
|
1364
1492
|
static get watchers() { return {
|
|
@@ -1368,18 +1496,29 @@ const ToolbarTitle = class {
|
|
|
1368
1496
|
}; }
|
|
1369
1497
|
};
|
|
1370
1498
|
ToolbarTitle.style = {
|
|
1499
|
+
ionic: titleIonicCss(),
|
|
1371
1500
|
ios: titleIosCss(),
|
|
1372
1501
|
md: titleMdCss()
|
|
1373
1502
|
};
|
|
1374
1503
|
|
|
1375
|
-
const
|
|
1504
|
+
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}`;
|
|
1376
1505
|
|
|
1377
|
-
const
|
|
1506
|
+
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%}`;
|
|
1507
|
+
|
|
1508
|
+
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}`;
|
|
1378
1509
|
|
|
1379
1510
|
const Toolbar = class {
|
|
1380
1511
|
constructor(hostRef) {
|
|
1381
1512
|
index.registerInstance(this, hostRef);
|
|
1382
1513
|
this.childrenStyles = new Map();
|
|
1514
|
+
this.slotClasses = [
|
|
1515
|
+
'has-start-content',
|
|
1516
|
+
'has-end-content',
|
|
1517
|
+
'has-primary-content',
|
|
1518
|
+
'has-secondary-content',
|
|
1519
|
+
];
|
|
1520
|
+
this.showClasses = ['show-start', 'show-end', 'show-primary', 'show-secondary'];
|
|
1521
|
+
this.slotSizeVars = ['--start-end-size', '--primary-secondary-size'];
|
|
1383
1522
|
}
|
|
1384
1523
|
componentWillLoad() {
|
|
1385
1524
|
const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));
|
|
@@ -1396,6 +1535,173 @@ const Toolbar = class {
|
|
|
1396
1535
|
if (lastButtons) {
|
|
1397
1536
|
lastButtons.classList.add('buttons-last-slot');
|
|
1398
1537
|
}
|
|
1538
|
+
this.updateSlotClasses();
|
|
1539
|
+
}
|
|
1540
|
+
componentDidLoad() {
|
|
1541
|
+
this.updateSlotClasses();
|
|
1542
|
+
this.updateSlotWidths();
|
|
1543
|
+
}
|
|
1544
|
+
titlePlacementChanged() {
|
|
1545
|
+
this.updateSlotClasses();
|
|
1546
|
+
}
|
|
1547
|
+
/**
|
|
1548
|
+
* Gets the title placement.
|
|
1549
|
+
* Returns the title placement if it is set, otherwise returns `"center"`
|
|
1550
|
+
* for `ionic` and `ios`, and `"start"` for `md`.
|
|
1551
|
+
*/
|
|
1552
|
+
getTitlePlacement() {
|
|
1553
|
+
if (this.titlePlacement !== undefined) {
|
|
1554
|
+
return this.titlePlacement;
|
|
1555
|
+
}
|
|
1556
|
+
return ionicGlobal.getIonTheme(this) === 'ionic' || ionicGlobal.getIonTheme(this) === 'ios' ? 'center' : 'start';
|
|
1557
|
+
}
|
|
1558
|
+
/**
|
|
1559
|
+
* Updates the CSS custom properties for slot widths
|
|
1560
|
+
* This ensures that slots shown by their met conditions
|
|
1561
|
+
* have a minimum width matching their required slot
|
|
1562
|
+
*/
|
|
1563
|
+
updateSlotWidths(tries = 0) {
|
|
1564
|
+
// Set timeout to try to execute after everything is rendered
|
|
1565
|
+
setTimeout(() => {
|
|
1566
|
+
// Attempt to measure and update
|
|
1567
|
+
const success = this.measureAndUpdateSlots();
|
|
1568
|
+
// If not all measurements were successful, try again in 100 ms
|
|
1569
|
+
// cap recursion at 5 tries for safety
|
|
1570
|
+
if (!success && tries < 5) {
|
|
1571
|
+
setTimeout(() => {
|
|
1572
|
+
this.updateSlotWidths(tries + 1);
|
|
1573
|
+
}, 100);
|
|
1574
|
+
}
|
|
1575
|
+
});
|
|
1576
|
+
}
|
|
1577
|
+
/**
|
|
1578
|
+
* Measure the widths of the slots and update the CSS custom properties
|
|
1579
|
+
* for the minimum width of each pair of slots based on the largest width in each pair.
|
|
1580
|
+
* Returns whether we successfully measured all of the slots we expect to have content.
|
|
1581
|
+
* If not, the content probably hasn't rendered yet and we need to try again.
|
|
1582
|
+
*/
|
|
1583
|
+
measureAndUpdateSlots() {
|
|
1584
|
+
// Define the relationship between slots based on the conditions array
|
|
1585
|
+
// Group slots that should have the same width
|
|
1586
|
+
const slotPairs = [
|
|
1587
|
+
{ name: 'start-end', slots: ['start', 'end'] },
|
|
1588
|
+
{ name: 'primary-secondary', slots: ['primary', 'secondary'] },
|
|
1589
|
+
];
|
|
1590
|
+
// First, measure all slot widths
|
|
1591
|
+
const slotWidths = new Map();
|
|
1592
|
+
let allMeasurementsSuccessful = true;
|
|
1593
|
+
// Measure all slots with content
|
|
1594
|
+
const slots = ['start', 'end', 'primary', 'secondary'];
|
|
1595
|
+
slots.forEach((slot) => {
|
|
1596
|
+
var _a;
|
|
1597
|
+
if (this.el.classList.contains(`has-${slot}-content`)) {
|
|
1598
|
+
const slotElement = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slot}"]`);
|
|
1599
|
+
if (slotElement) {
|
|
1600
|
+
// Check if the slot contains an img or ion-img
|
|
1601
|
+
const assignedElements = slotElement.assignedElements({ flatten: true });
|
|
1602
|
+
const hasImg = assignedElements.some((el) => {
|
|
1603
|
+
if (el.tagName === 'IMG' || el.tagName === 'ION-IMG') {
|
|
1604
|
+
return true;
|
|
1605
|
+
}
|
|
1606
|
+
// Check for nested images
|
|
1607
|
+
return el.querySelector('img, ion-img');
|
|
1608
|
+
});
|
|
1609
|
+
// Temporarily allow slot to size to content by setting flex-basis
|
|
1610
|
+
// to 'auto'. This ensures that slotted images can render at their
|
|
1611
|
+
// intrinsic width for measurement.
|
|
1612
|
+
if (hasImg) {
|
|
1613
|
+
const { name } = slotPairs.find((pair) => pair.slots.includes(slot));
|
|
1614
|
+
this.el.style.setProperty(`--${name}-size`, 'auto');
|
|
1615
|
+
}
|
|
1616
|
+
const width = slotElement.offsetWidth;
|
|
1617
|
+
if (width > 0) {
|
|
1618
|
+
slotWidths.set(slot, width);
|
|
1619
|
+
}
|
|
1620
|
+
else {
|
|
1621
|
+
allMeasurementsSuccessful = false;
|
|
1622
|
+
}
|
|
1623
|
+
}
|
|
1624
|
+
}
|
|
1625
|
+
});
|
|
1626
|
+
// Then set the CSS custom properties based on the largest width in each pair
|
|
1627
|
+
slotPairs.forEach(({ name, slots }) => {
|
|
1628
|
+
// Find the maximum width among the slots in this pair
|
|
1629
|
+
let maxWidth = 0;
|
|
1630
|
+
let hasAnyContent = false;
|
|
1631
|
+
slots.forEach((slot) => {
|
|
1632
|
+
var _a;
|
|
1633
|
+
if (slotWidths.has(slot)) {
|
|
1634
|
+
hasAnyContent = true;
|
|
1635
|
+
maxWidth = Math.max(maxWidth, (_a = slotWidths.get(slot)) !== null && _a !== void 0 ? _a : 0);
|
|
1636
|
+
}
|
|
1637
|
+
});
|
|
1638
|
+
// If at least one slot in the pair has content, set the min-width for the pair
|
|
1639
|
+
if (hasAnyContent && maxWidth > 0) {
|
|
1640
|
+
// Set a single CSS variable for the pair
|
|
1641
|
+
this.el.style.setProperty(`--${name}-size`, `${maxWidth}px`);
|
|
1642
|
+
}
|
|
1643
|
+
});
|
|
1644
|
+
return allMeasurementsSuccessful;
|
|
1645
|
+
}
|
|
1646
|
+
/**
|
|
1647
|
+
* Removes all slot visibility classes and slot width CSS variables.
|
|
1648
|
+
*/
|
|
1649
|
+
removeSlotClasses() {
|
|
1650
|
+
this.el.classList.remove(...this.slotClasses, ...this.showClasses);
|
|
1651
|
+
this.slotSizeVars.forEach((cssVar) => this.el.style.removeProperty(cssVar));
|
|
1652
|
+
}
|
|
1653
|
+
updateSlotClasses() {
|
|
1654
|
+
const titlePlacement = this.getTitlePlacement();
|
|
1655
|
+
if (titlePlacement !== 'center') {
|
|
1656
|
+
this.removeSlotClasses();
|
|
1657
|
+
return;
|
|
1658
|
+
}
|
|
1659
|
+
// Check if slots have content
|
|
1660
|
+
const slots = ['start', 'end', 'primary', 'secondary'];
|
|
1661
|
+
const classesToAdd = [];
|
|
1662
|
+
const classesToRemove = [];
|
|
1663
|
+
slots.forEach((slot) => {
|
|
1664
|
+
const slotHasContent = this.hasSlotContent(slot);
|
|
1665
|
+
const slotClass = `has-${slot}-content`;
|
|
1666
|
+
if (slotHasContent) {
|
|
1667
|
+
classesToAdd.push(slotClass);
|
|
1668
|
+
}
|
|
1669
|
+
else {
|
|
1670
|
+
classesToRemove.push(slotClass);
|
|
1671
|
+
}
|
|
1672
|
+
});
|
|
1673
|
+
// Force visibilities in certain conditions. This works by adding a class to the toolbar
|
|
1674
|
+
// named `show-{slot}`. This class will be added if the toolbar has the required slots
|
|
1675
|
+
// and does not have any of the excluded slots, otherwise it will be removed.
|
|
1676
|
+
// This is useful to enforce centering of the toolbar content when there are different amounts
|
|
1677
|
+
// of slots on either side of the toolbar.
|
|
1678
|
+
const conditions = [
|
|
1679
|
+
{ name: 'end', requiredSlots: ['start'], excludeSlots: ['end', 'primary'] },
|
|
1680
|
+
{ name: 'start', requiredSlots: ['end'], excludeSlots: ['start', 'secondary'] },
|
|
1681
|
+
{ name: 'secondary', requiredSlots: ['primary'], excludeSlots: ['secondary', 'start'] },
|
|
1682
|
+
{ name: 'primary', requiredSlots: ['secondary'], excludeSlots: ['primary', 'end'] },
|
|
1683
|
+
];
|
|
1684
|
+
conditions.forEach((condition) => {
|
|
1685
|
+
const hasRequiredSlots = condition.requiredSlots.every((slot) => classesToAdd.includes(`has-${slot}-content`));
|
|
1686
|
+
const hasExcludedSlots = condition.excludeSlots.some((slot) => classesToAdd.includes(`has-${slot}-content`));
|
|
1687
|
+
const className = `show-${condition.name}`;
|
|
1688
|
+
if (hasRequiredSlots && !hasExcludedSlots) {
|
|
1689
|
+
classesToAdd.push(className);
|
|
1690
|
+
}
|
|
1691
|
+
else {
|
|
1692
|
+
classesToRemove.push(className);
|
|
1693
|
+
}
|
|
1694
|
+
});
|
|
1695
|
+
// Add classes to the toolbar element
|
|
1696
|
+
this.el.classList.add(...classesToAdd);
|
|
1697
|
+
this.el.classList.remove(...classesToRemove);
|
|
1698
|
+
// Update slot widths after classes have been updated
|
|
1699
|
+
this.updateSlotWidths();
|
|
1700
|
+
}
|
|
1701
|
+
hasSlotContent(slotName) {
|
|
1702
|
+
var _a;
|
|
1703
|
+
const slotNode = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slotName}"]`);
|
|
1704
|
+
return !!slotNode && slotNode.assignedNodes().length > 0;
|
|
1399
1705
|
}
|
|
1400
1706
|
childrenStyle(ev) {
|
|
1401
1707
|
ev.stopPropagation();
|
|
@@ -1420,19 +1726,27 @@ const Toolbar = class {
|
|
|
1420
1726
|
}
|
|
1421
1727
|
}
|
|
1422
1728
|
render() {
|
|
1423
|
-
const
|
|
1729
|
+
const theme$1 = ionicGlobal.getIonTheme(this);
|
|
1424
1730
|
const childStyles = {};
|
|
1425
|
-
this.childrenStyles.forEach((
|
|
1426
|
-
Object.assign(childStyles,
|
|
1731
|
+
this.childrenStyles.forEach((style) => {
|
|
1732
|
+
Object.assign(childStyles, style);
|
|
1427
1733
|
});
|
|
1428
|
-
|
|
1429
|
-
|
|
1734
|
+
const titlePlacement = this.getTitlePlacement();
|
|
1735
|
+
return (index.h(index.Host, { key: 'bcb621674157410d7eaeb006779bdd677346587e', class: Object.assign(Object.assign({}, theme.createColorClasses(this.color, {
|
|
1736
|
+
[theme$1]: true,
|
|
1430
1737
|
'in-toolbar': theme.hostContext('ion-toolbar', this.el),
|
|
1431
|
-
|
|
1738
|
+
[`toolbar-title-placement-${titlePlacement}`]: true,
|
|
1739
|
+
})), childStyles) }, index.h("div", { key: '0d31a98b2571b9a0ae142fbdfd83e2ebdcd8e069', class: "toolbar-background", part: "background" }), index.h("div", { key: 'de938534c487c6cb4060dac44b40c2d872130f50', class: "toolbar-container", part: "container" }, index.h("slot", { key: 'a337150d353e439eae67c31ff86e383ed51f3d8f', name: "start", onSlotchange: () => this.updateSlotClasses }), index.h("slot", { key: '02effd3ce0cdad5ec5645fa58ccb329321449190', name: "secondary", onSlotchange: () => this.updateSlotClasses }), index.h("div", { key: '3e22f5feda2aea02117bdea2fe8a4b8905ba82f6', class: "toolbar-content", part: "content" }, index.h("slot", { key: 'ebf828643ff05a8bf662a54715d21d0859168d31' })), index.h("slot", { key: 'a6940648dfe25a7aa8792a1bd9267437274f333c', name: "primary", onSlotchange: () => this.updateSlotClasses }), index.h("slot", { key: 'afb1d61aa0e430fcf483ba482af64762474e06fe', name: "end", onSlotchange: () => this.updateSlotClasses }))));
|
|
1432
1740
|
}
|
|
1433
1741
|
get el() { return index.getElement(this); }
|
|
1742
|
+
static get watchers() { return {
|
|
1743
|
+
"titlePlacement": [{
|
|
1744
|
+
"titlePlacementChanged": 0
|
|
1745
|
+
}]
|
|
1746
|
+
}; }
|
|
1434
1747
|
};
|
|
1435
1748
|
Toolbar.style = {
|
|
1749
|
+
ionic: toolbarIonicCss(),
|
|
1436
1750
|
ios: toolbarIosCss(),
|
|
1437
1751
|
md: toolbarMdCss()
|
|
1438
1752
|
};
|