@ionic/core 8.8.19-dev.11786610762.137bbb21 → 8.8.19-dev.11786730389.1a1927bf
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/index.js +1 -1
- package/components/ion-accordion-group.js +1 -1
- package/components/ion-accordion.js +1 -1
- package/components/ion-action-sheet.js +1 -1
- package/components/ion-alert.js +1 -1
- package/components/ion-app.js +1 -1
- package/components/ion-avatar.js +1 -1
- package/components/ion-back-button.js +1 -1
- package/components/ion-backdrop.js +1 -1
- package/components/ion-badge.js +1 -1
- package/components/ion-breadcrumb.js +1 -1
- package/components/ion-breadcrumbs.js +1 -1
- package/components/ion-button.js +1 -1
- package/components/ion-buttons.js +1 -1
- package/components/ion-card-content.js +1 -1
- package/components/ion-card-header.js +1 -1
- package/components/ion-card-subtitle.js +1 -1
- package/components/ion-card-title.js +1 -1
- package/components/ion-card.js +1 -1
- package/components/ion-checkbox.js +1 -1
- package/components/ion-chip.js +1 -1
- package/components/ion-col.js +1 -1
- package/components/ion-content.js +1 -1
- package/components/ion-datetime-button.js +1 -1
- package/components/ion-datetime.js +1 -1
- package/components/ion-fab-button.js +1 -1
- package/components/ion-fab-list.js +1 -1
- package/components/ion-fab.js +1 -1
- package/components/ion-footer.js +1 -1
- package/components/ion-grid.js +1 -1
- package/components/ion-header.js +1 -1
- package/components/ion-icon.js +1 -1
- package/components/ion-img.js +1 -1
- package/components/ion-infinite-scroll-content.js +1 -1
- package/components/ion-infinite-scroll.js +1 -1
- package/components/ion-input-otp.js +1 -1
- package/components/ion-input-password-toggle.js +1 -1
- package/components/ion-input.js +1 -1
- package/components/ion-item-divider.js +1 -1
- package/components/ion-item-group.js +1 -1
- package/components/ion-item-option.js +1 -1
- package/components/ion-item-options.js +1 -1
- package/components/ion-item-sliding.js +1 -1
- package/components/ion-item.js +1 -1
- package/components/ion-label.js +1 -1
- package/components/ion-list-header.js +1 -1
- package/components/ion-list.js +1 -1
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-menu-toggle.js +1 -1
- package/components/ion-menu.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +1 -1
- package/components/ion-note.js +1 -1
- package/components/ion-picker-column-option.js +1 -1
- package/components/ion-picker-column.js +1 -1
- package/components/ion-picker.js +1 -1
- package/components/ion-popover.js +1 -1
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-radio-group.js +1 -1
- package/components/ion-radio.js +1 -1
- package/components/ion-range.js +1 -1
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-ripple-effect.js +1 -1
- package/components/ion-route-redirect.js +1 -1
- package/components/ion-route.js +1 -1
- package/components/ion-router-link.js +1 -1
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-router.js +1 -1
- package/components/ion-row.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-segment-content.js +1 -1
- package/components/ion-segment-view.js +1 -1
- package/components/ion-segment.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select-option.js +1 -1
- package/components/ion-select-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-skeleton-text.js +1 -1
- package/components/ion-spinner.js +1 -1
- package/components/ion-split-pane.js +1 -1
- package/components/ion-tab-bar.js +1 -1
- package/components/ion-tab-button.js +1 -1
- package/components/ion-tab.js +1 -1
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +1 -1
- package/components/ion-textarea.js +1 -1
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-title.js +1 -1
- package/components/ion-toast.js +1 -1
- package/components/ion-toggle.js +1 -1
- package/components/ion-toolbar.js +1 -1
- package/components/p-0Pyit076.js +4 -0
- package/components/{p-CpHPq11n.js → p-30_sZS2V.js} +1 -1
- package/components/p-83oP9gzn.js +4 -0
- package/components/p-8FN7p701.js +4 -0
- package/components/p-B-FxiyeI.js +4 -0
- package/components/p-B6dUPQXq.js +4 -0
- package/components/p-BMPN55of.js +4 -0
- package/components/p-BMS4t-kJ.js +4 -0
- package/components/p-BO4sUqUv.js +4 -0
- package/components/p-BSQPZ79H.js +4 -0
- package/components/p-Bc4wROfM.js +4 -0
- package/components/p-BhamHSw3.js +4 -0
- package/components/p-BmVRXR1y.js +4 -0
- package/components/p-BpG8kBfD.js +4 -0
- package/components/p-BqPNzJf6.js +4 -0
- package/components/p-BsVxQGUT.js +4 -0
- package/components/p-BxUIQcD9.js +4 -0
- package/components/p-C1O9GEug.js +4 -0
- package/components/p-C5KYjZWD.js +4 -0
- package/components/p-C9BGR5fy.js +4 -0
- package/components/p-CD4fmpem.js +4 -0
- package/components/p-CEW4RXZO.js +4 -0
- package/components/p-CIGNaXM1.js +4 -0
- package/components/p-CKhiNOEg.js +4 -0
- package/components/p-CO2zzh3W.js +4 -0
- package/components/p-CVnwvOBD.js +4 -0
- package/components/p-CbhUdtjf.js +4 -0
- package/components/p-CejmQs3h.js +4 -0
- package/components/p-CfnGxjv-.js +4 -0
- package/components/p-ClFYbgND.js +4 -0
- package/components/p-CmKf4pgI.js +4 -0
- package/components/p-Cs5f-uOS.js +4 -0
- package/components/p-D7-vHX0A.js +4 -0
- package/components/{p-CA4M5WkT.js → p-DIgGHN7D.js} +1 -1
- package/components/p-DJztqcrH.js +4 -0
- package/components/p-DRfgH82D.js +4 -0
- package/components/p-DTY4otpr.js +4 -0
- package/components/p-DV85C0e0.js +4 -0
- package/components/p-DVKS-ovH.js +4 -0
- package/components/p-DWCzVL3Y.js +4 -0
- package/components/p-D_XD0pVT.js +4 -0
- package/components/p-Dd8ajo9a.js +4 -0
- package/components/p-DdnhY_oj.js +4 -0
- package/components/p-Dm7h4Nyv.js +4 -0
- package/components/{p-B2SvA6NE.js → p-DwpKZ6rl.js} +1 -1
- package/components/p-DyePCNGr.js +4 -0
- package/components/p-G0TxqHfe.js +4 -0
- package/components/{p-Ch8jco3x.js → p-J-p0EtHR.js} +1 -1
- package/components/p-LXu5-6Ti.js +4 -0
- package/components/p-LpMHEu3v.js +4 -0
- package/components/p-MCJ7HjWe.js +4 -0
- package/components/p-Obm7si-x.js +4 -0
- package/components/p-TXPDHL13.js +4 -0
- package/components/p-UuPYCOZE.js +4 -0
- package/components/p-WeeS7GvC.js +4 -0
- package/components/p-ZjP4CjeZ.js +4 -0
- package/components/{p-CzlL9T_X.js → p-_0JhwClE.js} +1 -1
- package/components/p-_IKFD3ID.js +4 -0
- package/components/p-byZM6qHV.js +4 -0
- package/components/p-hh7qIC-X.js +4 -0
- package/components/p-idq4JFo2.js +4 -0
- package/components/{p-BZwQa9ey.js → p-ryyf_ItD.js} +1 -1
- package/components/p-tYCT3JGl.js +4 -0
- package/components/p-wzAhIh03.js +4 -0
- package/components/p-xOjr4bwc.js +4 -0
- package/components/{p-Dovs7FIs.js → p-yuj4Nkm_.js} +1 -1
- package/css/core.css +1 -1
- package/css/core.css.map +1 -1
- package/css/display.css +1 -1
- package/css/display.css.map +1 -1
- package/css/flex-utils.css +1 -1
- package/css/flex-utils.css.map +1 -1
- package/css/float-elements.css.map +1 -1
- package/css/global.bundle.css.map +1 -1
- package/css/ionic-swiper.css +1 -1
- package/css/ionic-swiper.css.map +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/css/normalize.css.map +1 -1
- package/css/padding.css.map +1 -1
- package/css/palettes/dark.always.css.map +1 -1
- package/css/palettes/dark.class.css.map +1 -1
- package/css/palettes/dark.system.css.map +1 -1
- package/css/palettes/high-contrast-dark.always.css.map +1 -1
- package/css/palettes/high-contrast-dark.class.css.map +1 -1
- package/css/palettes/high-contrast-dark.system.css.map +1 -1
- package/css/palettes/high-contrast.always.css.map +1 -1
- package/css/palettes/high-contrast.class.css.map +1 -1
- package/css/palettes/high-contrast.system.css.map +1 -1
- package/css/structure.css.map +1 -1
- package/css/text-alignment.css.map +1 -1
- package/css/text-transformation.css.map +1 -1
- package/css/typography.css.map +1 -1
- package/css/utils.bundle.css +1 -1
- package/css/utils.bundle.css.map +1 -1
- package/dist/cjs/{animation-qlGmEn5Y.js → animation-C0mOHzej.js} +6 -6
- package/dist/cjs/{app-globals-CtK-3pCu.js → app-globals-BREG4twP.js} +1 -1
- package/dist/cjs/{button-active-CugpWmFI.js → button-active-BKj1rdFx.js} +3 -3
- package/dist/cjs/{capacitor-BixsAzyb.js → capacitor-DmA66EwP.js} +3 -3
- package/dist/cjs/{config-DWdFbSNK.js → config-CjUbvdPW.js} +5 -4
- package/dist/cjs/{dir-Cn0z1rJH.js → dir-Brx7VkvP.js} +1 -1
- package/dist/{esm/focus-visible-vXpMhGrs.js → cjs/focus-visible-CCvKiLh3.js} +3 -23
- package/dist/cjs/{format-COAsdjOc.js → format-pp0Du3K-.js} +40 -30
- package/dist/cjs/{framework-delegate-CJT_QJQI.js → framework-delegate-NTLQ5YzV.js} +6 -10
- package/dist/cjs/{gesture-controller-dtqlP_q4.js → gesture-controller-BDUH7687.js} +15 -8
- package/dist/cjs/{haptic-BFgF-QCg.js → haptic-Ch-X4gRx.js} +3 -4
- package/dist/cjs/hardware-back-button-fqpYh-kd.js +121 -0
- package/dist/cjs/{helpers-Fh1iXsX9.js → helpers-CaLhEmTE.js} +6 -73
- package/dist/cjs/{index-YYUVCfP-.js → index-B7zJsYWS.js} +3 -3
- package/dist/cjs/{index-CNicxECl.js → index-BlshL9ib.js} +8 -9
- package/dist/cjs/{index-D94mERjz.js → index-Ck9advCT.js} +5 -5
- package/dist/cjs/{index-CM8iGvyx.js → index-D2X6b92x.js} +15 -16
- package/dist/cjs/{index-DRFkZu3V.js → index-D48vawBq.js} +2 -2
- package/dist/cjs/index-DkNv4J_i.js +10 -0
- package/dist/cjs/{index-CAvQ7Tka.js → index-P1nQxrpZ.js} +10 -4
- package/dist/cjs/{index-C1knGA9x.js → index-uvry__L4.js} +33 -65
- package/dist/cjs/{index-CxDnX7hd.js → index-wOmugbdg.js} +0 -2
- package/dist/cjs/index.cjs.js +17 -17
- package/dist/cjs/{input-shims-C8NCYfWv.js → input-shims-DvHAFqiP.js} +19 -22
- package/dist/cjs/{input.utils-CYZZsbdf.js → input.utils-CP4fzrqk.js} +6 -7
- package/dist/cjs/ion-accordion_2.cjs.entry.js +378 -382
- package/dist/cjs/ion-action-sheet.cjs.entry.js +178 -86
- package/dist/cjs/ion-alert.cjs.entry.js +250 -125
- package/dist/cjs/ion-app_8.cjs.entry.js +461 -608
- package/dist/cjs/ion-avatar_3.cjs.entry.js +19 -125
- package/dist/cjs/ion-back-button.cjs.entry.js +64 -49
- package/dist/cjs/ion-backdrop.cjs.entry.js +23 -22
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +211 -169
- package/dist/cjs/ion-button_2.cjs.entry.js +152 -117
- package/dist/cjs/ion-card_5.cjs.entry.js +109 -79
- package/dist/cjs/ion-checkbox.cjs.entry.js +163 -129
- package/dist/cjs/ion-chip.cjs.entry.js +21 -56
- package/dist/cjs/ion-col_3.cjs.entry.js +186 -61
- package/dist/cjs/ion-datetime-button.cjs.entry.js +255 -247
- package/dist/cjs/ion-datetime.cjs.entry.js +2770 -0
- package/dist/cjs/ion-fab_3.cjs.entry.js +154 -112
- package/dist/cjs/ion-img.cjs.entry.js +34 -16
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +108 -156
- package/dist/cjs/ion-input-otp.cjs.entry.js +435 -437
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +40 -64
- package/dist/cjs/ion-input.cjs.entry.js +330 -276
- package/dist/cjs/ion-item-option_3.cjs.entry.js +136 -511
- package/dist/cjs/ion-item_8.cjs.entry.js +217 -189
- package/dist/cjs/ion-loading.cjs.entry.js +151 -68
- package/dist/cjs/ion-menu_3.cjs.entry.js +181 -137
- package/dist/cjs/ion-modal.cjs.entry.js +570 -500
- package/dist/cjs/ion-nav_2.cjs.entry.js +103 -163
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +39 -39
- package/dist/cjs/ion-picker-column.cjs.entry.js +421 -409
- package/dist/cjs/ion-picker.cjs.entry.js +405 -400
- package/dist/cjs/ion-popover.cjs.entry.js +323 -211
- package/dist/cjs/ion-progress-bar.cjs.entry.js +35 -47
- package/dist/cjs/ion-radio_2.cjs.entry.js +216 -161
- package/dist/cjs/ion-range.cjs.entry.js +307 -249
- package/dist/cjs/ion-refresher_2.cjs.entry.js +174 -121
- package/dist/cjs/ion-reorder_2.cjs.entry.js +59 -53
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +18 -26
- package/dist/cjs/ion-route_4.cjs.entry.js +178 -75
- package/dist/cjs/ion-searchbar.cjs.entry.js +308 -331
- package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment-view.cjs.entry.js +28 -27
- package/dist/cjs/ion-segment_2.cjs.entry.js +177 -141
- package/dist/cjs/ion-select-modal.cjs.entry.js +49 -69
- package/dist/cjs/ion-select_3.cjs.entry.js +481 -385
- package/dist/cjs/ion-spinner.cjs.entry.js +28 -36
- package/dist/cjs/ion-split-pane.cjs.entry.js +34 -25
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +116 -179
- package/dist/cjs/ion-tab_2.cjs.entry.js +54 -29
- package/dist/cjs/ion-text.cjs.entry.js +13 -7
- package/dist/cjs/ion-textarea.cjs.entry.js +274 -269
- package/dist/cjs/ion-toast.cjs.entry.js +264 -169
- package/dist/cjs/ion-toggle.cjs.entry.js +184 -187
- package/dist/cjs/ionic-global-k6hOWWpn.js +156 -0
- package/dist/cjs/ionic.cjs.js +4 -4
- package/dist/cjs/{ios.transition-BgDCUY4Y.js → ios.transition-KvuRAe2W.js} +14 -20
- package/dist/cjs/{item-multiple-inputs-DKn76MYO.js → item-multiple-inputs-BdYSbfKN.js} +1 -1
- package/dist/cjs/{keyboard-nne7rvBK.js → keyboard-Cix5TVkD.js} +4 -5
- package/dist/cjs/{keyboard-BbZXOwZg.js → keyboard-cHxZlTyz.js} +3 -3
- package/dist/cjs/keyboard-controller-PtZoN2GS.js +167 -0
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-Debf4tYr.js → md.transition-Bjl5Ozph.js} +8 -10
- package/dist/cjs/{notch-controller-CFlPw7ER.js → notch-controller-BEUpEgb5.js} +4 -4
- package/dist/cjs/{overlay-control-label-DnRLQR1t.js → overlay-control-label-D2sdL2O8.js} +11 -13
- package/dist/cjs/{overlays-DYBUkNQu.js → overlays-IlP4H2Gn.js} +60 -336
- package/dist/cjs/{select-option-render-BqJEK1N1.js → select-option-render-pULCGldr.js} +3 -4
- package/dist/cjs/{status-tap-hwqc0yb_.js → status-tap-BR_ujYHg.js} +3 -4
- package/dist/cjs/{swipe-back-DqQx5QCp.js → swipe-back-DzQKEl5g.js} +5 -6
- package/dist/cjs/{theme-IlOsGAz7.js → theme-Bw0rpaNN.js} +7 -26
- package/dist/cjs/validity-BpS37YFM.js +19 -0
- package/dist/collection/collection-manifest.json +1 -13
- package/dist/collection/components/accordion/accordion.ios.css +58 -73
- package/dist/collection/components/accordion/accordion.js +327 -338
- package/dist/collection/components/accordion/accordion.md.css +59 -67
- package/dist/collection/components/accordion-group/accordion-group.ios.css +4 -16
- package/dist/collection/components/accordion-group/accordion-group.js +56 -69
- package/dist/collection/components/accordion-group/accordion-group.md.css +4 -22
- package/dist/collection/components/action-sheet/action-sheet.ios.css +54 -184
- package/dist/collection/components/action-sheet/action-sheet.js +166 -76
- package/dist/collection/components/action-sheet/action-sheet.md.css +55 -179
- package/dist/collection/components/action-sheet/test/basic/fixture.js +3 -0
- package/dist/collection/components/alert/alert.ios.css +54 -247
- package/dist/collection/components/alert/alert.js +236 -113
- package/dist/collection/components/alert/alert.md.css +56 -243
- package/dist/collection/components/app/app.js +86 -15
- package/dist/collection/components/avatar/avatar.ios.css +33 -7
- package/dist/collection/components/avatar/avatar.js +4 -120
- package/dist/collection/components/avatar/avatar.md.css +0 -51
- package/dist/collection/components/back-button/back-button.ios.css +48 -60
- package/dist/collection/components/back-button/back-button.js +61 -46
- package/dist/collection/components/back-button/back-button.md.css +48 -60
- package/dist/collection/components/backdrop/backdrop.ios.css +19 -56
- package/dist/collection/components/backdrop/backdrop.js +22 -26
- package/dist/collection/components/backdrop/backdrop.md.css +19 -56
- package/dist/collection/components/badge/badge.ios.css +12 -137
- package/dist/collection/components/badge/badge.js +15 -145
- package/dist/collection/components/badge/badge.md.css +12 -122
- package/dist/collection/components/breadcrumb/breadcrumb.ios.css +8 -20
- package/dist/collection/components/breadcrumb/breadcrumb.js +101 -72
- package/dist/collection/components/breadcrumb/breadcrumb.md.css +8 -20
- package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +0 -6
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +112 -99
- package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +0 -6
- package/dist/collection/components/button/button.ios.css +46 -154
- package/dist/collection/components/button/button.js +157 -122
- package/dist/collection/components/button/button.md.css +50 -150
- package/dist/collection/components/buttons/buttons.ios.css +7 -59
- package/dist/collection/components/buttons/buttons.js +21 -29
- package/dist/collection/components/buttons/buttons.md.css +3 -55
- package/dist/collection/components/card/card.ios.css +14 -65
- package/dist/collection/components/card/card.js +63 -61
- package/dist/collection/components/card/card.md.css +14 -65
- package/dist/collection/components/card-content/card-content.ios.css +35 -20
- package/dist/collection/components/card-content/card-content.js +10 -12
- package/dist/collection/components/card-content/card-content.md.css +35 -20
- package/dist/collection/components/card-header/card-header.ios.css +15 -27
- package/dist/collection/components/card-header/card-header.js +21 -20
- package/dist/collection/components/card-header/card-header.md.css +15 -27
- package/dist/collection/components/card-subtitle/card-subtitle.ios.css +0 -12
- package/dist/collection/components/card-subtitle/card-subtitle.js +14 -11
- package/dist/collection/components/card-subtitle/card-subtitle.md.css +0 -12
- package/dist/collection/components/card-title/card-title.ios.css +0 -73
- package/dist/collection/components/card-title/card-title.js +14 -11
- package/dist/collection/components/card-title/card-title.md.css +0 -73
- package/dist/collection/components/checkbox/checkbox.ios.css +117 -242
- package/dist/collection/components/checkbox/checkbox.js +160 -165
- package/dist/collection/components/checkbox/checkbox.md.css +118 -243
- package/dist/collection/components/chip/chip.ios.css +14 -67
- package/dist/collection/components/chip/chip.js +20 -116
- package/dist/collection/components/chip/chip.md.css +14 -67
- package/dist/collection/components/col/col.css +4 -192
- package/dist/collection/components/col/col.js +186 -212
- package/dist/collection/components/content/content.css +2 -47
- package/dist/collection/components/content/content.js +102 -78
- package/dist/collection/components/datetime/datetime.ios.css +148 -304
- package/dist/collection/components/datetime/datetime.js +1068 -910
- package/dist/collection/components/datetime/datetime.md.css +138 -294
- package/dist/collection/components/datetime/utils/data.js +18 -19
- package/dist/collection/components/datetime/utils/format.js +21 -11
- package/dist/collection/components/datetime/utils/manipulation.js +8 -8
- package/dist/collection/components/datetime/utils/parse.js +10 -10
- package/dist/collection/components/datetime/utils/state.js +8 -2
- package/dist/collection/components/datetime/utils/validate.js +4 -5
- package/dist/collection/components/datetime-button/datetime-button.ios.css +5 -6
- package/dist/collection/components/datetime-button/datetime-button.js +253 -246
- package/dist/collection/components/datetime-button/datetime-button.md.css +5 -6
- package/dist/collection/components/fab/fab.css +1 -25
- package/dist/collection/components/fab/fab.js +25 -22
- package/dist/collection/components/fab-button/fab-button.ios.css +6 -18
- package/dist/collection/components/fab-button/fab-button.js +117 -83
- package/dist/collection/components/fab-button/fab-button.md.css +8 -20
- package/dist/collection/components/fab-list/fab-list.css +0 -12
- package/dist/collection/components/fab-list/fab-list.js +15 -20
- package/dist/collection/components/footer/footer.ios.css +6 -33
- package/dist/collection/components/footer/footer.js +65 -151
- package/dist/collection/components/footer/footer.md.css +0 -40
- package/dist/collection/components/grid/grid.css +0 -12
- package/dist/collection/components/grid/grid.js +9 -15
- package/dist/collection/components/header/header.ios.css +133 -178
- package/dist/collection/components/header/header.js +70 -202
- package/dist/collection/components/header/header.md.css +9 -199
- package/dist/collection/components/header/header.utils.js +13 -6
- package/dist/collection/components/img/img.js +34 -16
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +76 -164
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +0 -12
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +30 -19
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +0 -12
- package/dist/collection/components/input/input.ios.css +135 -223
- package/dist/collection/components/input/input.js +339 -307
- package/dist/collection/components/input/input.md.css +207 -193
- package/dist/collection/components/input-otp/input-otp.ios.css +60 -105
- package/dist/collection/components/input-otp/input-otp.js +432 -437
- package/dist/collection/components/input-otp/input-otp.md.css +60 -105
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +37 -60
- package/dist/collection/components/item/item.ios.css +80 -120
- package/dist/collection/components/item/item.js +113 -102
- package/dist/collection/components/item/item.md.css +79 -131
- package/dist/collection/components/item-divider/item-divider.ios.css +0 -18
- package/dist/collection/components/item-divider/item-divider.js +23 -21
- package/dist/collection/components/item-divider/item-divider.md.css +0 -18
- package/dist/collection/components/item-group/item-group.ios.css +0 -12
- package/dist/collection/components/item-group/item-group.js +7 -13
- package/dist/collection/components/item-group/item-group.md.css +0 -12
- package/dist/collection/components/item-option/item-option.ios.css +29 -136
- package/dist/collection/components/item-option/item-option.js +56 -92
- package/dist/collection/components/item-option/item-option.md.css +29 -136
- package/dist/collection/components/item-options/item-options.ios.css +34 -77
- package/dist/collection/components/item-options/item-options.js +17 -20
- package/dist/collection/components/item-options/item-options.md.css +34 -77
- package/dist/collection/components/item-sliding/{item-sliding.native.css → item-sliding.css} +9 -84
- package/dist/collection/components/item-sliding/item-sliding.js +61 -441
- package/dist/collection/components/item-sliding/test/test.utils.js +0 -13
- package/dist/collection/components/label/label.ios.css +0 -18
- package/dist/collection/components/label/label.js +32 -15
- package/dist/collection/components/label/label.md.css +0 -18
- package/dist/collection/components/list/list.ios.css +14 -54
- package/dist/collection/components/list/list.js +19 -55
- package/dist/collection/components/list/list.md.css +16 -56
- package/dist/collection/components/list-header/list-header.ios.css +38 -82
- package/dist/collection/components/list-header/list-header.js +18 -11
- package/dist/collection/components/list-header/list-header.md.css +38 -82
- package/dist/collection/components/loading/loading.ios.css +1 -13
- package/dist/collection/components/loading/loading.js +143 -62
- package/dist/collection/components/loading/loading.md.css +1 -13
- package/dist/collection/components/menu/menu.ios.css +3 -15
- package/dist/collection/components/menu/menu.js +108 -71
- package/dist/collection/components/menu/menu.md.css +3 -15
- package/dist/collection/components/menu-button/menu-button.ios.css +14 -48
- package/dist/collection/components/menu-button/menu-button.js +38 -45
- package/dist/collection/components/menu-button/menu-button.md.css +15 -49
- package/dist/collection/components/menu-toggle/menu-toggle.js +25 -21
- package/dist/collection/components/modal/animations/ios.enter.js +1 -1
- package/dist/collection/components/modal/animations/md.enter.js +1 -1
- package/dist/collection/components/modal/animations/sheet.js +2 -8
- package/dist/collection/components/modal/gestures/sheet.js +32 -86
- package/dist/collection/components/modal/gestures/swipe-to-close.js +15 -3
- package/dist/collection/components/modal/modal.ios.css +70 -178
- package/dist/collection/components/modal/modal.js +404 -272
- package/dist/collection/components/modal/modal.md.css +70 -178
- package/dist/collection/components/modal/safe-area-utils.js +6 -7
- package/dist/collection/components/modal/test/fixtures.js +3 -0
- package/dist/collection/components/nav/nav.css +1 -7
- package/dist/collection/components/nav/nav.js +72 -256
- package/dist/collection/components/nav/view-controller.js +7 -1
- package/dist/collection/components/nav-link/nav-link.js +21 -14
- package/dist/collection/components/note/note.ios.css +0 -12
- package/dist/collection/components/note/note.js +14 -11
- package/dist/collection/components/note/note.md.css +0 -12
- package/dist/collection/components/picker/picker.ios.css +3 -15
- package/dist/collection/components/picker/picker.js +403 -398
- package/dist/collection/components/picker/picker.md.css +3 -15
- package/dist/collection/components/picker-column/picker-column.css +5 -9
- package/dist/collection/components/picker-column/picker-column.js +418 -409
- package/dist/collection/components/picker-column-option/picker-column-option.ios.css +0 -6
- package/dist/collection/components/picker-column-option/picker-column-option.js +38 -42
- package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -7
- package/dist/collection/components/popover/animations/ios.enter.js +1 -2
- package/dist/collection/components/popover/animations/md.enter.js +1 -2
- package/dist/collection/components/popover/popover.ios.css +2 -15
- package/dist/collection/components/popover/popover.js +313 -199
- package/dist/collection/components/popover/popover.md.css +2 -15
- package/dist/collection/components/popover/test/fixture.js +1 -0
- package/dist/collection/components/popover/utils.js +4 -6
- package/dist/collection/components/progress-bar/progress-bar.ios.css +17 -48
- package/dist/collection/components/progress-bar/progress-bar.js +33 -65
- package/dist/collection/components/progress-bar/progress-bar.md.css +17 -48
- package/dist/collection/components/radio/radio.ios.css +102 -207
- package/dist/collection/components/radio/radio.js +108 -77
- package/dist/collection/components/radio/radio.md.css +102 -207
- package/dist/collection/components/radio-group/radio-group.ios.css +19 -43
- package/dist/collection/components/radio-group/radio-group.js +107 -113
- package/dist/collection/components/radio-group/radio-group.md.css +19 -43
- package/dist/collection/components/radio-group/test/fixtures.js +2 -0
- package/dist/collection/components/range/range.ios.css +85 -128
- package/dist/collection/components/range/range.js +303 -245
- package/dist/collection/components/range/range.md.css +85 -128
- package/dist/collection/components/refresher/refresher.ios.css +1 -14
- package/dist/collection/components/refresher/refresher.js +117 -88
- package/dist/collection/components/refresher/refresher.md.css +2 -15
- package/dist/collection/components/refresher-content/refresher-content.js +47 -31
- package/dist/collection/components/reorder/reorder.ios.css +0 -6
- package/dist/collection/components/reorder/reorder.js +7 -33
- package/dist/collection/components/reorder/reorder.md.css +0 -6
- package/dist/collection/components/reorder-group/reorder-group.css +0 -6
- package/dist/collection/components/reorder-group/reorder-group.js +47 -22
- package/dist/collection/components/ripple-effect/{ripple-effect.common.css → ripple-effect.css} +1 -7
- package/dist/collection/components/ripple-effect/ripple-effect.js +17 -26
- package/dist/collection/components/route/route.js +39 -14
- package/dist/collection/components/route-redirect/route-redirect.js +31 -0
- package/dist/collection/components/router/router.js +37 -37
- package/dist/collection/components/router/utils/dom.js +25 -7
- package/dist/collection/components/router/utils/matching.js +7 -9
- package/dist/collection/components/router/utils/parser.js +1 -1
- package/dist/collection/components/router/utils/path.js +0 -1
- package/dist/collection/components/router-link/router-link.css +2 -8
- package/dist/collection/components/router-link/router-link.js +40 -19
- package/dist/collection/components/router-outlet/router-outlet.css +1 -7
- package/dist/collection/components/router-outlet/router-outlet.js +83 -25
- package/dist/collection/components/row/row.css +0 -16
- package/dist/collection/components/row/row.js +2 -9
- package/dist/collection/components/searchbar/searchbar.ios.css +18 -56
- package/dist/collection/components/searchbar/searchbar.js +321 -380
- package/dist/collection/components/searchbar/searchbar.md.css +18 -56
- package/dist/collection/components/segment/segment.ios.css +2 -45
- package/dist/collection/components/segment/segment.js +126 -94
- package/dist/collection/components/segment/segment.md.css +2 -45
- package/dist/collection/components/segment-button/segment-button.ios.css +105 -146
- package/dist/collection/components/segment-button/segment-button.js +49 -46
- package/dist/collection/components/segment-button/segment-button.md.css +107 -148
- package/dist/collection/components/segment-content/segment-content.js +1 -1
- package/dist/collection/components/segment-view/segment-view.ios.css +0 -6
- package/dist/collection/components/segment-view/segment-view.js +28 -27
- package/dist/collection/components/segment-view/segment-view.md.css +0 -6
- package/dist/collection/components/select/select.ios.css +177 -316
- package/dist/collection/components/select/select.js +401 -399
- package/dist/collection/components/select/select.md.css +179 -332
- package/dist/collection/components/select-modal/select-modal.ios.css +45 -293
- package/dist/collection/components/select-modal/select-modal.js +37 -79
- package/dist/collection/components/select-modal/select-modal.md.css +43 -273
- package/dist/collection/components/select-modal/test/fixtures.js +8 -1
- package/dist/collection/components/select-option/select-option.js +48 -15
- package/dist/collection/components/select-popover/select-popover.ios.css +124 -188
- package/dist/collection/components/select-popover/select-popover.js +44 -37
- package/dist/collection/components/select-popover/select-popover.md.css +47 -228
- package/dist/collection/components/select-popover/test/fixtures.js +8 -1
- package/dist/collection/components/skeleton-text/skeleton-text.css +0 -6
- package/dist/collection/components/skeleton-text/skeleton-text.js +15 -15
- package/dist/collection/components/spinner/{spinner.ionic.css → spinner.css} +10 -78
- package/dist/collection/components/spinner/spinner.js +26 -55
- package/dist/collection/components/split-pane/split-pane.ios.css +2 -20
- package/dist/collection/components/split-pane/split-pane.js +33 -28
- package/dist/collection/components/split-pane/split-pane.md.css +2 -20
- package/dist/collection/components/tab/tab.js +17 -10
- package/dist/collection/components/tab-bar/tab-bar.ios.css +43 -86
- package/dist/collection/components/tab-bar/tab-bar.js +44 -190
- package/dist/collection/components/tab-bar/tab-bar.md.css +43 -86
- package/dist/collection/components/tab-button/tab-button.ios.css +95 -171
- package/dist/collection/components/tab-button/tab-button.js +68 -74
- package/dist/collection/components/tab-button/tab-button.md.css +93 -137
- package/dist/collection/components/tabs/tabs.css +1 -7
- package/dist/collection/components/tabs/tabs.js +33 -23
- package/dist/collection/components/text/text.css +0 -6
- package/dist/collection/components/text/text.js +12 -7
- package/dist/collection/components/textarea/textarea.ios.css +158 -298
- package/dist/collection/components/textarea/textarea.js +275 -295
- package/dist/collection/components/textarea/textarea.md.css +159 -312
- package/dist/collection/components/thumbnail/thumbnail.css +0 -6
- package/dist/collection/components/thumbnail/thumbnail.js +2 -9
- package/dist/collection/components/title/title.ios.css +4 -32
- package/dist/collection/components/title/title.js +23 -13
- package/dist/collection/components/title/title.md.css +4 -39
- package/dist/collection/components/toast/animations/utils.js +1 -1
- package/dist/collection/components/toast/toast.ios.css +45 -84
- package/dist/collection/components/toast/toast.js +232 -178
- package/dist/collection/components/toast/toast.md.css +45 -84
- package/dist/collection/components/toggle/toggle.ios.css +127 -247
- package/dist/collection/components/toggle/toggle.js +175 -177
- package/dist/collection/components/toggle/toggle.md.css +127 -245
- package/dist/collection/components/toolbar/toolbar.ios.css +47 -90
- package/dist/collection/components/toolbar/toolbar.js +25 -222
- package/dist/collection/components/toolbar/toolbar.md.css +47 -90
- package/dist/collection/global/config.js +4 -6
- package/dist/collection/global/ionic-global.js +20 -242
- package/dist/collection/index.js +1 -1
- package/dist/collection/utils/animation/animation.js +3 -3
- package/dist/collection/utils/config.js +5 -4
- package/dist/collection/utils/focus-controller/index.js +1 -1
- package/dist/collection/utils/focus-trap.js +5 -16
- package/dist/collection/utils/focus-visible.js +0 -22
- package/dist/collection/utils/forms/index.js +0 -1
- package/dist/collection/utils/forms/validity.js +0 -31
- package/dist/collection/utils/framework-delegate.js +5 -9
- package/dist/collection/utils/gesture/gesture-controller.js +15 -8
- package/dist/collection/utils/gesture/index.js +10 -2
- package/dist/collection/utils/gesture/listener.js +1 -1
- package/dist/collection/utils/hardware-back-button.js +3 -18
- package/dist/collection/utils/helpers.js +5 -72
- package/dist/collection/utils/input-shims/hacks/scroll-assist.js +4 -5
- package/dist/collection/utils/input-shims/hacks/scroll-data.js +1 -2
- package/dist/collection/utils/keyboard/keyboard-controller.js +6 -8
- package/dist/collection/utils/keyboard/keyboard.js +1 -1
- package/dist/collection/utils/logging/index.js +23 -4
- package/dist/collection/utils/media.js +0 -1
- package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
- package/dist/collection/utils/menu-controller/animations/push.js +1 -2
- package/dist/collection/utils/menu-controller/animations/reveal.js +1 -2
- package/dist/collection/utils/menu-controller/index.js +1 -2
- package/dist/collection/utils/native/haptic.js +2 -3
- package/dist/collection/utils/native/keyboard.js +2 -2
- package/dist/collection/utils/native/status-bar.js +1 -1
- package/dist/collection/utils/overlay-control-label.js +11 -13
- package/dist/collection/utils/overlays.js +45 -312
- package/dist/collection/utils/platform.js +4 -5
- package/dist/collection/utils/rtl/dir.js +1 -1
- package/dist/collection/utils/sanitization/index.js +2 -2
- package/dist/collection/utils/select-option-render.js +1 -2
- package/dist/collection/utils/slot-mutation-controller.js +1 -2
- package/dist/collection/utils/test/playwright/apply-keyboard-focus.js +1 -1
- package/dist/collection/utils/test/playwright/drag-element.js +11 -35
- package/dist/collection/utils/test/playwright/generator.js +25 -51
- package/dist/collection/utils/test/playwright/page/event-spy.js +11 -12
- package/dist/collection/utils/test/playwright/page/utils/goto.js +5 -15
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +4 -27
- package/dist/collection/utils/test/playwright/page/utils/set-ion-viewport.js +2 -3
- package/dist/collection/utils/test/press-keys.js +10 -17
- package/dist/collection/utils/theme.js +7 -26
- package/dist/collection/utils/transition/ios.transition.js +9 -14
- package/dist/collection/utils/transition/md.transition.js +3 -4
- package/dist/docs.json +503 -10023
- package/dist/esm/{animation-ChfHU0RG.js → animation-CGFdmGk9.js} +5 -5
- package/dist/esm/{app-globals-D1OOQlqq.js → app-globals-CYmMeGdU.js} +1 -1
- package/dist/esm/{button-active-CPYK0dNo.js → button-active--80YqSHA.js} +3 -3
- package/dist/esm/{capacitor-DG_4yVXz.js → capacitor-CFERIeaU.js} +1 -1
- package/dist/esm/{config-BwKpO3Is.js → config-DWCzVL3Y.js} +5 -4
- package/dist/esm/{dir-C53feagD.js → dir-B-FxiyeI.js} +1 -1
- package/dist/{cjs/focus-visible-BIj-I3-C.js → esm/focus-visible-BmVRXR1y.js} +1 -27
- package/dist/esm/{format-2WlZcMvG.js → format-Dcwga61t.js} +41 -31
- package/dist/esm/{framework-delegate-DO2QXccA.js → framework-delegate--ajhSeKH.js} +6 -10
- package/dist/esm/{gesture-controller-BTEOs1at.js → gesture-controller-TXPDHL13.js} +15 -8
- package/dist/esm/{haptic-BWlRCqa-.js → haptic-Cq4UAeka.js} +3 -4
- package/dist/esm/hardware-back-button-gLJHMX_F.js +115 -0
- package/dist/esm/{helpers-DfF5_wJc.js → helpers-DexiPLIC.js} +7 -73
- package/dist/esm/{index-BSDDOljg.js → index-8s8kZKJ7.js} +5 -5
- package/dist/esm/{index-DNY2GOUg.js → index-BCgUwrV0.js} +3 -4
- package/dist/esm/{index-B4Kq2YNk.js → index-BvabGprD.js} +1 -2
- package/dist/esm/{index-Mq5pCWmZ.js → index-CKM1DdGm.js} +3 -3
- package/dist/esm/{index-C0EQceqV.js → index-ChhhtsGZ.js} +34 -66
- package/dist/esm/{index-7eS8XtuU.js → index-CumkqGQF.js} +12 -13
- package/dist/esm/{index-CfgBF1SE.js → index-DppOcPFQ.js} +10 -4
- package/dist/esm/index-ZjP4CjeZ.js +7 -0
- package/dist/esm/{index-taYRjZGp.js → index-_Za5VB9w.js} +2 -2
- package/dist/esm/index.js +17 -16
- package/dist/esm/{input-shims-tZfqB5a5.js → input-shims-BB0AKb_k.js} +11 -14
- package/dist/esm/{input.utils-fs4B7WL5.js → input.utils-J6HWocLA.js} +4 -5
- package/dist/esm/ion-accordion_2.entry.js +378 -382
- package/dist/esm/ion-action-sheet.entry.js +178 -86
- package/dist/esm/ion-alert.entry.js +250 -125
- package/dist/esm/ion-app_8.entry.js +460 -607
- package/dist/esm/ion-avatar_3.entry.js +19 -125
- package/dist/esm/ion-back-button.entry.js +64 -49
- package/dist/esm/ion-backdrop.entry.js +23 -22
- package/dist/esm/ion-breadcrumb_2.entry.js +211 -169
- package/dist/esm/ion-button_2.entry.js +152 -117
- package/dist/esm/ion-card_5.entry.js +109 -79
- package/dist/esm/ion-checkbox.entry.js +163 -129
- package/dist/esm/ion-chip.entry.js +21 -56
- package/dist/esm/ion-col_3.entry.js +186 -61
- package/dist/esm/ion-datetime-button.entry.js +255 -247
- package/dist/esm/ion-datetime.entry.js +2768 -0
- package/dist/esm/ion-fab_3.entry.js +154 -112
- package/dist/esm/ion-img.entry.js +34 -16
- package/dist/esm/ion-infinite-scroll_2.entry.js +108 -156
- package/dist/esm/ion-input-otp.entry.js +435 -437
- package/dist/esm/ion-input-password-toggle.entry.js +40 -64
- package/dist/esm/ion-input.entry.js +330 -276
- package/dist/esm/ion-item-option_3.entry.js +136 -511
- package/dist/esm/ion-item_8.entry.js +217 -189
- package/dist/esm/ion-loading.entry.js +151 -68
- package/dist/esm/ion-menu_3.entry.js +181 -137
- package/dist/esm/ion-modal.entry.js +528 -458
- package/dist/esm/ion-nav_2.entry.js +103 -163
- package/dist/esm/ion-picker-column-option.entry.js +39 -39
- package/dist/esm/ion-picker-column.entry.js +421 -409
- package/dist/esm/ion-picker.entry.js +405 -400
- package/dist/esm/ion-popover.entry.js +323 -211
- package/dist/esm/ion-progress-bar.entry.js +35 -47
- package/dist/esm/ion-radio_2.entry.js +216 -161
- package/dist/esm/ion-range.entry.js +307 -249
- package/dist/esm/ion-refresher_2.entry.js +174 -121
- package/dist/esm/ion-reorder_2.entry.js +59 -53
- package/dist/esm/ion-ripple-effect.entry.js +18 -26
- package/dist/esm/ion-route_4.entry.js +178 -75
- package/dist/esm/ion-searchbar.entry.js +308 -331
- package/dist/esm/ion-segment-content.entry.js +2 -2
- package/dist/esm/ion-segment-view.entry.js +28 -27
- package/dist/esm/ion-segment_2.entry.js +177 -141
- package/dist/esm/ion-select-modal.entry.js +49 -69
- package/dist/esm/ion-select_3.entry.js +482 -386
- package/dist/esm/ion-spinner.entry.js +28 -36
- package/dist/esm/ion-split-pane.entry.js +34 -25
- package/dist/esm/ion-tab-bar_2.entry.js +115 -178
- package/dist/esm/ion-tab_2.entry.js +54 -29
- package/dist/esm/ion-text.entry.js +13 -7
- package/dist/esm/ion-textarea.entry.js +274 -269
- package/dist/esm/ion-toast.entry.js +243 -148
- package/dist/esm/ion-toggle.entry.js +184 -187
- package/dist/esm/ionic-global-BVB7BrLT.js +151 -0
- package/dist/esm/ionic.js +5 -5
- package/dist/esm/{ios.transition-C3r-0w96.js → ios.transition-BdhybwLl.js} +14 -20
- package/dist/esm/{item-multiple-inputs-C6onMFOo.js → item-multiple-inputs-rU8VaNNg.js} +1 -1
- package/dist/esm/{keyboard-BzbtCDwZ.js → keyboard-Cj8mLJeq.js} +4 -5
- package/dist/esm/{keyboard-DYGmALa7.js → keyboard-DAF8GNJ9.js} +3 -3
- package/dist/esm/keyboard-controller-DEwoa1ev.js +165 -0
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-CPHOF5T9.js → md.transition-B5lqKGCs.js} +8 -10
- package/dist/esm/{notch-controller-CsbpmbOz.js → notch-controller-CrUGyHYz.js} +2 -2
- package/dist/esm/{overlay-control-label-CODBQrPj.js → overlay-control-label-BSQPZ79H.js} +11 -13
- package/dist/esm/{overlays-C1NQMs9y.js → overlays-CjWwtvf1.js} +57 -333
- package/dist/esm/{select-option-render-BlKZ2H83.js → select-option-render-C4m76VGH.js} +3 -4
- package/dist/esm/{status-tap-BueE8Coq.js → status-tap-DpLhkDWs.js} +3 -4
- package/dist/esm/{swipe-back-qmvTRnSq.js → swipe-back-cz4-lyG3.js} +5 -6
- package/dist/esm/theme-byZM6qHV.js +48 -0
- package/dist/esm/validity-DJztqcrH.js +17 -0
- package/dist/html.html-data.json +146 -2713
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-0266b7e1.entry.js +4 -0
- package/dist/ionic/p-08443c08.entry.js +4 -0
- package/dist/ionic/p-08f1ed1c.entry.js +4 -0
- package/dist/ionic/p-09b47b7d.entry.js +4 -0
- package/dist/ionic/p-0FNc80PN.js +4 -0
- package/dist/ionic/p-12589d59.entry.js +4 -0
- package/dist/ionic/p-1d2e53e8.entry.js +4 -0
- package/dist/ionic/p-1edf0573.entry.js +4 -0
- package/dist/ionic/p-214e000a.entry.js +4 -0
- package/dist/ionic/p-21a7fb2a.entry.js +4 -0
- package/dist/ionic/p-2ce59395.entry.js +4 -0
- package/dist/ionic/p-33829e94.entry.js +4 -0
- package/dist/ionic/p-374b10cb.entry.js +4 -0
- package/dist/ionic/p-3835a020.entry.js +4 -0
- package/dist/ionic/p-3c5fdd27.entry.js +4 -0
- package/dist/ionic/p-40424a88.entry.js +4 -0
- package/dist/ionic/p-48b6835f.entry.js +4 -0
- package/dist/ionic/p-4eOQC00Z.js +4 -0
- package/dist/ionic/p-5394e1d4.entry.js +4 -0
- package/dist/ionic/p-53bac1c9.entry.js +4 -0
- package/dist/ionic/p-5506caeb.entry.js +4 -0
- package/dist/ionic/p-5993a77f.entry.js +4 -0
- package/dist/ionic/p-6277efba.entry.js +4 -0
- package/dist/ionic/p-62e71297.entry.js +4 -0
- package/dist/ionic/p-6b286c5c.entry.js +4 -0
- package/dist/ionic/p-7116e558.entry.js +4 -0
- package/dist/ionic/p-74f30659.entry.js +4 -0
- package/dist/ionic/p-7bb3e957.entry.js +4 -0
- package/dist/ionic/p-82525fb0.entry.js +4 -0
- package/dist/ionic/p-865fa114.entry.js +4 -0
- package/dist/ionic/p-8a21bdbd.entry.js +4 -0
- package/dist/ionic/p-8e1d9e3a.entry.js +4 -0
- package/dist/ionic/p-8f3a1995.entry.js +4 -0
- package/dist/ionic/p-91c6faf1.entry.js +4 -0
- package/dist/ionic/p-9b865fe6.entry.js +4 -0
- package/dist/ionic/p-9nmHvEvw.js +4 -0
- package/dist/ionic/p-B-FxiyeI.js +4 -0
- package/dist/ionic/p-BB0LlG4y.js +4 -0
- package/dist/ionic/p-BMPN55of.js +4 -0
- package/dist/ionic/p-BQ8oNV0v.js +4 -0
- package/dist/ionic/p-BSQPZ79H.js +4 -0
- package/dist/ionic/p-BhamHSw3.js +4 -0
- package/dist/ionic/p-BjvtSsVI.js +4 -0
- package/dist/ionic/p-BkfAWuv6.js +4 -0
- package/dist/ionic/p-BmVRXR1y.js +4 -0
- package/dist/ionic/p-BnMQxWON.js +4 -0
- package/dist/ionic/p-BvabGprD.js +4 -0
- package/{components/p-Va26YR7l.js → dist/ionic/p-BwIp10KV.js} +1 -1
- package/dist/ionic/p-C-94tAim.js +4 -0
- package/dist/ionic/p-C6eME8Ey.js +4 -0
- package/dist/ionic/p-CIGNaXM1.js +4 -0
- package/dist/ionic/p-CKUuSnDR.js +4 -0
- package/dist/ionic/p-CMRtMbJc.js +4 -0
- package/dist/ionic/p-CPcPmkGv.js +4 -0
- package/dist/ionic/p-CQ_4TirR.js +4 -0
- package/dist/ionic/p-CaRuIadB.js +4 -0
- package/dist/ionic/p-Cdjxf_yg.js +4 -0
- package/dist/ionic/p-ChhhtsGZ.js +5 -0
- package/dist/ionic/p-CmKf4pgI.js +4 -0
- package/dist/ionic/p-D5t_-oMk.js +4 -0
- package/dist/ionic/p-D94b61er.js +4 -0
- package/dist/ionic/p-DCI3rXQo.js +4 -0
- package/dist/ionic/p-DDhtUaaA.js +4 -0
- package/dist/ionic/p-DJztqcrH.js +4 -0
- package/dist/ionic/p-DWCzVL3Y.js +4 -0
- package/dist/ionic/p-Dn0mqQ_R.js +4 -0
- package/dist/ionic/p-I3In7hMC.js +4 -0
- package/dist/ionic/p-T71k3C35.js +4 -0
- package/dist/ionic/p-TXPDHL13.js +4 -0
- package/dist/ionic/p-ZjP4CjeZ.js +4 -0
- package/dist/ionic/p-a641d428.entry.js +4 -0
- package/dist/ionic/p-ac6ef997.entry.js +4 -0
- package/dist/ionic/p-acf0a6af.entry.js +4 -0
- package/dist/ionic/p-ad98e3ff.entry.js +4 -0
- package/dist/ionic/p-af5166f5.entry.js +4 -0
- package/dist/ionic/p-b24dc0a1.entry.js +4 -0
- package/dist/ionic/p-ba8a598f.entry.js +4 -0
- package/dist/ionic/p-bf7c1f05.entry.js +4 -0
- package/dist/ionic/p-byZM6qHV.js +4 -0
- package/dist/ionic/p-c3f65965.entry.js +4 -0
- package/dist/ionic/p-c8fbe544.entry.js +4 -0
- package/dist/ionic/p-cb12f6c3.entry.js +4 -0
- package/dist/ionic/p-cec87704.entry.js +4 -0
- package/dist/ionic/p-dbfd2d52.entry.js +4 -0
- package/dist/ionic/p-e1e5b507.entry.js +4 -0
- package/dist/ionic/p-ede019ef.entry.js +4 -0
- package/dist/ionic/p-efef6788.entry.js +4 -0
- package/dist/ionic/p-f046aa37.entry.js +4 -0
- package/dist/ionic/p-f402f5a4.entry.js +4 -0
- package/dist/ionic/p-f622796d.entry.js +4 -0
- package/dist/ionic/{p-CnIzWLAn.js → p-kJA95YWg.js} +1 -1
- package/dist/types/components/accordion/accordion.d.ts +3 -6
- package/dist/types/components/accordion-group/accordion-group.d.ts +1 -12
- package/dist/types/components/action-sheet/action-sheet-interface.d.ts +7 -3
- package/dist/types/components/action-sheet/action-sheet.d.ts +2 -3
- package/dist/types/components/alert/alert-interface.d.ts +7 -3
- package/dist/types/components/alert/alert.d.ts +2 -3
- package/dist/types/components/app/app.d.ts +5 -4
- package/dist/types/components/avatar/avatar.d.ts +0 -32
- package/dist/types/components/back-button/back-button.d.ts +1 -2
- package/dist/types/components/backdrop/backdrop.d.ts +0 -4
- package/dist/types/components/badge/badge.d.ts +1 -34
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +1 -4
- package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
- package/dist/types/components/button/button.d.ts +8 -23
- package/dist/types/components/buttons/buttons.d.ts +1 -5
- package/dist/types/components/card/card.d.ts +1 -8
- package/dist/types/components/card-content/card-content.d.ts +1 -2
- package/dist/types/components/card-header/card-header.d.ts +2 -3
- package/dist/types/components/card-subtitle/card-subtitle.d.ts +1 -2
- package/dist/types/components/card-title/card-title.d.ts +1 -2
- package/dist/types/components/checkbox/checkbox.d.ts +4 -14
- package/dist/types/components/chip/chip.d.ts +1 -26
- package/dist/types/components/col/col.d.ts +5 -52
- package/dist/types/components/content/content.d.ts +0 -3
- package/dist/types/components/datetime/datetime.d.ts +1 -26
- package/dist/types/components/datetime/utils/data.d.ts +5 -5
- package/dist/types/components/datetime-button/datetime-button.d.ts +1 -2
- package/dist/types/components/fab/fab.d.ts +0 -4
- package/dist/types/components/fab-button/fab-button.d.ts +3 -5
- package/dist/types/components/fab-list/fab-list.d.ts +0 -4
- package/dist/types/components/footer/footer.d.ts +3 -20
- package/dist/types/components/grid/grid.d.ts +0 -4
- package/dist/types/components/header/header.d.ts +3 -26
- package/dist/types/components/header/header.utils.d.ts +5 -4
- package/dist/types/components/img/img.d.ts +1 -2
- package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +0 -21
- package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +0 -4
- package/dist/types/components/input/input.d.ts +6 -35
- package/dist/types/components/input-otp/input-otp.d.ts +0 -37
- package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +0 -2
- package/dist/types/components/item/item.d.ts +4 -11
- package/dist/types/components/item-divider/item-divider.d.ts +1 -2
- package/dist/types/components/item-group/item-group.d.ts +0 -4
- package/dist/types/components/item-option/item-option.d.ts +1 -18
- package/dist/types/components/item-options/item-options.d.ts +0 -4
- package/dist/types/components/item-sliding/item-sliding.d.ts +1 -47
- package/dist/types/components/item-sliding/test/test.utils.d.ts +0 -13
- package/dist/types/components/label/label.d.ts +1 -2
- package/dist/types/components/list/list.d.ts +1 -15
- package/dist/types/components/list-header/list-header.d.ts +1 -2
- package/dist/types/components/loading/loading-interface.d.ts +7 -2
- package/dist/types/components/loading/loading.d.ts +2 -3
- package/dist/types/components/menu/menu.d.ts +0 -3
- package/dist/types/components/menu-button/menu-button.d.ts +1 -3
- package/dist/types/components/menu-toggle/menu-toggle.d.ts +0 -3
- package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
- package/dist/types/components/modal/modal-interface.d.ts +16 -4
- package/dist/types/components/modal/modal.d.ts +12 -15
- package/dist/types/components/nav/nav-interface.d.ts +1 -10
- package/dist/types/components/nav/nav.d.ts +3 -27
- package/dist/types/components/nav-link/nav-link.d.ts +0 -4
- package/dist/types/components/note/note.d.ts +1 -2
- package/dist/types/components/picker/picker.d.ts +1 -2
- package/dist/types/components/picker-column/picker-column.d.ts +1 -2
- package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -4
- package/dist/types/components/popover/popover-interface.d.ts +6 -3
- package/dist/types/components/popover/popover.d.ts +5 -6
- package/dist/types/components/progress-bar/progress-bar.d.ts +1 -10
- package/dist/types/components/radio/radio.d.ts +1 -2
- package/dist/types/components/radio-group/radio-group.d.ts +0 -12
- package/dist/types/components/range/range.d.ts +1 -2
- package/dist/types/components/refresher/refresher.d.ts +1 -2
- package/dist/types/components/refresher-content/refresher-content.d.ts +0 -4
- package/dist/types/components/reorder/reorder.d.ts +0 -9
- package/dist/types/components/reorder-group/reorder-group.d.ts +0 -4
- package/dist/types/components/ripple-effect/ripple-effect.d.ts +0 -4
- package/dist/types/components/route/route.d.ts +1 -5
- package/dist/types/components/router/router.d.ts +0 -4
- package/dist/types/components/router-link/router-link.d.ts +0 -4
- package/dist/types/components/router-outlet/router-outlet.d.ts +8 -4
- package/dist/types/components/row/row.d.ts +0 -4
- package/dist/types/components/searchbar/searchbar.d.ts +11 -57
- package/dist/types/components/segment/segment.d.ts +1 -2
- package/dist/types/components/segment-button/segment-button.d.ts +1 -2
- package/dist/types/components/select/select.d.ts +14 -49
- package/dist/types/components/select-modal/select-modal.d.ts +0 -8
- package/dist/types/components/select-option/select-option.d.ts +4 -7
- package/dist/types/components/select-popover/select-popover.d.ts +0 -3
- package/dist/types/components/skeleton-text/skeleton-text.d.ts +0 -4
- package/dist/types/components/spinner/spinner.d.ts +0 -15
- package/dist/types/components/split-pane/split-pane.d.ts +0 -4
- package/dist/types/components/tab/tab.d.ts +0 -4
- package/dist/types/components/tab-bar/tab-bar-interface.d.ts +0 -1
- package/dist/types/components/tab-bar/tab-bar.d.ts +3 -41
- package/dist/types/components/tab-button/tab-button.d.ts +1 -12
- package/dist/types/components/tabs/tabs.d.ts +0 -3
- package/dist/types/components/text/text.d.ts +1 -2
- package/dist/types/components/textarea/textarea.d.ts +4 -53
- package/dist/types/components/thumbnail/thumbnail.d.ts +0 -4
- package/dist/types/components/title/title.d.ts +0 -4
- package/dist/types/components/toast/animations/utils.d.ts +2 -2
- package/dist/types/components/toast/toast-interface.d.ts +7 -3
- package/dist/types/components/toast/toast.d.ts +2 -19
- package/dist/types/components/toggle/toggle.d.ts +1 -15
- package/dist/types/components/toolbar/toolbar.d.ts +3 -43
- package/dist/types/components.d.ts +263 -2171
- package/dist/types/global/ionic-global.d.ts +2 -28
- package/dist/types/index.d.ts +1 -1
- package/dist/types/interface.d.ts +0 -4
- package/dist/types/utils/config.d.ts +3 -114
- package/dist/types/utils/focus-trap.d.ts +1 -1
- package/dist/types/utils/focus-visible.d.ts +0 -13
- package/dist/types/utils/forms/index.d.ts +0 -1
- package/dist/types/utils/forms/validity.d.ts +0 -7
- package/dist/types/utils/helpers.d.ts +0 -22
- package/dist/types/utils/logging/index.d.ts +2 -1
- package/dist/types/utils/overlay-control-label.d.ts +9 -11
- package/dist/types/utils/overlays-interface.d.ts +1 -31
- package/dist/types/utils/overlays.d.ts +12 -10
- package/dist/types/utils/test/playwright/drag-element.d.ts +3 -16
- package/dist/types/utils/test/playwright/generator.d.ts +2 -31
- package/dist/types/utils/test/playwright/playwright-page.d.ts +1 -1
- package/dist/types/utils/test/playwright/testExpect.d.ts +1 -1
- package/dist/types/utils/theme.d.ts +0 -9
- package/hydrate/index.js +10310 -12033
- package/hydrate/index.mjs +10310 -12033
- package/package.json +56 -17
- package/components/ion-divider.d.ts +0 -11
- package/components/ion-divider.js +0 -4
- package/components/ion-gallery-item.d.ts +0 -11
- package/components/ion-gallery-item.js +0 -4
- package/components/ion-gallery.d.ts +0 -11
- package/components/ion-gallery.js +0 -4
- package/components/ion-picker-legacy-column.d.ts +0 -11
- package/components/ion-picker-legacy-column.js +0 -4
- package/components/ion-picker-legacy.d.ts +0 -11
- package/components/ion-picker-legacy.js +0 -4
- package/components/p-6hUZIMBp.js +0 -4
- package/components/p-9mfpAwJh.js +0 -4
- package/components/p-B2aAAEfp.js +0 -4
- package/components/p-B2lpqDWK.js +0 -4
- package/components/p-BDoEcs72.js +0 -4
- package/components/p-BDqjX7Z_.js +0 -4
- package/components/p-BE21dB_a.js +0 -4
- package/components/p-BFpXpzD-.js +0 -4
- package/components/p-BTEOs1at.js +0 -4
- package/components/p-BUNIyvqe.js +0 -4
- package/components/p-BYSs-jZz.js +0 -4
- package/components/p-BYoGvMgh.js +0 -4
- package/components/p-BYrCPOBM.js +0 -4
- package/components/p-BbVhJs-a.js +0 -4
- package/components/p-BhRXIcSN.js +0 -4
- package/components/p-BjW8SOqw.js +0 -4
- package/components/p-BsiHrVPa.js +0 -4
- package/components/p-BwKpO3Is.js +0 -4
- package/components/p-Bz8jnuiy.js +0 -4
- package/components/p-C-Ea1l5K.js +0 -4
- package/components/p-C3X10Pc6.js +0 -4
- package/components/p-C53feagD.js +0 -4
- package/components/p-CH6jbAEI.js +0 -4
- package/components/p-CJE5t2qs.js +0 -4
- package/components/p-CODBQrPj.js +0 -4
- package/components/p-CUbb1HkU.js +0 -4
- package/components/p-CVYFPBs-.js +0 -4
- package/components/p-CVoLDZ7z.js +0 -4
- package/components/p-CZrORZXS.js +0 -4
- package/components/p-Cc3oC60a.js +0 -4
- package/components/p-Cl0B-RWe.js +0 -4
- package/components/p-CmoUesXp.js +0 -4
- package/components/p-CyNW8ypn.js +0 -4
- package/components/p-CzxyxYID.js +0 -4
- package/components/p-D0Iqw6OZ.js +0 -4
- package/components/p-D0LT3Z3i.js +0 -4
- package/components/p-D1t981Ih.js +0 -4
- package/components/p-D6tqrIYY.js +0 -4
- package/components/p-D9C5yWpF.js +0 -4
- package/components/p-DCRXgAoM.js +0 -4
- package/components/p-DL5wyRub.js +0 -4
- package/components/p-DQlXUUDh.js +0 -4
- package/components/p-DRWN7QM2.js +0 -4
- package/components/p-DaJxRxSQ.js +0 -4
- package/components/p-DbmfFkd1.js +0 -4
- package/components/p-Dhi5xtNS.js +0 -4
- package/components/p-DnwLgh9U.js +0 -4
- package/components/p-DoZB3DcY.js +0 -4
- package/components/p-DrrpZB81.js +0 -4
- package/components/p-DrzWRqnG.js +0 -4
- package/components/p-DylrHLJF.js +0 -4
- package/components/p-Dypq4kXE.js +0 -4
- package/components/p-DzeMJvWL.js +0 -4
- package/components/p-Dzk4Tr0X.js +0 -4
- package/components/p-Rkm2AOZ2.js +0 -4
- package/components/p-UYngqo1f.js +0 -4
- package/components/p-asUhrzOB.js +0 -4
- package/components/p-fIOYmaqA.js +0 -4
- package/components/p-jlwpz7Ms.js +0 -4
- package/components/p-kInyVu79.js +0 -4
- package/components/p-miSYSxcc.js +0 -4
- package/components/p-paDbTUL9.js +0 -4
- package/components/p-vXpMhGrs.js +0 -4
- package/components/p-znZTPd7u.js +0 -4
- package/css/ionic/bundle.ionic.css +0 -1
- package/css/ionic/bundle.ionic.css.map +0 -1
- package/css/ionic/core.ionic.css +0 -1
- package/css/ionic/core.ionic.css.map +0 -1
- package/css/ionic/global.bundle.ionic.css +0 -1
- package/css/ionic/global.bundle.ionic.css.map +0 -1
- package/css/ionic/ionic-swiper.ionic.css +0 -1
- package/css/ionic/ionic-swiper.ionic.css.map +0 -1
- package/css/ionic/link.ionic.css +0 -1
- package/css/ionic/link.ionic.css.map +0 -1
- package/css/ionic/structure.ionic.css +0 -1
- package/css/ionic/structure.ionic.css.map +0 -1
- package/css/ionic/typography.ionic.css +0 -1
- package/css/ionic/typography.ionic.css.map +0 -1
- package/css/ionic/utils.bundle.ionic.css +0 -1
- package/css/ionic/utils.bundle.ionic.css.map +0 -1
- package/dist/cjs/caret-down-vtVgfXIs.js +0 -8
- package/dist/cjs/caret-left-CxZXLRv5.js +0 -8
- package/dist/cjs/caret-right-CRCgv98E.js +0 -8
- package/dist/cjs/clear-button-press-controller-2hAy_qdm.js +0 -45
- package/dist/cjs/ion-datetime_3.cjs.entry.js +0 -3242
- package/dist/cjs/ion-divider.cjs.entry.js +0 -51
- package/dist/cjs/ion-gallery-item.cjs.entry.js +0 -59
- package/dist/cjs/ion-gallery.cjs.entry.js +0 -607
- package/dist/cjs/ionic-global-DvEcO0tQ.js +0 -519
- package/dist/cjs/list-a-7GSA6K.js +0 -8
- package/dist/cjs/scroll-hide-controller-DAf_DwKc.js +0 -345
- package/dist/cjs/validity-QmuwEptc.js +0 -51
- package/dist/cjs/x-BTF99yFH.js +0 -8
- package/dist/collection/components/accordion/accordion.ionic.css +0 -201
- package/dist/collection/components/accordion-group/accordion-group.ionic.css +0 -93
- package/dist/collection/components/action-sheet/action-sheet.ionic.css +0 -494
- package/dist/collection/components/alert/alert.ionic.css +0 -787
- package/dist/collection/components/avatar/avatar.ionic.css +0 -385
- package/dist/collection/components/backdrop/backdrop.ionic.css +0 -109
- package/dist/collection/components/badge/badge.ionic.css +0 -272
- package/dist/collection/components/button/button.ionic.css +0 -644
- package/dist/collection/components/buttons/buttons.ionic.css +0 -97
- package/dist/collection/components/card/card.ionic.css +0 -144
- package/dist/collection/components/card-content/card-content.ionic.css +0 -89
- package/dist/collection/components/card-header/card-header.ionic.css +0 -85
- package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +0 -144
- package/dist/collection/components/checkbox/checkbox.ionic.css +0 -543
- package/dist/collection/components/chip/chip.ionic.css +0 -217
- package/dist/collection/components/datetime/datetime.ionic.css +0 -703
- package/dist/collection/components/divider/divider.ionic.css +0 -148
- package/dist/collection/components/divider/divider.ios.css +0 -87
- package/dist/collection/components/divider/divider.js +0 -94
- package/dist/collection/components/divider/divider.md.css +0 -87
- package/dist/collection/components/footer/footer-interface.js +0 -1
- package/dist/collection/components/gallery/gallery-constants.js +0 -12
- package/dist/collection/components/gallery/gallery-interface.js +0 -1
- package/dist/collection/components/gallery/gallery.css +0 -15
- package/dist/collection/components/gallery/gallery.js +0 -679
- package/dist/collection/components/gallery/test/utils.js +0 -100
- package/dist/collection/components/gallery-item/gallery-item.css +0 -49
- package/dist/collection/components/gallery-item/gallery-item.js +0 -99
- package/dist/collection/components/header/header-interface.js +0 -1
- package/dist/collection/components/header/header.ionic.css +0 -250
- package/dist/collection/components/input/input.ionic.css +0 -891
- package/dist/collection/components/input-otp/input-otp.ionic.css +0 -371
- package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +0 -78
- package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +0 -61
- package/dist/collection/components/item/item.ionic.css +0 -496
- package/dist/collection/components/item-option/item-option.ionic.css +0 -277
- package/dist/collection/components/item-options/item-options.ionic.css +0 -221
- package/dist/collection/components/item-sliding/item-sliding.ionic.css +0 -211
- package/dist/collection/components/list/list.ionic.css +0 -212
- package/dist/collection/components/list-header/list-header.ionic.css +0 -190
- package/dist/collection/components/menu-button/menu-button.ionic.css +0 -236
- package/dist/collection/components/modal/animations/ionic.enter.js +0 -40
- package/dist/collection/components/modal/animations/ionic.leave.js +0 -28
- package/dist/collection/components/modal/modal.ionic.css +0 -255
- package/dist/collection/components/picker-legacy/animations/ios.enter.js +0 -27
- package/dist/collection/components/picker-legacy/animations/ios.leave.js +0 -23
- package/dist/collection/components/picker-legacy/picker-interface.js +0 -1
- package/dist/collection/components/picker-legacy/picker.ios.css +0 -312
- package/dist/collection/components/picker-legacy/picker.js +0 -891
- package/dist/collection/components/picker-legacy/picker.md.css +0 -299
- package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -243
- package/dist/collection/components/picker-legacy-column/picker-column.js +0 -422
- package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -234
- package/dist/collection/components/picker-legacy-column/test/test.utils.js +0 -43
- package/dist/collection/components/popover/popover.ionic.css +0 -290
- package/dist/collection/components/progress-bar/progress-bar.ionic.css +0 -287
- package/dist/collection/components/radio/radio.ionic.css +0 -422
- package/dist/collection/components/radio-group/radio-group.ionic.css +0 -119
- package/dist/collection/components/range/range.ionic.css +0 -567
- package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +0 -215
- package/dist/collection/components/searchbar/searchbar.ionic.css +0 -622
- package/dist/collection/components/segment/segment.ionic.css +0 -115
- package/dist/collection/components/segment-button/segment-button.ionic.css +0 -352
- package/dist/collection/components/select/select.ionic.css +0 -809
- package/dist/collection/components/select-modal/select-modal.ionic.css +0 -257
- package/dist/collection/components/select-popover/select-popover.ionic.css +0 -255
- package/dist/collection/components/spinner/spinner.native.css +0 -199
- package/dist/collection/components/tab-bar/tab-bar.ionic.css +0 -249
- package/dist/collection/components/tab-button/tab-button.ionic.css +0 -373
- package/dist/collection/components/textarea/textarea.ionic.css +0 -898
- package/dist/collection/components/title/title.ionic.css +0 -127
- package/dist/collection/components/toast/toast.ionic.css +0 -394
- package/dist/collection/components/toggle/toggle.ionic.css +0 -512
- package/dist/collection/components/toolbar/test/image.svg +0 -1
- package/dist/collection/components/toolbar/toolbar.ionic.css +0 -249
- package/dist/collection/utils/css-value-validation.js +0 -39
- package/dist/collection/utils/forms/clear-button-press-controller.js +0 -40
- package/dist/collection/utils/scroll-hide-controller.js +0 -178
- package/dist/esm/caret-down-D1t981Ih.js +0 -6
- package/dist/esm/caret-left-fIOYmaqA.js +0 -6
- package/dist/esm/caret-right-BYSs-jZz.js +0 -6
- package/dist/esm/clear-button-press-controller-C79TPm5p.js +0 -43
- package/dist/esm/ion-datetime_3.entry.js +0 -3238
- package/dist/esm/ion-divider.entry.js +0 -49
- package/dist/esm/ion-gallery-item.entry.js +0 -57
- package/dist/esm/ion-gallery.entry.js +0 -605
- package/dist/esm/ionic-global-CEwbmRLz.js +0 -508
- package/dist/esm/list-Dhi5xtNS.js +0 -6
- package/dist/esm/scroll-hide-controller-CfbtPBWv.js +0 -342
- package/dist/esm/theme-DaJxRxSQ.js +0 -67
- package/dist/esm/validity-BjW8SOqw.js +0 -48
- package/dist/esm/x-BDqjX7Z_.js +0 -6
- package/dist/ionic/p--sroV-k-.js +0 -4
- package/dist/ionic/p-00731d20.entry.js +0 -4
- package/dist/ionic/p-03c20a50.entry.js +0 -4
- package/dist/ionic/p-03ec6673.entry.js +0 -4
- package/dist/ionic/p-0405ec57.entry.js +0 -4
- package/dist/ionic/p-04f16322.entry.js +0 -4
- package/dist/ionic/p-09123f89.entry.js +0 -4
- package/dist/ionic/p-15028853.entry.js +0 -4
- package/dist/ionic/p-16c5db90.entry.js +0 -4
- package/dist/ionic/p-1d1dfb68.entry.js +0 -4
- package/dist/ionic/p-231572a0.entry.js +0 -4
- package/dist/ionic/p-2740db6e.entry.js +0 -4
- package/dist/ionic/p-2a6d4601.entry.js +0 -4
- package/dist/ionic/p-2d8fe33c.entry.js +0 -4
- package/dist/ionic/p-2dbc50d9.entry.js +0 -4
- package/dist/ionic/p-32d3095c.entry.js +0 -4
- package/dist/ionic/p-356cd619.entry.js +0 -4
- package/dist/ionic/p-391bdb60.entry.js +0 -4
- package/dist/ionic/p-3b2ab5b4.entry.js +0 -4
- package/dist/ionic/p-4e3e750a.entry.js +0 -4
- package/dist/ionic/p-4fee0df6.entry.js +0 -4
- package/dist/ionic/p-547d010c.entry.js +0 -4
- package/dist/ionic/p-54895118.entry.js +0 -4
- package/dist/ionic/p-6163d04d.entry.js +0 -4
- package/dist/ionic/p-679c1448.entry.js +0 -4
- package/dist/ionic/p-6de524e5.entry.js +0 -4
- package/dist/ionic/p-764d7ea2.entry.js +0 -4
- package/dist/ionic/p-7k7Q1A38.js +0 -4
- package/dist/ionic/p-81BMEE8Q.js +0 -4
- package/dist/ionic/p-8d6d7acb.entry.js +0 -4
- package/dist/ionic/p-96732fe2.entry.js +0 -4
- package/dist/ionic/p-96c4c1b9.entry.js +0 -4
- package/dist/ionic/p-9745f518.entry.js +0 -4
- package/dist/ionic/p-9a40af3c.entry.js +0 -4
- package/dist/ionic/p-9e725104.entry.js +0 -4
- package/dist/ionic/p-B4Kq2YNk.js +0 -4
- package/dist/ionic/p-BDqjX7Z_.js +0 -4
- package/dist/ionic/p-BTEOs1at.js +0 -4
- package/dist/ionic/p-BYSs-jZz.js +0 -4
- package/dist/ionic/p-BbWo-T8F.js +0 -4
- package/dist/ionic/p-BjW8SOqw.js +0 -4
- package/dist/ionic/p-Bvz8PHo5.js +0 -4
- package/dist/ionic/p-BwKpO3Is.js +0 -4
- package/dist/ionic/p-C0EQceqV.js +0 -5
- package/dist/ionic/p-C1_a9uRb.js +0 -4
- package/dist/ionic/p-C53feagD.js +0 -4
- package/dist/ionic/p-C6WD6qSF.js +0 -4
- package/dist/ionic/p-C7urd_wE.js +0 -4
- package/dist/ionic/p-CCgRIJJv.js +0 -4
- package/dist/ionic/p-CEkwLb3L.js +0 -4
- package/dist/ionic/p-CGFf6My7.js +0 -4
- package/dist/ionic/p-CLUwRxij.js +0 -4
- package/dist/ionic/p-CODBQrPj.js +0 -4
- package/dist/ionic/p-CP_sVwEm.js +0 -4
- package/dist/ionic/p-CSMWpRc0.js +0 -4
- package/dist/ionic/p-CYYo93al.js +0 -4
- package/dist/ionic/p-Cipl19Qe.js +0 -4
- package/dist/ionic/p-Cl0B-RWe.js +0 -4
- package/dist/ionic/p-Cvvva6Z7.js +0 -4
- package/dist/ionic/p-D1t981Ih.js +0 -4
- package/dist/ionic/p-DINFwXlp.js +0 -4
- package/dist/ionic/p-DIvCXVmD.js +0 -4
- package/dist/ionic/p-DTsDGZPd.js +0 -4
- package/dist/ionic/p-DaJxRxSQ.js +0 -4
- package/dist/ionic/p-Dhi5xtNS.js +0 -4
- package/dist/ionic/p-DtQgCTtW.js +0 -4
- package/dist/ionic/p-DuRx6DeQ.js +0 -4
- package/dist/ionic/p-YGLqXqFd.js +0 -4
- package/dist/ionic/p-YIsE5bNG.js +0 -4
- package/dist/ionic/p-a61c2ace.entry.js +0 -4
- package/dist/ionic/p-abb516e3.entry.js +0 -4
- package/dist/ionic/p-b54edee6.entry.js +0 -4
- package/dist/ionic/p-c076ac5c.entry.js +0 -4
- package/dist/ionic/p-c4ff25cb.entry.js +0 -4
- package/dist/ionic/p-c7279756.entry.js +0 -4
- package/dist/ionic/p-c7ebed50.entry.js +0 -4
- package/dist/ionic/p-cd0037e4.entry.js +0 -4
- package/dist/ionic/p-d261938d.entry.js +0 -4
- package/dist/ionic/p-d33dfc12.entry.js +0 -4
- package/dist/ionic/p-d7764330.entry.js +0 -4
- package/dist/ionic/p-defb23a2.entry.js +0 -4
- package/dist/ionic/p-df642ef5.entry.js +0 -4
- package/dist/ionic/p-e2a35249.entry.js +0 -4
- package/dist/ionic/p-e2b952ef.entry.js +0 -4
- package/dist/ionic/p-e77cfd1e.entry.js +0 -4
- package/dist/ionic/p-ecb9d3d3.entry.js +0 -4
- package/dist/ionic/p-efd13adf.entry.js +0 -4
- package/dist/ionic/p-f0904c1d.entry.js +0 -4
- package/dist/ionic/p-f33689f7.entry.js +0 -4
- package/dist/ionic/p-f693efe9.entry.js +0 -4
- package/dist/ionic/p-f788396b.entry.js +0 -4
- package/dist/ionic/p-fIOYmaqA.js +0 -4
- package/dist/ionic/p-fa16fad8.entry.js +0 -4
- package/dist/ionic/p-lMb_45ax.js +0 -4
- package/dist/ionic/p-oadJNPuo.js +0 -4
- package/dist/ionic/p-vXpMhGrs.js +0 -4
- package/dist/ionic/p-wNjWCZVO.js +0 -4
- package/dist/types/components/divider/divider.d.ts +0 -20
- package/dist/types/components/footer/footer-interface.d.ts +0 -1
- package/dist/types/components/gallery/gallery-constants.d.ts +0 -9
- package/dist/types/components/gallery/gallery-interface.d.ts +0 -10
- package/dist/types/components/gallery/gallery.d.ts +0 -218
- package/dist/types/components/gallery/test/utils.d.ts +0 -3
- package/dist/types/components/gallery-item/gallery-item.d.ts +0 -33
- package/dist/types/components/header/header-interface.d.ts +0 -1
- package/dist/types/components/modal/animations/ionic.enter.d.ts +0 -6
- package/dist/types/components/modal/animations/ionic.leave.d.ts +0 -6
- package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +0 -5
- package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +0 -5
- package/dist/types/components/picker-legacy/picker-interface.d.ts +0 -52
- package/dist/types/components/picker-legacy/picker.d.ts +0 -159
- package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
- package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +0 -9
- package/dist/types/utils/css-value-validation.d.ts +0 -21
- package/dist/types/utils/forms/clear-button-press-controller.d.ts +0 -20
- package/dist/types/utils/scroll-hide-controller.d.ts +0 -56
- /package/dist/collection/components/{refresher-content/refresher-content.css → input-password-toggle/input-password-toggle.css} +0 -0
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import caretDownRegular from "@phosphor-icons/core/assets/regular/caret-down.svg";
|
|
5
4
|
import { Build, Host, h, forceUpdate } from "@stencil/core";
|
|
6
5
|
import { ENABLE_HTML_CONTENT_DEFAULT } from "../../utils/config";
|
|
7
6
|
import { compareOptions, createNotchController, isOptionSelected, checkInvalidState } from "../../utils/forms/index";
|
|
8
|
-
import {
|
|
7
|
+
import { focusVisibleElement, renderHiddenInput, inheritAttributes } from "../../utils/helpers";
|
|
9
8
|
import { printIonWarning } from "../../utils/logging/index";
|
|
10
9
|
import { actionSheetController, alertController, popoverController, modalController } from "../../utils/overlays";
|
|
11
10
|
import { isRTL } from "../../utils/rtl/index";
|
|
@@ -14,11 +13,10 @@ import { createColorClasses, hostContext } from "../../utils/theme";
|
|
|
14
13
|
import { watchForOptions } from "../../utils/watch-options";
|
|
15
14
|
import { caretDownSharp, chevronExpand } from "ionicons/icons";
|
|
16
15
|
import { config } from "../../global/config";
|
|
17
|
-
import {
|
|
16
|
+
import { getIonMode } from "../../global/ionic-global";
|
|
18
17
|
// TODO(FW-2832): types
|
|
19
18
|
/**
|
|
20
|
-
* @virtualProp {"ios" | "md"} mode - The mode determines
|
|
21
|
-
* @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
|
|
19
|
+
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
22
20
|
*
|
|
23
21
|
* @slot label - The label text to associate with the select. Use the `labelPlacement` property to control where the label is placed relative to the select. Use this if you need to render a label with custom HTML.
|
|
24
22
|
* @slot start - Content to display at the leading edge of the select.
|
|
@@ -37,148 +35,225 @@ import { getIonTheme } from "../../global/ionic-global";
|
|
|
37
35
|
* @part inner - The inner element of the wrapper that manages the slots, selected values or placeholder, and toggle icons.
|
|
38
36
|
*/
|
|
39
37
|
export class Select {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
38
|
+
inputId = `ion-sel-${selectIds++}`;
|
|
39
|
+
helperTextId = `${this.inputId}-helper-text`;
|
|
40
|
+
errorTextId = `${this.inputId}-error-text`;
|
|
41
|
+
overlay;
|
|
42
|
+
focusEl;
|
|
43
|
+
mutationO;
|
|
44
|
+
inheritedAttributes = {};
|
|
45
|
+
nativeWrapperEl;
|
|
46
|
+
notchSpacerEl;
|
|
47
|
+
validationObserver;
|
|
48
|
+
notchController;
|
|
49
|
+
customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
|
|
50
|
+
el;
|
|
51
|
+
isExpanded = false;
|
|
52
|
+
/**
|
|
53
|
+
* The `hasFocus` state ensures the focus class is
|
|
54
|
+
* added regardless of how the element is focused.
|
|
55
|
+
* The `ion-focused` class only applies when focused
|
|
56
|
+
* via tabbing, not by clicking.
|
|
57
|
+
* The `has-focus` logic was added to ensure the class
|
|
58
|
+
* is applied in both cases.
|
|
59
|
+
*/
|
|
60
|
+
hasFocus = false;
|
|
61
|
+
/**
|
|
62
|
+
* Track validation state for proper aria-live announcements.
|
|
63
|
+
*/
|
|
64
|
+
isInvalid = false;
|
|
65
|
+
hintTextId;
|
|
66
|
+
/**
|
|
67
|
+
* The text to display on the cancel button.
|
|
68
|
+
*/
|
|
69
|
+
cancelText = 'Cancel';
|
|
70
|
+
/**
|
|
71
|
+
* The color to use from your application's color palette.
|
|
72
|
+
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
73
|
+
* For more information on colors, see [theming](/docs/theming/basics).
|
|
74
|
+
*
|
|
75
|
+
* This property is only available when using the modern select syntax.
|
|
76
|
+
*/
|
|
77
|
+
color;
|
|
78
|
+
/**
|
|
79
|
+
* This property allows developers to specify a custom function or property
|
|
80
|
+
* name for comparing objects when determining the selected option in the
|
|
81
|
+
* ion-select. When not specified, the default behavior will use strict
|
|
82
|
+
* equality (===) for comparison.
|
|
83
|
+
*/
|
|
84
|
+
compareWith;
|
|
85
|
+
/**
|
|
86
|
+
* If `true`, the user cannot interact with the select.
|
|
87
|
+
*/
|
|
88
|
+
disabled = false;
|
|
89
|
+
/**
|
|
90
|
+
* The fill for the item. If `"solid"` the item will have a background. If
|
|
91
|
+
* `"outline"` the item will be transparent with a border. Only available in `md` mode.
|
|
92
|
+
*/
|
|
93
|
+
fill;
|
|
94
|
+
/**
|
|
95
|
+
* Text that is placed under the select and displayed when an error is detected.
|
|
96
|
+
*/
|
|
97
|
+
errorText;
|
|
98
|
+
/**
|
|
99
|
+
* Text that is placed under the select and displayed when no error is detected.
|
|
100
|
+
*/
|
|
101
|
+
helperText;
|
|
102
|
+
/**
|
|
103
|
+
* The interface the select should use: `action-sheet`, `popover`, `alert`, or `modal`.
|
|
104
|
+
*/
|
|
105
|
+
interface = 'alert';
|
|
106
|
+
/**
|
|
107
|
+
* Any additional options that the `alert`, `action-sheet` or `popover` interface
|
|
108
|
+
* can take. See the [ion-alert docs](./alert), the
|
|
109
|
+
* [ion-action-sheet docs](./action-sheet), the
|
|
110
|
+
* [ion-popover docs](./popover), and the [ion-modal docs](./modal) for the
|
|
111
|
+
* create options for each interface.
|
|
112
|
+
*
|
|
113
|
+
* Note: `interfaceOptions` will not override `inputs` or `buttons` with the `alert` interface.
|
|
114
|
+
*/
|
|
115
|
+
interfaceOptions = {};
|
|
116
|
+
/**
|
|
117
|
+
* How to pack the label and select within a line.
|
|
118
|
+
* `justify` does not apply when the label and select
|
|
119
|
+
* are on different lines when `labelPlacement` is set to
|
|
120
|
+
* `"floating"` or `"stacked"`.
|
|
121
|
+
* `"start"`: The label and select will appear on the left in LTR and
|
|
122
|
+
* on the right in RTL.
|
|
123
|
+
* `"end"`: The label and select will appear on the right in LTR and
|
|
124
|
+
* on the left in RTL.
|
|
125
|
+
* `"space-between"`: The label and select will appear on opposite
|
|
126
|
+
* ends of the line with space between the two elements.
|
|
127
|
+
*/
|
|
128
|
+
justify;
|
|
129
|
+
/**
|
|
130
|
+
* The visible label associated with the select.
|
|
131
|
+
*
|
|
132
|
+
* Use this if you need to render a plaintext label.
|
|
133
|
+
*
|
|
134
|
+
* The `label` property will take priority over the `label` slot if both are used.
|
|
135
|
+
*/
|
|
136
|
+
label;
|
|
137
|
+
/**
|
|
138
|
+
* Where to place the label relative to the select.
|
|
139
|
+
* `"start"`: The label will appear to the left of the select in LTR and to the right in RTL.
|
|
140
|
+
* `"end"`: The label will appear to the right of the select in LTR and to the left in RTL.
|
|
141
|
+
* `"floating"`: The label will appear smaller and above the select when the select is focused or it has a value. Otherwise it will appear on top of the select.
|
|
142
|
+
* `"stacked"`: The label will appear smaller and above the select regardless even when the select is blurred or has no value.
|
|
143
|
+
* `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
|
|
144
|
+
* When using `"floating"` or `"stacked"` we recommend initializing the select with either a `value` or a `placeholder`.
|
|
145
|
+
*/
|
|
146
|
+
labelPlacement = 'start';
|
|
147
|
+
/**
|
|
148
|
+
* If `true`, the select can accept multiple values.
|
|
149
|
+
*/
|
|
150
|
+
multiple = false;
|
|
151
|
+
/**
|
|
152
|
+
* The name of the control, which is submitted with the form data.
|
|
153
|
+
*/
|
|
154
|
+
name = this.inputId;
|
|
155
|
+
/**
|
|
156
|
+
* The text to display on the ok button.
|
|
157
|
+
*/
|
|
158
|
+
okText = 'OK';
|
|
159
|
+
/**
|
|
160
|
+
* The text to display when the select is empty.
|
|
161
|
+
*/
|
|
162
|
+
placeholder;
|
|
163
|
+
/**
|
|
164
|
+
* The text to display instead of the selected option's value.
|
|
165
|
+
*/
|
|
166
|
+
selectedText;
|
|
167
|
+
/**
|
|
168
|
+
* The toggle icon to use. Defaults to `chevronExpand` for `ios` mode,
|
|
169
|
+
* or `caretDownSharp` for `md` mode.
|
|
170
|
+
*/
|
|
171
|
+
toggleIcon;
|
|
172
|
+
/**
|
|
173
|
+
* The toggle icon to show when the select is open. If defined, the icon
|
|
174
|
+
* rotation behavior in `md` mode will be disabled. If undefined, `toggleIcon`
|
|
175
|
+
* will be used for when the select is both open and closed.
|
|
176
|
+
*/
|
|
177
|
+
expandedIcon;
|
|
178
|
+
/**
|
|
179
|
+
* The shape of the select. If "round" it will have an increased border radius.
|
|
180
|
+
*/
|
|
181
|
+
shape;
|
|
182
|
+
/**
|
|
183
|
+
* The value of the select.
|
|
184
|
+
*/
|
|
185
|
+
value;
|
|
186
|
+
/**
|
|
187
|
+
* If true, screen readers will announce it as a required field. This property
|
|
188
|
+
* works only for accessibility purposes, it will not prevent the form from
|
|
189
|
+
* submitting if the value is invalid.
|
|
190
|
+
*/
|
|
191
|
+
required = false;
|
|
192
|
+
/**
|
|
193
|
+
* Emitted when the value has changed.
|
|
194
|
+
*
|
|
195
|
+
* This event will not emit when programmatically setting the `value` property.
|
|
196
|
+
*/
|
|
197
|
+
ionChange;
|
|
198
|
+
/**
|
|
199
|
+
* Emitted when the selection is cancelled.
|
|
200
|
+
*/
|
|
201
|
+
ionCancel;
|
|
202
|
+
/**
|
|
203
|
+
* Emitted when the overlay is dismissed.
|
|
204
|
+
*/
|
|
205
|
+
ionDismiss;
|
|
206
|
+
/**
|
|
207
|
+
* Emitted when the select has focus.
|
|
208
|
+
*/
|
|
209
|
+
ionFocus;
|
|
210
|
+
/**
|
|
211
|
+
* Emitted when the select loses focus.
|
|
212
|
+
*/
|
|
213
|
+
ionBlur;
|
|
214
|
+
/**
|
|
215
|
+
* Emitted when the styles change.
|
|
216
|
+
* @internal
|
|
217
|
+
*/
|
|
218
|
+
ionStyle;
|
|
175
219
|
styleChanged() {
|
|
176
220
|
this.emitStyle();
|
|
177
221
|
}
|
|
178
222
|
setValue(value) {
|
|
223
|
+
if (this.isValueEqual(this.value, value)) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
179
226
|
this.value = value;
|
|
180
227
|
this.ionChange.emit({ value });
|
|
181
228
|
}
|
|
229
|
+
isValueEqual(currentValue, newValue) {
|
|
230
|
+
if (this.multiple) {
|
|
231
|
+
const currentArr = Array.isArray(currentValue) ? currentValue : [];
|
|
232
|
+
const newArr = Array.isArray(newValue) ? newValue : [];
|
|
233
|
+
if (currentArr.length !== newArr.length) {
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
// Multiset compare: each new value must match a distinct current value.
|
|
237
|
+
// A plain `every(isOptionSelected)` would accept ['a','a'] as equal to
|
|
238
|
+
// ['a','b'] when both 'a' and 'b' map to options whose values overlap.
|
|
239
|
+
const remaining = currentArr.slice();
|
|
240
|
+
return newArr.every((val) => {
|
|
241
|
+
const idx = remaining.findIndex((c) => compareOptions(c, val, this.compareWith));
|
|
242
|
+
if (idx === -1) {
|
|
243
|
+
return false;
|
|
244
|
+
}
|
|
245
|
+
remaining.splice(idx, 1);
|
|
246
|
+
return true;
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
if (currentValue == null && newValue == null) {
|
|
250
|
+
return true;
|
|
251
|
+
}
|
|
252
|
+
if (currentValue == null || newValue == null) {
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
return compareOptions(currentValue, newValue, this.compareWith);
|
|
256
|
+
}
|
|
182
257
|
async connectedCallback() {
|
|
183
258
|
const { el } = this;
|
|
184
259
|
this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
|
|
@@ -278,65 +353,44 @@ export class Select {
|
|
|
278
353
|
// Add logic to scroll selected item into view before presenting
|
|
279
354
|
const scrollSelectedIntoView = () => {
|
|
280
355
|
const indexOfSelected = this.childOpts.findIndex((o) => o.value === this.value);
|
|
281
|
-
/**
|
|
282
|
-
* Determine which option to focus when the overlay opens: the selected
|
|
283
|
-
* option if the select has a value, otherwise the first enabled option.
|
|
284
|
-
*/
|
|
285
|
-
let optionToFocus = null;
|
|
286
356
|
if (indexOfSelected > -1) {
|
|
287
357
|
const selectedItem = overlay.querySelector(`.select-interface-option:nth-of-type(${indexOfSelected + 1})`);
|
|
288
|
-
/**
|
|
289
|
-
* If the option contains an `ion-radio` or `ion-checkbox`, focus
|
|
290
|
-
* that instead of the option element itself. This ensures that
|
|
291
|
-
* screen readers will announce the role and state of the element
|
|
292
|
-
* (e.g. "radio button, checked") rather than only the option text.
|
|
293
|
-
* Alert and action sheet options are plain buttons, so fall back to
|
|
294
|
-
* focusing the option element itself in those cases.
|
|
295
|
-
*/
|
|
296
358
|
if (selectedItem) {
|
|
359
|
+
/**
|
|
360
|
+
* Browsers such as Firefox do not
|
|
361
|
+
* correctly delegate focus when manually
|
|
362
|
+
* focusing an element with delegatesFocus.
|
|
363
|
+
* We work around this by manually focusing
|
|
364
|
+
* the interactive element.
|
|
365
|
+
* ion-radio and ion-checkbox are the only
|
|
366
|
+
* elements that ion-select-popover uses, so
|
|
367
|
+
* we only need to worry about those two components
|
|
368
|
+
* when focusing.
|
|
369
|
+
*/
|
|
297
370
|
const interactiveEl = selectedItem.querySelector('ion-radio, ion-checkbox');
|
|
298
371
|
if (interactiveEl) {
|
|
299
372
|
selectedItem.scrollIntoView({ block: 'nearest' });
|
|
373
|
+
// Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
|
|
374
|
+
// and removing `ion-focused` style
|
|
375
|
+
interactiveEl.setFocus();
|
|
300
376
|
}
|
|
301
|
-
|
|
377
|
+
focusVisibleElement(selectedItem);
|
|
302
378
|
}
|
|
303
379
|
}
|
|
304
380
|
else {
|
|
305
381
|
/**
|
|
306
382
|
* If no value is set then focus the first enabled option.
|
|
307
383
|
*/
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
*
|
|
319
|
-
* `ion-radio` and `ion-checkbox` expose `setFocus`, which correctly
|
|
320
|
-
* delegates focus to their inner focusable element. This is needed
|
|
321
|
-
* because browsers such as Firefox do not delegate focus correctly
|
|
322
|
-
* when focusing an element with delegatesFocus. When the option is
|
|
323
|
-
* a plain button it can be focused directly.
|
|
324
|
-
*/
|
|
325
|
-
if (optionToFocus.matches('ion-radio, ion-checkbox')) {
|
|
326
|
-
optionToFocus.setFocus();
|
|
327
|
-
}
|
|
328
|
-
else {
|
|
329
|
-
optionToFocus.focus();
|
|
330
|
-
}
|
|
331
|
-
/**
|
|
332
|
-
* In the alert interface, when tabbing and pressing enter to open
|
|
333
|
-
* the select, the value that is currently selected flashes the
|
|
334
|
-
* focused state briefly before moving to its wrapper. This suppresses
|
|
335
|
-
* the focus visible state, so that the option will only show as
|
|
336
|
-
* focused when navigating with the keyboard.
|
|
337
|
-
*/
|
|
338
|
-
if (this.interface === 'alert') {
|
|
339
|
-
suppressFocusVisible();
|
|
384
|
+
const firstEnabledOption = overlay.querySelector('ion-radio:not(.radio-disabled), ion-checkbox:not(.checkbox-disabled)');
|
|
385
|
+
if (firstEnabledOption) {
|
|
386
|
+
/**
|
|
387
|
+
* Focus the option for the same reason as we do above.
|
|
388
|
+
*
|
|
389
|
+
* Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
|
|
390
|
+
* and removing `ion-focused` style
|
|
391
|
+
*/
|
|
392
|
+
firstEnabledOption.setFocus();
|
|
393
|
+
focusVisibleElement(firstEnabledOption.closest('ion-item'));
|
|
340
394
|
}
|
|
341
395
|
}
|
|
342
396
|
};
|
|
@@ -436,8 +490,7 @@ export class Select {
|
|
|
436
490
|
const isSelected = isOptionSelected(selectValue, value, this.compareWith);
|
|
437
491
|
const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
|
|
438
492
|
return {
|
|
439
|
-
|
|
440
|
-
text: content !== null && content !== void 0 ? content : '',
|
|
493
|
+
text: content ?? '',
|
|
441
494
|
cssClass: optClass,
|
|
442
495
|
disabled: option.disabled,
|
|
443
496
|
handler: () => {
|
|
@@ -474,7 +527,7 @@ export class Select {
|
|
|
474
527
|
return {
|
|
475
528
|
type: inputType,
|
|
476
529
|
cssClass: optClass,
|
|
477
|
-
label: content
|
|
530
|
+
label: content ?? '',
|
|
478
531
|
value,
|
|
479
532
|
checked: isOptionSelected(selectValue, value, this.compareWith),
|
|
480
533
|
disabled: option.disabled,
|
|
@@ -497,7 +550,7 @@ export class Select {
|
|
|
497
550
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
498
551
|
const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
|
|
499
552
|
return {
|
|
500
|
-
text: content
|
|
553
|
+
text: content ?? '',
|
|
501
554
|
cssClass: optClass,
|
|
502
555
|
value,
|
|
503
556
|
checked: isOptionSelected(selectValue, value, this.compareWith),
|
|
@@ -520,8 +573,8 @@ export class Select {
|
|
|
520
573
|
async openPopover(ev) {
|
|
521
574
|
const { fill, labelPlacement } = this;
|
|
522
575
|
const interfaceOptions = this.interfaceOptions;
|
|
523
|
-
const
|
|
524
|
-
const showBackdrop =
|
|
576
|
+
const mode = getIonMode(this);
|
|
577
|
+
const showBackdrop = mode === 'md' ? false : true;
|
|
525
578
|
const multiple = this.multiple;
|
|
526
579
|
const value = this.value;
|
|
527
580
|
let event = ev;
|
|
@@ -532,7 +585,7 @@ export class Select {
|
|
|
532
585
|
* when using a fill in MD mode or if the
|
|
533
586
|
* label is floating/stacked.
|
|
534
587
|
*/
|
|
535
|
-
if (hasFloatingOrStackedLabel || (
|
|
588
|
+
if (hasFloatingOrStackedLabel || (mode === 'md' && fill !== undefined)) {
|
|
536
589
|
size = 'cover';
|
|
537
590
|
/**
|
|
538
591
|
* Otherwise the popover
|
|
@@ -541,34 +594,43 @@ export class Select {
|
|
|
541
594
|
*/
|
|
542
595
|
}
|
|
543
596
|
else {
|
|
544
|
-
event =
|
|
597
|
+
event = {
|
|
598
|
+
...ev,
|
|
599
|
+
detail: {
|
|
545
600
|
ionShadowTarget: this.nativeWrapperEl,
|
|
546
|
-
}
|
|
601
|
+
},
|
|
602
|
+
};
|
|
547
603
|
}
|
|
548
604
|
const options = this.createOverlaySelectOptions(this.childOpts, value);
|
|
549
|
-
const hasRichContent = options.some((opt) => opt.startContent || opt.endContent || opt.description);
|
|
550
|
-
const popoverOpts =
|
|
551
|
-
|
|
552
|
-
|
|
605
|
+
const hasRichContent = options.some((opt) => Boolean(opt.startContent) || Boolean(opt.endContent) || Boolean(opt.description));
|
|
606
|
+
const popoverOpts = {
|
|
607
|
+
mode,
|
|
608
|
+
event,
|
|
609
|
+
alignment: 'center',
|
|
610
|
+
size,
|
|
611
|
+
showBackdrop,
|
|
612
|
+
...interfaceOptions,
|
|
613
|
+
component: 'ion-select-popover',
|
|
614
|
+
cssClass: [
|
|
553
615
|
'select-popover',
|
|
554
616
|
hasRichContent ? 'select-popover-rich-content' : undefined,
|
|
555
617
|
interfaceOptions.cssClass,
|
|
556
|
-
],
|
|
618
|
+
],
|
|
619
|
+
componentProps: {
|
|
557
620
|
header: interfaceOptions.header,
|
|
558
621
|
subHeader: interfaceOptions.subHeader,
|
|
559
622
|
message: interfaceOptions.message,
|
|
560
623
|
multiple,
|
|
561
624
|
value,
|
|
562
625
|
options,
|
|
563
|
-
}
|
|
626
|
+
},
|
|
627
|
+
};
|
|
564
628
|
/**
|
|
565
629
|
* Workaround for Stencil to autodefine
|
|
566
630
|
* ion-select-popover and ion-popover when
|
|
567
631
|
* using Custom Elements build.
|
|
568
632
|
*/
|
|
569
|
-
// eslint-disable-next-line
|
|
570
633
|
if (false) {
|
|
571
|
-
// eslint-disable-next-line
|
|
572
634
|
// @ts-ignore
|
|
573
635
|
document.createElement('ion-select-popover');
|
|
574
636
|
document.createElement('ion-popover');
|
|
@@ -576,17 +638,20 @@ export class Select {
|
|
|
576
638
|
return popoverController.create(popoverOpts);
|
|
577
639
|
}
|
|
578
640
|
async openActionSheet() {
|
|
579
|
-
const
|
|
641
|
+
const mode = getIonMode(this);
|
|
580
642
|
const interfaceOptions = this.interfaceOptions;
|
|
581
|
-
const actionSheetOpts =
|
|
643
|
+
const actionSheetOpts = {
|
|
644
|
+
mode,
|
|
645
|
+
...interfaceOptions,
|
|
646
|
+
buttons: this.createActionSheetButtons(this.childOpts, this.value),
|
|
647
|
+
cssClass: ['select-action-sheet', interfaceOptions.cssClass],
|
|
648
|
+
};
|
|
582
649
|
/**
|
|
583
650
|
* Workaround for Stencil to autodefine
|
|
584
651
|
* ion-action-sheet when
|
|
585
652
|
* using Custom Elements build.
|
|
586
653
|
*/
|
|
587
|
-
// eslint-disable-next-line
|
|
588
654
|
if (false) {
|
|
589
|
-
// eslint-disable-next-line
|
|
590
655
|
// @ts-ignore
|
|
591
656
|
document.createElement('ion-action-sheet');
|
|
592
657
|
}
|
|
@@ -595,8 +660,13 @@ export class Select {
|
|
|
595
660
|
async openAlert() {
|
|
596
661
|
const interfaceOptions = this.interfaceOptions;
|
|
597
662
|
const inputType = this.multiple ? 'checkbox' : 'radio';
|
|
598
|
-
const
|
|
599
|
-
const alertOpts =
|
|
663
|
+
const mode = getIonMode(this);
|
|
664
|
+
const alertOpts = {
|
|
665
|
+
mode,
|
|
666
|
+
...interfaceOptions,
|
|
667
|
+
header: interfaceOptions.header ? interfaceOptions.header : this.labelText,
|
|
668
|
+
inputs: this.createAlertInputs(this.childOpts, inputType, this.value),
|
|
669
|
+
buttons: [
|
|
600
670
|
{
|
|
601
671
|
text: this.cancelText,
|
|
602
672
|
role: 'cancel',
|
|
@@ -610,19 +680,19 @@ export class Select {
|
|
|
610
680
|
this.setValue(selectedValues);
|
|
611
681
|
},
|
|
612
682
|
},
|
|
613
|
-
],
|
|
683
|
+
],
|
|
684
|
+
cssClass: [
|
|
614
685
|
'select-alert',
|
|
615
686
|
interfaceOptions.cssClass,
|
|
616
687
|
this.multiple ? 'multiple-select-alert' : 'single-select-alert',
|
|
617
|
-
]
|
|
688
|
+
],
|
|
689
|
+
};
|
|
618
690
|
/**
|
|
619
691
|
* Workaround for Stencil to autodefine
|
|
620
692
|
* ion-alert when
|
|
621
693
|
* using Custom Elements build.
|
|
622
694
|
*/
|
|
623
|
-
// eslint-disable-next-line
|
|
624
695
|
if (false) {
|
|
625
|
-
// eslint-disable-next-line
|
|
626
696
|
// @ts-ignore
|
|
627
697
|
document.createElement('ion-alert');
|
|
628
698
|
}
|
|
@@ -630,23 +700,26 @@ export class Select {
|
|
|
630
700
|
}
|
|
631
701
|
openModal() {
|
|
632
702
|
const { multiple, value, interfaceOptions } = this;
|
|
633
|
-
const
|
|
634
|
-
const modalOpts =
|
|
703
|
+
const mode = getIonMode(this);
|
|
704
|
+
const modalOpts = {
|
|
705
|
+
...interfaceOptions,
|
|
706
|
+
mode,
|
|
707
|
+
cssClass: ['select-modal', interfaceOptions.cssClass],
|
|
708
|
+
component: 'ion-select-modal',
|
|
709
|
+
componentProps: {
|
|
635
710
|
header: interfaceOptions.header,
|
|
636
711
|
cancelText: this.cancelText,
|
|
637
|
-
cancelIcon: this.cancelIcon,
|
|
638
712
|
multiple,
|
|
639
713
|
value,
|
|
640
714
|
options: this.createOverlaySelectOptions(this.childOpts, value),
|
|
641
|
-
}
|
|
715
|
+
},
|
|
716
|
+
};
|
|
642
717
|
/**
|
|
643
718
|
* Workaround for Stencil to autodefine
|
|
644
719
|
* ion-select-modal and ion-modal when
|
|
645
720
|
* using Custom Elements build.
|
|
646
721
|
*/
|
|
647
|
-
// eslint-disable-next-line
|
|
648
722
|
if (false) {
|
|
649
|
-
// eslint-disable-next-line
|
|
650
723
|
// @ts-ignore
|
|
651
724
|
document.createElement('ion-select-modal');
|
|
652
725
|
document.createElement('ion-modal');
|
|
@@ -712,18 +785,51 @@ export class Select {
|
|
|
712
785
|
};
|
|
713
786
|
this.ionStyle.emit(style);
|
|
714
787
|
}
|
|
715
|
-
|
|
716
|
-
const
|
|
717
|
-
const
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
788
|
+
onClick = (ev) => {
|
|
789
|
+
const target = ev.target;
|
|
790
|
+
const closestSlot = target.closest('[slot="start"], [slot="end"]');
|
|
791
|
+
if (target === this.el || closestSlot === null) {
|
|
792
|
+
this.setFocus();
|
|
793
|
+
this.open(ev);
|
|
721
794
|
}
|
|
722
|
-
|
|
723
|
-
|
|
795
|
+
else {
|
|
796
|
+
/**
|
|
797
|
+
* Prevent clicks to the start/end slots from opening the select.
|
|
798
|
+
* We ensure the target isn't this element in case the select is slotted
|
|
799
|
+
* in, for example, an item. This would prevent the select from ever
|
|
800
|
+
* being opened since the element itself has slot="start"/"end".
|
|
801
|
+
*
|
|
802
|
+
* Clicking a slotted element also causes a click
|
|
803
|
+
* on the <label> element (since it wraps the slots).
|
|
804
|
+
* Clicking <label> dispatches another click event on
|
|
805
|
+
* the native form control that then bubbles up to this
|
|
806
|
+
* listener. This additional event targets the host
|
|
807
|
+
* element, so the select overlay is opened.
|
|
808
|
+
*
|
|
809
|
+
* When the slotted elements are clicked (and therefore
|
|
810
|
+
* the ancestor <label> element) we want to prevent the label
|
|
811
|
+
* from dispatching another click event.
|
|
812
|
+
*
|
|
813
|
+
* Do not call stopPropagation() because this will cause
|
|
814
|
+
* click handlers on the slotted elements to never fire in React.
|
|
815
|
+
* When developers do onClick in React a native "click" listener
|
|
816
|
+
* is added on the root element, not the slotted element. When that
|
|
817
|
+
* native click listener fires, React then dispatches the synthetic
|
|
818
|
+
* click event on the slotted element. However, if stopPropagation
|
|
819
|
+
* is called then the native click event will never bubble up
|
|
820
|
+
* to the root element.
|
|
821
|
+
*/
|
|
822
|
+
ev.preventDefault();
|
|
724
823
|
}
|
|
725
|
-
|
|
726
|
-
|
|
824
|
+
};
|
|
825
|
+
onFocus = () => {
|
|
826
|
+
this.hasFocus = true;
|
|
827
|
+
this.ionFocus.emit();
|
|
828
|
+
};
|
|
829
|
+
onBlur = () => {
|
|
830
|
+
this.hasFocus = false;
|
|
831
|
+
this.ionBlur.emit();
|
|
832
|
+
};
|
|
727
833
|
renderLabel() {
|
|
728
834
|
const { label } = this;
|
|
729
835
|
return (h("div", { class: {
|
|
@@ -732,8 +838,7 @@ export class Select {
|
|
|
732
838
|
}, part: "label" }, label === undefined ? h("slot", { name: "label" }) : h("div", { class: "label-text" }, label)));
|
|
733
839
|
}
|
|
734
840
|
componentDidRender() {
|
|
735
|
-
|
|
736
|
-
(_a = this.notchController) === null || _a === void 0 ? void 0 : _a.calculateNotchWidth();
|
|
841
|
+
this.notchController?.calculateNotchWidth();
|
|
737
842
|
}
|
|
738
843
|
/**
|
|
739
844
|
* Gets any content passed into the `label` slot,
|
|
@@ -751,13 +856,24 @@ export class Select {
|
|
|
751
856
|
get hasLabel() {
|
|
752
857
|
return this.label !== undefined || this.labelSlot !== null;
|
|
753
858
|
}
|
|
859
|
+
/**
|
|
860
|
+
* Stops propagation when the label is clicked,
|
|
861
|
+
* otherwise, two clicks will be triggered.
|
|
862
|
+
*/
|
|
863
|
+
onLabelClick = (ev) => {
|
|
864
|
+
// Only stop propagation if the click was directly on the label
|
|
865
|
+
// and not on the input or other child elements
|
|
866
|
+
if (ev.target === ev.currentTarget) {
|
|
867
|
+
ev.stopPropagation();
|
|
868
|
+
}
|
|
869
|
+
};
|
|
754
870
|
/**
|
|
755
871
|
* Renders the border container
|
|
756
872
|
* when fill="outline".
|
|
757
873
|
*/
|
|
758
874
|
renderLabelContainer() {
|
|
759
|
-
const
|
|
760
|
-
const hasOutlineFill =
|
|
875
|
+
const mode = getIonMode(this);
|
|
876
|
+
const hasOutlineFill = mode === 'md' && this.fill === 'outline';
|
|
761
877
|
if (hasOutlineFill) {
|
|
762
878
|
/**
|
|
763
879
|
* The outline fill has a special outline
|
|
@@ -798,8 +914,7 @@ export class Select {
|
|
|
798
914
|
return html;
|
|
799
915
|
}
|
|
800
916
|
Array.from(temp.childNodes).forEach((node) => {
|
|
801
|
-
|
|
802
|
-
if (node.nodeType === Node.TEXT_NODE && ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim())) {
|
|
917
|
+
if (node.nodeType === Node.TEXT_NODE && node.textContent?.trim()) {
|
|
803
918
|
const text = node.textContent;
|
|
804
919
|
/**
|
|
805
920
|
* Split comma separator from the text content
|
|
@@ -810,12 +925,12 @@ export class Select {
|
|
|
810
925
|
const commaNode = document.createTextNode(commaMatch[1]);
|
|
811
926
|
const wrapper = document.createElement('span');
|
|
812
927
|
wrapper.textContent = commaMatch[2];
|
|
813
|
-
|
|
814
|
-
|
|
928
|
+
node.parentNode?.replaceChild(wrapper, node);
|
|
929
|
+
wrapper.parentNode?.insertBefore(commaNode, wrapper);
|
|
815
930
|
return;
|
|
816
931
|
}
|
|
817
932
|
const wrapper = document.createElement('span');
|
|
818
|
-
|
|
933
|
+
node.parentNode?.replaceChild(wrapper, node);
|
|
819
934
|
wrapper.appendChild(node);
|
|
820
935
|
}
|
|
821
936
|
});
|
|
@@ -851,20 +966,24 @@ export class Select {
|
|
|
851
966
|
* next to the select text.
|
|
852
967
|
*/
|
|
853
968
|
renderSelectIcon() {
|
|
854
|
-
const
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
969
|
+
const mode = getIonMode(this);
|
|
970
|
+
const { isExpanded, toggleIcon, expandedIcon } = this;
|
|
971
|
+
let icon;
|
|
972
|
+
if (isExpanded && expandedIcon !== undefined) {
|
|
973
|
+
icon = expandedIcon;
|
|
974
|
+
}
|
|
975
|
+
else {
|
|
976
|
+
const defaultIcon = mode === 'ios' ? chevronExpand : caretDownSharp;
|
|
977
|
+
icon = toggleIcon ?? defaultIcon;
|
|
858
978
|
}
|
|
859
979
|
return h("ion-icon", { class: "select-icon", part: "icon", "aria-hidden": "true", icon: icon });
|
|
860
980
|
}
|
|
861
981
|
get ariaLabel() {
|
|
862
|
-
var _a;
|
|
863
982
|
const { placeholder, inheritedAttributes } = this;
|
|
864
983
|
// Get the plain text from the selected text
|
|
865
984
|
const displayValue = this.getText();
|
|
866
985
|
// The aria label should be preferred over visible text if both are specified
|
|
867
|
-
const definedLabel =
|
|
986
|
+
const definedLabel = inheritedAttributes['aria-label'] ?? this.labelText;
|
|
868
987
|
/**
|
|
869
988
|
* If developer has specified a placeholder
|
|
870
989
|
* and there is nothing selected, the selectText
|
|
@@ -890,63 +1009,6 @@ export class Select {
|
|
|
890
1009
|
const { disabled, inputId, isExpanded, required } = this;
|
|
891
1010
|
return (h("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, "aria-required": `${required}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
|
|
892
1011
|
}
|
|
893
|
-
getShape() {
|
|
894
|
-
const theme = getIonTheme(this);
|
|
895
|
-
const { shape } = this;
|
|
896
|
-
// TODO(ROU-11366): Remove theme check when shapes are defined for all themes.
|
|
897
|
-
if (theme === 'ionic' && shape === undefined) {
|
|
898
|
-
return 'round';
|
|
899
|
-
}
|
|
900
|
-
return shape;
|
|
901
|
-
}
|
|
902
|
-
/**
|
|
903
|
-
* Get the icon to use for the expand icon.
|
|
904
|
-
* If an icon is set on the component, use that.
|
|
905
|
-
* Otherwise, use the icon set in the config.
|
|
906
|
-
* If no icon is set in the config, use the default icon.
|
|
907
|
-
*/
|
|
908
|
-
get selectExpandedIcon() {
|
|
909
|
-
// Return the expandedIcon or toggleIcon if either is explicitly set
|
|
910
|
-
if (this.expandedIcon != null) {
|
|
911
|
-
return this.expandedIcon;
|
|
912
|
-
}
|
|
913
|
-
else if (this.toggleIcon != null) {
|
|
914
|
-
return this.toggleIcon;
|
|
915
|
-
}
|
|
916
|
-
// Determine the theme and map to default icons
|
|
917
|
-
const theme = getIonTheme(this);
|
|
918
|
-
const defaultIcons = {
|
|
919
|
-
ios: chevronExpand,
|
|
920
|
-
ionic: caretDownRegular,
|
|
921
|
-
md: caretDownSharp,
|
|
922
|
-
};
|
|
923
|
-
// Get the default icon based on the theme, falling back to 'md' icon if necessary
|
|
924
|
-
const defaultIcon = defaultIcons[theme] || defaultIcons.md;
|
|
925
|
-
// Return the configured select expanded icon or the default icon
|
|
926
|
-
return config.get('selectExpandedIcon', defaultIcon);
|
|
927
|
-
}
|
|
928
|
-
/**
|
|
929
|
-
* Get the icon to use for the collapsed icon.
|
|
930
|
-
* If an icon is set on the component, use that.
|
|
931
|
-
* Otherwise, use the icon set in the config.
|
|
932
|
-
* If no icon is set in the config, use the default icon.
|
|
933
|
-
*/
|
|
934
|
-
get selectCollapsedIcon() {
|
|
935
|
-
// Return the toggleIcon if it is explicitly set
|
|
936
|
-
if (this.toggleIcon) {
|
|
937
|
-
return this.toggleIcon;
|
|
938
|
-
}
|
|
939
|
-
// Determine the theme and map to default icons
|
|
940
|
-
const theme = getIonTheme(this);
|
|
941
|
-
const defaultIcons = {
|
|
942
|
-
ios: chevronExpand,
|
|
943
|
-
ionic: caretDownRegular,
|
|
944
|
-
md: caretDownSharp,
|
|
945
|
-
};
|
|
946
|
-
// Get the default icon based on the theme, falling back to 'md' icon if necessary
|
|
947
|
-
const defaultIcon = defaultIcons[theme] || defaultIcons.md;
|
|
948
|
-
return config.get('selectCollapsedIcon', defaultIcon);
|
|
949
|
-
}
|
|
950
1012
|
getHintTextId() {
|
|
951
1013
|
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
952
1014
|
if (isInvalid && errorText) {
|
|
@@ -984,17 +1046,13 @@ export class Select {
|
|
|
984
1046
|
return (h("div", { class: "select-bottom", part: "bottom" }, this.renderHintText()));
|
|
985
1047
|
}
|
|
986
1048
|
render() {
|
|
987
|
-
const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill, name, value, hasFocus, } = this;
|
|
988
|
-
const
|
|
989
|
-
const shape = this.getShape();
|
|
1049
|
+
const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill, shape, name, value, hasFocus, } = this;
|
|
1050
|
+
const mode = getIonMode(this);
|
|
990
1051
|
const hasFloatingOrStackedLabel = labelPlacement === 'floating' || labelPlacement === 'stacked';
|
|
991
|
-
const shouldRenderOuterIcon = theme !== 'ionic' && hasFloatingOrStackedLabel;
|
|
992
|
-
const shouldRenderInnerIcon = theme === 'ionic' || !hasFloatingOrStackedLabel;
|
|
993
1052
|
const justifyEnabled = !hasFloatingOrStackedLabel && justify !== undefined;
|
|
994
1053
|
const rtl = isRTL(el) ? 'rtl' : 'ltr';
|
|
995
1054
|
const inItem = hostContext('ion-item', this.el);
|
|
996
|
-
const
|
|
997
|
-
const shouldRenderHighlight = theme === 'md' && fill !== 'outline' && !inItem;
|
|
1055
|
+
const shouldRenderHighlight = mode === 'md' && fill !== 'outline' && !inItem;
|
|
998
1056
|
const hasValue = this.hasValue();
|
|
999
1057
|
const hasStartEndSlots = el.querySelector('[slot="start"], [slot="end"]') !== null;
|
|
1000
1058
|
renderHiddenInput(true, el, name, parseValue(value), disabled);
|
|
@@ -1017,8 +1075,8 @@ export class Select {
|
|
|
1017
1075
|
*/
|
|
1018
1076
|
const labelShouldFloat = labelPlacement === 'stacked' ||
|
|
1019
1077
|
(labelPlacement === 'floating' && (hasValue || hasFocus || isExpanded || hasStartEndSlots));
|
|
1020
|
-
return (h(Host, { key: '
|
|
1021
|
-
[
|
|
1078
|
+
return (h(Host, { key: 'e693afee7852c89be122b785230ed8fc9be5ba61', onClick: this.onClick, class: createColorClasses(this.color, {
|
|
1079
|
+
[mode]: true,
|
|
1022
1080
|
'in-item': inItem,
|
|
1023
1081
|
'in-item-color': hostContext('ion-item.ion-color', el),
|
|
1024
1082
|
'select-disabled': disabled,
|
|
@@ -1035,33 +1093,20 @@ export class Select {
|
|
|
1035
1093
|
[`select-justify-${justify}`]: justifyEnabled,
|
|
1036
1094
|
[`select-shape-${shape}`]: shape !== undefined,
|
|
1037
1095
|
[`select-label-placement-${labelPlacement}`]: true,
|
|
1038
|
-
|
|
1039
|
-
}) }, h("label", { key: 'db8f0b67592f4b99f5e16d06ee8120852a60f4d1', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), h("div", { key: '30313c0f3034be59605b368d15af4ba00202a5f4', class: "select-wrapper-inner", part: "inner" },
|
|
1040
|
-
/**
|
|
1041
|
-
* For the ionic theme, we render the outline container here
|
|
1042
|
-
* instead of higher up, so it can be positioned relative to
|
|
1043
|
-
* the native wrapper instead of the <label> element or the
|
|
1044
|
-
* entire component. This allows the label text to be positioned
|
|
1045
|
-
* above the outline, while staying within the bounds of the
|
|
1046
|
-
* <label> element, ensuring that clicking the label text
|
|
1047
|
-
* focuses the select.
|
|
1048
|
-
*/
|
|
1049
|
-
theme === 'ionic' && fill === 'outline' && h("div", { key: '78bba2953ba88efd1189afa31e8229a8972175e5', class: "select-outline" }), h("slot", { key: '086505d193a19677d33e26a5a116783d999c6861', name: "start" }), h("div", { key: '5bb7863236596cad5c1118be1ae54898b638b760', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: '38744ee0cc6750f84d11470c09a4e950d73f1e44', name: "end" }), shouldRenderInnerIcon && this.renderSelectIcon()), shouldRenderOuterIcon && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: '4eecb0df50800d16bea58c5649e68e06b122e472', class: "select-highlight" })), this.renderBottomContent()));
|
|
1096
|
+
}) }, h("label", { key: 'd79647bd83cab506f01a4588f631b3982fa1c011', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), h("div", { key: 'fa8d78b9ea041dc9e897643f22f33f38e645ce69', class: "select-wrapper-inner", part: "inner" }, h("slot", { key: '45666226a6898a538849bd3d3b89510bf689656f', name: "start" }), h("div", { key: '59f1f08109c4cda699cb2a9f2a6bce00a7fc4301', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: '79b18fd4ca2af9528ff89c609ea20b3e727701e1', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: '0149f4ddb4ca1d1d2e2ca91b6cbec721d5c8aa9b', class: "select-highlight" })), this.renderBottomContent()));
|
|
1050
1097
|
}
|
|
1051
1098
|
static get is() { return "ion-select"; }
|
|
1052
1099
|
static get encapsulation() { return "shadow"; }
|
|
1053
1100
|
static get originalStyleUrls() {
|
|
1054
1101
|
return {
|
|
1055
1102
|
"ios": ["select.ios.scss"],
|
|
1056
|
-
"md": ["select.md.scss"]
|
|
1057
|
-
"ionic": ["select.ionic.scss"]
|
|
1103
|
+
"md": ["select.md.scss"]
|
|
1058
1104
|
};
|
|
1059
1105
|
}
|
|
1060
1106
|
static get styleUrls() {
|
|
1061
1107
|
return {
|
|
1062
1108
|
"ios": ["select.ios.css"],
|
|
1063
|
-
"md": ["select.md.css"]
|
|
1064
|
-
"ionic": ["select.ionic.css"]
|
|
1109
|
+
"md": ["select.md.css"]
|
|
1065
1110
|
};
|
|
1066
1111
|
}
|
|
1067
1112
|
static get properties() {
|
|
@@ -1086,26 +1131,6 @@ export class Select {
|
|
|
1086
1131
|
"attribute": "cancel-text",
|
|
1087
1132
|
"defaultValue": "'Cancel'"
|
|
1088
1133
|
},
|
|
1089
|
-
"cancelIcon": {
|
|
1090
|
-
"type": "boolean",
|
|
1091
|
-
"mutable": false,
|
|
1092
|
-
"complexType": {
|
|
1093
|
-
"original": "boolean",
|
|
1094
|
-
"resolved": "boolean",
|
|
1095
|
-
"references": {}
|
|
1096
|
-
},
|
|
1097
|
-
"required": false,
|
|
1098
|
-
"optional": false,
|
|
1099
|
-
"docs": {
|
|
1100
|
-
"tags": [],
|
|
1101
|
-
"text": "If `true`, the cancel button will display an icon instead of the `cancelText`.\nOnly applies when `interface` is set to `\"modal\"`. Has no effect on `\"action-sheet\"`,\n`\"alert\"`, or `\"popover\"` interfaces.\nWhen `cancelIcon` is `true`, the `cancelText` property is ignored for display\nbut is used as the accessible label for the icon button."
|
|
1102
|
-
},
|
|
1103
|
-
"getter": false,
|
|
1104
|
-
"setter": false,
|
|
1105
|
-
"reflect": false,
|
|
1106
|
-
"attribute": "cancel-icon",
|
|
1107
|
-
"defaultValue": "false"
|
|
1108
|
-
},
|
|
1109
1134
|
"color": {
|
|
1110
1135
|
"type": "string",
|
|
1111
1136
|
"mutable": false,
|
|
@@ -1190,7 +1215,7 @@ export class Select {
|
|
|
1190
1215
|
"optional": true,
|
|
1191
1216
|
"docs": {
|
|
1192
1217
|
"tags": [],
|
|
1193
|
-
"text": "The fill for the item. If `\"solid\"` the item will have a background. If\n`\"outline\"` the item will be transparent with a border. Only available in
|
|
1218
|
+
"text": "The fill for the item. If `\"solid\"` the item will have a background. If\n`\"outline\"` the item will be transparent with a border. Only available in `md` mode."
|
|
1194
1219
|
},
|
|
1195
1220
|
"getter": false,
|
|
1196
1221
|
"setter": false,
|
|
@@ -1450,7 +1475,7 @@ export class Select {
|
|
|
1450
1475
|
"optional": true,
|
|
1451
1476
|
"docs": {
|
|
1452
1477
|
"tags": [],
|
|
1453
|
-
"text": "The toggle icon to use. Defaults to
|
|
1478
|
+
"text": "The toggle icon to use. Defaults to `chevronExpand` for `ios` mode,\nor `caretDownSharp` for `md` mode."
|
|
1454
1479
|
},
|
|
1455
1480
|
"getter": false,
|
|
1456
1481
|
"setter": false,
|
|
@@ -1469,89 +1494,70 @@ export class Select {
|
|
|
1469
1494
|
"optional": true,
|
|
1470
1495
|
"docs": {
|
|
1471
1496
|
"tags": [],
|
|
1472
|
-
"text": "The toggle icon to show when the select is open. If defined, the icon\nrotation behavior in
|
|
1497
|
+
"text": "The toggle icon to show when the select is open. If defined, the icon\nrotation behavior in `md` mode will be disabled. If undefined, `toggleIcon`\nwill be used for when the select is both open and closed."
|
|
1473
1498
|
},
|
|
1474
1499
|
"getter": false,
|
|
1475
1500
|
"setter": false,
|
|
1476
1501
|
"reflect": false,
|
|
1477
1502
|
"attribute": "expanded-icon"
|
|
1478
1503
|
},
|
|
1479
|
-
"required": {
|
|
1480
|
-
"type": "boolean",
|
|
1481
|
-
"mutable": false,
|
|
1482
|
-
"complexType": {
|
|
1483
|
-
"original": "boolean",
|
|
1484
|
-
"resolved": "boolean",
|
|
1485
|
-
"references": {}
|
|
1486
|
-
},
|
|
1487
|
-
"required": false,
|
|
1488
|
-
"optional": false,
|
|
1489
|
-
"docs": {
|
|
1490
|
-
"tags": [],
|
|
1491
|
-
"text": "If true, screen readers will announce it as a required field. This property\nworks only for accessibility purposes, it will not prevent the form from\nsubmitting if the value is invalid."
|
|
1492
|
-
},
|
|
1493
|
-
"getter": false,
|
|
1494
|
-
"setter": false,
|
|
1495
|
-
"reflect": false,
|
|
1496
|
-
"attribute": "required",
|
|
1497
|
-
"defaultValue": "false"
|
|
1498
|
-
},
|
|
1499
1504
|
"shape": {
|
|
1500
1505
|
"type": "string",
|
|
1501
1506
|
"mutable": false,
|
|
1502
1507
|
"complexType": {
|
|
1503
|
-
"original": "'
|
|
1504
|
-
"resolved": "\"
|
|
1508
|
+
"original": "'round'",
|
|
1509
|
+
"resolved": "\"round\" | undefined",
|
|
1505
1510
|
"references": {}
|
|
1506
1511
|
},
|
|
1507
1512
|
"required": false,
|
|
1508
1513
|
"optional": true,
|
|
1509
1514
|
"docs": {
|
|
1510
1515
|
"tags": [],
|
|
1511
|
-
"text": "
|
|
1516
|
+
"text": "The shape of the select. If \"round\" it will have an increased border radius."
|
|
1512
1517
|
},
|
|
1513
1518
|
"getter": false,
|
|
1514
1519
|
"setter": false,
|
|
1515
1520
|
"reflect": false,
|
|
1516
1521
|
"attribute": "shape"
|
|
1517
1522
|
},
|
|
1518
|
-
"
|
|
1519
|
-
"type": "
|
|
1520
|
-
"mutable":
|
|
1523
|
+
"value": {
|
|
1524
|
+
"type": "any",
|
|
1525
|
+
"mutable": true,
|
|
1521
1526
|
"complexType": {
|
|
1522
|
-
"original": "
|
|
1523
|
-
"resolved": "
|
|
1527
|
+
"original": "any | null",
|
|
1528
|
+
"resolved": "any",
|
|
1524
1529
|
"references": {}
|
|
1525
1530
|
},
|
|
1526
1531
|
"required": false,
|
|
1527
1532
|
"optional": true,
|
|
1528
1533
|
"docs": {
|
|
1529
1534
|
"tags": [],
|
|
1530
|
-
"text": "The
|
|
1535
|
+
"text": "The value of the select."
|
|
1531
1536
|
},
|
|
1532
1537
|
"getter": false,
|
|
1533
1538
|
"setter": false,
|
|
1534
1539
|
"reflect": false,
|
|
1535
|
-
"attribute": "
|
|
1540
|
+
"attribute": "value"
|
|
1536
1541
|
},
|
|
1537
|
-
"
|
|
1538
|
-
"type": "
|
|
1539
|
-
"mutable":
|
|
1542
|
+
"required": {
|
|
1543
|
+
"type": "boolean",
|
|
1544
|
+
"mutable": false,
|
|
1540
1545
|
"complexType": {
|
|
1541
|
-
"original": "
|
|
1542
|
-
"resolved": "
|
|
1546
|
+
"original": "boolean",
|
|
1547
|
+
"resolved": "boolean",
|
|
1543
1548
|
"references": {}
|
|
1544
1549
|
},
|
|
1545
1550
|
"required": false,
|
|
1546
|
-
"optional":
|
|
1551
|
+
"optional": false,
|
|
1547
1552
|
"docs": {
|
|
1548
1553
|
"tags": [],
|
|
1549
|
-
"text": "
|
|
1554
|
+
"text": "If true, screen readers will announce it as a required field. This property\nworks only for accessibility purposes, it will not prevent the form from\nsubmitting if the value is invalid."
|
|
1550
1555
|
},
|
|
1551
1556
|
"getter": false,
|
|
1552
1557
|
"setter": false,
|
|
1553
1558
|
"reflect": false,
|
|
1554
|
-
"attribute": "
|
|
1559
|
+
"attribute": "required",
|
|
1560
|
+
"defaultValue": "false"
|
|
1555
1561
|
}
|
|
1556
1562
|
};
|
|
1557
1563
|
}
|
|
@@ -1800,7 +1806,7 @@ const textForValue = (opts, value, compareWith, useHTML = false) => {
|
|
|
1800
1806
|
*/
|
|
1801
1807
|
if (content) {
|
|
1802
1808
|
const texts = Array.from(content.childNodes)
|
|
1803
|
-
.map((n) =>
|
|
1809
|
+
.map((n) => n.textContent?.trim())
|
|
1804
1810
|
.filter((t) => t);
|
|
1805
1811
|
return texts.join(' ') || null;
|
|
1806
1812
|
}
|
|
@@ -1820,9 +1826,8 @@ const textForValue = (opts, value, compareWith, useHTML = false) => {
|
|
|
1820
1826
|
*/
|
|
1821
1827
|
const trimTextNodes = (node) => {
|
|
1822
1828
|
node.childNodes.forEach((child) => {
|
|
1823
|
-
var _a;
|
|
1824
1829
|
if (child.nodeType === Node.TEXT_NODE) {
|
|
1825
|
-
child.textContent =
|
|
1830
|
+
child.textContent = child.textContent?.trim() || '';
|
|
1826
1831
|
}
|
|
1827
1832
|
else if (child.nodeType === Node.ELEMENT_NODE) {
|
|
1828
1833
|
trimTextNodes(child);
|
|
@@ -1850,14 +1855,13 @@ const getOptionContent = (option, slotName, useHTML = false) => {
|
|
|
1850
1855
|
// Default slot: get nodes without a slot attribute
|
|
1851
1856
|
const defaultSlot = getOptionDefaultSlot(option) || [];
|
|
1852
1857
|
nodes = defaultSlot.filter((node) => {
|
|
1853
|
-
var _a;
|
|
1854
1858
|
/**
|
|
1855
1859
|
* Exclude whitespace-only text nodes (newline noise between
|
|
1856
1860
|
* markup elements). Element nodes are always kept, even when
|
|
1857
1861
|
* their textContent is empty (e.g. <svg>, <img>).
|
|
1858
1862
|
*/
|
|
1859
1863
|
if (node.nodeType === Node.TEXT_NODE) {
|
|
1860
|
-
return
|
|
1864
|
+
return node.textContent?.trim().length !== 0;
|
|
1861
1865
|
}
|
|
1862
1866
|
return true;
|
|
1863
1867
|
});
|
|
@@ -1867,7 +1871,7 @@ const getOptionContent = (option, slotName, useHTML = false) => {
|
|
|
1867
1871
|
}
|
|
1868
1872
|
// Return plain text if no elements are found
|
|
1869
1873
|
if (!slotName && nodes.every((n) => n.nodeType === Node.TEXT_NODE)) {
|
|
1870
|
-
return nodes.map((n) =>
|
|
1874
|
+
return nodes.map((n) => n.textContent?.trim()).join(' ') || null;
|
|
1871
1875
|
}
|
|
1872
1876
|
/**
|
|
1873
1877
|
* Mirror known custom-element properties (e.g. ion-icon's `icon`)
|
|
@@ -1883,10 +1887,9 @@ const getOptionContent = (option, slotName, useHTML = false) => {
|
|
|
1883
1887
|
// Clone each node into a temporary container
|
|
1884
1888
|
const container = document.createElement('div');
|
|
1885
1889
|
nodes.forEach((n) => {
|
|
1886
|
-
var _a;
|
|
1887
1890
|
const clone = n.cloneNode(true);
|
|
1888
1891
|
if (clone.nodeType === Node.TEXT_NODE) {
|
|
1889
|
-
clone.textContent =
|
|
1892
|
+
clone.textContent = clone.textContent?.trim() || '';
|
|
1890
1893
|
}
|
|
1891
1894
|
else {
|
|
1892
1895
|
trimTextNodes(clone);
|
|
@@ -1937,7 +1940,7 @@ const getDefaultSlotPlainText = (option) => {
|
|
|
1937
1940
|
return node.nodeType === Node.TEXT_NODE;
|
|
1938
1941
|
})
|
|
1939
1942
|
.filter((node) => node.nodeType === Node.TEXT_NODE)
|
|
1940
|
-
.map((n) =>
|
|
1943
|
+
.map((n) => n.textContent?.trim())
|
|
1941
1944
|
.filter((t) => t);
|
|
1942
1945
|
return texts.join(' ');
|
|
1943
1946
|
};
|
|
@@ -1951,7 +1954,6 @@ const getDefaultSlotPlainText = (option) => {
|
|
|
1951
1954
|
* via the `innerHTMLTemplatesEnabled` config.
|
|
1952
1955
|
*/
|
|
1953
1956
|
const extractOptionContent = (option, customHTMLEnabled) => {
|
|
1954
|
-
var _a, _b;
|
|
1955
1957
|
if (!customHTMLEnabled) {
|
|
1956
1958
|
return {
|
|
1957
1959
|
content: getDefaultSlotPlainText(option),
|
|
@@ -1961,8 +1963,8 @@ const extractOptionContent = (option, customHTMLEnabled) => {
|
|
|
1961
1963
|
}
|
|
1962
1964
|
return {
|
|
1963
1965
|
content: getOptionContent(option),
|
|
1964
|
-
startContent:
|
|
1965
|
-
endContent:
|
|
1966
|
+
startContent: getOptionContent(option, 'start') ?? undefined,
|
|
1967
|
+
endContent: getOptionContent(option, 'end') ?? undefined,
|
|
1966
1968
|
};
|
|
1967
1969
|
};
|
|
1968
1970
|
let selectIds = 0;
|