@ionic/core 8.8.19-dev.11786610762.137bbb21 → 8.8.19-dev.11786730389.1a1927bf
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-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-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.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-0Pyit076.js +4 -0
- package/components/{p-CpHPq11n.js → p-30_sZS2V.js} +1 -1
- package/components/p-83oP9gzn.js +4 -0
- package/components/p-8FN7p701.js +4 -0
- package/components/p-B-FxiyeI.js +4 -0
- package/components/p-B6dUPQXq.js +4 -0
- package/components/p-BMPN55of.js +4 -0
- package/components/p-BMS4t-kJ.js +4 -0
- package/components/p-BO4sUqUv.js +4 -0
- package/components/p-BSQPZ79H.js +4 -0
- package/components/p-Bc4wROfM.js +4 -0
- package/components/p-BhamHSw3.js +4 -0
- package/components/p-BmVRXR1y.js +4 -0
- package/components/p-BpG8kBfD.js +4 -0
- package/components/p-BqPNzJf6.js +4 -0
- package/components/p-BsVxQGUT.js +4 -0
- package/components/p-BxUIQcD9.js +4 -0
- package/components/p-C1O9GEug.js +4 -0
- package/components/p-C5KYjZWD.js +4 -0
- package/components/p-C9BGR5fy.js +4 -0
- package/components/p-CD4fmpem.js +4 -0
- package/components/p-CEW4RXZO.js +4 -0
- package/components/p-CIGNaXM1.js +4 -0
- package/components/p-CKhiNOEg.js +4 -0
- package/components/p-CO2zzh3W.js +4 -0
- package/components/p-CVnwvOBD.js +4 -0
- package/components/p-CbhUdtjf.js +4 -0
- package/components/p-CejmQs3h.js +4 -0
- package/components/p-CfnGxjv-.js +4 -0
- package/components/p-ClFYbgND.js +4 -0
- package/components/p-CmKf4pgI.js +4 -0
- package/components/p-Cs5f-uOS.js +4 -0
- package/components/p-D7-vHX0A.js +4 -0
- package/components/{p-CA4M5WkT.js → p-DIgGHN7D.js} +1 -1
- package/components/p-DJztqcrH.js +4 -0
- package/components/p-DRfgH82D.js +4 -0
- package/components/p-DTY4otpr.js +4 -0
- package/components/p-DV85C0e0.js +4 -0
- package/components/p-DVKS-ovH.js +4 -0
- package/components/p-DWCzVL3Y.js +4 -0
- package/components/p-D_XD0pVT.js +4 -0
- package/components/p-Dd8ajo9a.js +4 -0
- package/components/p-DdnhY_oj.js +4 -0
- package/components/p-Dm7h4Nyv.js +4 -0
- package/components/{p-B2SvA6NE.js → p-DwpKZ6rl.js} +1 -1
- package/components/p-DyePCNGr.js +4 -0
- package/components/p-G0TxqHfe.js +4 -0
- package/components/{p-Ch8jco3x.js → p-J-p0EtHR.js} +1 -1
- package/components/p-LXu5-6Ti.js +4 -0
- package/components/p-LpMHEu3v.js +4 -0
- package/components/p-MCJ7HjWe.js +4 -0
- package/components/p-Obm7si-x.js +4 -0
- package/components/p-TXPDHL13.js +4 -0
- package/components/p-UuPYCOZE.js +4 -0
- package/components/p-WeeS7GvC.js +4 -0
- package/components/p-ZjP4CjeZ.js +4 -0
- package/components/{p-CzlL9T_X.js → p-_0JhwClE.js} +1 -1
- package/components/p-_IKFD3ID.js +4 -0
- package/components/p-byZM6qHV.js +4 -0
- package/components/p-hh7qIC-X.js +4 -0
- package/components/p-idq4JFo2.js +4 -0
- package/components/{p-BZwQa9ey.js → p-ryyf_ItD.js} +1 -1
- package/components/p-tYCT3JGl.js +4 -0
- package/components/p-wzAhIh03.js +4 -0
- package/components/p-xOjr4bwc.js +4 -0
- package/components/{p-Dovs7FIs.js → p-yuj4Nkm_.js} +1 -1
- package/css/core.css +1 -1
- package/css/core.css.map +1 -1
- package/css/display.css +1 -1
- package/css/display.css.map +1 -1
- package/css/flex-utils.css +1 -1
- package/css/flex-utils.css.map +1 -1
- package/css/float-elements.css.map +1 -1
- package/css/global.bundle.css.map +1 -1
- package/css/ionic-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-qlGmEn5Y.js → animation-C0mOHzej.js} +6 -6
- package/dist/cjs/{app-globals-CtK-3pCu.js → app-globals-BREG4twP.js} +1 -1
- package/dist/cjs/{button-active-CugpWmFI.js → button-active-BKj1rdFx.js} +3 -3
- package/dist/cjs/{capacitor-BixsAzyb.js → capacitor-DmA66EwP.js} +3 -3
- package/dist/cjs/{config-DWdFbSNK.js → config-CjUbvdPW.js} +5 -4
- package/dist/cjs/{dir-Cn0z1rJH.js → dir-Brx7VkvP.js} +1 -1
- package/dist/{esm/focus-visible-vXpMhGrs.js → cjs/focus-visible-CCvKiLh3.js} +3 -23
- package/dist/cjs/{format-COAsdjOc.js → format-pp0Du3K-.js} +40 -30
- package/dist/cjs/{framework-delegate-CJT_QJQI.js → framework-delegate-NTLQ5YzV.js} +6 -10
- package/dist/cjs/{gesture-controller-dtqlP_q4.js → gesture-controller-BDUH7687.js} +15 -8
- package/dist/cjs/{haptic-BFgF-QCg.js → haptic-Ch-X4gRx.js} +3 -4
- package/dist/cjs/hardware-back-button-fqpYh-kd.js +121 -0
- package/dist/cjs/{helpers-Fh1iXsX9.js → helpers-CaLhEmTE.js} +6 -73
- package/dist/cjs/{index-YYUVCfP-.js → index-B7zJsYWS.js} +3 -3
- package/dist/cjs/{index-CNicxECl.js → index-BlshL9ib.js} +8 -9
- package/dist/cjs/{index-D94mERjz.js → index-Ck9advCT.js} +5 -5
- package/dist/cjs/{index-CM8iGvyx.js → index-D2X6b92x.js} +15 -16
- package/dist/cjs/{index-DRFkZu3V.js → index-D48vawBq.js} +2 -2
- package/dist/cjs/index-DkNv4J_i.js +10 -0
- package/dist/cjs/{index-CAvQ7Tka.js → index-P1nQxrpZ.js} +10 -4
- package/dist/cjs/{index-C1knGA9x.js → index-uvry__L4.js} +33 -65
- package/dist/cjs/{index-CxDnX7hd.js → index-wOmugbdg.js} +0 -2
- package/dist/cjs/index.cjs.js +17 -17
- package/dist/cjs/{input-shims-C8NCYfWv.js → input-shims-DvHAFqiP.js} +19 -22
- package/dist/cjs/{input.utils-CYZZsbdf.js → input.utils-CP4fzrqk.js} +6 -7
- package/dist/cjs/ion-accordion_2.cjs.entry.js +378 -382
- package/dist/cjs/ion-action-sheet.cjs.entry.js +178 -86
- package/dist/cjs/ion-alert.cjs.entry.js +250 -125
- package/dist/cjs/ion-app_8.cjs.entry.js +461 -608
- package/dist/cjs/ion-avatar_3.cjs.entry.js +19 -125
- package/dist/cjs/ion-back-button.cjs.entry.js +64 -49
- package/dist/cjs/ion-backdrop.cjs.entry.js +23 -22
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +211 -169
- package/dist/cjs/ion-button_2.cjs.entry.js +152 -117
- package/dist/cjs/ion-card_5.cjs.entry.js +109 -79
- package/dist/cjs/ion-checkbox.cjs.entry.js +163 -129
- package/dist/cjs/ion-chip.cjs.entry.js +21 -56
- package/dist/cjs/ion-col_3.cjs.entry.js +186 -61
- package/dist/cjs/ion-datetime-button.cjs.entry.js +255 -247
- package/dist/cjs/ion-datetime.cjs.entry.js +2770 -0
- package/dist/cjs/ion-fab_3.cjs.entry.js +154 -112
- package/dist/cjs/ion-img.cjs.entry.js +34 -16
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +108 -156
- package/dist/cjs/ion-input-otp.cjs.entry.js +435 -437
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +40 -64
- package/dist/cjs/ion-input.cjs.entry.js +330 -276
- package/dist/cjs/ion-item-option_3.cjs.entry.js +136 -511
- package/dist/cjs/ion-item_8.cjs.entry.js +217 -189
- package/dist/cjs/ion-loading.cjs.entry.js +151 -68
- package/dist/cjs/ion-menu_3.cjs.entry.js +181 -137
- package/dist/cjs/ion-modal.cjs.entry.js +570 -500
- package/dist/cjs/ion-nav_2.cjs.entry.js +103 -163
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +39 -39
- package/dist/cjs/ion-picker-column.cjs.entry.js +421 -409
- package/dist/cjs/ion-picker.cjs.entry.js +405 -400
- package/dist/cjs/ion-popover.cjs.entry.js +323 -211
- package/dist/cjs/ion-progress-bar.cjs.entry.js +35 -47
- package/dist/cjs/ion-radio_2.cjs.entry.js +216 -161
- package/dist/cjs/ion-range.cjs.entry.js +307 -249
- package/dist/cjs/ion-refresher_2.cjs.entry.js +174 -121
- package/dist/cjs/ion-reorder_2.cjs.entry.js +59 -53
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +18 -26
- package/dist/cjs/ion-route_4.cjs.entry.js +178 -75
- package/dist/cjs/ion-searchbar.cjs.entry.js +308 -331
- package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment-view.cjs.entry.js +28 -27
- package/dist/cjs/ion-segment_2.cjs.entry.js +177 -141
- package/dist/cjs/ion-select-modal.cjs.entry.js +49 -69
- package/dist/cjs/ion-select_3.cjs.entry.js +481 -385
- package/dist/cjs/ion-spinner.cjs.entry.js +28 -36
- package/dist/cjs/ion-split-pane.cjs.entry.js +34 -25
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +116 -179
- package/dist/cjs/ion-tab_2.cjs.entry.js +54 -29
- package/dist/cjs/ion-text.cjs.entry.js +13 -7
- package/dist/cjs/ion-textarea.cjs.entry.js +274 -269
- package/dist/cjs/ion-toast.cjs.entry.js +264 -169
- package/dist/cjs/ion-toggle.cjs.entry.js +184 -187
- package/dist/cjs/ionic-global-k6hOWWpn.js +156 -0
- package/dist/cjs/ionic.cjs.js +4 -4
- package/dist/cjs/{ios.transition-BgDCUY4Y.js → ios.transition-KvuRAe2W.js} +14 -20
- package/dist/cjs/{item-multiple-inputs-DKn76MYO.js → item-multiple-inputs-BdYSbfKN.js} +1 -1
- package/dist/cjs/{keyboard-nne7rvBK.js → keyboard-Cix5TVkD.js} +4 -5
- package/dist/cjs/{keyboard-BbZXOwZg.js → keyboard-cHxZlTyz.js} +3 -3
- package/dist/cjs/keyboard-controller-PtZoN2GS.js +167 -0
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-Debf4tYr.js → md.transition-Bjl5Ozph.js} +8 -10
- package/dist/cjs/{notch-controller-CFlPw7ER.js → notch-controller-BEUpEgb5.js} +4 -4
- package/dist/cjs/{overlay-control-label-DnRLQR1t.js → overlay-control-label-D2sdL2O8.js} +11 -13
- package/dist/cjs/{overlays-DYBUkNQu.js → overlays-IlP4H2Gn.js} +60 -336
- package/dist/cjs/{select-option-render-BqJEK1N1.js → select-option-render-pULCGldr.js} +3 -4
- package/dist/cjs/{status-tap-hwqc0yb_.js → status-tap-BR_ujYHg.js} +3 -4
- package/dist/cjs/{swipe-back-DqQx5QCp.js → swipe-back-DzQKEl5g.js} +5 -6
- package/dist/cjs/{theme-IlOsGAz7.js → theme-Bw0rpaNN.js} +7 -26
- package/dist/cjs/validity-BpS37YFM.js +19 -0
- package/dist/collection/collection-manifest.json +1 -13
- package/dist/collection/components/accordion/accordion.ios.css +58 -73
- package/dist/collection/components/accordion/accordion.js +327 -338
- package/dist/collection/components/accordion/accordion.md.css +59 -67
- package/dist/collection/components/accordion-group/accordion-group.ios.css +4 -16
- package/dist/collection/components/accordion-group/accordion-group.js +56 -69
- package/dist/collection/components/accordion-group/accordion-group.md.css +4 -22
- package/dist/collection/components/action-sheet/action-sheet.ios.css +54 -184
- package/dist/collection/components/action-sheet/action-sheet.js +166 -76
- package/dist/collection/components/action-sheet/action-sheet.md.css +55 -179
- package/dist/collection/components/action-sheet/test/basic/fixture.js +3 -0
- package/dist/collection/components/alert/alert.ios.css +54 -247
- package/dist/collection/components/alert/alert.js +236 -113
- package/dist/collection/components/alert/alert.md.css +56 -243
- package/dist/collection/components/app/app.js +86 -15
- package/dist/collection/components/avatar/avatar.ios.css +33 -7
- package/dist/collection/components/avatar/avatar.js +4 -120
- package/dist/collection/components/avatar/avatar.md.css +0 -51
- package/dist/collection/components/back-button/back-button.ios.css +48 -60
- package/dist/collection/components/back-button/back-button.js +61 -46
- package/dist/collection/components/back-button/back-button.md.css +48 -60
- package/dist/collection/components/backdrop/backdrop.ios.css +19 -56
- package/dist/collection/components/backdrop/backdrop.js +22 -26
- package/dist/collection/components/backdrop/backdrop.md.css +19 -56
- package/dist/collection/components/badge/badge.ios.css +12 -137
- package/dist/collection/components/badge/badge.js +15 -145
- package/dist/collection/components/badge/badge.md.css +12 -122
- package/dist/collection/components/breadcrumb/breadcrumb.ios.css +8 -20
- package/dist/collection/components/breadcrumb/breadcrumb.js +101 -72
- package/dist/collection/components/breadcrumb/breadcrumb.md.css +8 -20
- package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +0 -6
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +112 -99
- package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +0 -6
- package/dist/collection/components/button/button.ios.css +46 -154
- package/dist/collection/components/button/button.js +157 -122
- package/dist/collection/components/button/button.md.css +50 -150
- package/dist/collection/components/buttons/buttons.ios.css +7 -59
- package/dist/collection/components/buttons/buttons.js +21 -29
- package/dist/collection/components/buttons/buttons.md.css +3 -55
- package/dist/collection/components/card/card.ios.css +14 -65
- package/dist/collection/components/card/card.js +63 -61
- package/dist/collection/components/card/card.md.css +14 -65
- package/dist/collection/components/card-content/card-content.ios.css +35 -20
- package/dist/collection/components/card-content/card-content.js +10 -12
- package/dist/collection/components/card-content/card-content.md.css +35 -20
- package/dist/collection/components/card-header/card-header.ios.css +15 -27
- package/dist/collection/components/card-header/card-header.js +21 -20
- package/dist/collection/components/card-header/card-header.md.css +15 -27
- package/dist/collection/components/card-subtitle/card-subtitle.ios.css +0 -12
- package/dist/collection/components/card-subtitle/card-subtitle.js +14 -11
- package/dist/collection/components/card-subtitle/card-subtitle.md.css +0 -12
- package/dist/collection/components/card-title/card-title.ios.css +0 -73
- package/dist/collection/components/card-title/card-title.js +14 -11
- package/dist/collection/components/card-title/card-title.md.css +0 -73
- package/dist/collection/components/checkbox/checkbox.ios.css +117 -242
- package/dist/collection/components/checkbox/checkbox.js +160 -165
- package/dist/collection/components/checkbox/checkbox.md.css +118 -243
- package/dist/collection/components/chip/chip.ios.css +14 -67
- package/dist/collection/components/chip/chip.js +20 -116
- package/dist/collection/components/chip/chip.md.css +14 -67
- package/dist/collection/components/col/col.css +4 -192
- package/dist/collection/components/col/col.js +186 -212
- package/dist/collection/components/content/content.css +2 -47
- package/dist/collection/components/content/content.js +102 -78
- package/dist/collection/components/datetime/datetime.ios.css +148 -304
- package/dist/collection/components/datetime/datetime.js +1068 -910
- package/dist/collection/components/datetime/datetime.md.css +138 -294
- package/dist/collection/components/datetime/utils/data.js +18 -19
- package/dist/collection/components/datetime/utils/format.js +21 -11
- 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 +8 -2
- package/dist/collection/components/datetime/utils/validate.js +4 -5
- package/dist/collection/components/datetime-button/datetime-button.ios.css +5 -6
- package/dist/collection/components/datetime-button/datetime-button.js +253 -246
- package/dist/collection/components/datetime-button/datetime-button.md.css +5 -6
- package/dist/collection/components/fab/fab.css +1 -25
- package/dist/collection/components/fab/fab.js +25 -22
- package/dist/collection/components/fab-button/fab-button.ios.css +6 -18
- package/dist/collection/components/fab-button/fab-button.js +117 -83
- package/dist/collection/components/fab-button/fab-button.md.css +8 -20
- package/dist/collection/components/fab-list/fab-list.css +0 -12
- package/dist/collection/components/fab-list/fab-list.js +15 -20
- package/dist/collection/components/footer/footer.ios.css +6 -33
- package/dist/collection/components/footer/footer.js +65 -151
- package/dist/collection/components/footer/footer.md.css +0 -40
- package/dist/collection/components/grid/grid.css +0 -12
- package/dist/collection/components/grid/grid.js +9 -15
- package/dist/collection/components/header/header.ios.css +133 -178
- package/dist/collection/components/header/header.js +70 -202
- package/dist/collection/components/header/header.md.css +9 -199
- package/dist/collection/components/header/header.utils.js +13 -6
- package/dist/collection/components/img/img.js +34 -16
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +76 -164
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +0 -12
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +30 -19
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +0 -12
- package/dist/collection/components/input/input.ios.css +135 -223
- package/dist/collection/components/input/input.js +339 -307
- package/dist/collection/components/input/input.md.css +207 -193
- package/dist/collection/components/input-otp/input-otp.ios.css +60 -105
- package/dist/collection/components/input-otp/input-otp.js +432 -437
- package/dist/collection/components/input-otp/input-otp.md.css +60 -105
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +37 -60
- package/dist/collection/components/item/item.ios.css +80 -120
- package/dist/collection/components/item/item.js +113 -102
- package/dist/collection/components/item/item.md.css +79 -131
- package/dist/collection/components/item-divider/item-divider.ios.css +0 -18
- package/dist/collection/components/item-divider/item-divider.js +23 -21
- package/dist/collection/components/item-divider/item-divider.md.css +0 -18
- package/dist/collection/components/item-group/item-group.ios.css +0 -12
- package/dist/collection/components/item-group/item-group.js +7 -13
- package/dist/collection/components/item-group/item-group.md.css +0 -12
- package/dist/collection/components/item-option/item-option.ios.css +29 -136
- package/dist/collection/components/item-option/item-option.js +56 -92
- package/dist/collection/components/item-option/item-option.md.css +29 -136
- package/dist/collection/components/item-options/item-options.ios.css +34 -77
- package/dist/collection/components/item-options/item-options.js +17 -20
- package/dist/collection/components/item-options/item-options.md.css +34 -77
- package/dist/collection/components/item-sliding/{item-sliding.native.css → item-sliding.css} +9 -84
- package/dist/collection/components/item-sliding/item-sliding.js +61 -441
- package/dist/collection/components/item-sliding/test/test.utils.js +0 -13
- package/dist/collection/components/label/label.ios.css +0 -18
- package/dist/collection/components/label/label.js +32 -15
- package/dist/collection/components/label/label.md.css +0 -18
- package/dist/collection/components/list/list.ios.css +14 -54
- package/dist/collection/components/list/list.js +19 -55
- package/dist/collection/components/list/list.md.css +16 -56
- package/dist/collection/components/list-header/list-header.ios.css +38 -82
- package/dist/collection/components/list-header/list-header.js +18 -11
- package/dist/collection/components/list-header/list-header.md.css +38 -82
- package/dist/collection/components/loading/loading.ios.css +1 -13
- package/dist/collection/components/loading/loading.js +143 -62
- package/dist/collection/components/loading/loading.md.css +1 -13
- package/dist/collection/components/menu/menu.ios.css +3 -15
- package/dist/collection/components/menu/menu.js +108 -71
- package/dist/collection/components/menu/menu.md.css +3 -15
- package/dist/collection/components/menu-button/menu-button.ios.css +14 -48
- package/dist/collection/components/menu-button/menu-button.js +38 -45
- package/dist/collection/components/menu-button/menu-button.md.css +15 -49
- package/dist/collection/components/menu-toggle/menu-toggle.js +25 -21
- 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 +2 -8
- package/dist/collection/components/modal/gestures/sheet.js +32 -86
- package/dist/collection/components/modal/gestures/swipe-to-close.js +15 -3
- package/dist/collection/components/modal/modal.ios.css +70 -178
- package/dist/collection/components/modal/modal.js +404 -272
- package/dist/collection/components/modal/modal.md.css +70 -178
- package/dist/collection/components/modal/safe-area-utils.js +6 -7
- package/dist/collection/components/modal/test/fixtures.js +3 -0
- package/dist/collection/components/nav/nav.css +1 -7
- package/dist/collection/components/nav/nav.js +72 -256
- package/dist/collection/components/nav/view-controller.js +7 -1
- package/dist/collection/components/nav-link/nav-link.js +21 -14
- package/dist/collection/components/note/note.ios.css +0 -12
- package/dist/collection/components/note/note.js +14 -11
- package/dist/collection/components/note/note.md.css +0 -12
- package/dist/collection/components/picker/picker.ios.css +3 -15
- package/dist/collection/components/picker/picker.js +403 -398
- package/dist/collection/components/picker/picker.md.css +3 -15
- package/dist/collection/components/picker-column/picker-column.css +5 -9
- package/dist/collection/components/picker-column/picker-column.js +418 -409
- package/dist/collection/components/picker-column-option/picker-column-option.ios.css +0 -6
- package/dist/collection/components/picker-column-option/picker-column-option.js +38 -42
- package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -7
- package/dist/collection/components/popover/animations/ios.enter.js +1 -2
- package/dist/collection/components/popover/animations/md.enter.js +1 -2
- package/dist/collection/components/popover/popover.ios.css +2 -15
- package/dist/collection/components/popover/popover.js +313 -199
- package/dist/collection/components/popover/popover.md.css +2 -15
- package/dist/collection/components/popover/test/fixture.js +1 -0
- package/dist/collection/components/popover/utils.js +4 -6
- package/dist/collection/components/progress-bar/progress-bar.ios.css +17 -48
- package/dist/collection/components/progress-bar/progress-bar.js +33 -65
- package/dist/collection/components/progress-bar/progress-bar.md.css +17 -48
- package/dist/collection/components/radio/radio.ios.css +102 -207
- package/dist/collection/components/radio/radio.js +108 -77
- package/dist/collection/components/radio/radio.md.css +102 -207
- package/dist/collection/components/radio-group/radio-group.ios.css +19 -43
- package/dist/collection/components/radio-group/radio-group.js +107 -113
- package/dist/collection/components/radio-group/radio-group.md.css +19 -43
- package/dist/collection/components/radio-group/test/fixtures.js +2 -0
- package/dist/collection/components/range/range.ios.css +85 -128
- package/dist/collection/components/range/range.js +303 -245
- package/dist/collection/components/range/range.md.css +85 -128
- package/dist/collection/components/refresher/refresher.ios.css +1 -14
- package/dist/collection/components/refresher/refresher.js +117 -88
- package/dist/collection/components/refresher/refresher.md.css +2 -15
- package/dist/collection/components/refresher-content/refresher-content.js +47 -31
- package/dist/collection/components/reorder/reorder.ios.css +0 -6
- package/dist/collection/components/reorder/reorder.js +7 -33
- package/dist/collection/components/reorder/reorder.md.css +0 -6
- package/dist/collection/components/reorder-group/reorder-group.css +0 -6
- package/dist/collection/components/reorder-group/reorder-group.js +47 -22
- package/dist/collection/components/ripple-effect/{ripple-effect.common.css → ripple-effect.css} +1 -7
- package/dist/collection/components/ripple-effect/ripple-effect.js +17 -26
- package/dist/collection/components/route/route.js +39 -14
- package/dist/collection/components/route-redirect/route-redirect.js +31 -0
- package/dist/collection/components/router/router.js +37 -37
- package/dist/collection/components/router/utils/dom.js +25 -7
- package/dist/collection/components/router/utils/matching.js +7 -9
- package/dist/collection/components/router/utils/parser.js +1 -1
- package/dist/collection/components/router/utils/path.js +0 -1
- package/dist/collection/components/router-link/router-link.css +2 -8
- package/dist/collection/components/router-link/router-link.js +40 -19
- package/dist/collection/components/router-outlet/router-outlet.css +1 -7
- package/dist/collection/components/router-outlet/router-outlet.js +83 -25
- package/dist/collection/components/row/row.css +0 -16
- package/dist/collection/components/row/row.js +2 -9
- package/dist/collection/components/searchbar/searchbar.ios.css +18 -56
- package/dist/collection/components/searchbar/searchbar.js +321 -380
- package/dist/collection/components/searchbar/searchbar.md.css +18 -56
- package/dist/collection/components/segment/segment.ios.css +2 -45
- package/dist/collection/components/segment/segment.js +126 -94
- package/dist/collection/components/segment/segment.md.css +2 -45
- package/dist/collection/components/segment-button/segment-button.ios.css +105 -146
- package/dist/collection/components/segment-button/segment-button.js +49 -46
- package/dist/collection/components/segment-button/segment-button.md.css +107 -148
- package/dist/collection/components/segment-content/segment-content.js +1 -1
- package/dist/collection/components/segment-view/segment-view.ios.css +0 -6
- package/dist/collection/components/segment-view/segment-view.js +28 -27
- package/dist/collection/components/segment-view/segment-view.md.css +0 -6
- package/dist/collection/components/select/select.ios.css +177 -316
- package/dist/collection/components/select/select.js +401 -399
- package/dist/collection/components/select/select.md.css +179 -332
- package/dist/collection/components/select-modal/select-modal.ios.css +45 -293
- package/dist/collection/components/select-modal/select-modal.js +37 -79
- package/dist/collection/components/select-modal/select-modal.md.css +43 -273
- package/dist/collection/components/select-modal/test/fixtures.js +8 -1
- package/dist/collection/components/select-option/select-option.js +48 -15
- package/dist/collection/components/select-popover/select-popover.ios.css +124 -188
- package/dist/collection/components/select-popover/select-popover.js +44 -37
- package/dist/collection/components/select-popover/select-popover.md.css +47 -228
- package/dist/collection/components/select-popover/test/fixtures.js +8 -1
- package/dist/collection/components/skeleton-text/skeleton-text.css +0 -6
- package/dist/collection/components/skeleton-text/skeleton-text.js +15 -15
- package/dist/collection/components/spinner/{spinner.ionic.css → spinner.css} +10 -78
- package/dist/collection/components/spinner/spinner.js +26 -55
- package/dist/collection/components/split-pane/split-pane.ios.css +2 -20
- package/dist/collection/components/split-pane/split-pane.js +33 -28
- package/dist/collection/components/split-pane/split-pane.md.css +2 -20
- package/dist/collection/components/tab/tab.js +17 -10
- package/dist/collection/components/tab-bar/tab-bar.ios.css +43 -86
- package/dist/collection/components/tab-bar/tab-bar.js +44 -190
- package/dist/collection/components/tab-bar/tab-bar.md.css +43 -86
- package/dist/collection/components/tab-button/tab-button.ios.css +95 -171
- package/dist/collection/components/tab-button/tab-button.js +68 -74
- package/dist/collection/components/tab-button/tab-button.md.css +93 -137
- package/dist/collection/components/tabs/tabs.css +1 -7
- package/dist/collection/components/tabs/tabs.js +33 -23
- package/dist/collection/components/text/text.css +0 -6
- package/dist/collection/components/text/text.js +12 -7
- package/dist/collection/components/textarea/textarea.ios.css +158 -298
- package/dist/collection/components/textarea/textarea.js +275 -295
- package/dist/collection/components/textarea/textarea.md.css +159 -312
- package/dist/collection/components/thumbnail/thumbnail.css +0 -6
- package/dist/collection/components/thumbnail/thumbnail.js +2 -9
- package/dist/collection/components/title/title.ios.css +4 -32
- package/dist/collection/components/title/title.js +23 -13
- package/dist/collection/components/title/title.md.css +4 -39
- package/dist/collection/components/toast/animations/utils.js +1 -1
- package/dist/collection/components/toast/toast.ios.css +45 -84
- package/dist/collection/components/toast/toast.js +232 -178
- package/dist/collection/components/toast/toast.md.css +45 -84
- package/dist/collection/components/toggle/toggle.ios.css +127 -247
- package/dist/collection/components/toggle/toggle.js +175 -177
- package/dist/collection/components/toggle/toggle.md.css +127 -245
- package/dist/collection/components/toolbar/toolbar.ios.css +47 -90
- package/dist/collection/components/toolbar/toolbar.js +25 -222
- package/dist/collection/components/toolbar/toolbar.md.css +47 -90
- package/dist/collection/global/config.js +4 -6
- package/dist/collection/global/ionic-global.js +20 -242
- package/dist/collection/index.js +1 -1
- package/dist/collection/utils/animation/animation.js +3 -3
- package/dist/collection/utils/config.js +5 -4
- package/dist/collection/utils/focus-controller/index.js +1 -1
- package/dist/collection/utils/focus-trap.js +5 -16
- package/dist/collection/utils/focus-visible.js +0 -22
- package/dist/collection/utils/forms/index.js +0 -1
- package/dist/collection/utils/forms/validity.js +0 -31
- package/dist/collection/utils/framework-delegate.js +5 -9
- package/dist/collection/utils/gesture/gesture-controller.js +15 -8
- package/dist/collection/utils/gesture/index.js +10 -2
- package/dist/collection/utils/gesture/listener.js +1 -1
- package/dist/collection/utils/hardware-back-button.js +3 -18
- package/dist/collection/utils/helpers.js +5 -72
- package/dist/collection/utils/input-shims/hacks/scroll-assist.js +4 -5
- package/dist/collection/utils/input-shims/hacks/scroll-data.js +1 -2
- package/dist/collection/utils/keyboard/keyboard-controller.js +6 -8
- package/dist/collection/utils/keyboard/keyboard.js +1 -1
- package/dist/collection/utils/logging/index.js +23 -4
- package/dist/collection/utils/media.js +0 -1
- package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
- package/dist/collection/utils/menu-controller/animations/push.js +1 -2
- package/dist/collection/utils/menu-controller/animations/reveal.js +1 -2
- package/dist/collection/utils/menu-controller/index.js +1 -2
- package/dist/collection/utils/native/haptic.js +2 -3
- 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 +11 -13
- package/dist/collection/utils/overlays.js +45 -312
- package/dist/collection/utils/platform.js +4 -5
- package/dist/collection/utils/rtl/dir.js +1 -1
- package/dist/collection/utils/sanitization/index.js +2 -2
- package/dist/collection/utils/select-option-render.js +1 -2
- package/dist/collection/utils/slot-mutation-controller.js +1 -2
- package/dist/collection/utils/test/playwright/apply-keyboard-focus.js +1 -1
- package/dist/collection/utils/test/playwright/drag-element.js +11 -35
- package/dist/collection/utils/test/playwright/generator.js +25 -51
- package/dist/collection/utils/test/playwright/page/event-spy.js +11 -12
- package/dist/collection/utils/test/playwright/page/utils/goto.js +5 -15
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +4 -27
- package/dist/collection/utils/test/playwright/page/utils/set-ion-viewport.js +2 -3
- package/dist/collection/utils/test/press-keys.js +10 -17
- package/dist/collection/utils/theme.js +7 -26
- package/dist/collection/utils/transition/ios.transition.js +9 -14
- package/dist/collection/utils/transition/md.transition.js +3 -4
- package/dist/docs.json +503 -10023
- package/dist/esm/{animation-ChfHU0RG.js → animation-CGFdmGk9.js} +5 -5
- package/dist/esm/{app-globals-D1OOQlqq.js → app-globals-CYmMeGdU.js} +1 -1
- package/dist/esm/{button-active-CPYK0dNo.js → button-active--80YqSHA.js} +3 -3
- package/dist/esm/{capacitor-DG_4yVXz.js → capacitor-CFERIeaU.js} +1 -1
- package/dist/esm/{config-BwKpO3Is.js → config-DWCzVL3Y.js} +5 -4
- package/dist/esm/{dir-C53feagD.js → dir-B-FxiyeI.js} +1 -1
- package/dist/{cjs/focus-visible-BIj-I3-C.js → esm/focus-visible-BmVRXR1y.js} +1 -27
- package/dist/esm/{format-2WlZcMvG.js → format-Dcwga61t.js} +41 -31
- package/dist/esm/{framework-delegate-DO2QXccA.js → framework-delegate--ajhSeKH.js} +6 -10
- package/dist/esm/{gesture-controller-BTEOs1at.js → gesture-controller-TXPDHL13.js} +15 -8
- package/dist/esm/{haptic-BWlRCqa-.js → haptic-Cq4UAeka.js} +3 -4
- package/dist/esm/hardware-back-button-gLJHMX_F.js +115 -0
- package/dist/esm/{helpers-DfF5_wJc.js → helpers-DexiPLIC.js} +7 -73
- package/dist/esm/{index-BSDDOljg.js → index-8s8kZKJ7.js} +5 -5
- package/dist/esm/{index-DNY2GOUg.js → index-BCgUwrV0.js} +3 -4
- package/dist/esm/{index-B4Kq2YNk.js → index-BvabGprD.js} +1 -2
- package/dist/esm/{index-Mq5pCWmZ.js → index-CKM1DdGm.js} +3 -3
- package/dist/esm/{index-C0EQceqV.js → index-ChhhtsGZ.js} +34 -66
- package/dist/esm/{index-7eS8XtuU.js → index-CumkqGQF.js} +12 -13
- package/dist/esm/{index-CfgBF1SE.js → index-DppOcPFQ.js} +10 -4
- package/dist/esm/index-ZjP4CjeZ.js +7 -0
- package/dist/esm/{index-taYRjZGp.js → index-_Za5VB9w.js} +2 -2
- package/dist/esm/index.js +17 -16
- package/dist/esm/{input-shims-tZfqB5a5.js → input-shims-BB0AKb_k.js} +11 -14
- package/dist/esm/{input.utils-fs4B7WL5.js → input.utils-J6HWocLA.js} +4 -5
- package/dist/esm/ion-accordion_2.entry.js +378 -382
- package/dist/esm/ion-action-sheet.entry.js +178 -86
- package/dist/esm/ion-alert.entry.js +250 -125
- package/dist/esm/ion-app_8.entry.js +460 -607
- package/dist/esm/ion-avatar_3.entry.js +19 -125
- package/dist/esm/ion-back-button.entry.js +64 -49
- package/dist/esm/ion-backdrop.entry.js +23 -22
- package/dist/esm/ion-breadcrumb_2.entry.js +211 -169
- package/dist/esm/ion-button_2.entry.js +152 -117
- package/dist/esm/ion-card_5.entry.js +109 -79
- package/dist/esm/ion-checkbox.entry.js +163 -129
- package/dist/esm/ion-chip.entry.js +21 -56
- package/dist/esm/ion-col_3.entry.js +186 -61
- package/dist/esm/ion-datetime-button.entry.js +255 -247
- package/dist/esm/ion-datetime.entry.js +2768 -0
- package/dist/esm/ion-fab_3.entry.js +154 -112
- package/dist/esm/ion-img.entry.js +34 -16
- package/dist/esm/ion-infinite-scroll_2.entry.js +108 -156
- package/dist/esm/ion-input-otp.entry.js +435 -437
- package/dist/esm/ion-input-password-toggle.entry.js +40 -64
- package/dist/esm/ion-input.entry.js +330 -276
- package/dist/esm/ion-item-option_3.entry.js +136 -511
- package/dist/esm/ion-item_8.entry.js +217 -189
- package/dist/esm/ion-loading.entry.js +151 -68
- package/dist/esm/ion-menu_3.entry.js +181 -137
- package/dist/esm/ion-modal.entry.js +528 -458
- package/dist/esm/ion-nav_2.entry.js +103 -163
- package/dist/esm/ion-picker-column-option.entry.js +39 -39
- package/dist/esm/ion-picker-column.entry.js +421 -409
- package/dist/esm/ion-picker.entry.js +405 -400
- package/dist/esm/ion-popover.entry.js +323 -211
- package/dist/esm/ion-progress-bar.entry.js +35 -47
- package/dist/esm/ion-radio_2.entry.js +216 -161
- package/dist/esm/ion-range.entry.js +307 -249
- package/dist/esm/ion-refresher_2.entry.js +174 -121
- package/dist/esm/ion-reorder_2.entry.js +59 -53
- package/dist/esm/ion-ripple-effect.entry.js +18 -26
- package/dist/esm/ion-route_4.entry.js +178 -75
- package/dist/esm/ion-searchbar.entry.js +308 -331
- package/dist/esm/ion-segment-content.entry.js +2 -2
- package/dist/esm/ion-segment-view.entry.js +28 -27
- package/dist/esm/ion-segment_2.entry.js +177 -141
- package/dist/esm/ion-select-modal.entry.js +49 -69
- package/dist/esm/ion-select_3.entry.js +482 -386
- package/dist/esm/ion-spinner.entry.js +28 -36
- package/dist/esm/ion-split-pane.entry.js +34 -25
- package/dist/esm/ion-tab-bar_2.entry.js +115 -178
- package/dist/esm/ion-tab_2.entry.js +54 -29
- package/dist/esm/ion-text.entry.js +13 -7
- package/dist/esm/ion-textarea.entry.js +274 -269
- package/dist/esm/ion-toast.entry.js +243 -148
- package/dist/esm/ion-toggle.entry.js +184 -187
- package/dist/esm/ionic-global-BVB7BrLT.js +151 -0
- package/dist/esm/ionic.js +5 -5
- package/dist/esm/{ios.transition-C3r-0w96.js → ios.transition-BdhybwLl.js} +14 -20
- package/dist/esm/{item-multiple-inputs-C6onMFOo.js → item-multiple-inputs-rU8VaNNg.js} +1 -1
- package/dist/esm/{keyboard-BzbtCDwZ.js → keyboard-Cj8mLJeq.js} +4 -5
- package/dist/esm/{keyboard-DYGmALa7.js → keyboard-DAF8GNJ9.js} +3 -3
- package/dist/esm/keyboard-controller-DEwoa1ev.js +165 -0
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-CPHOF5T9.js → md.transition-B5lqKGCs.js} +8 -10
- package/dist/esm/{notch-controller-CsbpmbOz.js → notch-controller-CrUGyHYz.js} +2 -2
- package/dist/esm/{overlay-control-label-CODBQrPj.js → overlay-control-label-BSQPZ79H.js} +11 -13
- package/dist/esm/{overlays-C1NQMs9y.js → overlays-CjWwtvf1.js} +57 -333
- package/dist/esm/{select-option-render-BlKZ2H83.js → select-option-render-C4m76VGH.js} +3 -4
- package/dist/esm/{status-tap-BueE8Coq.js → status-tap-DpLhkDWs.js} +3 -4
- package/dist/esm/{swipe-back-qmvTRnSq.js → swipe-back-cz4-lyG3.js} +5 -6
- package/dist/esm/theme-byZM6qHV.js +48 -0
- package/dist/esm/validity-DJztqcrH.js +17 -0
- package/dist/html.html-data.json +146 -2713
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-0266b7e1.entry.js +4 -0
- package/dist/ionic/p-08443c08.entry.js +4 -0
- package/dist/ionic/p-08f1ed1c.entry.js +4 -0
- package/dist/ionic/p-09b47b7d.entry.js +4 -0
- package/dist/ionic/p-0FNc80PN.js +4 -0
- package/dist/ionic/p-12589d59.entry.js +4 -0
- package/dist/ionic/p-1d2e53e8.entry.js +4 -0
- package/dist/ionic/p-1edf0573.entry.js +4 -0
- package/dist/ionic/p-214e000a.entry.js +4 -0
- package/dist/ionic/p-21a7fb2a.entry.js +4 -0
- package/dist/ionic/p-2ce59395.entry.js +4 -0
- package/dist/ionic/p-33829e94.entry.js +4 -0
- package/dist/ionic/p-374b10cb.entry.js +4 -0
- package/dist/ionic/p-3835a020.entry.js +4 -0
- package/dist/ionic/p-3c5fdd27.entry.js +4 -0
- package/dist/ionic/p-40424a88.entry.js +4 -0
- package/dist/ionic/p-48b6835f.entry.js +4 -0
- package/dist/ionic/p-4eOQC00Z.js +4 -0
- package/dist/ionic/p-5394e1d4.entry.js +4 -0
- package/dist/ionic/p-53bac1c9.entry.js +4 -0
- package/dist/ionic/p-5506caeb.entry.js +4 -0
- package/dist/ionic/p-5993a77f.entry.js +4 -0
- package/dist/ionic/p-6277efba.entry.js +4 -0
- package/dist/ionic/p-62e71297.entry.js +4 -0
- package/dist/ionic/p-6b286c5c.entry.js +4 -0
- package/dist/ionic/p-7116e558.entry.js +4 -0
- package/dist/ionic/p-74f30659.entry.js +4 -0
- package/dist/ionic/p-7bb3e957.entry.js +4 -0
- package/dist/ionic/p-82525fb0.entry.js +4 -0
- package/dist/ionic/p-865fa114.entry.js +4 -0
- package/dist/ionic/p-8a21bdbd.entry.js +4 -0
- package/dist/ionic/p-8e1d9e3a.entry.js +4 -0
- package/dist/ionic/p-8f3a1995.entry.js +4 -0
- package/dist/ionic/p-91c6faf1.entry.js +4 -0
- package/dist/ionic/p-9b865fe6.entry.js +4 -0
- package/dist/ionic/p-9nmHvEvw.js +4 -0
- package/dist/ionic/p-B-FxiyeI.js +4 -0
- package/dist/ionic/p-BB0LlG4y.js +4 -0
- package/dist/ionic/p-BMPN55of.js +4 -0
- package/dist/ionic/p-BQ8oNV0v.js +4 -0
- package/dist/ionic/p-BSQPZ79H.js +4 -0
- package/dist/ionic/p-BhamHSw3.js +4 -0
- package/dist/ionic/p-BjvtSsVI.js +4 -0
- package/dist/ionic/p-BkfAWuv6.js +4 -0
- package/dist/ionic/p-BmVRXR1y.js +4 -0
- package/dist/ionic/p-BnMQxWON.js +4 -0
- package/dist/ionic/p-BvabGprD.js +4 -0
- package/{components/p-Va26YR7l.js → dist/ionic/p-BwIp10KV.js} +1 -1
- package/dist/ionic/p-C-94tAim.js +4 -0
- package/dist/ionic/p-C6eME8Ey.js +4 -0
- package/dist/ionic/p-CIGNaXM1.js +4 -0
- package/dist/ionic/p-CKUuSnDR.js +4 -0
- package/dist/ionic/p-CMRtMbJc.js +4 -0
- package/dist/ionic/p-CPcPmkGv.js +4 -0
- package/dist/ionic/p-CQ_4TirR.js +4 -0
- package/dist/ionic/p-CaRuIadB.js +4 -0
- package/dist/ionic/p-Cdjxf_yg.js +4 -0
- package/dist/ionic/p-ChhhtsGZ.js +5 -0
- package/dist/ionic/p-CmKf4pgI.js +4 -0
- package/dist/ionic/p-D5t_-oMk.js +4 -0
- package/dist/ionic/p-D94b61er.js +4 -0
- package/dist/ionic/p-DCI3rXQo.js +4 -0
- package/dist/ionic/p-DDhtUaaA.js +4 -0
- package/dist/ionic/p-DJztqcrH.js +4 -0
- package/dist/ionic/p-DWCzVL3Y.js +4 -0
- package/dist/ionic/p-Dn0mqQ_R.js +4 -0
- package/dist/ionic/p-I3In7hMC.js +4 -0
- package/dist/ionic/p-T71k3C35.js +4 -0
- package/dist/ionic/p-TXPDHL13.js +4 -0
- package/dist/ionic/p-ZjP4CjeZ.js +4 -0
- package/dist/ionic/p-a641d428.entry.js +4 -0
- package/dist/ionic/p-ac6ef997.entry.js +4 -0
- package/dist/ionic/p-acf0a6af.entry.js +4 -0
- package/dist/ionic/p-ad98e3ff.entry.js +4 -0
- package/dist/ionic/p-af5166f5.entry.js +4 -0
- package/dist/ionic/p-b24dc0a1.entry.js +4 -0
- package/dist/ionic/p-ba8a598f.entry.js +4 -0
- package/dist/ionic/p-bf7c1f05.entry.js +4 -0
- package/dist/ionic/p-byZM6qHV.js +4 -0
- package/dist/ionic/p-c3f65965.entry.js +4 -0
- package/dist/ionic/p-c8fbe544.entry.js +4 -0
- package/dist/ionic/p-cb12f6c3.entry.js +4 -0
- package/dist/ionic/p-cec87704.entry.js +4 -0
- package/dist/ionic/p-dbfd2d52.entry.js +4 -0
- package/dist/ionic/p-e1e5b507.entry.js +4 -0
- package/dist/ionic/p-ede019ef.entry.js +4 -0
- package/dist/ionic/p-efef6788.entry.js +4 -0
- package/dist/ionic/p-f046aa37.entry.js +4 -0
- package/dist/ionic/p-f402f5a4.entry.js +4 -0
- package/dist/ionic/p-f622796d.entry.js +4 -0
- package/dist/ionic/{p-CnIzWLAn.js → p-kJA95YWg.js} +1 -1
- package/dist/types/components/accordion/accordion.d.ts +3 -6
- package/dist/types/components/accordion-group/accordion-group.d.ts +1 -12
- package/dist/types/components/action-sheet/action-sheet-interface.d.ts +7 -3
- package/dist/types/components/action-sheet/action-sheet.d.ts +2 -3
- package/dist/types/components/alert/alert-interface.d.ts +7 -3
- package/dist/types/components/alert/alert.d.ts +2 -3
- package/dist/types/components/app/app.d.ts +5 -4
- package/dist/types/components/avatar/avatar.d.ts +0 -32
- package/dist/types/components/back-button/back-button.d.ts +1 -2
- package/dist/types/components/backdrop/backdrop.d.ts +0 -4
- package/dist/types/components/badge/badge.d.ts +1 -34
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +1 -4
- package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
- package/dist/types/components/button/button.d.ts +8 -23
- package/dist/types/components/buttons/buttons.d.ts +1 -5
- package/dist/types/components/card/card.d.ts +1 -8
- package/dist/types/components/card-content/card-content.d.ts +1 -2
- package/dist/types/components/card-header/card-header.d.ts +2 -3
- package/dist/types/components/card-subtitle/card-subtitle.d.ts +1 -2
- package/dist/types/components/card-title/card-title.d.ts +1 -2
- package/dist/types/components/checkbox/checkbox.d.ts +4 -14
- package/dist/types/components/chip/chip.d.ts +1 -26
- package/dist/types/components/col/col.d.ts +5 -52
- package/dist/types/components/content/content.d.ts +0 -3
- package/dist/types/components/datetime/datetime.d.ts +1 -26
- package/dist/types/components/datetime/utils/data.d.ts +5 -5
- package/dist/types/components/datetime-button/datetime-button.d.ts +1 -2
- package/dist/types/components/fab/fab.d.ts +0 -4
- package/dist/types/components/fab-button/fab-button.d.ts +3 -5
- package/dist/types/components/fab-list/fab-list.d.ts +0 -4
- package/dist/types/components/footer/footer.d.ts +3 -20
- package/dist/types/components/grid/grid.d.ts +0 -4
- package/dist/types/components/header/header.d.ts +3 -26
- package/dist/types/components/header/header.utils.d.ts +5 -4
- package/dist/types/components/img/img.d.ts +1 -2
- package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +0 -21
- package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +0 -4
- package/dist/types/components/input/input.d.ts +6 -35
- package/dist/types/components/input-otp/input-otp.d.ts +0 -37
- package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +0 -2
- package/dist/types/components/item/item.d.ts +4 -11
- package/dist/types/components/item-divider/item-divider.d.ts +1 -2
- package/dist/types/components/item-group/item-group.d.ts +0 -4
- package/dist/types/components/item-option/item-option.d.ts +1 -18
- package/dist/types/components/item-options/item-options.d.ts +0 -4
- package/dist/types/components/item-sliding/item-sliding.d.ts +1 -47
- package/dist/types/components/item-sliding/test/test.utils.d.ts +0 -13
- package/dist/types/components/label/label.d.ts +1 -2
- package/dist/types/components/list/list.d.ts +1 -15
- package/dist/types/components/list-header/list-header.d.ts +1 -2
- package/dist/types/components/loading/loading-interface.d.ts +7 -2
- package/dist/types/components/loading/loading.d.ts +2 -3
- package/dist/types/components/menu/menu.d.ts +0 -3
- package/dist/types/components/menu-button/menu-button.d.ts +1 -3
- package/dist/types/components/menu-toggle/menu-toggle.d.ts +0 -3
- package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
- package/dist/types/components/modal/modal-interface.d.ts +16 -4
- package/dist/types/components/modal/modal.d.ts +12 -15
- package/dist/types/components/nav/nav-interface.d.ts +1 -10
- package/dist/types/components/nav/nav.d.ts +3 -27
- package/dist/types/components/nav-link/nav-link.d.ts +0 -4
- package/dist/types/components/note/note.d.ts +1 -2
- package/dist/types/components/picker/picker.d.ts +1 -2
- package/dist/types/components/picker-column/picker-column.d.ts +1 -2
- package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -4
- package/dist/types/components/popover/popover-interface.d.ts +6 -3
- package/dist/types/components/popover/popover.d.ts +5 -6
- package/dist/types/components/progress-bar/progress-bar.d.ts +1 -10
- package/dist/types/components/radio/radio.d.ts +1 -2
- package/dist/types/components/radio-group/radio-group.d.ts +0 -12
- package/dist/types/components/range/range.d.ts +1 -2
- package/dist/types/components/refresher/refresher.d.ts +1 -2
- package/dist/types/components/refresher-content/refresher-content.d.ts +0 -4
- package/dist/types/components/reorder/reorder.d.ts +0 -9
- package/dist/types/components/reorder-group/reorder-group.d.ts +0 -4
- package/dist/types/components/ripple-effect/ripple-effect.d.ts +0 -4
- package/dist/types/components/route/route.d.ts +1 -5
- package/dist/types/components/router/router.d.ts +0 -4
- package/dist/types/components/router-link/router-link.d.ts +0 -4
- package/dist/types/components/router-outlet/router-outlet.d.ts +8 -4
- package/dist/types/components/row/row.d.ts +0 -4
- package/dist/types/components/searchbar/searchbar.d.ts +11 -57
- package/dist/types/components/segment/segment.d.ts +1 -2
- package/dist/types/components/segment-button/segment-button.d.ts +1 -2
- package/dist/types/components/select/select.d.ts +14 -49
- package/dist/types/components/select-modal/select-modal.d.ts +0 -8
- package/dist/types/components/select-option/select-option.d.ts +4 -7
- package/dist/types/components/select-popover/select-popover.d.ts +0 -3
- package/dist/types/components/skeleton-text/skeleton-text.d.ts +0 -4
- package/dist/types/components/spinner/spinner.d.ts +0 -15
- package/dist/types/components/split-pane/split-pane.d.ts +0 -4
- package/dist/types/components/tab/tab.d.ts +0 -4
- package/dist/types/components/tab-bar/tab-bar-interface.d.ts +0 -1
- package/dist/types/components/tab-bar/tab-bar.d.ts +3 -41
- package/dist/types/components/tab-button/tab-button.d.ts +1 -12
- package/dist/types/components/tabs/tabs.d.ts +0 -3
- package/dist/types/components/text/text.d.ts +1 -2
- package/dist/types/components/textarea/textarea.d.ts +4 -53
- package/dist/types/components/thumbnail/thumbnail.d.ts +0 -4
- package/dist/types/components/title/title.d.ts +0 -4
- package/dist/types/components/toast/animations/utils.d.ts +2 -2
- package/dist/types/components/toast/toast-interface.d.ts +7 -3
- package/dist/types/components/toast/toast.d.ts +2 -19
- package/dist/types/components/toggle/toggle.d.ts +1 -15
- package/dist/types/components/toolbar/toolbar.d.ts +3 -43
- package/dist/types/components.d.ts +263 -2171
- package/dist/types/global/ionic-global.d.ts +2 -28
- package/dist/types/index.d.ts +1 -1
- package/dist/types/interface.d.ts +0 -4
- package/dist/types/utils/config.d.ts +3 -114
- package/dist/types/utils/focus-trap.d.ts +1 -1
- package/dist/types/utils/focus-visible.d.ts +0 -13
- package/dist/types/utils/forms/index.d.ts +0 -1
- package/dist/types/utils/forms/validity.d.ts +0 -7
- package/dist/types/utils/helpers.d.ts +0 -22
- package/dist/types/utils/logging/index.d.ts +2 -1
- package/dist/types/utils/overlay-control-label.d.ts +9 -11
- package/dist/types/utils/overlays-interface.d.ts +1 -31
- package/dist/types/utils/overlays.d.ts +12 -10
- package/dist/types/utils/test/playwright/drag-element.d.ts +3 -16
- package/dist/types/utils/test/playwright/generator.d.ts +2 -31
- 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 +0 -9
- package/hydrate/index.js +10310 -12033
- package/hydrate/index.mjs +10310 -12033
- package/package.json +56 -17
- package/components/ion-divider.d.ts +0 -11
- package/components/ion-divider.js +0 -4
- package/components/ion-gallery-item.d.ts +0 -11
- package/components/ion-gallery-item.js +0 -4
- package/components/ion-gallery.d.ts +0 -11
- package/components/ion-gallery.js +0 -4
- package/components/ion-picker-legacy-column.d.ts +0 -11
- package/components/ion-picker-legacy-column.js +0 -4
- package/components/ion-picker-legacy.d.ts +0 -11
- package/components/ion-picker-legacy.js +0 -4
- package/components/p-6hUZIMBp.js +0 -4
- package/components/p-9mfpAwJh.js +0 -4
- package/components/p-B2aAAEfp.js +0 -4
- package/components/p-B2lpqDWK.js +0 -4
- package/components/p-BDoEcs72.js +0 -4
- package/components/p-BDqjX7Z_.js +0 -4
- package/components/p-BE21dB_a.js +0 -4
- package/components/p-BFpXpzD-.js +0 -4
- package/components/p-BTEOs1at.js +0 -4
- package/components/p-BUNIyvqe.js +0 -4
- package/components/p-BYSs-jZz.js +0 -4
- package/components/p-BYoGvMgh.js +0 -4
- package/components/p-BYrCPOBM.js +0 -4
- package/components/p-BbVhJs-a.js +0 -4
- package/components/p-BhRXIcSN.js +0 -4
- package/components/p-BjW8SOqw.js +0 -4
- package/components/p-BsiHrVPa.js +0 -4
- package/components/p-BwKpO3Is.js +0 -4
- package/components/p-Bz8jnuiy.js +0 -4
- package/components/p-C-Ea1l5K.js +0 -4
- package/components/p-C3X10Pc6.js +0 -4
- package/components/p-C53feagD.js +0 -4
- package/components/p-CH6jbAEI.js +0 -4
- package/components/p-CJE5t2qs.js +0 -4
- package/components/p-CODBQrPj.js +0 -4
- package/components/p-CUbb1HkU.js +0 -4
- package/components/p-CVYFPBs-.js +0 -4
- package/components/p-CVoLDZ7z.js +0 -4
- package/components/p-CZrORZXS.js +0 -4
- package/components/p-Cc3oC60a.js +0 -4
- package/components/p-Cl0B-RWe.js +0 -4
- package/components/p-CmoUesXp.js +0 -4
- package/components/p-CyNW8ypn.js +0 -4
- package/components/p-CzxyxYID.js +0 -4
- package/components/p-D0Iqw6OZ.js +0 -4
- package/components/p-D0LT3Z3i.js +0 -4
- package/components/p-D1t981Ih.js +0 -4
- package/components/p-D6tqrIYY.js +0 -4
- package/components/p-D9C5yWpF.js +0 -4
- package/components/p-DCRXgAoM.js +0 -4
- package/components/p-DL5wyRub.js +0 -4
- package/components/p-DQlXUUDh.js +0 -4
- package/components/p-DRWN7QM2.js +0 -4
- package/components/p-DaJxRxSQ.js +0 -4
- package/components/p-DbmfFkd1.js +0 -4
- package/components/p-Dhi5xtNS.js +0 -4
- package/components/p-DnwLgh9U.js +0 -4
- package/components/p-DoZB3DcY.js +0 -4
- package/components/p-DrrpZB81.js +0 -4
- package/components/p-DrzWRqnG.js +0 -4
- package/components/p-DylrHLJF.js +0 -4
- package/components/p-Dypq4kXE.js +0 -4
- package/components/p-DzeMJvWL.js +0 -4
- package/components/p-Dzk4Tr0X.js +0 -4
- package/components/p-Rkm2AOZ2.js +0 -4
- package/components/p-UYngqo1f.js +0 -4
- package/components/p-asUhrzOB.js +0 -4
- package/components/p-fIOYmaqA.js +0 -4
- package/components/p-jlwpz7Ms.js +0 -4
- package/components/p-kInyVu79.js +0 -4
- package/components/p-miSYSxcc.js +0 -4
- package/components/p-paDbTUL9.js +0 -4
- package/components/p-vXpMhGrs.js +0 -4
- package/components/p-znZTPd7u.js +0 -4
- package/css/ionic/bundle.ionic.css +0 -1
- package/css/ionic/bundle.ionic.css.map +0 -1
- package/css/ionic/core.ionic.css +0 -1
- package/css/ionic/core.ionic.css.map +0 -1
- package/css/ionic/global.bundle.ionic.css +0 -1
- package/css/ionic/global.bundle.ionic.css.map +0 -1
- package/css/ionic/ionic-swiper.ionic.css +0 -1
- package/css/ionic/ionic-swiper.ionic.css.map +0 -1
- package/css/ionic/link.ionic.css +0 -1
- package/css/ionic/link.ionic.css.map +0 -1
- package/css/ionic/structure.ionic.css +0 -1
- package/css/ionic/structure.ionic.css.map +0 -1
- package/css/ionic/typography.ionic.css +0 -1
- package/css/ionic/typography.ionic.css.map +0 -1
- package/css/ionic/utils.bundle.ionic.css +0 -1
- package/css/ionic/utils.bundle.ionic.css.map +0 -1
- package/dist/cjs/caret-down-vtVgfXIs.js +0 -8
- package/dist/cjs/caret-left-CxZXLRv5.js +0 -8
- package/dist/cjs/caret-right-CRCgv98E.js +0 -8
- package/dist/cjs/clear-button-press-controller-2hAy_qdm.js +0 -45
- package/dist/cjs/ion-datetime_3.cjs.entry.js +0 -3242
- package/dist/cjs/ion-divider.cjs.entry.js +0 -51
- package/dist/cjs/ion-gallery-item.cjs.entry.js +0 -59
- package/dist/cjs/ion-gallery.cjs.entry.js +0 -607
- package/dist/cjs/ionic-global-DvEcO0tQ.js +0 -519
- package/dist/cjs/list-a-7GSA6K.js +0 -8
- package/dist/cjs/scroll-hide-controller-DAf_DwKc.js +0 -345
- package/dist/cjs/validity-QmuwEptc.js +0 -51
- package/dist/cjs/x-BTF99yFH.js +0 -8
- package/dist/collection/components/accordion/accordion.ionic.css +0 -201
- package/dist/collection/components/accordion-group/accordion-group.ionic.css +0 -93
- package/dist/collection/components/action-sheet/action-sheet.ionic.css +0 -494
- package/dist/collection/components/alert/alert.ionic.css +0 -787
- package/dist/collection/components/avatar/avatar.ionic.css +0 -385
- package/dist/collection/components/backdrop/backdrop.ionic.css +0 -109
- package/dist/collection/components/badge/badge.ionic.css +0 -272
- package/dist/collection/components/button/button.ionic.css +0 -644
- package/dist/collection/components/buttons/buttons.ionic.css +0 -97
- package/dist/collection/components/card/card.ionic.css +0 -144
- package/dist/collection/components/card-content/card-content.ionic.css +0 -89
- package/dist/collection/components/card-header/card-header.ionic.css +0 -85
- package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +0 -144
- package/dist/collection/components/checkbox/checkbox.ionic.css +0 -543
- package/dist/collection/components/chip/chip.ionic.css +0 -217
- package/dist/collection/components/datetime/datetime.ionic.css +0 -703
- package/dist/collection/components/divider/divider.ionic.css +0 -148
- package/dist/collection/components/divider/divider.ios.css +0 -87
- package/dist/collection/components/divider/divider.js +0 -94
- package/dist/collection/components/divider/divider.md.css +0 -87
- package/dist/collection/components/footer/footer-interface.js +0 -1
- package/dist/collection/components/gallery/gallery-constants.js +0 -12
- package/dist/collection/components/gallery/gallery-interface.js +0 -1
- package/dist/collection/components/gallery/gallery.css +0 -15
- package/dist/collection/components/gallery/gallery.js +0 -679
- package/dist/collection/components/gallery/test/utils.js +0 -100
- package/dist/collection/components/gallery-item/gallery-item.css +0 -49
- package/dist/collection/components/gallery-item/gallery-item.js +0 -99
- package/dist/collection/components/header/header-interface.js +0 -1
- package/dist/collection/components/header/header.ionic.css +0 -250
- package/dist/collection/components/input/input.ionic.css +0 -891
- package/dist/collection/components/input-otp/input-otp.ionic.css +0 -371
- package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +0 -78
- package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +0 -61
- package/dist/collection/components/item/item.ionic.css +0 -496
- package/dist/collection/components/item-option/item-option.ionic.css +0 -277
- package/dist/collection/components/item-options/item-options.ionic.css +0 -221
- package/dist/collection/components/item-sliding/item-sliding.ionic.css +0 -211
- package/dist/collection/components/list/list.ionic.css +0 -212
- package/dist/collection/components/list-header/list-header.ionic.css +0 -190
- package/dist/collection/components/menu-button/menu-button.ionic.css +0 -236
- package/dist/collection/components/modal/animations/ionic.enter.js +0 -40
- package/dist/collection/components/modal/animations/ionic.leave.js +0 -28
- package/dist/collection/components/modal/modal.ionic.css +0 -255
- package/dist/collection/components/picker-legacy/animations/ios.enter.js +0 -27
- package/dist/collection/components/picker-legacy/animations/ios.leave.js +0 -23
- package/dist/collection/components/picker-legacy/picker-interface.js +0 -1
- package/dist/collection/components/picker-legacy/picker.ios.css +0 -312
- package/dist/collection/components/picker-legacy/picker.js +0 -891
- package/dist/collection/components/picker-legacy/picker.md.css +0 -299
- package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -243
- package/dist/collection/components/picker-legacy-column/picker-column.js +0 -422
- package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -234
- package/dist/collection/components/picker-legacy-column/test/test.utils.js +0 -43
- package/dist/collection/components/popover/popover.ionic.css +0 -290
- package/dist/collection/components/progress-bar/progress-bar.ionic.css +0 -287
- package/dist/collection/components/radio/radio.ionic.css +0 -422
- package/dist/collection/components/radio-group/radio-group.ionic.css +0 -119
- package/dist/collection/components/range/range.ionic.css +0 -567
- package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +0 -215
- package/dist/collection/components/searchbar/searchbar.ionic.css +0 -622
- package/dist/collection/components/segment/segment.ionic.css +0 -115
- package/dist/collection/components/segment-button/segment-button.ionic.css +0 -352
- package/dist/collection/components/select/select.ionic.css +0 -809
- package/dist/collection/components/select-modal/select-modal.ionic.css +0 -257
- package/dist/collection/components/select-popover/select-popover.ionic.css +0 -255
- package/dist/collection/components/spinner/spinner.native.css +0 -199
- package/dist/collection/components/tab-bar/tab-bar.ionic.css +0 -249
- package/dist/collection/components/tab-button/tab-button.ionic.css +0 -373
- package/dist/collection/components/textarea/textarea.ionic.css +0 -898
- package/dist/collection/components/title/title.ionic.css +0 -127
- package/dist/collection/components/toast/toast.ionic.css +0 -394
- package/dist/collection/components/toggle/toggle.ionic.css +0 -512
- package/dist/collection/components/toolbar/test/image.svg +0 -1
- package/dist/collection/components/toolbar/toolbar.ionic.css +0 -249
- package/dist/collection/utils/css-value-validation.js +0 -39
- package/dist/collection/utils/forms/clear-button-press-controller.js +0 -40
- package/dist/collection/utils/scroll-hide-controller.js +0 -178
- package/dist/esm/caret-down-D1t981Ih.js +0 -6
- package/dist/esm/caret-left-fIOYmaqA.js +0 -6
- package/dist/esm/caret-right-BYSs-jZz.js +0 -6
- package/dist/esm/clear-button-press-controller-C79TPm5p.js +0 -43
- package/dist/esm/ion-datetime_3.entry.js +0 -3238
- package/dist/esm/ion-divider.entry.js +0 -49
- package/dist/esm/ion-gallery-item.entry.js +0 -57
- package/dist/esm/ion-gallery.entry.js +0 -605
- package/dist/esm/ionic-global-CEwbmRLz.js +0 -508
- package/dist/esm/list-Dhi5xtNS.js +0 -6
- package/dist/esm/scroll-hide-controller-CfbtPBWv.js +0 -342
- package/dist/esm/theme-DaJxRxSQ.js +0 -67
- package/dist/esm/validity-BjW8SOqw.js +0 -48
- package/dist/esm/x-BDqjX7Z_.js +0 -6
- package/dist/ionic/p--sroV-k-.js +0 -4
- package/dist/ionic/p-00731d20.entry.js +0 -4
- package/dist/ionic/p-03c20a50.entry.js +0 -4
- package/dist/ionic/p-03ec6673.entry.js +0 -4
- package/dist/ionic/p-0405ec57.entry.js +0 -4
- package/dist/ionic/p-04f16322.entry.js +0 -4
- package/dist/ionic/p-09123f89.entry.js +0 -4
- package/dist/ionic/p-15028853.entry.js +0 -4
- package/dist/ionic/p-16c5db90.entry.js +0 -4
- package/dist/ionic/p-1d1dfb68.entry.js +0 -4
- package/dist/ionic/p-231572a0.entry.js +0 -4
- package/dist/ionic/p-2740db6e.entry.js +0 -4
- package/dist/ionic/p-2a6d4601.entry.js +0 -4
- package/dist/ionic/p-2d8fe33c.entry.js +0 -4
- package/dist/ionic/p-2dbc50d9.entry.js +0 -4
- package/dist/ionic/p-32d3095c.entry.js +0 -4
- package/dist/ionic/p-356cd619.entry.js +0 -4
- package/dist/ionic/p-391bdb60.entry.js +0 -4
- package/dist/ionic/p-3b2ab5b4.entry.js +0 -4
- package/dist/ionic/p-4e3e750a.entry.js +0 -4
- package/dist/ionic/p-4fee0df6.entry.js +0 -4
- package/dist/ionic/p-547d010c.entry.js +0 -4
- package/dist/ionic/p-54895118.entry.js +0 -4
- package/dist/ionic/p-6163d04d.entry.js +0 -4
- package/dist/ionic/p-679c1448.entry.js +0 -4
- package/dist/ionic/p-6de524e5.entry.js +0 -4
- package/dist/ionic/p-764d7ea2.entry.js +0 -4
- package/dist/ionic/p-7k7Q1A38.js +0 -4
- package/dist/ionic/p-81BMEE8Q.js +0 -4
- package/dist/ionic/p-8d6d7acb.entry.js +0 -4
- package/dist/ionic/p-96732fe2.entry.js +0 -4
- package/dist/ionic/p-96c4c1b9.entry.js +0 -4
- package/dist/ionic/p-9745f518.entry.js +0 -4
- package/dist/ionic/p-9a40af3c.entry.js +0 -4
- package/dist/ionic/p-9e725104.entry.js +0 -4
- package/dist/ionic/p-B4Kq2YNk.js +0 -4
- package/dist/ionic/p-BDqjX7Z_.js +0 -4
- package/dist/ionic/p-BTEOs1at.js +0 -4
- package/dist/ionic/p-BYSs-jZz.js +0 -4
- package/dist/ionic/p-BbWo-T8F.js +0 -4
- package/dist/ionic/p-BjW8SOqw.js +0 -4
- package/dist/ionic/p-Bvz8PHo5.js +0 -4
- package/dist/ionic/p-BwKpO3Is.js +0 -4
- package/dist/ionic/p-C0EQceqV.js +0 -5
- package/dist/ionic/p-C1_a9uRb.js +0 -4
- package/dist/ionic/p-C53feagD.js +0 -4
- package/dist/ionic/p-C6WD6qSF.js +0 -4
- package/dist/ionic/p-C7urd_wE.js +0 -4
- package/dist/ionic/p-CCgRIJJv.js +0 -4
- package/dist/ionic/p-CEkwLb3L.js +0 -4
- package/dist/ionic/p-CGFf6My7.js +0 -4
- package/dist/ionic/p-CLUwRxij.js +0 -4
- package/dist/ionic/p-CODBQrPj.js +0 -4
- package/dist/ionic/p-CP_sVwEm.js +0 -4
- package/dist/ionic/p-CSMWpRc0.js +0 -4
- package/dist/ionic/p-CYYo93al.js +0 -4
- package/dist/ionic/p-Cipl19Qe.js +0 -4
- package/dist/ionic/p-Cl0B-RWe.js +0 -4
- package/dist/ionic/p-Cvvva6Z7.js +0 -4
- package/dist/ionic/p-D1t981Ih.js +0 -4
- package/dist/ionic/p-DINFwXlp.js +0 -4
- package/dist/ionic/p-DIvCXVmD.js +0 -4
- package/dist/ionic/p-DTsDGZPd.js +0 -4
- package/dist/ionic/p-DaJxRxSQ.js +0 -4
- package/dist/ionic/p-Dhi5xtNS.js +0 -4
- package/dist/ionic/p-DtQgCTtW.js +0 -4
- package/dist/ionic/p-DuRx6DeQ.js +0 -4
- package/dist/ionic/p-YGLqXqFd.js +0 -4
- package/dist/ionic/p-YIsE5bNG.js +0 -4
- package/dist/ionic/p-a61c2ace.entry.js +0 -4
- package/dist/ionic/p-abb516e3.entry.js +0 -4
- package/dist/ionic/p-b54edee6.entry.js +0 -4
- package/dist/ionic/p-c076ac5c.entry.js +0 -4
- package/dist/ionic/p-c4ff25cb.entry.js +0 -4
- package/dist/ionic/p-c7279756.entry.js +0 -4
- package/dist/ionic/p-c7ebed50.entry.js +0 -4
- package/dist/ionic/p-cd0037e4.entry.js +0 -4
- package/dist/ionic/p-d261938d.entry.js +0 -4
- package/dist/ionic/p-d33dfc12.entry.js +0 -4
- package/dist/ionic/p-d7764330.entry.js +0 -4
- package/dist/ionic/p-defb23a2.entry.js +0 -4
- package/dist/ionic/p-df642ef5.entry.js +0 -4
- package/dist/ionic/p-e2a35249.entry.js +0 -4
- package/dist/ionic/p-e2b952ef.entry.js +0 -4
- package/dist/ionic/p-e77cfd1e.entry.js +0 -4
- package/dist/ionic/p-ecb9d3d3.entry.js +0 -4
- package/dist/ionic/p-efd13adf.entry.js +0 -4
- package/dist/ionic/p-f0904c1d.entry.js +0 -4
- package/dist/ionic/p-f33689f7.entry.js +0 -4
- package/dist/ionic/p-f693efe9.entry.js +0 -4
- package/dist/ionic/p-f788396b.entry.js +0 -4
- package/dist/ionic/p-fIOYmaqA.js +0 -4
- package/dist/ionic/p-fa16fad8.entry.js +0 -4
- package/dist/ionic/p-lMb_45ax.js +0 -4
- package/dist/ionic/p-oadJNPuo.js +0 -4
- package/dist/ionic/p-vXpMhGrs.js +0 -4
- package/dist/ionic/p-wNjWCZVO.js +0 -4
- package/dist/types/components/divider/divider.d.ts +0 -20
- package/dist/types/components/footer/footer-interface.d.ts +0 -1
- package/dist/types/components/gallery/gallery-constants.d.ts +0 -9
- package/dist/types/components/gallery/gallery-interface.d.ts +0 -10
- package/dist/types/components/gallery/gallery.d.ts +0 -218
- package/dist/types/components/gallery/test/utils.d.ts +0 -3
- package/dist/types/components/gallery-item/gallery-item.d.ts +0 -33
- package/dist/types/components/header/header-interface.d.ts +0 -1
- package/dist/types/components/modal/animations/ionic.enter.d.ts +0 -6
- package/dist/types/components/modal/animations/ionic.leave.d.ts +0 -6
- package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +0 -5
- package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +0 -5
- package/dist/types/components/picker-legacy/picker-interface.d.ts +0 -52
- package/dist/types/components/picker-legacy/picker.d.ts +0 -159
- package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
- package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +0 -9
- package/dist/types/utils/css-value-validation.d.ts +0 -21
- package/dist/types/utils/forms/clear-button-press-controller.d.ts +0 -20
- package/dist/types/utils/scroll-hide-controller.d.ts +0 -56
- /package/dist/collection/components/{refresher-content/refresher-content.css → input-password-toggle/input-password-toggle.css} +0 -0
|
@@ -3,20 +3,21 @@
|
|
|
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-uvry__L4.js');
|
|
7
|
+
var hardwareBackButton = require('./hardware-back-button-fqpYh-kd.js');
|
|
8
|
+
var ionicGlobal = require('./ionic-global-k6hOWWpn.js');
|
|
9
|
+
var helpers = require('./helpers-CaLhEmTE.js');
|
|
10
|
+
var dir = require('./dir-Brx7VkvP.js');
|
|
11
|
+
var theme = require('./theme-Bw0rpaNN.js');
|
|
12
|
+
var index$1 = require('./index-D48vawBq.js');
|
|
13
|
+
var keyboardController = require('./keyboard-controller-PtZoN2GS.js');
|
|
14
14
|
var cubicBezier = require('./cubic-bezier-DAjy1V-e.js');
|
|
15
|
-
var frameworkDelegate = require('./framework-delegate-
|
|
15
|
+
var frameworkDelegate = require('./framework-delegate-NTLQ5YzV.js');
|
|
16
16
|
var lockController = require('./lock-controller-aDB9wrEf.js');
|
|
17
|
-
var index$2 = require('./index-
|
|
18
|
-
require('./
|
|
19
|
-
require('./
|
|
17
|
+
var index$2 = require('./index-Ck9advCT.js');
|
|
18
|
+
require('./index-DkNv4J_i.js');
|
|
19
|
+
require('./keyboard-cHxZlTyz.js');
|
|
20
|
+
require('./capacitor-DmA66EwP.js');
|
|
20
21
|
|
|
21
22
|
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}`;
|
|
22
23
|
|
|
@@ -24,6 +25,54 @@ const App = class {
|
|
|
24
25
|
constructor(hostRef) {
|
|
25
26
|
index.registerInstance(this, hostRef);
|
|
26
27
|
}
|
|
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-BlshL9ib.js'); }).then((module) => module.startTapClick(index.config));
|
|
37
|
+
}
|
|
38
|
+
if (index.config.getBoolean('statusTap', isHybrid)) {
|
|
39
|
+
Promise.resolve().then(function () { return require('./status-tap-BR_ujYHg.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-DvHAFqiP.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
|
+
}
|
|
27
76
|
/**
|
|
28
77
|
* Used to set focus on an element that uses `ion-focusable`.
|
|
29
78
|
* Do not use this if focusing the element as a result of a keyboard
|
|
@@ -36,62 +85,83 @@ const App = class {
|
|
|
36
85
|
* @param elements An array of HTML elements to set focus on.
|
|
37
86
|
*/
|
|
38
87
|
async setFocus(elements) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
88
|
+
if (this.focusVisible) {
|
|
89
|
+
this.focusVisible.setFocus(elements);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
rIC(callback) {
|
|
93
|
+
if ('requestIdleCallback' in window) {
|
|
94
|
+
window.requestIdleCallback(callback);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
this.loadTimeout = setTimeout(callback, 32);
|
|
98
|
+
}
|
|
44
99
|
}
|
|
45
100
|
render() {
|
|
46
|
-
const
|
|
47
|
-
return (index.h(index.Host, { key: '
|
|
48
|
-
[
|
|
101
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
102
|
+
return (index.h(index.Host, { key: '77a7459d3e42b3715a5a7e1cf468e2ebc99e54bb', class: {
|
|
103
|
+
[mode]: true,
|
|
49
104
|
'ion-page': true,
|
|
50
105
|
'force-statusbar-padding': index.config.getBoolean('_forceStatusbarPadding'),
|
|
51
106
|
} }));
|
|
52
107
|
}
|
|
53
|
-
|
|
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;
|
|
54
127
|
};
|
|
55
128
|
App.style = appCss();
|
|
56
129
|
|
|
57
|
-
const
|
|
130
|
+
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);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:.12;--background-activated:#000;--background-activated-opacity:.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:.12;--background-activated:#000;--background-activated-opacity:.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.65em;line-height:0.67}`;
|
|
58
131
|
|
|
59
|
-
const
|
|
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}`;
|
|
132
|
+
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);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}`;
|
|
62
133
|
|
|
63
134
|
const Buttons = class {
|
|
64
135
|
constructor(hostRef) {
|
|
65
136
|
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;
|
|
79
137
|
}
|
|
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;
|
|
80
151
|
render() {
|
|
81
|
-
const
|
|
82
|
-
return (index.h(index.Host, { key: '
|
|
83
|
-
[
|
|
152
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
153
|
+
return (index.h(index.Host, { key: '58c1fc5eb867d0731c63549b1ccb3ec3bbbe6e1b', class: {
|
|
154
|
+
[mode]: true,
|
|
84
155
|
['buttons-collapse']: this.collapse,
|
|
85
|
-
} }, index.h("slot", { key: '
|
|
156
|
+
} }, index.h("slot", { key: '0c8f95b9840c8fa0c4e50be84c5159620a3eb5c8' })));
|
|
86
157
|
}
|
|
87
158
|
};
|
|
88
159
|
Buttons.style = {
|
|
89
|
-
ionic: buttonsIonicCss(),
|
|
90
160
|
ios: buttonsIosCss(),
|
|
91
161
|
md: buttonsMdCss()
|
|
92
162
|
};
|
|
93
163
|
|
|
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{
|
|
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{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right: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)}`;
|
|
95
165
|
|
|
96
166
|
const Content = class {
|
|
97
167
|
constructor(hostRef) {
|
|
@@ -99,68 +169,100 @@ const Content = class {
|
|
|
99
169
|
this.ionScrollStart = index.createEvent(this, "ionScrollStart", 7);
|
|
100
170
|
this.ionScroll = index.createEvent(this, "ionScroll", 7);
|
|
101
171
|
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;
|
|
160
172
|
}
|
|
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;
|
|
161
221
|
fullscreenChanged() {
|
|
162
222
|
this.setupFullscreenResizeObserver();
|
|
163
223
|
}
|
|
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;
|
|
164
266
|
componentWillLoad() {
|
|
165
267
|
this.inheritedAttributes = helpers.inheritAriaAttributes(this.el);
|
|
166
268
|
}
|
|
@@ -299,8 +401,9 @@ const Content = class {
|
|
|
299
401
|
this.resize();
|
|
300
402
|
}, 100);
|
|
301
403
|
}
|
|
302
|
-
shouldForceOverscroll(
|
|
404
|
+
shouldForceOverscroll() {
|
|
303
405
|
const { forceOverscroll } = this;
|
|
406
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
304
407
|
return forceOverscroll === undefined ? mode === 'ios' && ionicGlobal.isPlatform('ios') : forceOverscroll;
|
|
305
408
|
}
|
|
306
409
|
resize() {
|
|
@@ -496,13 +599,12 @@ const Content = class {
|
|
|
496
599
|
render() {
|
|
497
600
|
const { fixedSlotPlacement, inheritedAttributes, isMainContent, scrollX, scrollY, el } = this;
|
|
498
601
|
const rtl = dir.isRTL(el) ? 'rtl' : 'ltr';
|
|
499
|
-
const
|
|
500
|
-
const
|
|
501
|
-
const
|
|
502
|
-
const transitionShadow = theme$1 === 'ios';
|
|
602
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
603
|
+
const forceOverscroll = this.shouldForceOverscroll();
|
|
604
|
+
const transitionShadow = mode === 'ios';
|
|
503
605
|
this.resize();
|
|
504
|
-
return (index.h(index.Host,
|
|
505
|
-
[
|
|
606
|
+
return (index.h(index.Host, { key: '9551c759df407b10d809171641fc6e8f14d92219', role: isMainContent ? 'main' : undefined, class: theme.createColorClasses(this.color, {
|
|
607
|
+
[mode]: true,
|
|
506
608
|
'content-fullscreen': this.fullscreen,
|
|
507
609
|
'content-sizing': theme.hostContext('ion-popover', this.el),
|
|
508
610
|
overscroll: forceOverscroll,
|
|
@@ -510,14 +612,13 @@ const Content = class {
|
|
|
510
612
|
}), style: {
|
|
511
613
|
'--offset-top': `${this.cTop}px`,
|
|
512
614
|
'--offset-bottom': `${this.cBottom}px`,
|
|
513
|
-
}
|
|
615
|
+
}, ...inheritedAttributes }, index.h("div", { key: 'c6de8fd226f0d10a534eb107fe032ac155fbe68e', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? index.h("slot", { name: "fixed" }) : null, index.h("div", { key: '082fc2936061360060b48221ecb1c864a3711fa0', class: {
|
|
514
616
|
'inner-scroll': true,
|
|
515
617
|
'scroll-x': scrollX,
|
|
516
618
|
'scroll-y': scrollY,
|
|
517
619
|
overscroll: (scrollX || scrollY) && forceOverscroll,
|
|
518
|
-
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: '
|
|
620
|
+
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: '0d2286206facb22696a9ca7e74a3f6b7d2397aab' })), 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));
|
|
519
621
|
}
|
|
520
|
-
get el() { return index.getElement(this); }
|
|
521
622
|
static get watchers() { return {
|
|
522
623
|
"fullscreen": [{
|
|
523
624
|
"fullscreenChanged": 0
|
|
@@ -525,12 +626,11 @@ const Content = class {
|
|
|
525
626
|
}; }
|
|
526
627
|
};
|
|
527
628
|
const getParentElement = (el) => {
|
|
528
|
-
var _a;
|
|
529
629
|
if (el.parentElement) {
|
|
530
630
|
// normal element with a parent element
|
|
531
631
|
return el.parentElement;
|
|
532
632
|
}
|
|
533
|
-
if (
|
|
633
|
+
if (el.parentNode?.host) {
|
|
534
634
|
// shadow dom's document fragment
|
|
535
635
|
return el.parentNode.host;
|
|
536
636
|
}
|
|
@@ -546,8 +646,7 @@ const getPageElement = (el) => {
|
|
|
546
646
|
* between the popover and the edges of the screen. But if the popover contains
|
|
547
647
|
* its own page element, we should use that instead.
|
|
548
648
|
*/
|
|
549
|
-
const
|
|
550
|
-
const page = el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner, .popover-content`);
|
|
649
|
+
const page = el.closest('ion-app, ion-page, .ion-page, page-inner, .popover-content');
|
|
551
650
|
if (page) {
|
|
552
651
|
return page;
|
|
553
652
|
}
|
|
@@ -611,100 +710,34 @@ const handleFooterFade = (scrollEl, baseEl) => {
|
|
|
611
710
|
});
|
|
612
711
|
};
|
|
613
712
|
|
|
614
|
-
const
|
|
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}`;
|
|
713
|
+
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-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{left:0;right: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:.8}}.footer-ios.ion-no-border ion-toolbar:first-of-type{--border-width:0}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}`;
|
|
617
714
|
|
|
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-
|
|
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}`;
|
|
619
716
|
|
|
620
717
|
const Footer = class {
|
|
621
718
|
constructor(hostRef) {
|
|
622
719
|
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
|
-
};
|
|
707
720
|
}
|
|
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;
|
|
708
741
|
componentDidLoad() {
|
|
709
742
|
this.checkCollapsibleFooter();
|
|
710
743
|
}
|
|
@@ -712,7 +745,7 @@ const Footer = class {
|
|
|
712
745
|
this.checkCollapsibleFooter();
|
|
713
746
|
}
|
|
714
747
|
async connectedCallback() {
|
|
715
|
-
const promise =
|
|
748
|
+
const promise = keyboardController.createKeyboardController(async (keyboardOpen, waitForResize) => {
|
|
716
749
|
/**
|
|
717
750
|
* If the keyboard is hiding, then we need to wait
|
|
718
751
|
* for the webview to resize. Otherwise, the footer
|
|
@@ -739,7 +772,6 @@ const Footer = class {
|
|
|
739
772
|
}
|
|
740
773
|
}
|
|
741
774
|
disconnectedCallback() {
|
|
742
|
-
this.destroyCollapsibleFooter();
|
|
743
775
|
if (this.keyboardCtrlPromise) {
|
|
744
776
|
this.keyboardCtrlPromise.then((ctrl) => ctrl.destroy());
|
|
745
777
|
this.keyboardCtrlPromise = null;
|
|
@@ -749,44 +781,58 @@ const Footer = class {
|
|
|
749
781
|
this.keyboardCtrl = null;
|
|
750
782
|
}
|
|
751
783
|
}
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
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);
|
|
759
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
|
+
destroyCollapsibleFooter() {
|
|
760
814
|
if (this.scrollEl && this.contentScrollCallback) {
|
|
761
815
|
this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
|
|
762
816
|
this.contentScrollCallback = undefined;
|
|
763
817
|
}
|
|
764
818
|
}
|
|
765
819
|
render() {
|
|
766
|
-
const { translucent,
|
|
767
|
-
const
|
|
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;
|
|
820
|
+
const { translucent, collapse } = this;
|
|
821
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
773
822
|
const tabs = this.el.closest('ion-tabs');
|
|
774
|
-
const tabBar = tabs
|
|
775
|
-
return (index.h(index.Host, { key: '
|
|
776
|
-
[
|
|
823
|
+
const tabBar = tabs?.querySelector(':scope > ion-tab-bar');
|
|
824
|
+
return (index.h(index.Host, { key: '71939c4bbaef5062532a99ee2e33574102a9abad', role: "contentinfo", class: {
|
|
825
|
+
[mode]: true,
|
|
777
826
|
// Used internally for styling
|
|
778
|
-
[`footer-${
|
|
827
|
+
[`footer-${mode}`]: true,
|
|
779
828
|
[`footer-translucent`]: translucent,
|
|
780
|
-
[`footer-translucent-${
|
|
829
|
+
[`footer-translucent-${mode}`]: translucent,
|
|
781
830
|
['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
} }, theme === 'ios' && translucent && index.h("div", { key: 'd78b46870cbf11c95b066d649c04ec398b66e614', class: "footer-background" }), index.h("slot", { key: '9dc34787cd29597fe1b1198db317602014ac1483' })));
|
|
831
|
+
[`footer-collapse-${collapse}`]: collapse !== undefined,
|
|
832
|
+
} }, mode === 'ios' && translucent && index.h("div", { key: '2fa14f61661c47c661cecd696176728d6eafa74f', class: "footer-background" }), index.h("slot", { key: '8e63696e7c528d5c38201e546bf08135290d0945' })));
|
|
785
833
|
}
|
|
786
|
-
get el() { return index.getElement(this); }
|
|
787
834
|
};
|
|
788
835
|
Footer.style = {
|
|
789
|
-
ionic: ionicFooterMdCss(),
|
|
790
836
|
ios: footerIosCss(),
|
|
791
837
|
md: footerMdCss()
|
|
792
838
|
};
|
|
@@ -838,14 +884,13 @@ const handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {
|
|
|
838
884
|
});
|
|
839
885
|
};
|
|
840
886
|
const setToolbarBackgroundOpacity = (headerEl, opacity) => {
|
|
841
|
-
var _a;
|
|
842
887
|
/**
|
|
843
888
|
* Fading in the backdrop opacity
|
|
844
889
|
* should happen after the large title
|
|
845
890
|
* has collapsed, so it is handled
|
|
846
891
|
* by handleHeaderFade()
|
|
847
892
|
*/
|
|
848
|
-
if (
|
|
893
|
+
if (headerEl.collapse === 'fade') {
|
|
849
894
|
return;
|
|
850
895
|
}
|
|
851
896
|
if (opacity === undefined) {
|
|
@@ -1003,79 +1048,57 @@ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
|
|
|
1003
1048
|
* Get the role type for the ion-header.
|
|
1004
1049
|
*
|
|
1005
1050
|
* @param isInsideMenu If ion-header is inside ion-menu.
|
|
1006
|
-
* @
|
|
1007
|
-
*
|
|
1008
|
-
*
|
|
1051
|
+
* @param isCondensed If ion-header has collapse="condense".
|
|
1052
|
+
* @param mode The current mode.
|
|
1053
|
+
* @returns 'none' if inside ion-menu or if condensed in md
|
|
1054
|
+
* mode, otherwise 'banner'.
|
|
1009
1055
|
*/
|
|
1010
|
-
const getRoleType = (isInsideMenu) => {
|
|
1056
|
+
const getRoleType = (isInsideMenu, isCondensed, mode) => {
|
|
1011
1057
|
// If the header is inside a menu, it should not have the banner role.
|
|
1012
1058
|
if (isInsideMenu) {
|
|
1013
1059
|
return ROLE_NONE;
|
|
1014
1060
|
}
|
|
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
|
+
}
|
|
1015
1068
|
// Default to banner role.
|
|
1016
1069
|
return ROLE_BANNER;
|
|
1017
1070
|
};
|
|
1018
1071
|
|
|
1019
|
-
const
|
|
1072
|
+
const headerIosCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.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{left:0;right: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:.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-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.header-ios:not(.header-collapse-main):has(~ion-content ion-header.header-ios[collapse=condense],~ion-content ion-header.header-ios.header-collapse-condense){opacity:0}`;
|
|
1020
1073
|
|
|
1021
|
-
const
|
|
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}`;
|
|
1074
|
+
const headerMdCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.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{display:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
|
|
1024
1075
|
|
|
1025
1076
|
const Header = class {
|
|
1026
1077
|
constructor(hostRef) {
|
|
1027
1078
|
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
|
-
};
|
|
1078
1079
|
}
|
|
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;
|
|
1079
1102
|
componentWillLoad() {
|
|
1080
1103
|
this.inheritedAttributes = helpers.inheritAriaAttributes(this.el);
|
|
1081
1104
|
}
|
|
@@ -1089,63 +1112,48 @@ const Header = class {
|
|
|
1089
1112
|
this.destroyCollapsibleHeader();
|
|
1090
1113
|
}
|
|
1091
1114
|
async checkCollapsibleHeader() {
|
|
1092
|
-
const
|
|
1093
|
-
if (
|
|
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) {
|
|
1115
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
1116
|
+
if (mode !== 'ios') {
|
|
1102
1117
|
return;
|
|
1103
1118
|
}
|
|
1104
|
-
const
|
|
1105
|
-
const hasCondense =
|
|
1106
|
-
const hasFade =
|
|
1119
|
+
const { collapse } = this;
|
|
1120
|
+
const hasCondense = collapse === 'condense';
|
|
1121
|
+
const hasFade = collapse === 'fade';
|
|
1107
1122
|
this.destroyCollapsibleHeader();
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
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) {
|
|
1123
|
+
if (hasCondense) {
|
|
1124
|
+
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
1125
|
+
const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
|
|
1120
1126
|
// Cloned elements are always needed in iOS transition
|
|
1121
1127
|
index.writeTask(() => {
|
|
1122
1128
|
const title = cloneElement('ion-title');
|
|
1123
1129
|
title.size = 'large';
|
|
1124
1130
|
cloneElement('ion-back-button');
|
|
1125
1131
|
});
|
|
1126
|
-
|
|
1127
|
-
if (didSetup) {
|
|
1128
|
-
this.activeEffect = effect;
|
|
1129
|
-
}
|
|
1132
|
+
await this.setupCondenseHeader(contentEl, pageEl);
|
|
1130
1133
|
}
|
|
1131
|
-
else if (hasFade
|
|
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;
|
|
1132
1137
|
if (!contentEl) {
|
|
1133
1138
|
index$1.printIonContentErrorMsg(this.el);
|
|
1134
1139
|
return;
|
|
1135
1140
|
}
|
|
1136
|
-
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]
|
|
1137
|
-
this.activeEffect = effect;
|
|
1141
|
+
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
|
|
1138
1142
|
await this.setupFadeHeader(contentEl, condenseHeader);
|
|
1139
1143
|
}
|
|
1140
1144
|
}
|
|
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
|
+
};
|
|
1141
1156
|
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
|
-
}
|
|
1149
1157
|
if (this.intersectionObserver) {
|
|
1150
1158
|
this.intersectionObserver.disconnect();
|
|
1151
1159
|
this.intersectionObserver = undefined;
|
|
@@ -1162,40 +1170,21 @@ const Header = class {
|
|
|
1162
1170
|
async setupCondenseHeader(contentEl, pageEl) {
|
|
1163
1171
|
if (!contentEl || !pageEl) {
|
|
1164
1172
|
index$1.printIonContentErrorMsg(this.el);
|
|
1165
|
-
return
|
|
1173
|
+
return;
|
|
1166
1174
|
}
|
|
1167
1175
|
if (typeof IntersectionObserver === 'undefined') {
|
|
1168
|
-
return
|
|
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;
|
|
1176
|
+
return;
|
|
1185
1177
|
}
|
|
1178
|
+
this.scrollEl = await index$1.getScrollElement(contentEl);
|
|
1186
1179
|
const headers = pageEl.querySelectorAll('ion-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
|
-
});
|
|
1180
|
+
this.collapsibleMainHeader = Array.from(headers).find((header) => header.collapse !== 'condense');
|
|
1192
1181
|
if (!this.collapsibleMainHeader) {
|
|
1193
|
-
return
|
|
1182
|
+
return;
|
|
1194
1183
|
}
|
|
1195
1184
|
const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);
|
|
1196
1185
|
const scrollHeaderIndex = createHeaderIndex(this.el);
|
|
1197
1186
|
if (!mainHeaderIndex || !scrollHeaderIndex) {
|
|
1198
|
-
return
|
|
1187
|
+
return;
|
|
1199
1188
|
}
|
|
1200
1189
|
setHeaderActive(mainHeaderIndex, false);
|
|
1201
1190
|
setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);
|
|
@@ -1227,45 +1216,30 @@ const Header = class {
|
|
|
1227
1216
|
this.collapsibleMainHeader.classList.add('header-collapse-main');
|
|
1228
1217
|
}
|
|
1229
1218
|
});
|
|
1230
|
-
return true;
|
|
1231
1219
|
}
|
|
1232
1220
|
render() {
|
|
1233
|
-
const { translucent, inheritedAttributes
|
|
1234
|
-
const
|
|
1235
|
-
const
|
|
1236
|
-
|
|
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;
|
|
1221
|
+
const { translucent, inheritedAttributes } = this;
|
|
1222
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
1223
|
+
const collapse = this.collapse || 'none';
|
|
1224
|
+
const isCondensed = collapse === 'condense';
|
|
1245
1225
|
// banner role must be at top level, so remove role if inside a menu
|
|
1246
|
-
const roleType =
|
|
1247
|
-
return (index.h(index.Host,
|
|
1248
|
-
[
|
|
1226
|
+
const roleType = getRoleType(theme.hostContext('ion-menu', this.el), isCondensed, mode);
|
|
1227
|
+
return (index.h(index.Host, { key: '863c4568cd7b8c0ec55109f193bbbaed68a1346e', role: roleType, class: {
|
|
1228
|
+
[mode]: true,
|
|
1249
1229
|
// Used internally for styling
|
|
1250
|
-
[`header-${
|
|
1230
|
+
[`header-${mode}`]: true,
|
|
1251
1231
|
[`header-translucent`]: this.translucent,
|
|
1252
|
-
[
|
|
1253
|
-
[
|
|
1254
|
-
|
|
1255
|
-
[`header-translucent-${theme$1}`]: this.translucent,
|
|
1256
|
-
['header-divider']: divider,
|
|
1257
|
-
'header-scroll-effect-hide': hasHide,
|
|
1258
|
-
} }, inheritedAttributes), theme$1 !== 'md' && translucent && index.h("div", { key: 'fd5ff245ae0166e5e1d50936cacc98c90625db48', class: "header-background" }), index.h("slot", { key: '1baa31af87b9eb6406a21073ec65afa191dfbb3d' })));
|
|
1232
|
+
[`header-collapse-${collapse}`]: true,
|
|
1233
|
+
[`header-translucent-${mode}`]: this.translucent,
|
|
1234
|
+
}, ...inheritedAttributes }, mode === 'ios' && translucent && index.h("div", { key: '25c3bdce328b0b35607d154c8b8374679313d881', class: "header-background" }), index.h("slot", { key: 'b44fab0a9be7920b9650da26117c783e751e1702' })));
|
|
1259
1235
|
}
|
|
1260
|
-
get el() { return index.getElement(this); }
|
|
1261
1236
|
};
|
|
1262
1237
|
Header.style = {
|
|
1263
|
-
ionic: headerIonicCss(),
|
|
1264
1238
|
ios: headerIosCss(),
|
|
1265
1239
|
md: headerMdCss()
|
|
1266
1240
|
};
|
|
1267
1241
|
|
|
1268
|
-
const routerOutletCss = () => `:host{
|
|
1242
|
+
const routerOutletCss = () => `:host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
|
|
1269
1243
|
|
|
1270
1244
|
const RouterOutlet = class {
|
|
1271
1245
|
constructor(hostRef) {
|
|
@@ -1273,22 +1247,47 @@ const RouterOutlet = class {
|
|
|
1273
1247
|
this.ionNavWillLoad = index.createEvent(this, "ionNavWillLoad", 7);
|
|
1274
1248
|
this.ionNavWillChange = index.createEvent(this, "ionNavWillChange", 3);
|
|
1275
1249
|
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;
|
|
1286
1250
|
}
|
|
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;
|
|
1287
1282
|
swipeHandlerChanged() {
|
|
1288
|
-
|
|
1289
|
-
this.gesture.enable(this.swipeHandler !== undefined);
|
|
1290
|
-
}
|
|
1283
|
+
this.updateGestureEnabled();
|
|
1291
1284
|
}
|
|
1285
|
+
/** @internal */
|
|
1286
|
+
ionNavWillLoad;
|
|
1287
|
+
/** @internal */
|
|
1288
|
+
ionNavWillChange;
|
|
1289
|
+
/** @internal */
|
|
1290
|
+
ionNavDidChange;
|
|
1292
1291
|
async connectedCallback() {
|
|
1293
1292
|
const onStart = () => {
|
|
1294
1293
|
this.gestureOrAnimationInProgress = true;
|
|
@@ -1296,7 +1295,7 @@ const RouterOutlet = class {
|
|
|
1296
1295
|
this.swipeHandler.onStart();
|
|
1297
1296
|
}
|
|
1298
1297
|
};
|
|
1299
|
-
this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-
|
|
1298
|
+
this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-DzQKEl5g.js'); })).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), (step) => this.ani?.progressStep(step), (shouldComplete, step, dur) => {
|
|
1300
1299
|
if (this.ani) {
|
|
1301
1300
|
this.ani.onFinish(() => {
|
|
1302
1301
|
this.gestureOrAnimationInProgress = false;
|
|
@@ -1327,11 +1326,21 @@ const RouterOutlet = class {
|
|
|
1327
1326
|
this.gestureOrAnimationInProgress = false;
|
|
1328
1327
|
}
|
|
1329
1328
|
});
|
|
1330
|
-
this.
|
|
1329
|
+
if (this.swipeGesture === undefined) {
|
|
1330
|
+
this.swipeGesture = index.config.getBoolean('swipeBackEnabled', this.mode === 'ios');
|
|
1331
|
+
}
|
|
1332
|
+
else {
|
|
1333
|
+
this.updateGestureEnabled();
|
|
1334
|
+
}
|
|
1331
1335
|
}
|
|
1332
1336
|
componentWillLoad() {
|
|
1333
1337
|
this.ionNavWillLoad.emit();
|
|
1334
1338
|
}
|
|
1339
|
+
updateGestureEnabled() {
|
|
1340
|
+
if (this.gesture) {
|
|
1341
|
+
this.gesture.enable(this.swipeHandler !== undefined && this.swipeGesture === true);
|
|
1342
|
+
}
|
|
1343
|
+
}
|
|
1335
1344
|
disconnectedCallback() {
|
|
1336
1345
|
if (this.gesture) {
|
|
1337
1346
|
this.gesture.destroy();
|
|
@@ -1398,16 +1407,19 @@ const RouterOutlet = class {
|
|
|
1398
1407
|
const { el, mode } = this;
|
|
1399
1408
|
const animated = this.animated && index.config.getBoolean('animated', true);
|
|
1400
1409
|
const animationBuilder = opts.animationBuilder || this.animation || index.config.get('navAnimation');
|
|
1401
|
-
await index$2.transition(
|
|
1410
|
+
await index$2.transition({
|
|
1411
|
+
mode,
|
|
1402
1412
|
animated,
|
|
1403
1413
|
enteringEl,
|
|
1404
|
-
leavingEl,
|
|
1414
|
+
leavingEl,
|
|
1415
|
+
baseEl: el,
|
|
1405
1416
|
/**
|
|
1406
1417
|
* We need to wait for all Stencil components
|
|
1407
1418
|
* to be ready only when using the lazy
|
|
1408
1419
|
* loaded bundle.
|
|
1409
1420
|
*/
|
|
1410
|
-
deepWait: helpers.hasLazyBuild(el),
|
|
1421
|
+
deepWait: helpers.hasLazyBuild(el),
|
|
1422
|
+
progressCallback: opts.progressAnimation
|
|
1411
1423
|
? (ani) => {
|
|
1412
1424
|
/**
|
|
1413
1425
|
* Because this progress callback is called asynchronously
|
|
@@ -1436,16 +1448,21 @@ const RouterOutlet = class {
|
|
|
1436
1448
|
this.ani = ani;
|
|
1437
1449
|
}
|
|
1438
1450
|
}
|
|
1439
|
-
: undefined
|
|
1451
|
+
: undefined,
|
|
1452
|
+
...opts,
|
|
1453
|
+
animationBuilder,
|
|
1454
|
+
});
|
|
1440
1455
|
// emit nav changed event
|
|
1441
1456
|
this.ionNavDidChange.emit();
|
|
1442
1457
|
return true;
|
|
1443
1458
|
}
|
|
1444
1459
|
render() {
|
|
1445
|
-
return index.h("slot", { key: '
|
|
1460
|
+
return index.h("slot", { key: 'ce09e6fbba7b0a2276cdde5245bb37c9a162c1c7' });
|
|
1446
1461
|
}
|
|
1447
|
-
get el() { return index.getElement(this); }
|
|
1448
1462
|
static get watchers() { return {
|
|
1463
|
+
"swipeGesture": [{
|
|
1464
|
+
"swipeGestureChanged": 0
|
|
1465
|
+
}],
|
|
1449
1466
|
"swipeHandler": [{
|
|
1450
1467
|
"swipeHandlerChanged": 0
|
|
1451
1468
|
}]
|
|
@@ -1453,17 +1470,31 @@ const RouterOutlet = class {
|
|
|
1453
1470
|
};
|
|
1454
1471
|
RouterOutlet.style = routerOutletCss();
|
|
1455
1472
|
|
|
1456
|
-
const
|
|
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)}}`;
|
|
1473
|
+
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)}:host(.ion-color){color:var(--ion-color-base)}.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{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)}}`;
|
|
1459
1474
|
|
|
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
|
|
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)}:host(.ion-color){color:var(--ion-color-base)}.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{-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}`;
|
|
1461
1476
|
|
|
1462
1477
|
const ToolbarTitle = class {
|
|
1463
1478
|
constructor(hostRef) {
|
|
1464
1479
|
index.registerInstance(this, hostRef);
|
|
1465
1480
|
this.ionStyle = index.createEvent(this, "ionStyle", 7);
|
|
1466
1481
|
}
|
|
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;
|
|
1467
1498
|
sizeChanged() {
|
|
1468
1499
|
this.emitStyle();
|
|
1469
1500
|
}
|
|
@@ -1480,15 +1511,14 @@ const ToolbarTitle = class {
|
|
|
1480
1511
|
return this.size !== undefined ? this.size : 'default';
|
|
1481
1512
|
}
|
|
1482
1513
|
render() {
|
|
1483
|
-
const
|
|
1514
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
1484
1515
|
const size = this.getSize();
|
|
1485
|
-
return (index.h(index.Host, { key: '
|
|
1486
|
-
[
|
|
1516
|
+
return (index.h(index.Host, { key: 'd9317e8e66cb6112717f5a9c252658777efbd873', class: theme.createColorClasses(this.color, {
|
|
1517
|
+
[mode]: true,
|
|
1487
1518
|
[`title-${size}`]: true,
|
|
1488
1519
|
'title-rtl': document.dir === 'rtl',
|
|
1489
|
-
}) }, index.h("div", { key: '
|
|
1520
|
+
}) }, index.h("div", { key: 'a4d011d6d409bf006d8efe33667002edb109820a', class: "toolbar-title" }, index.h("slot", { key: '4ca3303b957a0e5387f1e9058e5adb4c6275afcc' }))));
|
|
1490
1521
|
}
|
|
1491
|
-
get el() { return index.getElement(this); }
|
|
1492
1522
|
static get watchers() { return {
|
|
1493
1523
|
"size": [{
|
|
1494
1524
|
"sizeChanged": 0
|
|
@@ -1496,30 +1526,26 @@ const ToolbarTitle = class {
|
|
|
1496
1526
|
}; }
|
|
1497
1527
|
};
|
|
1498
1528
|
ToolbarTitle.style = {
|
|
1499
|
-
ionic: titleIonicCss(),
|
|
1500
1529
|
ios: titleIosCss(),
|
|
1501
1530
|
md: titleMdCss()
|
|
1502
1531
|
};
|
|
1503
1532
|
|
|
1504
|
-
const
|
|
1533
|
+
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);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.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;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{left:0;right: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));z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-color-step-50, var(--ion-background-color-step-50, #f7f7f7)));--color:var(--ion-toolbar-color, var(--ion-text-color, #000));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.2)))));--padding-top:3px;--padding-bottom:3px;--padding-start:4px;--padding-end:4px;--min-height:44px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:4;order:4;min-width:0}:host(.toolbar-segment) .toolbar-content{display:-ms-inline-flexbox;display:inline-flex}:host(.toolbar-searchbar) .toolbar-container{padding-top:0;padding-bottom:0}:host(.toolbar-searchbar) ::slotted(*){-ms-flex-item-align:start;align-self:start}:host(.toolbar-searchbar) ::slotted(ion-chip){margin-top:3px}::slotted(ion-buttons){min-height:38px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:3;order:3}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}:host(.toolbar-title-large) .toolbar-container{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:start;align-items:flex-start}:host(.toolbar-title-large) .toolbar-content ion-title{-ms-flex:1;flex:1;-ms-flex-order:8;order:8;min-width:100%}`;
|
|
1505
1534
|
|
|
1506
|
-
const
|
|
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}`;
|
|
1535
|
+
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);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.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;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{left:0;right: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));z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}: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}`;
|
|
1509
1536
|
|
|
1510
1537
|
const Toolbar = class {
|
|
1511
1538
|
constructor(hostRef) {
|
|
1512
1539
|
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'];
|
|
1522
1540
|
}
|
|
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;
|
|
1523
1549
|
componentWillLoad() {
|
|
1524
1550
|
const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));
|
|
1525
1551
|
const firstButtons = buttons.find((button) => {
|
|
@@ -1535,173 +1561,6 @@ const Toolbar = class {
|
|
|
1535
1561
|
if (lastButtons) {
|
|
1536
1562
|
lastButtons.classList.add('buttons-last-slot');
|
|
1537
1563
|
}
|
|
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;
|
|
1705
1564
|
}
|
|
1706
1565
|
childrenStyle(ev) {
|
|
1707
1566
|
ev.stopPropagation();
|
|
@@ -1726,27 +1585,21 @@ const Toolbar = class {
|
|
|
1726
1585
|
}
|
|
1727
1586
|
}
|
|
1728
1587
|
render() {
|
|
1729
|
-
const
|
|
1588
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
1730
1589
|
const childStyles = {};
|
|
1731
|
-
this.childrenStyles.forEach((
|
|
1732
|
-
Object.assign(childStyles,
|
|
1590
|
+
this.childrenStyles.forEach((value) => {
|
|
1591
|
+
Object.assign(childStyles, value);
|
|
1733
1592
|
});
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1593
|
+
return (index.h(index.Host, { key: '40bad6fa7e94262438da4bbe037dcf8a5fa2df22', class: {
|
|
1594
|
+
...childStyles,
|
|
1595
|
+
...theme.createColorClasses(this.color, {
|
|
1596
|
+
[mode]: true,
|
|
1597
|
+
'in-toolbar': theme.hostContext('ion-toolbar', this.el),
|
|
1598
|
+
}),
|
|
1599
|
+
} }, index.h("div", { key: 'df44c9f0fe3958116ab860b0dad79c53b89f6c59', class: "toolbar-background", part: "background" }), index.h("div", { key: '2169ffa576875b8d5624211cc0b4bf86191562bc', class: "toolbar-container", part: "container" }, index.h("slot", { key: 'c8910dcf1ce98ab427fd89c3396a67c2a75bdd07', name: "start" }), index.h("slot", { key: '05da24d5ef96b9eebd83b534ce02c1f7bcd06680', name: "secondary" }), index.h("div", { key: '090fea1541e7e2b6ad74a6ded4eadffdb471ccce', class: "toolbar-content", part: "content" }, index.h("slot", { key: '507e143f92f6fa59ff23d94026411fa2c74f2f8e' })), index.h("slot", { key: 'f79fdee472e657e26a910cb89d7551943e40e440', name: "primary" }), index.h("slot", { key: 'dd40fe9ed490cf4346c642e195fdb524dc6cc4f5', name: "end" }))));
|
|
1740
1600
|
}
|
|
1741
|
-
get el() { return index.getElement(this); }
|
|
1742
|
-
static get watchers() { return {
|
|
1743
|
-
"titlePlacement": [{
|
|
1744
|
-
"titlePlacementChanged": 0
|
|
1745
|
-
}]
|
|
1746
|
-
}; }
|
|
1747
1601
|
};
|
|
1748
1602
|
Toolbar.style = {
|
|
1749
|
-
ionic: toolbarIonicCss(),
|
|
1750
1603
|
ios: toolbarIosCss(),
|
|
1751
1604
|
md: toolbarMdCss()
|
|
1752
1605
|
};
|