@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
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { r as registerInstance,
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { i as inheritAriaAttributes, h as hasLazyBuild, c as componentOnReady, e as clamp, s as shallowEqualStringMap } from './helpers-
|
|
8
|
-
import { i as isRTL } from './dir-
|
|
9
|
-
import { c as createColorClasses, h as hostContext } from './theme-
|
|
10
|
-
import { a as findIonContent, p as printIonContentErrorMsg, g as getScrollElement } from './index-
|
|
11
|
-
import { c as
|
|
4
|
+
import { r as registerInstance, g as getElement, e as config, f as printIonWarning, h, d as Host, c as createEvent, a as readTask, i as forceUpdate, w as writeTask, j as printIonError } from './index-D1CQtpUN.js';
|
|
5
|
+
import { shouldUseCloseWatcher } from './hardware-back-button-DcHMMB9j.js';
|
|
6
|
+
import { a as isPlatform, b as getIonMode } from './ionic-global-5bZ91kOL.js';
|
|
7
|
+
import { i as inheritAriaAttributes, h as hasLazyBuild, c as componentOnReady, e as clamp, s as shallowEqualStringMap } from './helpers-BPcITY5s.js';
|
|
8
|
+
import { i as isRTL } from './dir-B-FxiyeI.js';
|
|
9
|
+
import { c as createColorClasses, h as hostContext } from './theme-byZM6qHV.js';
|
|
10
|
+
import { a as findIonContent, p as printIonContentErrorMsg, g as getScrollElement } from './index-DcUt1pPn.js';
|
|
11
|
+
import { c as createKeyboardController } from './keyboard-controller-DEwoa1ev.js';
|
|
12
12
|
import { g as getTimeGivenProgression } from './cubic-bezier-hHmYLOfE.js';
|
|
13
|
-
import { a as attachComponent, d as detachComponent } from './framework-delegate-
|
|
13
|
+
import { a as attachComponent, d as detachComponent } from './framework-delegate-BfAlKlW5.js';
|
|
14
14
|
import { c as createLockController } from './lock-controller-B-hirT0v.js';
|
|
15
|
-
import { t as transition } from './index-
|
|
16
|
-
import './
|
|
17
|
-
import './
|
|
15
|
+
import { t as transition } from './index-DqVqy_Cy.js';
|
|
16
|
+
import './index-ZjP4CjeZ.js';
|
|
17
|
+
import './keyboard-DAF8GNJ9.js';
|
|
18
|
+
import './capacitor-CFERIeaU.js';
|
|
18
19
|
|
|
19
20
|
const appCss = () => `html.plt-mobile ion-app{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.plt-mobile ion-app [contenteditable]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}ion-app.force-statusbar-padding{--ion-safe-area-top:20px}`;
|
|
20
21
|
|
|
@@ -22,6 +23,54 @@ const App = class {
|
|
|
22
23
|
constructor(hostRef) {
|
|
23
24
|
registerInstance(this, hostRef);
|
|
24
25
|
}
|
|
26
|
+
focusVisible;
|
|
27
|
+
loadTimeout;
|
|
28
|
+
get el() { return getElement(this); }
|
|
29
|
+
componentDidLoad() {
|
|
30
|
+
{
|
|
31
|
+
this.rIC(async () => {
|
|
32
|
+
const isHybrid = isPlatform(window, 'hybrid');
|
|
33
|
+
if (!config.getBoolean('_testing')) {
|
|
34
|
+
import('./index-B9GsUd2c.js').then((module) => module.startTapClick(config));
|
|
35
|
+
}
|
|
36
|
+
if (config.getBoolean('statusTap', isHybrid)) {
|
|
37
|
+
import('./status-tap-C-wNhea0.js').then((module) => module.startStatusTap());
|
|
38
|
+
}
|
|
39
|
+
if (config.getBoolean('inputShims', needInputShims())) {
|
|
40
|
+
/**
|
|
41
|
+
* needInputShims() ensures that only iOS and Android
|
|
42
|
+
* platforms proceed into this block.
|
|
43
|
+
*/
|
|
44
|
+
const platform = isPlatform(window, 'ios') ? 'ios' : 'android';
|
|
45
|
+
import('./input-shims-C1dCKVMO.js').then((module) => module.startInputShims(config, platform));
|
|
46
|
+
}
|
|
47
|
+
const hardwareBackButtonModule = await import('./hardware-back-button-DcHMMB9j.js');
|
|
48
|
+
const supportsHardwareBackButtonEvents = isHybrid || shouldUseCloseWatcher();
|
|
49
|
+
if (config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {
|
|
50
|
+
hardwareBackButtonModule.startHardwareBackButton();
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
/**
|
|
54
|
+
* If an app sets hardwareBackButton: false and experimentalCloseWatcher: true
|
|
55
|
+
* then the close watcher will not be used.
|
|
56
|
+
*/
|
|
57
|
+
if (shouldUseCloseWatcher()) {
|
|
58
|
+
printIonWarning('[ion-app] - experimentalCloseWatcher was set to `true`, but hardwareBackButton was set to `false`. Both config options must be `true` for the Close Watcher API to be used.');
|
|
59
|
+
}
|
|
60
|
+
hardwareBackButtonModule.blockHardwareBackButton();
|
|
61
|
+
}
|
|
62
|
+
if (typeof window !== 'undefined') {
|
|
63
|
+
import('./keyboard-Cj8mLJeq.js').then((module) => module.startKeyboardAssist(window));
|
|
64
|
+
}
|
|
65
|
+
import('./focus-visible-BmVRXR1y.js').then((module) => (this.focusVisible = module.startFocusVisible()));
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
disconnectedCallback() {
|
|
70
|
+
if (this.loadTimeout) {
|
|
71
|
+
clearTimeout(this.loadTimeout);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
25
74
|
/**
|
|
26
75
|
* Used to set focus on an element that uses `ion-focusable`.
|
|
27
76
|
* Do not use this if focusing the element as a result of a keyboard
|
|
@@ -34,62 +83,83 @@ const App = class {
|
|
|
34
83
|
* @param elements An array of HTML elements to set focus on.
|
|
35
84
|
*/
|
|
36
85
|
async setFocus(elements) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
86
|
+
if (this.focusVisible) {
|
|
87
|
+
this.focusVisible.setFocus(elements);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
rIC(callback) {
|
|
91
|
+
if ('requestIdleCallback' in window) {
|
|
92
|
+
window.requestIdleCallback(callback);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
this.loadTimeout = setTimeout(callback, 32);
|
|
96
|
+
}
|
|
42
97
|
}
|
|
43
98
|
render() {
|
|
44
|
-
const
|
|
45
|
-
return (h(Host, { key: '
|
|
46
|
-
[
|
|
99
|
+
const mode = getIonMode(this);
|
|
100
|
+
return (h(Host, { key: '77a7459d3e42b3715a5a7e1cf468e2ebc99e54bb', class: {
|
|
101
|
+
[mode]: true,
|
|
47
102
|
'ion-page': true,
|
|
48
103
|
'force-statusbar-padding': config.getBoolean('_forceStatusbarPadding'),
|
|
49
104
|
} }));
|
|
50
105
|
}
|
|
51
|
-
|
|
106
|
+
};
|
|
107
|
+
const needInputShims = () => {
|
|
108
|
+
/**
|
|
109
|
+
* iOS always needs input shims
|
|
110
|
+
*/
|
|
111
|
+
const needsShimsIOS = isPlatform(window, 'ios') && isPlatform(window, 'mobile');
|
|
112
|
+
if (needsShimsIOS) {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Android only needs input shims when running
|
|
117
|
+
* in the browser and only if the browser is using the
|
|
118
|
+
* new Chrome 108+ resize behavior: https://developer.chrome.com/blog/viewport-resize-behavior/
|
|
119
|
+
*/
|
|
120
|
+
const isAndroidMobileWeb = isPlatform(window, 'android') && isPlatform(window, 'mobileweb');
|
|
121
|
+
if (isAndroidMobileWeb) {
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
return false;
|
|
52
125
|
};
|
|
53
126
|
App.style = appCss();
|
|
54
127
|
|
|
55
|
-
const
|
|
128
|
+
const buttonsIosCss = () => `.sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:5px;--padding-end:5px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-ios-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast);--background-activated:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.65em;line-height:0.67}`;
|
|
56
129
|
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
const buttonsMdCss = () => `.sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0)}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-h{z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:8px;--padding-end:8px;--box-shadow:none;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-md-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:3rem;height:3rem}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}`;
|
|
130
|
+
const buttonsMdCss = () => `.sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:8px;--padding-end:8px;--box-shadow:none;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-md-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:3rem;height:3rem}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}`;
|
|
60
131
|
|
|
61
132
|
const Buttons = class {
|
|
62
133
|
constructor(hostRef) {
|
|
63
134
|
registerInstance(this, hostRef);
|
|
64
|
-
/**
|
|
65
|
-
* If true, buttons will disappear when its
|
|
66
|
-
* parent toolbar has fully collapsed if the toolbar
|
|
67
|
-
* is not the first toolbar. If the toolbar is the
|
|
68
|
-
* first toolbar, the buttons will be hidden and will
|
|
69
|
-
* only be shown once all toolbars have fully collapsed.
|
|
70
|
-
*
|
|
71
|
-
* Only applies in the `ios` theme with `collapse` set to
|
|
72
|
-
* `true` on `ion-header`.
|
|
73
|
-
*
|
|
74
|
-
* Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
|
|
75
|
-
*/
|
|
76
|
-
this.collapse = false;
|
|
77
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* If true, buttons will disappear when its
|
|
138
|
+
* parent toolbar has fully collapsed if the toolbar
|
|
139
|
+
* is not the first toolbar. If the toolbar is the
|
|
140
|
+
* first toolbar, the buttons will be hidden and will
|
|
141
|
+
* only be shown once all toolbars have fully collapsed.
|
|
142
|
+
*
|
|
143
|
+
* Only applies in `ios` mode with `collapse` set to
|
|
144
|
+
* `true` on `ion-header`.
|
|
145
|
+
*
|
|
146
|
+
* Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
|
|
147
|
+
*/
|
|
148
|
+
collapse = false;
|
|
78
149
|
render() {
|
|
79
|
-
const
|
|
80
|
-
return (h(Host, { key: '
|
|
81
|
-
[
|
|
150
|
+
const mode = getIonMode(this);
|
|
151
|
+
return (h(Host, { key: '58c1fc5eb867d0731c63549b1ccb3ec3bbbe6e1b', class: {
|
|
152
|
+
[mode]: true,
|
|
82
153
|
['buttons-collapse']: this.collapse,
|
|
83
|
-
} }, h("slot", { key: '
|
|
154
|
+
} }, h("slot", { key: '0c8f95b9840c8fa0c4e50be84c5159620a3eb5c8' })));
|
|
84
155
|
}
|
|
85
156
|
};
|
|
86
157
|
Buttons.style = {
|
|
87
|
-
ionic: buttonsIonicCss(),
|
|
88
158
|
ios: buttonsIosCss(),
|
|
89
159
|
md: buttonsMdCss()
|
|
90
160
|
};
|
|
91
161
|
|
|
92
|
-
const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{
|
|
162
|
+
const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--internal-content-safe-area-padding-bottom, 0px));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:""}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}`;
|
|
93
163
|
|
|
94
164
|
const Content = class {
|
|
95
165
|
constructor(hostRef) {
|
|
@@ -97,65 +167,96 @@ const Content = class {
|
|
|
97
167
|
this.ionScrollStart = createEvent(this, "ionScrollStart", 7);
|
|
98
168
|
this.ionScroll = createEvent(this, "ionScroll", 7);
|
|
99
169
|
this.ionScrollEnd = createEvent(this, "ionScrollEnd", 7);
|
|
100
|
-
this.watchDog = null;
|
|
101
|
-
this.isScrolling = false;
|
|
102
|
-
this.lastScroll = 0;
|
|
103
|
-
this.queued = false;
|
|
104
|
-
this.cTop = -1;
|
|
105
|
-
this.cBottom = -1;
|
|
106
|
-
this.isMainContent = true;
|
|
107
|
-
this.resizeTimeout = null;
|
|
108
|
-
this.inheritedAttributes = {};
|
|
109
|
-
this.tabsElement = null;
|
|
110
|
-
// Detail is used in a hot loop in the scroll event, by allocating it here
|
|
111
|
-
// V8 will be able to inline any read/write to it since it's a monomorphic class.
|
|
112
|
-
// https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html
|
|
113
|
-
this.detail = {
|
|
114
|
-
scrollTop: 0,
|
|
115
|
-
scrollLeft: 0,
|
|
116
|
-
type: 'scroll',
|
|
117
|
-
event: undefined,
|
|
118
|
-
startX: 0,
|
|
119
|
-
startY: 0,
|
|
120
|
-
startTime: 0,
|
|
121
|
-
currentX: 0,
|
|
122
|
-
currentY: 0,
|
|
123
|
-
velocityX: 0,
|
|
124
|
-
velocityY: 0,
|
|
125
|
-
deltaX: 0,
|
|
126
|
-
deltaY: 0,
|
|
127
|
-
currentTime: 0,
|
|
128
|
-
data: undefined,
|
|
129
|
-
isScrolling: true,
|
|
130
|
-
};
|
|
131
|
-
/**
|
|
132
|
-
* If `true`, the content will scroll behind the headers
|
|
133
|
-
* and footers. This effect can easily be seen by setting the toolbar
|
|
134
|
-
* to transparent.
|
|
135
|
-
*/
|
|
136
|
-
this.fullscreen = false;
|
|
137
|
-
/**
|
|
138
|
-
* Controls where the fixed content is placed relative to the main content
|
|
139
|
-
* in the DOM. This can be used to control the order in which fixed elements
|
|
140
|
-
* receive keyboard focus.
|
|
141
|
-
* For example, if a FAB in the fixed slot should receive keyboard focus before
|
|
142
|
-
* the main page content, set this property to `'before'`.
|
|
143
|
-
*/
|
|
144
|
-
this.fixedSlotPlacement = 'after';
|
|
145
|
-
/**
|
|
146
|
-
* If you want to enable the content scrolling in the X axis, set this property to `true`.
|
|
147
|
-
*/
|
|
148
|
-
this.scrollX = false;
|
|
149
|
-
/**
|
|
150
|
-
* If you want to disable the content scrolling in the Y axis, set this property to `false`.
|
|
151
|
-
*/
|
|
152
|
-
this.scrollY = true;
|
|
153
|
-
/**
|
|
154
|
-
* Because of performance reasons, ionScroll events are disabled by default, in order to enable them
|
|
155
|
-
* and start listening from (ionScroll), set this property to `true`.
|
|
156
|
-
*/
|
|
157
|
-
this.scrollEvents = false;
|
|
158
170
|
}
|
|
171
|
+
watchDog = null;
|
|
172
|
+
isScrolling = false;
|
|
173
|
+
lastScroll = 0;
|
|
174
|
+
queued = false;
|
|
175
|
+
cTop = -1;
|
|
176
|
+
cBottom = -1;
|
|
177
|
+
scrollEl;
|
|
178
|
+
backgroundContentEl;
|
|
179
|
+
isMainContent = true;
|
|
180
|
+
resizeTimeout = null;
|
|
181
|
+
inheritedAttributes = {};
|
|
182
|
+
tabsElement = null;
|
|
183
|
+
tabsLoadCallback;
|
|
184
|
+
// Detail is used in a hot loop in the scroll event, by allocating it here
|
|
185
|
+
// V8 will be able to inline any read/write to it since it's a monomorphic class.
|
|
186
|
+
// https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html
|
|
187
|
+
detail = {
|
|
188
|
+
scrollTop: 0,
|
|
189
|
+
scrollLeft: 0,
|
|
190
|
+
type: 'scroll',
|
|
191
|
+
event: undefined,
|
|
192
|
+
startX: 0,
|
|
193
|
+
startY: 0,
|
|
194
|
+
startTime: 0,
|
|
195
|
+
currentX: 0,
|
|
196
|
+
currentY: 0,
|
|
197
|
+
velocityX: 0,
|
|
198
|
+
velocityY: 0,
|
|
199
|
+
deltaX: 0,
|
|
200
|
+
deltaY: 0,
|
|
201
|
+
currentTime: 0,
|
|
202
|
+
data: undefined,
|
|
203
|
+
isScrolling: true,
|
|
204
|
+
};
|
|
205
|
+
get el() { return getElement(this); }
|
|
206
|
+
/**
|
|
207
|
+
* The color to use from your application's color palette.
|
|
208
|
+
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
209
|
+
* For more information on colors, see [theming](/docs/theming/basics).
|
|
210
|
+
*/
|
|
211
|
+
color;
|
|
212
|
+
/**
|
|
213
|
+
* If `true`, the content will scroll behind the headers
|
|
214
|
+
* and footers. This effect can easily be seen by setting the toolbar
|
|
215
|
+
* to transparent.
|
|
216
|
+
*/
|
|
217
|
+
fullscreen = false;
|
|
218
|
+
/**
|
|
219
|
+
* Controls where the fixed content is placed relative to the main content
|
|
220
|
+
* in the DOM. This can be used to control the order in which fixed elements
|
|
221
|
+
* receive keyboard focus.
|
|
222
|
+
* For example, if a FAB in the fixed slot should receive keyboard focus before
|
|
223
|
+
* the main page content, set this property to `'before'`.
|
|
224
|
+
*/
|
|
225
|
+
fixedSlotPlacement = 'after';
|
|
226
|
+
/**
|
|
227
|
+
* If `true` and the content does not cause an overflow scroll, the scroll interaction will cause a bounce.
|
|
228
|
+
* If the content exceeds the bounds of ionContent, nothing will change.
|
|
229
|
+
* Note, this does not disable the system bounce on iOS. That is an OS level setting.
|
|
230
|
+
*/
|
|
231
|
+
forceOverscroll;
|
|
232
|
+
/**
|
|
233
|
+
* If you want to enable the content scrolling in the X axis, set this property to `true`.
|
|
234
|
+
*/
|
|
235
|
+
scrollX = false;
|
|
236
|
+
/**
|
|
237
|
+
* If you want to disable the content scrolling in the Y axis, set this property to `false`.
|
|
238
|
+
*/
|
|
239
|
+
scrollY = true;
|
|
240
|
+
/**
|
|
241
|
+
* Because of performance reasons, ionScroll events are disabled by default, in order to enable them
|
|
242
|
+
* and start listening from (ionScroll), set this property to `true`.
|
|
243
|
+
*/
|
|
244
|
+
scrollEvents = false;
|
|
245
|
+
/**
|
|
246
|
+
* Emitted when the scroll has started. This event is disabled by default.
|
|
247
|
+
* Set `scrollEvents` to `true` to enable.
|
|
248
|
+
*/
|
|
249
|
+
ionScrollStart;
|
|
250
|
+
/**
|
|
251
|
+
* Emitted while scrolling. This event is disabled by default.
|
|
252
|
+
* Set `scrollEvents` to `true` to enable.
|
|
253
|
+
*/
|
|
254
|
+
ionScroll;
|
|
255
|
+
/**
|
|
256
|
+
* Emitted when the scroll has ended. This event is disabled by default.
|
|
257
|
+
* Set `scrollEvents` to `true` to enable.
|
|
258
|
+
*/
|
|
259
|
+
ionScrollEnd;
|
|
159
260
|
componentWillLoad() {
|
|
160
261
|
this.inheritedAttributes = inheritAriaAttributes(this.el);
|
|
161
262
|
}
|
|
@@ -252,8 +353,9 @@ const Content = class {
|
|
|
252
353
|
this.resize();
|
|
253
354
|
}, 100);
|
|
254
355
|
}
|
|
255
|
-
shouldForceOverscroll(
|
|
356
|
+
shouldForceOverscroll() {
|
|
256
357
|
const { forceOverscroll } = this;
|
|
358
|
+
const mode = getIonMode(this);
|
|
257
359
|
return forceOverscroll === undefined ? mode === 'ios' && isPlatform('ios') : forceOverscroll;
|
|
258
360
|
}
|
|
259
361
|
resize() {
|
|
@@ -449,13 +551,12 @@ const Content = class {
|
|
|
449
551
|
render() {
|
|
450
552
|
const { fixedSlotPlacement, inheritedAttributes, isMainContent, scrollX, scrollY, el } = this;
|
|
451
553
|
const rtl = isRTL(el) ? 'rtl' : 'ltr';
|
|
452
|
-
const
|
|
453
|
-
const
|
|
454
|
-
const
|
|
455
|
-
const transitionShadow = theme === 'ios';
|
|
554
|
+
const mode = getIonMode(this);
|
|
555
|
+
const forceOverscroll = this.shouldForceOverscroll();
|
|
556
|
+
const transitionShadow = mode === 'ios';
|
|
456
557
|
this.resize();
|
|
457
|
-
return (h(Host,
|
|
458
|
-
[
|
|
558
|
+
return (h(Host, { key: '8c1bc4a4df8698d3884741eb38512dc059210c50', role: isMainContent ? 'main' : undefined, class: createColorClasses(this.color, {
|
|
559
|
+
[mode]: true,
|
|
459
560
|
'content-fullscreen': this.fullscreen,
|
|
460
561
|
'content-sizing': hostContext('ion-popover', this.el),
|
|
461
562
|
overscroll: forceOverscroll,
|
|
@@ -463,22 +564,20 @@ const Content = class {
|
|
|
463
564
|
}), style: {
|
|
464
565
|
'--offset-top': `${this.cTop}px`,
|
|
465
566
|
'--offset-bottom': `${this.cBottom}px`,
|
|
466
|
-
}
|
|
567
|
+
}, ...inheritedAttributes }, h("div", { key: '5e7412549b51ef7543d9378ecab9aac6bc461588', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? h("slot", { name: "fixed" }) : null, h("div", { key: '33f6fbf7e1e027c7cbd2dda95b487f18dc648cef', class: {
|
|
467
568
|
'inner-scroll': true,
|
|
468
569
|
'scroll-x': scrollX,
|
|
469
570
|
'scroll-y': scrollY,
|
|
470
571
|
overscroll: (scrollX || scrollY) && forceOverscroll,
|
|
471
|
-
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, h("slot", { key: '
|
|
572
|
+
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, h("slot", { key: '00c8fe7b9e73533c702273c9457d274195d54e98' })), transitionShadow ? (h("div", { class: "transition-effect" }, h("div", { class: "transition-cover" }), h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? h("slot", { name: "fixed" }) : null));
|
|
472
573
|
}
|
|
473
|
-
get el() { return getElement(this); }
|
|
474
574
|
};
|
|
475
575
|
const getParentElement = (el) => {
|
|
476
|
-
var _a;
|
|
477
576
|
if (el.parentElement) {
|
|
478
577
|
// normal element with a parent element
|
|
479
578
|
return el.parentElement;
|
|
480
579
|
}
|
|
481
|
-
if (
|
|
580
|
+
if (el.parentNode?.host) {
|
|
482
581
|
// shadow dom's document fragment
|
|
483
582
|
return el.parentNode.host;
|
|
484
583
|
}
|
|
@@ -494,8 +593,7 @@ const getPageElement = (el) => {
|
|
|
494
593
|
* between the popover and the edges of the screen. But if the popover contains
|
|
495
594
|
* its own page element, we should use that instead.
|
|
496
595
|
*/
|
|
497
|
-
const
|
|
498
|
-
const page = el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner, .popover-content`);
|
|
596
|
+
const page = el.closest('ion-app, ion-page, .ion-page, page-inner, .popover-content');
|
|
499
597
|
if (page) {
|
|
500
598
|
return page;
|
|
501
599
|
}
|
|
@@ -559,100 +657,34 @@ const handleFooterFade = (scrollEl, baseEl) => {
|
|
|
559
657
|
});
|
|
560
658
|
};
|
|
561
659
|
|
|
562
|
-
const
|
|
563
|
-
|
|
564
|
-
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}`;
|
|
660
|
+
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}`;
|
|
565
661
|
|
|
566
|
-
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-
|
|
662
|
+
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}`;
|
|
567
663
|
|
|
568
664
|
const Footer = class {
|
|
569
665
|
constructor(hostRef) {
|
|
570
666
|
registerInstance(this, hostRef);
|
|
571
|
-
this.keyboardCtrl = null;
|
|
572
|
-
this.keyboardCtrlPromise = null;
|
|
573
|
-
this.scrollHideCtrlPromise = null;
|
|
574
|
-
this.hasWarnedCollapse = false;
|
|
575
|
-
this.fadeSetupId = 0;
|
|
576
|
-
this.keyboardVisible = false;
|
|
577
|
-
/**
|
|
578
|
-
* If `true`, the footer will be translucent.
|
|
579
|
-
* Only applies when the theme is `"ios"` and the device supports
|
|
580
|
-
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
581
|
-
*
|
|
582
|
-
* Note: In order to scroll content behind the footer, the `fullscreen`
|
|
583
|
-
* attribute needs to be set on the content.
|
|
584
|
-
*/
|
|
585
|
-
this.translucent = false;
|
|
586
|
-
this.checkCollapsibleFooter = async () => {
|
|
587
|
-
const { scrollEffect, collapse } = this;
|
|
588
|
-
if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
|
|
589
|
-
this.hasWarnedCollapse = true;
|
|
590
|
-
printIonWarning(`[ion-footer] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-footer scroll-effect="${collapse}">`, this.el);
|
|
591
|
-
}
|
|
592
|
-
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
593
|
-
// Skip teardown/rebuild if the effect hasn't changed.
|
|
594
|
-
// This prevents keyboard toggles (which trigger re-renders via
|
|
595
|
-
// @State keyboardVisible) from destroying the scroll controller
|
|
596
|
-
// and resetting isHidden.
|
|
597
|
-
if (effect === this.activeEffect) {
|
|
598
|
-
return;
|
|
599
|
-
}
|
|
600
|
-
const hasHide = effect === 'hide';
|
|
601
|
-
const hasFade = effect === 'fade';
|
|
602
|
-
this.destroyCollapsibleFooter();
|
|
603
|
-
const appRootSelector = config.get('appRootSelector', 'ion-app');
|
|
604
|
-
const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
|
|
605
|
-
const contentEl = pageEl ? findIonContent(pageEl) : null;
|
|
606
|
-
if (hasHide && contentEl) {
|
|
607
|
-
this.activeEffect = effect;
|
|
608
|
-
await this.setupScrollEffectHide(contentEl);
|
|
609
|
-
return;
|
|
610
|
-
}
|
|
611
|
-
// fade via the deprecated `collapse` prop is iOS-only.
|
|
612
|
-
// fade via the new `scrollEffect` prop works in all themes.
|
|
613
|
-
const isModeRestricted = scrollEffect === undefined && getIonTheme(this) !== 'ios';
|
|
614
|
-
if (hasFade && !isModeRestricted) {
|
|
615
|
-
if (!contentEl) {
|
|
616
|
-
printIonContentErrorMsg(this.el);
|
|
617
|
-
return;
|
|
618
|
-
}
|
|
619
|
-
this.setupFadeFooter(contentEl);
|
|
620
|
-
this.activeEffect = effect;
|
|
621
|
-
}
|
|
622
|
-
};
|
|
623
|
-
this.setupScrollEffectHide = async (contentEl) => {
|
|
624
|
-
const setupPromise = createScrollHideController(contentEl, {
|
|
625
|
-
el: this.el,
|
|
626
|
-
cssVar: '--internal-footer-hide-height',
|
|
627
|
-
hiddenClass: 'footer-scroll-hidden',
|
|
628
|
-
contentPartnerClass: 'content-footer-hide-scroll-partner',
|
|
629
|
-
contentHiddenClass: 'content-footer-hide-scroll-hidden',
|
|
630
|
-
});
|
|
631
|
-
this.scrollHideCtrlPromise = setupPromise;
|
|
632
|
-
const controller = await setupPromise;
|
|
633
|
-
if (this.scrollHideCtrlPromise === setupPromise) {
|
|
634
|
-
this.scrollHideCtrlPromise = null;
|
|
635
|
-
controller.init();
|
|
636
|
-
this.scrollHideCtrl = controller;
|
|
637
|
-
}
|
|
638
|
-
};
|
|
639
|
-
this.setupFadeFooter = async (contentEl) => {
|
|
640
|
-
const setupId = ++this.fadeSetupId;
|
|
641
|
-
const scrollEl = await getScrollElement(contentEl);
|
|
642
|
-
if (this.fadeSetupId !== setupId) {
|
|
643
|
-
return;
|
|
644
|
-
}
|
|
645
|
-
this.scrollEl = scrollEl;
|
|
646
|
-
/**
|
|
647
|
-
* Handle fading of toolbars on scroll
|
|
648
|
-
*/
|
|
649
|
-
this.contentScrollCallback = () => {
|
|
650
|
-
handleFooterFade(scrollEl, this.el);
|
|
651
|
-
};
|
|
652
|
-
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
653
|
-
handleFooterFade(scrollEl, this.el);
|
|
654
|
-
};
|
|
655
667
|
}
|
|
668
|
+
scrollEl;
|
|
669
|
+
contentScrollCallback;
|
|
670
|
+
keyboardCtrl = null;
|
|
671
|
+
keyboardCtrlPromise = null;
|
|
672
|
+
keyboardVisible = false;
|
|
673
|
+
get el() { return getElement(this); }
|
|
674
|
+
/**
|
|
675
|
+
* Describes the scroll effect that will be applied to the footer.
|
|
676
|
+
* Only applies in iOS mode.
|
|
677
|
+
*/
|
|
678
|
+
collapse;
|
|
679
|
+
/**
|
|
680
|
+
* If `true`, the footer will be translucent.
|
|
681
|
+
* Only applies when the mode is `"ios"` and the device supports
|
|
682
|
+
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
683
|
+
*
|
|
684
|
+
* Note: In order to scroll content behind the footer, the `fullscreen`
|
|
685
|
+
* attribute needs to be set on the content.
|
|
686
|
+
*/
|
|
687
|
+
translucent = false;
|
|
656
688
|
componentDidLoad() {
|
|
657
689
|
this.checkCollapsibleFooter();
|
|
658
690
|
}
|
|
@@ -687,7 +719,6 @@ const Footer = class {
|
|
|
687
719
|
}
|
|
688
720
|
}
|
|
689
721
|
disconnectedCallback() {
|
|
690
|
-
this.destroyCollapsibleFooter();
|
|
691
722
|
if (this.keyboardCtrlPromise) {
|
|
692
723
|
this.keyboardCtrlPromise.then((ctrl) => ctrl.destroy());
|
|
693
724
|
this.keyboardCtrlPromise = null;
|
|
@@ -697,44 +728,58 @@ const Footer = class {
|
|
|
697
728
|
this.keyboardCtrl = null;
|
|
698
729
|
}
|
|
699
730
|
}
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
731
|
+
checkCollapsibleFooter = () => {
|
|
732
|
+
const mode = getIonMode(this);
|
|
733
|
+
if (mode !== 'ios') {
|
|
734
|
+
return;
|
|
735
|
+
}
|
|
736
|
+
const { collapse } = this;
|
|
737
|
+
const hasFade = collapse === 'fade';
|
|
738
|
+
this.destroyCollapsibleFooter();
|
|
739
|
+
if (hasFade) {
|
|
740
|
+
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
741
|
+
const contentEl = pageEl ? findIonContent(pageEl) : null;
|
|
742
|
+
if (!contentEl) {
|
|
743
|
+
printIonContentErrorMsg(this.el);
|
|
744
|
+
return;
|
|
745
|
+
}
|
|
746
|
+
this.setupFadeFooter(contentEl);
|
|
707
747
|
}
|
|
748
|
+
};
|
|
749
|
+
setupFadeFooter = async (contentEl) => {
|
|
750
|
+
const scrollEl = (this.scrollEl = await getScrollElement(contentEl));
|
|
751
|
+
/**
|
|
752
|
+
* Handle fading of toolbars on scroll
|
|
753
|
+
*/
|
|
754
|
+
this.contentScrollCallback = () => {
|
|
755
|
+
handleFooterFade(scrollEl, this.el);
|
|
756
|
+
};
|
|
757
|
+
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
758
|
+
handleFooterFade(scrollEl, this.el);
|
|
759
|
+
};
|
|
760
|
+
destroyCollapsibleFooter() {
|
|
708
761
|
if (this.scrollEl && this.contentScrollCallback) {
|
|
709
762
|
this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
|
|
710
763
|
this.contentScrollCallback = undefined;
|
|
711
764
|
}
|
|
712
765
|
}
|
|
713
766
|
render() {
|
|
714
|
-
const { translucent,
|
|
715
|
-
const
|
|
716
|
-
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
717
|
-
// fade via the deprecated `collapse` prop is iOS-only.
|
|
718
|
-
const isModeRestricted = scrollEffect === undefined && theme !== 'ios';
|
|
719
|
-
const hasHide = effect === 'hide';
|
|
720
|
-
const hasFade = effect === 'fade' && !isModeRestricted;
|
|
767
|
+
const { translucent, collapse } = this;
|
|
768
|
+
const mode = getIonMode(this);
|
|
721
769
|
const tabs = this.el.closest('ion-tabs');
|
|
722
|
-
const tabBar = tabs
|
|
723
|
-
return (h(Host, { key: '
|
|
724
|
-
[
|
|
770
|
+
const tabBar = tabs?.querySelector(':scope > ion-tab-bar');
|
|
771
|
+
return (h(Host, { key: '71939c4bbaef5062532a99ee2e33574102a9abad', role: "contentinfo", class: {
|
|
772
|
+
[mode]: true,
|
|
725
773
|
// Used internally for styling
|
|
726
|
-
[`footer-${
|
|
774
|
+
[`footer-${mode}`]: true,
|
|
727
775
|
[`footer-translucent`]: translucent,
|
|
728
|
-
[`footer-translucent-${
|
|
776
|
+
[`footer-translucent-${mode}`]: translucent,
|
|
729
777
|
['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
} }, theme === 'ios' && translucent && h("div", { key: 'd78b46870cbf11c95b066d649c04ec398b66e614', class: "footer-background" }), h("slot", { key: '9dc34787cd29597fe1b1198db317602014ac1483' })));
|
|
778
|
+
[`footer-collapse-${collapse}`]: collapse !== undefined,
|
|
779
|
+
} }, mode === 'ios' && translucent && h("div", { key: '2fa14f61661c47c661cecd696176728d6eafa74f', class: "footer-background" }), h("slot", { key: '8e63696e7c528d5c38201e546bf08135290d0945' })));
|
|
733
780
|
}
|
|
734
|
-
get el() { return getElement(this); }
|
|
735
781
|
};
|
|
736
782
|
Footer.style = {
|
|
737
|
-
ionic: ionicFooterMdCss(),
|
|
738
783
|
ios: footerIosCss(),
|
|
739
784
|
md: footerMdCss()
|
|
740
785
|
};
|
|
@@ -786,14 +831,13 @@ const handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {
|
|
|
786
831
|
});
|
|
787
832
|
};
|
|
788
833
|
const setToolbarBackgroundOpacity = (headerEl, opacity) => {
|
|
789
|
-
var _a;
|
|
790
834
|
/**
|
|
791
835
|
* Fading in the backdrop opacity
|
|
792
836
|
* should happen after the large title
|
|
793
837
|
* has collapsed, so it is handled
|
|
794
838
|
* by handleHeaderFade()
|
|
795
839
|
*/
|
|
796
|
-
if (
|
|
840
|
+
if (headerEl.collapse === 'fade') {
|
|
797
841
|
return;
|
|
798
842
|
}
|
|
799
843
|
if (opacity === undefined) {
|
|
@@ -951,79 +995,57 @@ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
|
|
|
951
995
|
* Get the role type for the ion-header.
|
|
952
996
|
*
|
|
953
997
|
* @param isInsideMenu If ion-header is inside ion-menu.
|
|
954
|
-
* @
|
|
955
|
-
*
|
|
956
|
-
*
|
|
998
|
+
* @param isCondensed If ion-header has collapse="condense".
|
|
999
|
+
* @param mode The current mode.
|
|
1000
|
+
* @returns 'none' if inside ion-menu or if condensed in md
|
|
1001
|
+
* mode, otherwise 'banner'.
|
|
957
1002
|
*/
|
|
958
|
-
const getRoleType = (isInsideMenu) => {
|
|
1003
|
+
const getRoleType = (isInsideMenu, isCondensed, mode) => {
|
|
959
1004
|
// If the header is inside a menu, it should not have the banner role.
|
|
960
1005
|
if (isInsideMenu) {
|
|
961
1006
|
return ROLE_NONE;
|
|
962
1007
|
}
|
|
1008
|
+
/**
|
|
1009
|
+
* Only apply role="none" to `md` mode condensed headers
|
|
1010
|
+
* since the large header is never shown.
|
|
1011
|
+
*/
|
|
1012
|
+
if (isCondensed && mode === 'md') {
|
|
1013
|
+
return ROLE_NONE;
|
|
1014
|
+
}
|
|
963
1015
|
// Default to banner role.
|
|
964
1016
|
return ROLE_BANNER;
|
|
965
1017
|
};
|
|
966
1018
|
|
|
967
|
-
const
|
|
1019
|
+
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}`;
|
|
968
1020
|
|
|
969
|
-
const
|
|
970
|
-
|
|
971
|
-
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}`;
|
|
1021
|
+
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}`;
|
|
972
1022
|
|
|
973
1023
|
const Header = class {
|
|
974
1024
|
constructor(hostRef) {
|
|
975
1025
|
registerInstance(this, hostRef);
|
|
976
|
-
this.inheritedAttributes = {};
|
|
977
|
-
this.scrollHideCtrlPromise = null;
|
|
978
|
-
this.hasWarnedCollapse = false;
|
|
979
|
-
this.fadeCondenseSetupId = 0;
|
|
980
|
-
/**
|
|
981
|
-
* If `true`, the header will have a line at the bottom.
|
|
982
|
-
* TODO(ROU-10855): add support for this prop on ios/md themes
|
|
983
|
-
*/
|
|
984
|
-
this.divider = false;
|
|
985
|
-
/**
|
|
986
|
-
* If `true`, the header will be translucent.
|
|
987
|
-
* Only applies when the theme is `"ios"` or `"ionic"` and the device supports
|
|
988
|
-
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
989
|
-
*
|
|
990
|
-
* Note: In order to scroll content behind the header, the `fullscreen`
|
|
991
|
-
* attribute needs to be set on the content.
|
|
992
|
-
*/
|
|
993
|
-
this.translucent = false;
|
|
994
|
-
this.setupScrollEffectHide = async (contentEl) => {
|
|
995
|
-
const setupPromise = createScrollHideController(contentEl, {
|
|
996
|
-
el: this.el,
|
|
997
|
-
cssVar: '--internal-header-hide-height',
|
|
998
|
-
hiddenClass: 'header-scroll-hidden',
|
|
999
|
-
contentPartnerClass: 'content-header-hide-scroll-partner',
|
|
1000
|
-
contentHiddenClass: 'content-header-hide-scroll-hidden',
|
|
1001
|
-
});
|
|
1002
|
-
this.scrollHideCtrlPromise = setupPromise;
|
|
1003
|
-
const controller = await setupPromise;
|
|
1004
|
-
if (this.scrollHideCtrlPromise === setupPromise) {
|
|
1005
|
-
this.scrollHideCtrlPromise = null;
|
|
1006
|
-
controller.init();
|
|
1007
|
-
this.scrollHideCtrl = controller;
|
|
1008
|
-
}
|
|
1009
|
-
};
|
|
1010
|
-
this.setupFadeHeader = async (contentEl, condenseHeader) => {
|
|
1011
|
-
const setupId = ++this.fadeCondenseSetupId;
|
|
1012
|
-
const scrollEl = await getScrollElement(contentEl);
|
|
1013
|
-
if (this.fadeCondenseSetupId !== setupId) {
|
|
1014
|
-
return;
|
|
1015
|
-
}
|
|
1016
|
-
this.scrollEl = scrollEl;
|
|
1017
|
-
/**
|
|
1018
|
-
* Handle fading of toolbars on scroll
|
|
1019
|
-
*/
|
|
1020
|
-
this.contentScrollCallback = () => {
|
|
1021
|
-
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
1022
|
-
};
|
|
1023
|
-
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
1024
|
-
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
1025
|
-
};
|
|
1026
1026
|
}
|
|
1027
|
+
scrollEl;
|
|
1028
|
+
contentScrollCallback;
|
|
1029
|
+
intersectionObserver;
|
|
1030
|
+
collapsibleMainHeader;
|
|
1031
|
+
inheritedAttributes = {};
|
|
1032
|
+
get el() { return getElement(this); }
|
|
1033
|
+
/**
|
|
1034
|
+
* Describes the scroll effect that will be applied to the header.
|
|
1035
|
+
* Only applies in iOS mode.
|
|
1036
|
+
*
|
|
1037
|
+
* Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
|
|
1038
|
+
*/
|
|
1039
|
+
collapse;
|
|
1040
|
+
/**
|
|
1041
|
+
* If `true`, the header will be translucent.
|
|
1042
|
+
* Only applies when the mode is `"ios"` and the device supports
|
|
1043
|
+
* [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
|
|
1044
|
+
*
|
|
1045
|
+
* Note: In order to scroll content behind the header, the `fullscreen`
|
|
1046
|
+
* attribute needs to be set on the content.
|
|
1047
|
+
*/
|
|
1048
|
+
translucent = false;
|
|
1027
1049
|
componentWillLoad() {
|
|
1028
1050
|
this.inheritedAttributes = inheritAriaAttributes(this.el);
|
|
1029
1051
|
}
|
|
@@ -1037,63 +1059,48 @@ const Header = class {
|
|
|
1037
1059
|
this.destroyCollapsibleHeader();
|
|
1038
1060
|
}
|
|
1039
1061
|
async checkCollapsibleHeader() {
|
|
1040
|
-
const
|
|
1041
|
-
if (
|
|
1042
|
-
this.hasWarnedCollapse = true;
|
|
1043
|
-
printIonWarning(`[ion-header] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-header scroll-effect="${collapse}">`, this.el);
|
|
1044
|
-
}
|
|
1045
|
-
const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
|
|
1046
|
-
// Skip teardown/rebuild if the effect hasn't changed.
|
|
1047
|
-
// This prevents re-renders from destroying the scroll controller
|
|
1048
|
-
// and resetting isHidden.
|
|
1049
|
-
if (effect === this.activeEffect) {
|
|
1062
|
+
const mode = getIonMode(this);
|
|
1063
|
+
if (mode !== 'ios') {
|
|
1050
1064
|
return;
|
|
1051
1065
|
}
|
|
1052
|
-
const
|
|
1053
|
-
const hasCondense =
|
|
1054
|
-
const hasFade =
|
|
1066
|
+
const { collapse } = this;
|
|
1067
|
+
const hasCondense = collapse === 'condense';
|
|
1068
|
+
const hasFade = collapse === 'fade';
|
|
1055
1069
|
this.destroyCollapsibleHeader();
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
if (hasHide && contentEl) {
|
|
1060
|
-
this.activeEffect = effect;
|
|
1061
|
-
await this.setupScrollEffectHide(contentEl);
|
|
1062
|
-
return;
|
|
1063
|
-
}
|
|
1064
|
-
// condense/fade via the deprecated `collapse` prop are iOS-only.
|
|
1065
|
-
// condense/fade via the new `scrollEffect` prop work in all themes.
|
|
1066
|
-
const isModeRestricted = scrollEffect === undefined && getIonTheme(this) !== 'ios';
|
|
1067
|
-
if (hasCondense && !isModeRestricted) {
|
|
1070
|
+
if (hasCondense) {
|
|
1071
|
+
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
1072
|
+
const contentEl = pageEl ? findIonContent(pageEl) : null;
|
|
1068
1073
|
// Cloned elements are always needed in iOS transition
|
|
1069
1074
|
writeTask(() => {
|
|
1070
1075
|
const title = cloneElement('ion-title');
|
|
1071
1076
|
title.size = 'large';
|
|
1072
1077
|
cloneElement('ion-back-button');
|
|
1073
1078
|
});
|
|
1074
|
-
|
|
1075
|
-
if (didSetup) {
|
|
1076
|
-
this.activeEffect = effect;
|
|
1077
|
-
}
|
|
1079
|
+
await this.setupCondenseHeader(contentEl, pageEl);
|
|
1078
1080
|
}
|
|
1079
|
-
else if (hasFade
|
|
1081
|
+
else if (hasFade) {
|
|
1082
|
+
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
1083
|
+
const contentEl = pageEl ? findIonContent(pageEl) : null;
|
|
1080
1084
|
if (!contentEl) {
|
|
1081
1085
|
printIonContentErrorMsg(this.el);
|
|
1082
1086
|
return;
|
|
1083
1087
|
}
|
|
1084
|
-
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]
|
|
1085
|
-
this.activeEffect = effect;
|
|
1088
|
+
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
|
|
1086
1089
|
await this.setupFadeHeader(contentEl, condenseHeader);
|
|
1087
1090
|
}
|
|
1088
1091
|
}
|
|
1092
|
+
setupFadeHeader = async (contentEl, condenseHeader) => {
|
|
1093
|
+
const scrollEl = (this.scrollEl = await getScrollElement(contentEl));
|
|
1094
|
+
/**
|
|
1095
|
+
* Handle fading of toolbars on scroll
|
|
1096
|
+
*/
|
|
1097
|
+
this.contentScrollCallback = () => {
|
|
1098
|
+
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
1099
|
+
};
|
|
1100
|
+
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
1101
|
+
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
1102
|
+
};
|
|
1089
1103
|
destroyCollapsibleHeader() {
|
|
1090
|
-
this.activeEffect = undefined;
|
|
1091
|
-
this.fadeCondenseSetupId++;
|
|
1092
|
-
this.scrollHideCtrlPromise = null;
|
|
1093
|
-
if (this.scrollHideCtrl) {
|
|
1094
|
-
this.scrollHideCtrl.destroy();
|
|
1095
|
-
this.scrollHideCtrl = undefined;
|
|
1096
|
-
}
|
|
1097
1104
|
if (this.intersectionObserver) {
|
|
1098
1105
|
this.intersectionObserver.disconnect();
|
|
1099
1106
|
this.intersectionObserver = undefined;
|
|
@@ -1110,40 +1117,21 @@ const Header = class {
|
|
|
1110
1117
|
async setupCondenseHeader(contentEl, pageEl) {
|
|
1111
1118
|
if (!contentEl || !pageEl) {
|
|
1112
1119
|
printIonContentErrorMsg(this.el);
|
|
1113
|
-
return
|
|
1120
|
+
return;
|
|
1114
1121
|
}
|
|
1115
1122
|
if (typeof IntersectionObserver === 'undefined') {
|
|
1116
|
-
return
|
|
1117
|
-
}
|
|
1118
|
-
const setupId = ++this.fadeCondenseSetupId;
|
|
1119
|
-
const scrollEl = await getScrollElement(contentEl);
|
|
1120
|
-
if (this.fadeCondenseSetupId !== setupId) {
|
|
1121
|
-
return false;
|
|
1122
|
-
}
|
|
1123
|
-
this.scrollEl = scrollEl;
|
|
1124
|
-
/**
|
|
1125
|
-
* The condense effect requires an ion-title with size="large"
|
|
1126
|
-
* in the condense header. Without it, there is nothing to
|
|
1127
|
-
* collapse into the main header toolbar.
|
|
1128
|
-
*/
|
|
1129
|
-
const hasLargeTitle = this.el.querySelector('ion-title[size="large"]') !== null;
|
|
1130
|
-
if (!hasLargeTitle) {
|
|
1131
|
-
printIonWarning('[ion-header] - The condense scroll effect requires an <ion-title size="large"> in the condense header.', this.el);
|
|
1132
|
-
return false;
|
|
1123
|
+
return;
|
|
1133
1124
|
}
|
|
1125
|
+
this.scrollEl = await getScrollElement(contentEl);
|
|
1134
1126
|
const headers = pageEl.querySelectorAll('ion-header');
|
|
1135
|
-
this.collapsibleMainHeader = Array.from(headers).find((header) =>
|
|
1136
|
-
var _a;
|
|
1137
|
-
const effect = (_a = header.scrollEffect) !== null && _a !== void 0 ? _a : header.collapse;
|
|
1138
|
-
return effect !== 'condense';
|
|
1139
|
-
});
|
|
1127
|
+
this.collapsibleMainHeader = Array.from(headers).find((header) => header.collapse !== 'condense');
|
|
1140
1128
|
if (!this.collapsibleMainHeader) {
|
|
1141
|
-
return
|
|
1129
|
+
return;
|
|
1142
1130
|
}
|
|
1143
1131
|
const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);
|
|
1144
1132
|
const scrollHeaderIndex = createHeaderIndex(this.el);
|
|
1145
1133
|
if (!mainHeaderIndex || !scrollHeaderIndex) {
|
|
1146
|
-
return
|
|
1134
|
+
return;
|
|
1147
1135
|
}
|
|
1148
1136
|
setHeaderActive(mainHeaderIndex, false);
|
|
1149
1137
|
setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);
|
|
@@ -1175,45 +1163,30 @@ const Header = class {
|
|
|
1175
1163
|
this.collapsibleMainHeader.classList.add('header-collapse-main');
|
|
1176
1164
|
}
|
|
1177
1165
|
});
|
|
1178
|
-
return true;
|
|
1179
1166
|
}
|
|
1180
1167
|
render() {
|
|
1181
|
-
const { translucent, inheritedAttributes
|
|
1182
|
-
const
|
|
1183
|
-
const
|
|
1184
|
-
|
|
1185
|
-
const isModeRestricted = scrollEffect === undefined && theme !== 'ios';
|
|
1186
|
-
const hasHide = effect === 'hide';
|
|
1187
|
-
const hasCondense = effect === 'condense' && !isModeRestricted && this.el.querySelector('ion-title[size="large"]') !== null;
|
|
1188
|
-
const hasFade = effect === 'fade' && !isModeRestricted;
|
|
1189
|
-
// The condense header should be hidden when
|
|
1190
|
-
// - deprecated collapse prop is used on non-iOS (mode restricted), or
|
|
1191
|
-
// - scrollEffect="condense" is set but no ion-title[size="large"] is present
|
|
1192
|
-
const isHiddenCondense = effect === 'condense' && !hasCondense;
|
|
1168
|
+
const { translucent, inheritedAttributes } = this;
|
|
1169
|
+
const mode = getIonMode(this);
|
|
1170
|
+
const collapse = this.collapse || 'none';
|
|
1171
|
+
const isCondensed = collapse === 'condense';
|
|
1193
1172
|
// banner role must be at top level, so remove role if inside a menu
|
|
1194
|
-
const roleType =
|
|
1195
|
-
return (h(Host,
|
|
1196
|
-
[
|
|
1173
|
+
const roleType = getRoleType(hostContext('ion-menu', this.el), isCondensed, mode);
|
|
1174
|
+
return (h(Host, { key: '863c4568cd7b8c0ec55109f193bbbaed68a1346e', role: roleType, class: {
|
|
1175
|
+
[mode]: true,
|
|
1197
1176
|
// Used internally for styling
|
|
1198
|
-
[`header-${
|
|
1177
|
+
[`header-${mode}`]: true,
|
|
1199
1178
|
[`header-translucent`]: this.translucent,
|
|
1200
|
-
[
|
|
1201
|
-
[
|
|
1202
|
-
|
|
1203
|
-
[`header-translucent-${theme}`]: this.translucent,
|
|
1204
|
-
['header-divider']: divider,
|
|
1205
|
-
'header-scroll-effect-hide': hasHide,
|
|
1206
|
-
} }, inheritedAttributes), theme !== 'md' && translucent && h("div", { key: 'fd5ff245ae0166e5e1d50936cacc98c90625db48', class: "header-background" }), h("slot", { key: '1baa31af87b9eb6406a21073ec65afa191dfbb3d' })));
|
|
1179
|
+
[`header-collapse-${collapse}`]: true,
|
|
1180
|
+
[`header-translucent-${mode}`]: this.translucent,
|
|
1181
|
+
}, ...inheritedAttributes }, mode === 'ios' && translucent && h("div", { key: '25c3bdce328b0b35607d154c8b8374679313d881', class: "header-background" }), h("slot", { key: 'b44fab0a9be7920b9650da26117c783e751e1702' })));
|
|
1207
1182
|
}
|
|
1208
|
-
get el() { return getElement(this); }
|
|
1209
1183
|
};
|
|
1210
1184
|
Header.style = {
|
|
1211
|
-
ionic: headerIonicCss(),
|
|
1212
1185
|
ios: headerIosCss(),
|
|
1213
1186
|
md: headerMdCss()
|
|
1214
1187
|
};
|
|
1215
1188
|
|
|
1216
|
-
const routerOutletCss = () => `:host{
|
|
1189
|
+
const routerOutletCss = () => `:host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
|
|
1217
1190
|
|
|
1218
1191
|
const RouterOutlet = class {
|
|
1219
1192
|
constructor(hostRef) {
|
|
@@ -1221,22 +1194,47 @@ const RouterOutlet = class {
|
|
|
1221
1194
|
this.ionNavWillLoad = createEvent(this, "ionNavWillLoad", 7);
|
|
1222
1195
|
this.ionNavWillChange = createEvent(this, "ionNavWillChange", 3);
|
|
1223
1196
|
this.ionNavDidChange = createEvent(this, "ionNavDidChange", 3);
|
|
1224
|
-
this.lockController = createLockController();
|
|
1225
|
-
this.gestureOrAnimationInProgress = false;
|
|
1226
|
-
/**
|
|
1227
|
-
* The mode determines the platform behaviors of the component.
|
|
1228
|
-
*/
|
|
1229
|
-
this.mode = getIonMode(this);
|
|
1230
|
-
/**
|
|
1231
|
-
* If `true`, the router-outlet should animate the transition of components.
|
|
1232
|
-
*/
|
|
1233
|
-
this.animated = true;
|
|
1234
1197
|
}
|
|
1198
|
+
lockController = createLockController();
|
|
1199
|
+
activeEl;
|
|
1200
|
+
// TODO(FW-2832): types
|
|
1201
|
+
activeComponent;
|
|
1202
|
+
activeParams;
|
|
1203
|
+
gesture;
|
|
1204
|
+
ani;
|
|
1205
|
+
gestureOrAnimationInProgress = false;
|
|
1206
|
+
get el() { return getElement(this); }
|
|
1207
|
+
/**
|
|
1208
|
+
* The mode determines which platform styles to use.
|
|
1209
|
+
*/
|
|
1210
|
+
mode = getIonMode(this);
|
|
1211
|
+
/** @internal */
|
|
1212
|
+
delegate;
|
|
1213
|
+
/**
|
|
1214
|
+
* If `true`, the router-outlet should animate the transition of components.
|
|
1215
|
+
*/
|
|
1216
|
+
animated = true;
|
|
1217
|
+
/** This property allows to create custom transition using AnimationBuilder functions. */
|
|
1218
|
+
animation;
|
|
1219
|
+
/**
|
|
1220
|
+
* If `true`, the router-outlet should allow navigation via swipe-to-go-back gesture.
|
|
1221
|
+
* Defaults to `true` for `"ios"` mode and `false` for `"md"` mode.
|
|
1222
|
+
*/
|
|
1223
|
+
swipeGesture;
|
|
1224
|
+
swipeGestureChanged() {
|
|
1225
|
+
this.updateGestureEnabled();
|
|
1226
|
+
}
|
|
1227
|
+
/** @internal */
|
|
1228
|
+
swipeHandler;
|
|
1235
1229
|
swipeHandlerChanged() {
|
|
1236
|
-
|
|
1237
|
-
this.gesture.enable(this.swipeHandler !== undefined);
|
|
1238
|
-
}
|
|
1230
|
+
this.updateGestureEnabled();
|
|
1239
1231
|
}
|
|
1232
|
+
/** @internal */
|
|
1233
|
+
ionNavWillLoad;
|
|
1234
|
+
/** @internal */
|
|
1235
|
+
ionNavWillChange;
|
|
1236
|
+
/** @internal */
|
|
1237
|
+
ionNavDidChange;
|
|
1240
1238
|
async connectedCallback() {
|
|
1241
1239
|
const onStart = () => {
|
|
1242
1240
|
this.gestureOrAnimationInProgress = true;
|
|
@@ -1244,7 +1242,7 @@ const RouterOutlet = class {
|
|
|
1244
1242
|
this.swipeHandler.onStart();
|
|
1245
1243
|
}
|
|
1246
1244
|
};
|
|
1247
|
-
this.gesture = (await import('./swipe-back-
|
|
1245
|
+
this.gesture = (await import('./swipe-back-D6YSgAn7.js')).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), (step) => this.ani?.progressStep(step), (shouldComplete, step, dur) => {
|
|
1248
1246
|
if (this.ani) {
|
|
1249
1247
|
this.ani.onFinish(() => {
|
|
1250
1248
|
this.gestureOrAnimationInProgress = false;
|
|
@@ -1275,11 +1273,21 @@ const RouterOutlet = class {
|
|
|
1275
1273
|
this.gestureOrAnimationInProgress = false;
|
|
1276
1274
|
}
|
|
1277
1275
|
});
|
|
1278
|
-
this.
|
|
1276
|
+
if (this.swipeGesture === undefined) {
|
|
1277
|
+
this.swipeGesture = config.getBoolean('swipeBackEnabled', this.mode === 'ios');
|
|
1278
|
+
}
|
|
1279
|
+
else {
|
|
1280
|
+
this.updateGestureEnabled();
|
|
1281
|
+
}
|
|
1279
1282
|
}
|
|
1280
1283
|
componentWillLoad() {
|
|
1281
1284
|
this.ionNavWillLoad.emit();
|
|
1282
1285
|
}
|
|
1286
|
+
updateGestureEnabled() {
|
|
1287
|
+
if (this.gesture) {
|
|
1288
|
+
this.gesture.enable(this.swipeHandler !== undefined && this.swipeGesture === true);
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
1283
1291
|
disconnectedCallback() {
|
|
1284
1292
|
if (this.gesture) {
|
|
1285
1293
|
this.gesture.destroy();
|
|
@@ -1346,16 +1354,19 @@ const RouterOutlet = class {
|
|
|
1346
1354
|
const { el, mode } = this;
|
|
1347
1355
|
const animated = this.animated && config.getBoolean('animated', true);
|
|
1348
1356
|
const animationBuilder = opts.animationBuilder || this.animation || config.get('navAnimation');
|
|
1349
|
-
await transition(
|
|
1357
|
+
await transition({
|
|
1358
|
+
mode,
|
|
1350
1359
|
animated,
|
|
1351
1360
|
enteringEl,
|
|
1352
|
-
leavingEl,
|
|
1361
|
+
leavingEl,
|
|
1362
|
+
baseEl: el,
|
|
1353
1363
|
/**
|
|
1354
1364
|
* We need to wait for all Stencil components
|
|
1355
1365
|
* to be ready only when using the lazy
|
|
1356
1366
|
* loaded bundle.
|
|
1357
1367
|
*/
|
|
1358
|
-
deepWait: hasLazyBuild(el),
|
|
1368
|
+
deepWait: hasLazyBuild(el),
|
|
1369
|
+
progressCallback: opts.progressAnimation
|
|
1359
1370
|
? (ani) => {
|
|
1360
1371
|
/**
|
|
1361
1372
|
* Because this progress callback is called asynchronously
|
|
@@ -1384,16 +1395,21 @@ const RouterOutlet = class {
|
|
|
1384
1395
|
this.ani = ani;
|
|
1385
1396
|
}
|
|
1386
1397
|
}
|
|
1387
|
-
: undefined
|
|
1398
|
+
: undefined,
|
|
1399
|
+
...opts,
|
|
1400
|
+
animationBuilder,
|
|
1401
|
+
});
|
|
1388
1402
|
// emit nav changed event
|
|
1389
1403
|
this.ionNavDidChange.emit();
|
|
1390
1404
|
return true;
|
|
1391
1405
|
}
|
|
1392
1406
|
render() {
|
|
1393
|
-
return h("slot", { key: '
|
|
1407
|
+
return h("slot", { key: 'ce09e6fbba7b0a2276cdde5245bb37c9a162c1c7' });
|
|
1394
1408
|
}
|
|
1395
|
-
get el() { return getElement(this); }
|
|
1396
1409
|
static get watchers() { return {
|
|
1410
|
+
"swipeGesture": [{
|
|
1411
|
+
"swipeGestureChanged": 0
|
|
1412
|
+
}],
|
|
1397
1413
|
"swipeHandler": [{
|
|
1398
1414
|
"swipeHandlerChanged": 0
|
|
1399
1415
|
}]
|
|
@@ -1401,17 +1417,31 @@ const RouterOutlet = class {
|
|
|
1401
1417
|
};
|
|
1402
1418
|
RouterOutlet.style = routerOutletCss();
|
|
1403
1419
|
|
|
1404
|
-
const
|
|
1405
|
-
|
|
1406
|
-
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)}}`;
|
|
1420
|
+
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)}}`;
|
|
1407
1421
|
|
|
1408
|
-
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
|
|
1422
|
+
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}`;
|
|
1409
1423
|
|
|
1410
1424
|
const ToolbarTitle = class {
|
|
1411
1425
|
constructor(hostRef) {
|
|
1412
1426
|
registerInstance(this, hostRef);
|
|
1413
1427
|
this.ionStyle = createEvent(this, "ionStyle", 7);
|
|
1414
1428
|
}
|
|
1429
|
+
get el() { return getElement(this); }
|
|
1430
|
+
/**
|
|
1431
|
+
* The color to use from your application's color palette.
|
|
1432
|
+
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
1433
|
+
* For more information on colors, see [theming](/docs/theming/basics).
|
|
1434
|
+
*/
|
|
1435
|
+
color;
|
|
1436
|
+
/**
|
|
1437
|
+
* The size of the toolbar title.
|
|
1438
|
+
*/
|
|
1439
|
+
size;
|
|
1440
|
+
/**
|
|
1441
|
+
* Emitted when the styles change.
|
|
1442
|
+
* @internal
|
|
1443
|
+
*/
|
|
1444
|
+
ionStyle;
|
|
1415
1445
|
sizeChanged() {
|
|
1416
1446
|
this.emitStyle();
|
|
1417
1447
|
}
|
|
@@ -1428,15 +1458,14 @@ const ToolbarTitle = class {
|
|
|
1428
1458
|
return this.size !== undefined ? this.size : 'default';
|
|
1429
1459
|
}
|
|
1430
1460
|
render() {
|
|
1431
|
-
const
|
|
1461
|
+
const mode = getIonMode(this);
|
|
1432
1462
|
const size = this.getSize();
|
|
1433
|
-
return (h(Host, { key: '
|
|
1434
|
-
[
|
|
1463
|
+
return (h(Host, { key: 'd9317e8e66cb6112717f5a9c252658777efbd873', class: createColorClasses(this.color, {
|
|
1464
|
+
[mode]: true,
|
|
1435
1465
|
[`title-${size}`]: true,
|
|
1436
1466
|
'title-rtl': document.dir === 'rtl',
|
|
1437
|
-
}) }, h("div", { key: '
|
|
1467
|
+
}) }, h("div", { key: 'a4d011d6d409bf006d8efe33667002edb109820a', class: "toolbar-title" }, h("slot", { key: '4ca3303b957a0e5387f1e9058e5adb4c6275afcc' }))));
|
|
1438
1468
|
}
|
|
1439
|
-
get el() { return getElement(this); }
|
|
1440
1469
|
static get watchers() { return {
|
|
1441
1470
|
"size": [{
|
|
1442
1471
|
"sizeChanged": 0
|
|
@@ -1444,30 +1473,26 @@ const ToolbarTitle = class {
|
|
|
1444
1473
|
}; }
|
|
1445
1474
|
};
|
|
1446
1475
|
ToolbarTitle.style = {
|
|
1447
|
-
ionic: titleIonicCss(),
|
|
1448
1476
|
ios: titleIosCss(),
|
|
1449
1477
|
md: titleMdCss()
|
|
1450
1478
|
};
|
|
1451
1479
|
|
|
1452
|
-
const
|
|
1480
|
+
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%}`;
|
|
1453
1481
|
|
|
1454
|
-
const
|
|
1455
|
-
|
|
1456
|
-
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}`;
|
|
1482
|
+
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}`;
|
|
1457
1483
|
|
|
1458
1484
|
const Toolbar = class {
|
|
1459
1485
|
constructor(hostRef) {
|
|
1460
1486
|
registerInstance(this, hostRef);
|
|
1461
|
-
this.childrenStyles = new Map();
|
|
1462
|
-
this.slotClasses = [
|
|
1463
|
-
'has-start-content',
|
|
1464
|
-
'has-end-content',
|
|
1465
|
-
'has-primary-content',
|
|
1466
|
-
'has-secondary-content',
|
|
1467
|
-
];
|
|
1468
|
-
this.showClasses = ['show-start', 'show-end', 'show-primary', 'show-secondary'];
|
|
1469
|
-
this.slotSizeVars = ['--start-end-size', '--primary-secondary-size'];
|
|
1470
1487
|
}
|
|
1488
|
+
childrenStyles = new Map();
|
|
1489
|
+
get el() { return getElement(this); }
|
|
1490
|
+
/**
|
|
1491
|
+
* The color to use from your application's color palette.
|
|
1492
|
+
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
1493
|
+
* For more information on colors, see [theming](/docs/theming/basics).
|
|
1494
|
+
*/
|
|
1495
|
+
color;
|
|
1471
1496
|
componentWillLoad() {
|
|
1472
1497
|
const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));
|
|
1473
1498
|
const firstButtons = buttons.find((button) => {
|
|
@@ -1483,173 +1508,6 @@ const Toolbar = class {
|
|
|
1483
1508
|
if (lastButtons) {
|
|
1484
1509
|
lastButtons.classList.add('buttons-last-slot');
|
|
1485
1510
|
}
|
|
1486
|
-
this.updateSlotClasses();
|
|
1487
|
-
}
|
|
1488
|
-
componentDidLoad() {
|
|
1489
|
-
this.updateSlotClasses();
|
|
1490
|
-
this.updateSlotWidths();
|
|
1491
|
-
}
|
|
1492
|
-
titlePlacementChanged() {
|
|
1493
|
-
this.updateSlotClasses();
|
|
1494
|
-
}
|
|
1495
|
-
/**
|
|
1496
|
-
* Gets the title placement.
|
|
1497
|
-
* Returns the title placement if it is set, otherwise returns `"center"`
|
|
1498
|
-
* for `ionic` and `ios`, and `"start"` for `md`.
|
|
1499
|
-
*/
|
|
1500
|
-
getTitlePlacement() {
|
|
1501
|
-
if (this.titlePlacement !== undefined) {
|
|
1502
|
-
return this.titlePlacement;
|
|
1503
|
-
}
|
|
1504
|
-
return getIonTheme(this) === 'ionic' || getIonTheme(this) === 'ios' ? 'center' : 'start';
|
|
1505
|
-
}
|
|
1506
|
-
/**
|
|
1507
|
-
* Updates the CSS custom properties for slot widths
|
|
1508
|
-
* This ensures that slots shown by their met conditions
|
|
1509
|
-
* have a minimum width matching their required slot
|
|
1510
|
-
*/
|
|
1511
|
-
updateSlotWidths(tries = 0) {
|
|
1512
|
-
// Set timeout to try to execute after everything is rendered
|
|
1513
|
-
setTimeout(() => {
|
|
1514
|
-
// Attempt to measure and update
|
|
1515
|
-
const success = this.measureAndUpdateSlots();
|
|
1516
|
-
// If not all measurements were successful, try again in 100 ms
|
|
1517
|
-
// cap recursion at 5 tries for safety
|
|
1518
|
-
if (!success && tries < 5) {
|
|
1519
|
-
setTimeout(() => {
|
|
1520
|
-
this.updateSlotWidths(tries + 1);
|
|
1521
|
-
}, 100);
|
|
1522
|
-
}
|
|
1523
|
-
});
|
|
1524
|
-
}
|
|
1525
|
-
/**
|
|
1526
|
-
* Measure the widths of the slots and update the CSS custom properties
|
|
1527
|
-
* for the minimum width of each pair of slots based on the largest width in each pair.
|
|
1528
|
-
* Returns whether we successfully measured all of the slots we expect to have content.
|
|
1529
|
-
* If not, the content probably hasn't rendered yet and we need to try again.
|
|
1530
|
-
*/
|
|
1531
|
-
measureAndUpdateSlots() {
|
|
1532
|
-
// Define the relationship between slots based on the conditions array
|
|
1533
|
-
// Group slots that should have the same width
|
|
1534
|
-
const slotPairs = [
|
|
1535
|
-
{ name: 'start-end', slots: ['start', 'end'] },
|
|
1536
|
-
{ name: 'primary-secondary', slots: ['primary', 'secondary'] },
|
|
1537
|
-
];
|
|
1538
|
-
// First, measure all slot widths
|
|
1539
|
-
const slotWidths = new Map();
|
|
1540
|
-
let allMeasurementsSuccessful = true;
|
|
1541
|
-
// Measure all slots with content
|
|
1542
|
-
const slots = ['start', 'end', 'primary', 'secondary'];
|
|
1543
|
-
slots.forEach((slot) => {
|
|
1544
|
-
var _a;
|
|
1545
|
-
if (this.el.classList.contains(`has-${slot}-content`)) {
|
|
1546
|
-
const slotElement = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slot}"]`);
|
|
1547
|
-
if (slotElement) {
|
|
1548
|
-
// Check if the slot contains an img or ion-img
|
|
1549
|
-
const assignedElements = slotElement.assignedElements({ flatten: true });
|
|
1550
|
-
const hasImg = assignedElements.some((el) => {
|
|
1551
|
-
if (el.tagName === 'IMG' || el.tagName === 'ION-IMG') {
|
|
1552
|
-
return true;
|
|
1553
|
-
}
|
|
1554
|
-
// Check for nested images
|
|
1555
|
-
return el.querySelector('img, ion-img');
|
|
1556
|
-
});
|
|
1557
|
-
// Temporarily allow slot to size to content by setting flex-basis
|
|
1558
|
-
// to 'auto'. This ensures that slotted images can render at their
|
|
1559
|
-
// intrinsic width for measurement.
|
|
1560
|
-
if (hasImg) {
|
|
1561
|
-
const { name } = slotPairs.find((pair) => pair.slots.includes(slot));
|
|
1562
|
-
this.el.style.setProperty(`--${name}-size`, 'auto');
|
|
1563
|
-
}
|
|
1564
|
-
const width = slotElement.offsetWidth;
|
|
1565
|
-
if (width > 0) {
|
|
1566
|
-
slotWidths.set(slot, width);
|
|
1567
|
-
}
|
|
1568
|
-
else {
|
|
1569
|
-
allMeasurementsSuccessful = false;
|
|
1570
|
-
}
|
|
1571
|
-
}
|
|
1572
|
-
}
|
|
1573
|
-
});
|
|
1574
|
-
// Then set the CSS custom properties based on the largest width in each pair
|
|
1575
|
-
slotPairs.forEach(({ name, slots }) => {
|
|
1576
|
-
// Find the maximum width among the slots in this pair
|
|
1577
|
-
let maxWidth = 0;
|
|
1578
|
-
let hasAnyContent = false;
|
|
1579
|
-
slots.forEach((slot) => {
|
|
1580
|
-
var _a;
|
|
1581
|
-
if (slotWidths.has(slot)) {
|
|
1582
|
-
hasAnyContent = true;
|
|
1583
|
-
maxWidth = Math.max(maxWidth, (_a = slotWidths.get(slot)) !== null && _a !== void 0 ? _a : 0);
|
|
1584
|
-
}
|
|
1585
|
-
});
|
|
1586
|
-
// If at least one slot in the pair has content, set the min-width for the pair
|
|
1587
|
-
if (hasAnyContent && maxWidth > 0) {
|
|
1588
|
-
// Set a single CSS variable for the pair
|
|
1589
|
-
this.el.style.setProperty(`--${name}-size`, `${maxWidth}px`);
|
|
1590
|
-
}
|
|
1591
|
-
});
|
|
1592
|
-
return allMeasurementsSuccessful;
|
|
1593
|
-
}
|
|
1594
|
-
/**
|
|
1595
|
-
* Removes all slot visibility classes and slot width CSS variables.
|
|
1596
|
-
*/
|
|
1597
|
-
removeSlotClasses() {
|
|
1598
|
-
this.el.classList.remove(...this.slotClasses, ...this.showClasses);
|
|
1599
|
-
this.slotSizeVars.forEach((cssVar) => this.el.style.removeProperty(cssVar));
|
|
1600
|
-
}
|
|
1601
|
-
updateSlotClasses() {
|
|
1602
|
-
const titlePlacement = this.getTitlePlacement();
|
|
1603
|
-
if (titlePlacement !== 'center') {
|
|
1604
|
-
this.removeSlotClasses();
|
|
1605
|
-
return;
|
|
1606
|
-
}
|
|
1607
|
-
// Check if slots have content
|
|
1608
|
-
const slots = ['start', 'end', 'primary', 'secondary'];
|
|
1609
|
-
const classesToAdd = [];
|
|
1610
|
-
const classesToRemove = [];
|
|
1611
|
-
slots.forEach((slot) => {
|
|
1612
|
-
const slotHasContent = this.hasSlotContent(slot);
|
|
1613
|
-
const slotClass = `has-${slot}-content`;
|
|
1614
|
-
if (slotHasContent) {
|
|
1615
|
-
classesToAdd.push(slotClass);
|
|
1616
|
-
}
|
|
1617
|
-
else {
|
|
1618
|
-
classesToRemove.push(slotClass);
|
|
1619
|
-
}
|
|
1620
|
-
});
|
|
1621
|
-
// Force visibilities in certain conditions. This works by adding a class to the toolbar
|
|
1622
|
-
// named `show-{slot}`. This class will be added if the toolbar has the required slots
|
|
1623
|
-
// and does not have any of the excluded slots, otherwise it will be removed.
|
|
1624
|
-
// This is useful to enforce centering of the toolbar content when there are different amounts
|
|
1625
|
-
// of slots on either side of the toolbar.
|
|
1626
|
-
const conditions = [
|
|
1627
|
-
{ name: 'end', requiredSlots: ['start'], excludeSlots: ['end', 'primary'] },
|
|
1628
|
-
{ name: 'start', requiredSlots: ['end'], excludeSlots: ['start', 'secondary'] },
|
|
1629
|
-
{ name: 'secondary', requiredSlots: ['primary'], excludeSlots: ['secondary', 'start'] },
|
|
1630
|
-
{ name: 'primary', requiredSlots: ['secondary'], excludeSlots: ['primary', 'end'] },
|
|
1631
|
-
];
|
|
1632
|
-
conditions.forEach((condition) => {
|
|
1633
|
-
const hasRequiredSlots = condition.requiredSlots.every((slot) => classesToAdd.includes(`has-${slot}-content`));
|
|
1634
|
-
const hasExcludedSlots = condition.excludeSlots.some((slot) => classesToAdd.includes(`has-${slot}-content`));
|
|
1635
|
-
const className = `show-${condition.name}`;
|
|
1636
|
-
if (hasRequiredSlots && !hasExcludedSlots) {
|
|
1637
|
-
classesToAdd.push(className);
|
|
1638
|
-
}
|
|
1639
|
-
else {
|
|
1640
|
-
classesToRemove.push(className);
|
|
1641
|
-
}
|
|
1642
|
-
});
|
|
1643
|
-
// Add classes to the toolbar element
|
|
1644
|
-
this.el.classList.add(...classesToAdd);
|
|
1645
|
-
this.el.classList.remove(...classesToRemove);
|
|
1646
|
-
// Update slot widths after classes have been updated
|
|
1647
|
-
this.updateSlotWidths();
|
|
1648
|
-
}
|
|
1649
|
-
hasSlotContent(slotName) {
|
|
1650
|
-
var _a;
|
|
1651
|
-
const slotNode = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slotName}"]`);
|
|
1652
|
-
return !!slotNode && slotNode.assignedNodes().length > 0;
|
|
1653
1511
|
}
|
|
1654
1512
|
childrenStyle(ev) {
|
|
1655
1513
|
ev.stopPropagation();
|
|
@@ -1674,27 +1532,21 @@ const Toolbar = class {
|
|
|
1674
1532
|
}
|
|
1675
1533
|
}
|
|
1676
1534
|
render() {
|
|
1677
|
-
const
|
|
1535
|
+
const mode = getIonMode(this);
|
|
1678
1536
|
const childStyles = {};
|
|
1679
|
-
this.childrenStyles.forEach((
|
|
1680
|
-
Object.assign(childStyles,
|
|
1537
|
+
this.childrenStyles.forEach((value) => {
|
|
1538
|
+
Object.assign(childStyles, value);
|
|
1681
1539
|
});
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1540
|
+
return (h(Host, { key: '40bad6fa7e94262438da4bbe037dcf8a5fa2df22', class: {
|
|
1541
|
+
...childStyles,
|
|
1542
|
+
...createColorClasses(this.color, {
|
|
1543
|
+
[mode]: true,
|
|
1544
|
+
'in-toolbar': hostContext('ion-toolbar', this.el),
|
|
1545
|
+
}),
|
|
1546
|
+
} }, h("div", { key: 'df44c9f0fe3958116ab860b0dad79c53b89f6c59', class: "toolbar-background", part: "background" }), h("div", { key: '2169ffa576875b8d5624211cc0b4bf86191562bc', class: "toolbar-container", part: "container" }, h("slot", { key: 'c8910dcf1ce98ab427fd89c3396a67c2a75bdd07', name: "start" }), h("slot", { key: '05da24d5ef96b9eebd83b534ce02c1f7bcd06680', name: "secondary" }), h("div", { key: '090fea1541e7e2b6ad74a6ded4eadffdb471ccce', class: "toolbar-content", part: "content" }, h("slot", { key: '507e143f92f6fa59ff23d94026411fa2c74f2f8e' })), h("slot", { key: 'f79fdee472e657e26a910cb89d7551943e40e440', name: "primary" }), h("slot", { key: 'dd40fe9ed490cf4346c642e195fdb524dc6cc4f5', name: "end" }))));
|
|
1688
1547
|
}
|
|
1689
|
-
get el() { return getElement(this); }
|
|
1690
|
-
static get watchers() { return {
|
|
1691
|
-
"titlePlacement": [{
|
|
1692
|
-
"titlePlacementChanged": 0
|
|
1693
|
-
}]
|
|
1694
|
-
}; }
|
|
1695
1548
|
};
|
|
1696
1549
|
Toolbar.style = {
|
|
1697
|
-
ionic: toolbarIonicCss(),
|
|
1698
1550
|
ios: toolbarIosCss(),
|
|
1699
1551
|
md: toolbarMdCss()
|
|
1700
1552
|
};
|