@ionic/core 8.8.18-dev.11786487682.1e6f798f → 8.8.18-dev.11786663039.1d61e2fe
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-0tt0PTAe.js +4 -0
- package/components/p-3dKnMgX5.js +4 -0
- package/components/p-6e_5igwn.js +4 -0
- package/components/p-AqD_wmvU.js +4 -0
- package/components/p-B-FxiyeI.js +4 -0
- package/components/p-B4COLbAV.js +4 -0
- package/components/p-B9zzUBwR.js +4 -0
- package/components/p-BFU7kgcj.js +4 -0
- package/components/p-BMPN55of.js +4 -0
- package/components/p-BPbRjpb2.js +4 -0
- package/components/p-BSQPZ79H.js +4 -0
- package/components/p-BXQ7upSC.js +4 -0
- package/components/p-BhamHSw3.js +4 -0
- package/components/p-BmVRXR1y.js +4 -0
- package/components/p-BrXE0XUu.js +4 -0
- package/components/p-Bv7Rqz3Z.js +4 -0
- package/components/p-Bw7MMRH7.js +4 -0
- package/components/p-C-X5vb8f.js +4 -0
- package/components/p-C117Majq.js +4 -0
- package/components/{p-DWoO0801.js → p-C6JOi8wS.js} +1 -1
- package/components/p-CCVPk59A.js +4 -0
- package/components/p-CEW4RXZO.js +4 -0
- package/components/p-CIGNaXM1.js +4 -0
- package/components/p-CKMc290p.js +4 -0
- package/components/{p-B2SvA6NE.js → p-CO5nI-BZ.js} +1 -1
- package/components/p-COQ_7Wwc.js +4 -0
- package/components/p-CQbh6Be_.js +4 -0
- package/components/p-CQtcj8t7.js +4 -0
- package/components/p-Cap9bvqr.js +4 -0
- package/components/p-CdP7ze2J.js +4 -0
- package/components/p-CfyJ_Ogc.js +4 -0
- package/components/p-ChWC4-vA.js +4 -0
- package/components/p-CmKf4pgI.js +4 -0
- package/components/p-CqYSqB9_.js +4 -0
- package/{dist/ionic/p-Cm20lBQw.js → components/p-Cwsd9bue.js} +1 -1
- package/components/p-D0pL_HuH.js +4 -0
- package/components/p-D0xd6h3Q.js +4 -0
- package/components/p-D28LaDuR.js +4 -0
- package/components/p-D7-vHX0A.js +4 -0
- package/components/p-D9KqizZs.js +4 -0
- package/components/p-DIZE3CVV.js +4 -0
- package/components/p-DJztqcrH.js +4 -0
- package/{dist/ionic/p-im8OkZlj.js → components/p-DL8rd5jo.js} +1 -1
- package/components/p-DRcApg6F.js +4 -0
- package/components/p-DTTnwMiS.js +4 -0
- package/components/p-DWCzVL3Y.js +4 -0
- package/components/p-DYmrV1HT.js +4 -0
- package/components/{p-BZwQa9ey.js → p-Dcu-SAJG.js} +1 -1
- package/components/p-DnINLmwC.js +4 -0
- package/components/{p-CVqhQif1.js → p-DsNz6_gM.js} +1 -1
- package/components/p-DtiuiOTk.js +4 -0
- package/components/p-DunYzubP.js +4 -0
- package/components/p-DwcSJ9u1.js +4 -0
- package/components/p-LpMHEu3v.js +4 -0
- package/components/p-QCPSB1bo.js +4 -0
- package/components/p-RvtofbHn.js +4 -0
- package/components/p-TXPDHL13.js +4 -0
- package/components/p-WOFp6fXj.js +4 -0
- package/components/p-ZjP4CjeZ.js +4 -0
- package/components/p-byZM6qHV.js +4 -0
- package/components/{p-B_jBop0E.js → p-ltNYIRmI.js} +1 -1
- package/components/p-miSGCTAU.js +4 -0
- package/components/p-mpdX3emm.js +4 -0
- package/components/p-nvqVLrWC.js +4 -0
- package/components/p-qiWM96Sz.js +4 -0
- package/components/p-vlF0Bcfd.js +4 -0
- package/css/core.css +1 -1
- package/css/core.css.map +1 -1
- package/css/display.css +1 -1
- package/css/display.css.map +1 -1
- package/css/flex-utils.css +1 -1
- package/css/flex-utils.css.map +1 -1
- package/css/float-elements.css.map +1 -1
- package/css/global.bundle.css.map +1 -1
- package/css/ionic-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-B3xfVcDO.js → animation-D5WDBRvT.js} +6 -6
- package/dist/cjs/{app-globals-3ZoCVkn-.js → app-globals-C2s3Cbal.js} +1 -1
- package/dist/cjs/{button-active-3tZKuPbT.js → button-active-CXI2TseG.js} +3 -3
- package/dist/cjs/{capacitor-CQSg1uCo.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-BCIkDef_.js → format-ZfKtcdit.js} +40 -30
- package/dist/cjs/{framework-delegate-DC5nq_NN.js → framework-delegate-Bdvk3JQO.js} +6 -10
- package/dist/cjs/{gesture-controller-dtqlP_q4.js → gesture-controller-BDUH7687.js} +15 -8
- package/dist/cjs/{haptic-eix26ESE.js → haptic-Ch-X4gRx.js} +3 -4
- package/dist/cjs/hardware-back-button-zr8zeYaH.js +121 -0
- package/dist/cjs/{helpers-DiOgV5hw.js → helpers-DURh1XdY.js} +6 -73
- package/dist/cjs/{index-DYRcC3bw.js → index-B7sCu6vN.js} +15 -16
- package/dist/cjs/{index-BxEZd5IE.js → index-BnhnwL1o.js} +2 -2
- package/dist/cjs/{index-bX3nz2vw.js → index-Btdix80K.js} +8 -9
- package/dist/cjs/{index-GZU9YrFc.js → index-CAThePqm.js} +8 -47
- package/dist/cjs/{index-Bj07IRTB.js → index-DhSx3VvD.js} +3 -3
- package/dist/cjs/index-DkNv4J_i.js +10 -0
- package/dist/cjs/{index-BaJ7_YbC.js → index-DsoHs7Ly.js} +5 -5
- package/dist/cjs/{index-CAvQ7Tka.js → index-P1nQxrpZ.js} +10 -4
- package/dist/cjs/{index-CxDnX7hd.js → index-wOmugbdg.js} +0 -2
- package/dist/cjs/index.cjs.js +17 -17
- package/dist/cjs/{input-shims-BSEBw22J.js → input-shims-CPbWb84M.js} +19 -22
- package/dist/cjs/{input.utils-D68wgI2Y.js → input.utils-CkASW3mE.js} +6 -7
- package/dist/cjs/ion-accordion_2.cjs.entry.js +378 -382
- package/dist/cjs/ion-action-sheet.cjs.entry.js +178 -86
- package/dist/cjs/ion-alert.cjs.entry.js +250 -125
- package/dist/cjs/ion-app_8.cjs.entry.js +460 -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 +2767 -0
- package/dist/cjs/ion-fab_3.cjs.entry.js +154 -112
- package/dist/cjs/ion-img.cjs.entry.js +34 -16
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +108 -156
- package/dist/cjs/ion-input-otp.cjs.entry.js +435 -437
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +40 -64
- package/dist/cjs/ion-input.cjs.entry.js +330 -276
- package/dist/cjs/ion-item-option_3.cjs.entry.js +136 -511
- package/dist/cjs/ion-item_8.cjs.entry.js +217 -189
- package/dist/cjs/ion-loading.cjs.entry.js +151 -68
- package/dist/cjs/ion-menu_3.cjs.entry.js +181 -137
- package/dist/cjs/ion-modal.cjs.entry.js +534 -491
- package/dist/cjs/ion-nav_2.cjs.entry.js +103 -163
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +39 -39
- package/dist/cjs/ion-picker-column.cjs.entry.js +421 -409
- package/dist/cjs/ion-picker.cjs.entry.js +405 -400
- package/dist/cjs/ion-popover.cjs.entry.js +323 -211
- package/dist/cjs/ion-progress-bar.cjs.entry.js +35 -47
- package/dist/cjs/ion-radio_2.cjs.entry.js +216 -161
- package/dist/cjs/ion-range.cjs.entry.js +307 -249
- package/dist/cjs/ion-refresher_2.cjs.entry.js +174 -121
- package/dist/cjs/ion-reorder_2.cjs.entry.js +59 -53
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +18 -26
- package/dist/cjs/ion-route_4.cjs.entry.js +178 -75
- package/dist/cjs/ion-searchbar.cjs.entry.js +308 -331
- package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment-view.cjs.entry.js +28 -27
- package/dist/cjs/ion-segment_2.cjs.entry.js +177 -141
- package/dist/cjs/ion-select-modal.cjs.entry.js +49 -69
- package/dist/cjs/ion-select_3.cjs.entry.js +481 -385
- package/dist/cjs/ion-spinner.cjs.entry.js +28 -36
- package/dist/cjs/ion-split-pane.cjs.entry.js +34 -25
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +116 -179
- package/dist/cjs/ion-tab_2.cjs.entry.js +54 -29
- package/dist/cjs/ion-text.cjs.entry.js +13 -7
- package/dist/cjs/ion-textarea.cjs.entry.js +274 -269
- package/dist/cjs/ion-toast.cjs.entry.js +264 -169
- package/dist/cjs/ion-toggle.cjs.entry.js +184 -187
- package/dist/cjs/ionic-global-dMut1Czp.js +156 -0
- package/dist/cjs/ionic.cjs.js +4 -4
- package/dist/cjs/{ios.transition-DpFQfFfT.js → ios.transition-CeaFa0y2.js} +14 -20
- package/dist/cjs/{item-multiple-inputs-BG9f5_eV.js → item-multiple-inputs-HQO5Iy9I.js} +1 -1
- package/dist/cjs/{keyboard-faZBQysj.js → keyboard-Cix5TVkD.js} +4 -5
- package/dist/cjs/{keyboard-Bn0Ppim6.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-ChJcoZUH.js → md.transition-D4Q5jny7.js} +8 -10
- package/dist/cjs/{notch-controller-BO0UGB4F.js → notch-controller-fMfidI-7.js} +4 -4
- package/dist/cjs/{overlay-control-label-DnRLQR1t.js → overlay-control-label-D2sdL2O8.js} +11 -13
- package/dist/cjs/{overlays-CFGbPUmE.js → overlays-C2qrqpHm.js} +60 -336
- package/dist/cjs/{select-option-render-DqBHEjDn.js → select-option-render-Dh16lTnA.js} +3 -4
- package/dist/cjs/{status-tap-x2qDo5QR.js → status-tap-CgjQ-6jq.js} +3 -4
- package/dist/cjs/{swipe-back-CvZt_4YX.js → swipe-back-CmfRYdWQ.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 +101 -78
- package/dist/collection/components/datetime/datetime.ios.css +148 -304
- package/dist/collection/components/datetime/datetime.js +1064 -906
- package/dist/collection/components/datetime/datetime.md.css +138 -294
- package/dist/collection/components/datetime/utils/data.js +18 -19
- package/dist/collection/components/datetime/utils/format.js +21 -11
- package/dist/collection/components/datetime/utils/manipulation.js +8 -8
- package/dist/collection/components/datetime/utils/parse.js +10 -10
- package/dist/collection/components/datetime/utils/state.js +8 -2
- package/dist/collection/components/datetime/utils/validate.js +4 -5
- package/dist/collection/components/datetime-button/datetime-button.ios.css +5 -6
- package/dist/collection/components/datetime-button/datetime-button.js +253 -246
- package/dist/collection/components/datetime-button/datetime-button.md.css +5 -6
- package/dist/collection/components/fab/fab.css +1 -25
- package/dist/collection/components/fab/fab.js +25 -22
- package/dist/collection/components/fab-button/fab-button.ios.css +6 -18
- package/dist/collection/components/fab-button/fab-button.js +117 -83
- package/dist/collection/components/fab-button/fab-button.md.css +8 -20
- package/dist/collection/components/fab-list/fab-list.css +0 -12
- package/dist/collection/components/fab-list/fab-list.js +15 -20
- package/dist/collection/components/footer/footer.ios.css +6 -33
- package/dist/collection/components/footer/footer.js +65 -151
- package/dist/collection/components/footer/footer.md.css +0 -40
- package/dist/collection/components/grid/grid.css +0 -12
- package/dist/collection/components/grid/grid.js +9 -15
- package/dist/collection/components/header/header.ios.css +133 -178
- package/dist/collection/components/header/header.js +70 -202
- package/dist/collection/components/header/header.md.css +9 -199
- package/dist/collection/components/header/header.utils.js +13 -6
- package/dist/collection/components/img/img.js +34 -16
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +76 -164
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +0 -12
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +30 -19
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +0 -12
- package/dist/collection/components/input/input.ios.css +135 -223
- package/dist/collection/components/input/input.js +339 -307
- package/dist/collection/components/input/input.md.css +207 -193
- package/dist/collection/components/input-otp/input-otp.ios.css +60 -105
- package/dist/collection/components/input-otp/input-otp.js +432 -437
- package/dist/collection/components/input-otp/input-otp.md.css +60 -105
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +37 -60
- package/dist/collection/components/item/item.ios.css +80 -120
- package/dist/collection/components/item/item.js +113 -102
- package/dist/collection/components/item/item.md.css +79 -131
- package/dist/collection/components/item-divider/item-divider.ios.css +0 -18
- package/dist/collection/components/item-divider/item-divider.js +23 -21
- package/dist/collection/components/item-divider/item-divider.md.css +0 -18
- package/dist/collection/components/item-group/item-group.ios.css +0 -12
- package/dist/collection/components/item-group/item-group.js +7 -13
- package/dist/collection/components/item-group/item-group.md.css +0 -12
- package/dist/collection/components/item-option/item-option.ios.css +29 -136
- package/dist/collection/components/item-option/item-option.js +56 -92
- package/dist/collection/components/item-option/item-option.md.css +29 -136
- package/dist/collection/components/item-options/item-options.ios.css +34 -77
- package/dist/collection/components/item-options/item-options.js +17 -20
- package/dist/collection/components/item-options/item-options.md.css +34 -77
- package/dist/collection/components/item-sliding/{item-sliding.native.css → item-sliding.css} +9 -84
- package/dist/collection/components/item-sliding/item-sliding.js +61 -441
- package/dist/collection/components/item-sliding/test/test.utils.js +0 -13
- package/dist/collection/components/label/label.ios.css +0 -18
- package/dist/collection/components/label/label.js +32 -15
- package/dist/collection/components/label/label.md.css +0 -18
- package/dist/collection/components/list/list.ios.css +14 -54
- package/dist/collection/components/list/list.js +19 -55
- package/dist/collection/components/list/list.md.css +16 -56
- package/dist/collection/components/list-header/list-header.ios.css +38 -82
- package/dist/collection/components/list-header/list-header.js +18 -11
- package/dist/collection/components/list-header/list-header.md.css +38 -82
- package/dist/collection/components/loading/loading.ios.css +1 -13
- package/dist/collection/components/loading/loading.js +143 -62
- package/dist/collection/components/loading/loading.md.css +1 -13
- package/dist/collection/components/menu/menu.ios.css +3 -15
- package/dist/collection/components/menu/menu.js +108 -71
- package/dist/collection/components/menu/menu.md.css +3 -15
- package/dist/collection/components/menu-button/menu-button.ios.css +14 -48
- package/dist/collection/components/menu-button/menu-button.js +38 -45
- package/dist/collection/components/menu-button/menu-button.md.css +15 -49
- package/dist/collection/components/menu-toggle/menu-toggle.js +25 -21
- package/dist/collection/components/modal/animations/ios.enter.js +1 -1
- package/dist/collection/components/modal/animations/md.enter.js +1 -1
- package/dist/collection/components/modal/animations/sheet.js +2 -8
- package/dist/collection/components/modal/gestures/sheet.js +16 -83
- package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -2
- package/dist/collection/components/modal/modal.ios.css +70 -178
- package/dist/collection/components/modal/modal.js +399 -268
- package/dist/collection/components/modal/modal.md.css +70 -178
- package/dist/collection/components/modal/safe-area-utils.js +4 -5
- package/dist/collection/components/modal/test/fixtures.js +3 -0
- package/dist/collection/components/nav/nav.css +1 -7
- package/dist/collection/components/nav/nav.js +72 -256
- package/dist/collection/components/nav/view-controller.js +7 -1
- package/dist/collection/components/nav-link/nav-link.js +21 -14
- package/dist/collection/components/note/note.ios.css +0 -12
- package/dist/collection/components/note/note.js +14 -11
- package/dist/collection/components/note/note.md.css +0 -12
- package/dist/collection/components/picker/picker.ios.css +3 -15
- package/dist/collection/components/picker/picker.js +403 -398
- package/dist/collection/components/picker/picker.md.css +3 -15
- package/dist/collection/components/picker-column/picker-column.css +5 -9
- package/dist/collection/components/picker-column/picker-column.js +418 -409
- package/dist/collection/components/picker-column-option/picker-column-option.ios.css +0 -6
- package/dist/collection/components/picker-column-option/picker-column-option.js +38 -42
- package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -7
- package/dist/collection/components/popover/animations/ios.enter.js +1 -2
- package/dist/collection/components/popover/animations/md.enter.js +1 -2
- package/dist/collection/components/popover/popover.ios.css +2 -15
- package/dist/collection/components/popover/popover.js +313 -199
- package/dist/collection/components/popover/popover.md.css +2 -15
- package/dist/collection/components/popover/test/fixture.js +1 -0
- package/dist/collection/components/popover/utils.js +4 -6
- package/dist/collection/components/progress-bar/progress-bar.ios.css +17 -48
- package/dist/collection/components/progress-bar/progress-bar.js +33 -65
- package/dist/collection/components/progress-bar/progress-bar.md.css +17 -48
- package/dist/collection/components/radio/radio.ios.css +102 -207
- package/dist/collection/components/radio/radio.js +108 -77
- package/dist/collection/components/radio/radio.md.css +102 -207
- package/dist/collection/components/radio-group/radio-group.ios.css +19 -43
- package/dist/collection/components/radio-group/radio-group.js +107 -113
- package/dist/collection/components/radio-group/radio-group.md.css +19 -43
- package/dist/collection/components/radio-group/test/fixtures.js +2 -0
- package/dist/collection/components/range/range.ios.css +85 -128
- package/dist/collection/components/range/range.js +303 -245
- package/dist/collection/components/range/range.md.css +85 -128
- package/dist/collection/components/refresher/refresher.ios.css +1 -14
- package/dist/collection/components/refresher/refresher.js +117 -88
- package/dist/collection/components/refresher/refresher.md.css +2 -15
- package/dist/collection/components/refresher-content/refresher-content.js +47 -31
- package/dist/collection/components/reorder/reorder.ios.css +0 -6
- package/dist/collection/components/reorder/reorder.js +7 -33
- package/dist/collection/components/reorder/reorder.md.css +0 -6
- package/dist/collection/components/reorder-group/reorder-group.css +0 -6
- package/dist/collection/components/reorder-group/reorder-group.js +47 -22
- package/dist/collection/components/ripple-effect/{ripple-effect.common.css → ripple-effect.css} +1 -7
- package/dist/collection/components/ripple-effect/ripple-effect.js +17 -26
- package/dist/collection/components/route/route.js +39 -14
- package/dist/collection/components/route-redirect/route-redirect.js +31 -0
- package/dist/collection/components/router/router.js +37 -37
- package/dist/collection/components/router/utils/dom.js +25 -7
- package/dist/collection/components/router/utils/matching.js +7 -9
- package/dist/collection/components/router/utils/parser.js +1 -1
- package/dist/collection/components/router/utils/path.js +0 -1
- package/dist/collection/components/router-link/router-link.css +2 -8
- package/dist/collection/components/router-link/router-link.js +40 -19
- package/dist/collection/components/router-outlet/router-outlet.css +1 -7
- package/dist/collection/components/router-outlet/router-outlet.js +83 -25
- package/dist/collection/components/row/row.css +0 -16
- package/dist/collection/components/row/row.js +2 -9
- package/dist/collection/components/searchbar/searchbar.ios.css +18 -56
- package/dist/collection/components/searchbar/searchbar.js +321 -380
- package/dist/collection/components/searchbar/searchbar.md.css +18 -56
- package/dist/collection/components/segment/segment.ios.css +2 -45
- package/dist/collection/components/segment/segment.js +126 -94
- package/dist/collection/components/segment/segment.md.css +2 -45
- package/dist/collection/components/segment-button/segment-button.ios.css +105 -146
- package/dist/collection/components/segment-button/segment-button.js +49 -46
- package/dist/collection/components/segment-button/segment-button.md.css +107 -148
- package/dist/collection/components/segment-content/segment-content.js +1 -1
- package/dist/collection/components/segment-view/segment-view.ios.css +0 -6
- package/dist/collection/components/segment-view/segment-view.js +28 -27
- package/dist/collection/components/segment-view/segment-view.md.css +0 -6
- package/dist/collection/components/select/select.ios.css +177 -316
- package/dist/collection/components/select/select.js +401 -399
- package/dist/collection/components/select/select.md.css +179 -332
- package/dist/collection/components/select-modal/select-modal.ios.css +45 -293
- package/dist/collection/components/select-modal/select-modal.js +37 -79
- package/dist/collection/components/select-modal/select-modal.md.css +43 -273
- package/dist/collection/components/select-modal/test/fixtures.js +8 -1
- package/dist/collection/components/select-option/select-option.js +48 -15
- package/dist/collection/components/select-popover/select-popover.ios.css +124 -188
- package/dist/collection/components/select-popover/select-popover.js +44 -37
- package/dist/collection/components/select-popover/select-popover.md.css +47 -228
- package/dist/collection/components/select-popover/test/fixtures.js +8 -1
- package/dist/collection/components/skeleton-text/skeleton-text.css +0 -6
- package/dist/collection/components/skeleton-text/skeleton-text.js +15 -15
- package/dist/collection/components/spinner/{spinner.ionic.css → spinner.css} +10 -78
- package/dist/collection/components/spinner/spinner.js +26 -55
- package/dist/collection/components/split-pane/split-pane.ios.css +2 -20
- package/dist/collection/components/split-pane/split-pane.js +33 -28
- package/dist/collection/components/split-pane/split-pane.md.css +2 -20
- package/dist/collection/components/tab/tab.js +17 -10
- package/dist/collection/components/tab-bar/tab-bar.ios.css +43 -86
- package/dist/collection/components/tab-bar/tab-bar.js +44 -190
- package/dist/collection/components/tab-bar/tab-bar.md.css +43 -86
- package/dist/collection/components/tab-button/tab-button.ios.css +95 -171
- package/dist/collection/components/tab-button/tab-button.js +68 -74
- package/dist/collection/components/tab-button/tab-button.md.css +93 -137
- package/dist/collection/components/tabs/tabs.css +1 -7
- package/dist/collection/components/tabs/tabs.js +33 -23
- package/dist/collection/components/text/text.css +0 -6
- package/dist/collection/components/text/text.js +12 -7
- package/dist/collection/components/textarea/textarea.ios.css +158 -298
- package/dist/collection/components/textarea/textarea.js +275 -295
- package/dist/collection/components/textarea/textarea.md.css +159 -312
- package/dist/collection/components/thumbnail/thumbnail.css +0 -6
- package/dist/collection/components/thumbnail/thumbnail.js +2 -9
- package/dist/collection/components/title/title.ios.css +4 -32
- package/dist/collection/components/title/title.js +23 -13
- package/dist/collection/components/title/title.md.css +4 -39
- package/dist/collection/components/toast/animations/utils.js +1 -1
- package/dist/collection/components/toast/toast.ios.css +45 -84
- package/dist/collection/components/toast/toast.js +232 -178
- package/dist/collection/components/toast/toast.md.css +45 -84
- package/dist/collection/components/toggle/toggle.ios.css +127 -247
- package/dist/collection/components/toggle/toggle.js +175 -177
- package/dist/collection/components/toggle/toggle.md.css +127 -245
- package/dist/collection/components/toolbar/toolbar.ios.css +47 -90
- package/dist/collection/components/toolbar/toolbar.js +25 -222
- package/dist/collection/components/toolbar/toolbar.md.css +47 -90
- package/dist/collection/global/config.js +4 -6
- package/dist/collection/global/ionic-global.js +20 -242
- package/dist/collection/index.js +1 -1
- package/dist/collection/utils/animation/animation.js +3 -3
- package/dist/collection/utils/config.js +5 -4
- package/dist/collection/utils/focus-controller/index.js +1 -1
- package/dist/collection/utils/focus-trap.js +5 -16
- package/dist/collection/utils/focus-visible.js +0 -22
- package/dist/collection/utils/forms/index.js +0 -1
- package/dist/collection/utils/forms/validity.js +0 -31
- package/dist/collection/utils/framework-delegate.js +5 -9
- package/dist/collection/utils/gesture/gesture-controller.js +15 -8
- package/dist/collection/utils/gesture/index.js +10 -2
- package/dist/collection/utils/gesture/listener.js +1 -1
- package/dist/collection/utils/hardware-back-button.js +3 -18
- package/dist/collection/utils/helpers.js +5 -72
- package/dist/collection/utils/input-shims/hacks/scroll-assist.js +4 -5
- package/dist/collection/utils/input-shims/hacks/scroll-data.js +1 -2
- package/dist/collection/utils/keyboard/keyboard-controller.js +6 -8
- package/dist/collection/utils/keyboard/keyboard.js +1 -1
- package/dist/collection/utils/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 +502 -10022
- package/dist/esm/{animation-B2qdQ_ou.js → animation-CVK55yMY.js} +5 -5
- package/dist/esm/{app-globals-DZ-iIjxA.js → app-globals-Bk1_t4sH.js} +1 -1
- package/dist/esm/{button-active-BmajAby6.js → button-active-CdCqmeT0.js} +3 -3
- package/dist/esm/{capacitor-CtQSWUU0.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-sMi4BZ_l.js} +41 -31
- package/dist/esm/{framework-delegate-DO2QXccA.js → framework-delegate-BfAlKlW5.js} +6 -10
- package/dist/esm/{gesture-controller-BTEOs1at.js → gesture-controller-TXPDHL13.js} +15 -8
- package/dist/esm/{haptic-DFgKNCce.js → haptic-Cq4UAeka.js} +3 -4
- package/dist/esm/hardware-back-button-DcHMMB9j.js +115 -0
- package/dist/esm/{helpers-DfF5_wJc.js → helpers-BPcITY5s.js} +7 -73
- package/dist/esm/{index-BjaaZqVY.js → index-B9GsUd2c.js} +3 -4
- package/dist/esm/{index-B4Kq2YNk.js → index-BvabGprD.js} +1 -2
- package/dist/esm/{index-C0EQceqV.js → index-D1CQtpUN.js} +9 -48
- package/dist/esm/{index-Mq5pCWmZ.js → index-DDa8edAS.js} +3 -3
- package/dist/esm/{index-KxK0gcRp.js → index-DcUt1pPn.js} +2 -2
- package/dist/esm/{index-CfgBF1SE.js → index-DppOcPFQ.js} +10 -4
- package/dist/esm/{index-BIUWGRUl.js → index-DqVqy_Cy.js} +5 -5
- package/dist/esm/index-ZjP4CjeZ.js +7 -0
- package/dist/esm/{index-Di034G4O.js → index-ks-BjikL.js} +12 -13
- package/dist/esm/index.js +17 -16
- package/dist/esm/{input-shims-DvNNw70a.js → input-shims-C1dCKVMO.js} +11 -14
- package/dist/esm/{input.utils-_LkBfBWt.js → input.utils-Dd5xwlP6.js} +4 -5
- package/dist/esm/ion-accordion_2.entry.js +378 -382
- package/dist/esm/ion-action-sheet.entry.js +178 -86
- package/dist/esm/ion-alert.entry.js +250 -125
- package/dist/esm/ion-app_8.entry.js +459 -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 +2765 -0
- package/dist/esm/ion-fab_3.entry.js +154 -112
- package/dist/esm/ion-img.entry.js +34 -16
- package/dist/esm/ion-infinite-scroll_2.entry.js +108 -156
- package/dist/esm/ion-input-otp.entry.js +435 -437
- package/dist/esm/ion-input-password-toggle.entry.js +40 -64
- package/dist/esm/ion-input.entry.js +330 -276
- package/dist/esm/ion-item-option_3.entry.js +136 -511
- package/dist/esm/ion-item_8.entry.js +217 -189
- package/dist/esm/ion-loading.entry.js +151 -68
- package/dist/esm/ion-menu_3.entry.js +181 -137
- package/dist/esm/ion-modal.entry.js +491 -448
- package/dist/esm/ion-nav_2.entry.js +103 -163
- package/dist/esm/ion-picker-column-option.entry.js +39 -39
- package/dist/esm/ion-picker-column.entry.js +421 -409
- package/dist/esm/ion-picker.entry.js +405 -400
- package/dist/esm/ion-popover.entry.js +323 -211
- package/dist/esm/ion-progress-bar.entry.js +35 -47
- package/dist/esm/ion-radio_2.entry.js +216 -161
- package/dist/esm/ion-range.entry.js +307 -249
- package/dist/esm/ion-refresher_2.entry.js +174 -121
- package/dist/esm/ion-reorder_2.entry.js +59 -53
- package/dist/esm/ion-ripple-effect.entry.js +18 -26
- package/dist/esm/ion-route_4.entry.js +178 -75
- package/dist/esm/ion-searchbar.entry.js +308 -331
- package/dist/esm/ion-segment-content.entry.js +2 -2
- package/dist/esm/ion-segment-view.entry.js +28 -27
- package/dist/esm/ion-segment_2.entry.js +177 -141
- package/dist/esm/ion-select-modal.entry.js +49 -69
- package/dist/esm/ion-select_3.entry.js +482 -386
- package/dist/esm/ion-spinner.entry.js +28 -36
- package/dist/esm/ion-split-pane.entry.js +34 -25
- package/dist/esm/ion-tab-bar_2.entry.js +115 -178
- package/dist/esm/ion-tab_2.entry.js +54 -29
- package/dist/esm/ion-text.entry.js +13 -7
- package/dist/esm/ion-textarea.entry.js +274 -269
- package/dist/esm/ion-toast.entry.js +243 -148
- package/dist/esm/ion-toggle.entry.js +184 -187
- package/dist/esm/ionic-global-5bZ91kOL.js +151 -0
- package/dist/esm/ionic.js +5 -5
- package/dist/esm/{ios.transition-CgScDbsb.js → ios.transition-OcwIGkv9.js} +14 -20
- package/dist/esm/{item-multiple-inputs-C6onMFOo.js → item-multiple-inputs-ifd3ZrqY.js} +1 -1
- package/dist/esm/{keyboard-WJix-wcz.js → keyboard-Cj8mLJeq.js} +4 -5
- package/dist/esm/{keyboard-CyyguLDw.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-DThqYazt.js → md.transition-BetdF0bc.js} +8 -10
- package/dist/esm/{notch-controller-MTblRxjD.js → notch-controller-DBSn-Uat.js} +2 -2
- package/dist/esm/{overlay-control-label-CODBQrPj.js → overlay-control-label-BSQPZ79H.js} +11 -13
- package/dist/esm/{overlays-tv6nLsmk.js → overlays-DUzb9CQf.js} +57 -333
- package/dist/esm/{select-option-render-BlKZ2H83.js → select-option-render-DsW8svRr.js} +3 -4
- package/dist/esm/{status-tap-CoPI1M2q.js → status-tap-C-wNhea0.js} +3 -4
- package/dist/esm/{swipe-back-qmvTRnSq.js → swipe-back-D6YSgAn7.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-01eaee58.entry.js +4 -0
- package/dist/ionic/p-0c567140.entry.js +4 -0
- package/dist/ionic/p-105bb794.entry.js +4 -0
- package/dist/ionic/p-10d55bb6.entry.js +4 -0
- package/dist/ionic/p-173a87d8.entry.js +4 -0
- package/dist/ionic/p-178da672.entry.js +4 -0
- package/dist/ionic/p-1ead2857.entry.js +4 -0
- package/dist/ionic/p-224e2464.entry.js +4 -0
- package/dist/ionic/p-2268e718.entry.js +4 -0
- package/dist/ionic/p-2b5283f3.entry.js +4 -0
- package/dist/ionic/p-2b6decac.entry.js +4 -0
- package/dist/ionic/p-2da5d9c6.entry.js +4 -0
- package/dist/ionic/p-31890acd.entry.js +4 -0
- package/dist/ionic/p-34ef7425.entry.js +4 -0
- package/dist/ionic/p-34f7c1d8.entry.js +4 -0
- package/dist/ionic/p-3b1e6fa4.entry.js +4 -0
- package/dist/ionic/p-42fefd2c.entry.js +4 -0
- package/dist/ionic/p-440cd489.entry.js +4 -0
- package/dist/ionic/p-460da491.entry.js +4 -0
- package/dist/ionic/p-53f680e8.entry.js +4 -0
- package/dist/ionic/p-57ba508f.entry.js +4 -0
- package/dist/ionic/p-599e5a75.entry.js +4 -0
- package/dist/ionic/p-5f670a9e.entry.js +4 -0
- package/dist/ionic/p-63502088.entry.js +4 -0
- package/dist/ionic/p-6e6bf45d.entry.js +4 -0
- package/dist/ionic/p-6f0b6a48.entry.js +4 -0
- package/dist/ionic/p-7438c462.entry.js +4 -0
- package/dist/ionic/p-747716e7.entry.js +4 -0
- package/dist/ionic/p-7759fcaf.entry.js +4 -0
- package/dist/ionic/p-7a8338e2.entry.js +4 -0
- package/dist/ionic/p-80f9f1dc.entry.js +4 -0
- package/dist/ionic/p-83ff4dcb.entry.js +4 -0
- package/dist/ionic/p-86f03895.entry.js +4 -0
- package/dist/ionic/p-87b8d70e.entry.js +4 -0
- package/dist/ionic/p-888236bf.entry.js +4 -0
- package/dist/ionic/p-8a92ca23.entry.js +4 -0
- package/dist/ionic/p-8c9af4ad.entry.js +4 -0
- package/dist/ionic/p-9669f546.entry.js +4 -0
- package/dist/ionic/p-9bcd8b74.entry.js +4 -0
- package/dist/ionic/p-B-FxiyeI.js +4 -0
- package/dist/ionic/p-B2trYd8K.js +4 -0
- package/dist/ionic/p-BMPN55of.js +4 -0
- package/dist/ionic/p-BNKr91bi.js +4 -0
- package/dist/ionic/p-BSQPZ79H.js +4 -0
- package/dist/ionic/p-BSzG1VcX.js +4 -0
- package/dist/ionic/p-BVgBHS96.js +4 -0
- package/dist/ionic/p-BX2IOAqC.js +4 -0
- package/dist/ionic/p-BhamHSw3.js +4 -0
- package/dist/ionic/p-BmVRXR1y.js +4 -0
- package/dist/ionic/p-BufXJ_A8.js +4 -0
- package/dist/ionic/p-BvabGprD.js +4 -0
- package/dist/ionic/p-C73UOs4m.js +4 -0
- package/dist/ionic/p-CHpEzg-o.js +4 -0
- package/dist/ionic/p-CIGNaXM1.js +4 -0
- package/{components/p-r_CFQBc1.js → dist/ionic/p-CUSwMljM.js} +1 -1
- package/dist/ionic/p-CeOSrSdu.js +4 -0
- package/dist/ionic/p-CfkB7_FV.js +4 -0
- package/dist/ionic/p-CmKf4pgI.js +4 -0
- package/dist/ionic/p-CnM-CMw7.js +4 -0
- package/dist/ionic/p-D1CQtpUN.js +5 -0
- package/dist/ionic/p-D5t_-oMk.js +4 -0
- package/dist/ionic/p-DJztqcrH.js +4 -0
- package/dist/ionic/p-DVYb1IVZ.js +4 -0
- package/dist/ionic/p-DWCzVL3Y.js +4 -0
- package/dist/ionic/p-DfJ-SVJf.js +4 -0
- package/dist/ionic/p-DmXrLsoD.js +4 -0
- package/dist/ionic/p-DtLHAMFW.js +4 -0
- package/dist/ionic/p-Dtlob2JL.js +4 -0
- package/dist/ionic/p-F7ipfyOA.js +4 -0
- package/dist/ionic/p-I9ETXg5W.js +4 -0
- package/dist/ionic/{p-oUgyLDGL.js → p-IaXd5VMv.js} +1 -1
- 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-Cipl19Qe.js → p-aL0G45tD.js} +1 -1
- package/dist/ionic/p-acbb97c3.entry.js +4 -0
- package/dist/ionic/p-aeb85531.entry.js +4 -0
- package/dist/ionic/p-b157f80d.entry.js +4 -0
- package/dist/ionic/p-b158de5d.entry.js +4 -0
- package/dist/ionic/p-b40c9715.entry.js +4 -0
- package/dist/ionic/p-b852101e.entry.js +4 -0
- package/dist/ionic/p-byZM6qHV.js +4 -0
- package/dist/ionic/p-c0d81bee.entry.js +4 -0
- package/dist/ionic/p-c8a327fb.entry.js +4 -0
- package/dist/ionic/p-d42ae99f.entry.js +4 -0
- package/dist/ionic/p-d47ff529.entry.js +4 -0
- package/dist/ionic/p-eHi73fGE.js +4 -0
- package/dist/ionic/p-eeabce92.entry.js +4 -0
- package/dist/ionic/p-efc66d77.entry.js +4 -0
- package/dist/ionic/p-f6d203dc.entry.js +4 -0
- package/dist/ionic/p-u2a770LZ.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 +6 -35
- package/dist/types/components/input-otp/input-otp.d.ts +0 -37
- package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +0 -2
- package/dist/types/components/item/item.d.ts +4 -11
- package/dist/types/components/item-divider/item-divider.d.ts +1 -2
- package/dist/types/components/item-group/item-group.d.ts +0 -4
- package/dist/types/components/item-option/item-option.d.ts +1 -18
- package/dist/types/components/item-options/item-options.d.ts +0 -4
- package/dist/types/components/item-sliding/item-sliding.d.ts +1 -47
- package/dist/types/components/item-sliding/test/test.utils.d.ts +0 -13
- package/dist/types/components/label/label.d.ts +1 -2
- package/dist/types/components/list/list.d.ts +1 -15
- package/dist/types/components/list-header/list-header.d.ts +1 -2
- package/dist/types/components/loading/loading-interface.d.ts +7 -2
- package/dist/types/components/loading/loading.d.ts +2 -3
- package/dist/types/components/menu/menu.d.ts +0 -3
- package/dist/types/components/menu-button/menu-button.d.ts +1 -3
- package/dist/types/components/menu-toggle/menu-toggle.d.ts +0 -3
- package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
- package/dist/types/components/modal/modal-interface.d.ts +7 -4
- package/dist/types/components/modal/modal.d.ts +12 -15
- package/dist/types/components/nav/nav-interface.d.ts +1 -10
- package/dist/types/components/nav/nav.d.ts +3 -27
- package/dist/types/components/nav-link/nav-link.d.ts +0 -4
- package/dist/types/components/note/note.d.ts +1 -2
- package/dist/types/components/picker/picker.d.ts +1 -2
- package/dist/types/components/picker-column/picker-column.d.ts +1 -2
- package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -4
- package/dist/types/components/popover/popover-interface.d.ts +6 -3
- package/dist/types/components/popover/popover.d.ts +5 -6
- package/dist/types/components/progress-bar/progress-bar.d.ts +1 -10
- package/dist/types/components/radio/radio.d.ts +1 -2
- package/dist/types/components/radio-group/radio-group.d.ts +0 -12
- package/dist/types/components/range/range.d.ts +1 -2
- package/dist/types/components/refresher/refresher.d.ts +1 -2
- package/dist/types/components/refresher-content/refresher-content.d.ts +0 -4
- package/dist/types/components/reorder/reorder.d.ts +0 -9
- package/dist/types/components/reorder-group/reorder-group.d.ts +0 -4
- package/dist/types/components/ripple-effect/ripple-effect.d.ts +0 -4
- package/dist/types/components/route/route.d.ts +1 -5
- package/dist/types/components/router/router.d.ts +0 -4
- package/dist/types/components/router-link/router-link.d.ts +0 -4
- package/dist/types/components/router-outlet/router-outlet.d.ts +8 -4
- package/dist/types/components/row/row.d.ts +0 -4
- package/dist/types/components/searchbar/searchbar.d.ts +11 -57
- package/dist/types/components/segment/segment.d.ts +1 -2
- package/dist/types/components/segment-button/segment-button.d.ts +1 -2
- package/dist/types/components/select/select.d.ts +14 -49
- package/dist/types/components/select-modal/select-modal.d.ts +0 -8
- package/dist/types/components/select-option/select-option.d.ts +4 -7
- package/dist/types/components/select-popover/select-popover.d.ts +0 -3
- package/dist/types/components/skeleton-text/skeleton-text.d.ts +0 -4
- package/dist/types/components/spinner/spinner.d.ts +0 -15
- package/dist/types/components/split-pane/split-pane.d.ts +0 -4
- package/dist/types/components/tab/tab.d.ts +0 -4
- package/dist/types/components/tab-bar/tab-bar-interface.d.ts +0 -1
- package/dist/types/components/tab-bar/tab-bar.d.ts +3 -41
- package/dist/types/components/tab-button/tab-button.d.ts +1 -12
- package/dist/types/components/tabs/tabs.d.ts +0 -3
- package/dist/types/components/text/text.d.ts +1 -2
- package/dist/types/components/textarea/textarea.d.ts +4 -53
- package/dist/types/components/thumbnail/thumbnail.d.ts +0 -4
- package/dist/types/components/title/title.d.ts +0 -4
- package/dist/types/components/toast/animations/utils.d.ts +2 -2
- package/dist/types/components/toast/toast-interface.d.ts +7 -3
- package/dist/types/components/toast/toast.d.ts +2 -19
- package/dist/types/components/toggle/toggle.d.ts +1 -15
- package/dist/types/components/toolbar/toolbar.d.ts +3 -43
- package/dist/types/components.d.ts +263 -2171
- package/dist/types/global/ionic-global.d.ts +2 -28
- package/dist/types/index.d.ts +1 -1
- package/dist/types/interface.d.ts +0 -4
- package/dist/types/utils/config.d.ts +2 -114
- package/dist/types/utils/focus-trap.d.ts +1 -1
- package/dist/types/utils/focus-visible.d.ts +0 -13
- package/dist/types/utils/forms/index.d.ts +0 -1
- package/dist/types/utils/forms/validity.d.ts +0 -7
- package/dist/types/utils/helpers.d.ts +0 -22
- package/dist/types/utils/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 +10246 -12016
- package/hydrate/index.mjs +10246 -12016
- 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-3VXQGlP7.js +0 -4
- package/components/p-B5krYTuW.js +0 -4
- package/components/p-B6a9IJZ0.js +0 -4
- package/components/p-BArGQkuV.js +0 -4
- package/components/p-BDqjX7Z_.js +0 -4
- package/components/p-BE21dB_a.js +0 -4
- package/components/p-BG-Q139o.js +0 -4
- package/components/p-BPxMDyfV.js +0 -4
- package/components/p-BT8fsdEQ.js +0 -4
- package/components/p-BTEOs1at.js +0 -4
- package/components/p-BWH3I3Dl.js +0 -4
- package/components/p-BYSs-jZz.js +0 -4
- package/components/p-BbVhJs-a.js +0 -4
- package/components/p-Bc6odfwr.js +0 -4
- package/components/p-BjW8SOqw.js +0 -4
- package/components/p-BkWXBpOv.js +0 -4
- package/components/p-Bt9GDUv-.js +0 -4
- package/components/p-BvNVjXg4.js +0 -4
- package/components/p-BwKpO3Is.js +0 -4
- package/components/p-BwlU9cX_.js +0 -4
- package/components/p-Bz4JFPmj.js +0 -4
- package/components/p-C53feagD.js +0 -4
- package/components/p-CBxy8OYq.js +0 -4
- package/components/p-CGdeq57o.js +0 -4
- package/components/p-CHPdgLHZ.js +0 -4
- package/components/p-CMZlqiT7.js +0 -4
- package/components/p-CMzkbes2.js +0 -4
- package/components/p-CODBQrPj.js +0 -4
- package/components/p-COPA4jD9.js +0 -4
- package/components/p-CPnW-OVE.js +0 -4
- package/components/p-CRmBpp1v.js +0 -4
- package/components/p-CT3P-wjL.js +0 -4
- package/components/p-CVYFPBs-.js +0 -4
- package/components/p-Cc3oC60a.js +0 -4
- package/components/p-CjY4Hs1X.js +0 -4
- package/components/p-Cl0B-RWe.js +0 -4
- package/components/p-CrYjk-l3.js +0 -4
- package/components/p-CsUcWJuB.js +0 -4
- package/components/p-D0Iqw6OZ.js +0 -4
- package/components/p-D0fnq0lf.js +0 -4
- package/components/p-D1kNlmYt.js +0 -4
- package/components/p-D1t981Ih.js +0 -4
- package/components/p-D9C5yWpF.js +0 -4
- package/components/p-DDNG-IsR.js +0 -4
- package/components/p-DJSp7Si8.js +0 -4
- package/components/p-DL5wyRub.js +0 -4
- package/components/p-DXKZXLjV.js +0 -4
- package/components/p-DaJxRxSQ.js +0 -4
- package/components/p-Dhi5xtNS.js +0 -4
- package/components/p-Do8qRv6r.js +0 -4
- package/components/p-Dt--PjSF.js +0 -4
- package/components/p-DylrHLJF.js +0 -4
- package/components/p-FCT_QxQG.js +0 -4
- package/components/p-OCde3AhO.js +0 -4
- package/components/p-OPFCgx0m.js +0 -4
- package/components/p-PCVpe9Tq.js +0 -4
- package/components/p-Rkm2AOZ2.js +0 -4
- package/components/p-WSZErkoI.js +0 -4
- package/components/p-bHSMZulH.js +0 -4
- package/components/p-fIOYmaqA.js +0 -4
- package/components/p-hNcst9K9.js +0 -4
- package/components/p-hW_3y-wm.js +0 -4
- package/components/p-nLMDgmzd.js +0 -4
- package/components/p-oI96rnOD.js +0 -4
- package/components/p-vXpMhGrs.js +0 -4
- package/components/p-zBZRdRDd.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-DGX8X5js.js +0 -45
- package/dist/cjs/ion-datetime_3.cjs.entry.js +0 -3239
- 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-QoUqobrQ.js +0 -519
- package/dist/cjs/list-a-7GSA6K.js +0 -8
- package/dist/cjs/scroll-hide-controller-G9HOmmhN.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-C7AAVMKK.js +0 -43
- package/dist/esm/ion-datetime_3.entry.js +0 -3235
- 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-BpkTponr.js +0 -508
- package/dist/esm/list-Dhi5xtNS.js +0 -6
- package/dist/esm/scroll-hide-controller-CUNW7EpD.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-05ce9821.entry.js +0 -4
- package/dist/ionic/p-085b8cdf.entry.js +0 -4
- package/dist/ionic/p-0ef6bfc4.entry.js +0 -4
- package/dist/ionic/p-18b7771e.entry.js +0 -4
- package/dist/ionic/p-19f34fe5.entry.js +0 -4
- package/dist/ionic/p-1b6e3914.entry.js +0 -4
- package/dist/ionic/p-2740db6e.entry.js +0 -4
- package/dist/ionic/p-2a1abbb1.entry.js +0 -4
- package/dist/ionic/p-2d9c681b.entry.js +0 -4
- package/dist/ionic/p-2fba8f15.entry.js +0 -4
- package/dist/ionic/p-3886bfbe.entry.js +0 -4
- package/dist/ionic/p-3ab9c35a.entry.js +0 -4
- package/dist/ionic/p-3b4c5cb5.entry.js +0 -4
- package/dist/ionic/p-3cfb4ff2.entry.js +0 -4
- package/dist/ionic/p-41afaf15.entry.js +0 -4
- package/dist/ionic/p-47b9dac0.entry.js +0 -4
- package/dist/ionic/p-54419365.entry.js +0 -4
- package/dist/ionic/p-54b7972e.entry.js +0 -4
- package/dist/ionic/p-602cf876.entry.js +0 -4
- package/dist/ionic/p-678ee14a.entry.js +0 -4
- package/dist/ionic/p-679c1448.entry.js +0 -4
- package/dist/ionic/p-68ea8ed1.entry.js +0 -4
- package/dist/ionic/p-6e1ec775.entry.js +0 -4
- package/dist/ionic/p-745d6b2b.entry.js +0 -4
- package/dist/ionic/p-77254b78.entry.js +0 -4
- package/dist/ionic/p-7k7Q1A38.js +0 -4
- package/dist/ionic/p-898691b3.entry.js +0 -4
- package/dist/ionic/p-89fedfda.entry.js +0 -4
- package/dist/ionic/p-8cf82b85.entry.js +0 -4
- package/dist/ionic/p-8d5fd199.entry.js +0 -4
- package/dist/ionic/p-9087119f.entry.js +0 -4
- package/dist/ionic/p-9c508a22.entry.js +0 -4
- package/dist/ionic/p-B4Kq2YNk.js +0 -4
- package/dist/ionic/p-BDSH5ckF.js +0 -4
- package/dist/ionic/p-BDqjX7Z_.js +0 -4
- package/dist/ionic/p-BFy_BK46.js +0 -4
- package/dist/ionic/p-BTEOs1at.js +0 -4
- package/dist/ionic/p-BYSs-jZz.js +0 -4
- package/dist/ionic/p-BjW8SOqw.js +0 -4
- package/dist/ionic/p-BlZo7Gy-.js +0 -4
- package/dist/ionic/p-Bq8S4vhI.js +0 -4
- package/dist/ionic/p-Btc4flkw.js +0 -4
- package/dist/ionic/p-BwKpO3Is.js +0 -4
- package/dist/ionic/p-C0EQceqV.js +0 -5
- package/dist/ionic/p-C1I_d964.js +0 -4
- package/dist/ionic/p-C53feagD.js +0 -4
- package/dist/ionic/p-CB91Gr9M.js +0 -4
- package/dist/ionic/p-CEkwLb3L.js +0 -4
- package/dist/ionic/p-CJsJQPQD.js +0 -4
- package/dist/ionic/p-CODBQrPj.js +0 -4
- package/dist/ionic/p-Ch7MBNn_.js +0 -4
- package/dist/ionic/p-Cl0B-RWe.js +0 -4
- package/dist/ionic/p-CnAWnbNK.js +0 -4
- package/dist/ionic/p-D1t981Ih.js +0 -4
- package/dist/ionic/p-D4MT1z4_.js +0 -4
- package/dist/ionic/p-D4veLKCq.js +0 -4
- package/dist/ionic/p-DF7ubVci.js +0 -4
- package/dist/ionic/p-DMaSfupH.js +0 -4
- package/dist/ionic/p-DQDmksdT.js +0 -4
- package/dist/ionic/p-DTsDGZPd.js +0 -4
- package/dist/ionic/p-DaJxRxSQ.js +0 -4
- package/dist/ionic/p-DdCaKRle.js +0 -4
- package/dist/ionic/p-Dhi5xtNS.js +0 -4
- package/dist/ionic/p-Dy243NXW.js +0 -4
- package/dist/ionic/p-OkgYzj-7.js +0 -4
- package/dist/ionic/p-YIsE5bNG.js +0 -4
- package/dist/ionic/p-a4af8e39.entry.js +0 -4
- package/dist/ionic/p-b2368a93.entry.js +0 -4
- package/dist/ionic/p-b275f17e.entry.js +0 -4
- package/dist/ionic/p-c5635175.entry.js +0 -4
- package/dist/ionic/p-c76d57fb.entry.js +0 -4
- package/dist/ionic/p-ca3a07b5.entry.js +0 -4
- package/dist/ionic/p-ced3cda1.entry.js +0 -4
- package/dist/ionic/p-cf22e991.entry.js +0 -4
- package/dist/ionic/p-d0c1d21d.entry.js +0 -4
- package/dist/ionic/p-d0d42da6.entry.js +0 -4
- package/dist/ionic/p-d33dfc12.entry.js +0 -4
- package/dist/ionic/p-d34bfb61.entry.js +0 -4
- package/dist/ionic/p-dbc08f67.entry.js +0 -4
- package/dist/ionic/p-dc8e0b91.entry.js +0 -4
- package/dist/ionic/p-df642ef5.entry.js +0 -4
- package/dist/ionic/p-e04d63e1.entry.js +0 -4
- package/dist/ionic/p-e3615478.entry.js +0 -4
- package/dist/ionic/p-f1810d29.entry.js +0 -4
- package/dist/ionic/p-f1a8aead.entry.js +0 -4
- package/dist/ionic/p-f69af9d3.entry.js +0 -4
- package/dist/ionic/p-f760f90e.entry.js +0 -4
- package/dist/ionic/p-f8001f8f.entry.js +0 -4
- package/dist/ionic/p-f8b63ebb.entry.js +0 -4
- package/dist/ionic/p-fIOYmaqA.js +0 -4
- package/dist/ionic/p-fc6d26ff.entry.js +0 -4
- package/dist/ionic/p-lMb_45ax.js +0 -4
- package/dist/ionic/p-vXpMhGrs.js +0 -4
- package/dist/types/components/divider/divider.d.ts +0 -20
- package/dist/types/components/footer/footer-interface.d.ts +0 -1
- package/dist/types/components/gallery/gallery-constants.d.ts +0 -9
- package/dist/types/components/gallery/gallery-interface.d.ts +0 -10
- package/dist/types/components/gallery/gallery.d.ts +0 -218
- package/dist/types/components/gallery/test/utils.d.ts +0 -3
- package/dist/types/components/gallery-item/gallery-item.d.ts +0 -33
- package/dist/types/components/header/header-interface.d.ts +0 -1
- package/dist/types/components/modal/animations/ionic.enter.d.ts +0 -6
- package/dist/types/components/modal/animations/ionic.leave.d.ts +0 -6
- package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +0 -5
- package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +0 -5
- package/dist/types/components/picker-legacy/picker-interface.d.ts +0 -52
- package/dist/types/components/picker-legacy/picker.d.ts +0 -159
- package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
- package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +0 -9
- package/dist/types/utils/css-value-validation.d.ts +0 -21
- package/dist/types/utils/forms/clear-button-press-controller.d.ts +0 -20
- package/dist/types/utils/scroll-hide-controller.d.ts +0 -56
- /package/dist/collection/components/{refresher-content/refresher-content.css → input-password-toggle/input-password-toggle.css} +0 -0
|
@@ -3,20 +3,21 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var index = require('./index-
|
|
7
|
-
var
|
|
8
|
-
var ionicGlobal = require('./ionic-global-
|
|
9
|
-
var helpers = require('./helpers-
|
|
10
|
-
var dir = require('./dir-
|
|
11
|
-
var theme = require('./theme-
|
|
12
|
-
var index$1 = require('./index-
|
|
13
|
-
var
|
|
6
|
+
var index = require('./index-CAThePqm.js');
|
|
7
|
+
var hardwareBackButton = require('./hardware-back-button-zr8zeYaH.js');
|
|
8
|
+
var ionicGlobal = require('./ionic-global-dMut1Czp.js');
|
|
9
|
+
var helpers = require('./helpers-DURh1XdY.js');
|
|
10
|
+
var dir = require('./dir-Brx7VkvP.js');
|
|
11
|
+
var theme = require('./theme-Bw0rpaNN.js');
|
|
12
|
+
var index$1 = require('./index-BnhnwL1o.js');
|
|
13
|
+
var keyboardController = require('./keyboard-controller-PtZoN2GS.js');
|
|
14
14
|
var cubicBezier = require('./cubic-bezier-DAjy1V-e.js');
|
|
15
|
-
var frameworkDelegate = require('./framework-delegate-
|
|
15
|
+
var frameworkDelegate = require('./framework-delegate-Bdvk3JQO.js');
|
|
16
16
|
var lockController = require('./lock-controller-aDB9wrEf.js');
|
|
17
|
-
var index$2 = require('./index-
|
|
18
|
-
require('./
|
|
19
|
-
require('./
|
|
17
|
+
var index$2 = require('./index-DsoHs7Ly.js');
|
|
18
|
+
require('./index-DkNv4J_i.js');
|
|
19
|
+
require('./keyboard-cHxZlTyz.js');
|
|
20
|
+
require('./capacitor-DmA66EwP.js');
|
|
20
21
|
|
|
21
22
|
const appCss = () => `html.plt-mobile ion-app{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.plt-mobile ion-app [contenteditable]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}ion-app.force-statusbar-padding{--ion-safe-area-top:20px}`;
|
|
22
23
|
|
|
@@ -24,6 +25,54 @@ const App = class {
|
|
|
24
25
|
constructor(hostRef) {
|
|
25
26
|
index.registerInstance(this, hostRef);
|
|
26
27
|
}
|
|
28
|
+
focusVisible;
|
|
29
|
+
loadTimeout;
|
|
30
|
+
get el() { return index.getElement(this); }
|
|
31
|
+
componentDidLoad() {
|
|
32
|
+
{
|
|
33
|
+
this.rIC(async () => {
|
|
34
|
+
const isHybrid = ionicGlobal.isPlatform(window, 'hybrid');
|
|
35
|
+
if (!index.config.getBoolean('_testing')) {
|
|
36
|
+
Promise.resolve().then(function () { return require('./index-Btdix80K.js'); }).then((module) => module.startTapClick(index.config));
|
|
37
|
+
}
|
|
38
|
+
if (index.config.getBoolean('statusTap', isHybrid)) {
|
|
39
|
+
Promise.resolve().then(function () { return require('./status-tap-CgjQ-6jq.js'); }).then((module) => module.startStatusTap());
|
|
40
|
+
}
|
|
41
|
+
if (index.config.getBoolean('inputShims', needInputShims())) {
|
|
42
|
+
/**
|
|
43
|
+
* needInputShims() ensures that only iOS and Android
|
|
44
|
+
* platforms proceed into this block.
|
|
45
|
+
*/
|
|
46
|
+
const platform = ionicGlobal.isPlatform(window, 'ios') ? 'ios' : 'android';
|
|
47
|
+
Promise.resolve().then(function () { return require('./input-shims-CPbWb84M.js'); }).then((module) => module.startInputShims(index.config, platform));
|
|
48
|
+
}
|
|
49
|
+
const hardwareBackButtonModule = await Promise.resolve().then(function () { return require('./hardware-back-button-zr8zeYaH.js'); });
|
|
50
|
+
const supportsHardwareBackButtonEvents = isHybrid || hardwareBackButton.shouldUseCloseWatcher();
|
|
51
|
+
if (index.config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {
|
|
52
|
+
hardwareBackButtonModule.startHardwareBackButton();
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
/**
|
|
56
|
+
* If an app sets hardwareBackButton: false and experimentalCloseWatcher: true
|
|
57
|
+
* then the close watcher will not be used.
|
|
58
|
+
*/
|
|
59
|
+
if (hardwareBackButton.shouldUseCloseWatcher()) {
|
|
60
|
+
index.printIonWarning('[ion-app] - experimentalCloseWatcher was set to `true`, but hardwareBackButton was set to `false`. Both config options must be `true` for the Close Watcher API to be used.');
|
|
61
|
+
}
|
|
62
|
+
hardwareBackButtonModule.blockHardwareBackButton();
|
|
63
|
+
}
|
|
64
|
+
if (typeof window !== 'undefined') {
|
|
65
|
+
Promise.resolve().then(function () { return require('./keyboard-Cix5TVkD.js'); }).then((module) => module.startKeyboardAssist(window));
|
|
66
|
+
}
|
|
67
|
+
Promise.resolve().then(function () { return require('./focus-visible-CCvKiLh3.js'); }).then((module) => (this.focusVisible = module.startFocusVisible()));
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
disconnectedCallback() {
|
|
72
|
+
if (this.loadTimeout) {
|
|
73
|
+
clearTimeout(this.loadTimeout);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
27
76
|
/**
|
|
28
77
|
* Used to set focus on an element that uses `ion-focusable`.
|
|
29
78
|
* Do not use this if focusing the element as a result of a keyboard
|
|
@@ -36,62 +85,83 @@ const App = class {
|
|
|
36
85
|
* @param elements An array of HTML elements to set focus on.
|
|
37
86
|
*/
|
|
38
87
|
async setFocus(elements) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
88
|
+
if (this.focusVisible) {
|
|
89
|
+
this.focusVisible.setFocus(elements);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
rIC(callback) {
|
|
93
|
+
if ('requestIdleCallback' in window) {
|
|
94
|
+
window.requestIdleCallback(callback);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
this.loadTimeout = setTimeout(callback, 32);
|
|
98
|
+
}
|
|
44
99
|
}
|
|
45
100
|
render() {
|
|
46
|
-
const
|
|
47
|
-
return (index.h(index.Host, { key: '
|
|
48
|
-
[
|
|
101
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
102
|
+
return (index.h(index.Host, { key: '77a7459d3e42b3715a5a7e1cf468e2ebc99e54bb', class: {
|
|
103
|
+
[mode]: true,
|
|
49
104
|
'ion-page': true,
|
|
50
105
|
'force-statusbar-padding': index.config.getBoolean('_forceStatusbarPadding'),
|
|
51
106
|
} }));
|
|
52
107
|
}
|
|
53
|
-
|
|
108
|
+
};
|
|
109
|
+
const needInputShims = () => {
|
|
110
|
+
/**
|
|
111
|
+
* iOS always needs input shims
|
|
112
|
+
*/
|
|
113
|
+
const needsShimsIOS = ionicGlobal.isPlatform(window, 'ios') && ionicGlobal.isPlatform(window, 'mobile');
|
|
114
|
+
if (needsShimsIOS) {
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Android only needs input shims when running
|
|
119
|
+
* in the browser and only if the browser is using the
|
|
120
|
+
* new Chrome 108+ resize behavior: https://developer.chrome.com/blog/viewport-resize-behavior/
|
|
121
|
+
*/
|
|
122
|
+
const isAndroidMobileWeb = ionicGlobal.isPlatform(window, 'android') && ionicGlobal.isPlatform(window, 'mobileweb');
|
|
123
|
+
if (isAndroidMobileWeb) {
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
return false;
|
|
54
127
|
};
|
|
55
128
|
App.style = appCss();
|
|
56
129
|
|
|
57
|
-
const
|
|
130
|
+
const buttonsIosCss = () => `.sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:5px;--padding-end:5px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-ios-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast);--background-activated:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.65em;line-height:0.67}`;
|
|
58
131
|
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
const buttonsMdCss = () => `.sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0)}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-h{z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:8px;--padding-end:8px;--box-shadow:none;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-md-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:3rem;height:3rem}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}`;
|
|
132
|
+
const buttonsMdCss = () => `.sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:8px;--padding-end:8px;--box-shadow:none;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-md-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:3rem;height:3rem}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}`;
|
|
62
133
|
|
|
63
134
|
const Buttons = class {
|
|
64
135
|
constructor(hostRef) {
|
|
65
136
|
index.registerInstance(this, hostRef);
|
|
66
|
-
/**
|
|
67
|
-
* If true, buttons will disappear when its
|
|
68
|
-
* parent toolbar has fully collapsed if the toolbar
|
|
69
|
-
* is not the first toolbar. If the toolbar is the
|
|
70
|
-
* first toolbar, the buttons will be hidden and will
|
|
71
|
-
* only be shown once all toolbars have fully collapsed.
|
|
72
|
-
*
|
|
73
|
-
* Only applies in the `ios` theme with `collapse` set to
|
|
74
|
-
* `true` on `ion-header`.
|
|
75
|
-
*
|
|
76
|
-
* Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
|
|
77
|
-
*/
|
|
78
|
-
this.collapse = false;
|
|
79
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* If true, buttons will disappear when its
|
|
140
|
+
* parent toolbar has fully collapsed if the toolbar
|
|
141
|
+
* is not the first toolbar. If the toolbar is the
|
|
142
|
+
* first toolbar, the buttons will be hidden and will
|
|
143
|
+
* only be shown once all toolbars have fully collapsed.
|
|
144
|
+
*
|
|
145
|
+
* Only applies in `ios` mode with `collapse` set to
|
|
146
|
+
* `true` on `ion-header`.
|
|
147
|
+
*
|
|
148
|
+
* Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
|
|
149
|
+
*/
|
|
150
|
+
collapse = false;
|
|
80
151
|
render() {
|
|
81
|
-
const
|
|
82
|
-
return (index.h(index.Host, { key: '
|
|
83
|
-
[
|
|
152
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
153
|
+
return (index.h(index.Host, { key: '58c1fc5eb867d0731c63549b1ccb3ec3bbbe6e1b', class: {
|
|
154
|
+
[mode]: true,
|
|
84
155
|
['buttons-collapse']: this.collapse,
|
|
85
|
-
} }, index.h("slot", { key: '
|
|
156
|
+
} }, index.h("slot", { key: '0c8f95b9840c8fa0c4e50be84c5159620a3eb5c8' })));
|
|
86
157
|
}
|
|
87
158
|
};
|
|
88
159
|
Buttons.style = {
|
|
89
|
-
ionic: buttonsIonicCss(),
|
|
90
160
|
ios: buttonsIosCss(),
|
|
91
161
|
md: buttonsMdCss()
|
|
92
162
|
};
|
|
93
163
|
|
|
94
|
-
const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{
|
|
164
|
+
const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--internal-content-safe-area-padding-bottom, 0px));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:""}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}`;
|
|
95
165
|
|
|
96
166
|
const Content = class {
|
|
97
167
|
constructor(hostRef) {
|
|
@@ -99,65 +169,96 @@ const Content = class {
|
|
|
99
169
|
this.ionScrollStart = index.createEvent(this, "ionScrollStart", 7);
|
|
100
170
|
this.ionScroll = index.createEvent(this, "ionScroll", 7);
|
|
101
171
|
this.ionScrollEnd = index.createEvent(this, "ionScrollEnd", 7);
|
|
102
|
-
this.watchDog = null;
|
|
103
|
-
this.isScrolling = false;
|
|
104
|
-
this.lastScroll = 0;
|
|
105
|
-
this.queued = false;
|
|
106
|
-
this.cTop = -1;
|
|
107
|
-
this.cBottom = -1;
|
|
108
|
-
this.isMainContent = true;
|
|
109
|
-
this.resizeTimeout = null;
|
|
110
|
-
this.inheritedAttributes = {};
|
|
111
|
-
this.tabsElement = null;
|
|
112
|
-
// Detail is used in a hot loop in the scroll event, by allocating it here
|
|
113
|
-
// V8 will be able to inline any read/write to it since it's a monomorphic class.
|
|
114
|
-
// https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html
|
|
115
|
-
this.detail = {
|
|
116
|
-
scrollTop: 0,
|
|
117
|
-
scrollLeft: 0,
|
|
118
|
-
type: 'scroll',
|
|
119
|
-
event: undefined,
|
|
120
|
-
startX: 0,
|
|
121
|
-
startY: 0,
|
|
122
|
-
startTime: 0,
|
|
123
|
-
currentX: 0,
|
|
124
|
-
currentY: 0,
|
|
125
|
-
velocityX: 0,
|
|
126
|
-
velocityY: 0,
|
|
127
|
-
deltaX: 0,
|
|
128
|
-
deltaY: 0,
|
|
129
|
-
currentTime: 0,
|
|
130
|
-
data: undefined,
|
|
131
|
-
isScrolling: true,
|
|
132
|
-
};
|
|
133
|
-
/**
|
|
134
|
-
* If `true`, the content will scroll behind the headers
|
|
135
|
-
* and footers. This effect can easily be seen by setting the toolbar
|
|
136
|
-
* to transparent.
|
|
137
|
-
*/
|
|
138
|
-
this.fullscreen = false;
|
|
139
|
-
/**
|
|
140
|
-
* Controls where the fixed content is placed relative to the main content
|
|
141
|
-
* in the DOM. This can be used to control the order in which fixed elements
|
|
142
|
-
* receive keyboard focus.
|
|
143
|
-
* For example, if a FAB in the fixed slot should receive keyboard focus before
|
|
144
|
-
* the main page content, set this property to `'before'`.
|
|
145
|
-
*/
|
|
146
|
-
this.fixedSlotPlacement = 'after';
|
|
147
|
-
/**
|
|
148
|
-
* If you want to enable the content scrolling in the X axis, set this property to `true`.
|
|
149
|
-
*/
|
|
150
|
-
this.scrollX = false;
|
|
151
|
-
/**
|
|
152
|
-
* If you want to disable the content scrolling in the Y axis, set this property to `false`.
|
|
153
|
-
*/
|
|
154
|
-
this.scrollY = true;
|
|
155
|
-
/**
|
|
156
|
-
* Because of performance reasons, ionScroll events are disabled by default, in order to enable them
|
|
157
|
-
* and start listening from (ionScroll), set this property to `true`.
|
|
158
|
-
*/
|
|
159
|
-
this.scrollEvents = false;
|
|
160
172
|
}
|
|
173
|
+
watchDog = null;
|
|
174
|
+
isScrolling = false;
|
|
175
|
+
lastScroll = 0;
|
|
176
|
+
queued = false;
|
|
177
|
+
cTop = -1;
|
|
178
|
+
cBottom = -1;
|
|
179
|
+
scrollEl;
|
|
180
|
+
backgroundContentEl;
|
|
181
|
+
isMainContent = true;
|
|
182
|
+
resizeTimeout = null;
|
|
183
|
+
inheritedAttributes = {};
|
|
184
|
+
tabsElement = null;
|
|
185
|
+
tabsLoadCallback;
|
|
186
|
+
// Detail is used in a hot loop in the scroll event, by allocating it here
|
|
187
|
+
// V8 will be able to inline any read/write to it since it's a monomorphic class.
|
|
188
|
+
// https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html
|
|
189
|
+
detail = {
|
|
190
|
+
scrollTop: 0,
|
|
191
|
+
scrollLeft: 0,
|
|
192
|
+
type: 'scroll',
|
|
193
|
+
event: undefined,
|
|
194
|
+
startX: 0,
|
|
195
|
+
startY: 0,
|
|
196
|
+
startTime: 0,
|
|
197
|
+
currentX: 0,
|
|
198
|
+
currentY: 0,
|
|
199
|
+
velocityX: 0,
|
|
200
|
+
velocityY: 0,
|
|
201
|
+
deltaX: 0,
|
|
202
|
+
deltaY: 0,
|
|
203
|
+
currentTime: 0,
|
|
204
|
+
data: undefined,
|
|
205
|
+
isScrolling: true,
|
|
206
|
+
};
|
|
207
|
+
get el() { return index.getElement(this); }
|
|
208
|
+
/**
|
|
209
|
+
* The color to use from your application's color palette.
|
|
210
|
+
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
211
|
+
* For more information on colors, see [theming](/docs/theming/basics).
|
|
212
|
+
*/
|
|
213
|
+
color;
|
|
214
|
+
/**
|
|
215
|
+
* If `true`, the content will scroll behind the headers
|
|
216
|
+
* and footers. This effect can easily be seen by setting the toolbar
|
|
217
|
+
* to transparent.
|
|
218
|
+
*/
|
|
219
|
+
fullscreen = false;
|
|
220
|
+
/**
|
|
221
|
+
* Controls where the fixed content is placed relative to the main content
|
|
222
|
+
* in the DOM. This can be used to control the order in which fixed elements
|
|
223
|
+
* receive keyboard focus.
|
|
224
|
+
* For example, if a FAB in the fixed slot should receive keyboard focus before
|
|
225
|
+
* the main page content, set this property to `'before'`.
|
|
226
|
+
*/
|
|
227
|
+
fixedSlotPlacement = 'after';
|
|
228
|
+
/**
|
|
229
|
+
* If `true` and the content does not cause an overflow scroll, the scroll interaction will cause a bounce.
|
|
230
|
+
* If the content exceeds the bounds of ionContent, nothing will change.
|
|
231
|
+
* Note, this does not disable the system bounce on iOS. That is an OS level setting.
|
|
232
|
+
*/
|
|
233
|
+
forceOverscroll;
|
|
234
|
+
/**
|
|
235
|
+
* If you want to enable the content scrolling in the X axis, set this property to `true`.
|
|
236
|
+
*/
|
|
237
|
+
scrollX = false;
|
|
238
|
+
/**
|
|
239
|
+
* If you want to disable the content scrolling in the Y axis, set this property to `false`.
|
|
240
|
+
*/
|
|
241
|
+
scrollY = true;
|
|
242
|
+
/**
|
|
243
|
+
* Because of performance reasons, ionScroll events are disabled by default, in order to enable them
|
|
244
|
+
* and start listening from (ionScroll), set this property to `true`.
|
|
245
|
+
*/
|
|
246
|
+
scrollEvents = false;
|
|
247
|
+
/**
|
|
248
|
+
* Emitted when the scroll has started. This event is disabled by default.
|
|
249
|
+
* Set `scrollEvents` to `true` to enable.
|
|
250
|
+
*/
|
|
251
|
+
ionScrollStart;
|
|
252
|
+
/**
|
|
253
|
+
* Emitted while scrolling. This event is disabled by default.
|
|
254
|
+
* Set `scrollEvents` to `true` to enable.
|
|
255
|
+
*/
|
|
256
|
+
ionScroll;
|
|
257
|
+
/**
|
|
258
|
+
* Emitted when the scroll has ended. This event is disabled by default.
|
|
259
|
+
* Set `scrollEvents` to `true` to enable.
|
|
260
|
+
*/
|
|
261
|
+
ionScrollEnd;
|
|
161
262
|
componentWillLoad() {
|
|
162
263
|
this.inheritedAttributes = helpers.inheritAriaAttributes(this.el);
|
|
163
264
|
}
|
|
@@ -254,8 +355,9 @@ const Content = class {
|
|
|
254
355
|
this.resize();
|
|
255
356
|
}, 100);
|
|
256
357
|
}
|
|
257
|
-
shouldForceOverscroll(
|
|
358
|
+
shouldForceOverscroll() {
|
|
258
359
|
const { forceOverscroll } = this;
|
|
360
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
259
361
|
return forceOverscroll === undefined ? mode === 'ios' && ionicGlobal.isPlatform('ios') : forceOverscroll;
|
|
260
362
|
}
|
|
261
363
|
resize() {
|
|
@@ -451,13 +553,12 @@ const Content = class {
|
|
|
451
553
|
render() {
|
|
452
554
|
const { fixedSlotPlacement, inheritedAttributes, isMainContent, scrollX, scrollY, el } = this;
|
|
453
555
|
const rtl = dir.isRTL(el) ? 'rtl' : 'ltr';
|
|
454
|
-
const
|
|
455
|
-
const
|
|
456
|
-
const
|
|
457
|
-
const transitionShadow = theme$1 === 'ios';
|
|
556
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
557
|
+
const forceOverscroll = this.shouldForceOverscroll();
|
|
558
|
+
const transitionShadow = mode === 'ios';
|
|
458
559
|
this.resize();
|
|
459
|
-
return (index.h(index.Host,
|
|
460
|
-
[
|
|
560
|
+
return (index.h(index.Host, { key: '8c1bc4a4df8698d3884741eb38512dc059210c50', role: isMainContent ? 'main' : undefined, class: theme.createColorClasses(this.color, {
|
|
561
|
+
[mode]: true,
|
|
461
562
|
'content-fullscreen': this.fullscreen,
|
|
462
563
|
'content-sizing': theme.hostContext('ion-popover', this.el),
|
|
463
564
|
overscroll: forceOverscroll,
|
|
@@ -465,22 +566,20 @@ const Content = class {
|
|
|
465
566
|
}), style: {
|
|
466
567
|
'--offset-top': `${this.cTop}px`,
|
|
467
568
|
'--offset-bottom': `${this.cBottom}px`,
|
|
468
|
-
}
|
|
569
|
+
}, ...inheritedAttributes }, index.h("div", { key: '5e7412549b51ef7543d9378ecab9aac6bc461588', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? index.h("slot", { name: "fixed" }) : null, index.h("div", { key: '33f6fbf7e1e027c7cbd2dda95b487f18dc648cef', class: {
|
|
469
570
|
'inner-scroll': true,
|
|
470
571
|
'scroll-x': scrollX,
|
|
471
572
|
'scroll-y': scrollY,
|
|
472
573
|
overscroll: (scrollX || scrollY) && forceOverscroll,
|
|
473
|
-
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: '
|
|
574
|
+
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: '00c8fe7b9e73533c702273c9457d274195d54e98' })), transitionShadow ? (index.h("div", { class: "transition-effect" }, index.h("div", { class: "transition-cover" }), index.h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? index.h("slot", { name: "fixed" }) : null));
|
|
474
575
|
}
|
|
475
|
-
get el() { return index.getElement(this); }
|
|
476
576
|
};
|
|
477
577
|
const getParentElement = (el) => {
|
|
478
|
-
var _a;
|
|
479
578
|
if (el.parentElement) {
|
|
480
579
|
// normal element with a parent element
|
|
481
580
|
return el.parentElement;
|
|
482
581
|
}
|
|
483
|
-
if (
|
|
582
|
+
if (el.parentNode?.host) {
|
|
484
583
|
// shadow dom's document fragment
|
|
485
584
|
return el.parentNode.host;
|
|
486
585
|
}
|
|
@@ -496,8 +595,7 @@ const getPageElement = (el) => {
|
|
|
496
595
|
* between the popover and the edges of the screen. But if the popover contains
|
|
497
596
|
* its own page element, we should use that instead.
|
|
498
597
|
*/
|
|
499
|
-
const
|
|
500
|
-
const page = el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner, .popover-content`);
|
|
598
|
+
const page = el.closest('ion-app, ion-page, .ion-page, page-inner, .popover-content');
|
|
501
599
|
if (page) {
|
|
502
600
|
return page;
|
|
503
601
|
}
|
|
@@ -561,100 +659,34 @@ const handleFooterFade = (scrollEl, baseEl) => {
|
|
|
561
659
|
});
|
|
562
660
|
};
|
|
563
661
|
|
|
564
|
-
const
|
|
565
|
-
|
|
566
|
-
const footerIosCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}ion-footer.footer-scroll-effect-hide{-webkit-transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1), -webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1)}ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){ion-footer.footer-scroll-effect-hide,ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transition:none;transition:none}}.footer-ios ion-toolbar:first-of-type{--border-width:0.55px 0 0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.footer-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.footer-translucent-ios ion-toolbar{--opacity:0.8}}.footer-ios.ion-no-border ion-toolbar:first-of-type{--border-width:0}`;
|
|
662
|
+
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}`;
|
|
567
663
|
|
|
568
|
-
const footerMdCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-
|
|
664
|
+
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}`;
|
|
569
665
|
|
|
570
666
|
const Footer = class {
|
|
571
667
|
constructor(hostRef) {
|
|
572
668
|
index.registerInstance(this, hostRef);
|
|
573
|
-
this.keyboardCtrl = null;
|
|
574
|
-
this.keyboardCtrlPromise = null;
|
|
575
|
-
this.scrollHideCtrlPromise = null;
|
|
576
|
-
this.hasWarnedCollapse = false;
|
|
577
|
-
this.fadeSetupId = 0;
|
|
578
|
-
this.keyboardVisible = false;
|
|
579
|
-
/**
|
|
580
|
-
* If `true`, the footer will be translucent.
|
|
581
|
-
* Only applies when the theme is `"ios"` and the device supports
|
|
582
|
-
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
583
|
-
*
|
|
584
|
-
* Note: In order to scroll content behind the footer, the `fullscreen`
|
|
585
|
-
* attribute needs to be set on the content.
|
|
586
|
-
*/
|
|
587
|
-
this.translucent = false;
|
|
588
|
-
this.checkCollapsibleFooter = async () => {
|
|
589
|
-
const { scrollEffect, collapse } = this;
|
|
590
|
-
if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
|
|
591
|
-
this.hasWarnedCollapse = true;
|
|
592
|
-
index.printIonWarning(`[ion-footer] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-footer scroll-effect="${collapse}">`, this.el);
|
|
593
|
-
}
|
|
594
|
-
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
595
|
-
// Skip teardown/rebuild if the effect hasn't changed.
|
|
596
|
-
// This prevents keyboard toggles (which trigger re-renders via
|
|
597
|
-
// @State keyboardVisible) from destroying the scroll controller
|
|
598
|
-
// and resetting isHidden.
|
|
599
|
-
if (effect === this.activeEffect) {
|
|
600
|
-
return;
|
|
601
|
-
}
|
|
602
|
-
const hasHide = effect === 'hide';
|
|
603
|
-
const hasFade = effect === 'fade';
|
|
604
|
-
this.destroyCollapsibleFooter();
|
|
605
|
-
const appRootSelector = index.config.get('appRootSelector', 'ion-app');
|
|
606
|
-
const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
|
|
607
|
-
const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
|
|
608
|
-
if (hasHide && contentEl) {
|
|
609
|
-
this.activeEffect = effect;
|
|
610
|
-
await this.setupScrollEffectHide(contentEl);
|
|
611
|
-
return;
|
|
612
|
-
}
|
|
613
|
-
// fade via the deprecated `collapse` prop is iOS-only.
|
|
614
|
-
// fade via the new `scrollEffect` prop works in all themes.
|
|
615
|
-
const isModeRestricted = scrollEffect === undefined && ionicGlobal.getIonTheme(this) !== 'ios';
|
|
616
|
-
if (hasFade && !isModeRestricted) {
|
|
617
|
-
if (!contentEl) {
|
|
618
|
-
index$1.printIonContentErrorMsg(this.el);
|
|
619
|
-
return;
|
|
620
|
-
}
|
|
621
|
-
this.setupFadeFooter(contentEl);
|
|
622
|
-
this.activeEffect = effect;
|
|
623
|
-
}
|
|
624
|
-
};
|
|
625
|
-
this.setupScrollEffectHide = async (contentEl) => {
|
|
626
|
-
const setupPromise = scrollHideController.createScrollHideController(contentEl, {
|
|
627
|
-
el: this.el,
|
|
628
|
-
cssVar: '--internal-footer-hide-height',
|
|
629
|
-
hiddenClass: 'footer-scroll-hidden',
|
|
630
|
-
contentPartnerClass: 'content-footer-hide-scroll-partner',
|
|
631
|
-
contentHiddenClass: 'content-footer-hide-scroll-hidden',
|
|
632
|
-
});
|
|
633
|
-
this.scrollHideCtrlPromise = setupPromise;
|
|
634
|
-
const controller = await setupPromise;
|
|
635
|
-
if (this.scrollHideCtrlPromise === setupPromise) {
|
|
636
|
-
this.scrollHideCtrlPromise = null;
|
|
637
|
-
controller.init();
|
|
638
|
-
this.scrollHideCtrl = controller;
|
|
639
|
-
}
|
|
640
|
-
};
|
|
641
|
-
this.setupFadeFooter = async (contentEl) => {
|
|
642
|
-
const setupId = ++this.fadeSetupId;
|
|
643
|
-
const scrollEl = await index$1.getScrollElement(contentEl);
|
|
644
|
-
if (this.fadeSetupId !== setupId) {
|
|
645
|
-
return;
|
|
646
|
-
}
|
|
647
|
-
this.scrollEl = scrollEl;
|
|
648
|
-
/**
|
|
649
|
-
* Handle fading of toolbars on scroll
|
|
650
|
-
*/
|
|
651
|
-
this.contentScrollCallback = () => {
|
|
652
|
-
handleFooterFade(scrollEl, this.el);
|
|
653
|
-
};
|
|
654
|
-
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
655
|
-
handleFooterFade(scrollEl, this.el);
|
|
656
|
-
};
|
|
657
669
|
}
|
|
670
|
+
scrollEl;
|
|
671
|
+
contentScrollCallback;
|
|
672
|
+
keyboardCtrl = null;
|
|
673
|
+
keyboardCtrlPromise = null;
|
|
674
|
+
keyboardVisible = false;
|
|
675
|
+
get el() { return index.getElement(this); }
|
|
676
|
+
/**
|
|
677
|
+
* Describes the scroll effect that will be applied to the footer.
|
|
678
|
+
* Only applies in iOS mode.
|
|
679
|
+
*/
|
|
680
|
+
collapse;
|
|
681
|
+
/**
|
|
682
|
+
* If `true`, the footer will be translucent.
|
|
683
|
+
* Only applies when the mode is `"ios"` and the device supports
|
|
684
|
+
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
685
|
+
*
|
|
686
|
+
* Note: In order to scroll content behind the footer, the `fullscreen`
|
|
687
|
+
* attribute needs to be set on the content.
|
|
688
|
+
*/
|
|
689
|
+
translucent = false;
|
|
658
690
|
componentDidLoad() {
|
|
659
691
|
this.checkCollapsibleFooter();
|
|
660
692
|
}
|
|
@@ -662,7 +694,7 @@ const Footer = class {
|
|
|
662
694
|
this.checkCollapsibleFooter();
|
|
663
695
|
}
|
|
664
696
|
async connectedCallback() {
|
|
665
|
-
const promise =
|
|
697
|
+
const promise = keyboardController.createKeyboardController(async (keyboardOpen, waitForResize) => {
|
|
666
698
|
/**
|
|
667
699
|
* If the keyboard is hiding, then we need to wait
|
|
668
700
|
* for the webview to resize. Otherwise, the footer
|
|
@@ -689,7 +721,6 @@ const Footer = class {
|
|
|
689
721
|
}
|
|
690
722
|
}
|
|
691
723
|
disconnectedCallback() {
|
|
692
|
-
this.destroyCollapsibleFooter();
|
|
693
724
|
if (this.keyboardCtrlPromise) {
|
|
694
725
|
this.keyboardCtrlPromise.then((ctrl) => ctrl.destroy());
|
|
695
726
|
this.keyboardCtrlPromise = null;
|
|
@@ -699,44 +730,58 @@ const Footer = class {
|
|
|
699
730
|
this.keyboardCtrl = null;
|
|
700
731
|
}
|
|
701
732
|
}
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
733
|
+
checkCollapsibleFooter = () => {
|
|
734
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
735
|
+
if (mode !== 'ios') {
|
|
736
|
+
return;
|
|
737
|
+
}
|
|
738
|
+
const { collapse } = this;
|
|
739
|
+
const hasFade = collapse === 'fade';
|
|
740
|
+
this.destroyCollapsibleFooter();
|
|
741
|
+
if (hasFade) {
|
|
742
|
+
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
743
|
+
const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
|
|
744
|
+
if (!contentEl) {
|
|
745
|
+
index$1.printIonContentErrorMsg(this.el);
|
|
746
|
+
return;
|
|
747
|
+
}
|
|
748
|
+
this.setupFadeFooter(contentEl);
|
|
709
749
|
}
|
|
750
|
+
};
|
|
751
|
+
setupFadeFooter = async (contentEl) => {
|
|
752
|
+
const scrollEl = (this.scrollEl = await index$1.getScrollElement(contentEl));
|
|
753
|
+
/**
|
|
754
|
+
* Handle fading of toolbars on scroll
|
|
755
|
+
*/
|
|
756
|
+
this.contentScrollCallback = () => {
|
|
757
|
+
handleFooterFade(scrollEl, this.el);
|
|
758
|
+
};
|
|
759
|
+
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
760
|
+
handleFooterFade(scrollEl, this.el);
|
|
761
|
+
};
|
|
762
|
+
destroyCollapsibleFooter() {
|
|
710
763
|
if (this.scrollEl && this.contentScrollCallback) {
|
|
711
764
|
this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
|
|
712
765
|
this.contentScrollCallback = undefined;
|
|
713
766
|
}
|
|
714
767
|
}
|
|
715
768
|
render() {
|
|
716
|
-
const { translucent,
|
|
717
|
-
const
|
|
718
|
-
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
719
|
-
// fade via the deprecated `collapse` prop is iOS-only.
|
|
720
|
-
const isModeRestricted = scrollEffect === undefined && theme !== 'ios';
|
|
721
|
-
const hasHide = effect === 'hide';
|
|
722
|
-
const hasFade = effect === 'fade' && !isModeRestricted;
|
|
769
|
+
const { translucent, collapse } = this;
|
|
770
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
723
771
|
const tabs = this.el.closest('ion-tabs');
|
|
724
|
-
const tabBar = tabs
|
|
725
|
-
return (index.h(index.Host, { key: '
|
|
726
|
-
[
|
|
772
|
+
const tabBar = tabs?.querySelector(':scope > ion-tab-bar');
|
|
773
|
+
return (index.h(index.Host, { key: '71939c4bbaef5062532a99ee2e33574102a9abad', role: "contentinfo", class: {
|
|
774
|
+
[mode]: true,
|
|
727
775
|
// Used internally for styling
|
|
728
|
-
[`footer-${
|
|
776
|
+
[`footer-${mode}`]: true,
|
|
729
777
|
[`footer-translucent`]: translucent,
|
|
730
|
-
[`footer-translucent-${
|
|
778
|
+
[`footer-translucent-${mode}`]: translucent,
|
|
731
779
|
['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
} }, theme === 'ios' && translucent && index.h("div", { key: 'd78b46870cbf11c95b066d649c04ec398b66e614', class: "footer-background" }), index.h("slot", { key: '9dc34787cd29597fe1b1198db317602014ac1483' })));
|
|
780
|
+
[`footer-collapse-${collapse}`]: collapse !== undefined,
|
|
781
|
+
} }, mode === 'ios' && translucent && index.h("div", { key: '2fa14f61661c47c661cecd696176728d6eafa74f', class: "footer-background" }), index.h("slot", { key: '8e63696e7c528d5c38201e546bf08135290d0945' })));
|
|
735
782
|
}
|
|
736
|
-
get el() { return index.getElement(this); }
|
|
737
783
|
};
|
|
738
784
|
Footer.style = {
|
|
739
|
-
ionic: ionicFooterMdCss(),
|
|
740
785
|
ios: footerIosCss(),
|
|
741
786
|
md: footerMdCss()
|
|
742
787
|
};
|
|
@@ -788,14 +833,13 @@ const handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {
|
|
|
788
833
|
});
|
|
789
834
|
};
|
|
790
835
|
const setToolbarBackgroundOpacity = (headerEl, opacity) => {
|
|
791
|
-
var _a;
|
|
792
836
|
/**
|
|
793
837
|
* Fading in the backdrop opacity
|
|
794
838
|
* should happen after the large title
|
|
795
839
|
* has collapsed, so it is handled
|
|
796
840
|
* by handleHeaderFade()
|
|
797
841
|
*/
|
|
798
|
-
if (
|
|
842
|
+
if (headerEl.collapse === 'fade') {
|
|
799
843
|
return;
|
|
800
844
|
}
|
|
801
845
|
if (opacity === undefined) {
|
|
@@ -953,79 +997,57 @@ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
|
|
|
953
997
|
* Get the role type for the ion-header.
|
|
954
998
|
*
|
|
955
999
|
* @param isInsideMenu If ion-header is inside ion-menu.
|
|
956
|
-
* @
|
|
957
|
-
*
|
|
958
|
-
*
|
|
1000
|
+
* @param isCondensed If ion-header has collapse="condense".
|
|
1001
|
+
* @param mode The current mode.
|
|
1002
|
+
* @returns 'none' if inside ion-menu or if condensed in md
|
|
1003
|
+
* mode, otherwise 'banner'.
|
|
959
1004
|
*/
|
|
960
|
-
const getRoleType = (isInsideMenu) => {
|
|
1005
|
+
const getRoleType = (isInsideMenu, isCondensed, mode) => {
|
|
961
1006
|
// If the header is inside a menu, it should not have the banner role.
|
|
962
1007
|
if (isInsideMenu) {
|
|
963
1008
|
return ROLE_NONE;
|
|
964
1009
|
}
|
|
1010
|
+
/**
|
|
1011
|
+
* Only apply role="none" to `md` mode condensed headers
|
|
1012
|
+
* since the large header is never shown.
|
|
1013
|
+
*/
|
|
1014
|
+
if (isCondensed && mode === 'md') {
|
|
1015
|
+
return ROLE_NONE;
|
|
1016
|
+
}
|
|
965
1017
|
// Default to banner role.
|
|
966
1018
|
return ROLE_BANNER;
|
|
967
1019
|
};
|
|
968
1020
|
|
|
969
|
-
const
|
|
1021
|
+
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}`;
|
|
970
1022
|
|
|
971
|
-
const
|
|
972
|
-
|
|
973
|
-
const headerMdCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header:not(.header-collapse-main):has(~ion-content ion-header.header-collapse-condense){opacity:0}.header-collapse-condense-hidden{display:none}ion-header.header-scroll-effect-hide{-webkit-transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);opacity:0}@media (prefers-reduced-motion: reduce){ion-header.header-scroll-effect-hide,ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transition:none;transition:none}}ion-header{z-index:10}.header-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.header-md.header-collapse-condense{-webkit-box-shadow:none;box-shadow:none}.header-md.header-collapse-condense-inactive:not(.header-collapse-condense){-webkit-box-shadow:none;box-shadow:none}.header-md.header-collapse-fade{-webkit-box-shadow:none;box-shadow:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
|
|
1023
|
+
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}`;
|
|
974
1024
|
|
|
975
1025
|
const Header = class {
|
|
976
1026
|
constructor(hostRef) {
|
|
977
1027
|
index.registerInstance(this, hostRef);
|
|
978
|
-
this.inheritedAttributes = {};
|
|
979
|
-
this.scrollHideCtrlPromise = null;
|
|
980
|
-
this.hasWarnedCollapse = false;
|
|
981
|
-
this.fadeCondenseSetupId = 0;
|
|
982
|
-
/**
|
|
983
|
-
* If `true`, the header will have a line at the bottom.
|
|
984
|
-
* TODO(ROU-10855): add support for this prop on ios/md themes
|
|
985
|
-
*/
|
|
986
|
-
this.divider = false;
|
|
987
|
-
/**
|
|
988
|
-
* If `true`, the header will be translucent.
|
|
989
|
-
* Only applies when the theme is `"ios"` or `"ionic"` and the device supports
|
|
990
|
-
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
991
|
-
*
|
|
992
|
-
* Note: In order to scroll content behind the header, the `fullscreen`
|
|
993
|
-
* attribute needs to be set on the content.
|
|
994
|
-
*/
|
|
995
|
-
this.translucent = false;
|
|
996
|
-
this.setupScrollEffectHide = async (contentEl) => {
|
|
997
|
-
const setupPromise = scrollHideController.createScrollHideController(contentEl, {
|
|
998
|
-
el: this.el,
|
|
999
|
-
cssVar: '--internal-header-hide-height',
|
|
1000
|
-
hiddenClass: 'header-scroll-hidden',
|
|
1001
|
-
contentPartnerClass: 'content-header-hide-scroll-partner',
|
|
1002
|
-
contentHiddenClass: 'content-header-hide-scroll-hidden',
|
|
1003
|
-
});
|
|
1004
|
-
this.scrollHideCtrlPromise = setupPromise;
|
|
1005
|
-
const controller = await setupPromise;
|
|
1006
|
-
if (this.scrollHideCtrlPromise === setupPromise) {
|
|
1007
|
-
this.scrollHideCtrlPromise = null;
|
|
1008
|
-
controller.init();
|
|
1009
|
-
this.scrollHideCtrl = controller;
|
|
1010
|
-
}
|
|
1011
|
-
};
|
|
1012
|
-
this.setupFadeHeader = async (contentEl, condenseHeader) => {
|
|
1013
|
-
const setupId = ++this.fadeCondenseSetupId;
|
|
1014
|
-
const scrollEl = await index$1.getScrollElement(contentEl);
|
|
1015
|
-
if (this.fadeCondenseSetupId !== setupId) {
|
|
1016
|
-
return;
|
|
1017
|
-
}
|
|
1018
|
-
this.scrollEl = scrollEl;
|
|
1019
|
-
/**
|
|
1020
|
-
* Handle fading of toolbars on scroll
|
|
1021
|
-
*/
|
|
1022
|
-
this.contentScrollCallback = () => {
|
|
1023
|
-
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
1024
|
-
};
|
|
1025
|
-
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
1026
|
-
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
1027
|
-
};
|
|
1028
1028
|
}
|
|
1029
|
+
scrollEl;
|
|
1030
|
+
contentScrollCallback;
|
|
1031
|
+
intersectionObserver;
|
|
1032
|
+
collapsibleMainHeader;
|
|
1033
|
+
inheritedAttributes = {};
|
|
1034
|
+
get el() { return index.getElement(this); }
|
|
1035
|
+
/**
|
|
1036
|
+
* Describes the scroll effect that will be applied to the header.
|
|
1037
|
+
* Only applies in iOS mode.
|
|
1038
|
+
*
|
|
1039
|
+
* Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
|
|
1040
|
+
*/
|
|
1041
|
+
collapse;
|
|
1042
|
+
/**
|
|
1043
|
+
* If `true`, the header will be translucent.
|
|
1044
|
+
* Only applies when the mode is `"ios"` and the device supports
|
|
1045
|
+
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
1046
|
+
*
|
|
1047
|
+
* Note: In order to scroll content behind the header, the `fullscreen`
|
|
1048
|
+
* attribute needs to be set on the content.
|
|
1049
|
+
*/
|
|
1050
|
+
translucent = false;
|
|
1029
1051
|
componentWillLoad() {
|
|
1030
1052
|
this.inheritedAttributes = helpers.inheritAriaAttributes(this.el);
|
|
1031
1053
|
}
|
|
@@ -1039,63 +1061,48 @@ const Header = class {
|
|
|
1039
1061
|
this.destroyCollapsibleHeader();
|
|
1040
1062
|
}
|
|
1041
1063
|
async checkCollapsibleHeader() {
|
|
1042
|
-
const
|
|
1043
|
-
if (
|
|
1044
|
-
this.hasWarnedCollapse = true;
|
|
1045
|
-
index.printIonWarning(`[ion-header] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-header scroll-effect="${collapse}">`, this.el);
|
|
1046
|
-
}
|
|
1047
|
-
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
1048
|
-
// Skip teardown/rebuild if the effect hasn't changed.
|
|
1049
|
-
// This prevents re-renders from destroying the scroll controller
|
|
1050
|
-
// and resetting isHidden.
|
|
1051
|
-
if (effect === this.activeEffect) {
|
|
1064
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
1065
|
+
if (mode !== 'ios') {
|
|
1052
1066
|
return;
|
|
1053
1067
|
}
|
|
1054
|
-
const
|
|
1055
|
-
const hasCondense =
|
|
1056
|
-
const hasFade =
|
|
1068
|
+
const { collapse } = this;
|
|
1069
|
+
const hasCondense = collapse === 'condense';
|
|
1070
|
+
const hasFade = collapse === 'fade';
|
|
1057
1071
|
this.destroyCollapsibleHeader();
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
if (hasHide && contentEl) {
|
|
1062
|
-
this.activeEffect = effect;
|
|
1063
|
-
await this.setupScrollEffectHide(contentEl);
|
|
1064
|
-
return;
|
|
1065
|
-
}
|
|
1066
|
-
// condense/fade via the deprecated `collapse` prop are iOS-only.
|
|
1067
|
-
// condense/fade via the new `scrollEffect` prop work in all themes.
|
|
1068
|
-
const isModeRestricted = scrollEffect === undefined && ionicGlobal.getIonTheme(this) !== 'ios';
|
|
1069
|
-
if (hasCondense && !isModeRestricted) {
|
|
1072
|
+
if (hasCondense) {
|
|
1073
|
+
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
1074
|
+
const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
|
|
1070
1075
|
// Cloned elements are always needed in iOS transition
|
|
1071
1076
|
index.writeTask(() => {
|
|
1072
1077
|
const title = cloneElement('ion-title');
|
|
1073
1078
|
title.size = 'large';
|
|
1074
1079
|
cloneElement('ion-back-button');
|
|
1075
1080
|
});
|
|
1076
|
-
|
|
1077
|
-
if (didSetup) {
|
|
1078
|
-
this.activeEffect = effect;
|
|
1079
|
-
}
|
|
1081
|
+
await this.setupCondenseHeader(contentEl, pageEl);
|
|
1080
1082
|
}
|
|
1081
|
-
else if (hasFade
|
|
1083
|
+
else if (hasFade) {
|
|
1084
|
+
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
1085
|
+
const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
|
|
1082
1086
|
if (!contentEl) {
|
|
1083
1087
|
index$1.printIonContentErrorMsg(this.el);
|
|
1084
1088
|
return;
|
|
1085
1089
|
}
|
|
1086
|
-
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]
|
|
1087
|
-
this.activeEffect = effect;
|
|
1090
|
+
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
|
|
1088
1091
|
await this.setupFadeHeader(contentEl, condenseHeader);
|
|
1089
1092
|
}
|
|
1090
1093
|
}
|
|
1094
|
+
setupFadeHeader = async (contentEl, condenseHeader) => {
|
|
1095
|
+
const scrollEl = (this.scrollEl = await index$1.getScrollElement(contentEl));
|
|
1096
|
+
/**
|
|
1097
|
+
* Handle fading of toolbars on scroll
|
|
1098
|
+
*/
|
|
1099
|
+
this.contentScrollCallback = () => {
|
|
1100
|
+
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
1101
|
+
};
|
|
1102
|
+
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
1103
|
+
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
1104
|
+
};
|
|
1091
1105
|
destroyCollapsibleHeader() {
|
|
1092
|
-
this.activeEffect = undefined;
|
|
1093
|
-
this.fadeCondenseSetupId++;
|
|
1094
|
-
this.scrollHideCtrlPromise = null;
|
|
1095
|
-
if (this.scrollHideCtrl) {
|
|
1096
|
-
this.scrollHideCtrl.destroy();
|
|
1097
|
-
this.scrollHideCtrl = undefined;
|
|
1098
|
-
}
|
|
1099
1106
|
if (this.intersectionObserver) {
|
|
1100
1107
|
this.intersectionObserver.disconnect();
|
|
1101
1108
|
this.intersectionObserver = undefined;
|
|
@@ -1112,40 +1119,21 @@ const Header = class {
|
|
|
1112
1119
|
async setupCondenseHeader(contentEl, pageEl) {
|
|
1113
1120
|
if (!contentEl || !pageEl) {
|
|
1114
1121
|
index$1.printIonContentErrorMsg(this.el);
|
|
1115
|
-
return
|
|
1122
|
+
return;
|
|
1116
1123
|
}
|
|
1117
1124
|
if (typeof IntersectionObserver === 'undefined') {
|
|
1118
|
-
return
|
|
1119
|
-
}
|
|
1120
|
-
const setupId = ++this.fadeCondenseSetupId;
|
|
1121
|
-
const scrollEl = await index$1.getScrollElement(contentEl);
|
|
1122
|
-
if (this.fadeCondenseSetupId !== setupId) {
|
|
1123
|
-
return false;
|
|
1124
|
-
}
|
|
1125
|
-
this.scrollEl = scrollEl;
|
|
1126
|
-
/**
|
|
1127
|
-
* The condense effect requires an ion-title with size="large"
|
|
1128
|
-
* in the condense header. Without it, there is nothing to
|
|
1129
|
-
* collapse into the main header toolbar.
|
|
1130
|
-
*/
|
|
1131
|
-
const hasLargeTitle = this.el.querySelector('ion-title[size="large"]') !== null;
|
|
1132
|
-
if (!hasLargeTitle) {
|
|
1133
|
-
index.printIonWarning('[ion-header] - The condense scroll effect requires an <ion-title size="large"> in the condense header.', this.el);
|
|
1134
|
-
return false;
|
|
1125
|
+
return;
|
|
1135
1126
|
}
|
|
1127
|
+
this.scrollEl = await index$1.getScrollElement(contentEl);
|
|
1136
1128
|
const headers = pageEl.querySelectorAll('ion-header');
|
|
1137
|
-
this.collapsibleMainHeader = Array.from(headers).find((header) =>
|
|
1138
|
-
var _a;
|
|
1139
|
-
const effect = (_a = header.scrollEffect) !== null && _a !== void 0 ? _a : header.collapse;
|
|
1140
|
-
return effect !== 'condense';
|
|
1141
|
-
});
|
|
1129
|
+
this.collapsibleMainHeader = Array.from(headers).find((header) => header.collapse !== 'condense');
|
|
1142
1130
|
if (!this.collapsibleMainHeader) {
|
|
1143
|
-
return
|
|
1131
|
+
return;
|
|
1144
1132
|
}
|
|
1145
1133
|
const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);
|
|
1146
1134
|
const scrollHeaderIndex = createHeaderIndex(this.el);
|
|
1147
1135
|
if (!mainHeaderIndex || !scrollHeaderIndex) {
|
|
1148
|
-
return
|
|
1136
|
+
return;
|
|
1149
1137
|
}
|
|
1150
1138
|
setHeaderActive(mainHeaderIndex, false);
|
|
1151
1139
|
setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);
|
|
@@ -1177,45 +1165,30 @@ const Header = class {
|
|
|
1177
1165
|
this.collapsibleMainHeader.classList.add('header-collapse-main');
|
|
1178
1166
|
}
|
|
1179
1167
|
});
|
|
1180
|
-
return true;
|
|
1181
1168
|
}
|
|
1182
1169
|
render() {
|
|
1183
|
-
const { translucent, inheritedAttributes
|
|
1184
|
-
const
|
|
1185
|
-
const
|
|
1186
|
-
|
|
1187
|
-
const isModeRestricted = scrollEffect === undefined && theme$1 !== 'ios';
|
|
1188
|
-
const hasHide = effect === 'hide';
|
|
1189
|
-
const hasCondense = effect === 'condense' && !isModeRestricted && this.el.querySelector('ion-title[size="large"]') !== null;
|
|
1190
|
-
const hasFade = effect === 'fade' && !isModeRestricted;
|
|
1191
|
-
// The condense header should be hidden when
|
|
1192
|
-
// - deprecated collapse prop is used on non-iOS (mode restricted), or
|
|
1193
|
-
// - scrollEffect="condense" is set but no ion-title[size="large"] is present
|
|
1194
|
-
const isHiddenCondense = effect === 'condense' && !hasCondense;
|
|
1170
|
+
const { translucent, inheritedAttributes } = this;
|
|
1171
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
1172
|
+
const collapse = this.collapse || 'none';
|
|
1173
|
+
const isCondensed = collapse === 'condense';
|
|
1195
1174
|
// banner role must be at top level, so remove role if inside a menu
|
|
1196
|
-
const roleType =
|
|
1197
|
-
return (index.h(index.Host,
|
|
1198
|
-
[
|
|
1175
|
+
const roleType = getRoleType(theme.hostContext('ion-menu', this.el), isCondensed, mode);
|
|
1176
|
+
return (index.h(index.Host, { key: '863c4568cd7b8c0ec55109f193bbbaed68a1346e', role: roleType, class: {
|
|
1177
|
+
[mode]: true,
|
|
1199
1178
|
// Used internally for styling
|
|
1200
|
-
[`header-${
|
|
1179
|
+
[`header-${mode}`]: true,
|
|
1201
1180
|
[`header-translucent`]: this.translucent,
|
|
1202
|
-
[
|
|
1203
|
-
[
|
|
1204
|
-
|
|
1205
|
-
[`header-translucent-${theme$1}`]: this.translucent,
|
|
1206
|
-
['header-divider']: divider,
|
|
1207
|
-
'header-scroll-effect-hide': hasHide,
|
|
1208
|
-
} }, inheritedAttributes), theme$1 !== 'md' && translucent && index.h("div", { key: 'fd5ff245ae0166e5e1d50936cacc98c90625db48', class: "header-background" }), index.h("slot", { key: '1baa31af87b9eb6406a21073ec65afa191dfbb3d' })));
|
|
1181
|
+
[`header-collapse-${collapse}`]: true,
|
|
1182
|
+
[`header-translucent-${mode}`]: this.translucent,
|
|
1183
|
+
}, ...inheritedAttributes }, mode === 'ios' && translucent && index.h("div", { key: '25c3bdce328b0b35607d154c8b8374679313d881', class: "header-background" }), index.h("slot", { key: 'b44fab0a9be7920b9650da26117c783e751e1702' })));
|
|
1209
1184
|
}
|
|
1210
|
-
get el() { return index.getElement(this); }
|
|
1211
1185
|
};
|
|
1212
1186
|
Header.style = {
|
|
1213
|
-
ionic: headerIonicCss(),
|
|
1214
1187
|
ios: headerIosCss(),
|
|
1215
1188
|
md: headerMdCss()
|
|
1216
1189
|
};
|
|
1217
1190
|
|
|
1218
|
-
const routerOutletCss = () => `:host{
|
|
1191
|
+
const routerOutletCss = () => `:host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
|
|
1219
1192
|
|
|
1220
1193
|
const RouterOutlet = class {
|
|
1221
1194
|
constructor(hostRef) {
|
|
@@ -1223,22 +1196,47 @@ const RouterOutlet = class {
|
|
|
1223
1196
|
this.ionNavWillLoad = index.createEvent(this, "ionNavWillLoad", 7);
|
|
1224
1197
|
this.ionNavWillChange = index.createEvent(this, "ionNavWillChange", 3);
|
|
1225
1198
|
this.ionNavDidChange = index.createEvent(this, "ionNavDidChange", 3);
|
|
1226
|
-
this.lockController = lockController.createLockController();
|
|
1227
|
-
this.gestureOrAnimationInProgress = false;
|
|
1228
|
-
/**
|
|
1229
|
-
* The mode determines the platform behaviors of the component.
|
|
1230
|
-
*/
|
|
1231
|
-
this.mode = ionicGlobal.getIonMode(this);
|
|
1232
|
-
/**
|
|
1233
|
-
* If `true`, the router-outlet should animate the transition of components.
|
|
1234
|
-
*/
|
|
1235
|
-
this.animated = true;
|
|
1236
1199
|
}
|
|
1200
|
+
lockController = lockController.createLockController();
|
|
1201
|
+
activeEl;
|
|
1202
|
+
// TODO(FW-2832): types
|
|
1203
|
+
activeComponent;
|
|
1204
|
+
activeParams;
|
|
1205
|
+
gesture;
|
|
1206
|
+
ani;
|
|
1207
|
+
gestureOrAnimationInProgress = false;
|
|
1208
|
+
get el() { return index.getElement(this); }
|
|
1209
|
+
/**
|
|
1210
|
+
* The mode determines which platform styles to use.
|
|
1211
|
+
*/
|
|
1212
|
+
mode = ionicGlobal.getIonMode(this);
|
|
1213
|
+
/** @internal */
|
|
1214
|
+
delegate;
|
|
1215
|
+
/**
|
|
1216
|
+
* If `true`, the router-outlet should animate the transition of components.
|
|
1217
|
+
*/
|
|
1218
|
+
animated = true;
|
|
1219
|
+
/** This property allows to create custom transition using AnimationBuilder functions. */
|
|
1220
|
+
animation;
|
|
1221
|
+
/**
|
|
1222
|
+
* If `true`, the router-outlet should allow navigation via swipe-to-go-back gesture.
|
|
1223
|
+
* Defaults to `true` for `"ios"` mode and `false` for `"md"` mode.
|
|
1224
|
+
*/
|
|
1225
|
+
swipeGesture;
|
|
1226
|
+
swipeGestureChanged() {
|
|
1227
|
+
this.updateGestureEnabled();
|
|
1228
|
+
}
|
|
1229
|
+
/** @internal */
|
|
1230
|
+
swipeHandler;
|
|
1237
1231
|
swipeHandlerChanged() {
|
|
1238
|
-
|
|
1239
|
-
this.gesture.enable(this.swipeHandler !== undefined);
|
|
1240
|
-
}
|
|
1232
|
+
this.updateGestureEnabled();
|
|
1241
1233
|
}
|
|
1234
|
+
/** @internal */
|
|
1235
|
+
ionNavWillLoad;
|
|
1236
|
+
/** @internal */
|
|
1237
|
+
ionNavWillChange;
|
|
1238
|
+
/** @internal */
|
|
1239
|
+
ionNavDidChange;
|
|
1242
1240
|
async connectedCallback() {
|
|
1243
1241
|
const onStart = () => {
|
|
1244
1242
|
this.gestureOrAnimationInProgress = true;
|
|
@@ -1246,7 +1244,7 @@ const RouterOutlet = class {
|
|
|
1246
1244
|
this.swipeHandler.onStart();
|
|
1247
1245
|
}
|
|
1248
1246
|
};
|
|
1249
|
-
this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-
|
|
1247
|
+
this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-CmfRYdWQ.js'); })).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), (step) => this.ani?.progressStep(step), (shouldComplete, step, dur) => {
|
|
1250
1248
|
if (this.ani) {
|
|
1251
1249
|
this.ani.onFinish(() => {
|
|
1252
1250
|
this.gestureOrAnimationInProgress = false;
|
|
@@ -1277,11 +1275,21 @@ const RouterOutlet = class {
|
|
|
1277
1275
|
this.gestureOrAnimationInProgress = false;
|
|
1278
1276
|
}
|
|
1279
1277
|
});
|
|
1280
|
-
this.
|
|
1278
|
+
if (this.swipeGesture === undefined) {
|
|
1279
|
+
this.swipeGesture = index.config.getBoolean('swipeBackEnabled', this.mode === 'ios');
|
|
1280
|
+
}
|
|
1281
|
+
else {
|
|
1282
|
+
this.updateGestureEnabled();
|
|
1283
|
+
}
|
|
1281
1284
|
}
|
|
1282
1285
|
componentWillLoad() {
|
|
1283
1286
|
this.ionNavWillLoad.emit();
|
|
1284
1287
|
}
|
|
1288
|
+
updateGestureEnabled() {
|
|
1289
|
+
if (this.gesture) {
|
|
1290
|
+
this.gesture.enable(this.swipeHandler !== undefined && this.swipeGesture === true);
|
|
1291
|
+
}
|
|
1292
|
+
}
|
|
1285
1293
|
disconnectedCallback() {
|
|
1286
1294
|
if (this.gesture) {
|
|
1287
1295
|
this.gesture.destroy();
|
|
@@ -1348,16 +1356,19 @@ const RouterOutlet = class {
|
|
|
1348
1356
|
const { el, mode } = this;
|
|
1349
1357
|
const animated = this.animated && index.config.getBoolean('animated', true);
|
|
1350
1358
|
const animationBuilder = opts.animationBuilder || this.animation || index.config.get('navAnimation');
|
|
1351
|
-
await index$2.transition(
|
|
1359
|
+
await index$2.transition({
|
|
1360
|
+
mode,
|
|
1352
1361
|
animated,
|
|
1353
1362
|
enteringEl,
|
|
1354
|
-
leavingEl,
|
|
1363
|
+
leavingEl,
|
|
1364
|
+
baseEl: el,
|
|
1355
1365
|
/**
|
|
1356
1366
|
* We need to wait for all Stencil components
|
|
1357
1367
|
* to be ready only when using the lazy
|
|
1358
1368
|
* loaded bundle.
|
|
1359
1369
|
*/
|
|
1360
|
-
deepWait: helpers.hasLazyBuild(el),
|
|
1370
|
+
deepWait: helpers.hasLazyBuild(el),
|
|
1371
|
+
progressCallback: opts.progressAnimation
|
|
1361
1372
|
? (ani) => {
|
|
1362
1373
|
/**
|
|
1363
1374
|
* Because this progress callback is called asynchronously
|
|
@@ -1386,16 +1397,21 @@ const RouterOutlet = class {
|
|
|
1386
1397
|
this.ani = ani;
|
|
1387
1398
|
}
|
|
1388
1399
|
}
|
|
1389
|
-
: undefined
|
|
1400
|
+
: undefined,
|
|
1401
|
+
...opts,
|
|
1402
|
+
animationBuilder,
|
|
1403
|
+
});
|
|
1390
1404
|
// emit nav changed event
|
|
1391
1405
|
this.ionNavDidChange.emit();
|
|
1392
1406
|
return true;
|
|
1393
1407
|
}
|
|
1394
1408
|
render() {
|
|
1395
|
-
return index.h("slot", { key: '
|
|
1409
|
+
return index.h("slot", { key: 'ce09e6fbba7b0a2276cdde5245bb37c9a162c1c7' });
|
|
1396
1410
|
}
|
|
1397
|
-
get el() { return index.getElement(this); }
|
|
1398
1411
|
static get watchers() { return {
|
|
1412
|
+
"swipeGesture": [{
|
|
1413
|
+
"swipeGestureChanged": 0
|
|
1414
|
+
}],
|
|
1399
1415
|
"swipeHandler": [{
|
|
1400
1416
|
"swipeHandlerChanged": 0
|
|
1401
1417
|
}]
|
|
@@ -1403,17 +1419,31 @@ const RouterOutlet = class {
|
|
|
1403
1419
|
};
|
|
1404
1420
|
RouterOutlet.style = routerOutletCss();
|
|
1405
1421
|
|
|
1406
|
-
const
|
|
1407
|
-
|
|
1408
|
-
const titleIosCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host(.ion-color){color:var(--ion-color-base)}:host{top:0;-webkit-padding-start:90px;padding-inline-start:90px;-webkit-padding-end:90px;padding-inline-end:90px;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);position:absolute;width:100%;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);font-size:min(1.0625rem, 20.4px);font-weight:600;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host{inset-inline-start:0}:host(.title-small){-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px;padding-top:6px;padding-bottom:16px;position:relative;font-size:min(0.8125rem, 23.4px);font-weight:normal}:host(.title-large){-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:2px;padding-bottom:4px;-webkit-transform-origin:left center;transform-origin:left center;position:static;-ms-flex-align:end;align-items:flex-end;min-width:100%;font-size:min(2.125rem, 61.2px);font-weight:700;text-align:start}:host(.title-large.title-rtl){-webkit-transform-origin:right center;transform-origin:right center}:host(.title-large.ion-cloned-element){--color:var(--ion-text-color, #000);font-family:var(--ion-font-family)}:host(.title-large) .toolbar-title{-webkit-transform-origin:inherit;transform-origin:inherit;width:auto}:host-context([dir=rtl]):host(.title-large) .toolbar-title,:host-context([dir=rtl]).title-large .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}@supports selector(:dir(rtl)){:host(.title-large:dir(rtl)) .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}}`;
|
|
1422
|
+
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)}}`;
|
|
1409
1423
|
|
|
1410
|
-
const titleMdCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host
|
|
1424
|
+
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}`;
|
|
1411
1425
|
|
|
1412
1426
|
const ToolbarTitle = class {
|
|
1413
1427
|
constructor(hostRef) {
|
|
1414
1428
|
index.registerInstance(this, hostRef);
|
|
1415
1429
|
this.ionStyle = index.createEvent(this, "ionStyle", 7);
|
|
1416
1430
|
}
|
|
1431
|
+
get el() { return index.getElement(this); }
|
|
1432
|
+
/**
|
|
1433
|
+
* The color to use from your application's color palette.
|
|
1434
|
+
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
1435
|
+
* For more information on colors, see [theming](/docs/theming/basics).
|
|
1436
|
+
*/
|
|
1437
|
+
color;
|
|
1438
|
+
/**
|
|
1439
|
+
* The size of the toolbar title.
|
|
1440
|
+
*/
|
|
1441
|
+
size;
|
|
1442
|
+
/**
|
|
1443
|
+
* Emitted when the styles change.
|
|
1444
|
+
* @internal
|
|
1445
|
+
*/
|
|
1446
|
+
ionStyle;
|
|
1417
1447
|
sizeChanged() {
|
|
1418
1448
|
this.emitStyle();
|
|
1419
1449
|
}
|
|
@@ -1430,15 +1460,14 @@ const ToolbarTitle = class {
|
|
|
1430
1460
|
return this.size !== undefined ? this.size : 'default';
|
|
1431
1461
|
}
|
|
1432
1462
|
render() {
|
|
1433
|
-
const
|
|
1463
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
1434
1464
|
const size = this.getSize();
|
|
1435
|
-
return (index.h(index.Host, { key: '
|
|
1436
|
-
[
|
|
1465
|
+
return (index.h(index.Host, { key: 'd9317e8e66cb6112717f5a9c252658777efbd873', class: theme.createColorClasses(this.color, {
|
|
1466
|
+
[mode]: true,
|
|
1437
1467
|
[`title-${size}`]: true,
|
|
1438
1468
|
'title-rtl': document.dir === 'rtl',
|
|
1439
|
-
}) }, index.h("div", { key: '
|
|
1469
|
+
}) }, index.h("div", { key: 'a4d011d6d409bf006d8efe33667002edb109820a', class: "toolbar-title" }, index.h("slot", { key: '4ca3303b957a0e5387f1e9058e5adb4c6275afcc' }))));
|
|
1440
1470
|
}
|
|
1441
|
-
get el() { return index.getElement(this); }
|
|
1442
1471
|
static get watchers() { return {
|
|
1443
1472
|
"size": [{
|
|
1444
1473
|
"sizeChanged": 0
|
|
@@ -1446,30 +1475,26 @@ const ToolbarTitle = class {
|
|
|
1446
1475
|
}; }
|
|
1447
1476
|
};
|
|
1448
1477
|
ToolbarTitle.style = {
|
|
1449
|
-
ionic: titleIonicCss(),
|
|
1450
1478
|
ios: titleIosCss(),
|
|
1451
1479
|
md: titleMdCss()
|
|
1452
1480
|
};
|
|
1453
1481
|
|
|
1454
|
-
const
|
|
1482
|
+
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%}`;
|
|
1455
1483
|
|
|
1456
|
-
const
|
|
1457
|
-
|
|
1458
|
-
const toolbarMdCss = () => `:host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);contain:content;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));pointer-events:none}::slotted(ion-progress-bar){right:0;left:0;bottom:0;position:absolute}:host{font-family:var(--ion-font-family, inherit);z-index:10}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{z-index:10}.toolbar-background{z-index:-1}:host{--background:var(--ion-toolbar-background, var(--ion-background-color, #fff));--color:var(--ion-toolbar-color, var(--ion-text-color, #424242));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, #c1c4cd))));--padding-top:0;--padding-bottom:0;--padding-start:0;--padding-end:0;--min-height:56px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:3;order:3;min-width:0;max-width:100%}::slotted(.buttons-first-slot){-webkit-margin-start:4px;margin-inline-start:4px}::slotted(.buttons-last-slot){-webkit-margin-end:4px;margin-inline-end:4px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:4;order:4}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}`;
|
|
1484
|
+
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}`;
|
|
1459
1485
|
|
|
1460
1486
|
const Toolbar = class {
|
|
1461
1487
|
constructor(hostRef) {
|
|
1462
1488
|
index.registerInstance(this, hostRef);
|
|
1463
|
-
this.childrenStyles = new Map();
|
|
1464
|
-
this.slotClasses = [
|
|
1465
|
-
'has-start-content',
|
|
1466
|
-
'has-end-content',
|
|
1467
|
-
'has-primary-content',
|
|
1468
|
-
'has-secondary-content',
|
|
1469
|
-
];
|
|
1470
|
-
this.showClasses = ['show-start', 'show-end', 'show-primary', 'show-secondary'];
|
|
1471
|
-
this.slotSizeVars = ['--start-end-size', '--primary-secondary-size'];
|
|
1472
1489
|
}
|
|
1490
|
+
childrenStyles = new Map();
|
|
1491
|
+
get el() { return index.getElement(this); }
|
|
1492
|
+
/**
|
|
1493
|
+
* The color to use from your application's color palette.
|
|
1494
|
+
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
1495
|
+
* For more information on colors, see [theming](/docs/theming/basics).
|
|
1496
|
+
*/
|
|
1497
|
+
color;
|
|
1473
1498
|
componentWillLoad() {
|
|
1474
1499
|
const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));
|
|
1475
1500
|
const firstButtons = buttons.find((button) => {
|
|
@@ -1485,173 +1510,6 @@ const Toolbar = class {
|
|
|
1485
1510
|
if (lastButtons) {
|
|
1486
1511
|
lastButtons.classList.add('buttons-last-slot');
|
|
1487
1512
|
}
|
|
1488
|
-
this.updateSlotClasses();
|
|
1489
|
-
}
|
|
1490
|
-
componentDidLoad() {
|
|
1491
|
-
this.updateSlotClasses();
|
|
1492
|
-
this.updateSlotWidths();
|
|
1493
|
-
}
|
|
1494
|
-
titlePlacementChanged() {
|
|
1495
|
-
this.updateSlotClasses();
|
|
1496
|
-
}
|
|
1497
|
-
/**
|
|
1498
|
-
* Gets the title placement.
|
|
1499
|
-
* Returns the title placement if it is set, otherwise returns `"center"`
|
|
1500
|
-
* for `ionic` and `ios`, and `"start"` for `md`.
|
|
1501
|
-
*/
|
|
1502
|
-
getTitlePlacement() {
|
|
1503
|
-
if (this.titlePlacement !== undefined) {
|
|
1504
|
-
return this.titlePlacement;
|
|
1505
|
-
}
|
|
1506
|
-
return ionicGlobal.getIonTheme(this) === 'ionic' || ionicGlobal.getIonTheme(this) === 'ios' ? 'center' : 'start';
|
|
1507
|
-
}
|
|
1508
|
-
/**
|
|
1509
|
-
* Updates the CSS custom properties for slot widths
|
|
1510
|
-
* This ensures that slots shown by their met conditions
|
|
1511
|
-
* have a minimum width matching their required slot
|
|
1512
|
-
*/
|
|
1513
|
-
updateSlotWidths(tries = 0) {
|
|
1514
|
-
// Set timeout to try to execute after everything is rendered
|
|
1515
|
-
setTimeout(() => {
|
|
1516
|
-
// Attempt to measure and update
|
|
1517
|
-
const success = this.measureAndUpdateSlots();
|
|
1518
|
-
// If not all measurements were successful, try again in 100 ms
|
|
1519
|
-
// cap recursion at 5 tries for safety
|
|
1520
|
-
if (!success && tries < 5) {
|
|
1521
|
-
setTimeout(() => {
|
|
1522
|
-
this.updateSlotWidths(tries + 1);
|
|
1523
|
-
}, 100);
|
|
1524
|
-
}
|
|
1525
|
-
});
|
|
1526
|
-
}
|
|
1527
|
-
/**
|
|
1528
|
-
* Measure the widths of the slots and update the CSS custom properties
|
|
1529
|
-
* for the minimum width of each pair of slots based on the largest width in each pair.
|
|
1530
|
-
* Returns whether we successfully measured all of the slots we expect to have content.
|
|
1531
|
-
* If not, the content probably hasn't rendered yet and we need to try again.
|
|
1532
|
-
*/
|
|
1533
|
-
measureAndUpdateSlots() {
|
|
1534
|
-
// Define the relationship between slots based on the conditions array
|
|
1535
|
-
// Group slots that should have the same width
|
|
1536
|
-
const slotPairs = [
|
|
1537
|
-
{ name: 'start-end', slots: ['start', 'end'] },
|
|
1538
|
-
{ name: 'primary-secondary', slots: ['primary', 'secondary'] },
|
|
1539
|
-
];
|
|
1540
|
-
// First, measure all slot widths
|
|
1541
|
-
const slotWidths = new Map();
|
|
1542
|
-
let allMeasurementsSuccessful = true;
|
|
1543
|
-
// Measure all slots with content
|
|
1544
|
-
const slots = ['start', 'end', 'primary', 'secondary'];
|
|
1545
|
-
slots.forEach((slot) => {
|
|
1546
|
-
var _a;
|
|
1547
|
-
if (this.el.classList.contains(`has-${slot}-content`)) {
|
|
1548
|
-
const slotElement = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slot}"]`);
|
|
1549
|
-
if (slotElement) {
|
|
1550
|
-
// Check if the slot contains an img or ion-img
|
|
1551
|
-
const assignedElements = slotElement.assignedElements({ flatten: true });
|
|
1552
|
-
const hasImg = assignedElements.some((el) => {
|
|
1553
|
-
if (el.tagName === 'IMG' || el.tagName === 'ION-IMG') {
|
|
1554
|
-
return true;
|
|
1555
|
-
}
|
|
1556
|
-
// Check for nested images
|
|
1557
|
-
return el.querySelector('img, ion-img');
|
|
1558
|
-
});
|
|
1559
|
-
// Temporarily allow slot to size to content by setting flex-basis
|
|
1560
|
-
// to 'auto'. This ensures that slotted images can render at their
|
|
1561
|
-
// intrinsic width for measurement.
|
|
1562
|
-
if (hasImg) {
|
|
1563
|
-
const { name } = slotPairs.find((pair) => pair.slots.includes(slot));
|
|
1564
|
-
this.el.style.setProperty(`--${name}-size`, 'auto');
|
|
1565
|
-
}
|
|
1566
|
-
const width = slotElement.offsetWidth;
|
|
1567
|
-
if (width > 0) {
|
|
1568
|
-
slotWidths.set(slot, width);
|
|
1569
|
-
}
|
|
1570
|
-
else {
|
|
1571
|
-
allMeasurementsSuccessful = false;
|
|
1572
|
-
}
|
|
1573
|
-
}
|
|
1574
|
-
}
|
|
1575
|
-
});
|
|
1576
|
-
// Then set the CSS custom properties based on the largest width in each pair
|
|
1577
|
-
slotPairs.forEach(({ name, slots }) => {
|
|
1578
|
-
// Find the maximum width among the slots in this pair
|
|
1579
|
-
let maxWidth = 0;
|
|
1580
|
-
let hasAnyContent = false;
|
|
1581
|
-
slots.forEach((slot) => {
|
|
1582
|
-
var _a;
|
|
1583
|
-
if (slotWidths.has(slot)) {
|
|
1584
|
-
hasAnyContent = true;
|
|
1585
|
-
maxWidth = Math.max(maxWidth, (_a = slotWidths.get(slot)) !== null && _a !== void 0 ? _a : 0);
|
|
1586
|
-
}
|
|
1587
|
-
});
|
|
1588
|
-
// If at least one slot in the pair has content, set the min-width for the pair
|
|
1589
|
-
if (hasAnyContent && maxWidth > 0) {
|
|
1590
|
-
// Set a single CSS variable for the pair
|
|
1591
|
-
this.el.style.setProperty(`--${name}-size`, `${maxWidth}px`);
|
|
1592
|
-
}
|
|
1593
|
-
});
|
|
1594
|
-
return allMeasurementsSuccessful;
|
|
1595
|
-
}
|
|
1596
|
-
/**
|
|
1597
|
-
* Removes all slot visibility classes and slot width CSS variables.
|
|
1598
|
-
*/
|
|
1599
|
-
removeSlotClasses() {
|
|
1600
|
-
this.el.classList.remove(...this.slotClasses, ...this.showClasses);
|
|
1601
|
-
this.slotSizeVars.forEach((cssVar) => this.el.style.removeProperty(cssVar));
|
|
1602
|
-
}
|
|
1603
|
-
updateSlotClasses() {
|
|
1604
|
-
const titlePlacement = this.getTitlePlacement();
|
|
1605
|
-
if (titlePlacement !== 'center') {
|
|
1606
|
-
this.removeSlotClasses();
|
|
1607
|
-
return;
|
|
1608
|
-
}
|
|
1609
|
-
// Check if slots have content
|
|
1610
|
-
const slots = ['start', 'end', 'primary', 'secondary'];
|
|
1611
|
-
const classesToAdd = [];
|
|
1612
|
-
const classesToRemove = [];
|
|
1613
|
-
slots.forEach((slot) => {
|
|
1614
|
-
const slotHasContent = this.hasSlotContent(slot);
|
|
1615
|
-
const slotClass = `has-${slot}-content`;
|
|
1616
|
-
if (slotHasContent) {
|
|
1617
|
-
classesToAdd.push(slotClass);
|
|
1618
|
-
}
|
|
1619
|
-
else {
|
|
1620
|
-
classesToRemove.push(slotClass);
|
|
1621
|
-
}
|
|
1622
|
-
});
|
|
1623
|
-
// Force visibilities in certain conditions. This works by adding a class to the toolbar
|
|
1624
|
-
// named `show-{slot}`. This class will be added if the toolbar has the required slots
|
|
1625
|
-
// and does not have any of the excluded slots, otherwise it will be removed.
|
|
1626
|
-
// This is useful to enforce centering of the toolbar content when there are different amounts
|
|
1627
|
-
// of slots on either side of the toolbar.
|
|
1628
|
-
const conditions = [
|
|
1629
|
-
{ name: 'end', requiredSlots: ['start'], excludeSlots: ['end', 'primary'] },
|
|
1630
|
-
{ name: 'start', requiredSlots: ['end'], excludeSlots: ['start', 'secondary'] },
|
|
1631
|
-
{ name: 'secondary', requiredSlots: ['primary'], excludeSlots: ['secondary', 'start'] },
|
|
1632
|
-
{ name: 'primary', requiredSlots: ['secondary'], excludeSlots: ['primary', 'end'] },
|
|
1633
|
-
];
|
|
1634
|
-
conditions.forEach((condition) => {
|
|
1635
|
-
const hasRequiredSlots = condition.requiredSlots.every((slot) => classesToAdd.includes(`has-${slot}-content`));
|
|
1636
|
-
const hasExcludedSlots = condition.excludeSlots.some((slot) => classesToAdd.includes(`has-${slot}-content`));
|
|
1637
|
-
const className = `show-${condition.name}`;
|
|
1638
|
-
if (hasRequiredSlots && !hasExcludedSlots) {
|
|
1639
|
-
classesToAdd.push(className);
|
|
1640
|
-
}
|
|
1641
|
-
else {
|
|
1642
|
-
classesToRemove.push(className);
|
|
1643
|
-
}
|
|
1644
|
-
});
|
|
1645
|
-
// Add classes to the toolbar element
|
|
1646
|
-
this.el.classList.add(...classesToAdd);
|
|
1647
|
-
this.el.classList.remove(...classesToRemove);
|
|
1648
|
-
// Update slot widths after classes have been updated
|
|
1649
|
-
this.updateSlotWidths();
|
|
1650
|
-
}
|
|
1651
|
-
hasSlotContent(slotName) {
|
|
1652
|
-
var _a;
|
|
1653
|
-
const slotNode = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slotName}"]`);
|
|
1654
|
-
return !!slotNode && slotNode.assignedNodes().length > 0;
|
|
1655
1513
|
}
|
|
1656
1514
|
childrenStyle(ev) {
|
|
1657
1515
|
ev.stopPropagation();
|
|
@@ -1676,27 +1534,21 @@ const Toolbar = class {
|
|
|
1676
1534
|
}
|
|
1677
1535
|
}
|
|
1678
1536
|
render() {
|
|
1679
|
-
const
|
|
1537
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
1680
1538
|
const childStyles = {};
|
|
1681
|
-
this.childrenStyles.forEach((
|
|
1682
|
-
Object.assign(childStyles,
|
|
1539
|
+
this.childrenStyles.forEach((value) => {
|
|
1540
|
+
Object.assign(childStyles, value);
|
|
1683
1541
|
});
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1542
|
+
return (index.h(index.Host, { key: '40bad6fa7e94262438da4bbe037dcf8a5fa2df22', class: {
|
|
1543
|
+
...childStyles,
|
|
1544
|
+
...theme.createColorClasses(this.color, {
|
|
1545
|
+
[mode]: true,
|
|
1546
|
+
'in-toolbar': theme.hostContext('ion-toolbar', this.el),
|
|
1547
|
+
}),
|
|
1548
|
+
} }, index.h("div", { key: 'df44c9f0fe3958116ab860b0dad79c53b89f6c59', class: "toolbar-background", part: "background" }), index.h("div", { key: '2169ffa576875b8d5624211cc0b4bf86191562bc', class: "toolbar-container", part: "container" }, index.h("slot", { key: 'c8910dcf1ce98ab427fd89c3396a67c2a75bdd07', name: "start" }), index.h("slot", { key: '05da24d5ef96b9eebd83b534ce02c1f7bcd06680', name: "secondary" }), index.h("div", { key: '090fea1541e7e2b6ad74a6ded4eadffdb471ccce', class: "toolbar-content", part: "content" }, index.h("slot", { key: '507e143f92f6fa59ff23d94026411fa2c74f2f8e' })), index.h("slot", { key: 'f79fdee472e657e26a910cb89d7551943e40e440', name: "primary" }), index.h("slot", { key: 'dd40fe9ed490cf4346c642e195fdb524dc6cc4f5', name: "end" }))));
|
|
1690
1549
|
}
|
|
1691
|
-
get el() { return index.getElement(this); }
|
|
1692
|
-
static get watchers() { return {
|
|
1693
|
-
"titlePlacement": [{
|
|
1694
|
-
"titlePlacementChanged": 0
|
|
1695
|
-
}]
|
|
1696
|
-
}; }
|
|
1697
1550
|
};
|
|
1698
1551
|
Toolbar.style = {
|
|
1699
|
-
ionic: toolbarIonicCss(),
|
|
1700
1552
|
ios: toolbarIosCss(),
|
|
1701
1553
|
md: toolbarMdCss()
|
|
1702
1554
|
};
|