@ionic/core 8.8.20-dev.11787158518.168a2fea → 8.8.20-dev.11789504012.1a675914
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.d.ts +11 -0
- package/components/ion-picker-legacy-column.js +4 -0
- package/components/ion-picker-legacy.d.ts +11 -0
- package/components/ion-picker-legacy.js +4 -0
- 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-0MMiHJhx.js +4 -0
- package/components/p-0rXxxCTt.js +4 -0
- package/components/{p-DwpKZ6rl.js → p-B2SvA6NE.js} +1 -1
- package/components/p-B4GJERAm.js +4 -0
- package/components/p-B9_sPaDw.js +4 -0
- package/components/p-BE21dB_a.js +4 -0
- package/components/p-BJyeT56g.js +4 -0
- package/components/p-BTBa_wH7.js +4 -0
- package/components/p-BTEOs1at.js +4 -0
- package/components/p-BU8Blvqg.js +4 -0
- package/components/p-BXXTyrCp.js +4 -0
- package/components/p-BXjGM4gW.js +4 -0
- package/components/p-BXuZo5-p.js +4 -0
- package/components/p-BYRVyMu9.js +4 -0
- package/components/{p-ryyf_ItD.js → p-BZwQa9ey.js} +1 -1
- package/components/p-BZxBDeEU.js +4 -0
- package/components/p-BcWO94Sl.js +4 -0
- package/components/p-BjW8SOqw.js +4 -0
- package/components/p-Br6q6Rgq.js +4 -0
- package/components/p-BwKpO3Is.js +4 -0
- package/components/p-BwzRqsq1.js +4 -0
- package/components/p-C-cw-bM-.js +4 -0
- package/components/p-C0K6CGg9.js +4 -0
- package/components/p-C2J-Hvv3.js +4 -0
- package/components/p-C3ydXg9O.js +4 -0
- package/components/p-C5Bnq_Hm.js +4 -0
- package/components/p-C5JYXyPD.js +4 -0
- package/components/p-C898H5L0.js +4 -0
- package/components/p-C8kcgEG7.js +4 -0
- package/components/p-CEz0vNHD.js +4 -0
- package/components/p-CH8ypgvS.js +4 -0
- package/components/{p-CMLAwl_N.js → p-CKLXmqy1.js} +1 -1
- package/components/p-CMtmHGrE.js +4 -0
- package/components/p-CNlz8OTE.js +4 -0
- package/components/p-CODBQrPj.js +4 -0
- package/components/p-CToV3-ig.js +4 -0
- package/components/p-CV7PNBGr.js +4 -0
- package/components/p-CVYFPBs-.js +4 -0
- package/components/p-CgbD1udy.js +4 -0
- package/components/p-CjlmHeGM.js +4 -0
- package/components/p-ClTdIlic.js +4 -0
- package/components/p-CstXr-x9.js +4 -0
- package/components/{p-DzRT60Tw.js → p-Cu8FoYIJ.js} +1 -1
- package/components/p-CxhjkdQ_.js +4 -0
- package/components/p-D0Iqw6OZ.js +4 -0
- package/components/p-D12Xsfh7.js +4 -0
- package/components/p-DExJ63jR.js +4 -0
- package/components/p-DHvfufkW.js +4 -0
- package/components/p-DRUGmlKi.js +4 -0
- package/components/p-DYq-5riI.js +4 -0
- package/components/p-DaJxRxSQ.js +4 -0
- package/components/p-Db3A3kHi.js +4 -0
- package/components/p-Df6AAcu8.js +4 -0
- package/components/p-Dh1f5tAK.js +4 -0
- package/components/{p-63OhffQv.js → p-Di8NbWfs.js} +1 -1
- package/components/p-DqkLOArC.js +4 -0
- package/components/p-DriGEn08.js +4 -0
- package/components/p-DylrHLJF.js +4 -0
- package/components/p-WeNgVmOy.js +4 -0
- package/components/p-Wn4ujuPW.js +4 -0
- package/components/p-X6YgGSBf.js +4 -0
- package/components/p-dLA3JnNJ.js +4 -0
- package/components/p-eRqVSlkn.js +4 -0
- package/components/p-fUXE2zLc.js +4 -0
- package/components/p-o8OKV5aD.js +4 -0
- package/components/p-pztWcmzj.js +4 -0
- package/components/p-vXpMhGrs.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-C0mOHzej.js → animation-CxRPIayb.js} +6 -6
- package/dist/cjs/{app-globals-BREG4twP.js → app-globals-BwvlV6g7.js} +1 -1
- package/dist/cjs/{button-active-CVMevT9a.js → button-active-qCQDwE2m.js} +3 -3
- package/dist/cjs/{capacitor-DmA66EwP.js → capacitor-CRl0exFC.js} +3 -3
- package/dist/cjs/clear-button-press-controller-C7B9kyMa.js +45 -0
- package/dist/cjs/{config-CjUbvdPW.js → config-DWdFbSNK.js} +4 -5
- package/dist/cjs/{dir-zwDPRE5K.js → dir-DD0jPVH3.js} +3 -2
- package/dist/cjs/{focus-visible-CCvKiLh3.js → focus-visible-BIj-I3-C.js} +24 -0
- package/dist/cjs/{format-pp0Du3K-.js → format-COAsdjOc.js} +30 -40
- package/dist/cjs/{framework-delegate-Dfo5XsGv.js → framework-delegate-IvkF1VuM.js} +10 -6
- package/dist/cjs/{gesture-controller-BDUH7687.js → gesture-controller-dtqlP_q4.js} +8 -15
- package/dist/cjs/{haptic-Ch-X4gRx.js → haptic-DG25gZzb.js} +4 -3
- package/dist/cjs/{helpers-YPQybDph.js → helpers-Dhimwhpn.js} +74 -7
- package/dist/cjs/{index-DwlRtFZe.js → index-BJ2-LydH.js} +3 -9
- package/dist/cjs/{index-zVCah4Uz.js → index-Bsq0SbXc.js} +2 -2
- package/dist/cjs/{index-uvry__L4.js → index-C1knGA9x.js} +65 -33
- package/dist/cjs/{index-wOmugbdg.js → index-CxDnX7hd.js} +2 -0
- package/dist/cjs/{index-DXsPSne6.js → index-DhDV4RxJ.js} +16 -15
- package/dist/cjs/{index-BLdJCcJY.js → index-DuleInoh.js} +5 -5
- package/dist/cjs/{index-B7zJsYWS.js → index-YYUVCfP-.js} +3 -3
- package/dist/cjs/{index-DDg31ZF5.js → index-yon1HGB7.js} +10 -9
- package/dist/cjs/index.cjs.js +18 -18
- package/dist/cjs/{input-shims-Cbu1fcye.js → input-shims-BgJcHtqI.js} +23 -20
- package/dist/cjs/input.utils--RmR5lVe.js +150 -0
- package/dist/cjs/ion-accordion_2.cjs.entry.js +376 -376
- package/dist/cjs/ion-action-sheet.cjs.entry.js +87 -179
- package/dist/cjs/ion-alert.cjs.entry.js +126 -251
- package/dist/cjs/ion-app_8.cjs.entry.js +608 -461
- package/dist/cjs/ion-avatar_3.cjs.entry.js +125 -19
- package/dist/cjs/ion-back-button.cjs.entry.js +49 -65
- package/dist/cjs/ion-backdrop.cjs.entry.js +22 -23
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +157 -210
- package/dist/cjs/ion-button_2.cjs.entry.js +118 -153
- package/dist/cjs/ion-card_5.cjs.entry.js +80 -110
- package/dist/cjs/ion-checkbox.cjs.entry.js +134 -160
- package/dist/cjs/ion-chip.cjs.entry.js +56 -21
- package/dist/cjs/ion-col_3.cjs.entry.js +61 -186
- package/dist/cjs/ion-datetime-button.cjs.entry.js +248 -256
- package/dist/cjs/ion-datetime_3.cjs.entry.js +3210 -0
- package/dist/cjs/ion-divider.cjs.entry.js +51 -0
- package/dist/cjs/ion-fab_3.cjs.entry.js +109 -155
- package/dist/cjs/ion-gallery-item.cjs.entry.js +59 -0
- package/dist/cjs/ion-gallery.cjs.entry.js +608 -0
- package/dist/cjs/ion-img.cjs.entry.js +17 -35
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +157 -109
- package/dist/cjs/ion-input-otp.cjs.entry.js +437 -435
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +54 -40
- package/dist/cjs/ion-input.cjs.entry.js +305 -351
- package/dist/cjs/ion-item-option_3.cjs.entry.js +512 -137
- package/dist/cjs/ion-item_8.cjs.entry.js +186 -218
- package/dist/cjs/ion-loading.cjs.entry.js +69 -152
- package/dist/cjs/ion-menu_3.cjs.entry.js +136 -182
- package/dist/cjs/ion-modal.cjs.entry.js +501 -571
- package/dist/cjs/ion-nav_2.cjs.entry.js +164 -104
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +40 -40
- package/dist/cjs/ion-picker-column.cjs.entry.js +410 -422
- package/dist/cjs/ion-picker.cjs.entry.js +401 -406
- package/dist/cjs/ion-popover.cjs.entry.js +212 -324
- package/dist/cjs/ion-progress-bar.cjs.entry.js +48 -36
- package/dist/cjs/ion-radio_2.cjs.entry.js +162 -217
- package/dist/cjs/ion-range.cjs.entry.js +251 -309
- package/dist/cjs/ion-refresher_2.cjs.entry.js +127 -175
- package/dist/cjs/ion-reorder_2.cjs.entry.js +47 -60
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +26 -18
- package/dist/cjs/ion-route_4.cjs.entry.js +76 -179
- package/dist/cjs/ion-searchbar.cjs.entry.js +305 -308
- package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment-view.cjs.entry.js +27 -28
- package/dist/cjs/ion-segment_2.cjs.entry.js +141 -177
- package/dist/cjs/ion-select-modal.cjs.entry.js +71 -50
- package/dist/cjs/ion-select_3.cjs.entry.js +416 -507
- package/dist/cjs/ion-spinner.cjs.entry.js +36 -28
- package/dist/cjs/ion-split-pane.cjs.entry.js +25 -34
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +180 -117
- package/dist/cjs/ion-tab_2.cjs.entry.js +30 -55
- package/dist/cjs/ion-text.cjs.entry.js +7 -13
- package/dist/cjs/ion-textarea.cjs.entry.js +310 -303
- package/dist/cjs/ion-toast.cjs.entry.js +170 -265
- package/dist/cjs/ion-toggle.cjs.entry.js +172 -184
- package/dist/cjs/ionic-global-DYLhJaw7.js +519 -0
- package/dist/cjs/ionic.cjs.js +4 -4
- package/dist/cjs/{ios.transition-zTmJz8T-.js → ios.transition-Blgf-vZU.js} +21 -15
- package/dist/cjs/{item-multiple-inputs-BdYSbfKN.js → item-multiple-inputs-DKn76MYO.js} +1 -1
- package/dist/cjs/{keyboard-cHxZlTyz.js → keyboard-BgioTbwQ.js} +3 -3
- package/dist/cjs/{keyboard-Cix5TVkD.js → keyboard-Otnp8OQI.js} +5 -4
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-nb_4pUXu.js → md.transition-ClgvbGfq.js} +11 -9
- package/dist/cjs/notch-controller-0hkmmSGo.js +155 -0
- package/dist/cjs/{overlay-control-label-D2sdL2O8.js → overlay-control-label-DnRLQR1t.js} +13 -11
- package/dist/cjs/{overlays-KaNVDNqC.js → overlays-Bxjqh2m3.js} +336 -60
- package/dist/cjs/scroll-hide-controller-qWMU5yOk.js +345 -0
- package/dist/cjs/{select-option-render-pULCGldr.js → select-option-render-BqJEK1N1.js} +4 -3
- package/dist/cjs/{status-tap-o9IIymsP.js → status-tap-ClA8u57t.js} +5 -4
- package/dist/cjs/{swipe-back-B7X9VOlH.js → swipe-back-4vY7mi8i.js} +6 -5
- package/dist/cjs/{theme-Bw0rpaNN.js → theme-IlOsGAz7.js} +26 -7
- package/dist/cjs/validity-QmuwEptc.js +51 -0
- package/dist/collection/collection-manifest.json +13 -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 +331 -324
- 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 +69 -56
- 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 +184 -54
- package/dist/collection/components/action-sheet/action-sheet.js +76 -166
- package/dist/collection/components/action-sheet/action-sheet.md.css +179 -55
- package/dist/collection/components/action-sheet/test/basic/fixture.js +0 -3
- package/dist/collection/components/alert/alert.ionic.css +787 -0
- package/dist/collection/components/alert/alert.ios.css +247 -54
- package/dist/collection/components/alert/alert.js +113 -236
- package/dist/collection/components/alert/alert.md.css +243 -56
- package/dist/collection/components/app/app.js +15 -86
- 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 +45 -61
- 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 +26 -22
- 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 -15
- 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 +60 -99
- 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 +99 -112
- 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 +122 -157
- 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 +29 -21
- 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 +61 -63
- 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 +20 -21
- 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 -14
- 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 -14
- package/dist/collection/components/card-title/card-title.md.css +73 -0
- package/dist/collection/components/checkbox/checkbox.ionic.css +536 -0
- package/dist/collection/components/checkbox/checkbox.ios.css +246 -115
- package/dist/collection/components/checkbox/checkbox.js +172 -157
- package/dist/collection/components/checkbox/checkbox.md.css +247 -116
- 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 +116 -20
- 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 +212 -186
- package/dist/collection/components/content/content.css +47 -2
- package/dist/collection/components/content/content.js +78 -102
- package/dist/collection/components/datetime/datetime.ionic.css +703 -0
- package/dist/collection/components/datetime/datetime.ios.css +304 -148
- package/dist/collection/components/datetime/datetime.js +900 -1090
- package/dist/collection/components/datetime/datetime.md.css +294 -138
- package/dist/collection/components/datetime/utils/data.js +19 -18
- package/dist/collection/components/datetime/utils/format.js +11 -21
- package/dist/collection/components/datetime/utils/manipulation.js +8 -8
- package/dist/collection/components/datetime/utils/parse.js +10 -10
- package/dist/collection/components/datetime/utils/state.js +2 -8
- package/dist/collection/components/datetime/utils/validate.js +5 -4
- package/dist/collection/components/datetime-button/datetime-button.ios.css +6 -5
- package/dist/collection/components/datetime-button/datetime-button.js +246 -253
- package/dist/collection/components/datetime-button/datetime-button.md.css +6 -5
- 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 +22 -25
- package/dist/collection/components/fab-button/fab-button.ios.css +18 -6
- package/dist/collection/components/fab-button/fab-button.js +79 -117
- 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 +20 -15
- 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 +151 -65
- 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 +15 -9
- 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 +202 -70
- 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 +16 -34
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +164 -76
- 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 +19 -30
- 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 +247 -191
- package/dist/collection/components/input/input.js +333 -357
- package/dist/collection/components/input/input.md.css +234 -285
- 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 +437 -432
- 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 +51 -36
- 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 +98 -113
- 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 +21 -23
- 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 +92 -56
- 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 +20 -17
- 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 +441 -61
- 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 +15 -32
- 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 +55 -19
- 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 -18
- 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 +62 -143
- 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 +71 -108
- 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 +43 -38
- package/dist/collection/components/menu-button/menu-button.md.css +49 -15
- package/dist/collection/components/menu-toggle/menu-toggle.js +21 -25
- 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/ios.enter.js +1 -1
- package/dist/collection/components/modal/animations/md.enter.js +1 -1
- package/dist/collection/components/modal/animations/sheet.js +8 -2
- package/dist/collection/components/modal/gestures/sheet.js +86 -32
- package/dist/collection/components/modal/gestures/swipe-to-close.js +3 -15
- 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 +272 -404
- package/dist/collection/components/modal/modal.md.css +178 -70
- package/dist/collection/components/modal/safe-area-utils.js +7 -6
- package/dist/collection/components/modal/test/fixtures.js +0 -3
- package/dist/collection/components/nav/nav.css +7 -1
- package/dist/collection/components/nav/nav.js +256 -72
- package/dist/collection/components/nav/view-controller.js +1 -7
- package/dist/collection/components/nav-link/nav-link.js +14 -21
- package/dist/collection/components/note/note.ios.css +12 -0
- package/dist/collection/components/note/note.js +11 -14
- 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 +398 -403
- package/dist/collection/components/picker/picker.md.css +15 -3
- package/dist/collection/components/picker-column/picker-column.css +9 -5
- package/dist/collection/components/picker-column/picker-column.js +409 -418
- 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 +42 -38
- package/dist/collection/components/picker-column-option/picker-column-option.md.css +7 -6
- package/dist/collection/components/picker-legacy/animations/ios.enter.js +27 -0
- package/dist/collection/components/picker-legacy/animations/ios.leave.js +23 -0
- package/dist/collection/components/picker-legacy/picker-interface.js +1 -0
- package/dist/collection/components/picker-legacy/picker.ios.css +312 -0
- package/dist/collection/components/picker-legacy/picker.js +891 -0
- package/dist/collection/components/picker-legacy/picker.md.css +299 -0
- package/dist/collection/components/picker-legacy-column/picker-column.ios.css +243 -0
- package/dist/collection/components/picker-legacy-column/picker-column.js +422 -0
- package/dist/collection/components/picker-legacy-column/picker-column.md.css +234 -0
- package/dist/collection/components/picker-legacy-column/test/test.utils.js +43 -0
- package/dist/collection/components/popover/animations/ios.enter.js +2 -1
- package/dist/collection/components/popover/animations/md.enter.js +2 -1
- package/dist/collection/components/popover/popover.ionic.css +290 -0
- package/dist/collection/components/popover/popover.ios.css +15 -2
- package/dist/collection/components/popover/popover.js +199 -313
- package/dist/collection/components/popover/popover.md.css +15 -2
- package/dist/collection/components/popover/test/fixture.js +0 -1
- package/dist/collection/components/popover/utils.js +6 -4
- 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 +65 -33
- 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 +77 -108
- 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 +113 -107
- package/dist/collection/components/radio-group/radio-group.md.css +43 -19
- package/dist/collection/components/radio-group/test/fixtures.js +0 -2
- 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 +247 -305
- 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 +88 -117
- package/dist/collection/components/refresher/refresher.md.css +15 -2
- package/dist/collection/components/refresher-content/refresher-content.js +37 -47
- package/dist/collection/components/reorder/reorder.ios.css +6 -0
- package/dist/collection/components/reorder/reorder.js +26 -7
- 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 +22 -47
- 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 +26 -17
- package/dist/collection/components/route/route.js +14 -39
- package/dist/collection/components/route-redirect/route-redirect.js +0 -31
- package/dist/collection/components/router/router.js +37 -37
- package/dist/collection/components/router/utils/dom.js +7 -25
- package/dist/collection/components/router/utils/matching.js +9 -7
- package/dist/collection/components/router/utils/parser.js +1 -1
- package/dist/collection/components/router/utils/path.js +1 -0
- package/dist/collection/components/router-link/router-link.css +8 -2
- package/dist/collection/components/router-link/router-link.js +19 -40
- package/dist/collection/components/router-outlet/router-outlet.css +7 -1
- package/dist/collection/components/router-outlet/router-outlet.js +25 -83
- 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 +356 -321
- 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 +94 -126
- 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 +46 -49
- 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 +27 -28
- 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 +351 -206
- package/dist/collection/components/select/select.js +431 -431
- package/dist/collection/components/select/select.md.css +383 -230
- package/dist/collection/components/select-modal/select-modal.ionic.css +257 -0
- package/dist/collection/components/select-modal/select-modal.ios.css +293 -45
- package/dist/collection/components/select-modal/select-modal.js +81 -37
- package/dist/collection/components/select-modal/select-modal.md.css +273 -43
- package/dist/collection/components/select-modal/test/fixtures.js +1 -8
- package/dist/collection/components/select-option/select-option.js +15 -48
- package/dist/collection/components/select-popover/select-popover.ionic.css +255 -0
- package/dist/collection/components/select-popover/select-popover.ios.css +188 -124
- package/dist/collection/components/select-popover/select-popover.js +37 -44
- package/dist/collection/components/select-popover/select-popover.md.css +228 -47
- package/dist/collection/components/select-popover/test/fixtures.js +1 -8
- package/dist/collection/components/skeleton-text/skeleton-text.css +6 -0
- package/dist/collection/components/skeleton-text/skeleton-text.js +15 -15
- package/dist/collection/components/spinner/{spinner.css → spinner.ionic.css} +78 -10
- package/dist/collection/components/spinner/spinner.js +55 -26
- 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 +28 -33
- package/dist/collection/components/split-pane/split-pane.md.css +20 -2
- package/dist/collection/components/tab/tab.js +10 -17
- 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 +190 -44
- 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 +74 -68
- 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 +23 -33
- package/dist/collection/components/text/text.css +6 -0
- package/dist/collection/components/text/text.js +7 -12
- package/dist/collection/components/textarea/textarea.ionic.css +898 -0
- package/dist/collection/components/textarea/textarea.ios.css +329 -221
- package/dist/collection/components/textarea/textarea.js +334 -302
- package/dist/collection/components/textarea/textarea.md.css +358 -231
- 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 -23
- 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 +178 -232
- 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 +164 -175
- 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 +222 -25
- package/dist/collection/components/toolbar/toolbar.md.css +90 -47
- package/dist/collection/global/config.js +6 -4
- package/dist/collection/global/ionic-global.js +242 -20
- package/dist/collection/index.js +1 -1
- package/dist/collection/utils/animation/animation.js +3 -3
- package/dist/collection/utils/config.js +4 -5
- package/dist/collection/utils/css-value-validation.js +39 -0
- package/dist/collection/utils/focus-controller/index.js +1 -1
- package/dist/collection/utils/focus-trap.js +16 -5
- 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 -1
- package/dist/collection/utils/forms/validity.js +31 -0
- package/dist/collection/utils/framework-delegate.js +9 -5
- package/dist/collection/utils/gesture/gesture-controller.js +8 -15
- package/dist/collection/utils/gesture/index.js +2 -10
- package/dist/collection/utils/hardware-back-button.js +18 -3
- package/dist/collection/utils/helpers.js +72 -5
- package/dist/collection/utils/input-shims/hacks/scroll-assist.js +5 -4
- package/dist/collection/utils/input-shims/hacks/scroll-data.js +2 -1
- package/dist/collection/utils/keyboard/keyboard-controller.js +8 -6
- package/dist/collection/utils/keyboard/keyboard.js +1 -1
- package/dist/collection/utils/logging/index.js +4 -23
- 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/menu-controller/index.js +2 -1
- package/dist/collection/utils/native/haptic.js +3 -2
- package/dist/collection/utils/native/keyboard.js +2 -2
- package/dist/collection/utils/native/status-bar.js +1 -1
- package/dist/collection/utils/overlay-control-label.js +13 -11
- package/dist/collection/utils/overlays.js +312 -45
- package/dist/collection/utils/platform.js +5 -4
- package/dist/collection/utils/rtl/dir.js +3 -2
- package/dist/collection/utils/sanitization/index.js +2 -2
- package/dist/collection/utils/scroll-hide-controller.js +178 -0
- package/dist/collection/utils/select-option-render.js +2 -1
- package/dist/collection/utils/slot-mutation-controller.js +2 -1
- package/dist/collection/utils/test/playwright/apply-keyboard-focus.js +1 -1
- package/dist/collection/utils/test/playwright/drag-element.js +35 -11
- package/dist/collection/utils/test/playwright/generator.js +51 -25
- package/dist/collection/utils/test/playwright/page/event-spy.js +12 -11
- package/dist/collection/utils/test/playwright/page/utils/goto.js +15 -5
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +27 -4
- package/dist/collection/utils/test/playwright/page/utils/set-ion-viewport.js +3 -2
- package/dist/collection/utils/test/press-keys.js +17 -10
- package/dist/collection/utils/theme.js +26 -7
- package/dist/collection/utils/transition/ios.transition.js +14 -9
- package/dist/collection/utils/transition/md.transition.js +4 -3
- package/dist/docs.json +10054 -537
- package/dist/esm/{animation-CGFdmGk9.js → animation-BsVixxLP.js} +5 -5
- package/dist/esm/{app-globals-CYmMeGdU.js → app-globals-rPvWQFXp.js} +1 -1
- package/dist/esm/{button-active-BDOsVAiZ.js → button-active-BS8YgJRD.js} +3 -3
- package/dist/esm/{capacitor-CFERIeaU.js → capacitor-BnXrCBvt.js} +1 -1
- package/dist/esm/clear-button-press-controller-Ci6Q_x5-.js +43 -0
- package/dist/esm/{config-DWCzVL3Y.js → config-BwKpO3Is.js} +4 -5
- package/dist/esm/{dir-Dojwmvde.js → dir-o8OKV5aD.js} +3 -2
- package/dist/esm/{focus-visible-BmVRXR1y.js → focus-visible-vXpMhGrs.js} +23 -1
- package/dist/esm/{format-Dcwga61t.js → format-2WlZcMvG.js} +31 -41
- package/dist/esm/{framework-delegate-BHTU2Ip9.js → framework-delegate-P5K_3uYw.js} +10 -6
- package/dist/esm/{gesture-controller-TXPDHL13.js → gesture-controller-BTEOs1at.js} +8 -15
- package/dist/esm/{haptic-Cq4UAeka.js → haptic-ByW74Ow9.js} +4 -3
- package/dist/esm/{helpers-CAGf8Wgp.js → helpers-ChPZH7zh.js} +74 -8
- package/dist/esm/{index-DcPaH5uL.js → index-Bck1OwMs.js} +3 -9
- package/dist/esm/{index-ChhhtsGZ.js → index-C0EQceqV.js} +66 -34
- package/dist/esm/{index-Clc-28O1.js → index-C7EAbm0C.js} +5 -4
- package/dist/esm/{index-CqneaaGd.js → index-C7F1yJyV.js} +13 -12
- package/dist/esm/{index-WlteAIqz.js → index-CXSPjEca.js} +5 -5
- package/dist/esm/{index-CKM1DdGm.js → index-Mq5pCWmZ.js} +3 -3
- package/dist/esm/{index-BvabGprD.js → index-PnwG0glX.js} +2 -1
- package/dist/esm/{index-T0JxBI8V.js → index-niemeDYi.js} +2 -2
- package/dist/esm/index.js +17 -18
- package/dist/esm/{input-shims-B8sfni1e.js → input-shims-CM5m0K8T.js} +15 -12
- package/dist/esm/input.utils-DhJNJPiU.js +147 -0
- package/dist/esm/ion-accordion_2.entry.js +376 -376
- package/dist/esm/ion-action-sheet.entry.js +87 -179
- package/dist/esm/ion-alert.entry.js +126 -251
- package/dist/esm/ion-app_8.entry.js +607 -460
- package/dist/esm/ion-avatar_3.entry.js +125 -19
- package/dist/esm/ion-back-button.entry.js +49 -65
- package/dist/esm/ion-backdrop.entry.js +22 -23
- package/dist/esm/ion-breadcrumb_2.entry.js +157 -210
- package/dist/esm/ion-button_2.entry.js +118 -153
- package/dist/esm/ion-card_5.entry.js +80 -110
- package/dist/esm/ion-checkbox.entry.js +134 -160
- package/dist/esm/ion-chip.entry.js +56 -21
- package/dist/esm/ion-col_3.entry.js +61 -186
- package/dist/esm/ion-datetime-button.entry.js +248 -256
- package/dist/esm/ion-datetime_3.entry.js +3206 -0
- package/dist/esm/ion-divider.entry.js +49 -0
- package/dist/esm/ion-fab_3.entry.js +109 -155
- package/dist/esm/ion-gallery-item.entry.js +57 -0
- package/dist/esm/ion-gallery.entry.js +606 -0
- package/dist/esm/ion-img.entry.js +17 -35
- package/dist/esm/ion-infinite-scroll_2.entry.js +157 -109
- package/dist/esm/ion-input-otp.entry.js +437 -435
- package/dist/esm/ion-input-password-toggle.entry.js +54 -40
- package/dist/esm/ion-input.entry.js +303 -349
- package/dist/esm/ion-item-option_3.entry.js +512 -137
- package/dist/esm/ion-item_8.entry.js +186 -218
- package/dist/esm/ion-loading.entry.js +69 -152
- package/dist/esm/ion-menu_3.entry.js +136 -182
- package/dist/esm/ion-modal.entry.js +459 -529
- package/dist/esm/ion-nav_2.entry.js +164 -104
- package/dist/esm/ion-picker-column-option.entry.js +40 -40
- package/dist/esm/ion-picker-column.entry.js +410 -422
- package/dist/esm/ion-picker.entry.js +401 -406
- package/dist/esm/ion-popover.entry.js +212 -324
- package/dist/esm/ion-progress-bar.entry.js +48 -36
- package/dist/esm/ion-radio_2.entry.js +162 -217
- package/dist/esm/ion-range.entry.js +251 -309
- package/dist/esm/ion-refresher_2.entry.js +127 -175
- package/dist/esm/ion-reorder_2.entry.js +47 -60
- package/dist/esm/ion-ripple-effect.entry.js +26 -18
- package/dist/esm/ion-route_4.entry.js +76 -179
- package/dist/esm/ion-searchbar.entry.js +305 -308
- package/dist/esm/ion-segment-content.entry.js +2 -2
- package/dist/esm/ion-segment-view.entry.js +27 -28
- package/dist/esm/ion-segment_2.entry.js +141 -177
- package/dist/esm/ion-select-modal.entry.js +71 -50
- package/dist/esm/ion-select_3.entry.js +416 -507
- package/dist/esm/ion-spinner.entry.js +36 -28
- package/dist/esm/ion-split-pane.entry.js +25 -34
- package/dist/esm/ion-tab-bar_2.entry.js +179 -116
- package/dist/esm/ion-tab_2.entry.js +30 -55
- package/dist/esm/ion-text.entry.js +7 -13
- package/dist/esm/ion-textarea.entry.js +309 -302
- package/dist/esm/ion-toast.entry.js +149 -244
- package/dist/esm/ion-toggle.entry.js +172 -184
- package/dist/esm/ionic-global-BJDU78B6.js +508 -0
- package/dist/esm/ionic.js +5 -5
- package/dist/esm/{ios.transition-DXRCmcbC.js → ios.transition-6oGu53GR.js} +21 -15
- package/dist/esm/{item-multiple-inputs-rU8VaNNg.js → item-multiple-inputs-C6onMFOo.js} +1 -1
- package/dist/esm/{keyboard-Cj8mLJeq.js → keyboard-XukEYIFf.js} +5 -4
- package/dist/esm/{keyboard-DAF8GNJ9.js → keyboard-x-uHYVoq.js} +3 -3
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-BMngO4i_.js → md.transition-Dy5HxiSE.js} +11 -9
- package/dist/esm/notch-controller-BYB7mUMg.js +153 -0
- package/dist/esm/{overlay-control-label-BSQPZ79H.js → overlay-control-label-CODBQrPj.js} +13 -11
- package/dist/esm/{overlays-CPmIs9Ls.js → overlays-C3YvaMgX.js} +333 -57
- package/dist/esm/scroll-hide-controller-B3MRYNXh.js +342 -0
- package/dist/esm/{select-option-render-C4m76VGH.js → select-option-render-BlKZ2H83.js} +4 -3
- package/dist/esm/{status-tap-CHB7KwIb.js → status-tap-DK-ylvU7.js} +5 -4
- package/dist/esm/{swipe-back-C9HW1bug.js → swipe-back-DFICtpMC.js} +6 -5
- package/dist/esm/theme-DaJxRxSQ.js +67 -0
- package/dist/esm/validity-BjW8SOqw.js +48 -0
- package/dist/html.html-data.json +2690 -123
- 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-0115c2fa.entry.js +4 -0
- package/dist/ionic/p-0ac15b5f.entry.js +4 -0
- package/dist/ionic/p-0b2c58e0.entry.js +4 -0
- package/dist/ionic/p-0bfb8d9e.entry.js +4 -0
- package/dist/ionic/p-1147fa06.entry.js +4 -0
- package/dist/ionic/p-1e45586e.entry.js +4 -0
- package/dist/ionic/p-1febf200.entry.js +4 -0
- package/dist/ionic/p-208cecae.entry.js +4 -0
- package/dist/ionic/p-29f69d29.entry.js +4 -0
- package/dist/ionic/p-2b5e04c5.entry.js +4 -0
- package/dist/ionic/p-311ef139.entry.js +4 -0
- package/dist/ionic/p-3eff3411.entry.js +4 -0
- package/dist/ionic/p-3f17704b.entry.js +4 -0
- package/dist/ionic/p-46e754ae.entry.js +4 -0
- package/dist/ionic/p-4901a10b.entry.js +4 -0
- package/dist/ionic/p-4c8178d8.entry.js +4 -0
- package/dist/ionic/p-5196bee9.entry.js +4 -0
- package/dist/ionic/p-5386b094.entry.js +4 -0
- package/dist/ionic/p-54579b68.entry.js +4 -0
- package/dist/ionic/p-54baa1af.entry.js +4 -0
- package/dist/ionic/p-59e59209.entry.js +4 -0
- package/dist/ionic/p-5ad0c670.entry.js +4 -0
- package/dist/ionic/p-62602fbd.entry.js +4 -0
- package/dist/ionic/p-6b86cb62.entry.js +4 -0
- package/dist/ionic/p-7134537b.entry.js +4 -0
- package/dist/ionic/p-72eacca0.entry.js +4 -0
- package/dist/ionic/p-7ae06f6f.entry.js +4 -0
- package/dist/ionic/p-7bde9ee1.entry.js +4 -0
- package/dist/ionic/p-7f59020c.entry.js +4 -0
- package/dist/ionic/p-7k7Q1A38.js +4 -0
- package/dist/ionic/p-87ab986c.entry.js +4 -0
- package/dist/ionic/p-9dff6288.entry.js +4 -0
- package/dist/ionic/p-9e09cb80.entry.js +4 -0
- package/dist/ionic/p-BFhQ1N-L.js +4 -0
- package/dist/ionic/p-BG7tpRhR.js +4 -0
- package/dist/ionic/p-BITyMTKr.js +4 -0
- package/dist/ionic/p-BRPONI7N.js +4 -0
- package/dist/ionic/p-BTEOs1at.js +4 -0
- package/dist/ionic/p-BVdSuKmt.js +4 -0
- package/dist/ionic/p-BYRVyMu9.js +4 -0
- package/dist/ionic/p-BjW8SOqw.js +4 -0
- package/dist/ionic/p-Bpx1lBiP.js +4 -0
- package/dist/ionic/p-BwKpO3Is.js +4 -0
- package/dist/ionic/p-C-BLhfUi.js +4 -0
- package/dist/ionic/p-C-aO35cw.js +4 -0
- package/dist/ionic/p-C0EQceqV.js +5 -0
- package/dist/ionic/p-CDrQfM-I.js +4 -0
- package/dist/ionic/p-CODBQrPj.js +4 -0
- package/dist/ionic/p-CTSaffvS.js +4 -0
- package/dist/ionic/p-CaM5HwzM.js +4 -0
- package/dist/ionic/p-CgaW5Zy8.js +4 -0
- package/dist/ionic/p-Cipl19Qe.js +4 -0
- package/dist/ionic/p-CnBfCmL2.js +4 -0
- package/dist/ionic/p-D-Xit5Ye.js +4 -0
- package/dist/ionic/p-D7LIC84Z.js +4 -0
- package/dist/ionic/p-D844sgjq.js +4 -0
- package/dist/ionic/p-DWDKFjrH.js +4 -0
- package/dist/ionic/p-DaJxRxSQ.js +4 -0
- package/dist/ionic/p-DhyWlGap.js +4 -0
- package/dist/ionic/p-DiyY-i-5.js +4 -0
- package/dist/ionic/p-DrxPmT9E.js +4 -0
- package/dist/ionic/p-PnwG0glX.js +4 -0
- package/dist/ionic/p-YIsE5bNG.js +4 -0
- package/dist/ionic/p-a320cdb2.entry.js +4 -0
- package/dist/ionic/p-a37444b3.entry.js +4 -0
- package/dist/ionic/p-a4bed36b.entry.js +4 -0
- package/dist/ionic/p-a7914fe5.entry.js +4 -0
- package/dist/ionic/p-aa298c58.entry.js +4 -0
- package/dist/ionic/p-ace3062d.entry.js +4 -0
- package/dist/ionic/p-b70775b0.entry.js +4 -0
- package/dist/ionic/p-b7c75507.entry.js +4 -0
- package/dist/ionic/p-b920f149.entry.js +4 -0
- package/dist/ionic/p-c39025c0.entry.js +4 -0
- package/dist/ionic/p-c9cda5ce.entry.js +4 -0
- package/dist/ionic/p-cc314123.entry.js +4 -0
- package/dist/ionic/p-d1f42864.entry.js +4 -0
- package/dist/ionic/p-d4506138.entry.js +4 -0
- package/dist/ionic/p-dbd06d8d.entry.js +4 -0
- package/dist/ionic/p-dda49380.entry.js +4 -0
- package/dist/ionic/p-de4e8418.entry.js +4 -0
- package/dist/ionic/p-e95618c4.entry.js +4 -0
- package/dist/ionic/p-f89fcf62.entry.js +4 -0
- package/dist/ionic/p-fcce2dda.entry.js +4 -0
- package/dist/ionic/p-fd2a869f.entry.js +4 -0
- package/dist/ionic/p-fd95a423.entry.js +4 -0
- package/dist/ionic/p-fe14205b.entry.js +4 -0
- package/dist/ionic/p-i6iV8hMy.js +4 -0
- package/dist/ionic/p-nUlpIttM.js +4 -0
- package/dist/ionic/p-o8OKV5aD.js +4 -0
- package/dist/ionic/p-vXpMhGrs.js +4 -0
- package/dist/ionic/p-zRFin7iz.js +4 -0
- package/dist/ionic/p-zn4qAQ_d.js +4 -0
- package/dist/types/components/accordion/accordion.d.ts +12 -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 +8 -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 +14 -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 +26 -5
- 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 -0
- package/dist/types/components/datetime/datetime.d.ts +26 -1
- package/dist/types/components/datetime/utils/data.d.ts +5 -5
- package/dist/types/components/datetime-button/datetime-button.d.ts +2 -1
- package/dist/types/components/divider/divider.d.ts +20 -0
- package/dist/types/components/fab/fab.d.ts +4 -0
- package/dist/types/components/fab-button/fab-button.d.ts +11 -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 +2 -1
- 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 +40 -17
- package/dist/types/components/input-otp/input-otp.d.ts +37 -0
- package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +14 -0
- package/dist/types/components/item/item.d.ts +17 -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 +8 -1
- package/dist/types/components/menu-toggle/menu-toggle.d.ts +3 -0
- package/dist/types/components/modal/animations/ionic.enter.d.ts +6 -0
- package/dist/types/components/modal/animations/ionic.leave.d.ts +6 -0
- package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
- package/dist/types/components/modal/modal-interface.d.ts +4 -16
- package/dist/types/components/modal/modal.d.ts +15 -12
- package/dist/types/components/nav/nav-interface.d.ts +10 -1
- package/dist/types/components/nav/nav.d.ts +27 -3
- 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/animations/ios.enter.d.ts +5 -0
- package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +5 -0
- package/dist/types/components/picker-legacy/picker-interface.d.ts +52 -0
- package/dist/types/components/picker-legacy/picker.d.ts +159 -0
- package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
- package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +9 -0
- 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 +10 -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 +5 -1
- 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 -8
- package/dist/types/components/row/row.d.ts +4 -0
- package/dist/types/components/searchbar/searchbar.d.ts +57 -11
- 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.d.ts +55 -26
- package/dist/types/components/select-modal/select-modal.d.ts +13 -0
- package/dist/types/components/select-option/select-option.d.ts +7 -4
- 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 +58 -16
- 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 +18 -1
- package/dist/types/components/toolbar/toolbar.d.ts +43 -3
- package/dist/types/components.d.ts +2171 -263
- package/dist/types/global/ionic-global.d.ts +28 -2
- package/dist/types/index.d.ts +1 -1
- package/dist/types/interface.d.ts +4 -0
- package/dist/types/utils/config.d.ts +133 -3
- 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 -1
- package/dist/types/utils/forms/validity.d.ts +7 -0
- package/dist/types/utils/helpers.d.ts +22 -0
- package/dist/types/utils/logging/index.d.ts +1 -2
- package/dist/types/utils/overlay-control-label.d.ts +11 -9
- package/dist/types/utils/overlays-interface.d.ts +31 -1
- package/dist/types/utils/overlays.d.ts +10 -12
- package/dist/types/utils/scroll-hide-controller.d.ts +56 -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/test/playwright/playwright-page.d.ts +1 -1
- package/dist/types/utils/test/playwright/testExpect.d.ts +1 -1
- package/dist/types/utils/theme.d.ts +9 -0
- package/hydrate/index.js +12008 -10485
- package/hydrate/index.mjs +12008 -10485
- package/package.json +16 -56
- package/components/p--m5cCjbK.js +0 -4
- package/components/p-1jI5oW-W.js +0 -4
- package/components/p-8FN7p701.js +0 -4
- package/components/p-B4uHHhPK.js +0 -4
- package/components/p-BMPN55of.js +0 -4
- package/components/p-BNJOu1Q2.js +0 -4
- package/components/p-BOvLNVKq.js +0 -4
- package/components/p-BSQPZ79H.js +0 -4
- package/components/p-BeamQXHF.js +0 -4
- package/components/p-BhamHSw3.js +0 -4
- package/components/p-Bjig0DJK.js +0 -4
- package/components/p-BjluhQMI.js +0 -4
- package/components/p-BlsIikdZ.js +0 -4
- package/components/p-BmVRXR1y.js +0 -4
- package/components/p-BqPNzJf6.js +0 -4
- package/components/p-BrD9Xv62.js +0 -4
- package/components/p-BvJqoZ5R.js +0 -4
- package/components/p-Bz6z3Asd.js +0 -4
- package/components/p-C5KYjZWD.js +0 -4
- package/components/p-C6HnVvHO.js +0 -4
- package/components/p-C7jvh5Wy.js +0 -4
- package/components/p-C9BGR5fy.js +0 -4
- package/components/p-CB-y1CdP.js +0 -4
- package/components/p-CEW4RXZO.js +0 -4
- package/components/p-CHH3loEE.js +0 -4
- package/components/p-CIGNaXM1.js +0 -4
- package/components/p-CJKUWjmg.js +0 -4
- package/components/p-C_phlPMC.js +0 -4
- package/components/p-CbhUdtjf.js +0 -4
- package/components/p-CejmQs3h.js +0 -4
- package/components/p-CtZqa4HM.js +0 -4
- package/components/p-D7-vHX0A.js +0 -4
- package/components/p-D9qIVSWm.js +0 -4
- package/components/p-DD5fQ4EQ.js +0 -4
- package/components/p-DE-3iMNW.js +0 -4
- package/components/p-DFvZn99E.js +0 -4
- package/components/p-DHFt2rdc.js +0 -4
- package/components/p-DJztqcrH.js +0 -4
- package/components/p-DM-PrAoh.js +0 -4
- package/components/p-DSzSbVP2.js +0 -4
- package/components/p-DV85C0e0.js +0 -4
- package/components/p-DWCzVL3Y.js +0 -4
- package/components/p-D_RCyzwu.js +0 -4
- package/components/p-D_tD8r3L.js +0 -4
- package/components/p-DaA_8eqt.js +0 -4
- package/components/p-DjCtLZbF.js +0 -4
- package/components/p-Dmd2xqCe.js +0 -4
- package/components/p-Dojwmvde.js +0 -4
- package/components/p-G0TxqHfe.js +0 -4
- package/components/p-G6JR-cr_.js +0 -4
- package/components/p-GG5GhznE.js +0 -4
- package/components/p-LpMHEu3v.js +0 -4
- package/components/p-TXPDHL13.js +0 -4
- package/components/p-UIBJkZf8.js +0 -4
- package/components/p-ZjP4CjeZ.js +0 -4
- package/components/p-_IKFD3ID.js +0 -4
- package/components/p-byZM6qHV.js +0 -4
- package/components/p-dKq2jIum.js +0 -4
- package/components/p-fruGqVHh.js +0 -4
- package/components/p-iYhH60Tc.js +0 -4
- package/components/p-ia3IDdJS.js +0 -4
- package/dist/cjs/hardware-back-button-fqpYh-kd.js +0 -121
- package/dist/cjs/index-DkNv4J_i.js +0 -10
- package/dist/cjs/input.utils-BZdMWVrt.js +0 -35
- package/dist/cjs/ion-datetime.cjs.entry.js +0 -2770
- package/dist/cjs/ionic-global-k6hOWWpn.js +0 -156
- package/dist/cjs/keyboard-controller-PtZoN2GS.js +0 -167
- package/dist/cjs/slot-mutation-controller-DPHmqXdV.js +0 -397
- package/dist/cjs/validity-BpS37YFM.js +0 -19
- package/dist/collection/utils/forms/start-container-controller.js +0 -132
- package/dist/esm/hardware-back-button-gLJHMX_F.js +0 -115
- package/dist/esm/index-ZjP4CjeZ.js +0 -7
- package/dist/esm/input.utils-B1ValN_N.js +0 -33
- package/dist/esm/ion-datetime.entry.js +0 -2768
- package/dist/esm/ionic-global-BVB7BrLT.js +0 -151
- package/dist/esm/keyboard-controller-DEwoa1ev.js +0 -165
- package/dist/esm/slot-mutation-controller-DiE_C9un.js +0 -393
- package/dist/esm/theme-byZM6qHV.js +0 -48
- package/dist/esm/validity-DJztqcrH.js +0 -17
- package/dist/ionic/p-06ec7136.entry.js +0 -4
- package/dist/ionic/p-09fe4fa3.entry.js +0 -4
- package/dist/ionic/p-10d45a07.entry.js +0 -4
- package/dist/ionic/p-208c8a07.entry.js +0 -4
- package/dist/ionic/p-212474fa.entry.js +0 -4
- package/dist/ionic/p-2eef1396.entry.js +0 -4
- package/dist/ionic/p-347e005d.entry.js +0 -4
- package/dist/ionic/p-3a0b3f1d.entry.js +0 -4
- package/dist/ionic/p-3b071259.entry.js +0 -4
- package/dist/ionic/p-40424a88.entry.js +0 -4
- package/dist/ionic/p-4204184c.entry.js +0 -4
- package/dist/ionic/p-47464391.entry.js +0 -4
- package/dist/ionic/p-4eOQC00Z.js +0 -4
- package/dist/ionic/p-4f9c9126.entry.js +0 -4
- package/dist/ionic/p-5JsKPLJD.js +0 -4
- package/dist/ionic/p-5bc485c6.entry.js +0 -4
- package/dist/ionic/p-603a61e6.entry.js +0 -4
- package/dist/ionic/p-60576951.entry.js +0 -4
- package/dist/ionic/p-67a81d33.entry.js +0 -4
- package/dist/ionic/p-6affb775.entry.js +0 -4
- package/dist/ionic/p-6f120c25.entry.js +0 -4
- package/dist/ionic/p-71c82b60.entry.js +0 -4
- package/dist/ionic/p-79325ffe.entry.js +0 -4
- package/dist/ionic/p-7CBuOvEo.js +0 -4
- package/dist/ionic/p-7e4d51fa.entry.js +0 -4
- package/dist/ionic/p-7f5d4664.entry.js +0 -4
- package/dist/ionic/p-80ee82fc.entry.js +0 -4
- package/dist/ionic/p-84af7dbc.entry.js +0 -4
- package/dist/ionic/p-89ca830a.entry.js +0 -4
- package/dist/ionic/p-93b8ec8f.entry.js +0 -4
- package/dist/ionic/p-946f65c2.entry.js +0 -4
- package/dist/ionic/p-9c4b39fb.entry.js +0 -4
- package/dist/ionic/p-B1NEZUzQ.js +0 -4
- package/dist/ionic/p-B1ck5iy-.js +0 -4
- package/dist/ionic/p-B4FrqdW0.js +0 -4
- package/dist/ionic/p-BB0LlG4y.js +0 -4
- package/dist/ionic/p-BMPN55of.js +0 -4
- package/dist/ionic/p-BSQPZ79H.js +0 -4
- package/dist/ionic/p-BYEAtHr-.js +0 -4
- package/dist/ionic/p-BhamHSw3.js +0 -4
- package/dist/ionic/p-BmVRXR1y.js +0 -4
- package/dist/ionic/p-BvabGprD.js +0 -4
- package/dist/ionic/p-C-94tAim.js +0 -4
- package/dist/ionic/p-C-eHZMYE.js +0 -4
- package/dist/ionic/p-CBR_W98Z.js +0 -4
- package/dist/ionic/p-CBWAXjA5.js +0 -4
- package/dist/ionic/p-CIGNaXM1.js +0 -4
- package/dist/ionic/p-CMRtMbJc.js +0 -4
- package/dist/ionic/p-CPcPmkGv.js +0 -4
- package/dist/ionic/p-CaRuIadB.js +0 -4
- package/dist/ionic/p-Cdjxf_yg.js +0 -4
- package/dist/ionic/p-ChhhtsGZ.js +0 -5
- package/dist/ionic/p-CzS1qWve.js +0 -4
- package/dist/ionic/p-D5t_-oMk.js +0 -4
- package/dist/ionic/p-D94_RztK.js +0 -4
- package/dist/ionic/p-DJztqcrH.js +0 -4
- package/dist/ionic/p-DWCzVL3Y.js +0 -4
- package/dist/ionic/p-DjjfauRM.js +0 -4
- package/dist/ionic/p-DkUB-ROc.js +0 -4
- package/dist/ionic/p-Dn0mqQ_R.js +0 -4
- package/dist/ionic/p-Dojwmvde.js +0 -4
- package/dist/ionic/p-DplOqGUv.js +0 -4
- package/dist/ionic/p-Dst_XmZh.js +0 -4
- package/dist/ionic/p-T71k3C35.js +0 -4
- package/dist/ionic/p-TXPDHL13.js +0 -4
- package/dist/ionic/p-UIBJkZf8.js +0 -4
- package/dist/ionic/p-ZjP4CjeZ.js +0 -4
- package/dist/ionic/p-a438b193.entry.js +0 -4
- package/dist/ionic/p-babaaaa7.entry.js +0 -4
- package/dist/ionic/p-be08d500.entry.js +0 -4
- package/dist/ionic/p-be9a4f51.entry.js +0 -4
- package/dist/ionic/p-byZM6qHV.js +0 -4
- package/dist/ionic/p-c00d3092.entry.js +0 -4
- package/dist/ionic/p-c36dc8f5.entry.js +0 -4
- package/dist/ionic/p-c72a7e17.entry.js +0 -4
- package/dist/ionic/p-c8edd88c.entry.js +0 -4
- package/dist/ionic/p-ce0e380b.entry.js +0 -4
- package/dist/ionic/p-ce32912b.entry.js +0 -4
- package/dist/ionic/p-d07cf130.entry.js +0 -4
- package/dist/ionic/p-d27edeb3.entry.js +0 -4
- package/dist/ionic/p-d5d2c506.entry.js +0 -4
- package/dist/ionic/p-d5e31ca9.entry.js +0 -4
- package/dist/ionic/p-de91444f.entry.js +0 -4
- package/dist/ionic/p-ded69ceb.entry.js +0 -4
- package/dist/ionic/p-df72866d.entry.js +0 -4
- package/dist/ionic/p-e47e3151.entry.js +0 -4
- package/dist/ionic/p-e621e5e8.entry.js +0 -4
- package/dist/ionic/p-eea9cf93.entry.js +0 -4
- package/dist/ionic/p-f402f5a4.entry.js +0 -4
- package/dist/ionic/p-fe1bfbcf.entry.js +0 -4
- package/dist/ionic/p-ffb90460.entry.js +0 -4
- package/dist/types/utils/forms/start-container-controller.d.ts +0 -34
- /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-
|
|
10
|
-
var dir = require('./dir-
|
|
11
|
-
var theme = require('./theme-
|
|
12
|
-
var index$1 = require('./index-
|
|
13
|
-
var
|
|
6
|
+
var index = require('./index-C1knGA9x.js');
|
|
7
|
+
var focusVisible = require('./focus-visible-BIj-I3-C.js');
|
|
8
|
+
var ionicGlobal = require('./ionic-global-DYLhJaw7.js');
|
|
9
|
+
var helpers = require('./helpers-Dhimwhpn.js');
|
|
10
|
+
var dir = require('./dir-DD0jPVH3.js');
|
|
11
|
+
var theme = require('./theme-IlOsGAz7.js');
|
|
12
|
+
var index$1 = require('./index-Bsq0SbXc.js');
|
|
13
|
+
var scrollHideController = require('./scroll-hide-controller-qWMU5yOk.js');
|
|
14
14
|
var cubicBezier = require('./cubic-bezier-DAjy1V-e.js');
|
|
15
|
-
var frameworkDelegate = require('./framework-delegate-
|
|
15
|
+
var frameworkDelegate = require('./framework-delegate-IvkF1VuM.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-DuleInoh.js');
|
|
18
|
+
require('./keyboard-BgioTbwQ.js');
|
|
19
|
+
require('./capacitor-CRl0exFC.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,54 +24,6 @@ const App = class {
|
|
|
25
24
|
constructor(hostRef) {
|
|
26
25
|
index.registerInstance(this, hostRef);
|
|
27
26
|
}
|
|
28
|
-
focusVisible;
|
|
29
|
-
loadTimeout;
|
|
30
|
-
get el() { return index.getElement(this); }
|
|
31
|
-
componentDidLoad() {
|
|
32
|
-
{
|
|
33
|
-
this.rIC(async () => {
|
|
34
|
-
const isHybrid = ionicGlobal.isPlatform(window, 'hybrid');
|
|
35
|
-
if (!index.config.getBoolean('_testing')) {
|
|
36
|
-
Promise.resolve().then(function () { return require('./index-DDg31ZF5.js'); }).then((module) => module.startTapClick(index.config));
|
|
37
|
-
}
|
|
38
|
-
if (index.config.getBoolean('statusTap', isHybrid)) {
|
|
39
|
-
Promise.resolve().then(function () { return require('./status-tap-o9IIymsP.js'); }).then((module) => module.startStatusTap());
|
|
40
|
-
}
|
|
41
|
-
if (index.config.getBoolean('inputShims', needInputShims())) {
|
|
42
|
-
/**
|
|
43
|
-
* needInputShims() ensures that only iOS and Android
|
|
44
|
-
* platforms proceed into this block.
|
|
45
|
-
*/
|
|
46
|
-
const platform = ionicGlobal.isPlatform(window, 'ios') ? 'ios' : 'android';
|
|
47
|
-
Promise.resolve().then(function () { return require('./input-shims-Cbu1fcye.js'); }).then((module) => module.startInputShims(index.config, platform));
|
|
48
|
-
}
|
|
49
|
-
const hardwareBackButtonModule = await Promise.resolve().then(function () { return require('./hardware-back-button-fqpYh-kd.js'); });
|
|
50
|
-
const supportsHardwareBackButtonEvents = isHybrid || hardwareBackButton.shouldUseCloseWatcher();
|
|
51
|
-
if (index.config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {
|
|
52
|
-
hardwareBackButtonModule.startHardwareBackButton();
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
/**
|
|
56
|
-
* If an app sets hardwareBackButton: false and experimentalCloseWatcher: true
|
|
57
|
-
* then the close watcher will not be used.
|
|
58
|
-
*/
|
|
59
|
-
if (hardwareBackButton.shouldUseCloseWatcher()) {
|
|
60
|
-
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.');
|
|
61
|
-
}
|
|
62
|
-
hardwareBackButtonModule.blockHardwareBackButton();
|
|
63
|
-
}
|
|
64
|
-
if (typeof window !== 'undefined') {
|
|
65
|
-
Promise.resolve().then(function () { return require('./keyboard-Cix5TVkD.js'); }).then((module) => module.startKeyboardAssist(window));
|
|
66
|
-
}
|
|
67
|
-
Promise.resolve().then(function () { return require('./focus-visible-CCvKiLh3.js'); }).then((module) => (this.focusVisible = module.startFocusVisible()));
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
disconnectedCallback() {
|
|
72
|
-
if (this.loadTimeout) {
|
|
73
|
-
clearTimeout(this.loadTimeout);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
27
|
/**
|
|
77
28
|
* Used to set focus on an element that uses `ion-focusable`.
|
|
78
29
|
* Do not use this if focusing the element as a result of a keyboard
|
|
@@ -85,83 +36,62 @@ const App = class {
|
|
|
85
36
|
* @param elements An array of HTML elements to set focus on.
|
|
86
37
|
*/
|
|
87
38
|
async setFocus(elements) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
if ('requestIdleCallback' in window) {
|
|
94
|
-
window.requestIdleCallback(callback);
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
this.loadTimeout = setTimeout(callback, 32);
|
|
98
|
-
}
|
|
39
|
+
/**
|
|
40
|
+
* The focus-visible utility is used to set focus on an
|
|
41
|
+
* element that uses `ion-focusable`.
|
|
42
|
+
*/
|
|
43
|
+
focusVisible.focusElements(elements);
|
|
99
44
|
}
|
|
100
45
|
render() {
|
|
101
|
-
const
|
|
102
|
-
return (index.h(index.Host, { key: '
|
|
103
|
-
[
|
|
46
|
+
const theme = ionicGlobal.getIonTheme(this);
|
|
47
|
+
return (index.h(index.Host, { key: '3b7e84c7c4187287123413f90838cda89136b2a4', class: {
|
|
48
|
+
[theme]: true,
|
|
104
49
|
'ion-page': true,
|
|
105
50
|
'force-statusbar-padding': index.config.getBoolean('_forceStatusbarPadding'),
|
|
106
51
|
} }));
|
|
107
52
|
}
|
|
108
|
-
}
|
|
109
|
-
const needInputShims = () => {
|
|
110
|
-
/**
|
|
111
|
-
* iOS always needs input shims
|
|
112
|
-
*/
|
|
113
|
-
const needsShimsIOS = ionicGlobal.isPlatform(window, 'ios') && ionicGlobal.isPlatform(window, 'mobile');
|
|
114
|
-
if (needsShimsIOS) {
|
|
115
|
-
return true;
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Android only needs input shims when running
|
|
119
|
-
* in the browser and only if the browser is using the
|
|
120
|
-
* new Chrome 108+ resize behavior: https://developer.chrome.com/blog/viewport-resize-behavior/
|
|
121
|
-
*/
|
|
122
|
-
const isAndroidMobileWeb = ionicGlobal.isPlatform(window, 'android') && ionicGlobal.isPlatform(window, 'mobileweb');
|
|
123
|
-
if (isAndroidMobileWeb) {
|
|
124
|
-
return true;
|
|
125
|
-
}
|
|
126
|
-
return false;
|
|
53
|
+
get el() { return index.getElement(this); }
|
|
127
54
|
};
|
|
128
55
|
App.style = appCss();
|
|
129
56
|
|
|
130
|
-
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)}`;
|
|
131
58
|
|
|
132
|
-
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}`;
|
|
133
62
|
|
|
134
63
|
const Buttons = class {
|
|
135
64
|
constructor(hostRef) {
|
|
136
65
|
index.registerInstance(this, hostRef);
|
|
66
|
+
/**
|
|
67
|
+
* If true, buttons will disappear when its
|
|
68
|
+
* parent toolbar has fully collapsed if the toolbar
|
|
69
|
+
* is not the first toolbar. If the toolbar is the
|
|
70
|
+
* first toolbar, the buttons will be hidden and will
|
|
71
|
+
* only be shown once all toolbars have fully collapsed.
|
|
72
|
+
*
|
|
73
|
+
* Only applies in the `ios` theme with `collapse` set to
|
|
74
|
+
* `true` on `ion-header`.
|
|
75
|
+
*
|
|
76
|
+
* Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
|
|
77
|
+
*/
|
|
78
|
+
this.collapse = false;
|
|
137
79
|
}
|
|
138
|
-
/**
|
|
139
|
-
* If true, buttons will disappear when its
|
|
140
|
-
* parent toolbar has fully collapsed if the toolbar
|
|
141
|
-
* is not the first toolbar. If the toolbar is the
|
|
142
|
-
* first toolbar, the buttons will be hidden and will
|
|
143
|
-
* only be shown once all toolbars have fully collapsed.
|
|
144
|
-
*
|
|
145
|
-
* Only applies in `ios` mode with `collapse` set to
|
|
146
|
-
* `true` on `ion-header`.
|
|
147
|
-
*
|
|
148
|
-
* Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
|
|
149
|
-
*/
|
|
150
|
-
collapse = false;
|
|
151
80
|
render() {
|
|
152
|
-
const
|
|
153
|
-
return (index.h(index.Host, { key: '
|
|
154
|
-
[
|
|
81
|
+
const theme = ionicGlobal.getIonTheme(this);
|
|
82
|
+
return (index.h(index.Host, { key: '95c107ba7871c801a5ef14c636dc8e2fe69debf3', class: {
|
|
83
|
+
[theme]: true,
|
|
155
84
|
['buttons-collapse']: this.collapse,
|
|
156
|
-
} }, index.h("slot", { key: '
|
|
85
|
+
} }, index.h("slot", { key: '58669abfce458e1344b84286d4200e305017b958' })));
|
|
157
86
|
}
|
|
158
87
|
};
|
|
159
88
|
Buttons.style = {
|
|
89
|
+
ionic: buttonsIonicCss(),
|
|
160
90
|
ios: buttonsIosCss(),
|
|
161
91
|
md: buttonsMdCss()
|
|
162
92
|
};
|
|
163
93
|
|
|
164
|
-
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}}`;
|
|
165
95
|
|
|
166
96
|
const Content = class {
|
|
167
97
|
constructor(hostRef) {
|
|
@@ -169,100 +99,68 @@ const Content = class {
|
|
|
169
99
|
this.ionScrollStart = index.createEvent(this, "ionScrollStart", 7);
|
|
170
100
|
this.ionScroll = index.createEvent(this, "ionScroll", 7);
|
|
171
101
|
this.ionScrollEnd = index.createEvent(this, "ionScrollEnd", 7);
|
|
102
|
+
this.watchDog = null;
|
|
103
|
+
this.isScrolling = false;
|
|
104
|
+
this.lastScroll = 0;
|
|
105
|
+
this.queued = false;
|
|
106
|
+
this.cTop = -1;
|
|
107
|
+
this.cBottom = -1;
|
|
108
|
+
this.isMainContent = true;
|
|
109
|
+
this.resizeTimeout = null;
|
|
110
|
+
this.inheritedAttributes = {};
|
|
111
|
+
this.tabsElement = null;
|
|
112
|
+
// Detail is used in a hot loop in the scroll event, by allocating it here
|
|
113
|
+
// V8 will be able to inline any read/write to it since it's a monomorphic class.
|
|
114
|
+
// https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html
|
|
115
|
+
this.detail = {
|
|
116
|
+
scrollTop: 0,
|
|
117
|
+
scrollLeft: 0,
|
|
118
|
+
type: 'scroll',
|
|
119
|
+
event: undefined,
|
|
120
|
+
startX: 0,
|
|
121
|
+
startY: 0,
|
|
122
|
+
startTime: 0,
|
|
123
|
+
currentX: 0,
|
|
124
|
+
currentY: 0,
|
|
125
|
+
velocityX: 0,
|
|
126
|
+
velocityY: 0,
|
|
127
|
+
deltaX: 0,
|
|
128
|
+
deltaY: 0,
|
|
129
|
+
currentTime: 0,
|
|
130
|
+
data: undefined,
|
|
131
|
+
isScrolling: true,
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* If `true`, the content will scroll behind the headers
|
|
135
|
+
* and footers. This effect can easily be seen by setting the toolbar
|
|
136
|
+
* to transparent.
|
|
137
|
+
*/
|
|
138
|
+
this.fullscreen = false;
|
|
139
|
+
/**
|
|
140
|
+
* Controls where the fixed content is placed relative to the main content
|
|
141
|
+
* in the DOM. This can be used to control the order in which fixed elements
|
|
142
|
+
* receive keyboard focus.
|
|
143
|
+
* For example, if a FAB in the fixed slot should receive keyboard focus before
|
|
144
|
+
* the main page content, set this property to `'before'`.
|
|
145
|
+
*/
|
|
146
|
+
this.fixedSlotPlacement = 'after';
|
|
147
|
+
/**
|
|
148
|
+
* If you want to enable the content scrolling in the X axis, set this property to `true`.
|
|
149
|
+
*/
|
|
150
|
+
this.scrollX = false;
|
|
151
|
+
/**
|
|
152
|
+
* If you want to disable the content scrolling in the Y axis, set this property to `false`.
|
|
153
|
+
*/
|
|
154
|
+
this.scrollY = true;
|
|
155
|
+
/**
|
|
156
|
+
* Because of performance reasons, ionScroll events are disabled by default, in order to enable them
|
|
157
|
+
* and start listening from (ionScroll), set this property to `true`.
|
|
158
|
+
*/
|
|
159
|
+
this.scrollEvents = false;
|
|
172
160
|
}
|
|
173
|
-
watchDog = null;
|
|
174
|
-
isScrolling = false;
|
|
175
|
-
lastScroll = 0;
|
|
176
|
-
queued = false;
|
|
177
|
-
cTop = -1;
|
|
178
|
-
cBottom = -1;
|
|
179
|
-
scrollEl;
|
|
180
|
-
backgroundContentEl;
|
|
181
|
-
isMainContent = true;
|
|
182
|
-
resizeTimeout = null;
|
|
183
|
-
fullscreenResizeObserver;
|
|
184
|
-
inheritedAttributes = {};
|
|
185
|
-
tabsElement = null;
|
|
186
|
-
tabsLoadCallback;
|
|
187
|
-
// Detail is used in a hot loop in the scroll event, by allocating it here
|
|
188
|
-
// V8 will be able to inline any read/write to it since it's a monomorphic class.
|
|
189
|
-
// https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html
|
|
190
|
-
detail = {
|
|
191
|
-
scrollTop: 0,
|
|
192
|
-
scrollLeft: 0,
|
|
193
|
-
type: 'scroll',
|
|
194
|
-
event: undefined,
|
|
195
|
-
startX: 0,
|
|
196
|
-
startY: 0,
|
|
197
|
-
startTime: 0,
|
|
198
|
-
currentX: 0,
|
|
199
|
-
currentY: 0,
|
|
200
|
-
velocityX: 0,
|
|
201
|
-
velocityY: 0,
|
|
202
|
-
deltaX: 0,
|
|
203
|
-
deltaY: 0,
|
|
204
|
-
currentTime: 0,
|
|
205
|
-
data: undefined,
|
|
206
|
-
isScrolling: true,
|
|
207
|
-
};
|
|
208
|
-
get el() { return index.getElement(this); }
|
|
209
|
-
/**
|
|
210
|
-
* The color to use from your application's color palette.
|
|
211
|
-
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
212
|
-
* For more information on colors, see [theming](/docs/theming/basics).
|
|
213
|
-
*/
|
|
214
|
-
color;
|
|
215
|
-
/**
|
|
216
|
-
* If `true`, the content will scroll behind the headers
|
|
217
|
-
* and footers. This effect can easily be seen by setting the toolbar
|
|
218
|
-
* to transparent.
|
|
219
|
-
*/
|
|
220
|
-
fullscreen = false;
|
|
221
161
|
fullscreenChanged() {
|
|
222
162
|
this.setupFullscreenResizeObserver();
|
|
223
163
|
}
|
|
224
|
-
/**
|
|
225
|
-
* Controls where the fixed content is placed relative to the main content
|
|
226
|
-
* in the DOM. This can be used to control the order in which fixed elements
|
|
227
|
-
* receive keyboard focus.
|
|
228
|
-
* For example, if a FAB in the fixed slot should receive keyboard focus before
|
|
229
|
-
* the main page content, set this property to `'before'`.
|
|
230
|
-
*/
|
|
231
|
-
fixedSlotPlacement = 'after';
|
|
232
|
-
/**
|
|
233
|
-
* If `true` and the content does not cause an overflow scroll, the scroll interaction will cause a bounce.
|
|
234
|
-
* If the content exceeds the bounds of ionContent, nothing will change.
|
|
235
|
-
* Note, this does not disable the system bounce on iOS. That is an OS level setting.
|
|
236
|
-
*/
|
|
237
|
-
forceOverscroll;
|
|
238
|
-
/**
|
|
239
|
-
* If you want to enable the content scrolling in the X axis, set this property to `true`.
|
|
240
|
-
*/
|
|
241
|
-
scrollX = false;
|
|
242
|
-
/**
|
|
243
|
-
* If you want to disable the content scrolling in the Y axis, set this property to `false`.
|
|
244
|
-
*/
|
|
245
|
-
scrollY = true;
|
|
246
|
-
/**
|
|
247
|
-
* Because of performance reasons, ionScroll events are disabled by default, in order to enable them
|
|
248
|
-
* and start listening from (ionScroll), set this property to `true`.
|
|
249
|
-
*/
|
|
250
|
-
scrollEvents = false;
|
|
251
|
-
/**
|
|
252
|
-
* Emitted when the scroll has started. This event is disabled by default.
|
|
253
|
-
* Set `scrollEvents` to `true` to enable.
|
|
254
|
-
*/
|
|
255
|
-
ionScrollStart;
|
|
256
|
-
/**
|
|
257
|
-
* Emitted while scrolling. This event is disabled by default.
|
|
258
|
-
* Set `scrollEvents` to `true` to enable.
|
|
259
|
-
*/
|
|
260
|
-
ionScroll;
|
|
261
|
-
/**
|
|
262
|
-
* Emitted when the scroll has ended. This event is disabled by default.
|
|
263
|
-
* Set `scrollEvents` to `true` to enable.
|
|
264
|
-
*/
|
|
265
|
-
ionScrollEnd;
|
|
266
164
|
componentWillLoad() {
|
|
267
165
|
this.inheritedAttributes = helpers.inheritAriaAttributes(this.el);
|
|
268
166
|
}
|
|
@@ -401,9 +299,8 @@ const Content = class {
|
|
|
401
299
|
this.resize();
|
|
402
300
|
}, 100);
|
|
403
301
|
}
|
|
404
|
-
shouldForceOverscroll() {
|
|
302
|
+
shouldForceOverscroll(mode) {
|
|
405
303
|
const { forceOverscroll } = this;
|
|
406
|
-
const mode = ionicGlobal.getIonMode(this);
|
|
407
304
|
return forceOverscroll === undefined ? mode === 'ios' && ionicGlobal.isPlatform('ios') : forceOverscroll;
|
|
408
305
|
}
|
|
409
306
|
resize() {
|
|
@@ -599,12 +496,13 @@ const Content = class {
|
|
|
599
496
|
render() {
|
|
600
497
|
const { fixedSlotPlacement, inheritedAttributes, isMainContent, scrollX, scrollY, el } = this;
|
|
601
498
|
const rtl = dir.isRTL(el) ? 'rtl' : 'ltr';
|
|
602
|
-
const
|
|
603
|
-
const
|
|
604
|
-
const
|
|
499
|
+
const theme$1 = ionicGlobal.getIonTheme(this);
|
|
500
|
+
const mode = ionicGlobal.getIonMode(this, theme$1);
|
|
501
|
+
const forceOverscroll = this.shouldForceOverscroll(mode);
|
|
502
|
+
const transitionShadow = theme$1 === 'ios';
|
|
605
503
|
this.resize();
|
|
606
|
-
return (index.h(index.Host, { key: '
|
|
607
|
-
[
|
|
504
|
+
return (index.h(index.Host, Object.assign({ key: '6be663a1c94186ab306827797e0743d936616b8f', role: isMainContent ? 'main' : undefined, class: theme.createColorClasses(this.color, {
|
|
505
|
+
[theme$1]: true,
|
|
608
506
|
'content-fullscreen': this.fullscreen,
|
|
609
507
|
'content-sizing': theme.hostContext('ion-popover', this.el),
|
|
610
508
|
overscroll: forceOverscroll,
|
|
@@ -612,13 +510,14 @@ const Content = class {
|
|
|
612
510
|
}), style: {
|
|
613
511
|
'--offset-top': `${this.cTop}px`,
|
|
614
512
|
'--offset-bottom': `${this.cBottom}px`,
|
|
615
|
-
},
|
|
513
|
+
} }, inheritedAttributes), index.h("div", { key: '237014db6e83ca2651eed9968b2d909af3658d14', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? index.h("slot", { name: "fixed" }) : null, index.h("div", { key: 'cafc39be73fc71223f57d283b46c94ddb5605ab3', class: {
|
|
616
514
|
'inner-scroll': true,
|
|
617
515
|
'scroll-x': scrollX,
|
|
618
516
|
'scroll-y': scrollY,
|
|
619
517
|
overscroll: (scrollX || scrollY) && forceOverscroll,
|
|
620
|
-
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: '
|
|
518
|
+
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: 'b93929f7d6d8512a042892532f58b5fbbafec449' })), 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));
|
|
621
519
|
}
|
|
520
|
+
get el() { return index.getElement(this); }
|
|
622
521
|
static get watchers() { return {
|
|
623
522
|
"fullscreen": [{
|
|
624
523
|
"fullscreenChanged": 0
|
|
@@ -626,11 +525,12 @@ const Content = class {
|
|
|
626
525
|
}; }
|
|
627
526
|
};
|
|
628
527
|
const getParentElement = (el) => {
|
|
528
|
+
var _a;
|
|
629
529
|
if (el.parentElement) {
|
|
630
530
|
// normal element with a parent element
|
|
631
531
|
return el.parentElement;
|
|
632
532
|
}
|
|
633
|
-
if (el.parentNode
|
|
533
|
+
if ((_a = el.parentNode) === null || _a === void 0 ? void 0 : _a.host) {
|
|
634
534
|
// shadow dom's document fragment
|
|
635
535
|
return el.parentNode.host;
|
|
636
536
|
}
|
|
@@ -646,7 +546,8 @@ const getPageElement = (el) => {
|
|
|
646
546
|
* between the popover and the edges of the screen. But if the popover contains
|
|
647
547
|
* its own page element, we should use that instead.
|
|
648
548
|
*/
|
|
649
|
-
const
|
|
549
|
+
const appRootSelector = index.config.get('appRootSelector', 'ion-app');
|
|
550
|
+
const page = el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner, .popover-content`);
|
|
650
551
|
if (page) {
|
|
651
552
|
return page;
|
|
652
553
|
}
|
|
@@ -710,34 +611,100 @@ const handleFooterFade = (scrollEl, baseEl) => {
|
|
|
710
611
|
});
|
|
711
612
|
};
|
|
712
613
|
|
|
713
|
-
const
|
|
614
|
+
const ionicFooterMdCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}ion-footer.footer-scroll-effect-hide{-webkit-transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1), -webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1)}ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){ion-footer.footer-scroll-effect-hide,ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transition:none;transition:none}}.footer-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.footer-md.footer-collapse-fade{-webkit-box-shadow:none;box-shadow:none}.footer-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
|
|
615
|
+
|
|
616
|
+
const footerIosCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}ion-footer.footer-scroll-effect-hide{-webkit-transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1), -webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1)}ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){ion-footer.footer-scroll-effect-hide,ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transition:none;transition:none}}.footer-ios ion-toolbar:first-of-type{--border-width:0.55px 0 0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.footer-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.footer-translucent-ios ion-toolbar{--opacity:0.8}}.footer-ios.ion-no-border ion-toolbar:first-of-type{--border-width:0}`;
|
|
714
617
|
|
|
715
|
-
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-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.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
|
|
618
|
+
const footerMdCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}ion-footer.footer-scroll-effect-hide{-webkit-transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1), -webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1)}ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){ion-footer.footer-scroll-effect-hide,ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transition:none;transition:none}}.footer-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.footer-md.footer-collapse-fade{-webkit-box-shadow:none;box-shadow:none}.footer-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
|
|
716
619
|
|
|
717
620
|
const Footer = class {
|
|
718
621
|
constructor(hostRef) {
|
|
719
622
|
index.registerInstance(this, hostRef);
|
|
623
|
+
this.keyboardCtrl = null;
|
|
624
|
+
this.keyboardCtrlPromise = null;
|
|
625
|
+
this.scrollHideCtrlPromise = null;
|
|
626
|
+
this.hasWarnedCollapse = false;
|
|
627
|
+
this.fadeSetupId = 0;
|
|
628
|
+
this.keyboardVisible = false;
|
|
629
|
+
/**
|
|
630
|
+
* If `true`, the footer will be translucent.
|
|
631
|
+
* Only applies when the theme is `"ios"` and the device supports
|
|
632
|
+
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
633
|
+
*
|
|
634
|
+
* Note: In order to scroll content behind the footer, the `fullscreen`
|
|
635
|
+
* attribute needs to be set on the content.
|
|
636
|
+
*/
|
|
637
|
+
this.translucent = false;
|
|
638
|
+
this.checkCollapsibleFooter = async () => {
|
|
639
|
+
const { scrollEffect, collapse } = this;
|
|
640
|
+
if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
|
|
641
|
+
this.hasWarnedCollapse = true;
|
|
642
|
+
index.printIonWarning(`[ion-footer] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-footer scroll-effect="${collapse}">`, this.el);
|
|
643
|
+
}
|
|
644
|
+
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
645
|
+
// Skip teardown/rebuild if the effect hasn't changed.
|
|
646
|
+
// This prevents keyboard toggles (which trigger re-renders via
|
|
647
|
+
// @State keyboardVisible) from destroying the scroll controller
|
|
648
|
+
// and resetting isHidden.
|
|
649
|
+
if (effect === this.activeEffect) {
|
|
650
|
+
return;
|
|
651
|
+
}
|
|
652
|
+
const hasHide = effect === 'hide';
|
|
653
|
+
const hasFade = effect === 'fade';
|
|
654
|
+
this.destroyCollapsibleFooter();
|
|
655
|
+
const appRootSelector = index.config.get('appRootSelector', 'ion-app');
|
|
656
|
+
const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
|
|
657
|
+
const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
|
|
658
|
+
if (hasHide && contentEl) {
|
|
659
|
+
this.activeEffect = effect;
|
|
660
|
+
await this.setupScrollEffectHide(contentEl);
|
|
661
|
+
return;
|
|
662
|
+
}
|
|
663
|
+
// fade via the deprecated `collapse` prop is iOS-only.
|
|
664
|
+
// fade via the new `scrollEffect` prop works in all themes.
|
|
665
|
+
const isModeRestricted = scrollEffect === undefined && ionicGlobal.getIonTheme(this) !== 'ios';
|
|
666
|
+
if (hasFade && !isModeRestricted) {
|
|
667
|
+
if (!contentEl) {
|
|
668
|
+
index$1.printIonContentErrorMsg(this.el);
|
|
669
|
+
return;
|
|
670
|
+
}
|
|
671
|
+
this.setupFadeFooter(contentEl);
|
|
672
|
+
this.activeEffect = effect;
|
|
673
|
+
}
|
|
674
|
+
};
|
|
675
|
+
this.setupScrollEffectHide = async (contentEl) => {
|
|
676
|
+
const setupPromise = scrollHideController.createScrollHideController(contentEl, {
|
|
677
|
+
el: this.el,
|
|
678
|
+
cssVar: '--internal-footer-hide-height',
|
|
679
|
+
hiddenClass: 'footer-scroll-hidden',
|
|
680
|
+
contentPartnerClass: 'content-footer-hide-scroll-partner',
|
|
681
|
+
contentHiddenClass: 'content-footer-hide-scroll-hidden',
|
|
682
|
+
});
|
|
683
|
+
this.scrollHideCtrlPromise = setupPromise;
|
|
684
|
+
const controller = await setupPromise;
|
|
685
|
+
if (this.scrollHideCtrlPromise === setupPromise) {
|
|
686
|
+
this.scrollHideCtrlPromise = null;
|
|
687
|
+
controller.init();
|
|
688
|
+
this.scrollHideCtrl = controller;
|
|
689
|
+
}
|
|
690
|
+
};
|
|
691
|
+
this.setupFadeFooter = async (contentEl) => {
|
|
692
|
+
const setupId = ++this.fadeSetupId;
|
|
693
|
+
const scrollEl = await index$1.getScrollElement(contentEl);
|
|
694
|
+
if (this.fadeSetupId !== setupId) {
|
|
695
|
+
return;
|
|
696
|
+
}
|
|
697
|
+
this.scrollEl = scrollEl;
|
|
698
|
+
/**
|
|
699
|
+
* Handle fading of toolbars on scroll
|
|
700
|
+
*/
|
|
701
|
+
this.contentScrollCallback = () => {
|
|
702
|
+
handleFooterFade(scrollEl, this.el);
|
|
703
|
+
};
|
|
704
|
+
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
705
|
+
handleFooterFade(scrollEl, this.el);
|
|
706
|
+
};
|
|
720
707
|
}
|
|
721
|
-
scrollEl;
|
|
722
|
-
contentScrollCallback;
|
|
723
|
-
keyboardCtrl = null;
|
|
724
|
-
keyboardCtrlPromise = null;
|
|
725
|
-
keyboardVisible = false;
|
|
726
|
-
get el() { return index.getElement(this); }
|
|
727
|
-
/**
|
|
728
|
-
* Describes the scroll effect that will be applied to the footer.
|
|
729
|
-
* Only applies in iOS mode.
|
|
730
|
-
*/
|
|
731
|
-
collapse;
|
|
732
|
-
/**
|
|
733
|
-
* If `true`, the footer will be translucent.
|
|
734
|
-
* Only applies when the mode is `"ios"` and the device supports
|
|
735
|
-
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
736
|
-
*
|
|
737
|
-
* Note: In order to scroll content behind the footer, the `fullscreen`
|
|
738
|
-
* attribute needs to be set on the content.
|
|
739
|
-
*/
|
|
740
|
-
translucent = false;
|
|
741
708
|
componentDidLoad() {
|
|
742
709
|
this.checkCollapsibleFooter();
|
|
743
710
|
}
|
|
@@ -745,7 +712,7 @@ const Footer = class {
|
|
|
745
712
|
this.checkCollapsibleFooter();
|
|
746
713
|
}
|
|
747
714
|
async connectedCallback() {
|
|
748
|
-
const promise =
|
|
715
|
+
const promise = scrollHideController.createKeyboardController(async (keyboardOpen, waitForResize) => {
|
|
749
716
|
/**
|
|
750
717
|
* If the keyboard is hiding, then we need to wait
|
|
751
718
|
* for the webview to resize. Otherwise, the footer
|
|
@@ -772,6 +739,7 @@ const Footer = class {
|
|
|
772
739
|
}
|
|
773
740
|
}
|
|
774
741
|
disconnectedCallback() {
|
|
742
|
+
this.destroyCollapsibleFooter();
|
|
775
743
|
if (this.keyboardCtrlPromise) {
|
|
776
744
|
this.keyboardCtrlPromise.then((ctrl) => ctrl.destroy());
|
|
777
745
|
this.keyboardCtrlPromise = null;
|
|
@@ -781,58 +749,44 @@ const Footer = class {
|
|
|
781
749
|
this.keyboardCtrl = null;
|
|
782
750
|
}
|
|
783
751
|
}
|
|
784
|
-
checkCollapsibleFooter = () => {
|
|
785
|
-
const mode = ionicGlobal.getIonMode(this);
|
|
786
|
-
if (mode !== 'ios') {
|
|
787
|
-
return;
|
|
788
|
-
}
|
|
789
|
-
const { collapse } = this;
|
|
790
|
-
const hasFade = collapse === 'fade';
|
|
791
|
-
this.destroyCollapsibleFooter();
|
|
792
|
-
if (hasFade) {
|
|
793
|
-
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
794
|
-
const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
|
|
795
|
-
if (!contentEl) {
|
|
796
|
-
index$1.printIonContentErrorMsg(this.el);
|
|
797
|
-
return;
|
|
798
|
-
}
|
|
799
|
-
this.setupFadeFooter(contentEl);
|
|
800
|
-
}
|
|
801
|
-
};
|
|
802
|
-
setupFadeFooter = async (contentEl) => {
|
|
803
|
-
const scrollEl = (this.scrollEl = await index$1.getScrollElement(contentEl));
|
|
804
|
-
/**
|
|
805
|
-
* Handle fading of toolbars on scroll
|
|
806
|
-
*/
|
|
807
|
-
this.contentScrollCallback = () => {
|
|
808
|
-
handleFooterFade(scrollEl, this.el);
|
|
809
|
-
};
|
|
810
|
-
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
811
|
-
handleFooterFade(scrollEl, this.el);
|
|
812
|
-
};
|
|
813
752
|
destroyCollapsibleFooter() {
|
|
753
|
+
this.activeEffect = undefined;
|
|
754
|
+
this.fadeSetupId++;
|
|
755
|
+
this.scrollHideCtrlPromise = null;
|
|
756
|
+
if (this.scrollHideCtrl) {
|
|
757
|
+
this.scrollHideCtrl.destroy();
|
|
758
|
+
this.scrollHideCtrl = undefined;
|
|
759
|
+
}
|
|
814
760
|
if (this.scrollEl && this.contentScrollCallback) {
|
|
815
761
|
this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
|
|
816
762
|
this.contentScrollCallback = undefined;
|
|
817
763
|
}
|
|
818
764
|
}
|
|
819
765
|
render() {
|
|
820
|
-
const { translucent, collapse } = this;
|
|
821
|
-
const
|
|
766
|
+
const { translucent, scrollEffect, collapse } = this;
|
|
767
|
+
const theme = ionicGlobal.getIonTheme(this);
|
|
768
|
+
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
769
|
+
// fade via the deprecated `collapse` prop is iOS-only.
|
|
770
|
+
const isModeRestricted = scrollEffect === undefined && theme !== 'ios';
|
|
771
|
+
const hasHide = effect === 'hide';
|
|
772
|
+
const hasFade = effect === 'fade' && !isModeRestricted;
|
|
822
773
|
const tabs = this.el.closest('ion-tabs');
|
|
823
|
-
const tabBar = tabs
|
|
824
|
-
return (index.h(index.Host, { key: '
|
|
825
|
-
[
|
|
774
|
+
const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
|
|
775
|
+
return (index.h(index.Host, { key: 'a968cbaa37aa5f66f852b393d17a5617892d3708', role: "contentinfo", class: {
|
|
776
|
+
[theme]: true,
|
|
826
777
|
// Used internally for styling
|
|
827
|
-
[`footer-${
|
|
778
|
+
[`footer-${theme}`]: true,
|
|
828
779
|
[`footer-translucent`]: translucent,
|
|
829
|
-
[`footer-translucent-${
|
|
780
|
+
[`footer-translucent-${theme}`]: translucent,
|
|
830
781
|
['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
|
|
831
|
-
|
|
832
|
-
|
|
782
|
+
'footer-collapse-fade': hasFade,
|
|
783
|
+
'footer-scroll-effect-hide': hasHide,
|
|
784
|
+
} }, theme === 'ios' && translucent && index.h("div", { key: '5116db55a74d2a738a00c177d797dc03146ea129', class: "footer-background" }), index.h("slot", { key: 'b61dd28630507aa01c047e119bbc367d26c5be93' })));
|
|
833
785
|
}
|
|
786
|
+
get el() { return index.getElement(this); }
|
|
834
787
|
};
|
|
835
788
|
Footer.style = {
|
|
789
|
+
ionic: ionicFooterMdCss(),
|
|
836
790
|
ios: footerIosCss(),
|
|
837
791
|
md: footerMdCss()
|
|
838
792
|
};
|
|
@@ -884,13 +838,14 @@ const handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {
|
|
|
884
838
|
});
|
|
885
839
|
};
|
|
886
840
|
const setToolbarBackgroundOpacity = (headerEl, opacity) => {
|
|
841
|
+
var _a;
|
|
887
842
|
/**
|
|
888
843
|
* Fading in the backdrop opacity
|
|
889
844
|
* should happen after the large title
|
|
890
845
|
* has collapsed, so it is handled
|
|
891
846
|
* by handleHeaderFade()
|
|
892
847
|
*/
|
|
893
|
-
if (headerEl.collapse === 'fade') {
|
|
848
|
+
if (((_a = headerEl.scrollEffect) !== null && _a !== void 0 ? _a : headerEl.collapse) === 'fade') {
|
|
894
849
|
return;
|
|
895
850
|
}
|
|
896
851
|
if (opacity === undefined) {
|
|
@@ -1048,57 +1003,79 @@ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
|
|
|
1048
1003
|
* Get the role type for the ion-header.
|
|
1049
1004
|
*
|
|
1050
1005
|
* @param isInsideMenu If ion-header is inside ion-menu.
|
|
1051
|
-
* @
|
|
1052
|
-
*
|
|
1053
|
-
*
|
|
1054
|
-
* mode, otherwise 'banner'.
|
|
1006
|
+
* @returns 'none' if inside ion-menu, otherwise 'banner'.
|
|
1007
|
+
* Condensed headers start as 'banner' and have their role
|
|
1008
|
+
* toggled dynamically by setHeaderActive() on scroll.
|
|
1055
1009
|
*/
|
|
1056
|
-
const getRoleType = (isInsideMenu
|
|
1010
|
+
const getRoleType = (isInsideMenu) => {
|
|
1057
1011
|
// If the header is inside a menu, it should not have the banner role.
|
|
1058
1012
|
if (isInsideMenu) {
|
|
1059
1013
|
return ROLE_NONE;
|
|
1060
1014
|
}
|
|
1061
|
-
/**
|
|
1062
|
-
* Only apply role="none" to `md` mode condensed headers
|
|
1063
|
-
* since the large header is never shown.
|
|
1064
|
-
*/
|
|
1065
|
-
if (isCondensed && mode === 'md') {
|
|
1066
|
-
return ROLE_NONE;
|
|
1067
|
-
}
|
|
1068
1015
|
// Default to banner role.
|
|
1069
1016
|
return ROLE_BANNER;
|
|
1070
1017
|
};
|
|
1071
1018
|
|
|
1072
|
-
const
|
|
1019
|
+
const headerIonicCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header:not(.header-collapse-main):has(~ion-content ion-header.header-collapse-condense){opacity:0}.header-collapse-condense-hidden{display:none}ion-header.header-scroll-effect-hide{-webkit-transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);opacity:0}@media (prefers-reduced-motion: reduce){ion-header.header-scroll-effect-hide,ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transition:none;transition:none}}ion-header{z-index:10}ion-header.header-divider{border-bottom:var(--token-border-size-025, var(--token-scale-025, 1px)) var(--token-border-style-solid, solid) var(--token-border-default, var(--token-primitives-neutral-400, #d5d5d5))}ion-toolbar+ion-toolbar{--padding-start:var(--token-space-400, var(--token-scale-400, 16px));--padding-end:var(--token-space-400, var(--token-scale-400, 16px))}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(var(--token-scale-100, 4px));backdrop-filter:saturate(180%) blur(var(--token-scale-100, 4px))}.header-translucent-ionic ion-toolbar{--opacity:0.7}}`;
|
|
1073
1020
|
|
|
1074
|
-
const
|
|
1021
|
+
const headerIosCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header:not(.header-collapse-main):has(~ion-content ion-header.header-collapse-condense){opacity:0}.header-collapse-condense-hidden{display:none}ion-header.header-scroll-effect-hide{-webkit-transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);opacity:0}@media (prefers-reduced-motion: reduce){ion-header.header-scroll-effect-hide,ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transition:none;transition:none}}ion-header{z-index:10}.header-ios ion-toolbar:last-of-type{--border-width:0 0 0.55px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.header-translucent-ios ion-toolbar{--opacity:0.8}.header-collapse-condense-inactive .header-background{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.header-ios.ion-no-border ion-toolbar:last-of-type{--border-width:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}`;
|
|
1022
|
+
|
|
1023
|
+
const headerMdCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header:not(.header-collapse-main):has(~ion-content ion-header.header-collapse-condense){opacity:0}.header-collapse-condense-hidden{display:none}ion-header.header-scroll-effect-hide{-webkit-transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);opacity:0}@media (prefers-reduced-motion: reduce){ion-header.header-scroll-effect-hide,ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transition:none;transition:none}}ion-header{z-index:10}.header-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.header-md.header-collapse-condense{-webkit-box-shadow:none;box-shadow:none}.header-md.header-collapse-condense-inactive:not(.header-collapse-condense){-webkit-box-shadow:none;box-shadow:none}.header-md.header-collapse-fade{-webkit-box-shadow:none;box-shadow:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
|
|
1075
1024
|
|
|
1076
1025
|
const Header = class {
|
|
1077
1026
|
constructor(hostRef) {
|
|
1078
1027
|
index.registerInstance(this, hostRef);
|
|
1028
|
+
this.inheritedAttributes = {};
|
|
1029
|
+
this.scrollHideCtrlPromise = null;
|
|
1030
|
+
this.hasWarnedCollapse = false;
|
|
1031
|
+
this.fadeCondenseSetupId = 0;
|
|
1032
|
+
/**
|
|
1033
|
+
* If `true`, the header will have a line at the bottom.
|
|
1034
|
+
* TODO(ROU-10855): add support for this prop on ios/md themes
|
|
1035
|
+
*/
|
|
1036
|
+
this.divider = false;
|
|
1037
|
+
/**
|
|
1038
|
+
* If `true`, the header will be translucent.
|
|
1039
|
+
* Only applies when the theme is `"ios"` or `"ionic"` and the device supports
|
|
1040
|
+
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
1041
|
+
*
|
|
1042
|
+
* Note: In order to scroll content behind the header, the `fullscreen`
|
|
1043
|
+
* attribute needs to be set on the content.
|
|
1044
|
+
*/
|
|
1045
|
+
this.translucent = false;
|
|
1046
|
+
this.setupScrollEffectHide = async (contentEl) => {
|
|
1047
|
+
const setupPromise = scrollHideController.createScrollHideController(contentEl, {
|
|
1048
|
+
el: this.el,
|
|
1049
|
+
cssVar: '--internal-header-hide-height',
|
|
1050
|
+
hiddenClass: 'header-scroll-hidden',
|
|
1051
|
+
contentPartnerClass: 'content-header-hide-scroll-partner',
|
|
1052
|
+
contentHiddenClass: 'content-header-hide-scroll-hidden',
|
|
1053
|
+
});
|
|
1054
|
+
this.scrollHideCtrlPromise = setupPromise;
|
|
1055
|
+
const controller = await setupPromise;
|
|
1056
|
+
if (this.scrollHideCtrlPromise === setupPromise) {
|
|
1057
|
+
this.scrollHideCtrlPromise = null;
|
|
1058
|
+
controller.init();
|
|
1059
|
+
this.scrollHideCtrl = controller;
|
|
1060
|
+
}
|
|
1061
|
+
};
|
|
1062
|
+
this.setupFadeHeader = async (contentEl, condenseHeader) => {
|
|
1063
|
+
const setupId = ++this.fadeCondenseSetupId;
|
|
1064
|
+
const scrollEl = await index$1.getScrollElement(contentEl);
|
|
1065
|
+
if (this.fadeCondenseSetupId !== setupId) {
|
|
1066
|
+
return;
|
|
1067
|
+
}
|
|
1068
|
+
this.scrollEl = scrollEl;
|
|
1069
|
+
/**
|
|
1070
|
+
* Handle fading of toolbars on scroll
|
|
1071
|
+
*/
|
|
1072
|
+
this.contentScrollCallback = () => {
|
|
1073
|
+
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
1074
|
+
};
|
|
1075
|
+
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
1076
|
+
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
1077
|
+
};
|
|
1079
1078
|
}
|
|
1080
|
-
scrollEl;
|
|
1081
|
-
contentScrollCallback;
|
|
1082
|
-
intersectionObserver;
|
|
1083
|
-
collapsibleMainHeader;
|
|
1084
|
-
inheritedAttributes = {};
|
|
1085
|
-
get el() { return index.getElement(this); }
|
|
1086
|
-
/**
|
|
1087
|
-
* Describes the scroll effect that will be applied to the header.
|
|
1088
|
-
* Only applies in iOS mode.
|
|
1089
|
-
*
|
|
1090
|
-
* Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
|
|
1091
|
-
*/
|
|
1092
|
-
collapse;
|
|
1093
|
-
/**
|
|
1094
|
-
* If `true`, the header will be translucent.
|
|
1095
|
-
* Only applies when the mode is `"ios"` and the device supports
|
|
1096
|
-
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
1097
|
-
*
|
|
1098
|
-
* Note: In order to scroll content behind the header, the `fullscreen`
|
|
1099
|
-
* attribute needs to be set on the content.
|
|
1100
|
-
*/
|
|
1101
|
-
translucent = false;
|
|
1102
1079
|
componentWillLoad() {
|
|
1103
1080
|
this.inheritedAttributes = helpers.inheritAriaAttributes(this.el);
|
|
1104
1081
|
}
|
|
@@ -1112,48 +1089,63 @@ const Header = class {
|
|
|
1112
1089
|
this.destroyCollapsibleHeader();
|
|
1113
1090
|
}
|
|
1114
1091
|
async checkCollapsibleHeader() {
|
|
1115
|
-
const
|
|
1116
|
-
if (
|
|
1092
|
+
const { scrollEffect, collapse } = this;
|
|
1093
|
+
if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
|
|
1094
|
+
this.hasWarnedCollapse = true;
|
|
1095
|
+
index.printIonWarning(`[ion-header] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-header scroll-effect="${collapse}">`, this.el);
|
|
1096
|
+
}
|
|
1097
|
+
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
1098
|
+
// Skip teardown/rebuild if the effect hasn't changed.
|
|
1099
|
+
// This prevents re-renders from destroying the scroll controller
|
|
1100
|
+
// and resetting isHidden.
|
|
1101
|
+
if (effect === this.activeEffect) {
|
|
1117
1102
|
return;
|
|
1118
1103
|
}
|
|
1119
|
-
const
|
|
1120
|
-
const hasCondense =
|
|
1121
|
-
const hasFade =
|
|
1104
|
+
const hasHide = effect === 'hide';
|
|
1105
|
+
const hasCondense = effect === 'condense';
|
|
1106
|
+
const hasFade = effect === 'fade';
|
|
1122
1107
|
this.destroyCollapsibleHeader();
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1108
|
+
const appRootSelector = index.config.get('appRootSelector', 'ion-app');
|
|
1109
|
+
const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
|
|
1110
|
+
const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
|
|
1111
|
+
if (hasHide && contentEl) {
|
|
1112
|
+
this.activeEffect = effect;
|
|
1113
|
+
await this.setupScrollEffectHide(contentEl);
|
|
1114
|
+
return;
|
|
1115
|
+
}
|
|
1116
|
+
// condense/fade via the deprecated `collapse` prop are iOS-only.
|
|
1117
|
+
// condense/fade via the new `scrollEffect` prop work in all themes.
|
|
1118
|
+
const isModeRestricted = scrollEffect === undefined && ionicGlobal.getIonTheme(this) !== 'ios';
|
|
1119
|
+
if (hasCondense && !isModeRestricted) {
|
|
1126
1120
|
// Cloned elements are always needed in iOS transition
|
|
1127
1121
|
index.writeTask(() => {
|
|
1128
1122
|
const title = cloneElement('ion-title');
|
|
1129
1123
|
title.size = 'large';
|
|
1130
1124
|
cloneElement('ion-back-button');
|
|
1131
1125
|
});
|
|
1132
|
-
await this.setupCondenseHeader(contentEl, pageEl);
|
|
1126
|
+
const didSetup = await this.setupCondenseHeader(contentEl, pageEl);
|
|
1127
|
+
if (didSetup) {
|
|
1128
|
+
this.activeEffect = effect;
|
|
1129
|
+
}
|
|
1133
1130
|
}
|
|
1134
|
-
else if (hasFade) {
|
|
1135
|
-
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
1136
|
-
const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
|
|
1131
|
+
else if (hasFade && !isModeRestricted) {
|
|
1137
1132
|
if (!contentEl) {
|
|
1138
1133
|
index$1.printIonContentErrorMsg(this.el);
|
|
1139
1134
|
return;
|
|
1140
1135
|
}
|
|
1141
|
-
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
|
|
1136
|
+
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"],ion-header[scroll-effect="condense"]');
|
|
1137
|
+
this.activeEffect = effect;
|
|
1142
1138
|
await this.setupFadeHeader(contentEl, condenseHeader);
|
|
1143
1139
|
}
|
|
1144
1140
|
}
|
|
1145
|
-
setupFadeHeader = async (contentEl, condenseHeader) => {
|
|
1146
|
-
const scrollEl = (this.scrollEl = await index$1.getScrollElement(contentEl));
|
|
1147
|
-
/**
|
|
1148
|
-
* Handle fading of toolbars on scroll
|
|
1149
|
-
*/
|
|
1150
|
-
this.contentScrollCallback = () => {
|
|
1151
|
-
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
1152
|
-
};
|
|
1153
|
-
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
1154
|
-
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
1155
|
-
};
|
|
1156
1141
|
destroyCollapsibleHeader() {
|
|
1142
|
+
this.activeEffect = undefined;
|
|
1143
|
+
this.fadeCondenseSetupId++;
|
|
1144
|
+
this.scrollHideCtrlPromise = null;
|
|
1145
|
+
if (this.scrollHideCtrl) {
|
|
1146
|
+
this.scrollHideCtrl.destroy();
|
|
1147
|
+
this.scrollHideCtrl = undefined;
|
|
1148
|
+
}
|
|
1157
1149
|
if (this.intersectionObserver) {
|
|
1158
1150
|
this.intersectionObserver.disconnect();
|
|
1159
1151
|
this.intersectionObserver = undefined;
|
|
@@ -1170,21 +1162,40 @@ const Header = class {
|
|
|
1170
1162
|
async setupCondenseHeader(contentEl, pageEl) {
|
|
1171
1163
|
if (!contentEl || !pageEl) {
|
|
1172
1164
|
index$1.printIonContentErrorMsg(this.el);
|
|
1173
|
-
return;
|
|
1165
|
+
return false;
|
|
1174
1166
|
}
|
|
1175
1167
|
if (typeof IntersectionObserver === 'undefined') {
|
|
1176
|
-
return;
|
|
1168
|
+
return false;
|
|
1169
|
+
}
|
|
1170
|
+
const setupId = ++this.fadeCondenseSetupId;
|
|
1171
|
+
const scrollEl = await index$1.getScrollElement(contentEl);
|
|
1172
|
+
if (this.fadeCondenseSetupId !== setupId) {
|
|
1173
|
+
return false;
|
|
1174
|
+
}
|
|
1175
|
+
this.scrollEl = scrollEl;
|
|
1176
|
+
/**
|
|
1177
|
+
* The condense effect requires an ion-title with size="large"
|
|
1178
|
+
* in the condense header. Without it, there is nothing to
|
|
1179
|
+
* collapse into the main header toolbar.
|
|
1180
|
+
*/
|
|
1181
|
+
const hasLargeTitle = this.el.querySelector('ion-title[size="large"]') !== null;
|
|
1182
|
+
if (!hasLargeTitle) {
|
|
1183
|
+
index.printIonWarning('[ion-header] - The condense scroll effect requires an <ion-title size="large"> in the condense header.', this.el);
|
|
1184
|
+
return false;
|
|
1177
1185
|
}
|
|
1178
|
-
this.scrollEl = await index$1.getScrollElement(contentEl);
|
|
1179
1186
|
const headers = pageEl.querySelectorAll('ion-header');
|
|
1180
|
-
this.collapsibleMainHeader = Array.from(headers).find((header) =>
|
|
1187
|
+
this.collapsibleMainHeader = Array.from(headers).find((header) => {
|
|
1188
|
+
var _a;
|
|
1189
|
+
const effect = (_a = header.scrollEffect) !== null && _a !== void 0 ? _a : header.collapse;
|
|
1190
|
+
return effect !== 'condense';
|
|
1191
|
+
});
|
|
1181
1192
|
if (!this.collapsibleMainHeader) {
|
|
1182
|
-
return;
|
|
1193
|
+
return false;
|
|
1183
1194
|
}
|
|
1184
1195
|
const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);
|
|
1185
1196
|
const scrollHeaderIndex = createHeaderIndex(this.el);
|
|
1186
1197
|
if (!mainHeaderIndex || !scrollHeaderIndex) {
|
|
1187
|
-
return;
|
|
1198
|
+
return false;
|
|
1188
1199
|
}
|
|
1189
1200
|
setHeaderActive(mainHeaderIndex, false);
|
|
1190
1201
|
setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);
|
|
@@ -1216,30 +1227,45 @@ const Header = class {
|
|
|
1216
1227
|
this.collapsibleMainHeader.classList.add('header-collapse-main');
|
|
1217
1228
|
}
|
|
1218
1229
|
});
|
|
1230
|
+
return true;
|
|
1219
1231
|
}
|
|
1220
1232
|
render() {
|
|
1221
|
-
const { translucent, inheritedAttributes } = this;
|
|
1222
|
-
const
|
|
1223
|
-
const
|
|
1224
|
-
|
|
1233
|
+
const { translucent, inheritedAttributes, divider, scrollEffect, collapse } = this;
|
|
1234
|
+
const theme$1 = ionicGlobal.getIonTheme(this);
|
|
1235
|
+
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
1236
|
+
// condense/fade via the deprecated `collapse` prop are iOS-only.
|
|
1237
|
+
const isModeRestricted = scrollEffect === undefined && theme$1 !== 'ios';
|
|
1238
|
+
const hasHide = effect === 'hide';
|
|
1239
|
+
const hasCondense = effect === 'condense' && !isModeRestricted && this.el.querySelector('ion-title[size="large"]') !== null;
|
|
1240
|
+
const hasFade = effect === 'fade' && !isModeRestricted;
|
|
1241
|
+
// The condense header should be hidden when
|
|
1242
|
+
// - deprecated collapse prop is used on non-iOS (mode restricted), or
|
|
1243
|
+
// - scrollEffect="condense" is set but no ion-title[size="large"] is present
|
|
1244
|
+
const isHiddenCondense = effect === 'condense' && !hasCondense;
|
|
1225
1245
|
// banner role must be at top level, so remove role if inside a menu
|
|
1226
|
-
const roleType = getRoleType(theme.hostContext('ion-menu', this.el)
|
|
1227
|
-
return (index.h(index.Host, { key: '
|
|
1228
|
-
[
|
|
1246
|
+
const roleType = isHiddenCondense ? 'none' : getRoleType(theme.hostContext('ion-menu', this.el));
|
|
1247
|
+
return (index.h(index.Host, Object.assign({ key: '41cc94124ed8dfb413deecfd3369facbbbd91096', role: roleType, class: {
|
|
1248
|
+
[theme$1]: true,
|
|
1229
1249
|
// Used internally for styling
|
|
1230
|
-
[`header-${
|
|
1250
|
+
[`header-${theme$1}`]: true,
|
|
1231
1251
|
[`header-translucent`]: this.translucent,
|
|
1232
|
-
[
|
|
1233
|
-
[
|
|
1234
|
-
|
|
1252
|
+
['header-collapse-condense']: hasCondense,
|
|
1253
|
+
['header-collapse-condense-hidden']: isHiddenCondense,
|
|
1254
|
+
['header-collapse-fade']: hasFade,
|
|
1255
|
+
[`header-translucent-${theme$1}`]: this.translucent,
|
|
1256
|
+
['header-divider']: divider,
|
|
1257
|
+
'header-scroll-effect-hide': hasHide,
|
|
1258
|
+
} }, inheritedAttributes), theme$1 !== 'md' && translucent && index.h("div", { key: 'bbf8d7571a1c1f07ddd03d806218b26a4b32e2c3', class: "header-background" }), index.h("slot", { key: '84cad2cdebcdc2902b7a19042a83d8c56a19612d' })));
|
|
1235
1259
|
}
|
|
1260
|
+
get el() { return index.getElement(this); }
|
|
1236
1261
|
};
|
|
1237
1262
|
Header.style = {
|
|
1263
|
+
ionic: headerIonicCss(),
|
|
1238
1264
|
ios: headerIosCss(),
|
|
1239
1265
|
md: headerMdCss()
|
|
1240
1266
|
};
|
|
1241
1267
|
|
|
1242
|
-
const routerOutletCss = () => `:host{
|
|
1268
|
+
const routerOutletCss = () => `:host{right:0;left:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
|
|
1243
1269
|
|
|
1244
1270
|
const RouterOutlet = class {
|
|
1245
1271
|
constructor(hostRef) {
|
|
@@ -1247,47 +1273,22 @@ const RouterOutlet = class {
|
|
|
1247
1273
|
this.ionNavWillLoad = index.createEvent(this, "ionNavWillLoad", 7);
|
|
1248
1274
|
this.ionNavWillChange = index.createEvent(this, "ionNavWillChange", 3);
|
|
1249
1275
|
this.ionNavDidChange = index.createEvent(this, "ionNavDidChange", 3);
|
|
1276
|
+
this.lockController = lockController.createLockController();
|
|
1277
|
+
this.gestureOrAnimationInProgress = false;
|
|
1278
|
+
/**
|
|
1279
|
+
* The mode determines the platform behaviors of the component.
|
|
1280
|
+
*/
|
|
1281
|
+
this.mode = ionicGlobal.getIonMode(this);
|
|
1282
|
+
/**
|
|
1283
|
+
* If `true`, the router-outlet should animate the transition of components.
|
|
1284
|
+
*/
|
|
1285
|
+
this.animated = true;
|
|
1250
1286
|
}
|
|
1251
|
-
lockController = lockController.createLockController();
|
|
1252
|
-
activeEl;
|
|
1253
|
-
// TODO(FW-2832): types
|
|
1254
|
-
activeComponent;
|
|
1255
|
-
activeParams;
|
|
1256
|
-
gesture;
|
|
1257
|
-
ani;
|
|
1258
|
-
gestureOrAnimationInProgress = false;
|
|
1259
|
-
get el() { return index.getElement(this); }
|
|
1260
|
-
/**
|
|
1261
|
-
* The mode determines which platform styles to use.
|
|
1262
|
-
*/
|
|
1263
|
-
mode = ionicGlobal.getIonMode(this);
|
|
1264
|
-
/** @internal */
|
|
1265
|
-
delegate;
|
|
1266
|
-
/**
|
|
1267
|
-
* If `true`, the router-outlet should animate the transition of components.
|
|
1268
|
-
*/
|
|
1269
|
-
animated = true;
|
|
1270
|
-
/** This property allows to create custom transition using AnimationBuilder functions. */
|
|
1271
|
-
animation;
|
|
1272
|
-
/**
|
|
1273
|
-
* If `true`, the router-outlet should allow navigation via swipe-to-go-back gesture.
|
|
1274
|
-
* Defaults to `true` for `"ios"` mode and `false` for `"md"` mode.
|
|
1275
|
-
*/
|
|
1276
|
-
swipeGesture;
|
|
1277
|
-
swipeGestureChanged() {
|
|
1278
|
-
this.updateGestureEnabled();
|
|
1279
|
-
}
|
|
1280
|
-
/** @internal */
|
|
1281
|
-
swipeHandler;
|
|
1282
1287
|
swipeHandlerChanged() {
|
|
1283
|
-
this.
|
|
1288
|
+
if (this.gesture) {
|
|
1289
|
+
this.gesture.enable(this.swipeHandler !== undefined);
|
|
1290
|
+
}
|
|
1284
1291
|
}
|
|
1285
|
-
/** @internal */
|
|
1286
|
-
ionNavWillLoad;
|
|
1287
|
-
/** @internal */
|
|
1288
|
-
ionNavWillChange;
|
|
1289
|
-
/** @internal */
|
|
1290
|
-
ionNavDidChange;
|
|
1291
1292
|
async connectedCallback() {
|
|
1292
1293
|
const onStart = () => {
|
|
1293
1294
|
this.gestureOrAnimationInProgress = true;
|
|
@@ -1295,7 +1296,7 @@ const RouterOutlet = class {
|
|
|
1295
1296
|
this.swipeHandler.onStart();
|
|
1296
1297
|
}
|
|
1297
1298
|
};
|
|
1298
|
-
this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-
|
|
1299
|
+
this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-4vY7mi8i.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) => {
|
|
1299
1300
|
if (this.ani) {
|
|
1300
1301
|
this.ani.onFinish(() => {
|
|
1301
1302
|
this.gestureOrAnimationInProgress = false;
|
|
@@ -1326,21 +1327,11 @@ const RouterOutlet = class {
|
|
|
1326
1327
|
this.gestureOrAnimationInProgress = false;
|
|
1327
1328
|
}
|
|
1328
1329
|
});
|
|
1329
|
-
|
|
1330
|
-
this.swipeGesture = index.config.getBoolean('swipeBackEnabled', this.mode === 'ios');
|
|
1331
|
-
}
|
|
1332
|
-
else {
|
|
1333
|
-
this.updateGestureEnabled();
|
|
1334
|
-
}
|
|
1330
|
+
this.swipeHandlerChanged();
|
|
1335
1331
|
}
|
|
1336
1332
|
componentWillLoad() {
|
|
1337
1333
|
this.ionNavWillLoad.emit();
|
|
1338
1334
|
}
|
|
1339
|
-
updateGestureEnabled() {
|
|
1340
|
-
if (this.gesture) {
|
|
1341
|
-
this.gesture.enable(this.swipeHandler !== undefined && this.swipeGesture === true);
|
|
1342
|
-
}
|
|
1343
|
-
}
|
|
1344
1335
|
disconnectedCallback() {
|
|
1345
1336
|
if (this.gesture) {
|
|
1346
1337
|
this.gesture.destroy();
|
|
@@ -1407,19 +1398,16 @@ const RouterOutlet = class {
|
|
|
1407
1398
|
const { el, mode } = this;
|
|
1408
1399
|
const animated = this.animated && index.config.getBoolean('animated', true);
|
|
1409
1400
|
const animationBuilder = opts.animationBuilder || this.animation || index.config.get('navAnimation');
|
|
1410
|
-
await index$2.transition({
|
|
1411
|
-
mode,
|
|
1401
|
+
await index$2.transition(Object.assign(Object.assign({ mode,
|
|
1412
1402
|
animated,
|
|
1413
1403
|
enteringEl,
|
|
1414
|
-
leavingEl,
|
|
1415
|
-
baseEl: el,
|
|
1404
|
+
leavingEl, baseEl: el,
|
|
1416
1405
|
/**
|
|
1417
1406
|
* We need to wait for all Stencil components
|
|
1418
1407
|
* to be ready only when using the lazy
|
|
1419
1408
|
* loaded bundle.
|
|
1420
1409
|
*/
|
|
1421
|
-
deepWait: helpers.hasLazyBuild(el),
|
|
1422
|
-
progressCallback: opts.progressAnimation
|
|
1410
|
+
deepWait: helpers.hasLazyBuild(el), progressCallback: opts.progressAnimation
|
|
1423
1411
|
? (ani) => {
|
|
1424
1412
|
/**
|
|
1425
1413
|
* Because this progress callback is called asynchronously
|
|
@@ -1448,21 +1436,16 @@ const RouterOutlet = class {
|
|
|
1448
1436
|
this.ani = ani;
|
|
1449
1437
|
}
|
|
1450
1438
|
}
|
|
1451
|
-
: undefined,
|
|
1452
|
-
...opts,
|
|
1453
|
-
animationBuilder,
|
|
1454
|
-
});
|
|
1439
|
+
: undefined }, opts), { animationBuilder }));
|
|
1455
1440
|
// emit nav changed event
|
|
1456
1441
|
this.ionNavDidChange.emit();
|
|
1457
1442
|
return true;
|
|
1458
1443
|
}
|
|
1459
1444
|
render() {
|
|
1460
|
-
return index.h("slot", { key: '
|
|
1445
|
+
return index.h("slot", { key: 'ad5a4dfb30e9b6942131580c6f1b09cf562a1d8e' });
|
|
1461
1446
|
}
|
|
1447
|
+
get el() { return index.getElement(this); }
|
|
1462
1448
|
static get watchers() { return {
|
|
1463
|
-
"swipeGesture": [{
|
|
1464
|
-
"swipeGestureChanged": 0
|
|
1465
|
-
}],
|
|
1466
1449
|
"swipeHandler": [{
|
|
1467
1450
|
"swipeHandlerChanged": 0
|
|
1468
1451
|
}]
|
|
@@ -1470,31 +1453,17 @@ const RouterOutlet = class {
|
|
|
1470
1453
|
};
|
|
1471
1454
|
RouterOutlet.style = routerOutletCss();
|
|
1472
1455
|
|
|
1473
|
-
const
|
|
1456
|
+
const titleIonicCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{font-size:var(--token-font-size-450, 1.125rem);font-weight:var(--token-font-weight-medium, 500);letter-spacing:var(--token-font-letter-spacing-0, 0%);line-height:var(--token-font-line-height-700, var(--token-scale-700, 28px));text-decoration:none;text-transform:none;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host(.title-large){font-size:var(--token-font-size-700, 1.75rem);font-weight:var(--token-font-weight-medium, 500);letter-spacing:var(--token-font-letter-spacing-0, 0%);line-height:var(--token-font-line-height-900, var(--token-scale-900, 36px));text-decoration:none;text-transform:none}`;
|
|
1457
|
+
|
|
1458
|
+
const titleIosCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host(.ion-color){color:var(--ion-color-base)}:host{top:0;-webkit-padding-start:90px;padding-inline-start:90px;-webkit-padding-end:90px;padding-inline-end:90px;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);position:absolute;width:100%;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);font-size:min(1.0625rem, 20.4px);font-weight:600;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host{inset-inline-start:0}:host(.title-small){-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px;padding-top:6px;padding-bottom:16px;position:relative;font-size:min(0.8125rem, 23.4px);font-weight:normal}:host(.title-large){-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:2px;padding-bottom:4px;-webkit-transform-origin:left center;transform-origin:left center;position:static;-ms-flex-align:end;align-items:flex-end;min-width:100%;font-size:min(2.125rem, 61.2px);font-weight:700;text-align:start}:host(.title-large.title-rtl){-webkit-transform-origin:right center;transform-origin:right center}:host(.title-large.ion-cloned-element){--color:var(--ion-text-color, #000);font-family:var(--ion-font-family)}:host(.title-large) .toolbar-title{-webkit-transform-origin:inherit;transform-origin:inherit;width:auto}:host-context([dir=rtl]):host(.title-large) .toolbar-title,:host-context([dir=rtl]).title-large .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}@supports selector(:dir(rtl)){:host(.title-large:dir(rtl)) .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}}`;
|
|
1474
1459
|
|
|
1475
|
-
const titleMdCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}
|
|
1460
|
+
const titleMdCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host(.ion-color){color:var(--ion-color-base)}:host{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:0;padding-bottom:0;font-size:1.25rem;font-weight:500;letter-spacing:0.0125em}:host(.title-small){width:100%;height:100%;font-size:0.9375rem;font-weight:normal}:host(.title-large){width:100%;height:100%;font-size:1.75rem;font-weight:400}`;
|
|
1476
1461
|
|
|
1477
1462
|
const ToolbarTitle = class {
|
|
1478
1463
|
constructor(hostRef) {
|
|
1479
1464
|
index.registerInstance(this, hostRef);
|
|
1480
1465
|
this.ionStyle = index.createEvent(this, "ionStyle", 7);
|
|
1481
1466
|
}
|
|
1482
|
-
get el() { return index.getElement(this); }
|
|
1483
|
-
/**
|
|
1484
|
-
* The color to use from your application's color palette.
|
|
1485
|
-
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
1486
|
-
* For more information on colors, see [theming](/docs/theming/basics).
|
|
1487
|
-
*/
|
|
1488
|
-
color;
|
|
1489
|
-
/**
|
|
1490
|
-
* The size of the toolbar title.
|
|
1491
|
-
*/
|
|
1492
|
-
size;
|
|
1493
|
-
/**
|
|
1494
|
-
* Emitted when the styles change.
|
|
1495
|
-
* @internal
|
|
1496
|
-
*/
|
|
1497
|
-
ionStyle;
|
|
1498
1467
|
sizeChanged() {
|
|
1499
1468
|
this.emitStyle();
|
|
1500
1469
|
}
|
|
@@ -1511,14 +1480,15 @@ const ToolbarTitle = class {
|
|
|
1511
1480
|
return this.size !== undefined ? this.size : 'default';
|
|
1512
1481
|
}
|
|
1513
1482
|
render() {
|
|
1514
|
-
const
|
|
1483
|
+
const theme$1 = ionicGlobal.getIonTheme(this);
|
|
1515
1484
|
const size = this.getSize();
|
|
1516
|
-
return (index.h(index.Host, { key: '
|
|
1517
|
-
[
|
|
1485
|
+
return (index.h(index.Host, { key: 'ee32202b0a04aa63b4369e5d4862759cb8ec24c0', class: theme.createColorClasses(this.color, {
|
|
1486
|
+
[theme$1]: true,
|
|
1518
1487
|
[`title-${size}`]: true,
|
|
1519
1488
|
'title-rtl': document.dir === 'rtl',
|
|
1520
|
-
}) }, index.h("div", { key: '
|
|
1489
|
+
}) }, index.h("div", { key: 'bfe124a72b10e9f4375ca0aa7caf46b8ef1e5ae8', class: "toolbar-title" }, index.h("slot", { key: 'b55441661bacb883ddf9895616cfc72792f3508a' }))));
|
|
1521
1490
|
}
|
|
1491
|
+
get el() { return index.getElement(this); }
|
|
1522
1492
|
static get watchers() { return {
|
|
1523
1493
|
"size": [{
|
|
1524
1494
|
"sizeChanged": 0
|
|
@@ -1526,26 +1496,30 @@ const ToolbarTitle = class {
|
|
|
1526
1496
|
}; }
|
|
1527
1497
|
};
|
|
1528
1498
|
ToolbarTitle.style = {
|
|
1499
|
+
ionic: titleIonicCss(),
|
|
1529
1500
|
ios: titleIosCss(),
|
|
1530
1501
|
md: titleMdCss()
|
|
1531
1502
|
};
|
|
1532
1503
|
|
|
1533
|
-
const
|
|
1504
|
+
const toolbarIonicCss = () => `:host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);contain:content;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));pointer-events:none}::slotted(ion-progress-bar){right:0;left:0;bottom:0;position:absolute}:host{--background:var(--token-bg-surface-default, var(--token-primitives-base-white, #ffffff));--color:var(--token-text-default, var(--token-primitives-neutral-1200, #242424));--border-color:currentColor;--padding-top:var(--token-space-200, var(--token-scale-200, 8px));--padding-bottom:var(--token-space-200, var(--token-scale-200, 8px));--padding-start:var(--token-space-200, var(--token-scale-200, 8px));--padding-end:var(--token-space-200, var(--token-scale-200, 8px));--min-height:var(--token-scale-1400, 56px)}.toolbar-container{gap:var(--token-space-400, var(--token-scale-400, 16px));z-index:10}.toolbar-background{z-index:-1}.toolbar-content{-ms-flex:1 1 auto;flex:1 1 auto;min-width:0}:host(.toolbar-searchbar) ::slotted(ion-searchbar){padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}::slotted(ion-buttons){gap:var(--token-space-200, var(--token-scale-200, 8px))}::slotted(ion-title){-webkit-padding-start:var(--token-space-200, var(--token-scale-200, 8px));padding-inline-start:var(--token-space-200, var(--token-scale-200, 8px));-webkit-padding-end:var(--token-space-200, var(--token-scale-200, 8px));padding-inline-end:var(--token-space-200, var(--token-scale-200, 8px))}:host(.toolbar-title-large) ::slotted(ion-title){-webkit-padding-start:var(--token-space-400, var(--token-scale-400, 16px));padding-inline-start:var(--token-space-400, var(--token-scale-400, 16px));-webkit-padding-end:var(--token-space-400, var(--token-scale-400, 16px));padding-inline-end:var(--token-space-400, var(--token-scale-400, 16px))}:host(.has-end-content) slot[name=end],:host(.show-end) slot[name=end]{display:-ms-flexbox;display:flex;-ms-flex:0 0 var(--start-end-size, 0);flex:0 0 var(--start-end-size, 0);-ms-flex-pack:end;justify-content:flex-end;text-align:end}:host(.has-start-content) slot[name=start],:host(.show-start) slot[name=start]{display:-ms-flexbox;display:flex;-ms-flex:0 0 var(--start-end-size, 0);flex:0 0 var(--start-end-size, 0)}:host(.has-primary-content) slot[name=primary],:host(.show-primary) slot[name=primary]{display:-ms-flexbox;display:flex;-ms-flex:0 0 var(--primary-secondary-size, 0);flex:0 0 var(--primary-secondary-size, 0);-ms-flex-pack:end;justify-content:flex-end;text-align:end}:host(.has-secondary-content) slot[name=secondary],:host(.show-secondary) slot[name=secondary]{display:-ms-flexbox;display:flex;-ms-flex:0 0 var(--primary-secondary-size, 0);flex:0 0 var(--primary-secondary-size, 0)}:host(.toolbar-title-placement-start) ::slotted(ion-title){text-align:start}:host(.toolbar-title-placement-center) ::slotted(ion-title){text-align:center}:host(.toolbar-title-placement-end) ::slotted(ion-title){text-align:end}`;
|
|
1534
1505
|
|
|
1535
|
-
const
|
|
1506
|
+
const toolbarIosCss = () => `:host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);contain:content;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));pointer-events:none}::slotted(ion-progress-bar){right:0;left:0;bottom:0;position:absolute}:host{font-family:var(--ion-font-family, inherit);z-index:10}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{z-index:10}.toolbar-background{z-index:-1}:host{--background:var(--ion-toolbar-background, var(--ion-color-step-50, var(--ion-background-color-step-50, #f7f7f7)));--color:var(--ion-toolbar-color, var(--ion-text-color, #000));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.2)))));--padding-top:3px;--padding-bottom:3px;--padding-start:4px;--padding-end:4px;--min-height:44px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:4;order:4;min-width:0}:host(.toolbar-segment) .toolbar-content{display:-ms-inline-flexbox;display:inline-flex}:host(.toolbar-searchbar) .toolbar-container{padding-top:0;padding-bottom:0}:host(.toolbar-searchbar) ::slotted(*){-ms-flex-item-align:start;align-self:start}:host(.toolbar-searchbar) ::slotted(ion-chip){margin-top:3px}::slotted(ion-buttons){min-height:38px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:3;order:3}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}:host(.toolbar-title-large) .toolbar-container{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:start;align-items:flex-start}:host(.toolbar-title-large) .toolbar-content ion-title{-ms-flex:1;flex:1;-ms-flex-order:8;order:8;min-width:100%}`;
|
|
1507
|
+
|
|
1508
|
+
const toolbarMdCss = () => `:host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);contain:content;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));pointer-events:none}::slotted(ion-progress-bar){right:0;left:0;bottom:0;position:absolute}:host{font-family:var(--ion-font-family, inherit);z-index:10}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{z-index:10}.toolbar-background{z-index:-1}:host{--background:var(--ion-toolbar-background, var(--ion-background-color, #fff));--color:var(--ion-toolbar-color, var(--ion-text-color, #424242));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, #c1c4cd))));--padding-top:0;--padding-bottom:0;--padding-start:0;--padding-end:0;--min-height:56px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:3;order:3;min-width:0;max-width:100%}::slotted(.buttons-first-slot){-webkit-margin-start:4px;margin-inline-start:4px}::slotted(.buttons-last-slot){-webkit-margin-end:4px;margin-inline-end:4px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:4;order:4}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}`;
|
|
1536
1509
|
|
|
1537
1510
|
const Toolbar = class {
|
|
1538
1511
|
constructor(hostRef) {
|
|
1539
1512
|
index.registerInstance(this, hostRef);
|
|
1513
|
+
this.childrenStyles = new Map();
|
|
1514
|
+
this.slotClasses = [
|
|
1515
|
+
'has-start-content',
|
|
1516
|
+
'has-end-content',
|
|
1517
|
+
'has-primary-content',
|
|
1518
|
+
'has-secondary-content',
|
|
1519
|
+
];
|
|
1520
|
+
this.showClasses = ['show-start', 'show-end', 'show-primary', 'show-secondary'];
|
|
1521
|
+
this.slotSizeVars = ['--start-end-size', '--primary-secondary-size'];
|
|
1540
1522
|
}
|
|
1541
|
-
childrenStyles = new Map();
|
|
1542
|
-
get el() { return index.getElement(this); }
|
|
1543
|
-
/**
|
|
1544
|
-
* The color to use from your application's color palette.
|
|
1545
|
-
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
1546
|
-
* For more information on colors, see [theming](/docs/theming/basics).
|
|
1547
|
-
*/
|
|
1548
|
-
color;
|
|
1549
1523
|
componentWillLoad() {
|
|
1550
1524
|
const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));
|
|
1551
1525
|
const firstButtons = buttons.find((button) => {
|
|
@@ -1561,6 +1535,173 @@ const Toolbar = class {
|
|
|
1561
1535
|
if (lastButtons) {
|
|
1562
1536
|
lastButtons.classList.add('buttons-last-slot');
|
|
1563
1537
|
}
|
|
1538
|
+
this.updateSlotClasses();
|
|
1539
|
+
}
|
|
1540
|
+
componentDidLoad() {
|
|
1541
|
+
this.updateSlotClasses();
|
|
1542
|
+
this.updateSlotWidths();
|
|
1543
|
+
}
|
|
1544
|
+
titlePlacementChanged() {
|
|
1545
|
+
this.updateSlotClasses();
|
|
1546
|
+
}
|
|
1547
|
+
/**
|
|
1548
|
+
* Gets the title placement.
|
|
1549
|
+
* Returns the title placement if it is set, otherwise returns `"center"`
|
|
1550
|
+
* for `ionic` and `ios`, and `"start"` for `md`.
|
|
1551
|
+
*/
|
|
1552
|
+
getTitlePlacement() {
|
|
1553
|
+
if (this.titlePlacement !== undefined) {
|
|
1554
|
+
return this.titlePlacement;
|
|
1555
|
+
}
|
|
1556
|
+
return ionicGlobal.getIonTheme(this) === 'ionic' || ionicGlobal.getIonTheme(this) === 'ios' ? 'center' : 'start';
|
|
1557
|
+
}
|
|
1558
|
+
/**
|
|
1559
|
+
* Updates the CSS custom properties for slot widths
|
|
1560
|
+
* This ensures that slots shown by their met conditions
|
|
1561
|
+
* have a minimum width matching their required slot
|
|
1562
|
+
*/
|
|
1563
|
+
updateSlotWidths(tries = 0) {
|
|
1564
|
+
// Set timeout to try to execute after everything is rendered
|
|
1565
|
+
setTimeout(() => {
|
|
1566
|
+
// Attempt to measure and update
|
|
1567
|
+
const success = this.measureAndUpdateSlots();
|
|
1568
|
+
// If not all measurements were successful, try again in 100 ms
|
|
1569
|
+
// cap recursion at 5 tries for safety
|
|
1570
|
+
if (!success && tries < 5) {
|
|
1571
|
+
setTimeout(() => {
|
|
1572
|
+
this.updateSlotWidths(tries + 1);
|
|
1573
|
+
}, 100);
|
|
1574
|
+
}
|
|
1575
|
+
});
|
|
1576
|
+
}
|
|
1577
|
+
/**
|
|
1578
|
+
* Measure the widths of the slots and update the CSS custom properties
|
|
1579
|
+
* for the minimum width of each pair of slots based on the largest width in each pair.
|
|
1580
|
+
* Returns whether we successfully measured all of the slots we expect to have content.
|
|
1581
|
+
* If not, the content probably hasn't rendered yet and we need to try again.
|
|
1582
|
+
*/
|
|
1583
|
+
measureAndUpdateSlots() {
|
|
1584
|
+
// Define the relationship between slots based on the conditions array
|
|
1585
|
+
// Group slots that should have the same width
|
|
1586
|
+
const slotPairs = [
|
|
1587
|
+
{ name: 'start-end', slots: ['start', 'end'] },
|
|
1588
|
+
{ name: 'primary-secondary', slots: ['primary', 'secondary'] },
|
|
1589
|
+
];
|
|
1590
|
+
// First, measure all slot widths
|
|
1591
|
+
const slotWidths = new Map();
|
|
1592
|
+
let allMeasurementsSuccessful = true;
|
|
1593
|
+
// Measure all slots with content
|
|
1594
|
+
const slots = ['start', 'end', 'primary', 'secondary'];
|
|
1595
|
+
slots.forEach((slot) => {
|
|
1596
|
+
var _a;
|
|
1597
|
+
if (this.el.classList.contains(`has-${slot}-content`)) {
|
|
1598
|
+
const slotElement = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slot}"]`);
|
|
1599
|
+
if (slotElement) {
|
|
1600
|
+
// Check if the slot contains an img or ion-img
|
|
1601
|
+
const assignedElements = slotElement.assignedElements({ flatten: true });
|
|
1602
|
+
const hasImg = assignedElements.some((el) => {
|
|
1603
|
+
if (el.tagName === 'IMG' || el.tagName === 'ION-IMG') {
|
|
1604
|
+
return true;
|
|
1605
|
+
}
|
|
1606
|
+
// Check for nested images
|
|
1607
|
+
return el.querySelector('img, ion-img');
|
|
1608
|
+
});
|
|
1609
|
+
// Temporarily allow slot to size to content by setting flex-basis
|
|
1610
|
+
// to 'auto'. This ensures that slotted images can render at their
|
|
1611
|
+
// intrinsic width for measurement.
|
|
1612
|
+
if (hasImg) {
|
|
1613
|
+
const { name } = slotPairs.find((pair) => pair.slots.includes(slot));
|
|
1614
|
+
this.el.style.setProperty(`--${name}-size`, 'auto');
|
|
1615
|
+
}
|
|
1616
|
+
const width = slotElement.offsetWidth;
|
|
1617
|
+
if (width > 0) {
|
|
1618
|
+
slotWidths.set(slot, width);
|
|
1619
|
+
}
|
|
1620
|
+
else {
|
|
1621
|
+
allMeasurementsSuccessful = false;
|
|
1622
|
+
}
|
|
1623
|
+
}
|
|
1624
|
+
}
|
|
1625
|
+
});
|
|
1626
|
+
// Then set the CSS custom properties based on the largest width in each pair
|
|
1627
|
+
slotPairs.forEach(({ name, slots }) => {
|
|
1628
|
+
// Find the maximum width among the slots in this pair
|
|
1629
|
+
let maxWidth = 0;
|
|
1630
|
+
let hasAnyContent = false;
|
|
1631
|
+
slots.forEach((slot) => {
|
|
1632
|
+
var _a;
|
|
1633
|
+
if (slotWidths.has(slot)) {
|
|
1634
|
+
hasAnyContent = true;
|
|
1635
|
+
maxWidth = Math.max(maxWidth, (_a = slotWidths.get(slot)) !== null && _a !== void 0 ? _a : 0);
|
|
1636
|
+
}
|
|
1637
|
+
});
|
|
1638
|
+
// If at least one slot in the pair has content, set the min-width for the pair
|
|
1639
|
+
if (hasAnyContent && maxWidth > 0) {
|
|
1640
|
+
// Set a single CSS variable for the pair
|
|
1641
|
+
this.el.style.setProperty(`--${name}-size`, `${maxWidth}px`);
|
|
1642
|
+
}
|
|
1643
|
+
});
|
|
1644
|
+
return allMeasurementsSuccessful;
|
|
1645
|
+
}
|
|
1646
|
+
/**
|
|
1647
|
+
* Removes all slot visibility classes and slot width CSS variables.
|
|
1648
|
+
*/
|
|
1649
|
+
removeSlotClasses() {
|
|
1650
|
+
this.el.classList.remove(...this.slotClasses, ...this.showClasses);
|
|
1651
|
+
this.slotSizeVars.forEach((cssVar) => this.el.style.removeProperty(cssVar));
|
|
1652
|
+
}
|
|
1653
|
+
updateSlotClasses() {
|
|
1654
|
+
const titlePlacement = this.getTitlePlacement();
|
|
1655
|
+
if (titlePlacement !== 'center') {
|
|
1656
|
+
this.removeSlotClasses();
|
|
1657
|
+
return;
|
|
1658
|
+
}
|
|
1659
|
+
// Check if slots have content
|
|
1660
|
+
const slots = ['start', 'end', 'primary', 'secondary'];
|
|
1661
|
+
const classesToAdd = [];
|
|
1662
|
+
const classesToRemove = [];
|
|
1663
|
+
slots.forEach((slot) => {
|
|
1664
|
+
const slotHasContent = this.hasSlotContent(slot);
|
|
1665
|
+
const slotClass = `has-${slot}-content`;
|
|
1666
|
+
if (slotHasContent) {
|
|
1667
|
+
classesToAdd.push(slotClass);
|
|
1668
|
+
}
|
|
1669
|
+
else {
|
|
1670
|
+
classesToRemove.push(slotClass);
|
|
1671
|
+
}
|
|
1672
|
+
});
|
|
1673
|
+
// Force visibilities in certain conditions. This works by adding a class to the toolbar
|
|
1674
|
+
// named `show-{slot}`. This class will be added if the toolbar has the required slots
|
|
1675
|
+
// and does not have any of the excluded slots, otherwise it will be removed.
|
|
1676
|
+
// This is useful to enforce centering of the toolbar content when there are different amounts
|
|
1677
|
+
// of slots on either side of the toolbar.
|
|
1678
|
+
const conditions = [
|
|
1679
|
+
{ name: 'end', requiredSlots: ['start'], excludeSlots: ['end', 'primary'] },
|
|
1680
|
+
{ name: 'start', requiredSlots: ['end'], excludeSlots: ['start', 'secondary'] },
|
|
1681
|
+
{ name: 'secondary', requiredSlots: ['primary'], excludeSlots: ['secondary', 'start'] },
|
|
1682
|
+
{ name: 'primary', requiredSlots: ['secondary'], excludeSlots: ['primary', 'end'] },
|
|
1683
|
+
];
|
|
1684
|
+
conditions.forEach((condition) => {
|
|
1685
|
+
const hasRequiredSlots = condition.requiredSlots.every((slot) => classesToAdd.includes(`has-${slot}-content`));
|
|
1686
|
+
const hasExcludedSlots = condition.excludeSlots.some((slot) => classesToAdd.includes(`has-${slot}-content`));
|
|
1687
|
+
const className = `show-${condition.name}`;
|
|
1688
|
+
if (hasRequiredSlots && !hasExcludedSlots) {
|
|
1689
|
+
classesToAdd.push(className);
|
|
1690
|
+
}
|
|
1691
|
+
else {
|
|
1692
|
+
classesToRemove.push(className);
|
|
1693
|
+
}
|
|
1694
|
+
});
|
|
1695
|
+
// Add classes to the toolbar element
|
|
1696
|
+
this.el.classList.add(...classesToAdd);
|
|
1697
|
+
this.el.classList.remove(...classesToRemove);
|
|
1698
|
+
// Update slot widths after classes have been updated
|
|
1699
|
+
this.updateSlotWidths();
|
|
1700
|
+
}
|
|
1701
|
+
hasSlotContent(slotName) {
|
|
1702
|
+
var _a;
|
|
1703
|
+
const slotNode = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slotName}"]`);
|
|
1704
|
+
return !!slotNode && slotNode.assignedNodes().length > 0;
|
|
1564
1705
|
}
|
|
1565
1706
|
childrenStyle(ev) {
|
|
1566
1707
|
ev.stopPropagation();
|
|
@@ -1585,21 +1726,27 @@ const Toolbar = class {
|
|
|
1585
1726
|
}
|
|
1586
1727
|
}
|
|
1587
1728
|
render() {
|
|
1588
|
-
const
|
|
1729
|
+
const theme$1 = ionicGlobal.getIonTheme(this);
|
|
1589
1730
|
const childStyles = {};
|
|
1590
|
-
this.childrenStyles.forEach((
|
|
1591
|
-
Object.assign(childStyles,
|
|
1731
|
+
this.childrenStyles.forEach((style) => {
|
|
1732
|
+
Object.assign(childStyles, style);
|
|
1592
1733
|
});
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
} }, index.h("div", { key: '20e3f85844c94b8399c245d2df125e6ab678d681', class: "toolbar-background", part: "background" }), index.h("div", { key: '12f09e324e8d9130b9d30c493106b500233fb016', class: "toolbar-container", part: "container" }, index.h("slot", { key: '6da0fe99ee0c4d7c969712e2908a4e7e6be5ed2c', name: "start" }), index.h("slot", { key: '177c346d6dcabb7857d810cda7d25c6dde32e6e2', name: "secondary" }), index.h("div", { key: '8c921b415940c71bf4c1a2c5c6887f36ad1afd16', class: "toolbar-content", part: "content" }, index.h("slot", { key: '1f2976b80d967bd51e86ed1357b363271d655df2' })), index.h("slot", { key: '0f7618044a7e8b0d9b715a8e208070f7ef2ee4c8', name: "primary" }), index.h("slot", { key: '125c393197e0660a3c2638dd4628c41ef7e05f19', name: "end" }))));
|
|
1734
|
+
const titlePlacement = this.getTitlePlacement();
|
|
1735
|
+
return (index.h(index.Host, { key: 'bbb8d7cd786d5b91b0f65b97335294d9701d4cdc', class: Object.assign(Object.assign({}, theme.createColorClasses(this.color, {
|
|
1736
|
+
[theme$1]: true,
|
|
1737
|
+
'in-toolbar': theme.hostContext('ion-toolbar', this.el),
|
|
1738
|
+
[`toolbar-title-placement-${titlePlacement}`]: true,
|
|
1739
|
+
})), childStyles) }, index.h("div", { key: 'c5ea1b921e87f6f1615f1fa98959a985881bf9f1', class: "toolbar-background", part: "background" }), index.h("div", { key: 'fa9da58a2be236daa05e26ddd4046dff41d33fcb', class: "toolbar-container", part: "container" }, index.h("slot", { key: '45f76c8833843bc27c79121bec16d65433277c12', name: "start", onSlotchange: () => this.updateSlotClasses }), index.h("slot", { key: '3d1a7f34bc361ae87e361e05c5c6a3b2a7423f1d', name: "secondary", onSlotchange: () => this.updateSlotClasses }), index.h("div", { key: 'ad7d5133a105c9b9398a0c6458c5ff3f9b0f6253', class: "toolbar-content", part: "content" }, index.h("slot", { key: '783fe390e4bca1b7a245961e750a50bb009173b6' })), index.h("slot", { key: 'a555b3bef40a9bab3a1f1b39a02cbc8b28122c4a', name: "primary", onSlotchange: () => this.updateSlotClasses }), index.h("slot", { key: '635a84fff3818e4648ea46bd80f5ef0808a9ff0e', name: "end", onSlotchange: () => this.updateSlotClasses }))));
|
|
1600
1740
|
}
|
|
1741
|
+
get el() { return index.getElement(this); }
|
|
1742
|
+
static get watchers() { return {
|
|
1743
|
+
"titlePlacement": [{
|
|
1744
|
+
"titlePlacementChanged": 0
|
|
1745
|
+
}]
|
|
1746
|
+
}; }
|
|
1601
1747
|
};
|
|
1602
1748
|
Toolbar.style = {
|
|
1749
|
+
ionic: toolbarIonicCss(),
|
|
1603
1750
|
ios: toolbarIosCss(),
|
|
1604
1751
|
md: toolbarMdCss()
|
|
1605
1752
|
};
|