@ionic/core 8.8.7-dev.11778145306.120cae5b → 8.8.7-dev.11778598558.1c21ac37
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/{dist/ionic/p-BsfuYVMP.js → components/p-9VcRUwdB.js} +1 -1
- package/components/p-B6FQ0cKR.js +4 -0
- package/components/p-B6HaBl3o.js +4 -0
- package/components/p-B8b1Ukl9.js +4 -0
- package/components/p-BGHGpkPX.js +4 -0
- package/components/p-BJoMtgfR.js +4 -0
- package/components/p-BJu4LSK8.js +4 -0
- package/components/p-BNAG-aVv.js +4 -0
- package/components/p-BR3tZJmu.js +4 -0
- package/{dist/ionic/p-C8IHbcuP.js → components/p-BS1TtEiJ.js} +1 -1
- package/components/p-BUbsoBOV.js +4 -0
- package/components/p-BYDc3hSE.js +4 -0
- package/components/p-BagjAGC0.js +4 -0
- package/components/p-BeL7B3Bb.js +4 -0
- package/components/p-Bg7NsGS9.js +4 -0
- package/components/p-BgwEQWW6.js +4 -0
- package/components/p-BmVRXR1y.js +4 -0
- package/components/p-BxwWvu-b.js +4 -0
- package/components/p-C4jPsTQa.js +4 -0
- package/components/p-C59ryAuS.js +4 -0
- package/components/p-CBzELu-H.js +4 -0
- package/components/p-CDXBV7oG.js +4 -0
- package/components/p-CDfQnFrd.js +4 -0
- package/components/p-CIGNaXM1.js +4 -0
- package/components/p-CO7fmmxt.js +4 -0
- package/components/p-CU1SSH8_.js +4 -0
- package/components/p-CWpbvhwY.js +4 -0
- package/components/p-CgqKJg96.js +4 -0
- package/components/p-CneGxKsZ.js +4 -0
- package/components/p-CoA-aqGF.js +4 -0
- package/components/p-Csw8xuz4.js +4 -0
- package/components/p-Ct3FLpwo.js +4 -0
- package/components/p-CtWGkNnJ.js +4 -0
- package/components/{p-CjSx8W-k.js → p-Cwv-vmkN.js} +1 -1
- package/components/p-Cy5XSfIk.js +4 -0
- package/components/p-Cz5nLPGT.js +4 -0
- package/{dist/ionic/p-SJmaFQ0H.js → components/p-D13Eaw-8.js} +1 -1
- package/components/p-D6NJwNJN.js +4 -0
- package/components/p-D6Ynv7Xh.js +4 -0
- package/components/p-DBHdZu4y.js +4 -0
- package/components/p-DJztqcrH.js +4 -0
- package/components/p-DL2W2mt3.js +4 -0
- package/components/p-DPdqO7R6.js +4 -0
- package/components/p-DYdpXONG.js +4 -0
- package/components/p-DbISMmiI.js +4 -0
- package/components/p-DgbT0exM.js +4 -0
- package/components/p-DiVJyqlX.js +4 -0
- package/components/p-DrIm1s9R.js +4 -0
- package/components/p-DvOO1fxp.js +4 -0
- package/components/p-DxXmSp9Y.js +4 -0
- package/components/p-FBcnjE5W.js +4 -0
- package/components/p-OOMJP0jy.js +4 -0
- package/components/p-SBseW5KJ.js +4 -0
- package/components/{p-zWP0sUV_.js → p-YLXPWgVj.js} +1 -1
- package/components/p-ZjP4CjeZ.js +4 -0
- package/{dist/ionic/p-ZqkJDyhe.js → components/p-ak_d-z48.js} +1 -1
- package/{dist/ionic/p-CbkICFBN.js → components/p-cyNmxje6.js} +1 -1
- package/components/p-nPoOPlPt.js +4 -0
- package/components/p-vEbVo2hO.js +4 -0
- package/css/core.css +1 -1
- package/css/core.css.map +1 -1
- package/css/display.css +1 -1
- package/css/display.css.map +1 -1
- package/css/flex-utils.css +1 -1
- package/css/flex-utils.css.map +1 -1
- package/css/float-elements.css.map +1 -1
- package/css/global.bundle.css.map +1 -1
- package/css/ionic-swiper.css +1 -1
- package/css/ionic-swiper.css.map +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/css/normalize.css.map +1 -1
- package/css/padding.css.map +1 -1
- package/css/palettes/dark.always.css.map +1 -1
- package/css/palettes/dark.class.css.map +1 -1
- package/css/palettes/dark.system.css.map +1 -1
- package/css/palettes/high-contrast-dark.always.css.map +1 -1
- package/css/palettes/high-contrast-dark.class.css.map +1 -1
- package/css/palettes/high-contrast-dark.system.css.map +1 -1
- package/css/palettes/high-contrast.always.css.map +1 -1
- package/css/palettes/high-contrast.class.css.map +1 -1
- package/css/palettes/high-contrast.system.css.map +1 -1
- package/css/structure.css.map +1 -1
- package/css/text-alignment.css.map +1 -1
- package/css/text-transformation.css.map +1 -1
- package/css/typography.css.map +1 -1
- package/css/utils.bundle.css +1 -1
- package/css/utils.bundle.css.map +1 -1
- package/dist/cjs/{animation-DknMeJ3x.js → animation-Dg4yiuR2.js} +3 -3
- package/dist/cjs/{app-globals-DtAeky3x.js → app-globals-CLI8xCmk.js} +1 -1
- package/dist/cjs/{button-active-JoIWyYri.js → button-active-FscMI17-.js} +2 -2
- package/dist/cjs/{capacitor-BnRBm_ys.js → capacitor-DmA66EwP.js} +3 -3
- package/dist/cjs/{index-BJlwOs11.js → config-BukYi_pW.js} +31 -1
- package/dist/cjs/{data-DuOuKG7I.js → data-BYlBjkMU.js} +6 -6
- package/dist/{esm/focus-visible-vXpMhGrs.js → cjs/focus-visible-CCvKiLh3.js} +3 -23
- package/dist/cjs/{framework-delegate-Dx9FrqAC.js → framework-delegate-CRgp8o_p.js} +2 -4
- package/dist/cjs/{haptic-D3Ay9mmg.js → haptic-ClPPQ_PS.js} +1 -1
- package/dist/cjs/hardware-back-button-C4rMJ5uI.js +121 -0
- package/dist/cjs/{helpers-DJYxKN5U.js → helpers-CxTYJdbT.js} +4 -57
- package/dist/cjs/{index-D_mPAIqF.js → index-C845Ti6K.js} +4 -4
- package/dist/cjs/{index-Cer2Qy4I.js → index-CFUwM5x_.js} +15 -15
- package/dist/cjs/{index-CzcLEdQ5.js → index-CqT-2gKy.js} +4 -41
- package/dist/cjs/index-DkNv4J_i.js +10 -0
- package/dist/cjs/{index-CgAbCW6L.js → index-DqmRDbxg.js} +0 -2
- package/dist/cjs/{index-BJrpF9T3.js → index-MbaBbWXk.js} +2 -2
- package/dist/cjs/{index-DMJjUhXH.js → index-YcSftOMz.js} +8 -9
- package/dist/cjs/index.cjs.js +16 -17
- package/dist/cjs/{input-shims-Dn33gFln.js → input-shims-Dl5cnc_e.js} +17 -18
- package/dist/cjs/{input.utils-DnVnhWEF.js → input.utils-DmeJ8dmo.js} +5 -5
- package/dist/cjs/ion-accordion_2.cjs.entry.js +29 -61
- package/dist/cjs/ion-action-sheet.cjs.entry.js +26 -41
- package/dist/cjs/ion-alert.cjs.entry.js +45 -62
- package/dist/cjs/ion-app_8.cjs.entry.js +175 -296
- package/dist/cjs/ion-avatar_3.cjs.entry.js +13 -125
- package/dist/cjs/ion-back-button.cjs.entry.js +22 -31
- package/dist/cjs/ion-backdrop.cjs.entry.js +7 -10
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +18 -54
- package/dist/cjs/ion-button_2.cjs.entry.js +22 -59
- package/dist/cjs/ion-card_5.cjs.entry.js +33 -55
- package/dist/cjs/ion-checkbox.cjs.entry.js +16 -34
- package/dist/cjs/ion-chip.cjs.entry.js +9 -50
- package/dist/cjs/ion-col_3.cjs.entry.js +57 -54
- package/dist/cjs/ion-datetime-button.cjs.entry.js +9 -13
- package/dist/cjs/{ion-datetime_3.cjs.entry.js → ion-datetime.cjs.entry.js} +29 -742
- package/dist/cjs/ion-fab_3.cjs.entry.js +28 -44
- package/dist/cjs/ion-img.cjs.entry.js +4 -8
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +17 -93
- package/dist/cjs/ion-input-otp.cjs.entry.js +9 -74
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +15 -53
- package/dist/cjs/ion-input.cjs.entry.js +34 -124
- package/dist/cjs/ion-item-option_3.cjs.entry.js +21 -186
- package/dist/cjs/ion-item_8.cjs.entry.js +49 -116
- package/dist/cjs/ion-loading.cjs.entry.js +23 -22
- package/dist/cjs/ion-menu_3.cjs.entry.js +29 -47
- package/dist/cjs/ion-modal.cjs.entry.js +142 -262
- package/dist/cjs/ion-nav_2.cjs.entry.js +11 -14
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +8 -12
- package/dist/cjs/ion-picker-column.cjs.entry.js +14 -14
- package/dist/cjs/ion-picker.cjs.entry.js +6 -10
- package/dist/cjs/ion-popover.cjs.entry.js +23 -21
- package/dist/cjs/ion-progress-bar.cjs.entry.js +9 -27
- package/dist/cjs/ion-radio_2.cjs.entry.js +17 -35
- package/dist/cjs/ion-range.cjs.entry.js +13 -20
- package/dist/cjs/ion-refresher_2.cjs.entry.js +23 -42
- package/dist/cjs/ion-reorder_2.cjs.entry.js +14 -38
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +7 -15
- package/dist/cjs/ion-route_4.cjs.entry.js +9 -10
- package/dist/cjs/ion-searchbar.cjs.entry.js +24 -137
- package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment-view.cjs.entry.js +3 -6
- package/dist/cjs/ion-segment_2.cjs.entry.js +16 -23
- package/dist/cjs/ion-select-modal.cjs.entry.js +40 -97
- package/dist/cjs/ion-select_3.cjs.entry.js +115 -453
- package/dist/cjs/ion-spinner.cjs.entry.js +8 -30
- package/dist/cjs/ion-split-pane.cjs.entry.js +9 -12
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +23 -147
- package/dist/cjs/ion-tab_2.cjs.entry.js +7 -8
- package/dist/cjs/ion-text.cjs.entry.js +7 -7
- package/dist/cjs/ion-textarea.cjs.entry.js +23 -137
- package/dist/cjs/ion-toast.cjs.entry.js +46 -70
- package/dist/cjs/ion-toggle.cjs.entry.js +25 -82
- package/dist/cjs/ionic-global-Bc3kJi1Z.js +151 -0
- package/dist/cjs/ionic.cjs.js +4 -4
- package/dist/cjs/{ios.transition-UCjoxA3D.js → ios.transition-trBiC95R.js} +5 -7
- package/dist/cjs/{keyboard-Dsczf-iT.js → keyboard-UuAS4D_9.js} +1 -1
- package/dist/cjs/{keyboard-controller-tqGDP9SU.js → keyboard-controller-GXBiBRKS.js} +9 -11
- package/dist/cjs/{keyboard-Bhav6x-R.js → keyboard-hHzlEQpk.js} +3 -4
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-CNwlchQn.js → md.transition-CUQECuvD.js} +5 -6
- package/dist/cjs/{notch-controller-CgtkBzy0.js → notch-controller-sD-lTpdc.js} +4 -4
- package/dist/cjs/{overlays-Hci_7vw_.js → overlays-DIfHxkst.js} +42 -117
- package/dist/cjs/{status-tap-CTY2dMsZ.js → status-tap-CCJk5VgT.js} +3 -4
- package/dist/cjs/{swipe-back-jJFi5KCB.js → swipe-back-BGhTQ1CU.js} +2 -3
- package/dist/cjs/{theme-IlOsGAz7.js → theme-CeDs6Hcv.js} +1 -25
- package/dist/cjs/validity-BpS37YFM.js +19 -0
- package/dist/collection/collection-manifest.json +5 -10
- package/dist/collection/components/accordion/accordion.ios.css +58 -73
- package/dist/collection/components/accordion/accordion.js +27 -41
- 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 +8 -44
- package/dist/collection/components/accordion-group/accordion-group.md.css +4 -22
- package/dist/collection/components/action-sheet/action-sheet.ios.css +6 -102
- package/dist/collection/components/action-sheet/action-sheet.js +18 -33
- package/dist/collection/components/action-sheet/action-sheet.md.css +5 -101
- package/dist/collection/components/alert/alert.ios.css +1 -102
- package/dist/collection/components/alert/alert.js +35 -52
- package/dist/collection/components/alert/alert.md.css +1 -102
- package/dist/collection/components/app/app.js +83 -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 +19 -27
- 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 +6 -12
- package/dist/collection/components/backdrop/backdrop.md.css +19 -56
- package/dist/collection/components/badge/badge.ios.css +12 -139
- package/dist/collection/components/badge/badge.js +9 -145
- package/dist/collection/components/badge/badge.md.css +12 -123
- package/dist/collection/components/breadcrumb/breadcrumb.ios.css +8 -20
- package/dist/collection/components/breadcrumb/breadcrumb.js +11 -43
- 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 +9 -11
- 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 +27 -63
- 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 +9 -15
- 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 +10 -41
- 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 +10 -13
- 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 +8 -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 +8 -11
- package/dist/collection/components/card-title/card-title.md.css +0 -73
- package/dist/collection/components/checkbox/checkbox.ios.css +101 -161
- package/dist/collection/components/checkbox/checkbox.js +14 -70
- package/dist/collection/components/checkbox/checkbox.md.css +102 -162
- package/dist/collection/components/chip/chip.ios.css +14 -67
- package/dist/collection/components/chip/chip.js +8 -108
- 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 +61 -210
- package/dist/collection/components/content/content.css +2 -8
- package/dist/collection/components/content/content.js +11 -16
- package/dist/collection/components/datetime/datetime.ios.css +106 -302
- package/dist/collection/components/datetime/datetime.js +20 -98
- package/dist/collection/components/datetime/datetime.md.css +96 -293
- package/dist/collection/components/datetime/utils/data.js +5 -5
- package/dist/collection/components/datetime-button/datetime-button.ios.css +0 -6
- package/dist/collection/components/datetime-button/datetime-button.js +8 -11
- package/dist/collection/components/datetime-button/datetime-button.md.css +0 -6
- package/dist/collection/components/fab/fab.css +1 -25
- package/dist/collection/components/fab/fab.js +5 -9
- package/dist/collection/components/fab-button/fab-button.ios.css +6 -18
- package/dist/collection/components/fab-button/fab-button.js +21 -36
- 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 +5 -9
- package/dist/collection/components/footer/footer.ios.css +2 -14
- package/dist/collection/components/footer/footer.js +16 -21
- package/dist/collection/components/footer/footer.md.css +0 -12
- package/dist/collection/components/grid/grid.css +0 -12
- package/dist/collection/components/grid/grid.js +5 -9
- package/dist/collection/components/header/header.ios.css +10 -25
- package/dist/collection/components/header/header.js +19 -50
- package/dist/collection/components/header/header.md.css +8 -23
- package/dist/collection/components/header/header.utils.js +5 -5
- package/dist/collection/components/img/img.js +2 -8
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +5 -100
- 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 +10 -16
- 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 +37 -148
- 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 +6 -73
- package/dist/collection/components/input-otp/input-otp.md.css +60 -105
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +12 -48
- package/dist/collection/components/item/item.ios.css +69 -109
- package/dist/collection/components/item/item.js +20 -51
- package/dist/collection/components/item/item.md.css +68 -120
- package/dist/collection/components/item-divider/item-divider.ios.css +0 -18
- package/dist/collection/components/item-divider/item-divider.js +8 -11
- 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 +9 -73
- 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 +7 -13
- package/dist/collection/components/item-options/item-options.md.css +34 -77
- package/dist/collection/components/item-sliding/item-sliding.css +0 -6
- package/dist/collection/components/item-sliding/item-sliding.js +4 -144
- 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 +8 -11
- 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 +9 -48
- 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 +8 -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 +16 -15
- 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 +7 -12
- 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 +10 -26
- package/dist/collection/components/menu-button/menu-button.md.css +15 -49
- package/dist/collection/components/menu-toggle/menu-toggle.js +5 -8
- package/dist/collection/components/modal/animations/sheet.js +2 -8
- package/dist/collection/components/modal/gestures/sheet.js +10 -76
- package/dist/collection/components/modal/modal.ios.css +70 -178
- package/dist/collection/components/modal/modal.js +17 -51
- package/dist/collection/components/modal/modal.md.css +70 -178
- package/dist/collection/components/nav/nav.css +1 -7
- package/dist/collection/components/nav/nav.js +5 -11
- package/dist/collection/components/nav-link/nav-link.js +1 -5
- package/dist/collection/components/note/note.ios.css +0 -12
- package/dist/collection/components/note/note.js +8 -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 +5 -8
- package/dist/collection/components/picker/picker.md.css +3 -15
- package/dist/collection/components/picker-column/picker-column.css +2 -9
- package/dist/collection/components/picker-column/picker-column.js +7 -8
- 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 +7 -13
- package/dist/collection/components/picker-column-option/picker-column-option.md.css +0 -6
- package/dist/collection/components/popover/popover.ios.css +1 -29
- package/dist/collection/components/popover/popover.js +20 -19
- package/dist/collection/components/popover/popover.md.css +1 -29
- package/dist/collection/components/progress-bar/progress-bar.ios.css +17 -48
- package/dist/collection/components/progress-bar/progress-bar.js +7 -43
- package/dist/collection/components/progress-bar/progress-bar.md.css +17 -48
- package/dist/collection/components/radio/radio.ios.css +91 -134
- package/dist/collection/components/radio/radio.js +10 -15
- package/dist/collection/components/radio/radio.md.css +91 -134
- package/dist/collection/components/radio-group/radio-group.ios.css +19 -43
- package/dist/collection/components/radio-group/radio-group.js +7 -48
- package/dist/collection/components/radio-group/radio-group.md.css +19 -43
- package/dist/collection/components/range/range.ios.css +85 -128
- package/dist/collection/components/range/range.js +10 -16
- 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 +8 -11
- package/dist/collection/components/refresher/refresher.md.css +2 -15
- package/dist/collection/components/refresher-content/refresher-content.js +7 -28
- package/dist/collection/components/reorder/reorder.ios.css +0 -6
- package/dist/collection/components/reorder/reorder.js +6 -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 +4 -8
- package/dist/collection/components/ripple-effect/{ripple-effect.common.css → ripple-effect.css} +1 -7
- package/dist/collection/components/ripple-effect/ripple-effect.js +6 -14
- package/dist/collection/components/route/route.js +0 -4
- package/dist/collection/components/router/router.js +0 -4
- package/dist/collection/components/router-link/router-link.css +2 -8
- package/dist/collection/components/router-link/router-link.js +5 -9
- package/dist/collection/components/router-outlet/router-outlet.css +1 -7
- package/dist/collection/components/router-outlet/router-outlet.js +40 -10
- 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 +33 -180
- 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 +8 -11
- 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 +8 -11
- 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 +4 -6
- package/dist/collection/components/segment-view/segment-view.md.css +0 -6
- package/dist/collection/components/select/select.ios.css +176 -348
- package/dist/collection/components/select/select.js +97 -434
- package/dist/collection/components/select/select.md.css +178 -364
- package/dist/collection/components/select-modal/select-modal.ios.css +0 -95
- package/dist/collection/components/select-modal/select-modal.js +32 -109
- package/dist/collection/components/select-modal/select-modal.md.css +0 -83
- package/dist/collection/components/select-option/select-option.js +2 -32
- package/dist/collection/components/select-popover/select-popover.ios.css +0 -100
- package/dist/collection/components/select-popover/select-popover.js +31 -72
- package/dist/collection/components/select-popover/select-popover.md.css +0 -100
- package/dist/collection/components/skeleton-text/skeleton-text.css +0 -6
- package/dist/collection/components/skeleton-text/skeleton-text.js +5 -9
- package/dist/collection/components/spinner/{spinner.ionic.css → spinner.css} +10 -78
- package/dist/collection/components/spinner/spinner.js +6 -47
- package/dist/collection/components/split-pane/split-pane.ios.css +2 -20
- package/dist/collection/components/split-pane/split-pane.js +8 -14
- package/dist/collection/components/split-pane/split-pane.md.css +2 -20
- package/dist/collection/components/tab/tab.js +2 -6
- package/dist/collection/components/tab-bar/tab-bar.ios.css +43 -71
- package/dist/collection/components/tab-bar/tab-bar.js +13 -171
- package/dist/collection/components/tab-bar/tab-bar.md.css +43 -71
- package/dist/collection/components/tab-button/tab-button.ios.css +95 -171
- package/dist/collection/components/tab-button/tab-button.js +9 -54
- 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 +1 -4
- package/dist/collection/components/text/text.css +0 -6
- package/dist/collection/components/text/text.js +6 -7
- package/dist/collection/components/textarea/textarea.ios.css +158 -298
- package/dist/collection/components/textarea/textarea.js +24 -162
- 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 +7 -13
- package/dist/collection/components/title/title.md.css +4 -32
- 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 +13 -76
- package/dist/collection/components/toast/toast.md.css +45 -84
- package/dist/collection/components/toggle/toggle.ios.css +131 -247
- package/dist/collection/components/toggle/toggle.js +18 -73
- package/dist/collection/components/toggle/toggle.md.css +131 -244
- package/dist/collection/components/toolbar/toolbar.ios.css +47 -90
- package/dist/collection/components/toolbar/toolbar.js +13 -218
- package/dist/collection/components/toolbar/toolbar.md.css +47 -90
- package/dist/collection/global/ionic-global.js +13 -241
- package/dist/collection/index.js +1 -1
- package/dist/collection/utils/focus-trap.js +2 -13
- package/dist/collection/utils/focus-visible.js +0 -22
- package/dist/collection/utils/forms/validity.js +0 -31
- package/dist/collection/utils/framework-delegate.js +1 -3
- package/dist/collection/utils/hardware-back-button.js +0 -15
- package/dist/collection/utils/helpers.js +3 -57
- package/dist/collection/utils/keyboard/keyboard-controller.js +1 -3
- 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/overlays.js +31 -97
- package/dist/collection/utils/test/playwright/drag-element.js +9 -32
- package/dist/collection/utils/test/playwright/generator.js +23 -48
- package/dist/collection/utils/test/playwright/page/utils/goto.js +5 -14
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +3 -26
- package/dist/collection/utils/theme.js +1 -25
- package/dist/collection/utils/transition/ios.transition.js +0 -1
- package/dist/docs.json +677 -9877
- package/dist/esm/{animation-Cqe2x-Pt.js → animation-CnGMT4ji.js} +2 -2
- package/dist/esm/{app-globals-Dk1rB3aE.js → app-globals-DhZjtldk.js} +1 -1
- package/dist/esm/{button-active-g6ZnZzDZ.js → button-active-BBx21brx.js} +2 -2
- package/dist/esm/{capacitor-C4lYa1nV.js → capacitor-CFERIeaU.js} +1 -1
- package/dist/esm/{index-D4ugF_sT.js → config-TO1rZH52.js} +29 -2
- package/dist/esm/{data-BNKYavC3.js → data-B9iGR5YO.js} +6 -6
- package/dist/{cjs/focus-visible-BIj-I3-C.js → esm/focus-visible-BmVRXR1y.js} +1 -27
- package/dist/esm/{framework-delegate-CjVwn_KZ.js → framework-delegate-CyxE1S_P.js} +2 -4
- package/dist/esm/{haptic-_88k1V5U.js → haptic-DzAMWJuk.js} +1 -1
- package/dist/esm/hardware-back-button-CTe4XmL7.js +115 -0
- package/dist/esm/{helpers-Do7zwvM1.js → helpers-Tl8jw6S2.js} +5 -58
- package/dist/esm/{index-D2tu5BUg.js → index-AlrZKoWR.js} +1 -2
- package/dist/esm/{index-CGthURny.js → index-B-hkiOUh.js} +4 -4
- package/dist/esm/{index-hpH08p5s.js → index-B2KwgBLx.js} +11 -11
- package/dist/esm/{index-C5t9-ciC.js → index-BtUdxPjv.js} +3 -4
- package/dist/esm/{index-Omi_TcwW.js → index-IGIE5vDm.js} +4 -41
- package/dist/esm/index-ZjP4CjeZ.js +7 -0
- package/dist/esm/{index-BmkLokUL.js → index-hW6eNZ3o.js} +2 -2
- package/dist/esm/index.js +14 -14
- package/dist/esm/{input-shims-vDjCsx95.js → input-shims-AaDhOpKN.js} +6 -7
- package/dist/esm/{input.utils-B9Q5xHp6.js → input.utils-Bxa_DQ7-.js} +3 -3
- package/dist/esm/ion-accordion_2.entry.js +29 -61
- package/dist/esm/ion-action-sheet.entry.js +26 -41
- package/dist/esm/ion-alert.entry.js +44 -61
- package/dist/esm/ion-app_8.entry.js +175 -296
- package/dist/esm/ion-avatar_3.entry.js +13 -125
- package/dist/esm/ion-back-button.entry.js +22 -31
- package/dist/esm/ion-backdrop.entry.js +7 -10
- package/dist/esm/ion-breadcrumb_2.entry.js +18 -54
- package/dist/esm/ion-button_2.entry.js +22 -59
- package/dist/esm/ion-card_5.entry.js +33 -55
- package/dist/esm/ion-checkbox.entry.js +16 -34
- package/dist/esm/ion-chip.entry.js +9 -50
- package/dist/esm/ion-col_3.entry.js +57 -54
- package/dist/esm/ion-datetime-button.entry.js +9 -13
- package/dist/esm/{ion-datetime_3.entry.js → ion-datetime.entry.js} +30 -741
- package/dist/esm/ion-fab_3.entry.js +28 -44
- package/dist/esm/ion-img.entry.js +4 -8
- package/dist/esm/ion-infinite-scroll_2.entry.js +16 -92
- package/dist/esm/ion-input-otp.entry.js +9 -74
- package/dist/esm/ion-input-password-toggle.entry.js +15 -53
- package/dist/esm/ion-input.entry.js +34 -124
- package/dist/esm/ion-item-option_3.entry.js +21 -186
- package/dist/esm/ion-item_8.entry.js +49 -116
- package/dist/esm/ion-loading.entry.js +22 -21
- package/dist/esm/ion-menu_3.entry.js +29 -47
- package/dist/esm/ion-modal.entry.js +95 -215
- package/dist/esm/ion-nav_2.entry.js +11 -14
- package/dist/esm/ion-picker-column-option.entry.js +8 -12
- package/dist/esm/ion-picker-column.entry.js +13 -13
- package/dist/esm/ion-picker.entry.js +6 -10
- package/dist/esm/ion-popover.entry.js +23 -21
- package/dist/esm/ion-progress-bar.entry.js +9 -27
- package/dist/esm/ion-radio_2.entry.js +17 -35
- package/dist/esm/ion-range.entry.js +13 -20
- package/dist/esm/ion-refresher_2.entry.js +21 -40
- package/dist/esm/ion-reorder_2.entry.js +14 -38
- package/dist/esm/ion-ripple-effect.entry.js +7 -15
- package/dist/esm/ion-route_4.entry.js +9 -10
- package/dist/esm/ion-searchbar.entry.js +24 -137
- package/dist/esm/ion-segment-content.entry.js +2 -2
- package/dist/esm/ion-segment-view.entry.js +3 -6
- package/dist/esm/ion-segment_2.entry.js +16 -23
- package/dist/esm/ion-select-modal.entry.js +40 -97
- package/dist/esm/ion-select_3.entry.js +116 -454
- package/dist/esm/ion-spinner.entry.js +8 -30
- package/dist/esm/ion-split-pane.entry.js +9 -12
- package/dist/esm/ion-tab-bar_2.entry.js +23 -147
- package/dist/esm/ion-tab_2.entry.js +7 -8
- package/dist/esm/ion-text.entry.js +7 -7
- package/dist/esm/ion-textarea.entry.js +23 -137
- package/dist/esm/ion-toast.entry.js +21 -45
- package/dist/esm/ion-toggle.entry.js +25 -82
- package/dist/esm/ionic-global-DfbeLwcV.js +146 -0
- package/dist/esm/ionic.js +5 -5
- package/dist/esm/{ios.transition-CzSncKQg.js → ios.transition--aMF-pDH.js} +5 -7
- package/dist/esm/{keyboard-Cpw6xVLJ.js → keyboard-CUw4ekVy.js} +1 -1
- package/dist/esm/{keyboard-controller-CAc33ylR.js → keyboard-controller-BaaVITYt.js} +3 -5
- package/dist/esm/{keyboard-DJpS2IGK.js → keyboard-ywgs5efA.js} +3 -4
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-DIsWqYBZ.js → md.transition-BEVbfm8j.js} +5 -6
- package/dist/esm/{notch-controller-DiBq57w8.js → notch-controller-DAcvKU57.js} +2 -2
- package/dist/esm/{overlays-rwDDzEs4.js → overlays-BDGzTP3L.js} +39 -114
- package/dist/esm/{status-tap-fYFdZg6z.js → status-tap-BfJqFSLF.js} +3 -4
- package/dist/esm/{swipe-back-BzGqTrrq.js → swipe-back-BZBFwTQV.js} +2 -3
- package/dist/esm/{theme-DaJxRxSQ.js → theme-DiVJyqlX.js} +1 -25
- package/dist/esm/validity-DJztqcrH.js +17 -0
- package/dist/html.html-data.json +182 -2601
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-045a6a42.entry.js +4 -0
- package/dist/ionic/p-078037da.entry.js +4 -0
- package/dist/ionic/p-0ed06d90.entry.js +4 -0
- package/dist/ionic/p-18b5d5ff.entry.js +4 -0
- package/dist/ionic/p-19adf785.entry.js +4 -0
- package/dist/ionic/p-1d2163ad.entry.js +4 -0
- package/dist/ionic/p-23ec35e4.entry.js +4 -0
- package/dist/ionic/p-30f5ad9e.entry.js +4 -0
- package/dist/ionic/p-34b3a309.entry.js +4 -0
- package/dist/ionic/p-370a60ee.entry.js +4 -0
- package/dist/ionic/p-3b58996c.entry.js +4 -0
- package/dist/ionic/p-460fbe5b.entry.js +4 -0
- package/dist/ionic/p-4c8d8c55.entry.js +4 -0
- package/dist/ionic/p-4ea520a4.entry.js +4 -0
- package/dist/ionic/p-4ed63122.entry.js +4 -0
- package/dist/ionic/p-4f3a8ccf.entry.js +4 -0
- package/dist/ionic/p-528d4c1d.entry.js +4 -0
- package/dist/ionic/p-5430ae94.entry.js +4 -0
- package/dist/ionic/p-5c2cc090.entry.js +4 -0
- package/dist/ionic/p-6406d5a9.entry.js +4 -0
- package/dist/ionic/p-66494f9b.entry.js +4 -0
- package/dist/ionic/p-6a56880f.entry.js +4 -0
- package/dist/ionic/p-6af16209.entry.js +4 -0
- package/dist/ionic/p-6b97f2a3.entry.js +4 -0
- package/dist/ionic/p-6da572e7.entry.js +4 -0
- package/dist/ionic/p-6e99ae8d.entry.js +4 -0
- package/dist/ionic/p-7f269aff.entry.js +4 -0
- package/dist/ionic/p-7f9db51b.entry.js +4 -0
- package/dist/ionic/p-7fe42b71.entry.js +4 -0
- package/dist/ionic/p-823eccd3.entry.js +4 -0
- package/dist/ionic/p-87125490.entry.js +4 -0
- package/dist/ionic/p-898f9d11.entry.js +4 -0
- package/dist/ionic/p-8a3a936b.entry.js +4 -0
- package/dist/ionic/p-9833cf63.entry.js +4 -0
- package/dist/ionic/p-9eeaBrnk.js +4 -0
- package/dist/ionic/p-AlrZKoWR.js +4 -0
- package/dist/ionic/{p-DKWXAwlR.js → p-B8xlpH8p.js} +1 -1
- package/dist/ionic/p-BAt5H1ac.js +4 -0
- package/dist/ionic/p-BW_TRJm8.js +4 -0
- package/dist/ionic/p-BmVRXR1y.js +4 -0
- package/dist/ionic/p-Bum7H1fw.js +4 -0
- package/{components/p-oF-CwZ0b.js → dist/ionic/p-BvFYtOdE.js} +1 -1
- package/dist/ionic/p-BxIcPWoV.js +4 -0
- package/dist/ionic/p-C0JvVFMv.js +4 -0
- package/dist/ionic/p-CGmVTdWh.js +4 -0
- package/dist/ionic/p-CIGNaXM1.js +4 -0
- package/{components/p-BLysWQA1.js → dist/ionic/p-CKvCXMs9.js} +1 -1
- package/dist/ionic/p-CYbRmDdy.js +4 -0
- package/dist/ionic/p-CYvM5g3q.js +4 -0
- package/dist/ionic/p-CmFz1Mjc.js +4 -0
- package/dist/ionic/p-Csx_Ej2k.js +4 -0
- package/dist/ionic/p-CtA-yJYy.js +4 -0
- package/dist/ionic/p-CtWGkNnJ.js +4 -0
- package/{components/p-9gxM3tAr.js → dist/ionic/p-D13Eaw-8.js} +1 -1
- package/dist/ionic/p-D8HJQ1qq.js +4 -0
- package/dist/ionic/p-DB_iPQC-.js +4 -0
- package/dist/ionic/p-DJztqcrH.js +4 -0
- package/dist/ionic/p-DLbbmF9h.js +4 -0
- package/dist/ionic/p-DiVJyqlX.js +4 -0
- package/{components/p-B636tzQ7.js → dist/ionic/p-DjriolRs.js} +1 -1
- package/dist/ionic/p-DtVZDHlS.js +4 -0
- package/dist/ionic/p-IGIE5vDm.js +5 -0
- package/dist/ionic/p-NFFyoJ4Q.js +4 -0
- package/dist/ionic/p-ZjP4CjeZ.js +4 -0
- package/dist/ionic/p-a39db980.entry.js +4 -0
- package/dist/ionic/p-a805674e.entry.js +4 -0
- package/dist/ionic/p-b553828c.entry.js +4 -0
- package/dist/ionic/p-b5e3e1f7.entry.js +4 -0
- package/dist/ionic/p-b6e0ff03.entry.js +4 -0
- package/dist/ionic/p-b8f4a31c.entry.js +4 -0
- package/dist/ionic/p-ca31010f.entry.js +4 -0
- package/dist/ionic/p-cce0cd26.entry.js +4 -0
- package/dist/ionic/p-dc198c3a.entry.js +4 -0
- package/dist/ionic/p-e0d788e9.entry.js +4 -0
- package/dist/ionic/p-e663bc5a.entry.js +4 -0
- package/dist/ionic/p-e6cedcd7.entry.js +4 -0
- package/dist/ionic/p-e9dd191b.entry.js +4 -0
- package/dist/ionic/p-ede28b71.entry.js +4 -0
- package/dist/ionic/p-f17d05e3.entry.js +4 -0
- package/dist/ionic/p-f5dfb9a3.entry.js +4 -0
- package/dist/ionic/p-f7762013.entry.js +4 -0
- package/dist/ionic/p-fed27c64.entry.js +4 -0
- package/dist/ionic/p-gbVXD275.js +4 -0
- package/dist/ionic/p-hNN3VvaC.js +4 -0
- package/dist/types/components/accordion/accordion.d.ts +3 -6
- package/dist/types/components/accordion-group/accordion-group.d.ts +1 -12
- package/dist/types/components/action-sheet/action-sheet-interface.d.ts +7 -3
- package/dist/types/components/action-sheet/action-sheet.d.ts +2 -3
- package/dist/types/components/alert/alert-interface.d.ts +7 -3
- package/dist/types/components/alert/alert.d.ts +2 -3
- package/dist/types/components/app/app.d.ts +5 -4
- package/dist/types/components/avatar/avatar.d.ts +0 -32
- package/dist/types/components/back-button/back-button.d.ts +1 -2
- package/dist/types/components/backdrop/backdrop.d.ts +0 -4
- package/dist/types/components/badge/badge.d.ts +1 -34
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +1 -4
- package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
- package/dist/types/components/button/button.d.ts +8 -23
- package/dist/types/components/buttons/buttons.d.ts +1 -5
- package/dist/types/components/card/card.d.ts +1 -8
- package/dist/types/components/card-content/card-content.d.ts +1 -2
- package/dist/types/components/card-header/card-header.d.ts +2 -3
- package/dist/types/components/card-subtitle/card-subtitle.d.ts +1 -2
- package/dist/types/components/card-title/card-title.d.ts +1 -2
- package/dist/types/components/checkbox/checkbox.d.ts +4 -14
- package/dist/types/components/chip/chip.d.ts +1 -26
- package/dist/types/components/col/col.d.ts +5 -52
- package/dist/types/components/content/content.d.ts +0 -3
- package/dist/types/components/datetime/datetime.d.ts +1 -26
- package/dist/types/components/datetime/utils/data.d.ts +5 -5
- package/dist/types/components/datetime-button/datetime-button.d.ts +1 -2
- package/dist/types/components/fab/fab.d.ts +0 -4
- package/dist/types/components/fab-button/fab-button.d.ts +3 -5
- package/dist/types/components/fab-list/fab-list.d.ts +0 -4
- package/dist/types/components/footer/footer.d.ts +3 -4
- package/dist/types/components/grid/grid.d.ts +0 -4
- package/dist/types/components/header/header.d.ts +3 -9
- package/dist/types/components/header/header.utils.d.ts +3 -3
- package/dist/types/components/img/img.d.ts +0 -3
- 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 +5 -31
- 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 -32
- package/dist/types/components/item-sliding/test/test.utils.d.ts +0 -13
- package/dist/types/components/label/label.d.ts +1 -2
- package/dist/types/components/list/list.d.ts +1 -15
- package/dist/types/components/list-header/list-header.d.ts +1 -2
- package/dist/types/components/loading/loading-interface.d.ts +7 -2
- package/dist/types/components/loading/loading.d.ts +2 -3
- package/dist/types/components/menu/menu.d.ts +0 -3
- package/dist/types/components/menu-button/menu-button.d.ts +1 -3
- package/dist/types/components/menu-toggle/menu-toggle.d.ts +0 -3
- package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
- package/dist/types/components/modal/modal-interface.d.ts +7 -4
- package/dist/types/components/modal/modal.d.ts +1 -11
- package/dist/types/components/nav/nav-interface.d.ts +1 -9
- package/dist/types/components/nav/nav.d.ts +1 -5
- 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 +0 -4
- 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 +9 -51
- 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-interface.d.ts +0 -23
- package/dist/types/components/select/select.d.ts +14 -66
- package/dist/types/components/select-modal/select-modal.d.ts +0 -8
- package/dist/types/components/select-option/select-option.d.ts +0 -12
- 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.d.ts +2 -37
- 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 +255 -2039
- package/dist/types/global/ionic-global.d.ts +2 -28
- package/dist/types/index.d.ts +1 -1
- package/dist/types/interface.d.ts +0 -4
- package/dist/types/utils/config.d.ts +2 -114
- package/dist/types/utils/focus-trap.d.ts +1 -1
- package/dist/types/utils/focus-visible.d.ts +0 -13
- package/dist/types/utils/forms/validity.d.ts +0 -7
- package/dist/types/utils/helpers.d.ts +0 -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/theme.d.ts +0 -9
- package/hydrate/index.js +1409 -5040
- package/hydrate/index.mjs +1409 -5040
- package/package.json +6 -10
- package/components/ion-divider.d.ts +0 -11
- package/components/ion-divider.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-0sa2JgYA.js +0 -4
- package/components/p-3Ni1Z654.js +0 -4
- package/components/p-B8Oa6a_k.js +0 -4
- package/components/p-BCDEEm9n.js +0 -4
- package/components/p-BDndEqui.js +0 -4
- package/components/p-BDqjX7Z_.js +0 -4
- package/components/p-BErKjY03.js +0 -4
- package/components/p-BFCM_1oE.js +0 -4
- package/components/p-BO4aickU.js +0 -4
- package/components/p-BTYqyHph.js +0 -4
- package/components/p-BU8N7ZrK.js +0 -4
- package/components/p-BYSs-jZz.js +0 -4
- package/components/p-BaPtaYEC.js +0 -4
- package/components/p-BbQGmZyu.js +0 -4
- package/components/p-BcbmT6b3.js +0 -4
- package/components/p-BeVlsaLA.js +0 -4
- package/components/p-BfHB6wX_.js +0 -4
- package/components/p-BhfW3d9j.js +0 -4
- package/components/p-BjW8SOqw.js +0 -4
- package/components/p-Bp__mr16.js +0 -4
- package/components/p-BqDiJgC_.js +0 -4
- package/components/p-Brxa0j7O.js +0 -4
- package/components/p-BtAlyZ0b.js +0 -4
- package/components/p-BwKpO3Is.js +0 -4
- package/components/p-C-_EGKki.js +0 -4
- package/components/p-C00Y_WJv.js +0 -4
- package/components/p-C0U8YqYW.js +0 -4
- package/components/p-C2cZvGcF.js +0 -4
- package/components/p-CKfNwyAb.js +0 -4
- package/components/p-CVBkx7m1.js +0 -4
- package/components/p-Cb9imMZh.js +0 -4
- package/components/p-CdYTq34D.js +0 -4
- package/components/p-CeYwuysM.js +0 -4
- package/components/p-Cf9-xP7P.js +0 -4
- package/components/p-Cmql_g3_.js +0 -4
- package/components/p-CnOTQxHB.js +0 -4
- package/components/p-CnwZE7CW.js +0 -4
- package/components/p-CoarhFWH.js +0 -4
- package/components/p-CtiqM786.js +0 -4
- package/components/p-D1t981Ih.js +0 -4
- package/components/p-D39cV-un.js +0 -4
- package/components/p-D5lMX0xt.js +0 -4
- package/components/p-DAeMHNER.js +0 -4
- package/components/p-DDw-NYxz.js +0 -4
- package/components/p-DVcs-2q3.js +0 -4
- package/components/p-DaJxRxSQ.js +0 -4
- package/components/p-Dhi5xtNS.js +0 -4
- package/components/p-GnGGIfCd.js +0 -4
- package/components/p-TpZHKDyk.js +0 -4
- package/components/p-XFUFdPrc.js +0 -4
- package/components/p-XegQjlzJ.js +0 -4
- package/components/p-fIOYmaqA.js +0 -4
- package/components/p-lIOqnNXn.js +0 -4
- package/components/p-sK-FK9CT.js +0 -4
- package/components/p-t98_NeNv.js +0 -4
- package/components/p-tYh73xQe.js +0 -4
- package/components/p-vCpF32Z7.js +0 -4
- package/components/p-vXpMhGrs.js +0 -4
- package/components/p-wCDzv5Q8.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/config-DWdFbSNK.js +0 -35
- package/dist/cjs/ion-divider.cjs.entry.js +0 -51
- package/dist/cjs/ionic-global-CSEbHD_F.js +0 -519
- package/dist/cjs/list-a-7GSA6K.js +0 -8
- package/dist/cjs/select-option-render-C7klBX2H.js +0 -81
- 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 -834
- package/dist/collection/components/alert/alert.ionic.css +0 -1165
- package/dist/collection/components/avatar/avatar.ionic.css +0 -391
- package/dist/collection/components/backdrop/backdrop.ionic.css +0 -109
- package/dist/collection/components/badge/badge.ionic.css +0 -275
- package/dist/collection/components/button/button.ionic.css +0 -646
- 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 -539
- 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/header/header.ionic.css +0 -97
- package/dist/collection/components/input/input.ionic.css +0 -889
- 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 -508
- package/dist/collection/components/item-option/item-option.ionic.css +0 -278
- package/dist/collection/components/item-options/item-options.ionic.css +0 -221
- 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 -247
- 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 -626
- package/dist/collection/components/segment/segment.ionic.css +0 -115
- package/dist/collection/components/segment-button/segment-button.ionic.css +0 -353
- package/dist/collection/components/select/select.ionic.css +0 -810
- package/dist/collection/components/select-modal/select-modal.ionic.css +0 -154
- package/dist/collection/components/select-popover/select-popover.ionic.css +0 -499
- package/dist/collection/components/spinner/spinner.native.css +0 -199
- package/dist/collection/components/tab-bar/tab-bar.ionic.css +0 -227
- package/dist/collection/components/tab-button/tab-button.ionic.css +0 -348
- 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 -508
- package/dist/collection/components/toolbar/test/image.svg +0 -1
- package/dist/collection/components/toolbar/toolbar.ionic.css +0 -249
- package/dist/collection/utils/select-option-render.js +0 -76
- 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/config-BwKpO3Is.js +0 -31
- package/dist/esm/ion-divider.entry.js +0 -49
- package/dist/esm/ionic-global-CAZb-5i-.js +0 -508
- package/dist/esm/list-Dhi5xtNS.js +0 -6
- package/dist/esm/select-option-render-B2qc5ZP7.js +0 -79
- package/dist/esm/validity-BjW8SOqw.js +0 -48
- package/dist/esm/x-BDqjX7Z_.js +0 -6
- package/dist/ionic/p-02ecc684.entry.js +0 -4
- package/dist/ionic/p-07d3388f.entry.js +0 -4
- package/dist/ionic/p-091a95ea.entry.js +0 -4
- package/dist/ionic/p-11nqcMM3.js +0 -4
- package/dist/ionic/p-139d02eb.entry.js +0 -4
- package/dist/ionic/p-192e7509.entry.js +0 -4
- package/dist/ionic/p-1faf270d.entry.js +0 -4
- package/dist/ionic/p-228b6a9c.entry.js +0 -4
- package/dist/ionic/p-2311e660.entry.js +0 -4
- package/dist/ionic/p-2aa44c65.entry.js +0 -4
- package/dist/ionic/p-2bf931ae.entry.js +0 -4
- package/dist/ionic/p-2effd05d.entry.js +0 -4
- package/dist/ionic/p-308beb71.entry.js +0 -4
- package/dist/ionic/p-3093958a.entry.js +0 -4
- package/dist/ionic/p-37ccbee4.entry.js +0 -4
- package/dist/ionic/p-3aba19e2.entry.js +0 -4
- package/dist/ionic/p-3bf01c2c.entry.js +0 -4
- package/dist/ionic/p-4091ad21.entry.js +0 -4
- package/dist/ionic/p-432c5888.entry.js +0 -4
- package/dist/ionic/p-45825c2c.entry.js +0 -4
- package/dist/ionic/p-4610e447.entry.js +0 -4
- package/dist/ionic/p-488992b6.entry.js +0 -4
- package/dist/ionic/p-4a0260e6.entry.js +0 -4
- package/dist/ionic/p-4c864eb2.entry.js +0 -4
- package/dist/ionic/p-4e46439d.entry.js +0 -4
- package/dist/ionic/p-50d90690.entry.js +0 -4
- package/dist/ionic/p-59b4f8d0.entry.js +0 -4
- package/dist/ionic/p-5a3fc28e.entry.js +0 -4
- package/dist/ionic/p-5ac21be2.entry.js +0 -4
- package/dist/ionic/p-64341e32.entry.js +0 -4
- package/dist/ionic/p-68c21b2a.entry.js +0 -4
- package/dist/ionic/p-6c8c37c2.entry.js +0 -4
- package/dist/ionic/p-6fbead83.entry.js +0 -4
- package/dist/ionic/p-7194f6fa.entry.js +0 -4
- package/dist/ionic/p-76d0e7ef.entry.js +0 -4
- package/dist/ionic/p-7d267dc6.entry.js +0 -4
- package/dist/ionic/p-8180abe5.entry.js +0 -4
- package/dist/ionic/p-833910ae.entry.js +0 -4
- package/dist/ionic/p-8516eb69.entry.js +0 -4
- package/dist/ionic/p-8uDL7fql.js +0 -4
- package/dist/ionic/p-96549175.entry.js +0 -4
- package/dist/ionic/p-98c34fd7.entry.js +0 -4
- package/dist/ionic/p-9b9b1450.entry.js +0 -4
- package/dist/ionic/p-BDqjX7Z_.js +0 -4
- package/dist/ionic/p-BYSs-jZz.js +0 -4
- package/dist/ionic/p-BjW8SOqw.js +0 -4
- package/dist/ionic/p-BwKpO3Is.js +0 -4
- package/dist/ionic/p-Bx0bt2Ar.js +0 -4
- package/dist/ionic/p-C2mpVKI1.js +0 -4
- package/dist/ionic/p-C4uUM9DM.js +0 -4
- package/dist/ionic/p-C5zxLmJ_.js +0 -4
- package/dist/ionic/p-CBV-BGvD.js +0 -4
- package/dist/ionic/p-CDn0uNJA.js +0 -4
- package/dist/ionic/p-CFjI63GE.js +0 -4
- package/dist/ionic/p-CHE1xWbg.js +0 -4
- package/dist/ionic/p-CIk5QtPm.js +0 -4
- package/dist/ionic/p-CQKe4n56.js +0 -4
- package/dist/ionic/p-CVp2D--1.js +0 -4
- package/dist/ionic/p-CWJdc8f_.js +0 -4
- package/dist/ionic/p-CXqdKf1K.js +0 -4
- package/dist/ionic/p-Cb-0O4h8.js +0 -4
- package/dist/ionic/p-D1t981Ih.js +0 -4
- package/dist/ionic/p-D2tu5BUg.js +0 -4
- package/dist/ionic/p-DaJxRxSQ.js +0 -4
- package/dist/ionic/p-Dhi5xtNS.js +0 -4
- package/dist/ionic/p-DoyDJ2X5.js +0 -4
- package/dist/ionic/p-FvDKM4Ax.js +0 -4
- package/dist/ionic/p-Omi_TcwW.js +0 -5
- package/dist/ionic/p-SOASChNu.js +0 -4
- package/dist/ionic/p-a53a3ecc.entry.js +0 -4
- package/dist/ionic/p-acdc21a6.entry.js +0 -4
- package/dist/ionic/p-ae4ea663.entry.js +0 -4
- package/dist/ionic/p-b0c54b4c.entry.js +0 -4
- package/dist/ionic/p-b8b20b7e.entry.js +0 -4
- package/dist/ionic/p-bc5713f7.entry.js +0 -4
- package/dist/ionic/p-d954cd19.entry.js +0 -4
- package/dist/ionic/p-e7f216ae.entry.js +0 -4
- package/dist/ionic/p-edb0b0c8.entry.js +0 -4
- package/dist/ionic/p-f02ba305.entry.js +0 -4
- package/dist/ionic/p-f061fcb7.entry.js +0 -4
- package/dist/ionic/p-f740c359.entry.js +0 -4
- package/dist/ionic/p-fIOYmaqA.js +0 -4
- package/dist/ionic/p-qETiT38a.js +0 -4
- package/dist/ionic/p-vXpMhGrs.js +0 -4
- package/dist/types/components/divider/divider.d.ts +0 -20
- package/dist/types/components/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/select-option-render.d.ts +0 -22
- /package/dist/collection/components/{refresher-content/refresher-content.css → input-password-toggle/input-password-toggle.css} +0 -0
|
@@ -1,24 +1,19 @@
|
|
|
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
|
-
import { ENABLE_HTML_CONTENT_DEFAULT } from "../../utils/config";
|
|
7
5
|
import { compareOptions, createNotchController, isOptionSelected, checkInvalidState } from "../../utils/forms/index";
|
|
8
6
|
import { focusVisibleElement, renderHiddenInput, inheritAttributes } from "../../utils/helpers";
|
|
9
7
|
import { printIonWarning } from "../../utils/logging/index";
|
|
10
8
|
import { actionSheetController, alertController, popoverController, modalController } from "../../utils/overlays";
|
|
11
9
|
import { isRTL } from "../../utils/rtl/index";
|
|
12
|
-
import { sanitizeDOMString } from "../../utils/sanitization/index";
|
|
13
10
|
import { createColorClasses, hostContext } from "../../utils/theme";
|
|
14
11
|
import { watchForOptions } from "../../utils/watch-options";
|
|
15
12
|
import { caretDownSharp, chevronExpand } from "ionicons/icons";
|
|
16
|
-
import {
|
|
17
|
-
import { getIonTheme } from "../../global/ionic-global";
|
|
13
|
+
import { getIonMode } from "../../global/ionic-global";
|
|
18
14
|
// TODO(FW-2832): types
|
|
19
15
|
/**
|
|
20
|
-
* @virtualProp {"ios" | "md"} mode - The mode determines
|
|
21
|
-
* @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
|
|
16
|
+
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
22
17
|
*
|
|
23
18
|
* @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
19
|
* @slot start - Content to display at the leading edge of the select.
|
|
@@ -42,7 +37,6 @@ export class Select {
|
|
|
42
37
|
this.helperTextId = `${this.inputId}-helper-text`;
|
|
43
38
|
this.errorTextId = `${this.inputId}-error-text`;
|
|
44
39
|
this.inheritedAttributes = {};
|
|
45
|
-
this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
|
|
46
40
|
this.isExpanded = false;
|
|
47
41
|
/**
|
|
48
42
|
* The `hasFocus` state ensures the focus class is
|
|
@@ -61,14 +55,6 @@ export class Select {
|
|
|
61
55
|
* The text to display on the cancel button.
|
|
62
56
|
*/
|
|
63
57
|
this.cancelText = 'Cancel';
|
|
64
|
-
/**
|
|
65
|
-
* If `true`, the cancel button will display an icon instead of the `cancelText`.
|
|
66
|
-
* Only applies when `interface` is set to `"modal"`. Has no effect on `"action-sheet"`,
|
|
67
|
-
* `"alert"`, or `"popover"` interfaces.
|
|
68
|
-
* When `cancelIcon` is `true`, the `cancelText` property is ignored for display
|
|
69
|
-
* but is used as the accessible label for the icon button.
|
|
70
|
-
*/
|
|
71
|
-
this.cancelIcon = false;
|
|
72
58
|
/**
|
|
73
59
|
* If `true`, the user cannot interact with the select.
|
|
74
60
|
*/
|
|
@@ -176,9 +162,40 @@ export class Select {
|
|
|
176
162
|
this.emitStyle();
|
|
177
163
|
}
|
|
178
164
|
setValue(value) {
|
|
165
|
+
if (this.isValueEqual(this.value, value)) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
179
168
|
this.value = value;
|
|
180
169
|
this.ionChange.emit({ value });
|
|
181
170
|
}
|
|
171
|
+
isValueEqual(currentValue, newValue) {
|
|
172
|
+
if (this.multiple) {
|
|
173
|
+
const currentArr = Array.isArray(currentValue) ? currentValue : [];
|
|
174
|
+
const newArr = Array.isArray(newValue) ? newValue : [];
|
|
175
|
+
if (currentArr.length !== newArr.length) {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
// Multiset compare: each new value must match a distinct current value.
|
|
179
|
+
// A plain `every(isOptionSelected)` would accept ['a','a'] as equal to
|
|
180
|
+
// ['a','b'] when both 'a' and 'b' map to options whose values overlap.
|
|
181
|
+
const remaining = currentArr.slice();
|
|
182
|
+
return newArr.every((val) => {
|
|
183
|
+
const idx = remaining.findIndex((c) => compareOptions(c, val, this.compareWith));
|
|
184
|
+
if (idx === -1) {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
remaining.splice(idx, 1);
|
|
188
|
+
return true;
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
if (currentValue == null && newValue == null) {
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
194
|
+
if (currentValue == null || newValue == null) {
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
return compareOptions(currentValue, newValue, this.compareWith);
|
|
198
|
+
}
|
|
182
199
|
async connectedCallback() {
|
|
183
200
|
const { el } = this;
|
|
184
201
|
this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
|
|
@@ -413,14 +430,9 @@ export class Select {
|
|
|
413
430
|
.join(' ');
|
|
414
431
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
415
432
|
const isSelected = isOptionSelected(selectValue, value, this.compareWith);
|
|
416
|
-
const text = this.customHTMLEnabled ? getOptionContent(option) : getDefaultSlotPlainText(option);
|
|
417
|
-
const startContent = this.customHTMLEnabled
|
|
418
|
-
? getOptionContent(option, 'start')
|
|
419
|
-
: undefined;
|
|
420
|
-
const endContent = this.customHTMLEnabled ? getOptionContent(option, 'end') : undefined;
|
|
421
433
|
return {
|
|
422
434
|
role: isSelected ? 'selected' : '',
|
|
423
|
-
text:
|
|
435
|
+
text: option.textContent,
|
|
424
436
|
cssClass: optClass,
|
|
425
437
|
handler: () => {
|
|
426
438
|
this.setValue(value);
|
|
@@ -429,9 +441,6 @@ export class Select {
|
|
|
429
441
|
'aria-checked': isSelected ? 'true' : 'false',
|
|
430
442
|
role: 'radio',
|
|
431
443
|
},
|
|
432
|
-
startContent: startContent !== null && startContent !== void 0 ? startContent : undefined,
|
|
433
|
-
endContent: endContent !== null && endContent !== void 0 ? endContent : undefined,
|
|
434
|
-
description: option.description,
|
|
435
444
|
};
|
|
436
445
|
});
|
|
437
446
|
// Add "cancel" button
|
|
@@ -452,21 +461,13 @@ export class Select {
|
|
|
452
461
|
.filter((cls) => cls !== 'hydrated')
|
|
453
462
|
.join(' ');
|
|
454
463
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
455
|
-
const label = this.customHTMLEnabled ? getOptionContent(option) : getDefaultSlotPlainText(option);
|
|
456
|
-
const startContent = this.customHTMLEnabled
|
|
457
|
-
? getOptionContent(option, 'start')
|
|
458
|
-
: undefined;
|
|
459
|
-
const endContent = this.customHTMLEnabled ? getOptionContent(option, 'end') : undefined;
|
|
460
464
|
return {
|
|
461
465
|
type: inputType,
|
|
462
466
|
cssClass: optClass,
|
|
463
|
-
label:
|
|
467
|
+
label: option.textContent || '',
|
|
464
468
|
value,
|
|
465
469
|
checked: isOptionSelected(selectValue, value, this.compareWith),
|
|
466
470
|
disabled: option.disabled,
|
|
467
|
-
startContent: startContent !== null && startContent !== void 0 ? startContent : undefined,
|
|
468
|
-
endContent: endContent !== null && endContent !== void 0 ? endContent : undefined,
|
|
469
|
-
description: option.description,
|
|
470
471
|
};
|
|
471
472
|
});
|
|
472
473
|
return alertInputs;
|
|
@@ -479,13 +480,8 @@ export class Select {
|
|
|
479
480
|
.filter((cls) => cls !== 'hydrated')
|
|
480
481
|
.join(' ');
|
|
481
482
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
482
|
-
const text = this.customHTMLEnabled ? getOptionContent(option) : getDefaultSlotPlainText(option);
|
|
483
|
-
const startContent = this.customHTMLEnabled
|
|
484
|
-
? getOptionContent(option, 'start')
|
|
485
|
-
: undefined;
|
|
486
|
-
const endContent = this.customHTMLEnabled ? getOptionContent(option, 'end') : undefined;
|
|
487
483
|
return {
|
|
488
|
-
text:
|
|
484
|
+
text: option.textContent || '',
|
|
489
485
|
cssClass: optClass,
|
|
490
486
|
value,
|
|
491
487
|
checked: isOptionSelected(selectValue, value, this.compareWith),
|
|
@@ -496,9 +492,6 @@ export class Select {
|
|
|
496
492
|
this.close();
|
|
497
493
|
}
|
|
498
494
|
},
|
|
499
|
-
startContent: startContent !== null && startContent !== void 0 ? startContent : undefined,
|
|
500
|
-
endContent: endContent !== null && endContent !== void 0 ? endContent : undefined,
|
|
501
|
-
description: option.description,
|
|
502
495
|
};
|
|
503
496
|
});
|
|
504
497
|
return popoverOptions;
|
|
@@ -506,8 +499,8 @@ export class Select {
|
|
|
506
499
|
async openPopover(ev) {
|
|
507
500
|
const { fill, labelPlacement } = this;
|
|
508
501
|
const interfaceOptions = this.interfaceOptions;
|
|
509
|
-
const
|
|
510
|
-
const showBackdrop =
|
|
502
|
+
const mode = getIonMode(this);
|
|
503
|
+
const showBackdrop = mode === 'md' ? false : true;
|
|
511
504
|
const multiple = this.multiple;
|
|
512
505
|
const value = this.value;
|
|
513
506
|
let event = ev;
|
|
@@ -518,7 +511,7 @@ export class Select {
|
|
|
518
511
|
* when using a fill in MD mode or if the
|
|
519
512
|
* label is floating/stacked.
|
|
520
513
|
*/
|
|
521
|
-
if (hasFloatingOrStackedLabel || (
|
|
514
|
+
if (hasFloatingOrStackedLabel || (mode === 'md' && fill !== undefined)) {
|
|
522
515
|
size = 'cover';
|
|
523
516
|
/**
|
|
524
517
|
* Otherwise the popover
|
|
@@ -531,21 +524,15 @@ export class Select {
|
|
|
531
524
|
ionShadowTarget: this.nativeWrapperEl,
|
|
532
525
|
} });
|
|
533
526
|
}
|
|
534
|
-
const
|
|
535
|
-
const hasRichContent = options.some((opt) => opt.startContent || opt.endContent || opt.description);
|
|
536
|
-
const popoverOpts = Object.assign(Object.assign({ theme,
|
|
527
|
+
const popoverOpts = Object.assign(Object.assign({ mode,
|
|
537
528
|
event, alignment: 'center', size,
|
|
538
|
-
showBackdrop }, interfaceOptions), { component: 'ion-select-popover', cssClass: [
|
|
539
|
-
'select-popover',
|
|
540
|
-
hasRichContent ? 'select-popover-rich-content' : undefined,
|
|
541
|
-
interfaceOptions.cssClass,
|
|
542
|
-
], componentProps: {
|
|
529
|
+
showBackdrop }, interfaceOptions), { component: 'ion-select-popover', cssClass: ['select-popover', interfaceOptions.cssClass], componentProps: {
|
|
543
530
|
header: interfaceOptions.header,
|
|
544
531
|
subHeader: interfaceOptions.subHeader,
|
|
545
532
|
message: interfaceOptions.message,
|
|
546
533
|
multiple,
|
|
547
534
|
value,
|
|
548
|
-
options,
|
|
535
|
+
options: this.createOverlaySelectOptions(this.childOpts, value),
|
|
549
536
|
} });
|
|
550
537
|
/**
|
|
551
538
|
* Workaround for Stencil to autodefine
|
|
@@ -562,9 +549,9 @@ export class Select {
|
|
|
562
549
|
return popoverController.create(popoverOpts);
|
|
563
550
|
}
|
|
564
551
|
async openActionSheet() {
|
|
565
|
-
const
|
|
552
|
+
const mode = getIonMode(this);
|
|
566
553
|
const interfaceOptions = this.interfaceOptions;
|
|
567
|
-
const actionSheetOpts = Object.assign(Object.assign({
|
|
554
|
+
const actionSheetOpts = Object.assign(Object.assign({ mode }, interfaceOptions), { buttons: this.createActionSheetButtons(this.childOpts, this.value), cssClass: ['select-action-sheet', interfaceOptions.cssClass] });
|
|
568
555
|
/**
|
|
569
556
|
* Workaround for Stencil to autodefine
|
|
570
557
|
* ion-action-sheet when
|
|
@@ -581,8 +568,8 @@ export class Select {
|
|
|
581
568
|
async openAlert() {
|
|
582
569
|
const interfaceOptions = this.interfaceOptions;
|
|
583
570
|
const inputType = this.multiple ? 'checkbox' : 'radio';
|
|
584
|
-
const
|
|
585
|
-
const alertOpts = Object.assign(Object.assign({
|
|
571
|
+
const mode = getIonMode(this);
|
|
572
|
+
const alertOpts = Object.assign(Object.assign({ mode }, interfaceOptions), { header: interfaceOptions.header ? interfaceOptions.header : this.labelText, inputs: this.createAlertInputs(this.childOpts, inputType, this.value), buttons: [
|
|
586
573
|
{
|
|
587
574
|
text: this.cancelText,
|
|
588
575
|
role: 'cancel',
|
|
@@ -616,11 +603,10 @@ export class Select {
|
|
|
616
603
|
}
|
|
617
604
|
openModal() {
|
|
618
605
|
const { multiple, value, interfaceOptions } = this;
|
|
619
|
-
const
|
|
620
|
-
const modalOpts = Object.assign(Object.assign({}, interfaceOptions), { mode
|
|
606
|
+
const mode = getIonMode(this);
|
|
607
|
+
const modalOpts = Object.assign(Object.assign({}, interfaceOptions), { mode, cssClass: ['select-modal', interfaceOptions.cssClass], component: 'ion-select-modal', componentProps: {
|
|
621
608
|
header: interfaceOptions.header,
|
|
622
609
|
cancelText: this.cancelText,
|
|
623
|
-
cancelIcon: this.cancelIcon,
|
|
624
610
|
multiple,
|
|
625
611
|
value,
|
|
626
612
|
options: this.createOverlaySelectOptions(this.childOpts, value),
|
|
@@ -673,18 +659,12 @@ export class Select {
|
|
|
673
659
|
}
|
|
674
660
|
return;
|
|
675
661
|
}
|
|
676
|
-
|
|
677
|
-
* Returns the text to display in the select based on the selected value.
|
|
678
|
-
*
|
|
679
|
-
* @param useHTML If `true`, the returned text will include any custom HTML content from the selected option. If `false`, the returned text will be plain text without any HTML. Defaults to `false`.
|
|
680
|
-
* @returns The text to display in the select, either with or without HTML based on the `useHTML` parameter.
|
|
681
|
-
*/
|
|
682
|
-
getText(useHTML = false) {
|
|
662
|
+
getText() {
|
|
683
663
|
const selectedText = this.selectedText;
|
|
684
664
|
if (selectedText != null && selectedText !== '') {
|
|
685
665
|
return selectedText;
|
|
686
666
|
}
|
|
687
|
-
return generateText(this.childOpts, this.value, this.compareWith
|
|
667
|
+
return generateText(this.childOpts, this.value, this.compareWith);
|
|
688
668
|
}
|
|
689
669
|
setFocus() {
|
|
690
670
|
if (this.focusEl) {
|
|
@@ -698,18 +678,6 @@ export class Select {
|
|
|
698
678
|
};
|
|
699
679
|
this.ionStyle.emit(style);
|
|
700
680
|
}
|
|
701
|
-
getSize() {
|
|
702
|
-
const theme = getIonTheme(this);
|
|
703
|
-
const { size } = this;
|
|
704
|
-
// TODO(ROU-11370): Remove theme check when sizes are defined for all themes.
|
|
705
|
-
if (theme !== 'ionic') {
|
|
706
|
-
return undefined;
|
|
707
|
-
}
|
|
708
|
-
if (size === undefined) {
|
|
709
|
-
return 'medium';
|
|
710
|
-
}
|
|
711
|
-
return size;
|
|
712
|
-
}
|
|
713
681
|
renderLabel() {
|
|
714
682
|
const { label } = this;
|
|
715
683
|
return (h("div", { class: {
|
|
@@ -742,8 +710,8 @@ export class Select {
|
|
|
742
710
|
* when fill="outline".
|
|
743
711
|
*/
|
|
744
712
|
renderLabelContainer() {
|
|
745
|
-
const
|
|
746
|
-
const hasOutlineFill =
|
|
713
|
+
const mode = getIonMode(this);
|
|
714
|
+
const hasOutlineFill = mode === 'md' && this.fill === 'outline';
|
|
747
715
|
if (hasOutlineFill) {
|
|
748
716
|
/**
|
|
749
717
|
* The outline fill has a special outline
|
|
@@ -766,47 +734,6 @@ export class Select {
|
|
|
766
734
|
*/
|
|
767
735
|
return this.renderLabel();
|
|
768
736
|
}
|
|
769
|
-
/**
|
|
770
|
-
* Wraps text nodes in the select text with span elements
|
|
771
|
-
* so spacing can be added between elements without
|
|
772
|
-
* changing the display to prevent losing the ellipses
|
|
773
|
-
* behavior.
|
|
774
|
-
*
|
|
775
|
-
* Only wraps when the string contains HTML elements
|
|
776
|
-
* alongside text.
|
|
777
|
-
*/
|
|
778
|
-
wrapSelectTextNodes(html) {
|
|
779
|
-
const temp = document.createElement('div');
|
|
780
|
-
temp.innerHTML = html;
|
|
781
|
-
const hasElements = Array.from(temp.childNodes).some((n) => n.nodeType === Node.ELEMENT_NODE);
|
|
782
|
-
// Return the plain text
|
|
783
|
-
if (!hasElements) {
|
|
784
|
-
return html;
|
|
785
|
-
}
|
|
786
|
-
Array.from(temp.childNodes).forEach((node) => {
|
|
787
|
-
var _a, _b, _c, _d;
|
|
788
|
-
if (node.nodeType === Node.TEXT_NODE && ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim())) {
|
|
789
|
-
const text = node.textContent;
|
|
790
|
-
/**
|
|
791
|
-
* Split comma separator from the text content
|
|
792
|
-
* e.g., ", Bacon" becomes ", " text node + <span>Bacon</span>.
|
|
793
|
-
*/
|
|
794
|
-
const commaMatch = text.match(/^(,\s*)(.*)/);
|
|
795
|
-
if (commaMatch) {
|
|
796
|
-
const commaNode = document.createTextNode(commaMatch[1]);
|
|
797
|
-
const wrapper = document.createElement('span');
|
|
798
|
-
wrapper.textContent = commaMatch[2];
|
|
799
|
-
(_b = node.parentNode) === null || _b === void 0 ? void 0 : _b.replaceChild(wrapper, node);
|
|
800
|
-
(_c = wrapper.parentNode) === null || _c === void 0 ? void 0 : _c.insertBefore(commaNode, wrapper);
|
|
801
|
-
return;
|
|
802
|
-
}
|
|
803
|
-
const wrapper = document.createElement('span');
|
|
804
|
-
(_d = node.parentNode) === null || _d === void 0 ? void 0 : _d.replaceChild(wrapper, node);
|
|
805
|
-
wrapper.appendChild(node);
|
|
806
|
-
}
|
|
807
|
-
});
|
|
808
|
-
return temp.innerHTML;
|
|
809
|
-
}
|
|
810
737
|
/**
|
|
811
738
|
* Renders either the placeholder
|
|
812
739
|
* or the selected values based on
|
|
@@ -814,7 +741,7 @@ export class Select {
|
|
|
814
741
|
*/
|
|
815
742
|
renderSelectText() {
|
|
816
743
|
const { placeholder } = this;
|
|
817
|
-
const displayValue = this.getText(
|
|
744
|
+
const displayValue = this.getText();
|
|
818
745
|
let addPlaceholderClass = false;
|
|
819
746
|
let selectText = displayValue;
|
|
820
747
|
if (selectText === '' && placeholder !== undefined) {
|
|
@@ -826,10 +753,6 @@ export class Select {
|
|
|
826
753
|
'select-placeholder': addPlaceholderClass,
|
|
827
754
|
};
|
|
828
755
|
const textPart = addPlaceholderClass ? 'placeholder' : 'text';
|
|
829
|
-
if (this.customHTMLEnabled) {
|
|
830
|
-
const wrapped = this.wrapSelectTextNodes(selectText);
|
|
831
|
-
return h("div", { "aria-hidden": "true", class: selectTextClasses, part: textPart, innerHTML: wrapped });
|
|
832
|
-
}
|
|
833
756
|
return (h("div", { "aria-hidden": "true", class: selectTextClasses, part: textPart }, selectText));
|
|
834
757
|
}
|
|
835
758
|
/**
|
|
@@ -837,17 +760,21 @@ export class Select {
|
|
|
837
760
|
* next to the select text.
|
|
838
761
|
*/
|
|
839
762
|
renderSelectIcon() {
|
|
840
|
-
const
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
763
|
+
const mode = getIonMode(this);
|
|
764
|
+
const { isExpanded, toggleIcon, expandedIcon } = this;
|
|
765
|
+
let icon;
|
|
766
|
+
if (isExpanded && expandedIcon !== undefined) {
|
|
767
|
+
icon = expandedIcon;
|
|
768
|
+
}
|
|
769
|
+
else {
|
|
770
|
+
const defaultIcon = mode === 'ios' ? chevronExpand : caretDownSharp;
|
|
771
|
+
icon = toggleIcon !== null && toggleIcon !== void 0 ? toggleIcon : defaultIcon;
|
|
844
772
|
}
|
|
845
773
|
return h("ion-icon", { class: "select-icon", part: "icon", "aria-hidden": "true", icon: icon });
|
|
846
774
|
}
|
|
847
775
|
get ariaLabel() {
|
|
848
776
|
var _a;
|
|
849
777
|
const { placeholder, inheritedAttributes } = this;
|
|
850
|
-
// Get the plain text from the selected text
|
|
851
778
|
const displayValue = this.getText();
|
|
852
779
|
// The aria label should be preferred over visible text if both are specified
|
|
853
780
|
const definedLabel = (_a = inheritedAttributes['aria-label']) !== null && _a !== void 0 ? _a : this.labelText;
|
|
@@ -876,63 +803,6 @@ export class Select {
|
|
|
876
803
|
const { disabled, inputId, isExpanded, required } = this;
|
|
877
804
|
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) }));
|
|
878
805
|
}
|
|
879
|
-
getShape() {
|
|
880
|
-
const theme = getIonTheme(this);
|
|
881
|
-
const { shape } = this;
|
|
882
|
-
// TODO(ROU-11366): Remove theme check when shapes are defined for all themes.
|
|
883
|
-
if (theme === 'ionic' && shape === undefined) {
|
|
884
|
-
return 'round';
|
|
885
|
-
}
|
|
886
|
-
return shape;
|
|
887
|
-
}
|
|
888
|
-
/**
|
|
889
|
-
* Get the icon to use for the expand icon.
|
|
890
|
-
* If an icon is set on the component, use that.
|
|
891
|
-
* Otherwise, use the icon set in the config.
|
|
892
|
-
* If no icon is set in the config, use the default icon.
|
|
893
|
-
*/
|
|
894
|
-
get selectExpandedIcon() {
|
|
895
|
-
// Return the expandedIcon or toggleIcon if either is explicitly set
|
|
896
|
-
if (this.expandedIcon != null) {
|
|
897
|
-
return this.expandedIcon;
|
|
898
|
-
}
|
|
899
|
-
else if (this.toggleIcon != null) {
|
|
900
|
-
return this.toggleIcon;
|
|
901
|
-
}
|
|
902
|
-
// Determine the theme and map to default icons
|
|
903
|
-
const theme = getIonTheme(this);
|
|
904
|
-
const defaultIcons = {
|
|
905
|
-
ios: chevronExpand,
|
|
906
|
-
ionic: caretDownRegular,
|
|
907
|
-
md: caretDownSharp,
|
|
908
|
-
};
|
|
909
|
-
// Get the default icon based on the theme, falling back to 'md' icon if necessary
|
|
910
|
-
const defaultIcon = defaultIcons[theme] || defaultIcons.md;
|
|
911
|
-
// Return the configured select expanded icon or the default icon
|
|
912
|
-
return config.get('selectExpandedIcon', defaultIcon);
|
|
913
|
-
}
|
|
914
|
-
/**
|
|
915
|
-
* Get the icon to use for the collapsed icon.
|
|
916
|
-
* If an icon is set on the component, use that.
|
|
917
|
-
* Otherwise, use the icon set in the config.
|
|
918
|
-
* If no icon is set in the config, use the default icon.
|
|
919
|
-
*/
|
|
920
|
-
get selectCollapsedIcon() {
|
|
921
|
-
// Return the toggleIcon if it is explicitly set
|
|
922
|
-
if (this.toggleIcon) {
|
|
923
|
-
return this.toggleIcon;
|
|
924
|
-
}
|
|
925
|
-
// Determine the theme and map to default icons
|
|
926
|
-
const theme = getIonTheme(this);
|
|
927
|
-
const defaultIcons = {
|
|
928
|
-
ios: chevronExpand,
|
|
929
|
-
ionic: caretDownRegular,
|
|
930
|
-
md: caretDownSharp,
|
|
931
|
-
};
|
|
932
|
-
// Get the default icon based on the theme, falling back to 'md' icon if necessary
|
|
933
|
-
const defaultIcon = defaultIcons[theme] || defaultIcons.md;
|
|
934
|
-
return config.get('selectCollapsedIcon', defaultIcon);
|
|
935
|
-
}
|
|
936
806
|
getHintTextId() {
|
|
937
807
|
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
938
808
|
if (isInvalid && errorText) {
|
|
@@ -970,17 +840,13 @@ export class Select {
|
|
|
970
840
|
return (h("div", { class: "select-bottom", part: "bottom" }, this.renderHintText()));
|
|
971
841
|
}
|
|
972
842
|
render() {
|
|
973
|
-
const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill, name, value, hasFocus, } = this;
|
|
974
|
-
const
|
|
975
|
-
const shape = this.getShape();
|
|
843
|
+
const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill, shape, name, value, hasFocus, } = this;
|
|
844
|
+
const mode = getIonMode(this);
|
|
976
845
|
const hasFloatingOrStackedLabel = labelPlacement === 'floating' || labelPlacement === 'stacked';
|
|
977
|
-
const shouldRenderOuterIcon = theme !== 'ionic' && hasFloatingOrStackedLabel;
|
|
978
|
-
const shouldRenderInnerIcon = theme === 'ionic' || !hasFloatingOrStackedLabel;
|
|
979
846
|
const justifyEnabled = !hasFloatingOrStackedLabel && justify !== undefined;
|
|
980
847
|
const rtl = isRTL(el) ? 'rtl' : 'ltr';
|
|
981
848
|
const inItem = hostContext('ion-item', this.el);
|
|
982
|
-
const
|
|
983
|
-
const shouldRenderHighlight = theme === 'md' && fill !== 'outline' && !inItem;
|
|
849
|
+
const shouldRenderHighlight = mode === 'md' && fill !== 'outline' && !inItem;
|
|
984
850
|
const hasValue = this.hasValue();
|
|
985
851
|
const hasStartEndSlots = el.querySelector('[slot="start"], [slot="end"]') !== null;
|
|
986
852
|
renderHiddenInput(true, el, name, parseValue(value), disabled);
|
|
@@ -1002,8 +868,8 @@ export class Select {
|
|
|
1002
868
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
1003
869
|
*/
|
|
1004
870
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
|
|
1005
|
-
return (h(Host, { key: '
|
|
1006
|
-
[
|
|
871
|
+
return (h(Host, { key: '2c141ef1b6983b464118e8ed192739dfca9d095a', onClick: this.onClick, class: createColorClasses(this.color, {
|
|
872
|
+
[mode]: true,
|
|
1007
873
|
'in-item': inItem,
|
|
1008
874
|
'in-item-color': hostContext('ion-item.ion-color', el),
|
|
1009
875
|
'select-disabled': disabled,
|
|
@@ -1020,33 +886,20 @@ export class Select {
|
|
|
1020
886
|
[`select-justify-${justify}`]: justifyEnabled,
|
|
1021
887
|
[`select-shape-${shape}`]: shape !== undefined,
|
|
1022
888
|
[`select-label-placement-${labelPlacement}`]: true,
|
|
1023
|
-
|
|
1024
|
-
}) }, h("label", { key: '09f84e92cec1f79d4563d5f27edd7f71266446b8', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), h("div", { key: '448be6befb0d4a2c0be0b31d9fb970c4bf86e004', class: "select-wrapper-inner", part: "inner" },
|
|
1025
|
-
/**
|
|
1026
|
-
* For the ionic theme, we render the outline container here
|
|
1027
|
-
* instead of higher up, so it can be positioned relative to
|
|
1028
|
-
* the native wrapper instead of the <label> element or the
|
|
1029
|
-
* entire component. This allows the label text to be positioned
|
|
1030
|
-
* above the outline, while staying within the bounds of the
|
|
1031
|
-
* <label> element, ensuring that clicking the label text
|
|
1032
|
-
* focuses the select.
|
|
1033
|
-
*/
|
|
1034
|
-
theme === 'ionic' && fill === 'outline' && h("div", { key: '5304fa8c9eb2f8a048cd242696aad6bcd66ffa71', class: "select-outline" }), h("slot", { key: '6103312fc0549a71b395e550472c489cd63e50cf', name: "start" }), h("div", { key: 'c37d9c7f6087b522b424b28aaa711f7682468429', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: '4e7228f7911e5b85b60bdba483506845b2df9f58', name: "end" }), shouldRenderInnerIcon && this.renderSelectIcon()), shouldRenderOuterIcon && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: '9c4a369969d2653a553e667e544928e9341dbb51', class: "select-highlight" })), this.renderBottomContent()));
|
|
889
|
+
}) }, h("label", { key: 'fa1889b325387da10d1e5fa865aef128bc31aee6', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), h("div", { key: 'e31f4ae38af01dbe3a7551e9e5dca2650ae42ef5', class: "select-wrapper-inner", part: "inner" }, h("slot", { key: '623916631f44446fcf2c1df64788ce530964afea', name: "start" }), h("div", { key: 'cbd2298a7c6666ce6b4443b3967195f96558861c', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: 'ee8c2a236c7f120988f5bab17397204f1b374b57', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: '951566d0da3aea0be4921b2951207765b089a7f3', class: "select-highlight" })), this.renderBottomContent()));
|
|
1035
890
|
}
|
|
1036
891
|
static get is() { return "ion-select"; }
|
|
1037
892
|
static get encapsulation() { return "shadow"; }
|
|
1038
893
|
static get originalStyleUrls() {
|
|
1039
894
|
return {
|
|
1040
895
|
"ios": ["select.ios.scss"],
|
|
1041
|
-
"md": ["select.md.scss"]
|
|
1042
|
-
"ionic": ["select.ionic.scss"]
|
|
896
|
+
"md": ["select.md.scss"]
|
|
1043
897
|
};
|
|
1044
898
|
}
|
|
1045
899
|
static get styleUrls() {
|
|
1046
900
|
return {
|
|
1047
901
|
"ios": ["select.ios.css"],
|
|
1048
|
-
"md": ["select.md.css"]
|
|
1049
|
-
"ionic": ["select.ionic.css"]
|
|
902
|
+
"md": ["select.md.css"]
|
|
1050
903
|
};
|
|
1051
904
|
}
|
|
1052
905
|
static get properties() {
|
|
@@ -1071,26 +924,6 @@ export class Select {
|
|
|
1071
924
|
"attribute": "cancel-text",
|
|
1072
925
|
"defaultValue": "'Cancel'"
|
|
1073
926
|
},
|
|
1074
|
-
"cancelIcon": {
|
|
1075
|
-
"type": "boolean",
|
|
1076
|
-
"mutable": false,
|
|
1077
|
-
"complexType": {
|
|
1078
|
-
"original": "boolean",
|
|
1079
|
-
"resolved": "boolean",
|
|
1080
|
-
"references": {}
|
|
1081
|
-
},
|
|
1082
|
-
"required": false,
|
|
1083
|
-
"optional": false,
|
|
1084
|
-
"docs": {
|
|
1085
|
-
"tags": [],
|
|
1086
|
-
"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."
|
|
1087
|
-
},
|
|
1088
|
-
"getter": false,
|
|
1089
|
-
"setter": false,
|
|
1090
|
-
"reflect": false,
|
|
1091
|
-
"attribute": "cancel-icon",
|
|
1092
|
-
"defaultValue": "false"
|
|
1093
|
-
},
|
|
1094
927
|
"color": {
|
|
1095
928
|
"type": "string",
|
|
1096
929
|
"mutable": false,
|
|
@@ -1175,7 +1008,7 @@ export class Select {
|
|
|
1175
1008
|
"optional": true,
|
|
1176
1009
|
"docs": {
|
|
1177
1010
|
"tags": [],
|
|
1178
|
-
"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
|
|
1011
|
+
"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."
|
|
1179
1012
|
},
|
|
1180
1013
|
"getter": false,
|
|
1181
1014
|
"setter": false,
|
|
@@ -1435,7 +1268,7 @@ export class Select {
|
|
|
1435
1268
|
"optional": true,
|
|
1436
1269
|
"docs": {
|
|
1437
1270
|
"tags": [],
|
|
1438
|
-
"text": "The toggle icon to use. Defaults to
|
|
1271
|
+
"text": "The toggle icon to use. Defaults to `chevronExpand` for `ios` mode,\nor `caretDownSharp` for `md` mode."
|
|
1439
1272
|
},
|
|
1440
1273
|
"getter": false,
|
|
1441
1274
|
"setter": false,
|
|
@@ -1454,89 +1287,70 @@ export class Select {
|
|
|
1454
1287
|
"optional": true,
|
|
1455
1288
|
"docs": {
|
|
1456
1289
|
"tags": [],
|
|
1457
|
-
"text": "The toggle icon to show when the select is open. If defined, the icon\nrotation behavior in
|
|
1290
|
+
"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."
|
|
1458
1291
|
},
|
|
1459
1292
|
"getter": false,
|
|
1460
1293
|
"setter": false,
|
|
1461
1294
|
"reflect": false,
|
|
1462
1295
|
"attribute": "expanded-icon"
|
|
1463
1296
|
},
|
|
1464
|
-
"required": {
|
|
1465
|
-
"type": "boolean",
|
|
1466
|
-
"mutable": false,
|
|
1467
|
-
"complexType": {
|
|
1468
|
-
"original": "boolean",
|
|
1469
|
-
"resolved": "boolean",
|
|
1470
|
-
"references": {}
|
|
1471
|
-
},
|
|
1472
|
-
"required": false,
|
|
1473
|
-
"optional": false,
|
|
1474
|
-
"docs": {
|
|
1475
|
-
"tags": [],
|
|
1476
|
-
"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."
|
|
1477
|
-
},
|
|
1478
|
-
"getter": false,
|
|
1479
|
-
"setter": false,
|
|
1480
|
-
"reflect": false,
|
|
1481
|
-
"attribute": "required",
|
|
1482
|
-
"defaultValue": "false"
|
|
1483
|
-
},
|
|
1484
1297
|
"shape": {
|
|
1485
1298
|
"type": "string",
|
|
1486
1299
|
"mutable": false,
|
|
1487
1300
|
"complexType": {
|
|
1488
|
-
"original": "'
|
|
1489
|
-
"resolved": "\"
|
|
1301
|
+
"original": "'round'",
|
|
1302
|
+
"resolved": "\"round\" | undefined",
|
|
1490
1303
|
"references": {}
|
|
1491
1304
|
},
|
|
1492
1305
|
"required": false,
|
|
1493
1306
|
"optional": true,
|
|
1494
1307
|
"docs": {
|
|
1495
1308
|
"tags": [],
|
|
1496
|
-
"text": "
|
|
1309
|
+
"text": "The shape of the select. If \"round\" it will have an increased border radius."
|
|
1497
1310
|
},
|
|
1498
1311
|
"getter": false,
|
|
1499
1312
|
"setter": false,
|
|
1500
1313
|
"reflect": false,
|
|
1501
1314
|
"attribute": "shape"
|
|
1502
1315
|
},
|
|
1503
|
-
"
|
|
1504
|
-
"type": "
|
|
1505
|
-
"mutable":
|
|
1316
|
+
"value": {
|
|
1317
|
+
"type": "any",
|
|
1318
|
+
"mutable": true,
|
|
1506
1319
|
"complexType": {
|
|
1507
|
-
"original": "
|
|
1508
|
-
"resolved": "
|
|
1320
|
+
"original": "any | null",
|
|
1321
|
+
"resolved": "any",
|
|
1509
1322
|
"references": {}
|
|
1510
1323
|
},
|
|
1511
1324
|
"required": false,
|
|
1512
1325
|
"optional": true,
|
|
1513
1326
|
"docs": {
|
|
1514
1327
|
"tags": [],
|
|
1515
|
-
"text": "The
|
|
1328
|
+
"text": "The value of the select."
|
|
1516
1329
|
},
|
|
1517
1330
|
"getter": false,
|
|
1518
1331
|
"setter": false,
|
|
1519
1332
|
"reflect": false,
|
|
1520
|
-
"attribute": "
|
|
1333
|
+
"attribute": "value"
|
|
1521
1334
|
},
|
|
1522
|
-
"
|
|
1523
|
-
"type": "
|
|
1524
|
-
"mutable":
|
|
1335
|
+
"required": {
|
|
1336
|
+
"type": "boolean",
|
|
1337
|
+
"mutable": false,
|
|
1525
1338
|
"complexType": {
|
|
1526
|
-
"original": "
|
|
1527
|
-
"resolved": "
|
|
1339
|
+
"original": "boolean",
|
|
1340
|
+
"resolved": "boolean",
|
|
1528
1341
|
"references": {}
|
|
1529
1342
|
},
|
|
1530
1343
|
"required": false,
|
|
1531
|
-
"optional":
|
|
1344
|
+
"optional": false,
|
|
1532
1345
|
"docs": {
|
|
1533
1346
|
"tags": [],
|
|
1534
|
-
"text": "
|
|
1347
|
+
"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."
|
|
1535
1348
|
},
|
|
1536
1349
|
"getter": false,
|
|
1537
1350
|
"setter": false,
|
|
1538
1351
|
"reflect": false,
|
|
1539
|
-
"attribute": "
|
|
1352
|
+
"attribute": "required",
|
|
1353
|
+
"defaultValue": "false"
|
|
1540
1354
|
}
|
|
1541
1355
|
};
|
|
1542
1356
|
}
|
|
@@ -1732,176 +1546,25 @@ const parseValue = (value) => {
|
|
|
1732
1546
|
}
|
|
1733
1547
|
return value.toString();
|
|
1734
1548
|
};
|
|
1735
|
-
const generateText = (opts, value, compareWith
|
|
1549
|
+
const generateText = (opts, value, compareWith) => {
|
|
1736
1550
|
if (value === undefined) {
|
|
1737
1551
|
return '';
|
|
1738
1552
|
}
|
|
1739
1553
|
if (Array.isArray(value)) {
|
|
1740
1554
|
return value
|
|
1741
|
-
.map((v) => textForValue(opts, v, compareWith
|
|
1555
|
+
.map((v) => textForValue(opts, v, compareWith))
|
|
1742
1556
|
.filter((opt) => opt !== null)
|
|
1743
1557
|
.join(', ');
|
|
1744
1558
|
}
|
|
1745
1559
|
else {
|
|
1746
|
-
return textForValue(opts, value, compareWith
|
|
1560
|
+
return textForValue(opts, value, compareWith) || '';
|
|
1747
1561
|
}
|
|
1748
1562
|
};
|
|
1749
|
-
|
|
1750
|
-
* Returns the display text for a given value from the list of options.
|
|
1751
|
-
* When `useHTML` is true, returns sanitized HTML for the select text.
|
|
1752
|
-
* When `useHTML` is false, returns plain text for aria-label and other
|
|
1753
|
-
* text-only contexts.
|
|
1754
|
-
*
|
|
1755
|
-
* @param opts - The list of ion-select-option elements.
|
|
1756
|
-
* @param value - The value to find the matching option for.
|
|
1757
|
-
* @param compareWith - Custom comparison function or property name.
|
|
1758
|
-
* @param useHTML - If true, returns HTML string. If false, returns plain text.
|
|
1759
|
-
*/
|
|
1760
|
-
const textForValue = (opts, value, compareWith, useHTML = false) => {
|
|
1563
|
+
const textForValue = (opts, value, compareWith) => {
|
|
1761
1564
|
const selectOpt = opts.find((opt) => {
|
|
1762
1565
|
return compareOptions(value, getOptionValue(opt), compareWith);
|
|
1763
1566
|
});
|
|
1764
|
-
|
|
1765
|
-
if (!selectOpt) {
|
|
1766
|
-
return null;
|
|
1767
|
-
}
|
|
1768
|
-
// Return sanitized HTML for the select text
|
|
1769
|
-
if (customHTMLEnabled && useHTML) {
|
|
1770
|
-
return getOptionContent(selectOpt, undefined, true);
|
|
1771
|
-
}
|
|
1772
|
-
/**
|
|
1773
|
-
* When custom HTML is enabled, extract only the default slot content.
|
|
1774
|
-
* This ensures aria-label and other text-only contexts read only
|
|
1775
|
-
* the relevant option text.
|
|
1776
|
-
*/
|
|
1777
|
-
if (customHTMLEnabled) {
|
|
1778
|
-
const content = getOptionContent(selectOpt);
|
|
1779
|
-
if (typeof content === 'string') {
|
|
1780
|
-
return content;
|
|
1781
|
-
}
|
|
1782
|
-
/**
|
|
1783
|
-
* Elements were found in the default slot, extract and concatenate
|
|
1784
|
-
* their text content while trimming whitespace.
|
|
1785
|
-
*/
|
|
1786
|
-
if (content) {
|
|
1787
|
-
const texts = Array.from(content.childNodes)
|
|
1788
|
-
.map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); })
|
|
1789
|
-
.filter((t) => t);
|
|
1790
|
-
return texts.join(' ') || null;
|
|
1791
|
-
}
|
|
1792
|
-
// Empty option
|
|
1793
|
-
return null;
|
|
1794
|
-
}
|
|
1795
|
-
return getDefaultSlotPlainText(selectOpt);
|
|
1796
|
-
};
|
|
1797
|
-
/**
|
|
1798
|
-
* Trims whitespace from all text nodes within a DOM tree.
|
|
1799
|
-
* This prevents invisible layout shifts and unwanted gaps between
|
|
1800
|
-
* elements when HTML content is injected via innerHTML or cloneNode,
|
|
1801
|
-
* as browsers preserve whitespace (tabs, newlines, spaces) from
|
|
1802
|
-
* the original source markup.
|
|
1803
|
-
*
|
|
1804
|
-
* @param node The root node to start trimming text nodes from.
|
|
1805
|
-
*/
|
|
1806
|
-
const trimTextNodes = (node) => {
|
|
1807
|
-
node.childNodes.forEach((child) => {
|
|
1808
|
-
var _a;
|
|
1809
|
-
if (child.nodeType === Node.TEXT_NODE) {
|
|
1810
|
-
child.textContent = ((_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '';
|
|
1811
|
-
}
|
|
1812
|
-
else if (child.nodeType === Node.ELEMENT_NODE) {
|
|
1813
|
-
trimTextNodes(child);
|
|
1814
|
-
}
|
|
1815
|
-
});
|
|
1816
|
-
};
|
|
1817
|
-
/**
|
|
1818
|
-
* Extracts and clones content from an `ion-select-option` element
|
|
1819
|
-
* for rendering within overlay interfaces or the select text when `customHTMLEnabled` is `true`.
|
|
1820
|
-
*
|
|
1821
|
-
* @param option - The `ion-select-option` element to extract content from.
|
|
1822
|
-
* @param slotName - Optional slot name to extract. If omitted, extracts the default slot content.
|
|
1823
|
-
* @param useHTML - If `true`, the returned string will include any custom HTML content. If `false`, the returned string will be plain text without any HTML.
|
|
1824
|
-
* @returns When `useHTML` is `true`, a sanitized HTML string. When `false`, a
|
|
1825
|
-
* div element containing cloned child nodes. Returns `null` if no matching
|
|
1826
|
-
* content is found.
|
|
1827
|
-
*/
|
|
1828
|
-
const getOptionContent = (option, slotName, useHTML = false) => {
|
|
1829
|
-
let nodes;
|
|
1830
|
-
if (slotName) {
|
|
1831
|
-
// Named slot: get elements with matching slot attribute
|
|
1832
|
-
nodes = Array.from(option.children).filter((el) => el.getAttribute('slot') === slotName);
|
|
1833
|
-
}
|
|
1834
|
-
else {
|
|
1835
|
-
// Default slot: get nodes without a slot attribute
|
|
1836
|
-
const defaultSlot = getOptionDefaultSlot(option) || [];
|
|
1837
|
-
nodes = defaultSlot.filter((node) => {
|
|
1838
|
-
var _a;
|
|
1839
|
-
// Exclude whitespace-only text nodes to prevent empty container returns
|
|
1840
|
-
return ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim().length) !== 0;
|
|
1841
|
-
});
|
|
1842
|
-
}
|
|
1843
|
-
if (nodes.length === 0) {
|
|
1844
|
-
return null;
|
|
1845
|
-
}
|
|
1846
|
-
// Return plain text if no elements are found
|
|
1847
|
-
if (!slotName && nodes.every((n) => n.nodeType === Node.TEXT_NODE)) {
|
|
1848
|
-
return nodes.map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); }).join(' ') || null;
|
|
1849
|
-
}
|
|
1850
|
-
// Clone each node into a temporary container
|
|
1851
|
-
const container = document.createElement('div');
|
|
1852
|
-
nodes.forEach((n) => {
|
|
1853
|
-
var _a;
|
|
1854
|
-
const clone = n.cloneNode(true);
|
|
1855
|
-
if (clone.nodeType === Node.TEXT_NODE) {
|
|
1856
|
-
clone.textContent = ((_a = clone.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '';
|
|
1857
|
-
}
|
|
1858
|
-
else {
|
|
1859
|
-
trimTextNodes(clone);
|
|
1860
|
-
}
|
|
1861
|
-
container.appendChild(clone);
|
|
1862
|
-
});
|
|
1863
|
-
if (useHTML) {
|
|
1864
|
-
return sanitizeDOMString(container.innerHTML.trim()) || null;
|
|
1865
|
-
}
|
|
1866
|
-
// Already sanitized through `renderOptionLabel`
|
|
1867
|
-
return container;
|
|
1868
|
-
};
|
|
1869
|
-
/**
|
|
1870
|
-
* Returns the child nodes that belong to the default slot of an
|
|
1871
|
-
* option element, excluding any nodes that are assigned to named
|
|
1872
|
-
* slots.
|
|
1873
|
-
*
|
|
1874
|
-
* @param option - The `ion-select-option` element to extract default-slot nodes from.
|
|
1875
|
-
* @returns An array of default slot nodes, or `null` if none are found.
|
|
1876
|
-
*/
|
|
1877
|
-
const getOptionDefaultSlot = (option) => {
|
|
1878
|
-
const defaultSlotNodes = Array.from(option.childNodes).filter((node) => {
|
|
1879
|
-
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
1880
|
-
return !node.hasAttribute('slot');
|
|
1881
|
-
}
|
|
1882
|
-
return node.nodeType === Node.TEXT_NODE;
|
|
1883
|
-
});
|
|
1884
|
-
if (defaultSlotNodes.length === 0) {
|
|
1885
|
-
return null;
|
|
1886
|
-
}
|
|
1887
|
-
return defaultSlotNodes;
|
|
1888
|
-
};
|
|
1889
|
-
/**
|
|
1890
|
-
* Extracts plain text from only the default slot of an option,
|
|
1891
|
-
* excluding content assigned to named slots (start/end).
|
|
1892
|
-
*/
|
|
1893
|
-
const getDefaultSlotPlainText = (option) => {
|
|
1894
|
-
const texts = Array.from(option.childNodes)
|
|
1895
|
-
.filter((node) => {
|
|
1896
|
-
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
1897
|
-
return !node.hasAttribute('slot');
|
|
1898
|
-
}
|
|
1899
|
-
return node.nodeType === Node.TEXT_NODE;
|
|
1900
|
-
})
|
|
1901
|
-
.filter((node) => node.nodeType === Node.TEXT_NODE)
|
|
1902
|
-
.map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); })
|
|
1903
|
-
.filter((t) => t);
|
|
1904
|
-
return texts.join(' ');
|
|
1567
|
+
return selectOpt ? selectOpt.textContent : null;
|
|
1905
1568
|
};
|
|
1906
1569
|
let selectIds = 0;
|
|
1907
1570
|
const OPTION_CLASS = 'select-interface-option';
|