@ionic/core 8.8.19-dev.11786610762.137bbb21 → 8.8.19-dev.11786735826.1fad7c0a
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--m5cCjbK.js +4 -0
- package/components/{p-CpHPq11n.js → p-30_sZS2V.js} +1 -1
- package/components/p-8FN7p701.js +4 -0
- package/components/p-B-FxiyeI.js +4 -0
- package/components/p-B4uHHhPK.js +4 -0
- package/components/p-BMPN55of.js +4 -0
- package/components/p-BMS4t-kJ.js +4 -0
- package/components/p-BOvLNVKq.js +4 -0
- package/components/p-BSQPZ79H.js +4 -0
- package/components/p-BWBigMsI.js +4 -0
- package/components/p-BZ4-QTes.js +4 -0
- package/components/p-BhamHSw3.js +4 -0
- package/components/p-BjluhQMI.js +4 -0
- package/components/p-BlsIikdZ.js +4 -0
- package/components/p-Blug1Vxu.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-C5KYjZWD.js +4 -0
- package/components/p-C91npEel.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-CVb3x_r3.js +4 -0
- package/components/p-CWLrHG8Y.js +4 -0
- package/components/p-CbhUdtjf.js +4 -0
- package/components/p-CejmQs3h.js +4 -0
- package/components/p-CfnNZz_d.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-DJztqcrH.js +4 -0
- package/components/p-DKrhJJV0.js +4 -0
- package/components/p-DRfgH82D.js +4 -0
- package/components/p-DSzSbVP2.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-Dd8ajo9a.js +4 -0
- package/components/p-DdnhY_oj.js +4 -0
- package/components/p-DgZOZQjJ.js +4 -0
- package/components/p-Dmd2xqCe.js +4 -0
- package/components/{p-B2SvA6NE.js → p-DwpKZ6rl.js} +1 -1
- package/components/p-G0TxqHfe.js +4 -0
- package/components/p-GG5GhznE.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-TXPDHL13.js +4 -0
- package/components/p-UQSiXX2Z.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-qT1szVjw.js +4 -0
- package/components/{p-BZwQa9ey.js → p-ryyf_ItD.js} +1 -1
- package/components/p-wzAhIh03.js +4 -0
- package/components/p-ypuYdSDB.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-BZdMWVrt.js +35 -0
- 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 +351 -311
- 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 +507 -429
- 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 +303 -309
- 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/{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/slot-mutation-controller-CgTGFqlW.js +397 -0
- 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 +191 -247
- package/dist/collection/components/input/input.js +357 -340
- package/dist/collection/components/input/input.md.css +285 -234
- 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 +206 -351
- package/dist/collection/components/select/select.js +431 -444
- package/dist/collection/components/select/select.md.css +230 -383
- 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 +221 -329
- package/dist/collection/components/textarea/textarea.js +302 -334
- package/dist/collection/components/textarea/textarea.md.css +231 -358
- 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 +1 -1
- package/dist/collection/utils/forms/start-container-controller.js +132 -0
- 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 +524 -10028
- 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-B1ValN_N.js +33 -0
- 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 +349 -309
- 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 +507 -429
- 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 +302 -308
- 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/{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/slot-mutation-controller-u741eD3Z.js +393 -0
- 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-06533d51.entry.js +4 -0
- package/dist/ionic/p-08443c08.entry.js +4 -0
- package/dist/ionic/p-0FNc80PN.js +4 -0
- package/dist/ionic/p-141f5b47.entry.js +4 -0
- package/dist/ionic/p-14a5e8f5.entry.js +4 -0
- package/dist/ionic/p-19269e04.entry.js +4 -0
- package/dist/ionic/p-19abbc33.entry.js +4 -0
- package/dist/ionic/p-1edf0573.entry.js +4 -0
- package/dist/ionic/p-40424a88.entry.js +4 -0
- package/dist/ionic/p-4204184c.entry.js +4 -0
- package/dist/ionic/p-4bc3ecdb.entry.js +4 -0
- package/dist/ionic/p-4eOQC00Z.js +4 -0
- package/dist/ionic/p-4eed9ca1.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-5521dc1f.entry.js +4 -0
- package/dist/ionic/p-5993a77f.entry.js +4 -0
- package/dist/ionic/p-5c3626de.entry.js +4 -0
- package/dist/ionic/p-5d3b411c.entry.js +4 -0
- package/dist/ionic/p-60576951.entry.js +4 -0
- package/dist/ionic/p-7116e558.entry.js +4 -0
- package/dist/ionic/p-711a8319.entry.js +4 -0
- package/dist/ionic/p-71419a55.entry.js +4 -0
- package/dist/ionic/p-79325ffe.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-84a38904.entry.js +4 -0
- package/dist/ionic/p-865fa114.entry.js +4 -0
- package/dist/ionic/p-8e1d9e3a.entry.js +4 -0
- package/dist/ionic/p-8f204f1e.entry.js +4 -0
- package/dist/ionic/p-9055e897.entry.js +4 -0
- package/dist/ionic/p-9658e083.entry.js +4 -0
- package/dist/ionic/p-988baee1.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-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-DAztxQR0.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-DkUB-ROc.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-a71232d6.entry.js +4 -0
- package/dist/ionic/p-a73d8742.entry.js +4 -0
- package/dist/ionic/p-a8421d18.entry.js +4 -0
- package/dist/ionic/p-a8c2c343.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-bc2bad5f.entry.js +4 -0
- package/dist/ionic/p-be08d500.entry.js +4 -0
- package/dist/ionic/p-be9a4f51.entry.js +4 -0
- package/dist/ionic/p-byZM6qHV.js +4 -0
- package/dist/ionic/p-ccc5044d.entry.js +4 -0
- package/dist/ionic/p-ce32912b.entry.js +4 -0
- package/dist/ionic/p-ded69ceb.entry.js +4 -0
- package/dist/ionic/p-e0c6e31e.entry.js +4 -0
- package/dist/ionic/p-e1e5b507.entry.js +4 -0
- package/dist/ionic/p-e8c3e08a.entry.js +4 -0
- package/dist/ionic/p-ed5d540d.entry.js +4 -0
- package/dist/ionic/p-f046aa37.entry.js +4 -0
- package/dist/ionic/p-f2802440.entry.js +4 -0
- package/dist/ionic/p-f402f5a4.entry.js +4 -0
- package/dist/ionic/p-fe1bfbcf.entry.js +4 -0
- 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 +17 -40
- 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 +26 -55
- 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 +16 -58
- 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 +1 -1
- package/dist/types/utils/forms/start-container-controller.d.ts +34 -0
- 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 +10577 -12217
- package/hydrate/index.mjs +10577 -12217
- 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-CA4M5WkT.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/input.utils-CYZZsbdf.js +0 -150
- 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/notch-controller-CFlPw7ER.js +0 -155
- 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/input.utils-fs4B7WL5.js +0 -147
- 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/notch-controller-CsbpmbOz.js +0 -153
- 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-CnIzWLAn.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
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { r as registerInstance,
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { i as inheritAriaAttributes, h as hasLazyBuild, c as componentOnReady, e as clamp, s as shallowEqualStringMap } from './helpers-
|
|
8
|
-
import { i as isRTL } from './dir-
|
|
9
|
-
import { h as hostContext, c as createColorClasses } from './theme-
|
|
10
|
-
import { b as findIonContent, p as printIonContentErrorMsg, g as getScrollElement } from './index-
|
|
11
|
-
import { c as
|
|
4
|
+
import { r as registerInstance, g as getElement, e as config, f as printIonWarning, h, d as Host, c as createEvent, a as readTask, i as forceUpdate, w as writeTask, j as printIonError } from './index-ChhhtsGZ.js';
|
|
5
|
+
import { shouldUseCloseWatcher } from './hardware-back-button-gLJHMX_F.js';
|
|
6
|
+
import { a as isPlatform, b as getIonMode } from './ionic-global-BVB7BrLT.js';
|
|
7
|
+
import { i as inheritAriaAttributes, h as hasLazyBuild, c as componentOnReady, e as clamp, s as shallowEqualStringMap } from './helpers-DexiPLIC.js';
|
|
8
|
+
import { i as isRTL } from './dir-B-FxiyeI.js';
|
|
9
|
+
import { h as hostContext, c as createColorClasses } from './theme-byZM6qHV.js';
|
|
10
|
+
import { b as findIonContent, p as printIonContentErrorMsg, g as getScrollElement } from './index-_Za5VB9w.js';
|
|
11
|
+
import { c as createKeyboardController } from './keyboard-controller-DEwoa1ev.js';
|
|
12
12
|
import { g as getTimeGivenProgression } from './cubic-bezier-hHmYLOfE.js';
|
|
13
|
-
import { a as attachComponent, d as detachComponent } from './framework-delegate
|
|
13
|
+
import { a as attachComponent, d as detachComponent } from './framework-delegate--ajhSeKH.js';
|
|
14
14
|
import { c as createLockController } from './lock-controller-B-hirT0v.js';
|
|
15
|
-
import { t as transition } from './index-
|
|
16
|
-
import './
|
|
17
|
-
import './
|
|
15
|
+
import { t as transition } from './index-8s8kZKJ7.js';
|
|
16
|
+
import './index-ZjP4CjeZ.js';
|
|
17
|
+
import './keyboard-DAF8GNJ9.js';
|
|
18
|
+
import './capacitor-CFERIeaU.js';
|
|
18
19
|
|
|
19
20
|
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}`;
|
|
20
21
|
|
|
@@ -22,6 +23,54 @@ const App = class {
|
|
|
22
23
|
constructor(hostRef) {
|
|
23
24
|
registerInstance(this, hostRef);
|
|
24
25
|
}
|
|
26
|
+
focusVisible;
|
|
27
|
+
loadTimeout;
|
|
28
|
+
get el() { return getElement(this); }
|
|
29
|
+
componentDidLoad() {
|
|
30
|
+
{
|
|
31
|
+
this.rIC(async () => {
|
|
32
|
+
const isHybrid = isPlatform(window, 'hybrid');
|
|
33
|
+
if (!config.getBoolean('_testing')) {
|
|
34
|
+
import('./index-BCgUwrV0.js').then((module) => module.startTapClick(config));
|
|
35
|
+
}
|
|
36
|
+
if (config.getBoolean('statusTap', isHybrid)) {
|
|
37
|
+
import('./status-tap-DpLhkDWs.js').then((module) => module.startStatusTap());
|
|
38
|
+
}
|
|
39
|
+
if (config.getBoolean('inputShims', needInputShims())) {
|
|
40
|
+
/**
|
|
41
|
+
* needInputShims() ensures that only iOS and Android
|
|
42
|
+
* platforms proceed into this block.
|
|
43
|
+
*/
|
|
44
|
+
const platform = isPlatform(window, 'ios') ? 'ios' : 'android';
|
|
45
|
+
import('./input-shims-BB0AKb_k.js').then((module) => module.startInputShims(config, platform));
|
|
46
|
+
}
|
|
47
|
+
const hardwareBackButtonModule = await import('./hardware-back-button-gLJHMX_F.js');
|
|
48
|
+
const supportsHardwareBackButtonEvents = isHybrid || shouldUseCloseWatcher();
|
|
49
|
+
if (config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {
|
|
50
|
+
hardwareBackButtonModule.startHardwareBackButton();
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
/**
|
|
54
|
+
* If an app sets hardwareBackButton: false and experimentalCloseWatcher: true
|
|
55
|
+
* then the close watcher will not be used.
|
|
56
|
+
*/
|
|
57
|
+
if (shouldUseCloseWatcher()) {
|
|
58
|
+
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.');
|
|
59
|
+
}
|
|
60
|
+
hardwareBackButtonModule.blockHardwareBackButton();
|
|
61
|
+
}
|
|
62
|
+
if (typeof window !== 'undefined') {
|
|
63
|
+
import('./keyboard-Cj8mLJeq.js').then((module) => module.startKeyboardAssist(window));
|
|
64
|
+
}
|
|
65
|
+
import('./focus-visible-BmVRXR1y.js').then((module) => (this.focusVisible = module.startFocusVisible()));
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
disconnectedCallback() {
|
|
70
|
+
if (this.loadTimeout) {
|
|
71
|
+
clearTimeout(this.loadTimeout);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
25
74
|
/**
|
|
26
75
|
* Used to set focus on an element that uses `ion-focusable`.
|
|
27
76
|
* Do not use this if focusing the element as a result of a keyboard
|
|
@@ -34,62 +83,83 @@ const App = class {
|
|
|
34
83
|
* @param elements An array of HTML elements to set focus on.
|
|
35
84
|
*/
|
|
36
85
|
async setFocus(elements) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
86
|
+
if (this.focusVisible) {
|
|
87
|
+
this.focusVisible.setFocus(elements);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
rIC(callback) {
|
|
91
|
+
if ('requestIdleCallback' in window) {
|
|
92
|
+
window.requestIdleCallback(callback);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
this.loadTimeout = setTimeout(callback, 32);
|
|
96
|
+
}
|
|
42
97
|
}
|
|
43
98
|
render() {
|
|
44
|
-
const
|
|
45
|
-
return (h(Host, { key: '
|
|
46
|
-
[
|
|
99
|
+
const mode = getIonMode(this);
|
|
100
|
+
return (h(Host, { key: '77a7459d3e42b3715a5a7e1cf468e2ebc99e54bb', class: {
|
|
101
|
+
[mode]: true,
|
|
47
102
|
'ion-page': true,
|
|
48
103
|
'force-statusbar-padding': config.getBoolean('_forceStatusbarPadding'),
|
|
49
104
|
} }));
|
|
50
105
|
}
|
|
51
|
-
|
|
106
|
+
};
|
|
107
|
+
const needInputShims = () => {
|
|
108
|
+
/**
|
|
109
|
+
* iOS always needs input shims
|
|
110
|
+
*/
|
|
111
|
+
const needsShimsIOS = isPlatform(window, 'ios') && isPlatform(window, 'mobile');
|
|
112
|
+
if (needsShimsIOS) {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Android only needs input shims when running
|
|
117
|
+
* in the browser and only if the browser is using the
|
|
118
|
+
* new Chrome 108+ resize behavior: https://developer.chrome.com/blog/viewport-resize-behavior/
|
|
119
|
+
*/
|
|
120
|
+
const isAndroidMobileWeb = isPlatform(window, 'android') && isPlatform(window, 'mobileweb');
|
|
121
|
+
if (isAndroidMobileWeb) {
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
return false;
|
|
52
125
|
};
|
|
53
126
|
App.style = appCss();
|
|
54
127
|
|
|
55
|
-
const
|
|
128
|
+
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}`;
|
|
56
129
|
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
const buttonsMdCss = () => `.sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0)}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-h{z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:8px;--padding-end:8px;--box-shadow:none;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-md-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:3rem;height:3rem}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}`;
|
|
130
|
+
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}`;
|
|
60
131
|
|
|
61
132
|
const Buttons = class {
|
|
62
133
|
constructor(hostRef) {
|
|
63
134
|
registerInstance(this, hostRef);
|
|
64
|
-
/**
|
|
65
|
-
* If true, buttons will disappear when its
|
|
66
|
-
* parent toolbar has fully collapsed if the toolbar
|
|
67
|
-
* is not the first toolbar. If the toolbar is the
|
|
68
|
-
* first toolbar, the buttons will be hidden and will
|
|
69
|
-
* only be shown once all toolbars have fully collapsed.
|
|
70
|
-
*
|
|
71
|
-
* Only applies in the `ios` theme with `collapse` set to
|
|
72
|
-
* `true` on `ion-header`.
|
|
73
|
-
*
|
|
74
|
-
* Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
|
|
75
|
-
*/
|
|
76
|
-
this.collapse = false;
|
|
77
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* If true, buttons will disappear when its
|
|
138
|
+
* parent toolbar has fully collapsed if the toolbar
|
|
139
|
+
* is not the first toolbar. If the toolbar is the
|
|
140
|
+
* first toolbar, the buttons will be hidden and will
|
|
141
|
+
* only be shown once all toolbars have fully collapsed.
|
|
142
|
+
*
|
|
143
|
+
* Only applies in `ios` mode with `collapse` set to
|
|
144
|
+
* `true` on `ion-header`.
|
|
145
|
+
*
|
|
146
|
+
* Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
|
|
147
|
+
*/
|
|
148
|
+
collapse = false;
|
|
78
149
|
render() {
|
|
79
|
-
const
|
|
80
|
-
return (h(Host, { key: '
|
|
81
|
-
[
|
|
150
|
+
const mode = getIonMode(this);
|
|
151
|
+
return (h(Host, { key: '58c1fc5eb867d0731c63549b1ccb3ec3bbbe6e1b', class: {
|
|
152
|
+
[mode]: true,
|
|
82
153
|
['buttons-collapse']: this.collapse,
|
|
83
|
-
} }, h("slot", { key: '
|
|
154
|
+
} }, h("slot", { key: '0c8f95b9840c8fa0c4e50be84c5159620a3eb5c8' })));
|
|
84
155
|
}
|
|
85
156
|
};
|
|
86
157
|
Buttons.style = {
|
|
87
|
-
ionic: buttonsIonicCss(),
|
|
88
158
|
ios: buttonsIosCss(),
|
|
89
159
|
md: buttonsMdCss()
|
|
90
160
|
};
|
|
91
161
|
|
|
92
|
-
const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{
|
|
162
|
+
const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{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)}`;
|
|
93
163
|
|
|
94
164
|
const Content = class {
|
|
95
165
|
constructor(hostRef) {
|
|
@@ -97,68 +167,100 @@ const Content = class {
|
|
|
97
167
|
this.ionScrollStart = createEvent(this, "ionScrollStart", 7);
|
|
98
168
|
this.ionScroll = createEvent(this, "ionScroll", 7);
|
|
99
169
|
this.ionScrollEnd = createEvent(this, "ionScrollEnd", 7);
|
|
100
|
-
this.watchDog = null;
|
|
101
|
-
this.isScrolling = false;
|
|
102
|
-
this.lastScroll = 0;
|
|
103
|
-
this.queued = false;
|
|
104
|
-
this.cTop = -1;
|
|
105
|
-
this.cBottom = -1;
|
|
106
|
-
this.isMainContent = true;
|
|
107
|
-
this.resizeTimeout = null;
|
|
108
|
-
this.inheritedAttributes = {};
|
|
109
|
-
this.tabsElement = null;
|
|
110
|
-
// Detail is used in a hot loop in the scroll event, by allocating it here
|
|
111
|
-
// V8 will be able to inline any read/write to it since it's a monomorphic class.
|
|
112
|
-
// https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html
|
|
113
|
-
this.detail = {
|
|
114
|
-
scrollTop: 0,
|
|
115
|
-
scrollLeft: 0,
|
|
116
|
-
type: 'scroll',
|
|
117
|
-
event: undefined,
|
|
118
|
-
startX: 0,
|
|
119
|
-
startY: 0,
|
|
120
|
-
startTime: 0,
|
|
121
|
-
currentX: 0,
|
|
122
|
-
currentY: 0,
|
|
123
|
-
velocityX: 0,
|
|
124
|
-
velocityY: 0,
|
|
125
|
-
deltaX: 0,
|
|
126
|
-
deltaY: 0,
|
|
127
|
-
currentTime: 0,
|
|
128
|
-
data: undefined,
|
|
129
|
-
isScrolling: true,
|
|
130
|
-
};
|
|
131
|
-
/**
|
|
132
|
-
* If `true`, the content will scroll behind the headers
|
|
133
|
-
* and footers. This effect can easily be seen by setting the toolbar
|
|
134
|
-
* to transparent.
|
|
135
|
-
*/
|
|
136
|
-
this.fullscreen = false;
|
|
137
|
-
/**
|
|
138
|
-
* Controls where the fixed content is placed relative to the main content
|
|
139
|
-
* in the DOM. This can be used to control the order in which fixed elements
|
|
140
|
-
* receive keyboard focus.
|
|
141
|
-
* For example, if a FAB in the fixed slot should receive keyboard focus before
|
|
142
|
-
* the main page content, set this property to `'before'`.
|
|
143
|
-
*/
|
|
144
|
-
this.fixedSlotPlacement = 'after';
|
|
145
|
-
/**
|
|
146
|
-
* If you want to enable the content scrolling in the X axis, set this property to `true`.
|
|
147
|
-
*/
|
|
148
|
-
this.scrollX = false;
|
|
149
|
-
/**
|
|
150
|
-
* If you want to disable the content scrolling in the Y axis, set this property to `false`.
|
|
151
|
-
*/
|
|
152
|
-
this.scrollY = true;
|
|
153
|
-
/**
|
|
154
|
-
* Because of performance reasons, ionScroll events are disabled by default, in order to enable them
|
|
155
|
-
* and start listening from (ionScroll), set this property to `true`.
|
|
156
|
-
*/
|
|
157
|
-
this.scrollEvents = false;
|
|
158
170
|
}
|
|
171
|
+
watchDog = null;
|
|
172
|
+
isScrolling = false;
|
|
173
|
+
lastScroll = 0;
|
|
174
|
+
queued = false;
|
|
175
|
+
cTop = -1;
|
|
176
|
+
cBottom = -1;
|
|
177
|
+
scrollEl;
|
|
178
|
+
backgroundContentEl;
|
|
179
|
+
isMainContent = true;
|
|
180
|
+
resizeTimeout = null;
|
|
181
|
+
fullscreenResizeObserver;
|
|
182
|
+
inheritedAttributes = {};
|
|
183
|
+
tabsElement = null;
|
|
184
|
+
tabsLoadCallback;
|
|
185
|
+
// Detail is used in a hot loop in the scroll event, by allocating it here
|
|
186
|
+
// V8 will be able to inline any read/write to it since it's a monomorphic class.
|
|
187
|
+
// https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html
|
|
188
|
+
detail = {
|
|
189
|
+
scrollTop: 0,
|
|
190
|
+
scrollLeft: 0,
|
|
191
|
+
type: 'scroll',
|
|
192
|
+
event: undefined,
|
|
193
|
+
startX: 0,
|
|
194
|
+
startY: 0,
|
|
195
|
+
startTime: 0,
|
|
196
|
+
currentX: 0,
|
|
197
|
+
currentY: 0,
|
|
198
|
+
velocityX: 0,
|
|
199
|
+
velocityY: 0,
|
|
200
|
+
deltaX: 0,
|
|
201
|
+
deltaY: 0,
|
|
202
|
+
currentTime: 0,
|
|
203
|
+
data: undefined,
|
|
204
|
+
isScrolling: true,
|
|
205
|
+
};
|
|
206
|
+
get el() { return getElement(this); }
|
|
207
|
+
/**
|
|
208
|
+
* The color to use from your application's color palette.
|
|
209
|
+
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
210
|
+
* For more information on colors, see [theming](/docs/theming/basics).
|
|
211
|
+
*/
|
|
212
|
+
color;
|
|
213
|
+
/**
|
|
214
|
+
* If `true`, the content will scroll behind the headers
|
|
215
|
+
* and footers. This effect can easily be seen by setting the toolbar
|
|
216
|
+
* to transparent.
|
|
217
|
+
*/
|
|
218
|
+
fullscreen = false;
|
|
159
219
|
fullscreenChanged() {
|
|
160
220
|
this.setupFullscreenResizeObserver();
|
|
161
221
|
}
|
|
222
|
+
/**
|
|
223
|
+
* Controls where the fixed content is placed relative to the main content
|
|
224
|
+
* in the DOM. This can be used to control the order in which fixed elements
|
|
225
|
+
* receive keyboard focus.
|
|
226
|
+
* For example, if a FAB in the fixed slot should receive keyboard focus before
|
|
227
|
+
* the main page content, set this property to `'before'`.
|
|
228
|
+
*/
|
|
229
|
+
fixedSlotPlacement = 'after';
|
|
230
|
+
/**
|
|
231
|
+
* If `true` and the content does not cause an overflow scroll, the scroll interaction will cause a bounce.
|
|
232
|
+
* If the content exceeds the bounds of ionContent, nothing will change.
|
|
233
|
+
* Note, this does not disable the system bounce on iOS. That is an OS level setting.
|
|
234
|
+
*/
|
|
235
|
+
forceOverscroll;
|
|
236
|
+
/**
|
|
237
|
+
* If you want to enable the content scrolling in the X axis, set this property to `true`.
|
|
238
|
+
*/
|
|
239
|
+
scrollX = false;
|
|
240
|
+
/**
|
|
241
|
+
* If you want to disable the content scrolling in the Y axis, set this property to `false`.
|
|
242
|
+
*/
|
|
243
|
+
scrollY = true;
|
|
244
|
+
/**
|
|
245
|
+
* Because of performance reasons, ionScroll events are disabled by default, in order to enable them
|
|
246
|
+
* and start listening from (ionScroll), set this property to `true`.
|
|
247
|
+
*/
|
|
248
|
+
scrollEvents = false;
|
|
249
|
+
/**
|
|
250
|
+
* Emitted when the scroll has started. This event is disabled by default.
|
|
251
|
+
* Set `scrollEvents` to `true` to enable.
|
|
252
|
+
*/
|
|
253
|
+
ionScrollStart;
|
|
254
|
+
/**
|
|
255
|
+
* Emitted while scrolling. This event is disabled by default.
|
|
256
|
+
* Set `scrollEvents` to `true` to enable.
|
|
257
|
+
*/
|
|
258
|
+
ionScroll;
|
|
259
|
+
/**
|
|
260
|
+
* Emitted when the scroll has ended. This event is disabled by default.
|
|
261
|
+
* Set `scrollEvents` to `true` to enable.
|
|
262
|
+
*/
|
|
263
|
+
ionScrollEnd;
|
|
162
264
|
componentWillLoad() {
|
|
163
265
|
this.inheritedAttributes = inheritAriaAttributes(this.el);
|
|
164
266
|
}
|
|
@@ -297,8 +399,9 @@ const Content = class {
|
|
|
297
399
|
this.resize();
|
|
298
400
|
}, 100);
|
|
299
401
|
}
|
|
300
|
-
shouldForceOverscroll(
|
|
402
|
+
shouldForceOverscroll() {
|
|
301
403
|
const { forceOverscroll } = this;
|
|
404
|
+
const mode = getIonMode(this);
|
|
302
405
|
return forceOverscroll === undefined ? mode === 'ios' && isPlatform('ios') : forceOverscroll;
|
|
303
406
|
}
|
|
304
407
|
resize() {
|
|
@@ -494,13 +597,12 @@ const Content = class {
|
|
|
494
597
|
render() {
|
|
495
598
|
const { fixedSlotPlacement, inheritedAttributes, isMainContent, scrollX, scrollY, el } = this;
|
|
496
599
|
const rtl = isRTL(el) ? 'rtl' : 'ltr';
|
|
497
|
-
const
|
|
498
|
-
const
|
|
499
|
-
const
|
|
500
|
-
const transitionShadow = theme === 'ios';
|
|
600
|
+
const mode = getIonMode(this);
|
|
601
|
+
const forceOverscroll = this.shouldForceOverscroll();
|
|
602
|
+
const transitionShadow = mode === 'ios';
|
|
501
603
|
this.resize();
|
|
502
|
-
return (h(Host,
|
|
503
|
-
[
|
|
604
|
+
return (h(Host, { key: '9551c759df407b10d809171641fc6e8f14d92219', role: isMainContent ? 'main' : undefined, class: createColorClasses(this.color, {
|
|
605
|
+
[mode]: true,
|
|
504
606
|
'content-fullscreen': this.fullscreen,
|
|
505
607
|
'content-sizing': hostContext('ion-popover', this.el),
|
|
506
608
|
overscroll: forceOverscroll,
|
|
@@ -508,14 +610,13 @@ const Content = class {
|
|
|
508
610
|
}), style: {
|
|
509
611
|
'--offset-top': `${this.cTop}px`,
|
|
510
612
|
'--offset-bottom': `${this.cBottom}px`,
|
|
511
|
-
}
|
|
613
|
+
}, ...inheritedAttributes }, h("div", { key: 'c6de8fd226f0d10a534eb107fe032ac155fbe68e', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? h("slot", { name: "fixed" }) : null, h("div", { key: '082fc2936061360060b48221ecb1c864a3711fa0', class: {
|
|
512
614
|
'inner-scroll': true,
|
|
513
615
|
'scroll-x': scrollX,
|
|
514
616
|
'scroll-y': scrollY,
|
|
515
617
|
overscroll: (scrollX || scrollY) && forceOverscroll,
|
|
516
|
-
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, h("slot", { key: '
|
|
618
|
+
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, h("slot", { key: '0d2286206facb22696a9ca7e74a3f6b7d2397aab' })), transitionShadow ? (h("div", { class: "transition-effect" }, h("div", { class: "transition-cover" }), h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? h("slot", { name: "fixed" }) : null));
|
|
517
619
|
}
|
|
518
|
-
get el() { return getElement(this); }
|
|
519
620
|
static get watchers() { return {
|
|
520
621
|
"fullscreen": [{
|
|
521
622
|
"fullscreenChanged": 0
|
|
@@ -523,12 +624,11 @@ const Content = class {
|
|
|
523
624
|
}; }
|
|
524
625
|
};
|
|
525
626
|
const getParentElement = (el) => {
|
|
526
|
-
var _a;
|
|
527
627
|
if (el.parentElement) {
|
|
528
628
|
// normal element with a parent element
|
|
529
629
|
return el.parentElement;
|
|
530
630
|
}
|
|
531
|
-
if (
|
|
631
|
+
if (el.parentNode?.host) {
|
|
532
632
|
// shadow dom's document fragment
|
|
533
633
|
return el.parentNode.host;
|
|
534
634
|
}
|
|
@@ -544,8 +644,7 @@ const getPageElement = (el) => {
|
|
|
544
644
|
* between the popover and the edges of the screen. But if the popover contains
|
|
545
645
|
* its own page element, we should use that instead.
|
|
546
646
|
*/
|
|
547
|
-
const
|
|
548
|
-
const page = el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner, .popover-content`);
|
|
647
|
+
const page = el.closest('ion-app, ion-page, .ion-page, page-inner, .popover-content');
|
|
549
648
|
if (page) {
|
|
550
649
|
return page;
|
|
551
650
|
}
|
|
@@ -609,100 +708,34 @@ const handleFooterFade = (scrollEl, baseEl) => {
|
|
|
609
708
|
});
|
|
610
709
|
};
|
|
611
710
|
|
|
612
|
-
const
|
|
613
|
-
|
|
614
|
-
const footerIosCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}ion-footer.footer-scroll-effect-hide{-webkit-transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1), -webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1)}ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){ion-footer.footer-scroll-effect-hide,ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transition:none;transition:none}}.footer-ios ion-toolbar:first-of-type{--border-width:0.55px 0 0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.footer-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.footer-translucent-ios ion-toolbar{--opacity:0.8}}.footer-ios.ion-no-border ion-toolbar:first-of-type{--border-width:0}`;
|
|
711
|
+
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}`;
|
|
615
712
|
|
|
616
|
-
const footerMdCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-
|
|
713
|
+
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}`;
|
|
617
714
|
|
|
618
715
|
const Footer = class {
|
|
619
716
|
constructor(hostRef) {
|
|
620
717
|
registerInstance(this, hostRef);
|
|
621
|
-
this.keyboardCtrl = null;
|
|
622
|
-
this.keyboardCtrlPromise = null;
|
|
623
|
-
this.scrollHideCtrlPromise = null;
|
|
624
|
-
this.hasWarnedCollapse = false;
|
|
625
|
-
this.fadeSetupId = 0;
|
|
626
|
-
this.keyboardVisible = false;
|
|
627
|
-
/**
|
|
628
|
-
* If `true`, the footer will be translucent.
|
|
629
|
-
* Only applies when the theme is `"ios"` and the device supports
|
|
630
|
-
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
631
|
-
*
|
|
632
|
-
* Note: In order to scroll content behind the footer, the `fullscreen`
|
|
633
|
-
* attribute needs to be set on the content.
|
|
634
|
-
*/
|
|
635
|
-
this.translucent = false;
|
|
636
|
-
this.checkCollapsibleFooter = async () => {
|
|
637
|
-
const { scrollEffect, collapse } = this;
|
|
638
|
-
if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
|
|
639
|
-
this.hasWarnedCollapse = true;
|
|
640
|
-
printIonWarning(`[ion-footer] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-footer scroll-effect="${collapse}">`, this.el);
|
|
641
|
-
}
|
|
642
|
-
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
643
|
-
// Skip teardown/rebuild if the effect hasn't changed.
|
|
644
|
-
// This prevents keyboard toggles (which trigger re-renders via
|
|
645
|
-
// @State keyboardVisible) from destroying the scroll controller
|
|
646
|
-
// and resetting isHidden.
|
|
647
|
-
if (effect === this.activeEffect) {
|
|
648
|
-
return;
|
|
649
|
-
}
|
|
650
|
-
const hasHide = effect === 'hide';
|
|
651
|
-
const hasFade = effect === 'fade';
|
|
652
|
-
this.destroyCollapsibleFooter();
|
|
653
|
-
const appRootSelector = config.get('appRootSelector', 'ion-app');
|
|
654
|
-
const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
|
|
655
|
-
const contentEl = pageEl ? findIonContent(pageEl) : null;
|
|
656
|
-
if (hasHide && contentEl) {
|
|
657
|
-
this.activeEffect = effect;
|
|
658
|
-
await this.setupScrollEffectHide(contentEl);
|
|
659
|
-
return;
|
|
660
|
-
}
|
|
661
|
-
// fade via the deprecated `collapse` prop is iOS-only.
|
|
662
|
-
// fade via the new `scrollEffect` prop works in all themes.
|
|
663
|
-
const isModeRestricted = scrollEffect === undefined && getIonTheme(this) !== 'ios';
|
|
664
|
-
if (hasFade && !isModeRestricted) {
|
|
665
|
-
if (!contentEl) {
|
|
666
|
-
printIonContentErrorMsg(this.el);
|
|
667
|
-
return;
|
|
668
|
-
}
|
|
669
|
-
this.setupFadeFooter(contentEl);
|
|
670
|
-
this.activeEffect = effect;
|
|
671
|
-
}
|
|
672
|
-
};
|
|
673
|
-
this.setupScrollEffectHide = async (contentEl) => {
|
|
674
|
-
const setupPromise = createScrollHideController(contentEl, {
|
|
675
|
-
el: this.el,
|
|
676
|
-
cssVar: '--internal-footer-hide-height',
|
|
677
|
-
hiddenClass: 'footer-scroll-hidden',
|
|
678
|
-
contentPartnerClass: 'content-footer-hide-scroll-partner',
|
|
679
|
-
contentHiddenClass: 'content-footer-hide-scroll-hidden',
|
|
680
|
-
});
|
|
681
|
-
this.scrollHideCtrlPromise = setupPromise;
|
|
682
|
-
const controller = await setupPromise;
|
|
683
|
-
if (this.scrollHideCtrlPromise === setupPromise) {
|
|
684
|
-
this.scrollHideCtrlPromise = null;
|
|
685
|
-
controller.init();
|
|
686
|
-
this.scrollHideCtrl = controller;
|
|
687
|
-
}
|
|
688
|
-
};
|
|
689
|
-
this.setupFadeFooter = async (contentEl) => {
|
|
690
|
-
const setupId = ++this.fadeSetupId;
|
|
691
|
-
const scrollEl = await getScrollElement(contentEl);
|
|
692
|
-
if (this.fadeSetupId !== setupId) {
|
|
693
|
-
return;
|
|
694
|
-
}
|
|
695
|
-
this.scrollEl = scrollEl;
|
|
696
|
-
/**
|
|
697
|
-
* Handle fading of toolbars on scroll
|
|
698
|
-
*/
|
|
699
|
-
this.contentScrollCallback = () => {
|
|
700
|
-
handleFooterFade(scrollEl, this.el);
|
|
701
|
-
};
|
|
702
|
-
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
703
|
-
handleFooterFade(scrollEl, this.el);
|
|
704
|
-
};
|
|
705
718
|
}
|
|
719
|
+
scrollEl;
|
|
720
|
+
contentScrollCallback;
|
|
721
|
+
keyboardCtrl = null;
|
|
722
|
+
keyboardCtrlPromise = null;
|
|
723
|
+
keyboardVisible = false;
|
|
724
|
+
get el() { return getElement(this); }
|
|
725
|
+
/**
|
|
726
|
+
* Describes the scroll effect that will be applied to the footer.
|
|
727
|
+
* Only applies in iOS mode.
|
|
728
|
+
*/
|
|
729
|
+
collapse;
|
|
730
|
+
/**
|
|
731
|
+
* If `true`, the footer will be translucent.
|
|
732
|
+
* Only applies when the mode is `"ios"` and the device supports
|
|
733
|
+
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
734
|
+
*
|
|
735
|
+
* Note: In order to scroll content behind the footer, the `fullscreen`
|
|
736
|
+
* attribute needs to be set on the content.
|
|
737
|
+
*/
|
|
738
|
+
translucent = false;
|
|
706
739
|
componentDidLoad() {
|
|
707
740
|
this.checkCollapsibleFooter();
|
|
708
741
|
}
|
|
@@ -737,7 +770,6 @@ const Footer = class {
|
|
|
737
770
|
}
|
|
738
771
|
}
|
|
739
772
|
disconnectedCallback() {
|
|
740
|
-
this.destroyCollapsibleFooter();
|
|
741
773
|
if (this.keyboardCtrlPromise) {
|
|
742
774
|
this.keyboardCtrlPromise.then((ctrl) => ctrl.destroy());
|
|
743
775
|
this.keyboardCtrlPromise = null;
|
|
@@ -747,44 +779,58 @@ const Footer = class {
|
|
|
747
779
|
this.keyboardCtrl = null;
|
|
748
780
|
}
|
|
749
781
|
}
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
782
|
+
checkCollapsibleFooter = () => {
|
|
783
|
+
const mode = getIonMode(this);
|
|
784
|
+
if (mode !== 'ios') {
|
|
785
|
+
return;
|
|
786
|
+
}
|
|
787
|
+
const { collapse } = this;
|
|
788
|
+
const hasFade = collapse === 'fade';
|
|
789
|
+
this.destroyCollapsibleFooter();
|
|
790
|
+
if (hasFade) {
|
|
791
|
+
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
792
|
+
const contentEl = pageEl ? findIonContent(pageEl) : null;
|
|
793
|
+
if (!contentEl) {
|
|
794
|
+
printIonContentErrorMsg(this.el);
|
|
795
|
+
return;
|
|
796
|
+
}
|
|
797
|
+
this.setupFadeFooter(contentEl);
|
|
757
798
|
}
|
|
799
|
+
};
|
|
800
|
+
setupFadeFooter = async (contentEl) => {
|
|
801
|
+
const scrollEl = (this.scrollEl = await getScrollElement(contentEl));
|
|
802
|
+
/**
|
|
803
|
+
* Handle fading of toolbars on scroll
|
|
804
|
+
*/
|
|
805
|
+
this.contentScrollCallback = () => {
|
|
806
|
+
handleFooterFade(scrollEl, this.el);
|
|
807
|
+
};
|
|
808
|
+
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
809
|
+
handleFooterFade(scrollEl, this.el);
|
|
810
|
+
};
|
|
811
|
+
destroyCollapsibleFooter() {
|
|
758
812
|
if (this.scrollEl && this.contentScrollCallback) {
|
|
759
813
|
this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
|
|
760
814
|
this.contentScrollCallback = undefined;
|
|
761
815
|
}
|
|
762
816
|
}
|
|
763
817
|
render() {
|
|
764
|
-
const { translucent,
|
|
765
|
-
const
|
|
766
|
-
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
767
|
-
// fade via the deprecated `collapse` prop is iOS-only.
|
|
768
|
-
const isModeRestricted = scrollEffect === undefined && theme !== 'ios';
|
|
769
|
-
const hasHide = effect === 'hide';
|
|
770
|
-
const hasFade = effect === 'fade' && !isModeRestricted;
|
|
818
|
+
const { translucent, collapse } = this;
|
|
819
|
+
const mode = getIonMode(this);
|
|
771
820
|
const tabs = this.el.closest('ion-tabs');
|
|
772
|
-
const tabBar = tabs
|
|
773
|
-
return (h(Host, { key: '
|
|
774
|
-
[
|
|
821
|
+
const tabBar = tabs?.querySelector(':scope > ion-tab-bar');
|
|
822
|
+
return (h(Host, { key: '71939c4bbaef5062532a99ee2e33574102a9abad', role: "contentinfo", class: {
|
|
823
|
+
[mode]: true,
|
|
775
824
|
// Used internally for styling
|
|
776
|
-
[`footer-${
|
|
825
|
+
[`footer-${mode}`]: true,
|
|
777
826
|
[`footer-translucent`]: translucent,
|
|
778
|
-
[`footer-translucent-${
|
|
827
|
+
[`footer-translucent-${mode}`]: translucent,
|
|
779
828
|
['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
} }, theme === 'ios' && translucent && h("div", { key: 'd78b46870cbf11c95b066d649c04ec398b66e614', class: "footer-background" }), h("slot", { key: '9dc34787cd29597fe1b1198db317602014ac1483' })));
|
|
829
|
+
[`footer-collapse-${collapse}`]: collapse !== undefined,
|
|
830
|
+
} }, mode === 'ios' && translucent && h("div", { key: '2fa14f61661c47c661cecd696176728d6eafa74f', class: "footer-background" }), h("slot", { key: '8e63696e7c528d5c38201e546bf08135290d0945' })));
|
|
783
831
|
}
|
|
784
|
-
get el() { return getElement(this); }
|
|
785
832
|
};
|
|
786
833
|
Footer.style = {
|
|
787
|
-
ionic: ionicFooterMdCss(),
|
|
788
834
|
ios: footerIosCss(),
|
|
789
835
|
md: footerMdCss()
|
|
790
836
|
};
|
|
@@ -836,14 +882,13 @@ const handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {
|
|
|
836
882
|
});
|
|
837
883
|
};
|
|
838
884
|
const setToolbarBackgroundOpacity = (headerEl, opacity) => {
|
|
839
|
-
var _a;
|
|
840
885
|
/**
|
|
841
886
|
* Fading in the backdrop opacity
|
|
842
887
|
* should happen after the large title
|
|
843
888
|
* has collapsed, so it is handled
|
|
844
889
|
* by handleHeaderFade()
|
|
845
890
|
*/
|
|
846
|
-
if (
|
|
891
|
+
if (headerEl.collapse === 'fade') {
|
|
847
892
|
return;
|
|
848
893
|
}
|
|
849
894
|
if (opacity === undefined) {
|
|
@@ -1001,79 +1046,57 @@ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
|
|
|
1001
1046
|
* Get the role type for the ion-header.
|
|
1002
1047
|
*
|
|
1003
1048
|
* @param isInsideMenu If ion-header is inside ion-menu.
|
|
1004
|
-
* @
|
|
1005
|
-
*
|
|
1006
|
-
*
|
|
1049
|
+
* @param isCondensed If ion-header has collapse="condense".
|
|
1050
|
+
* @param mode The current mode.
|
|
1051
|
+
* @returns 'none' if inside ion-menu or if condensed in md
|
|
1052
|
+
* mode, otherwise 'banner'.
|
|
1007
1053
|
*/
|
|
1008
|
-
const getRoleType = (isInsideMenu) => {
|
|
1054
|
+
const getRoleType = (isInsideMenu, isCondensed, mode) => {
|
|
1009
1055
|
// If the header is inside a menu, it should not have the banner role.
|
|
1010
1056
|
if (isInsideMenu) {
|
|
1011
1057
|
return ROLE_NONE;
|
|
1012
1058
|
}
|
|
1059
|
+
/**
|
|
1060
|
+
* Only apply role="none" to `md` mode condensed headers
|
|
1061
|
+
* since the large header is never shown.
|
|
1062
|
+
*/
|
|
1063
|
+
if (isCondensed && mode === 'md') {
|
|
1064
|
+
return ROLE_NONE;
|
|
1065
|
+
}
|
|
1013
1066
|
// Default to banner role.
|
|
1014
1067
|
return ROLE_BANNER;
|
|
1015
1068
|
};
|
|
1016
1069
|
|
|
1017
|
-
const
|
|
1070
|
+
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}`;
|
|
1018
1071
|
|
|
1019
|
-
const
|
|
1020
|
-
|
|
1021
|
-
const headerMdCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header:not(.header-collapse-main):has(~ion-content ion-header.header-collapse-condense){opacity:0}.header-collapse-condense-hidden{display:none}ion-header.header-scroll-effect-hide{-webkit-transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);opacity:0}@media (prefers-reduced-motion: reduce){ion-header.header-scroll-effect-hide,ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transition:none;transition:none}}ion-header{z-index:10}.header-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.header-md.header-collapse-condense{-webkit-box-shadow:none;box-shadow:none}.header-md.header-collapse-condense-inactive:not(.header-collapse-condense){-webkit-box-shadow:none;box-shadow:none}.header-md.header-collapse-fade{-webkit-box-shadow:none;box-shadow:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
|
|
1072
|
+
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}`;
|
|
1022
1073
|
|
|
1023
1074
|
const Header = class {
|
|
1024
1075
|
constructor(hostRef) {
|
|
1025
1076
|
registerInstance(this, hostRef);
|
|
1026
|
-
this.inheritedAttributes = {};
|
|
1027
|
-
this.scrollHideCtrlPromise = null;
|
|
1028
|
-
this.hasWarnedCollapse = false;
|
|
1029
|
-
this.fadeCondenseSetupId = 0;
|
|
1030
|
-
/**
|
|
1031
|
-
* If `true`, the header will have a line at the bottom.
|
|
1032
|
-
* TODO(ROU-10855): add support for this prop on ios/md themes
|
|
1033
|
-
*/
|
|
1034
|
-
this.divider = false;
|
|
1035
|
-
/**
|
|
1036
|
-
* If `true`, the header will be translucent.
|
|
1037
|
-
* Only applies when the theme is `"ios"` or `"ionic"` and the device supports
|
|
1038
|
-
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
1039
|
-
*
|
|
1040
|
-
* Note: In order to scroll content behind the header, the `fullscreen`
|
|
1041
|
-
* attribute needs to be set on the content.
|
|
1042
|
-
*/
|
|
1043
|
-
this.translucent = false;
|
|
1044
|
-
this.setupScrollEffectHide = async (contentEl) => {
|
|
1045
|
-
const setupPromise = createScrollHideController(contentEl, {
|
|
1046
|
-
el: this.el,
|
|
1047
|
-
cssVar: '--internal-header-hide-height',
|
|
1048
|
-
hiddenClass: 'header-scroll-hidden',
|
|
1049
|
-
contentPartnerClass: 'content-header-hide-scroll-partner',
|
|
1050
|
-
contentHiddenClass: 'content-header-hide-scroll-hidden',
|
|
1051
|
-
});
|
|
1052
|
-
this.scrollHideCtrlPromise = setupPromise;
|
|
1053
|
-
const controller = await setupPromise;
|
|
1054
|
-
if (this.scrollHideCtrlPromise === setupPromise) {
|
|
1055
|
-
this.scrollHideCtrlPromise = null;
|
|
1056
|
-
controller.init();
|
|
1057
|
-
this.scrollHideCtrl = controller;
|
|
1058
|
-
}
|
|
1059
|
-
};
|
|
1060
|
-
this.setupFadeHeader = async (contentEl, condenseHeader) => {
|
|
1061
|
-
const setupId = ++this.fadeCondenseSetupId;
|
|
1062
|
-
const scrollEl = await getScrollElement(contentEl);
|
|
1063
|
-
if (this.fadeCondenseSetupId !== setupId) {
|
|
1064
|
-
return;
|
|
1065
|
-
}
|
|
1066
|
-
this.scrollEl = scrollEl;
|
|
1067
|
-
/**
|
|
1068
|
-
* Handle fading of toolbars on scroll
|
|
1069
|
-
*/
|
|
1070
|
-
this.contentScrollCallback = () => {
|
|
1071
|
-
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
1072
|
-
};
|
|
1073
|
-
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
1074
|
-
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
1075
|
-
};
|
|
1076
1077
|
}
|
|
1078
|
+
scrollEl;
|
|
1079
|
+
contentScrollCallback;
|
|
1080
|
+
intersectionObserver;
|
|
1081
|
+
collapsibleMainHeader;
|
|
1082
|
+
inheritedAttributes = {};
|
|
1083
|
+
get el() { return getElement(this); }
|
|
1084
|
+
/**
|
|
1085
|
+
* Describes the scroll effect that will be applied to the header.
|
|
1086
|
+
* Only applies in iOS mode.
|
|
1087
|
+
*
|
|
1088
|
+
* Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
|
|
1089
|
+
*/
|
|
1090
|
+
collapse;
|
|
1091
|
+
/**
|
|
1092
|
+
* If `true`, the header will be translucent.
|
|
1093
|
+
* Only applies when the mode is `"ios"` and the device supports
|
|
1094
|
+
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
1095
|
+
*
|
|
1096
|
+
* Note: In order to scroll content behind the header, the `fullscreen`
|
|
1097
|
+
* attribute needs to be set on the content.
|
|
1098
|
+
*/
|
|
1099
|
+
translucent = false;
|
|
1077
1100
|
componentWillLoad() {
|
|
1078
1101
|
this.inheritedAttributes = inheritAriaAttributes(this.el);
|
|
1079
1102
|
}
|
|
@@ -1087,63 +1110,48 @@ const Header = class {
|
|
|
1087
1110
|
this.destroyCollapsibleHeader();
|
|
1088
1111
|
}
|
|
1089
1112
|
async checkCollapsibleHeader() {
|
|
1090
|
-
const
|
|
1091
|
-
if (
|
|
1092
|
-
this.hasWarnedCollapse = true;
|
|
1093
|
-
printIonWarning(`[ion-header] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-header scroll-effect="${collapse}">`, this.el);
|
|
1094
|
-
}
|
|
1095
|
-
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
1096
|
-
// Skip teardown/rebuild if the effect hasn't changed.
|
|
1097
|
-
// This prevents re-renders from destroying the scroll controller
|
|
1098
|
-
// and resetting isHidden.
|
|
1099
|
-
if (effect === this.activeEffect) {
|
|
1113
|
+
const mode = getIonMode(this);
|
|
1114
|
+
if (mode !== 'ios') {
|
|
1100
1115
|
return;
|
|
1101
1116
|
}
|
|
1102
|
-
const
|
|
1103
|
-
const hasCondense =
|
|
1104
|
-
const hasFade =
|
|
1117
|
+
const { collapse } = this;
|
|
1118
|
+
const hasCondense = collapse === 'condense';
|
|
1119
|
+
const hasFade = collapse === 'fade';
|
|
1105
1120
|
this.destroyCollapsibleHeader();
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
if (hasHide && contentEl) {
|
|
1110
|
-
this.activeEffect = effect;
|
|
1111
|
-
await this.setupScrollEffectHide(contentEl);
|
|
1112
|
-
return;
|
|
1113
|
-
}
|
|
1114
|
-
// condense/fade via the deprecated `collapse` prop are iOS-only.
|
|
1115
|
-
// condense/fade via the new `scrollEffect` prop work in all themes.
|
|
1116
|
-
const isModeRestricted = scrollEffect === undefined && getIonTheme(this) !== 'ios';
|
|
1117
|
-
if (hasCondense && !isModeRestricted) {
|
|
1121
|
+
if (hasCondense) {
|
|
1122
|
+
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
1123
|
+
const contentEl = pageEl ? findIonContent(pageEl) : null;
|
|
1118
1124
|
// Cloned elements are always needed in iOS transition
|
|
1119
1125
|
writeTask(() => {
|
|
1120
1126
|
const title = cloneElement('ion-title');
|
|
1121
1127
|
title.size = 'large';
|
|
1122
1128
|
cloneElement('ion-back-button');
|
|
1123
1129
|
});
|
|
1124
|
-
|
|
1125
|
-
if (didSetup) {
|
|
1126
|
-
this.activeEffect = effect;
|
|
1127
|
-
}
|
|
1130
|
+
await this.setupCondenseHeader(contentEl, pageEl);
|
|
1128
1131
|
}
|
|
1129
|
-
else if (hasFade
|
|
1132
|
+
else if (hasFade) {
|
|
1133
|
+
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
1134
|
+
const contentEl = pageEl ? findIonContent(pageEl) : null;
|
|
1130
1135
|
if (!contentEl) {
|
|
1131
1136
|
printIonContentErrorMsg(this.el);
|
|
1132
1137
|
return;
|
|
1133
1138
|
}
|
|
1134
|
-
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]
|
|
1135
|
-
this.activeEffect = effect;
|
|
1139
|
+
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
|
|
1136
1140
|
await this.setupFadeHeader(contentEl, condenseHeader);
|
|
1137
1141
|
}
|
|
1138
1142
|
}
|
|
1143
|
+
setupFadeHeader = async (contentEl, condenseHeader) => {
|
|
1144
|
+
const scrollEl = (this.scrollEl = await getScrollElement(contentEl));
|
|
1145
|
+
/**
|
|
1146
|
+
* Handle fading of toolbars on scroll
|
|
1147
|
+
*/
|
|
1148
|
+
this.contentScrollCallback = () => {
|
|
1149
|
+
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
1150
|
+
};
|
|
1151
|
+
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
1152
|
+
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
1153
|
+
};
|
|
1139
1154
|
destroyCollapsibleHeader() {
|
|
1140
|
-
this.activeEffect = undefined;
|
|
1141
|
-
this.fadeCondenseSetupId++;
|
|
1142
|
-
this.scrollHideCtrlPromise = null;
|
|
1143
|
-
if (this.scrollHideCtrl) {
|
|
1144
|
-
this.scrollHideCtrl.destroy();
|
|
1145
|
-
this.scrollHideCtrl = undefined;
|
|
1146
|
-
}
|
|
1147
1155
|
if (this.intersectionObserver) {
|
|
1148
1156
|
this.intersectionObserver.disconnect();
|
|
1149
1157
|
this.intersectionObserver = undefined;
|
|
@@ -1160,40 +1168,21 @@ const Header = class {
|
|
|
1160
1168
|
async setupCondenseHeader(contentEl, pageEl) {
|
|
1161
1169
|
if (!contentEl || !pageEl) {
|
|
1162
1170
|
printIonContentErrorMsg(this.el);
|
|
1163
|
-
return
|
|
1171
|
+
return;
|
|
1164
1172
|
}
|
|
1165
1173
|
if (typeof IntersectionObserver === 'undefined') {
|
|
1166
|
-
return
|
|
1167
|
-
}
|
|
1168
|
-
const setupId = ++this.fadeCondenseSetupId;
|
|
1169
|
-
const scrollEl = await getScrollElement(contentEl);
|
|
1170
|
-
if (this.fadeCondenseSetupId !== setupId) {
|
|
1171
|
-
return false;
|
|
1172
|
-
}
|
|
1173
|
-
this.scrollEl = scrollEl;
|
|
1174
|
-
/**
|
|
1175
|
-
* The condense effect requires an ion-title with size="large"
|
|
1176
|
-
* in the condense header. Without it, there is nothing to
|
|
1177
|
-
* collapse into the main header toolbar.
|
|
1178
|
-
*/
|
|
1179
|
-
const hasLargeTitle = this.el.querySelector('ion-title[size="large"]') !== null;
|
|
1180
|
-
if (!hasLargeTitle) {
|
|
1181
|
-
printIonWarning('[ion-header] - The condense scroll effect requires an <ion-title size="large"> in the condense header.', this.el);
|
|
1182
|
-
return false;
|
|
1174
|
+
return;
|
|
1183
1175
|
}
|
|
1176
|
+
this.scrollEl = await getScrollElement(contentEl);
|
|
1184
1177
|
const headers = pageEl.querySelectorAll('ion-header');
|
|
1185
|
-
this.collapsibleMainHeader = Array.from(headers).find((header) =>
|
|
1186
|
-
var _a;
|
|
1187
|
-
const effect = (_a = header.scrollEffect) !== null && _a !== void 0 ? _a : header.collapse;
|
|
1188
|
-
return effect !== 'condense';
|
|
1189
|
-
});
|
|
1178
|
+
this.collapsibleMainHeader = Array.from(headers).find((header) => header.collapse !== 'condense');
|
|
1190
1179
|
if (!this.collapsibleMainHeader) {
|
|
1191
|
-
return
|
|
1180
|
+
return;
|
|
1192
1181
|
}
|
|
1193
1182
|
const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);
|
|
1194
1183
|
const scrollHeaderIndex = createHeaderIndex(this.el);
|
|
1195
1184
|
if (!mainHeaderIndex || !scrollHeaderIndex) {
|
|
1196
|
-
return
|
|
1185
|
+
return;
|
|
1197
1186
|
}
|
|
1198
1187
|
setHeaderActive(mainHeaderIndex, false);
|
|
1199
1188
|
setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);
|
|
@@ -1225,45 +1214,30 @@ const Header = class {
|
|
|
1225
1214
|
this.collapsibleMainHeader.classList.add('header-collapse-main');
|
|
1226
1215
|
}
|
|
1227
1216
|
});
|
|
1228
|
-
return true;
|
|
1229
1217
|
}
|
|
1230
1218
|
render() {
|
|
1231
|
-
const { translucent, inheritedAttributes
|
|
1232
|
-
const
|
|
1233
|
-
const
|
|
1234
|
-
|
|
1235
|
-
const isModeRestricted = scrollEffect === undefined && theme !== 'ios';
|
|
1236
|
-
const hasHide = effect === 'hide';
|
|
1237
|
-
const hasCondense = effect === 'condense' && !isModeRestricted && this.el.querySelector('ion-title[size="large"]') !== null;
|
|
1238
|
-
const hasFade = effect === 'fade' && !isModeRestricted;
|
|
1239
|
-
// The condense header should be hidden when
|
|
1240
|
-
// - deprecated collapse prop is used on non-iOS (mode restricted), or
|
|
1241
|
-
// - scrollEffect="condense" is set but no ion-title[size="large"] is present
|
|
1242
|
-
const isHiddenCondense = effect === 'condense' && !hasCondense;
|
|
1219
|
+
const { translucent, inheritedAttributes } = this;
|
|
1220
|
+
const mode = getIonMode(this);
|
|
1221
|
+
const collapse = this.collapse || 'none';
|
|
1222
|
+
const isCondensed = collapse === 'condense';
|
|
1243
1223
|
// banner role must be at top level, so remove role if inside a menu
|
|
1244
|
-
const roleType =
|
|
1245
|
-
return (h(Host,
|
|
1246
|
-
[
|
|
1224
|
+
const roleType = getRoleType(hostContext('ion-menu', this.el), isCondensed, mode);
|
|
1225
|
+
return (h(Host, { key: '863c4568cd7b8c0ec55109f193bbbaed68a1346e', role: roleType, class: {
|
|
1226
|
+
[mode]: true,
|
|
1247
1227
|
// Used internally for styling
|
|
1248
|
-
[`header-${
|
|
1228
|
+
[`header-${mode}`]: true,
|
|
1249
1229
|
[`header-translucent`]: this.translucent,
|
|
1250
|
-
[
|
|
1251
|
-
[
|
|
1252
|
-
|
|
1253
|
-
[`header-translucent-${theme}`]: this.translucent,
|
|
1254
|
-
['header-divider']: divider,
|
|
1255
|
-
'header-scroll-effect-hide': hasHide,
|
|
1256
|
-
} }, inheritedAttributes), theme !== 'md' && translucent && h("div", { key: 'fd5ff245ae0166e5e1d50936cacc98c90625db48', class: "header-background" }), h("slot", { key: '1baa31af87b9eb6406a21073ec65afa191dfbb3d' })));
|
|
1230
|
+
[`header-collapse-${collapse}`]: true,
|
|
1231
|
+
[`header-translucent-${mode}`]: this.translucent,
|
|
1232
|
+
}, ...inheritedAttributes }, mode === 'ios' && translucent && h("div", { key: '25c3bdce328b0b35607d154c8b8374679313d881', class: "header-background" }), h("slot", { key: 'b44fab0a9be7920b9650da26117c783e751e1702' })));
|
|
1257
1233
|
}
|
|
1258
|
-
get el() { return getElement(this); }
|
|
1259
1234
|
};
|
|
1260
1235
|
Header.style = {
|
|
1261
|
-
ionic: headerIonicCss(),
|
|
1262
1236
|
ios: headerIosCss(),
|
|
1263
1237
|
md: headerMdCss()
|
|
1264
1238
|
};
|
|
1265
1239
|
|
|
1266
|
-
const routerOutletCss = () => `:host{
|
|
1240
|
+
const routerOutletCss = () => `:host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
|
|
1267
1241
|
|
|
1268
1242
|
const RouterOutlet = class {
|
|
1269
1243
|
constructor(hostRef) {
|
|
@@ -1271,22 +1245,47 @@ const RouterOutlet = class {
|
|
|
1271
1245
|
this.ionNavWillLoad = createEvent(this, "ionNavWillLoad", 7);
|
|
1272
1246
|
this.ionNavWillChange = createEvent(this, "ionNavWillChange", 3);
|
|
1273
1247
|
this.ionNavDidChange = createEvent(this, "ionNavDidChange", 3);
|
|
1274
|
-
this.lockController = createLockController();
|
|
1275
|
-
this.gestureOrAnimationInProgress = false;
|
|
1276
|
-
/**
|
|
1277
|
-
* The mode determines the platform behaviors of the component.
|
|
1278
|
-
*/
|
|
1279
|
-
this.mode = getIonMode(this);
|
|
1280
|
-
/**
|
|
1281
|
-
* If `true`, the router-outlet should animate the transition of components.
|
|
1282
|
-
*/
|
|
1283
|
-
this.animated = true;
|
|
1284
1248
|
}
|
|
1249
|
+
lockController = createLockController();
|
|
1250
|
+
activeEl;
|
|
1251
|
+
// TODO(FW-2832): types
|
|
1252
|
+
activeComponent;
|
|
1253
|
+
activeParams;
|
|
1254
|
+
gesture;
|
|
1255
|
+
ani;
|
|
1256
|
+
gestureOrAnimationInProgress = false;
|
|
1257
|
+
get el() { return getElement(this); }
|
|
1258
|
+
/**
|
|
1259
|
+
* The mode determines which platform styles to use.
|
|
1260
|
+
*/
|
|
1261
|
+
mode = getIonMode(this);
|
|
1262
|
+
/** @internal */
|
|
1263
|
+
delegate;
|
|
1264
|
+
/**
|
|
1265
|
+
* If `true`, the router-outlet should animate the transition of components.
|
|
1266
|
+
*/
|
|
1267
|
+
animated = true;
|
|
1268
|
+
/** This property allows to create custom transition using AnimationBuilder functions. */
|
|
1269
|
+
animation;
|
|
1270
|
+
/**
|
|
1271
|
+
* If `true`, the router-outlet should allow navigation via swipe-to-go-back gesture.
|
|
1272
|
+
* Defaults to `true` for `"ios"` mode and `false` for `"md"` mode.
|
|
1273
|
+
*/
|
|
1274
|
+
swipeGesture;
|
|
1275
|
+
swipeGestureChanged() {
|
|
1276
|
+
this.updateGestureEnabled();
|
|
1277
|
+
}
|
|
1278
|
+
/** @internal */
|
|
1279
|
+
swipeHandler;
|
|
1285
1280
|
swipeHandlerChanged() {
|
|
1286
|
-
|
|
1287
|
-
this.gesture.enable(this.swipeHandler !== undefined);
|
|
1288
|
-
}
|
|
1281
|
+
this.updateGestureEnabled();
|
|
1289
1282
|
}
|
|
1283
|
+
/** @internal */
|
|
1284
|
+
ionNavWillLoad;
|
|
1285
|
+
/** @internal */
|
|
1286
|
+
ionNavWillChange;
|
|
1287
|
+
/** @internal */
|
|
1288
|
+
ionNavDidChange;
|
|
1290
1289
|
async connectedCallback() {
|
|
1291
1290
|
const onStart = () => {
|
|
1292
1291
|
this.gestureOrAnimationInProgress = true;
|
|
@@ -1294,7 +1293,7 @@ const RouterOutlet = class {
|
|
|
1294
1293
|
this.swipeHandler.onStart();
|
|
1295
1294
|
}
|
|
1296
1295
|
};
|
|
1297
|
-
this.gesture = (await import('./swipe-back-
|
|
1296
|
+
this.gesture = (await import('./swipe-back-cz4-lyG3.js')).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), (step) => this.ani?.progressStep(step), (shouldComplete, step, dur) => {
|
|
1298
1297
|
if (this.ani) {
|
|
1299
1298
|
this.ani.onFinish(() => {
|
|
1300
1299
|
this.gestureOrAnimationInProgress = false;
|
|
@@ -1325,11 +1324,21 @@ const RouterOutlet = class {
|
|
|
1325
1324
|
this.gestureOrAnimationInProgress = false;
|
|
1326
1325
|
}
|
|
1327
1326
|
});
|
|
1328
|
-
this.
|
|
1327
|
+
if (this.swipeGesture === undefined) {
|
|
1328
|
+
this.swipeGesture = config.getBoolean('swipeBackEnabled', this.mode === 'ios');
|
|
1329
|
+
}
|
|
1330
|
+
else {
|
|
1331
|
+
this.updateGestureEnabled();
|
|
1332
|
+
}
|
|
1329
1333
|
}
|
|
1330
1334
|
componentWillLoad() {
|
|
1331
1335
|
this.ionNavWillLoad.emit();
|
|
1332
1336
|
}
|
|
1337
|
+
updateGestureEnabled() {
|
|
1338
|
+
if (this.gesture) {
|
|
1339
|
+
this.gesture.enable(this.swipeHandler !== undefined && this.swipeGesture === true);
|
|
1340
|
+
}
|
|
1341
|
+
}
|
|
1333
1342
|
disconnectedCallback() {
|
|
1334
1343
|
if (this.gesture) {
|
|
1335
1344
|
this.gesture.destroy();
|
|
@@ -1396,16 +1405,19 @@ const RouterOutlet = class {
|
|
|
1396
1405
|
const { el, mode } = this;
|
|
1397
1406
|
const animated = this.animated && config.getBoolean('animated', true);
|
|
1398
1407
|
const animationBuilder = opts.animationBuilder || this.animation || config.get('navAnimation');
|
|
1399
|
-
await transition(
|
|
1408
|
+
await transition({
|
|
1409
|
+
mode,
|
|
1400
1410
|
animated,
|
|
1401
1411
|
enteringEl,
|
|
1402
|
-
leavingEl,
|
|
1412
|
+
leavingEl,
|
|
1413
|
+
baseEl: el,
|
|
1403
1414
|
/**
|
|
1404
1415
|
* We need to wait for all Stencil components
|
|
1405
1416
|
* to be ready only when using the lazy
|
|
1406
1417
|
* loaded bundle.
|
|
1407
1418
|
*/
|
|
1408
|
-
deepWait: hasLazyBuild(el),
|
|
1419
|
+
deepWait: hasLazyBuild(el),
|
|
1420
|
+
progressCallback: opts.progressAnimation
|
|
1409
1421
|
? (ani) => {
|
|
1410
1422
|
/**
|
|
1411
1423
|
* Because this progress callback is called asynchronously
|
|
@@ -1434,16 +1446,21 @@ const RouterOutlet = class {
|
|
|
1434
1446
|
this.ani = ani;
|
|
1435
1447
|
}
|
|
1436
1448
|
}
|
|
1437
|
-
: undefined
|
|
1449
|
+
: undefined,
|
|
1450
|
+
...opts,
|
|
1451
|
+
animationBuilder,
|
|
1452
|
+
});
|
|
1438
1453
|
// emit nav changed event
|
|
1439
1454
|
this.ionNavDidChange.emit();
|
|
1440
1455
|
return true;
|
|
1441
1456
|
}
|
|
1442
1457
|
render() {
|
|
1443
|
-
return h("slot", { key: '
|
|
1458
|
+
return h("slot", { key: '249e7d8a063c781db52fa535e42d648c7bf2909a' });
|
|
1444
1459
|
}
|
|
1445
|
-
get el() { return getElement(this); }
|
|
1446
1460
|
static get watchers() { return {
|
|
1461
|
+
"swipeGesture": [{
|
|
1462
|
+
"swipeGestureChanged": 0
|
|
1463
|
+
}],
|
|
1447
1464
|
"swipeHandler": [{
|
|
1448
1465
|
"swipeHandlerChanged": 0
|
|
1449
1466
|
}]
|
|
@@ -1451,17 +1468,31 @@ const RouterOutlet = class {
|
|
|
1451
1468
|
};
|
|
1452
1469
|
RouterOutlet.style = routerOutletCss();
|
|
1453
1470
|
|
|
1454
|
-
const
|
|
1455
|
-
|
|
1456
|
-
const titleIosCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host(.ion-color){color:var(--ion-color-base)}:host{top:0;-webkit-padding-start:90px;padding-inline-start:90px;-webkit-padding-end:90px;padding-inline-end:90px;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);position:absolute;width:100%;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);font-size:min(1.0625rem, 20.4px);font-weight:600;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host{inset-inline-start:0}:host(.title-small){-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px;padding-top:6px;padding-bottom:16px;position:relative;font-size:min(0.8125rem, 23.4px);font-weight:normal}:host(.title-large){-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:2px;padding-bottom:4px;-webkit-transform-origin:left center;transform-origin:left center;position:static;-ms-flex-align:end;align-items:flex-end;min-width:100%;font-size:min(2.125rem, 61.2px);font-weight:700;text-align:start}:host(.title-large.title-rtl){-webkit-transform-origin:right center;transform-origin:right center}:host(.title-large.ion-cloned-element){--color:var(--ion-text-color, #000);font-family:var(--ion-font-family)}:host(.title-large) .toolbar-title{-webkit-transform-origin:inherit;transform-origin:inherit;width:auto}:host-context([dir=rtl]):host(.title-large) .toolbar-title,:host-context([dir=rtl]).title-large .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}@supports selector(:dir(rtl)){:host(.title-large:dir(rtl)) .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}}`;
|
|
1471
|
+
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)}}`;
|
|
1457
1472
|
|
|
1458
|
-
const titleMdCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host
|
|
1473
|
+
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}`;
|
|
1459
1474
|
|
|
1460
1475
|
const ToolbarTitle = class {
|
|
1461
1476
|
constructor(hostRef) {
|
|
1462
1477
|
registerInstance(this, hostRef);
|
|
1463
1478
|
this.ionStyle = createEvent(this, "ionStyle", 7);
|
|
1464
1479
|
}
|
|
1480
|
+
get el() { return getElement(this); }
|
|
1481
|
+
/**
|
|
1482
|
+
* The color to use from your application's color palette.
|
|
1483
|
+
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
1484
|
+
* For more information on colors, see [theming](/docs/theming/basics).
|
|
1485
|
+
*/
|
|
1486
|
+
color;
|
|
1487
|
+
/**
|
|
1488
|
+
* The size of the toolbar title.
|
|
1489
|
+
*/
|
|
1490
|
+
size;
|
|
1491
|
+
/**
|
|
1492
|
+
* Emitted when the styles change.
|
|
1493
|
+
* @internal
|
|
1494
|
+
*/
|
|
1495
|
+
ionStyle;
|
|
1465
1496
|
sizeChanged() {
|
|
1466
1497
|
this.emitStyle();
|
|
1467
1498
|
}
|
|
@@ -1478,15 +1509,14 @@ const ToolbarTitle = class {
|
|
|
1478
1509
|
return this.size !== undefined ? this.size : 'default';
|
|
1479
1510
|
}
|
|
1480
1511
|
render() {
|
|
1481
|
-
const
|
|
1512
|
+
const mode = getIonMode(this);
|
|
1482
1513
|
const size = this.getSize();
|
|
1483
|
-
return (h(Host, { key: '
|
|
1484
|
-
[
|
|
1514
|
+
return (h(Host, { key: 'c5f0b913ff0a22d9bf02da48a313a613c2ac8fe7', class: createColorClasses(this.color, {
|
|
1515
|
+
[mode]: true,
|
|
1485
1516
|
[`title-${size}`]: true,
|
|
1486
1517
|
'title-rtl': document.dir === 'rtl',
|
|
1487
|
-
}) }, h("div", { key: '
|
|
1518
|
+
}) }, h("div", { key: '5253b9e39fb764bfe1e57370719139f8a83e9904', class: "toolbar-title" }, h("slot", { key: 'e38b1eccb0175c36f8cab211aee7ce4d61fc9035' }))));
|
|
1488
1519
|
}
|
|
1489
|
-
get el() { return getElement(this); }
|
|
1490
1520
|
static get watchers() { return {
|
|
1491
1521
|
"size": [{
|
|
1492
1522
|
"sizeChanged": 0
|
|
@@ -1494,30 +1524,26 @@ const ToolbarTitle = class {
|
|
|
1494
1524
|
}; }
|
|
1495
1525
|
};
|
|
1496
1526
|
ToolbarTitle.style = {
|
|
1497
|
-
ionic: titleIonicCss(),
|
|
1498
1527
|
ios: titleIosCss(),
|
|
1499
1528
|
md: titleMdCss()
|
|
1500
1529
|
};
|
|
1501
1530
|
|
|
1502
|
-
const
|
|
1531
|
+
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%}`;
|
|
1503
1532
|
|
|
1504
|
-
const
|
|
1505
|
-
|
|
1506
|
-
const toolbarMdCss = () => `:host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);contain:content;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));pointer-events:none}::slotted(ion-progress-bar){right:0;left:0;bottom:0;position:absolute}:host{font-family:var(--ion-font-family, inherit);z-index:10}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{z-index:10}.toolbar-background{z-index:-1}:host{--background:var(--ion-toolbar-background, var(--ion-background-color, #fff));--color:var(--ion-toolbar-color, var(--ion-text-color, #424242));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, #c1c4cd))));--padding-top:0;--padding-bottom:0;--padding-start:0;--padding-end:0;--min-height:56px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:3;order:3;min-width:0;max-width:100%}::slotted(.buttons-first-slot){-webkit-margin-start:4px;margin-inline-start:4px}::slotted(.buttons-last-slot){-webkit-margin-end:4px;margin-inline-end:4px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:4;order:4}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}`;
|
|
1533
|
+
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}`;
|
|
1507
1534
|
|
|
1508
1535
|
const Toolbar = class {
|
|
1509
1536
|
constructor(hostRef) {
|
|
1510
1537
|
registerInstance(this, hostRef);
|
|
1511
|
-
this.childrenStyles = new Map();
|
|
1512
|
-
this.slotClasses = [
|
|
1513
|
-
'has-start-content',
|
|
1514
|
-
'has-end-content',
|
|
1515
|
-
'has-primary-content',
|
|
1516
|
-
'has-secondary-content',
|
|
1517
|
-
];
|
|
1518
|
-
this.showClasses = ['show-start', 'show-end', 'show-primary', 'show-secondary'];
|
|
1519
|
-
this.slotSizeVars = ['--start-end-size', '--primary-secondary-size'];
|
|
1520
1538
|
}
|
|
1539
|
+
childrenStyles = new Map();
|
|
1540
|
+
get el() { return getElement(this); }
|
|
1541
|
+
/**
|
|
1542
|
+
* The color to use from your application's color palette.
|
|
1543
|
+
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
1544
|
+
* For more information on colors, see [theming](/docs/theming/basics).
|
|
1545
|
+
*/
|
|
1546
|
+
color;
|
|
1521
1547
|
componentWillLoad() {
|
|
1522
1548
|
const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));
|
|
1523
1549
|
const firstButtons = buttons.find((button) => {
|
|
@@ -1533,173 +1559,6 @@ const Toolbar = class {
|
|
|
1533
1559
|
if (lastButtons) {
|
|
1534
1560
|
lastButtons.classList.add('buttons-last-slot');
|
|
1535
1561
|
}
|
|
1536
|
-
this.updateSlotClasses();
|
|
1537
|
-
}
|
|
1538
|
-
componentDidLoad() {
|
|
1539
|
-
this.updateSlotClasses();
|
|
1540
|
-
this.updateSlotWidths();
|
|
1541
|
-
}
|
|
1542
|
-
titlePlacementChanged() {
|
|
1543
|
-
this.updateSlotClasses();
|
|
1544
|
-
}
|
|
1545
|
-
/**
|
|
1546
|
-
* Gets the title placement.
|
|
1547
|
-
* Returns the title placement if it is set, otherwise returns `"center"`
|
|
1548
|
-
* for `ionic` and `ios`, and `"start"` for `md`.
|
|
1549
|
-
*/
|
|
1550
|
-
getTitlePlacement() {
|
|
1551
|
-
if (this.titlePlacement !== undefined) {
|
|
1552
|
-
return this.titlePlacement;
|
|
1553
|
-
}
|
|
1554
|
-
return getIonTheme(this) === 'ionic' || getIonTheme(this) === 'ios' ? 'center' : 'start';
|
|
1555
|
-
}
|
|
1556
|
-
/**
|
|
1557
|
-
* Updates the CSS custom properties for slot widths
|
|
1558
|
-
* This ensures that slots shown by their met conditions
|
|
1559
|
-
* have a minimum width matching their required slot
|
|
1560
|
-
*/
|
|
1561
|
-
updateSlotWidths(tries = 0) {
|
|
1562
|
-
// Set timeout to try to execute after everything is rendered
|
|
1563
|
-
setTimeout(() => {
|
|
1564
|
-
// Attempt to measure and update
|
|
1565
|
-
const success = this.measureAndUpdateSlots();
|
|
1566
|
-
// If not all measurements were successful, try again in 100 ms
|
|
1567
|
-
// cap recursion at 5 tries for safety
|
|
1568
|
-
if (!success && tries < 5) {
|
|
1569
|
-
setTimeout(() => {
|
|
1570
|
-
this.updateSlotWidths(tries + 1);
|
|
1571
|
-
}, 100);
|
|
1572
|
-
}
|
|
1573
|
-
});
|
|
1574
|
-
}
|
|
1575
|
-
/**
|
|
1576
|
-
* Measure the widths of the slots and update the CSS custom properties
|
|
1577
|
-
* for the minimum width of each pair of slots based on the largest width in each pair.
|
|
1578
|
-
* Returns whether we successfully measured all of the slots we expect to have content.
|
|
1579
|
-
* If not, the content probably hasn't rendered yet and we need to try again.
|
|
1580
|
-
*/
|
|
1581
|
-
measureAndUpdateSlots() {
|
|
1582
|
-
// Define the relationship between slots based on the conditions array
|
|
1583
|
-
// Group slots that should have the same width
|
|
1584
|
-
const slotPairs = [
|
|
1585
|
-
{ name: 'start-end', slots: ['start', 'end'] },
|
|
1586
|
-
{ name: 'primary-secondary', slots: ['primary', 'secondary'] },
|
|
1587
|
-
];
|
|
1588
|
-
// First, measure all slot widths
|
|
1589
|
-
const slotWidths = new Map();
|
|
1590
|
-
let allMeasurementsSuccessful = true;
|
|
1591
|
-
// Measure all slots with content
|
|
1592
|
-
const slots = ['start', 'end', 'primary', 'secondary'];
|
|
1593
|
-
slots.forEach((slot) => {
|
|
1594
|
-
var _a;
|
|
1595
|
-
if (this.el.classList.contains(`has-${slot}-content`)) {
|
|
1596
|
-
const slotElement = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slot}"]`);
|
|
1597
|
-
if (slotElement) {
|
|
1598
|
-
// Check if the slot contains an img or ion-img
|
|
1599
|
-
const assignedElements = slotElement.assignedElements({ flatten: true });
|
|
1600
|
-
const hasImg = assignedElements.some((el) => {
|
|
1601
|
-
if (el.tagName === 'IMG' || el.tagName === 'ION-IMG') {
|
|
1602
|
-
return true;
|
|
1603
|
-
}
|
|
1604
|
-
// Check for nested images
|
|
1605
|
-
return el.querySelector('img, ion-img');
|
|
1606
|
-
});
|
|
1607
|
-
// Temporarily allow slot to size to content by setting flex-basis
|
|
1608
|
-
// to 'auto'. This ensures that slotted images can render at their
|
|
1609
|
-
// intrinsic width for measurement.
|
|
1610
|
-
if (hasImg) {
|
|
1611
|
-
const { name } = slotPairs.find((pair) => pair.slots.includes(slot));
|
|
1612
|
-
this.el.style.setProperty(`--${name}-size`, 'auto');
|
|
1613
|
-
}
|
|
1614
|
-
const width = slotElement.offsetWidth;
|
|
1615
|
-
if (width > 0) {
|
|
1616
|
-
slotWidths.set(slot, width);
|
|
1617
|
-
}
|
|
1618
|
-
else {
|
|
1619
|
-
allMeasurementsSuccessful = false;
|
|
1620
|
-
}
|
|
1621
|
-
}
|
|
1622
|
-
}
|
|
1623
|
-
});
|
|
1624
|
-
// Then set the CSS custom properties based on the largest width in each pair
|
|
1625
|
-
slotPairs.forEach(({ name, slots }) => {
|
|
1626
|
-
// Find the maximum width among the slots in this pair
|
|
1627
|
-
let maxWidth = 0;
|
|
1628
|
-
let hasAnyContent = false;
|
|
1629
|
-
slots.forEach((slot) => {
|
|
1630
|
-
var _a;
|
|
1631
|
-
if (slotWidths.has(slot)) {
|
|
1632
|
-
hasAnyContent = true;
|
|
1633
|
-
maxWidth = Math.max(maxWidth, (_a = slotWidths.get(slot)) !== null && _a !== void 0 ? _a : 0);
|
|
1634
|
-
}
|
|
1635
|
-
});
|
|
1636
|
-
// If at least one slot in the pair has content, set the min-width for the pair
|
|
1637
|
-
if (hasAnyContent && maxWidth > 0) {
|
|
1638
|
-
// Set a single CSS variable for the pair
|
|
1639
|
-
this.el.style.setProperty(`--${name}-size`, `${maxWidth}px`);
|
|
1640
|
-
}
|
|
1641
|
-
});
|
|
1642
|
-
return allMeasurementsSuccessful;
|
|
1643
|
-
}
|
|
1644
|
-
/**
|
|
1645
|
-
* Removes all slot visibility classes and slot width CSS variables.
|
|
1646
|
-
*/
|
|
1647
|
-
removeSlotClasses() {
|
|
1648
|
-
this.el.classList.remove(...this.slotClasses, ...this.showClasses);
|
|
1649
|
-
this.slotSizeVars.forEach((cssVar) => this.el.style.removeProperty(cssVar));
|
|
1650
|
-
}
|
|
1651
|
-
updateSlotClasses() {
|
|
1652
|
-
const titlePlacement = this.getTitlePlacement();
|
|
1653
|
-
if (titlePlacement !== 'center') {
|
|
1654
|
-
this.removeSlotClasses();
|
|
1655
|
-
return;
|
|
1656
|
-
}
|
|
1657
|
-
// Check if slots have content
|
|
1658
|
-
const slots = ['start', 'end', 'primary', 'secondary'];
|
|
1659
|
-
const classesToAdd = [];
|
|
1660
|
-
const classesToRemove = [];
|
|
1661
|
-
slots.forEach((slot) => {
|
|
1662
|
-
const slotHasContent = this.hasSlotContent(slot);
|
|
1663
|
-
const slotClass = `has-${slot}-content`;
|
|
1664
|
-
if (slotHasContent) {
|
|
1665
|
-
classesToAdd.push(slotClass);
|
|
1666
|
-
}
|
|
1667
|
-
else {
|
|
1668
|
-
classesToRemove.push(slotClass);
|
|
1669
|
-
}
|
|
1670
|
-
});
|
|
1671
|
-
// Force visibilities in certain conditions. This works by adding a class to the toolbar
|
|
1672
|
-
// named `show-{slot}`. This class will be added if the toolbar has the required slots
|
|
1673
|
-
// and does not have any of the excluded slots, otherwise it will be removed.
|
|
1674
|
-
// This is useful to enforce centering of the toolbar content when there are different amounts
|
|
1675
|
-
// of slots on either side of the toolbar.
|
|
1676
|
-
const conditions = [
|
|
1677
|
-
{ name: 'end', requiredSlots: ['start'], excludeSlots: ['end', 'primary'] },
|
|
1678
|
-
{ name: 'start', requiredSlots: ['end'], excludeSlots: ['start', 'secondary'] },
|
|
1679
|
-
{ name: 'secondary', requiredSlots: ['primary'], excludeSlots: ['secondary', 'start'] },
|
|
1680
|
-
{ name: 'primary', requiredSlots: ['secondary'], excludeSlots: ['primary', 'end'] },
|
|
1681
|
-
];
|
|
1682
|
-
conditions.forEach((condition) => {
|
|
1683
|
-
const hasRequiredSlots = condition.requiredSlots.every((slot) => classesToAdd.includes(`has-${slot}-content`));
|
|
1684
|
-
const hasExcludedSlots = condition.excludeSlots.some((slot) => classesToAdd.includes(`has-${slot}-content`));
|
|
1685
|
-
const className = `show-${condition.name}`;
|
|
1686
|
-
if (hasRequiredSlots && !hasExcludedSlots) {
|
|
1687
|
-
classesToAdd.push(className);
|
|
1688
|
-
}
|
|
1689
|
-
else {
|
|
1690
|
-
classesToRemove.push(className);
|
|
1691
|
-
}
|
|
1692
|
-
});
|
|
1693
|
-
// Add classes to the toolbar element
|
|
1694
|
-
this.el.classList.add(...classesToAdd);
|
|
1695
|
-
this.el.classList.remove(...classesToRemove);
|
|
1696
|
-
// Update slot widths after classes have been updated
|
|
1697
|
-
this.updateSlotWidths();
|
|
1698
|
-
}
|
|
1699
|
-
hasSlotContent(slotName) {
|
|
1700
|
-
var _a;
|
|
1701
|
-
const slotNode = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slotName}"]`);
|
|
1702
|
-
return !!slotNode && slotNode.assignedNodes().length > 0;
|
|
1703
1562
|
}
|
|
1704
1563
|
childrenStyle(ev) {
|
|
1705
1564
|
ev.stopPropagation();
|
|
@@ -1724,27 +1583,21 @@ const Toolbar = class {
|
|
|
1724
1583
|
}
|
|
1725
1584
|
}
|
|
1726
1585
|
render() {
|
|
1727
|
-
const
|
|
1586
|
+
const mode = getIonMode(this);
|
|
1728
1587
|
const childStyles = {};
|
|
1729
|
-
this.childrenStyles.forEach((
|
|
1730
|
-
Object.assign(childStyles,
|
|
1588
|
+
this.childrenStyles.forEach((value) => {
|
|
1589
|
+
Object.assign(childStyles, value);
|
|
1731
1590
|
});
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1591
|
+
return (h(Host, { key: 'c16803dc4eae9972ef19bf43aa74b94feb4fd4c1', class: {
|
|
1592
|
+
...childStyles,
|
|
1593
|
+
...createColorClasses(this.color, {
|
|
1594
|
+
[mode]: true,
|
|
1595
|
+
'in-toolbar': hostContext('ion-toolbar', this.el),
|
|
1596
|
+
}),
|
|
1597
|
+
} }, h("div", { key: '20e3f85844c94b8399c245d2df125e6ab678d681', class: "toolbar-background", part: "background" }), h("div", { key: '12f09e324e8d9130b9d30c493106b500233fb016', class: "toolbar-container", part: "container" }, h("slot", { key: '6da0fe99ee0c4d7c969712e2908a4e7e6be5ed2c', name: "start" }), h("slot", { key: '177c346d6dcabb7857d810cda7d25c6dde32e6e2', name: "secondary" }), h("div", { key: '8c921b415940c71bf4c1a2c5c6887f36ad1afd16', class: "toolbar-content", part: "content" }, h("slot", { key: '1f2976b80d967bd51e86ed1357b363271d655df2' })), h("slot", { key: '0f7618044a7e8b0d9b715a8e208070f7ef2ee4c8', name: "primary" }), h("slot", { key: '125c393197e0660a3c2638dd4628c41ef7e05f19', name: "end" }))));
|
|
1738
1598
|
}
|
|
1739
|
-
get el() { return getElement(this); }
|
|
1740
|
-
static get watchers() { return {
|
|
1741
|
-
"titlePlacement": [{
|
|
1742
|
-
"titlePlacementChanged": 0
|
|
1743
|
-
}]
|
|
1744
|
-
}; }
|
|
1745
1599
|
};
|
|
1746
1600
|
Toolbar.style = {
|
|
1747
|
-
ionic: toolbarIonicCss(),
|
|
1748
1601
|
ios: toolbarIosCss(),
|
|
1749
1602
|
md: toolbarMdCss()
|
|
1750
1603
|
};
|