@ionic/core 8.8.18-dev.11786399582.1d58c37d → 8.8.18-dev.11786487682.1e6f798f
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-3VXQGlP7.js +4 -0
- package/components/{p-BkKAANMJ.js → p-B2SvA6NE.js} +1 -1
- package/components/p-B5krYTuW.js +4 -0
- package/components/p-B6a9IJZ0.js +4 -0
- package/components/p-BArGQkuV.js +4 -0
- package/components/p-BDqjX7Z_.js +4 -0
- package/components/{p-Cf2jSDS8.js → p-BE21dB_a.js} +1 -1
- package/components/p-BG-Q139o.js +4 -0
- package/components/{p-cyNmxje6.js → p-BPxMDyfV.js} +1 -1
- package/components/p-BT8fsdEQ.js +4 -0
- package/components/p-BWH3I3Dl.js +4 -0
- package/components/p-BYSs-jZz.js +4 -0
- package/components/{p-DqLB8yFQ.js → p-BZwQa9ey.js} +1 -1
- package/components/{p-C_hpsif8.js → p-B_jBop0E.js} +1 -1
- package/components/p-BbVhJs-a.js +4 -0
- package/components/p-Bc6odfwr.js +4 -0
- package/components/p-BjW8SOqw.js +4 -0
- package/components/p-BkWXBpOv.js +4 -0
- package/components/p-Bt9GDUv-.js +4 -0
- package/components/p-BvNVjXg4.js +4 -0
- package/components/p-BwKpO3Is.js +4 -0
- package/components/p-BwlU9cX_.js +4 -0
- package/components/{p-Osve4qkc.js → p-Bz4JFPmj.js} +1 -1
- package/components/p-CBxy8OYq.js +4 -0
- package/components/p-CGdeq57o.js +4 -0
- package/components/p-CHPdgLHZ.js +4 -0
- package/components/p-CMZlqiT7.js +4 -0
- package/components/p-CMzkbes2.js +4 -0
- package/components/p-CODBQrPj.js +4 -0
- package/components/p-COPA4jD9.js +4 -0
- package/components/p-CPnW-OVE.js +4 -0
- package/components/p-CRmBpp1v.js +4 -0
- package/components/p-CT3P-wjL.js +4 -0
- package/components/p-CVYFPBs-.js +4 -0
- package/components/p-CVqhQif1.js +4 -0
- package/components/p-Cc3oC60a.js +4 -0
- package/components/p-CjY4Hs1X.js +4 -0
- package/components/p-CrYjk-l3.js +4 -0
- package/components/p-CsUcWJuB.js +4 -0
- package/components/p-D0Iqw6OZ.js +4 -0
- package/{dist/ionic/p-D13Eaw-8.js → components/p-D0fnq0lf.js} +1 -1
- package/components/p-D1kNlmYt.js +4 -0
- package/components/p-D1t981Ih.js +4 -0
- package/components/p-D9C5yWpF.js +4 -0
- package/components/p-DDNG-IsR.js +4 -0
- package/components/p-DJSp7Si8.js +4 -0
- package/components/p-DL5wyRub.js +4 -0
- package/components/{p-ChIZKXUu.js → p-DWoO0801.js} +1 -1
- package/components/p-DXKZXLjV.js +4 -0
- package/components/p-DaJxRxSQ.js +4 -0
- package/components/p-Dhi5xtNS.js +4 -0
- package/components/p-Do8qRv6r.js +4 -0
- package/components/p-Dt--PjSF.js +4 -0
- package/components/p-DylrHLJF.js +4 -0
- package/components/p-FCT_QxQG.js +4 -0
- package/components/p-OCde3AhO.js +4 -0
- package/components/p-OPFCgx0m.js +4 -0
- package/{dist/ionic/p-VAemlbDS.js → components/p-PCVpe9Tq.js} +1 -1
- package/components/p-Rkm2AOZ2.js +4 -0
- package/components/p-WSZErkoI.js +4 -0
- package/components/p-bHSMZulH.js +4 -0
- package/components/p-fIOYmaqA.js +4 -0
- package/components/p-hNcst9K9.js +4 -0
- package/components/p-hW_3y-wm.js +4 -0
- package/components/p-nLMDgmzd.js +4 -0
- package/components/p-oI96rnOD.js +4 -0
- package/components/p-r_CFQBc1.js +4 -0
- package/components/p-vXpMhGrs.js +4 -0
- package/components/p-zBZRdRDd.js +4 -0
- 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-B3xfVcDO.js} +3 -3
- package/dist/cjs/{app-globals-Dd89e0MR.js → app-globals-3ZoCVkn-.js} +1 -1
- package/dist/cjs/{button-active-COnxOe4X.js → button-active-3tZKuPbT.js} +2 -2
- package/dist/cjs/{capacitor-DmA66EwP.js → capacitor-CQSg1uCo.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-DGX8X5js.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-BCIkDef_.js} +1 -1
- package/dist/cjs/{framework-delegate-BgU6U9Ez.js → framework-delegate-DC5nq_NN.js} +4 -2
- package/dist/cjs/{haptic-ClPPQ_PS.js → haptic-eix26ESE.js} +1 -1
- package/dist/cjs/{helpers-gntk8bfm.js → helpers-DiOgV5hw.js} +71 -4
- package/dist/cjs/{index-BS2uhvhT.js → index-BaJ7_YbC.js} +4 -4
- package/dist/cjs/index-Bj07IRTB.js +429 -0
- package/dist/cjs/{index-BiRrzGDi.js → index-BxEZd5IE.js} +2 -34
- package/dist/cjs/{index-DqmRDbxg.js → index-CxDnX7hd.js} +3 -1
- package/dist/cjs/{index-ooS8B4p9.js → index-DYRcC3bw.js} +15 -15
- package/dist/cjs/{index-BfaXsATC.js → index-GZU9YrFc.js} +43 -241
- package/dist/cjs/{index-BhhuJ1Yx.js → index-bX3nz2vw.js} +9 -8
- package/dist/cjs/index.cjs.js +16 -16
- package/dist/cjs/{input-shims-Bn1cXfCM.js → input-shims-BSEBw22J.js} +18 -17
- package/dist/cjs/{input.utils-BwhxZooW.js → input.utils-D68wgI2Y.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 +458 -244
- 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 +123 -51
- 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 +309 -215
- 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 +43 -24
- 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-QoUqobrQ.js +519 -0
- package/dist/cjs/ionic.cjs.js +4 -4
- package/dist/cjs/{ios.transition-IMJRwn29.js → ios.transition-DpFQfFfT.js} +7 -5
- package/dist/cjs/{item-multiple-inputs-jOJZE_I0.js → item-multiple-inputs-BG9f5_eV.js} +1 -1
- package/dist/cjs/{keyboard-UuAS4D_9.js → keyboard-Bn0Ppim6.js} +1 -1
- package/dist/cjs/{keyboard-hHzlEQpk.js → keyboard-faZBQysj.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-ChJcoZUH.js} +6 -5
- package/dist/cjs/{notch-controller-_SwR025y.js → notch-controller-BO0UGB4F.js} +4 -4
- package/dist/cjs/overlay-control-label-DnRLQR1t.js +52 -0
- package/dist/cjs/{overlays-DuSEMhIW.js → overlays-CFGbPUmE.js} +309 -18
- package/dist/cjs/scroll-hide-controller-G9HOmmhN.js +345 -0
- package/dist/cjs/select-option-render-DqBHEjDn.js +124 -0
- package/dist/cjs/{status-tap-CSvBT7FV.js → status-tap-x2qDo5QR.js} +4 -3
- package/dist/cjs/{swipe-back-CuIiziaa.js → swipe-back-CvZt_4YX.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 +17 -63
- 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 +100 -26
- 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 +102 -32
- package/dist/collection/components/modal/gestures/swipe-to-close.js +32 -3
- package/dist/collection/components/modal/gestures/utils.js +0 -17
- 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 +59 -34
- package/dist/collection/components/modal/modal.md.css +178 -70
- package/dist/collection/components/modal/safe-area-utils.js +0 -35
- 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 +13 -10
- 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/content/index.js +0 -30
- 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 +9091 -287
- package/dist/esm/{animation-DLJpuoEz.js → animation-B2qdQ_ou.js} +2 -2
- package/dist/esm/{app-globals-D0C5S4hU.js → app-globals-DZ-iIjxA.js} +1 -1
- package/dist/esm/{button-active-BSpTQmS9.js → button-active-BmajAby6.js} +2 -2
- package/dist/esm/{capacitor-CFERIeaU.js → capacitor-CtQSWUU0.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-C7AAVMKK.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-DFgKNCce.js} +1 -1
- package/dist/esm/{helpers-HEqiOzXb.js → helpers-DfF5_wJc.js} +71 -5
- package/dist/esm/{index-DV3sJJW8.js → index-B4Kq2YNk.js} +3 -2
- package/dist/esm/{index-B_dQk_WE.js → index-BIUWGRUl.js} +4 -4
- package/dist/esm/{index-BRHzoo00.js → index-BjaaZqVY.js} +4 -3
- package/dist/esm/{index-tcQvqkiX.js → index-C0EQceqV.js} +42 -222
- package/dist/esm/{index-Q6UPU0Ay.js → index-Di034G4O.js} +11 -11
- package/dist/esm/{index-Dw-wN0Ja.js → index-KxK0gcRp.js} +3 -33
- package/dist/esm/index-Mq5pCWmZ.js +424 -0
- package/dist/esm/index.js +14 -14
- package/dist/esm/{input-shims-LXhI7LEx.js → input-shims-DvNNw70a.js} +7 -6
- package/dist/esm/{input.utils-Y6NgW8bw.js → input.utils-_LkBfBWt.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 +457 -243
- 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 +123 -51
- 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 +275 -181
- 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 +41 -22
- 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-BpkTponr.js +508 -0
- package/dist/esm/ionic.js +5 -5
- package/dist/esm/{ios.transition-ClFrsIrS.js → ios.transition-CgScDbsb.js} +7 -5
- package/dist/esm/{item-multiple-inputs-DlNuqNJm.js → item-multiple-inputs-C6onMFOo.js} +1 -1
- package/dist/esm/{keyboard-CUw4ekVy.js → keyboard-CyyguLDw.js} +1 -1
- package/dist/esm/{keyboard-ywgs5efA.js → keyboard-WJix-wcz.js} +4 -3
- package/dist/esm/list-Dhi5xtNS.js +6 -0
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-D0msQmzI.js → md.transition-DThqYazt.js} +6 -5
- package/dist/esm/{notch-controller-DKDjU_O7.js → notch-controller-MTblRxjD.js} +2 -2
- package/dist/esm/overlay-control-label-CODBQrPj.js +49 -0
- package/dist/esm/{overlays-Dg0q2_tJ.js → overlays-tv6nLsmk.js} +306 -15
- package/dist/esm/scroll-hide-controller-CUNW7EpD.js +342 -0
- package/dist/esm/select-option-render-BlKZ2H83.js +122 -0
- package/dist/esm/{status-tap-vO-6s4Yp.js → status-tap-CoPI1M2q.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 +2708 -169
- 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-05ce9821.entry.js +4 -0
- package/dist/ionic/p-085b8cdf.entry.js +4 -0
- package/dist/ionic/p-0ef6bfc4.entry.js +4 -0
- package/dist/ionic/p-18b7771e.entry.js +4 -0
- package/dist/ionic/p-19f34fe5.entry.js +4 -0
- package/dist/ionic/p-1b6e3914.entry.js +4 -0
- package/dist/ionic/p-2740db6e.entry.js +4 -0
- package/dist/ionic/p-2a1abbb1.entry.js +4 -0
- package/dist/ionic/p-2d9c681b.entry.js +4 -0
- package/dist/ionic/p-2fba8f15.entry.js +4 -0
- package/dist/ionic/p-3886bfbe.entry.js +4 -0
- package/dist/ionic/p-3ab9c35a.entry.js +4 -0
- package/dist/ionic/p-3b4c5cb5.entry.js +4 -0
- package/dist/ionic/p-3cfb4ff2.entry.js +4 -0
- package/dist/ionic/p-41afaf15.entry.js +4 -0
- package/dist/ionic/p-47b9dac0.entry.js +4 -0
- package/dist/ionic/p-54419365.entry.js +4 -0
- package/dist/ionic/p-54b7972e.entry.js +4 -0
- package/dist/ionic/p-602cf876.entry.js +4 -0
- package/dist/ionic/p-678ee14a.entry.js +4 -0
- package/dist/ionic/p-679c1448.entry.js +4 -0
- package/dist/ionic/p-68ea8ed1.entry.js +4 -0
- package/dist/ionic/p-6e1ec775.entry.js +4 -0
- package/dist/ionic/p-745d6b2b.entry.js +4 -0
- package/dist/ionic/p-77254b78.entry.js +4 -0
- package/dist/ionic/{p-C0eMdTCW.js → p-7k7Q1A38.js} +1 -1
- package/dist/ionic/p-898691b3.entry.js +4 -0
- package/dist/ionic/p-89fedfda.entry.js +4 -0
- package/dist/ionic/p-8cf82b85.entry.js +4 -0
- package/dist/ionic/p-8d5fd199.entry.js +4 -0
- package/dist/ionic/p-9087119f.entry.js +4 -0
- package/dist/ionic/p-9c508a22.entry.js +4 -0
- package/dist/ionic/p-B4Kq2YNk.js +4 -0
- package/dist/ionic/p-BDSH5ckF.js +4 -0
- package/dist/ionic/p-BDqjX7Z_.js +4 -0
- package/dist/ionic/p-BFy_BK46.js +4 -0
- package/dist/ionic/p-BYSs-jZz.js +4 -0
- package/dist/ionic/p-BjW8SOqw.js +4 -0
- package/dist/ionic/p-BlZo7Gy-.js +4 -0
- package/dist/ionic/p-Bq8S4vhI.js +4 -0
- package/dist/ionic/p-Btc4flkw.js +4 -0
- package/dist/ionic/p-BwKpO3Is.js +4 -0
- package/dist/ionic/p-C0EQceqV.js +5 -0
- package/dist/ionic/p-C1I_d964.js +4 -0
- package/dist/ionic/p-CB91Gr9M.js +4 -0
- package/dist/ionic/p-CEkwLb3L.js +4 -0
- package/dist/ionic/p-CJsJQPQD.js +4 -0
- package/dist/ionic/p-CODBQrPj.js +4 -0
- package/dist/ionic/p-Ch7MBNn_.js +4 -0
- package/dist/ionic/p-Cipl19Qe.js +4 -0
- package/dist/ionic/{p-DC3RagnA.js → p-Cm20lBQw.js} +1 -1
- package/dist/ionic/p-CnAWnbNK.js +4 -0
- package/dist/ionic/p-D1t981Ih.js +4 -0
- package/dist/ionic/p-D4MT1z4_.js +4 -0
- package/dist/ionic/p-D4veLKCq.js +4 -0
- package/dist/ionic/p-DF7ubVci.js +4 -0
- package/dist/ionic/p-DMaSfupH.js +4 -0
- package/{components/p-D13Eaw-8.js → dist/ionic/p-DQDmksdT.js} +1 -1
- package/dist/ionic/p-DTsDGZPd.js +4 -0
- package/dist/ionic/p-DaJxRxSQ.js +4 -0
- package/dist/ionic/p-DdCaKRle.js +4 -0
- package/dist/ionic/p-Dhi5xtNS.js +4 -0
- package/dist/ionic/p-Dy243NXW.js +4 -0
- package/dist/ionic/{p-CKvCXMs9.js → p-OkgYzj-7.js} +1 -1
- package/dist/ionic/p-YIsE5bNG.js +4 -0
- package/dist/ionic/p-a4af8e39.entry.js +4 -0
- package/dist/ionic/p-b2368a93.entry.js +4 -0
- package/dist/ionic/p-b275f17e.entry.js +4 -0
- package/dist/ionic/p-c5635175.entry.js +4 -0
- package/dist/ionic/p-c76d57fb.entry.js +4 -0
- package/dist/ionic/p-ca3a07b5.entry.js +4 -0
- package/dist/ionic/p-ced3cda1.entry.js +4 -0
- package/dist/ionic/p-cf22e991.entry.js +4 -0
- package/dist/ionic/p-d0c1d21d.entry.js +4 -0
- package/dist/ionic/p-d0d42da6.entry.js +4 -0
- package/dist/ionic/p-d33dfc12.entry.js +4 -0
- package/dist/ionic/p-d34bfb61.entry.js +4 -0
- package/dist/ionic/p-dbc08f67.entry.js +4 -0
- package/dist/ionic/p-dc8e0b91.entry.js +4 -0
- package/dist/ionic/p-df642ef5.entry.js +4 -0
- package/dist/ionic/p-e04d63e1.entry.js +4 -0
- package/dist/ionic/p-e3615478.entry.js +4 -0
- package/dist/ionic/p-f1810d29.entry.js +4 -0
- package/dist/ionic/p-f1a8aead.entry.js +4 -0
- package/dist/ionic/p-f69af9d3.entry.js +4 -0
- package/dist/ionic/p-f760f90e.entry.js +4 -0
- package/dist/ionic/p-f8001f8f.entry.js +4 -0
- package/dist/ionic/p-f8b63ebb.entry.js +4 -0
- package/dist/ionic/p-fIOYmaqA.js +4 -0
- package/dist/ionic/p-fc6d26ff.entry.js +4 -0
- package/dist/ionic/p-im8OkZlj.js +4 -0
- package/dist/ionic/p-lMb_45ax.js +4 -0
- package/dist/ionic/p-oUgyLDGL.js +4 -0
- package/dist/ionic/p-vXpMhGrs.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 +3 -12
- package/dist/types/components/datetime/datetime.d.ts +27 -6
- 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 -2
- package/dist/types/components/modal/gestures/utils.d.ts +0 -11
- package/dist/types/components/modal/modal-interface.d.ts +4 -7
- package/dist/types/components/modal/modal.d.ts +14 -7
- package/dist/types/components/modal/safe-area-utils.d.ts +0 -6
- 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 +1883 -212
- 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/content/index.d.ts +0 -12
- 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 +6465 -1565
- package/hydrate/index.mjs +6465 -1565
- package/package.json +10 -7
- package/components/p--JUspHvy.js +0 -4
- package/components/p-A3O24YmY.js +0 -4
- package/components/p-ABkNVeU9.js +0 -4
- package/components/p-B-JJgYSG.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-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-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-D7uN07a3.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-DRxvM2Ic.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-gYiraiT_.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-vRBNsYbs.js +0 -4
- package/components/p-yEQxMl70.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-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-5e2f73ee.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-d889ff6d.entry.js +0 -4
- package/dist/ionic/p-dfa8d673.entry.js +0 -4
- package/dist/ionic/p-ea56626d.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-mjKAFv89.js +0 -4
- package/dist/ionic/p-tcQvqkiX.js +0 -5
- package/dist/ionic/p-uWtqTrG8.js +0 -4
- package/dist/ionic/p-viFHDgRs.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-GZU9YrFc.js');
|
|
7
|
+
var focusVisible = require('./focus-visible-BIj-I3-C.js');
|
|
8
|
+
var ionicGlobal = require('./ionic-global-QoUqobrQ.js');
|
|
9
|
+
var helpers = require('./helpers-DiOgV5hw.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-BxEZd5IE.js');
|
|
13
|
+
var scrollHideController = require('./scroll-hide-controller-G9HOmmhN.js');
|
|
14
14
|
var cubicBezier = require('./cubic-bezier-DAjy1V-e.js');
|
|
15
|
-
var frameworkDelegate = require('./framework-delegate-
|
|
15
|
+
var frameworkDelegate = require('./framework-delegate-DC5nq_NN.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-BaJ7_YbC.js');
|
|
18
|
+
require('./keyboard-Bn0Ppim6.js');
|
|
19
|
+
require('./capacitor-CQSg1uCo.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,9 +158,6 @@ const Content = class {
|
|
|
226
158
|
*/
|
|
227
159
|
this.scrollEvents = false;
|
|
228
160
|
}
|
|
229
|
-
fullscreenChanged() {
|
|
230
|
-
this.setupFullscreenResizeObserver();
|
|
231
|
-
}
|
|
232
161
|
componentWillLoad() {
|
|
233
162
|
this.inheritedAttributes = helpers.inheritAriaAttributes(this.el);
|
|
234
163
|
}
|
|
@@ -268,12 +197,6 @@ const Content = class {
|
|
|
268
197
|
closestTabs.addEventListener('ionTabBarLoaded', this.tabsLoadCallback);
|
|
269
198
|
}
|
|
270
199
|
}
|
|
271
|
-
// Re-observe on reattach, since componentDidLoad only fires once.
|
|
272
|
-
this.setupFullscreenResizeObserver();
|
|
273
|
-
}
|
|
274
|
-
componentDidLoad() {
|
|
275
|
-
// The custom elements build assigns fullscreen after connectedCallback.
|
|
276
|
-
this.setupFullscreenResizeObserver();
|
|
277
200
|
}
|
|
278
201
|
disconnectedCallback() {
|
|
279
202
|
this.onScrollEnd();
|
|
@@ -295,42 +218,6 @@ const Content = class {
|
|
|
295
218
|
clearTimeout(this.resizeTimeout);
|
|
296
219
|
this.resizeTimeout = null;
|
|
297
220
|
}
|
|
298
|
-
this.destroyFullscreenResizeObserver();
|
|
299
|
-
}
|
|
300
|
-
/**
|
|
301
|
-
* Header and footer sizes can change after load without a window resize
|
|
302
|
-
* firing, so the `resize` listener alone misses those changes.
|
|
303
|
-
*
|
|
304
|
-
* Popover content is excluded because `contain: none` lets its offsets drive
|
|
305
|
-
* the host's own height, which would feed back into the observer.
|
|
306
|
-
*/
|
|
307
|
-
setupFullscreenResizeObserver() {
|
|
308
|
-
if (typeof ResizeObserver === 'undefined') {
|
|
309
|
-
return;
|
|
310
|
-
}
|
|
311
|
-
if (!this.fullscreen || theme.hostContext('ion-popover', this.el)) {
|
|
312
|
-
this.destroyFullscreenResizeObserver();
|
|
313
|
-
return;
|
|
314
|
-
}
|
|
315
|
-
if (this.fullscreenResizeObserver !== undefined) {
|
|
316
|
-
return;
|
|
317
|
-
}
|
|
318
|
-
this.fullscreenResizeObserver = new ResizeObserver(() => {
|
|
319
|
-
// A hidden page reports a 0x0 box, which would zero the offsets. Same
|
|
320
|
-
// reasoning as the guard in onResize, minus its debounce so the
|
|
321
|
-
// correction lands in the next frame instead of 100ms later.
|
|
322
|
-
if (this.el.offsetParent === null) {
|
|
323
|
-
return;
|
|
324
|
-
}
|
|
325
|
-
this.resize();
|
|
326
|
-
});
|
|
327
|
-
this.fullscreenResizeObserver.observe(this.el);
|
|
328
|
-
}
|
|
329
|
-
destroyFullscreenResizeObserver() {
|
|
330
|
-
if (this.fullscreenResizeObserver !== undefined) {
|
|
331
|
-
this.fullscreenResizeObserver.disconnect();
|
|
332
|
-
this.fullscreenResizeObserver = undefined;
|
|
333
|
-
}
|
|
334
221
|
}
|
|
335
222
|
/**
|
|
336
223
|
* Rotating certain devices can update
|
|
@@ -367,9 +254,8 @@ const Content = class {
|
|
|
367
254
|
this.resize();
|
|
368
255
|
}, 100);
|
|
369
256
|
}
|
|
370
|
-
shouldForceOverscroll() {
|
|
257
|
+
shouldForceOverscroll(mode) {
|
|
371
258
|
const { forceOverscroll } = this;
|
|
372
|
-
const mode = ionicGlobal.getIonMode(this);
|
|
373
259
|
return forceOverscroll === undefined ? mode === 'ios' && ionicGlobal.isPlatform('ios') : forceOverscroll;
|
|
374
260
|
}
|
|
375
261
|
resize() {
|
|
@@ -565,12 +451,13 @@ const Content = class {
|
|
|
565
451
|
render() {
|
|
566
452
|
const { fixedSlotPlacement, inheritedAttributes, isMainContent, scrollX, scrollY, el } = this;
|
|
567
453
|
const rtl = dir.isRTL(el) ? 'rtl' : 'ltr';
|
|
568
|
-
const
|
|
569
|
-
const
|
|
570
|
-
const
|
|
454
|
+
const theme$1 = ionicGlobal.getIonTheme(this);
|
|
455
|
+
const mode = ionicGlobal.getIonMode(this, theme$1);
|
|
456
|
+
const forceOverscroll = this.shouldForceOverscroll(mode);
|
|
457
|
+
const transitionShadow = theme$1 === 'ios';
|
|
571
458
|
this.resize();
|
|
572
|
-
return (index.h(index.Host, Object.assign({ key: '
|
|
573
|
-
[
|
|
459
|
+
return (index.h(index.Host, Object.assign({ key: 'd7f325c30b698dc42ec5e8c45b29e82749743cf4', role: isMainContent ? 'main' : undefined, class: theme.createColorClasses(this.color, {
|
|
460
|
+
[theme$1]: true,
|
|
574
461
|
'content-fullscreen': this.fullscreen,
|
|
575
462
|
'content-sizing': theme.hostContext('ion-popover', this.el),
|
|
576
463
|
overscroll: forceOverscroll,
|
|
@@ -578,19 +465,14 @@ const Content = class {
|
|
|
578
465
|
}), style: {
|
|
579
466
|
'--offset-top': `${this.cTop}px`,
|
|
580
467
|
'--offset-bottom': `${this.cBottom}px`,
|
|
581
|
-
} }, inheritedAttributes), index.h("div", { key: '
|
|
468
|
+
} }, inheritedAttributes), index.h("div", { key: 'c93b2c622a69c7fd153bbe9b0c6f8c24d85ed969', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? index.h("slot", { name: "fixed" }) : null, index.h("div", { key: '1700cc94e464ad1ab1c6672270f9649e90be3a5e', class: {
|
|
582
469
|
'inner-scroll': true,
|
|
583
470
|
'scroll-x': scrollX,
|
|
584
471
|
'scroll-y': scrollY,
|
|
585
472
|
overscroll: (scrollX || scrollY) && forceOverscroll,
|
|
586
|
-
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: '
|
|
473
|
+
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: 'bff713ead4f61730e3f36b5af4b771ae62bde6cd' })), 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));
|
|
587
474
|
}
|
|
588
475
|
get el() { return index.getElement(this); }
|
|
589
|
-
static get watchers() { return {
|
|
590
|
-
"fullscreen": [{
|
|
591
|
-
"fullscreenChanged": 0
|
|
592
|
-
}]
|
|
593
|
-
}; }
|
|
594
476
|
};
|
|
595
477
|
const getParentElement = (el) => {
|
|
596
478
|
var _a;
|
|
@@ -614,7 +496,8 @@ const getPageElement = (el) => {
|
|
|
614
496
|
* between the popover and the edges of the screen. But if the popover contains
|
|
615
497
|
* its own page element, we should use that instead.
|
|
616
498
|
*/
|
|
617
|
-
const
|
|
499
|
+
const appRootSelector = index.config.get('appRootSelector', 'ion-app');
|
|
500
|
+
const page = el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner, .popover-content`);
|
|
618
501
|
if (page) {
|
|
619
502
|
return page;
|
|
620
503
|
}
|
|
@@ -678,45 +561,90 @@ const handleFooterFade = (scrollEl, baseEl) => {
|
|
|
678
561
|
});
|
|
679
562
|
};
|
|
680
563
|
|
|
681
|
-
const
|
|
564
|
+
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}`;
|
|
682
565
|
|
|
683
|
-
const
|
|
566
|
+
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}`;
|
|
567
|
+
|
|
568
|
+
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}`;
|
|
684
569
|
|
|
685
570
|
const Footer = class {
|
|
686
571
|
constructor(hostRef) {
|
|
687
572
|
index.registerInstance(this, hostRef);
|
|
688
573
|
this.keyboardCtrl = null;
|
|
689
574
|
this.keyboardCtrlPromise = null;
|
|
575
|
+
this.scrollHideCtrlPromise = null;
|
|
576
|
+
this.hasWarnedCollapse = false;
|
|
577
|
+
this.fadeSetupId = 0;
|
|
690
578
|
this.keyboardVisible = false;
|
|
691
579
|
/**
|
|
692
580
|
* If `true`, the footer will be translucent.
|
|
693
|
-
* Only applies when the
|
|
581
|
+
* Only applies when the theme is `"ios"` and the device supports
|
|
694
582
|
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
695
583
|
*
|
|
696
584
|
* Note: In order to scroll content behind the footer, the `fullscreen`
|
|
697
585
|
* attribute needs to be set on the content.
|
|
698
586
|
*/
|
|
699
587
|
this.translucent = false;
|
|
700
|
-
this.checkCollapsibleFooter = () => {
|
|
701
|
-
const
|
|
702
|
-
if (
|
|
588
|
+
this.checkCollapsibleFooter = async () => {
|
|
589
|
+
const { scrollEffect, collapse } = this;
|
|
590
|
+
if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
|
|
591
|
+
this.hasWarnedCollapse = true;
|
|
592
|
+
index.printIonWarning(`[ion-footer] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-footer scroll-effect="${collapse}">`, this.el);
|
|
593
|
+
}
|
|
594
|
+
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
595
|
+
// Skip teardown/rebuild if the effect hasn't changed.
|
|
596
|
+
// This prevents keyboard toggles (which trigger re-renders via
|
|
597
|
+
// @State keyboardVisible) from destroying the scroll controller
|
|
598
|
+
// and resetting isHidden.
|
|
599
|
+
if (effect === this.activeEffect) {
|
|
703
600
|
return;
|
|
704
601
|
}
|
|
705
|
-
const
|
|
706
|
-
const hasFade =
|
|
602
|
+
const hasHide = effect === 'hide';
|
|
603
|
+
const hasFade = effect === 'fade';
|
|
707
604
|
this.destroyCollapsibleFooter();
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
605
|
+
const appRootSelector = index.config.get('appRootSelector', 'ion-app');
|
|
606
|
+
const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
|
|
607
|
+
const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
|
|
608
|
+
if (hasHide && contentEl) {
|
|
609
|
+
this.activeEffect = effect;
|
|
610
|
+
await this.setupScrollEffectHide(contentEl);
|
|
611
|
+
return;
|
|
612
|
+
}
|
|
613
|
+
// fade via the deprecated `collapse` prop is iOS-only.
|
|
614
|
+
// fade via the new `scrollEffect` prop works in all themes.
|
|
615
|
+
const isModeRestricted = scrollEffect === undefined && ionicGlobal.getIonTheme(this) !== 'ios';
|
|
616
|
+
if (hasFade && !isModeRestricted) {
|
|
711
617
|
if (!contentEl) {
|
|
712
618
|
index$1.printIonContentErrorMsg(this.el);
|
|
713
619
|
return;
|
|
714
620
|
}
|
|
715
621
|
this.setupFadeFooter(contentEl);
|
|
622
|
+
this.activeEffect = effect;
|
|
623
|
+
}
|
|
624
|
+
};
|
|
625
|
+
this.setupScrollEffectHide = async (contentEl) => {
|
|
626
|
+
const setupPromise = scrollHideController.createScrollHideController(contentEl, {
|
|
627
|
+
el: this.el,
|
|
628
|
+
cssVar: '--internal-footer-hide-height',
|
|
629
|
+
hiddenClass: 'footer-scroll-hidden',
|
|
630
|
+
contentPartnerClass: 'content-footer-hide-scroll-partner',
|
|
631
|
+
contentHiddenClass: 'content-footer-hide-scroll-hidden',
|
|
632
|
+
});
|
|
633
|
+
this.scrollHideCtrlPromise = setupPromise;
|
|
634
|
+
const controller = await setupPromise;
|
|
635
|
+
if (this.scrollHideCtrlPromise === setupPromise) {
|
|
636
|
+
this.scrollHideCtrlPromise = null;
|
|
637
|
+
controller.init();
|
|
638
|
+
this.scrollHideCtrl = controller;
|
|
716
639
|
}
|
|
717
640
|
};
|
|
718
641
|
this.setupFadeFooter = async (contentEl) => {
|
|
719
|
-
const
|
|
642
|
+
const setupId = ++this.fadeSetupId;
|
|
643
|
+
const scrollEl = await index$1.getScrollElement(contentEl);
|
|
644
|
+
if (this.fadeSetupId !== setupId) {
|
|
645
|
+
return;
|
|
646
|
+
}
|
|
647
|
+
this.scrollEl = scrollEl;
|
|
720
648
|
/**
|
|
721
649
|
* Handle fading of toolbars on scroll
|
|
722
650
|
*/
|
|
@@ -734,7 +662,7 @@ const Footer = class {
|
|
|
734
662
|
this.checkCollapsibleFooter();
|
|
735
663
|
}
|
|
736
664
|
async connectedCallback() {
|
|
737
|
-
const promise =
|
|
665
|
+
const promise = scrollHideController.createKeyboardController(async (keyboardOpen, waitForResize) => {
|
|
738
666
|
/**
|
|
739
667
|
* If the keyboard is hiding, then we need to wait
|
|
740
668
|
* for the webview to resize. Otherwise, the footer
|
|
@@ -761,6 +689,7 @@ const Footer = class {
|
|
|
761
689
|
}
|
|
762
690
|
}
|
|
763
691
|
disconnectedCallback() {
|
|
692
|
+
this.destroyCollapsibleFooter();
|
|
764
693
|
if (this.keyboardCtrlPromise) {
|
|
765
694
|
this.keyboardCtrlPromise.then((ctrl) => ctrl.destroy());
|
|
766
695
|
this.keyboardCtrlPromise = null;
|
|
@@ -771,29 +700,43 @@ const Footer = class {
|
|
|
771
700
|
}
|
|
772
701
|
}
|
|
773
702
|
destroyCollapsibleFooter() {
|
|
703
|
+
this.activeEffect = undefined;
|
|
704
|
+
this.fadeSetupId++;
|
|
705
|
+
this.scrollHideCtrlPromise = null;
|
|
706
|
+
if (this.scrollHideCtrl) {
|
|
707
|
+
this.scrollHideCtrl.destroy();
|
|
708
|
+
this.scrollHideCtrl = undefined;
|
|
709
|
+
}
|
|
774
710
|
if (this.scrollEl && this.contentScrollCallback) {
|
|
775
711
|
this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
|
|
776
712
|
this.contentScrollCallback = undefined;
|
|
777
713
|
}
|
|
778
714
|
}
|
|
779
715
|
render() {
|
|
780
|
-
const { translucent, collapse } = this;
|
|
781
|
-
const
|
|
716
|
+
const { translucent, scrollEffect, collapse } = this;
|
|
717
|
+
const theme = ionicGlobal.getIonTheme(this);
|
|
718
|
+
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
719
|
+
// fade via the deprecated `collapse` prop is iOS-only.
|
|
720
|
+
const isModeRestricted = scrollEffect === undefined && theme !== 'ios';
|
|
721
|
+
const hasHide = effect === 'hide';
|
|
722
|
+
const hasFade = effect === 'fade' && !isModeRestricted;
|
|
782
723
|
const tabs = this.el.closest('ion-tabs');
|
|
783
724
|
const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
|
|
784
|
-
return (index.h(index.Host, { key: '
|
|
785
|
-
[
|
|
725
|
+
return (index.h(index.Host, { key: 'a0777b4a639d22e15374879f018efcf589e756f8', role: "contentinfo", class: {
|
|
726
|
+
[theme]: true,
|
|
786
727
|
// Used internally for styling
|
|
787
|
-
[`footer-${
|
|
728
|
+
[`footer-${theme}`]: true,
|
|
788
729
|
[`footer-translucent`]: translucent,
|
|
789
|
-
[`footer-translucent-${
|
|
730
|
+
[`footer-translucent-${theme}`]: translucent,
|
|
790
731
|
['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
|
|
791
|
-
|
|
792
|
-
|
|
732
|
+
'footer-collapse-fade': hasFade,
|
|
733
|
+
'footer-scroll-effect-hide': hasHide,
|
|
734
|
+
} }, theme === 'ios' && translucent && index.h("div", { key: 'd78b46870cbf11c95b066d649c04ec398b66e614', class: "footer-background" }), index.h("slot", { key: '9dc34787cd29597fe1b1198db317602014ac1483' })));
|
|
793
735
|
}
|
|
794
736
|
get el() { return index.getElement(this); }
|
|
795
737
|
};
|
|
796
738
|
Footer.style = {
|
|
739
|
+
ionic: ionicFooterMdCss(),
|
|
797
740
|
ios: footerIosCss(),
|
|
798
741
|
md: footerMdCss()
|
|
799
742
|
};
|
|
@@ -845,13 +788,14 @@ const handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {
|
|
|
845
788
|
});
|
|
846
789
|
};
|
|
847
790
|
const setToolbarBackgroundOpacity = (headerEl, opacity) => {
|
|
791
|
+
var _a;
|
|
848
792
|
/**
|
|
849
793
|
* Fading in the backdrop opacity
|
|
850
794
|
* should happen after the large title
|
|
851
795
|
* has collapsed, so it is handled
|
|
852
796
|
* by handleHeaderFade()
|
|
853
797
|
*/
|
|
854
|
-
if (headerEl.collapse === 'fade') {
|
|
798
|
+
if (((_a = headerEl.scrollEffect) !== null && _a !== void 0 ? _a : headerEl.collapse) === 'fade') {
|
|
855
799
|
return;
|
|
856
800
|
}
|
|
857
801
|
if (opacity === undefined) {
|
|
@@ -1009,46 +953,69 @@ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
|
|
|
1009
953
|
* Get the role type for the ion-header.
|
|
1010
954
|
*
|
|
1011
955
|
* @param isInsideMenu If ion-header is inside ion-menu.
|
|
1012
|
-
* @
|
|
1013
|
-
*
|
|
1014
|
-
*
|
|
1015
|
-
* mode, otherwise 'banner'.
|
|
956
|
+
* @returns 'none' if inside ion-menu, otherwise 'banner'.
|
|
957
|
+
* Condensed headers start as 'banner' and have their role
|
|
958
|
+
* toggled dynamically by setHeaderActive() on scroll.
|
|
1016
959
|
*/
|
|
1017
|
-
const getRoleType = (isInsideMenu
|
|
960
|
+
const getRoleType = (isInsideMenu) => {
|
|
1018
961
|
// If the header is inside a menu, it should not have the banner role.
|
|
1019
962
|
if (isInsideMenu) {
|
|
1020
963
|
return ROLE_NONE;
|
|
1021
964
|
}
|
|
1022
|
-
/**
|
|
1023
|
-
* Only apply role="none" to `md` mode condensed headers
|
|
1024
|
-
* since the large header is never shown.
|
|
1025
|
-
*/
|
|
1026
|
-
if (isCondensed && mode === 'md') {
|
|
1027
|
-
return ROLE_NONE;
|
|
1028
|
-
}
|
|
1029
965
|
// Default to banner role.
|
|
1030
966
|
return ROLE_BANNER;
|
|
1031
967
|
};
|
|
1032
968
|
|
|
1033
|
-
const
|
|
969
|
+
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}}`;
|
|
1034
970
|
|
|
1035
|
-
const
|
|
971
|
+
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}`;
|
|
972
|
+
|
|
973
|
+
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}`;
|
|
1036
974
|
|
|
1037
975
|
const Header = class {
|
|
1038
976
|
constructor(hostRef) {
|
|
1039
977
|
index.registerInstance(this, hostRef);
|
|
1040
978
|
this.inheritedAttributes = {};
|
|
979
|
+
this.scrollHideCtrlPromise = null;
|
|
980
|
+
this.hasWarnedCollapse = false;
|
|
981
|
+
this.fadeCondenseSetupId = 0;
|
|
982
|
+
/**
|
|
983
|
+
* If `true`, the header will have a line at the bottom.
|
|
984
|
+
* TODO(ROU-10855): add support for this prop on ios/md themes
|
|
985
|
+
*/
|
|
986
|
+
this.divider = false;
|
|
1041
987
|
/**
|
|
1042
988
|
* If `true`, the header will be translucent.
|
|
1043
|
-
* Only applies when the
|
|
989
|
+
* Only applies when the theme is `"ios"` or `"ionic"` and the device supports
|
|
1044
990
|
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
1045
991
|
*
|
|
1046
992
|
* Note: In order to scroll content behind the header, the `fullscreen`
|
|
1047
993
|
* attribute needs to be set on the content.
|
|
1048
994
|
*/
|
|
1049
995
|
this.translucent = false;
|
|
996
|
+
this.setupScrollEffectHide = async (contentEl) => {
|
|
997
|
+
const setupPromise = scrollHideController.createScrollHideController(contentEl, {
|
|
998
|
+
el: this.el,
|
|
999
|
+
cssVar: '--internal-header-hide-height',
|
|
1000
|
+
hiddenClass: 'header-scroll-hidden',
|
|
1001
|
+
contentPartnerClass: 'content-header-hide-scroll-partner',
|
|
1002
|
+
contentHiddenClass: 'content-header-hide-scroll-hidden',
|
|
1003
|
+
});
|
|
1004
|
+
this.scrollHideCtrlPromise = setupPromise;
|
|
1005
|
+
const controller = await setupPromise;
|
|
1006
|
+
if (this.scrollHideCtrlPromise === setupPromise) {
|
|
1007
|
+
this.scrollHideCtrlPromise = null;
|
|
1008
|
+
controller.init();
|
|
1009
|
+
this.scrollHideCtrl = controller;
|
|
1010
|
+
}
|
|
1011
|
+
};
|
|
1050
1012
|
this.setupFadeHeader = async (contentEl, condenseHeader) => {
|
|
1051
|
-
const
|
|
1013
|
+
const setupId = ++this.fadeCondenseSetupId;
|
|
1014
|
+
const scrollEl = await index$1.getScrollElement(contentEl);
|
|
1015
|
+
if (this.fadeCondenseSetupId !== setupId) {
|
|
1016
|
+
return;
|
|
1017
|
+
}
|
|
1018
|
+
this.scrollEl = scrollEl;
|
|
1052
1019
|
/**
|
|
1053
1020
|
* Handle fading of toolbars on scroll
|
|
1054
1021
|
*/
|
|
@@ -1072,37 +1039,63 @@ const Header = class {
|
|
|
1072
1039
|
this.destroyCollapsibleHeader();
|
|
1073
1040
|
}
|
|
1074
1041
|
async checkCollapsibleHeader() {
|
|
1075
|
-
const
|
|
1076
|
-
if (
|
|
1042
|
+
const { scrollEffect, collapse } = this;
|
|
1043
|
+
if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
|
|
1044
|
+
this.hasWarnedCollapse = true;
|
|
1045
|
+
index.printIonWarning(`[ion-header] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-header scroll-effect="${collapse}">`, this.el);
|
|
1046
|
+
}
|
|
1047
|
+
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
1048
|
+
// Skip teardown/rebuild if the effect hasn't changed.
|
|
1049
|
+
// This prevents re-renders from destroying the scroll controller
|
|
1050
|
+
// and resetting isHidden.
|
|
1051
|
+
if (effect === this.activeEffect) {
|
|
1077
1052
|
return;
|
|
1078
1053
|
}
|
|
1079
|
-
const
|
|
1080
|
-
const hasCondense =
|
|
1081
|
-
const hasFade =
|
|
1054
|
+
const hasHide = effect === 'hide';
|
|
1055
|
+
const hasCondense = effect === 'condense';
|
|
1056
|
+
const hasFade = effect === 'fade';
|
|
1082
1057
|
this.destroyCollapsibleHeader();
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1058
|
+
const appRootSelector = index.config.get('appRootSelector', 'ion-app');
|
|
1059
|
+
const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
|
|
1060
|
+
const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
|
|
1061
|
+
if (hasHide && contentEl) {
|
|
1062
|
+
this.activeEffect = effect;
|
|
1063
|
+
await this.setupScrollEffectHide(contentEl);
|
|
1064
|
+
return;
|
|
1065
|
+
}
|
|
1066
|
+
// condense/fade via the deprecated `collapse` prop are iOS-only.
|
|
1067
|
+
// condense/fade via the new `scrollEffect` prop work in all themes.
|
|
1068
|
+
const isModeRestricted = scrollEffect === undefined && ionicGlobal.getIonTheme(this) !== 'ios';
|
|
1069
|
+
if (hasCondense && !isModeRestricted) {
|
|
1086
1070
|
// Cloned elements are always needed in iOS transition
|
|
1087
1071
|
index.writeTask(() => {
|
|
1088
1072
|
const title = cloneElement('ion-title');
|
|
1089
1073
|
title.size = 'large';
|
|
1090
1074
|
cloneElement('ion-back-button');
|
|
1091
1075
|
});
|
|
1092
|
-
await this.setupCondenseHeader(contentEl, pageEl);
|
|
1076
|
+
const didSetup = await this.setupCondenseHeader(contentEl, pageEl);
|
|
1077
|
+
if (didSetup) {
|
|
1078
|
+
this.activeEffect = effect;
|
|
1079
|
+
}
|
|
1093
1080
|
}
|
|
1094
|
-
else if (hasFade) {
|
|
1095
|
-
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
1096
|
-
const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
|
|
1081
|
+
else if (hasFade && !isModeRestricted) {
|
|
1097
1082
|
if (!contentEl) {
|
|
1098
1083
|
index$1.printIonContentErrorMsg(this.el);
|
|
1099
1084
|
return;
|
|
1100
1085
|
}
|
|
1101
|
-
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
|
|
1086
|
+
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"],ion-header[scroll-effect="condense"]');
|
|
1087
|
+
this.activeEffect = effect;
|
|
1102
1088
|
await this.setupFadeHeader(contentEl, condenseHeader);
|
|
1103
1089
|
}
|
|
1104
1090
|
}
|
|
1105
1091
|
destroyCollapsibleHeader() {
|
|
1092
|
+
this.activeEffect = undefined;
|
|
1093
|
+
this.fadeCondenseSetupId++;
|
|
1094
|
+
this.scrollHideCtrlPromise = null;
|
|
1095
|
+
if (this.scrollHideCtrl) {
|
|
1096
|
+
this.scrollHideCtrl.destroy();
|
|
1097
|
+
this.scrollHideCtrl = undefined;
|
|
1098
|
+
}
|
|
1106
1099
|
if (this.intersectionObserver) {
|
|
1107
1100
|
this.intersectionObserver.disconnect();
|
|
1108
1101
|
this.intersectionObserver = undefined;
|
|
@@ -1119,21 +1112,40 @@ const Header = class {
|
|
|
1119
1112
|
async setupCondenseHeader(contentEl, pageEl) {
|
|
1120
1113
|
if (!contentEl || !pageEl) {
|
|
1121
1114
|
index$1.printIonContentErrorMsg(this.el);
|
|
1122
|
-
return;
|
|
1115
|
+
return false;
|
|
1123
1116
|
}
|
|
1124
1117
|
if (typeof IntersectionObserver === 'undefined') {
|
|
1125
|
-
return;
|
|
1118
|
+
return false;
|
|
1119
|
+
}
|
|
1120
|
+
const setupId = ++this.fadeCondenseSetupId;
|
|
1121
|
+
const scrollEl = await index$1.getScrollElement(contentEl);
|
|
1122
|
+
if (this.fadeCondenseSetupId !== setupId) {
|
|
1123
|
+
return false;
|
|
1124
|
+
}
|
|
1125
|
+
this.scrollEl = scrollEl;
|
|
1126
|
+
/**
|
|
1127
|
+
* The condense effect requires an ion-title with size="large"
|
|
1128
|
+
* in the condense header. Without it, there is nothing to
|
|
1129
|
+
* collapse into the main header toolbar.
|
|
1130
|
+
*/
|
|
1131
|
+
const hasLargeTitle = this.el.querySelector('ion-title[size="large"]') !== null;
|
|
1132
|
+
if (!hasLargeTitle) {
|
|
1133
|
+
index.printIonWarning('[ion-header] - The condense scroll effect requires an <ion-title size="large"> in the condense header.', this.el);
|
|
1134
|
+
return false;
|
|
1126
1135
|
}
|
|
1127
|
-
this.scrollEl = await index$1.getScrollElement(contentEl);
|
|
1128
1136
|
const headers = pageEl.querySelectorAll('ion-header');
|
|
1129
|
-
this.collapsibleMainHeader = Array.from(headers).find((header) =>
|
|
1137
|
+
this.collapsibleMainHeader = Array.from(headers).find((header) => {
|
|
1138
|
+
var _a;
|
|
1139
|
+
const effect = (_a = header.scrollEffect) !== null && _a !== void 0 ? _a : header.collapse;
|
|
1140
|
+
return effect !== 'condense';
|
|
1141
|
+
});
|
|
1130
1142
|
if (!this.collapsibleMainHeader) {
|
|
1131
|
-
return;
|
|
1143
|
+
return false;
|
|
1132
1144
|
}
|
|
1133
1145
|
const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);
|
|
1134
1146
|
const scrollHeaderIndex = createHeaderIndex(this.el);
|
|
1135
1147
|
if (!mainHeaderIndex || !scrollHeaderIndex) {
|
|
1136
|
-
return;
|
|
1148
|
+
return false;
|
|
1137
1149
|
}
|
|
1138
1150
|
setHeaderActive(mainHeaderIndex, false);
|
|
1139
1151
|
setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);
|
|
@@ -1165,31 +1177,45 @@ const Header = class {
|
|
|
1165
1177
|
this.collapsibleMainHeader.classList.add('header-collapse-main');
|
|
1166
1178
|
}
|
|
1167
1179
|
});
|
|
1180
|
+
return true;
|
|
1168
1181
|
}
|
|
1169
1182
|
render() {
|
|
1170
|
-
const { translucent, inheritedAttributes } = this;
|
|
1171
|
-
const
|
|
1172
|
-
const
|
|
1173
|
-
|
|
1183
|
+
const { translucent, inheritedAttributes, divider, scrollEffect, collapse } = this;
|
|
1184
|
+
const theme$1 = ionicGlobal.getIonTheme(this);
|
|
1185
|
+
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
1186
|
+
// condense/fade via the deprecated `collapse` prop are iOS-only.
|
|
1187
|
+
const isModeRestricted = scrollEffect === undefined && theme$1 !== 'ios';
|
|
1188
|
+
const hasHide = effect === 'hide';
|
|
1189
|
+
const hasCondense = effect === 'condense' && !isModeRestricted && this.el.querySelector('ion-title[size="large"]') !== null;
|
|
1190
|
+
const hasFade = effect === 'fade' && !isModeRestricted;
|
|
1191
|
+
// The condense header should be hidden when
|
|
1192
|
+
// - deprecated collapse prop is used on non-iOS (mode restricted), or
|
|
1193
|
+
// - scrollEffect="condense" is set but no ion-title[size="large"] is present
|
|
1194
|
+
const isHiddenCondense = effect === 'condense' && !hasCondense;
|
|
1174
1195
|
// banner role must be at top level, so remove role if inside a menu
|
|
1175
|
-
const roleType = getRoleType(theme.hostContext('ion-menu', this.el)
|
|
1176
|
-
return (index.h(index.Host, Object.assign({ key: '
|
|
1177
|
-
[
|
|
1196
|
+
const roleType = isHiddenCondense ? 'none' : getRoleType(theme.hostContext('ion-menu', this.el));
|
|
1197
|
+
return (index.h(index.Host, Object.assign({ key: '09f60ca014bb7b3a85d3c0a94e7989d5dbc43f46', role: roleType, class: {
|
|
1198
|
+
[theme$1]: true,
|
|
1178
1199
|
// Used internally for styling
|
|
1179
|
-
[`header-${
|
|
1200
|
+
[`header-${theme$1}`]: true,
|
|
1180
1201
|
[`header-translucent`]: this.translucent,
|
|
1181
|
-
[
|
|
1182
|
-
[
|
|
1183
|
-
|
|
1202
|
+
['header-collapse-condense']: hasCondense,
|
|
1203
|
+
['header-collapse-condense-hidden']: isHiddenCondense,
|
|
1204
|
+
['header-collapse-fade']: hasFade,
|
|
1205
|
+
[`header-translucent-${theme$1}`]: this.translucent,
|
|
1206
|
+
['header-divider']: divider,
|
|
1207
|
+
'header-scroll-effect-hide': hasHide,
|
|
1208
|
+
} }, inheritedAttributes), theme$1 !== 'md' && translucent && index.h("div", { key: 'fd5ff245ae0166e5e1d50936cacc98c90625db48', class: "header-background" }), index.h("slot", { key: '1baa31af87b9eb6406a21073ec65afa191dfbb3d' })));
|
|
1184
1209
|
}
|
|
1185
1210
|
get el() { return index.getElement(this); }
|
|
1186
1211
|
};
|
|
1187
1212
|
Header.style = {
|
|
1213
|
+
ionic: headerIonicCss(),
|
|
1188
1214
|
ios: headerIosCss(),
|
|
1189
1215
|
md: headerMdCss()
|
|
1190
1216
|
};
|
|
1191
1217
|
|
|
1192
|
-
const routerOutletCss = () => `:host{
|
|
1218
|
+
const routerOutletCss = () => `:host{right:0;left:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
|
|
1193
1219
|
|
|
1194
1220
|
const RouterOutlet = class {
|
|
1195
1221
|
constructor(hostRef) {
|
|
@@ -1200,7 +1226,7 @@ const RouterOutlet = class {
|
|
|
1200
1226
|
this.lockController = lockController.createLockController();
|
|
1201
1227
|
this.gestureOrAnimationInProgress = false;
|
|
1202
1228
|
/**
|
|
1203
|
-
* The mode determines
|
|
1229
|
+
* The mode determines the platform behaviors of the component.
|
|
1204
1230
|
*/
|
|
1205
1231
|
this.mode = ionicGlobal.getIonMode(this);
|
|
1206
1232
|
/**
|
|
@@ -1220,7 +1246,7 @@ const RouterOutlet = class {
|
|
|
1220
1246
|
this.swipeHandler.onStart();
|
|
1221
1247
|
}
|
|
1222
1248
|
};
|
|
1223
|
-
this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-
|
|
1249
|
+
this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-CvZt_4YX.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) => {
|
|
1224
1250
|
if (this.ani) {
|
|
1225
1251
|
this.ani.onFinish(() => {
|
|
1226
1252
|
this.gestureOrAnimationInProgress = false;
|
|
@@ -1366,7 +1392,7 @@ const RouterOutlet = class {
|
|
|
1366
1392
|
return true;
|
|
1367
1393
|
}
|
|
1368
1394
|
render() {
|
|
1369
|
-
return index.h("slot", { key: '
|
|
1395
|
+
return index.h("slot", { key: '56e3d06ed939755796058e30ef19fbc7f7cb490d' });
|
|
1370
1396
|
}
|
|
1371
1397
|
get el() { return index.getElement(this); }
|
|
1372
1398
|
static get watchers() { return {
|
|
@@ -1377,9 +1403,11 @@ const RouterOutlet = class {
|
|
|
1377
1403
|
};
|
|
1378
1404
|
RouterOutlet.style = routerOutletCss();
|
|
1379
1405
|
|
|
1380
|
-
const
|
|
1406
|
+
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}`;
|
|
1407
|
+
|
|
1408
|
+
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)}}`;
|
|
1381
1409
|
|
|
1382
|
-
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)}
|
|
1410
|
+
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}`;
|
|
1383
1411
|
|
|
1384
1412
|
const ToolbarTitle = class {
|
|
1385
1413
|
constructor(hostRef) {
|
|
@@ -1402,13 +1430,13 @@ const ToolbarTitle = class {
|
|
|
1402
1430
|
return this.size !== undefined ? this.size : 'default';
|
|
1403
1431
|
}
|
|
1404
1432
|
render() {
|
|
1405
|
-
const
|
|
1433
|
+
const theme$1 = ionicGlobal.getIonTheme(this);
|
|
1406
1434
|
const size = this.getSize();
|
|
1407
|
-
return (index.h(index.Host, { key: '
|
|
1408
|
-
[
|
|
1435
|
+
return (index.h(index.Host, { key: 'd64e86bed418cba707d4a26c9274f18ed06c0e9e', class: theme.createColorClasses(this.color, {
|
|
1436
|
+
[theme$1]: true,
|
|
1409
1437
|
[`title-${size}`]: true,
|
|
1410
1438
|
'title-rtl': document.dir === 'rtl',
|
|
1411
|
-
}) }, index.h("div", { key: '
|
|
1439
|
+
}) }, index.h("div", { key: '386a71e974cde0bfbf5b655d69ed5f718de8ce48', class: "toolbar-title" }, index.h("slot", { key: '8aa804c9e1b11574a42268805d3117a085e699b4' }))));
|
|
1412
1440
|
}
|
|
1413
1441
|
get el() { return index.getElement(this); }
|
|
1414
1442
|
static get watchers() { return {
|
|
@@ -1418,18 +1446,29 @@ const ToolbarTitle = class {
|
|
|
1418
1446
|
}; }
|
|
1419
1447
|
};
|
|
1420
1448
|
ToolbarTitle.style = {
|
|
1449
|
+
ionic: titleIonicCss(),
|
|
1421
1450
|
ios: titleIosCss(),
|
|
1422
1451
|
md: titleMdCss()
|
|
1423
1452
|
};
|
|
1424
1453
|
|
|
1425
|
-
const
|
|
1454
|
+
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}`;
|
|
1426
1455
|
|
|
1427
|
-
const
|
|
1456
|
+
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%}`;
|
|
1457
|
+
|
|
1458
|
+
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}`;
|
|
1428
1459
|
|
|
1429
1460
|
const Toolbar = class {
|
|
1430
1461
|
constructor(hostRef) {
|
|
1431
1462
|
index.registerInstance(this, hostRef);
|
|
1432
1463
|
this.childrenStyles = new Map();
|
|
1464
|
+
this.slotClasses = [
|
|
1465
|
+
'has-start-content',
|
|
1466
|
+
'has-end-content',
|
|
1467
|
+
'has-primary-content',
|
|
1468
|
+
'has-secondary-content',
|
|
1469
|
+
];
|
|
1470
|
+
this.showClasses = ['show-start', 'show-end', 'show-primary', 'show-secondary'];
|
|
1471
|
+
this.slotSizeVars = ['--start-end-size', '--primary-secondary-size'];
|
|
1433
1472
|
}
|
|
1434
1473
|
componentWillLoad() {
|
|
1435
1474
|
const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));
|
|
@@ -1446,6 +1485,173 @@ const Toolbar = class {
|
|
|
1446
1485
|
if (lastButtons) {
|
|
1447
1486
|
lastButtons.classList.add('buttons-last-slot');
|
|
1448
1487
|
}
|
|
1488
|
+
this.updateSlotClasses();
|
|
1489
|
+
}
|
|
1490
|
+
componentDidLoad() {
|
|
1491
|
+
this.updateSlotClasses();
|
|
1492
|
+
this.updateSlotWidths();
|
|
1493
|
+
}
|
|
1494
|
+
titlePlacementChanged() {
|
|
1495
|
+
this.updateSlotClasses();
|
|
1496
|
+
}
|
|
1497
|
+
/**
|
|
1498
|
+
* Gets the title placement.
|
|
1499
|
+
* Returns the title placement if it is set, otherwise returns `"center"`
|
|
1500
|
+
* for `ionic` and `ios`, and `"start"` for `md`.
|
|
1501
|
+
*/
|
|
1502
|
+
getTitlePlacement() {
|
|
1503
|
+
if (this.titlePlacement !== undefined) {
|
|
1504
|
+
return this.titlePlacement;
|
|
1505
|
+
}
|
|
1506
|
+
return ionicGlobal.getIonTheme(this) === 'ionic' || ionicGlobal.getIonTheme(this) === 'ios' ? 'center' : 'start';
|
|
1507
|
+
}
|
|
1508
|
+
/**
|
|
1509
|
+
* Updates the CSS custom properties for slot widths
|
|
1510
|
+
* This ensures that slots shown by their met conditions
|
|
1511
|
+
* have a minimum width matching their required slot
|
|
1512
|
+
*/
|
|
1513
|
+
updateSlotWidths(tries = 0) {
|
|
1514
|
+
// Set timeout to try to execute after everything is rendered
|
|
1515
|
+
setTimeout(() => {
|
|
1516
|
+
// Attempt to measure and update
|
|
1517
|
+
const success = this.measureAndUpdateSlots();
|
|
1518
|
+
// If not all measurements were successful, try again in 100 ms
|
|
1519
|
+
// cap recursion at 5 tries for safety
|
|
1520
|
+
if (!success && tries < 5) {
|
|
1521
|
+
setTimeout(() => {
|
|
1522
|
+
this.updateSlotWidths(tries + 1);
|
|
1523
|
+
}, 100);
|
|
1524
|
+
}
|
|
1525
|
+
});
|
|
1526
|
+
}
|
|
1527
|
+
/**
|
|
1528
|
+
* Measure the widths of the slots and update the CSS custom properties
|
|
1529
|
+
* for the minimum width of each pair of slots based on the largest width in each pair.
|
|
1530
|
+
* Returns whether we successfully measured all of the slots we expect to have content.
|
|
1531
|
+
* If not, the content probably hasn't rendered yet and we need to try again.
|
|
1532
|
+
*/
|
|
1533
|
+
measureAndUpdateSlots() {
|
|
1534
|
+
// Define the relationship between slots based on the conditions array
|
|
1535
|
+
// Group slots that should have the same width
|
|
1536
|
+
const slotPairs = [
|
|
1537
|
+
{ name: 'start-end', slots: ['start', 'end'] },
|
|
1538
|
+
{ name: 'primary-secondary', slots: ['primary', 'secondary'] },
|
|
1539
|
+
];
|
|
1540
|
+
// First, measure all slot widths
|
|
1541
|
+
const slotWidths = new Map();
|
|
1542
|
+
let allMeasurementsSuccessful = true;
|
|
1543
|
+
// Measure all slots with content
|
|
1544
|
+
const slots = ['start', 'end', 'primary', 'secondary'];
|
|
1545
|
+
slots.forEach((slot) => {
|
|
1546
|
+
var _a;
|
|
1547
|
+
if (this.el.classList.contains(`has-${slot}-content`)) {
|
|
1548
|
+
const slotElement = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slot}"]`);
|
|
1549
|
+
if (slotElement) {
|
|
1550
|
+
// Check if the slot contains an img or ion-img
|
|
1551
|
+
const assignedElements = slotElement.assignedElements({ flatten: true });
|
|
1552
|
+
const hasImg = assignedElements.some((el) => {
|
|
1553
|
+
if (el.tagName === 'IMG' || el.tagName === 'ION-IMG') {
|
|
1554
|
+
return true;
|
|
1555
|
+
}
|
|
1556
|
+
// Check for nested images
|
|
1557
|
+
return el.querySelector('img, ion-img');
|
|
1558
|
+
});
|
|
1559
|
+
// Temporarily allow slot to size to content by setting flex-basis
|
|
1560
|
+
// to 'auto'. This ensures that slotted images can render at their
|
|
1561
|
+
// intrinsic width for measurement.
|
|
1562
|
+
if (hasImg) {
|
|
1563
|
+
const { name } = slotPairs.find((pair) => pair.slots.includes(slot));
|
|
1564
|
+
this.el.style.setProperty(`--${name}-size`, 'auto');
|
|
1565
|
+
}
|
|
1566
|
+
const width = slotElement.offsetWidth;
|
|
1567
|
+
if (width > 0) {
|
|
1568
|
+
slotWidths.set(slot, width);
|
|
1569
|
+
}
|
|
1570
|
+
else {
|
|
1571
|
+
allMeasurementsSuccessful = false;
|
|
1572
|
+
}
|
|
1573
|
+
}
|
|
1574
|
+
}
|
|
1575
|
+
});
|
|
1576
|
+
// Then set the CSS custom properties based on the largest width in each pair
|
|
1577
|
+
slotPairs.forEach(({ name, slots }) => {
|
|
1578
|
+
// Find the maximum width among the slots in this pair
|
|
1579
|
+
let maxWidth = 0;
|
|
1580
|
+
let hasAnyContent = false;
|
|
1581
|
+
slots.forEach((slot) => {
|
|
1582
|
+
var _a;
|
|
1583
|
+
if (slotWidths.has(slot)) {
|
|
1584
|
+
hasAnyContent = true;
|
|
1585
|
+
maxWidth = Math.max(maxWidth, (_a = slotWidths.get(slot)) !== null && _a !== void 0 ? _a : 0);
|
|
1586
|
+
}
|
|
1587
|
+
});
|
|
1588
|
+
// If at least one slot in the pair has content, set the min-width for the pair
|
|
1589
|
+
if (hasAnyContent && maxWidth > 0) {
|
|
1590
|
+
// Set a single CSS variable for the pair
|
|
1591
|
+
this.el.style.setProperty(`--${name}-size`, `${maxWidth}px`);
|
|
1592
|
+
}
|
|
1593
|
+
});
|
|
1594
|
+
return allMeasurementsSuccessful;
|
|
1595
|
+
}
|
|
1596
|
+
/**
|
|
1597
|
+
* Removes all slot visibility classes and slot width CSS variables.
|
|
1598
|
+
*/
|
|
1599
|
+
removeSlotClasses() {
|
|
1600
|
+
this.el.classList.remove(...this.slotClasses, ...this.showClasses);
|
|
1601
|
+
this.slotSizeVars.forEach((cssVar) => this.el.style.removeProperty(cssVar));
|
|
1602
|
+
}
|
|
1603
|
+
updateSlotClasses() {
|
|
1604
|
+
const titlePlacement = this.getTitlePlacement();
|
|
1605
|
+
if (titlePlacement !== 'center') {
|
|
1606
|
+
this.removeSlotClasses();
|
|
1607
|
+
return;
|
|
1608
|
+
}
|
|
1609
|
+
// Check if slots have content
|
|
1610
|
+
const slots = ['start', 'end', 'primary', 'secondary'];
|
|
1611
|
+
const classesToAdd = [];
|
|
1612
|
+
const classesToRemove = [];
|
|
1613
|
+
slots.forEach((slot) => {
|
|
1614
|
+
const slotHasContent = this.hasSlotContent(slot);
|
|
1615
|
+
const slotClass = `has-${slot}-content`;
|
|
1616
|
+
if (slotHasContent) {
|
|
1617
|
+
classesToAdd.push(slotClass);
|
|
1618
|
+
}
|
|
1619
|
+
else {
|
|
1620
|
+
classesToRemove.push(slotClass);
|
|
1621
|
+
}
|
|
1622
|
+
});
|
|
1623
|
+
// Force visibilities in certain conditions. This works by adding a class to the toolbar
|
|
1624
|
+
// named `show-{slot}`. This class will be added if the toolbar has the required slots
|
|
1625
|
+
// and does not have any of the excluded slots, otherwise it will be removed.
|
|
1626
|
+
// This is useful to enforce centering of the toolbar content when there are different amounts
|
|
1627
|
+
// of slots on either side of the toolbar.
|
|
1628
|
+
const conditions = [
|
|
1629
|
+
{ name: 'end', requiredSlots: ['start'], excludeSlots: ['end', 'primary'] },
|
|
1630
|
+
{ name: 'start', requiredSlots: ['end'], excludeSlots: ['start', 'secondary'] },
|
|
1631
|
+
{ name: 'secondary', requiredSlots: ['primary'], excludeSlots: ['secondary', 'start'] },
|
|
1632
|
+
{ name: 'primary', requiredSlots: ['secondary'], excludeSlots: ['primary', 'end'] },
|
|
1633
|
+
];
|
|
1634
|
+
conditions.forEach((condition) => {
|
|
1635
|
+
const hasRequiredSlots = condition.requiredSlots.every((slot) => classesToAdd.includes(`has-${slot}-content`));
|
|
1636
|
+
const hasExcludedSlots = condition.excludeSlots.some((slot) => classesToAdd.includes(`has-${slot}-content`));
|
|
1637
|
+
const className = `show-${condition.name}`;
|
|
1638
|
+
if (hasRequiredSlots && !hasExcludedSlots) {
|
|
1639
|
+
classesToAdd.push(className);
|
|
1640
|
+
}
|
|
1641
|
+
else {
|
|
1642
|
+
classesToRemove.push(className);
|
|
1643
|
+
}
|
|
1644
|
+
});
|
|
1645
|
+
// Add classes to the toolbar element
|
|
1646
|
+
this.el.classList.add(...classesToAdd);
|
|
1647
|
+
this.el.classList.remove(...classesToRemove);
|
|
1648
|
+
// Update slot widths after classes have been updated
|
|
1649
|
+
this.updateSlotWidths();
|
|
1650
|
+
}
|
|
1651
|
+
hasSlotContent(slotName) {
|
|
1652
|
+
var _a;
|
|
1653
|
+
const slotNode = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slotName}"]`);
|
|
1654
|
+
return !!slotNode && slotNode.assignedNodes().length > 0;
|
|
1449
1655
|
}
|
|
1450
1656
|
childrenStyle(ev) {
|
|
1451
1657
|
ev.stopPropagation();
|
|
@@ -1470,19 +1676,27 @@ const Toolbar = class {
|
|
|
1470
1676
|
}
|
|
1471
1677
|
}
|
|
1472
1678
|
render() {
|
|
1473
|
-
const
|
|
1679
|
+
const theme$1 = ionicGlobal.getIonTheme(this);
|
|
1474
1680
|
const childStyles = {};
|
|
1475
|
-
this.childrenStyles.forEach((
|
|
1476
|
-
Object.assign(childStyles,
|
|
1681
|
+
this.childrenStyles.forEach((style) => {
|
|
1682
|
+
Object.assign(childStyles, style);
|
|
1477
1683
|
});
|
|
1478
|
-
|
|
1479
|
-
|
|
1684
|
+
const titlePlacement = this.getTitlePlacement();
|
|
1685
|
+
return (index.h(index.Host, { key: 'bcb621674157410d7eaeb006779bdd677346587e', class: Object.assign(Object.assign({}, theme.createColorClasses(this.color, {
|
|
1686
|
+
[theme$1]: true,
|
|
1480
1687
|
'in-toolbar': theme.hostContext('ion-toolbar', this.el),
|
|
1481
|
-
|
|
1688
|
+
[`toolbar-title-placement-${titlePlacement}`]: true,
|
|
1689
|
+
})), 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 }))));
|
|
1482
1690
|
}
|
|
1483
1691
|
get el() { return index.getElement(this); }
|
|
1692
|
+
static get watchers() { return {
|
|
1693
|
+
"titlePlacement": [{
|
|
1694
|
+
"titlePlacementChanged": 0
|
|
1695
|
+
}]
|
|
1696
|
+
}; }
|
|
1484
1697
|
};
|
|
1485
1698
|
Toolbar.style = {
|
|
1699
|
+
ionic: toolbarIonicCss(),
|
|
1486
1700
|
ios: toolbarIosCss(),
|
|
1487
1701
|
md: toolbarMdCss()
|
|
1488
1702
|
};
|