@ionic/core 8.8.5 → 8.8.6-dev.11777490150.1970e4f2
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-divider.d.ts +11 -0
- package/components/ion-divider.js +4 -0
- 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-gallery.d.ts +11 -0
- package/components/ion-gallery.js +4 -0
- 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-legacy-column.js +1 -1
- package/components/ion-picker-legacy.js +1 -1
- package/components/ion-picker.js +1 -1
- package/components/ion-popover.js +1 -1
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-radio-group.js +1 -1
- package/components/ion-radio.js +1 -1
- package/components/ion-range.js +1 -1
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-ripple-effect.js +1 -1
- package/components/ion-route-redirect.js +1 -1
- package/components/ion-route.js +1 -1
- package/components/ion-router-link.js +1 -1
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-router.js +1 -1
- package/components/ion-row.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-segment-content.js +1 -1
- package/components/ion-segment-view.js +1 -1
- package/components/ion-segment.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select-option.js +1 -1
- package/components/ion-select-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-skeleton-text.js +1 -1
- package/components/ion-spinner.js +1 -1
- package/components/ion-split-pane.js +1 -1
- package/components/ion-tab-bar.js +1 -1
- package/components/ion-tab-button.js +1 -1
- package/components/ion-tab.js +1 -1
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +1 -1
- package/components/ion-textarea.js +1 -1
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-title.js +1 -1
- package/components/ion-toast.js +1 -1
- package/components/ion-toggle.js +1 -1
- package/components/ion-toolbar.js +1 -1
- package/components/p-0sa2JgYA.js +4 -0
- package/components/p-3Ni1Z654.js +4 -0
- package/{dist/ionic/p-D13Eaw-8.js → components/p-9gxM3tAr.js} +1 -1
- package/components/p-B2rpt1JV.js +4 -0
- package/components/{p-ak_d-z48.js → p-B636tzQ7.js} +1 -1
- package/components/p-B6zr9RZN.js +4 -0
- package/components/p-B71c6yUH.js +4 -0
- package/components/p-B8Oa6a_k.js +4 -0
- package/components/p-BCDEEm9n.js +4 -0
- package/components/p-BCFZKMI6.js +4 -0
- package/components/p-BDndEqui.js +4 -0
- package/components/p-BDqjX7Z_.js +4 -0
- package/components/p-BErKjY03.js +4 -0
- package/components/p-BFCM_1oE.js +4 -0
- package/components/p-BFbsici0.js +4 -0
- package/components/p-BLCuPAtN.js +4 -0
- package/components/{p-cyNmxje6.js → p-BLysWQA1.js} +1 -1
- package/components/p-BO4aickU.js +4 -0
- package/components/p-BRWWcnBq.js +4 -0
- package/components/p-BXcCGjEc.js +4 -0
- package/components/p-BYSs-jZz.js +4 -0
- package/components/p-BaPtaYEC.js +4 -0
- package/components/p-BbQGmZyu.js +4 -0
- package/components/p-BcbmT6b3.js +4 -0
- package/components/p-BeVlsaLA.js +4 -0
- package/components/p-BjW8SOqw.js +4 -0
- package/components/p-Bp__mr16.js +4 -0
- package/components/p-BqDiJgC_.js +4 -0
- package/components/p-BqImG3uk.js +4 -0
- package/components/p-BwKpO3Is.js +4 -0
- package/components/p-C00Y_WJv.js +4 -0
- package/components/p-C0U8YqYW.js +4 -0
- package/components/p-C8ktKu9j.js +4 -0
- package/components/p-CIoAIKEr.js +4 -0
- package/components/p-CKfNwyAb.js +4 -0
- package/components/p-CN-WzkJE.js +4 -0
- package/components/p-CVBkx7m1.js +4 -0
- package/components/p-Cb9imMZh.js +4 -0
- package/components/p-Cf9-xP7P.js +4 -0
- package/components/{p-Cwv-vmkN.js → p-CjSx8W-k.js} +1 -1
- package/components/p-Cmql_g3_.js +4 -0
- package/components/p-CoFqDNc5.js +4 -0
- package/components/p-CtiqM786.js +4 -0
- package/components/p-D1t981Ih.js +4 -0
- package/components/p-DAv9P_LE.js +4 -0
- package/components/p-DDw-NYxz.js +4 -0
- package/components/p-DH_9VCbD.js +4 -0
- package/components/p-DTtRWhIZ.js +4 -0
- package/components/p-DVcs-2q3.js +4 -0
- package/components/p-DXUyXgVL.js +4 -0
- package/components/p-DaJxRxSQ.js +4 -0
- package/components/p-Dhi5xtNS.js +4 -0
- package/components/p-Di5rHO3q.js +4 -0
- package/components/p-IMXp2Inn.js +4 -0
- package/components/p-TR4ubkPu.js +4 -0
- package/components/p-XegQjlzJ.js +4 -0
- package/components/p-fIOYmaqA.js +4 -0
- package/components/p-lIOqnNXn.js +4 -0
- package/{dist/ionic/p-BvFYtOdE.js → components/p-oF-CwZ0b.js} +1 -1
- package/components/p-sK-FK9CT.js +4 -0
- package/components/p-t98_NeNv.js +4 -0
- package/components/p-vCpF32Z7.js +4 -0
- package/components/p-vXpMhGrs.js +4 -0
- package/components/p-wCDzv5Q8.js +4 -0
- package/components/{p-YLXPWgVj.js → p-zWP0sUV_.js} +1 -1
- package/css/core.css +1 -1
- package/css/core.css.map +1 -1
- package/css/display.css +1 -1
- package/css/display.css.map +1 -1
- package/css/flex-utils.css +1 -1
- package/css/flex-utils.css.map +1 -1
- package/css/float-elements.css.map +1 -1
- package/css/global.bundle.css.map +1 -1
- package/css/ionic/bundle.ionic.css +1 -0
- package/css/ionic/bundle.ionic.css.map +1 -0
- package/css/ionic/core.ionic.css +1 -0
- package/css/ionic/core.ionic.css.map +1 -0
- package/css/ionic/global.bundle.ionic.css +1 -0
- package/css/ionic/global.bundle.ionic.css.map +1 -0
- package/css/ionic/ionic-swiper.ionic.css +1 -0
- package/css/ionic/ionic-swiper.ionic.css.map +1 -0
- package/css/ionic/link.ionic.css +1 -0
- package/css/ionic/link.ionic.css.map +1 -0
- package/css/ionic/structure.ionic.css +1 -0
- package/css/ionic/structure.ionic.css.map +1 -0
- package/css/ionic/typography.ionic.css +1 -0
- package/css/ionic/typography.ionic.css.map +1 -0
- package/css/ionic/utils.bundle.ionic.css +1 -0
- package/css/ionic/utils.bundle.ionic.css.map +1 -0
- 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-Dg4yiuR2.js → animation-DknMeJ3x.js} +3 -3
- package/dist/cjs/{app-globals-CLI8xCmk.js → app-globals-DtAeky3x.js} +1 -1
- package/dist/cjs/{button-active-FscMI17-.js → button-active-JoIWyYri.js} +2 -2
- package/dist/cjs/{capacitor-DmA66EwP.js → capacitor-BnRBm_ys.js} +3 -3
- package/dist/cjs/caret-down-vtVgfXIs.js +8 -0
- package/dist/cjs/caret-left-CxZXLRv5.js +8 -0
- package/dist/cjs/caret-right-CRCgv98E.js +8 -0
- package/dist/cjs/config-DWdFbSNK.js +35 -0
- package/dist/cjs/{data-BYlBjkMU.js → data-DuOuKG7I.js} +6 -6
- package/dist/cjs/{focus-visible-CCvKiLh3.js → focus-visible-BIj-I3-C.js} +24 -0
- package/dist/cjs/{framework-delegate-CRgp8o_p.js → framework-delegate-Dx9FrqAC.js} +4 -2
- package/dist/cjs/{haptic-ClPPQ_PS.js → haptic-D3Ay9mmg.js} +1 -1
- package/dist/cjs/{helpers-CxTYJdbT.js → helpers-DJYxKN5U.js} +57 -4
- package/dist/cjs/{config-BukYi_pW.js → index-BJlwOs11.js} +1 -31
- package/dist/cjs/{index-MbaBbWXk.js → index-BJrpF9T3.js} +2 -2
- package/dist/cjs/{index-CFUwM5x_.js → index-Cer2Qy4I.js} +15 -15
- package/dist/cjs/{index-DqmRDbxg.js → index-CgAbCW6L.js} +2 -0
- package/dist/cjs/{index-CqT-2gKy.js → index-CzcLEdQ5.js} +41 -4
- package/dist/cjs/{index-YcSftOMz.js → index-DMJjUhXH.js} +9 -8
- package/dist/cjs/{index-C845Ti6K.js → index-D_mPAIqF.js} +4 -4
- package/dist/cjs/index.cjs.js +16 -16
- package/dist/cjs/{input-shims-Dl5cnc_e.js → input-shims-Dn33gFln.js} +18 -17
- package/dist/cjs/{input.utils-DmeJ8dmo.js → input.utils-DnVnhWEF.js} +5 -5
- package/dist/cjs/ion-accordion_2.cjs.entry.js +61 -29
- package/dist/cjs/ion-action-sheet.cjs.entry.js +41 -22
- package/dist/cjs/ion-alert.cjs.entry.js +62 -41
- package/dist/cjs/ion-app_8.cjs.entry.js +292 -157
- package/dist/cjs/ion-avatar_3.cjs.entry.js +125 -13
- package/dist/cjs/ion-back-button.cjs.entry.js +31 -22
- package/dist/cjs/ion-backdrop.cjs.entry.js +10 -7
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +54 -18
- package/dist/cjs/ion-button_2.cjs.entry.js +59 -22
- package/dist/cjs/ion-card_5.cjs.entry.js +55 -33
- package/dist/cjs/ion-checkbox.cjs.entry.js +34 -16
- package/dist/cjs/ion-chip.cjs.entry.js +50 -9
- package/dist/cjs/ion-col_3.cjs.entry.js +56 -57
- package/dist/cjs/ion-datetime-button.cjs.entry.js +13 -9
- package/dist/cjs/ion-datetime_3.cjs.entry.js +116 -41
- package/dist/cjs/ion-divider.cjs.entry.js +51 -0
- package/dist/cjs/ion-fab_3.cjs.entry.js +44 -28
- package/dist/cjs/ion-gallery.cjs.entry.js +330 -0
- package/dist/cjs/ion-img.cjs.entry.js +8 -4
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +93 -17
- package/dist/cjs/ion-input-otp.cjs.entry.js +74 -9
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +53 -15
- package/dist/cjs/ion-input.cjs.entry.js +124 -34
- package/dist/cjs/ion-item-option_3.cjs.entry.js +186 -21
- package/dist/cjs/ion-item_8.cjs.entry.js +116 -49
- package/dist/cjs/ion-loading.cjs.entry.js +22 -19
- package/dist/cjs/ion-menu_3.cjs.entry.js +47 -29
- package/dist/cjs/ion-modal.cjs.entry.js +262 -138
- package/dist/cjs/ion-nav_2.cjs.entry.js +14 -11
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +12 -8
- package/dist/cjs/ion-picker-column.cjs.entry.js +14 -14
- package/dist/cjs/ion-picker.cjs.entry.js +10 -6
- package/dist/cjs/ion-popover.cjs.entry.js +21 -19
- package/dist/cjs/ion-progress-bar.cjs.entry.js +27 -9
- package/dist/cjs/ion-radio_2.cjs.entry.js +35 -17
- package/dist/cjs/ion-range.cjs.entry.js +20 -13
- package/dist/cjs/ion-refresher_2.cjs.entry.js +42 -23
- package/dist/cjs/ion-reorder_2.cjs.entry.js +38 -14
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +15 -7
- package/dist/cjs/ion-route_4.cjs.entry.js +10 -9
- package/dist/cjs/ion-searchbar.cjs.entry.js +137 -24
- package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment-view.cjs.entry.js +6 -3
- package/dist/cjs/ion-segment_2.cjs.entry.js +23 -16
- package/dist/cjs/ion-select-modal.cjs.entry.js +97 -40
- package/dist/cjs/ion-select_3.cjs.entry.js +453 -84
- package/dist/cjs/ion-spinner.cjs.entry.js +30 -8
- package/dist/cjs/ion-split-pane.cjs.entry.js +13 -9
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +147 -23
- package/dist/cjs/ion-tab_2.cjs.entry.js +8 -7
- package/dist/cjs/ion-text.cjs.entry.js +7 -7
- package/dist/cjs/ion-textarea.cjs.entry.js +137 -23
- package/dist/cjs/ion-toast.cjs.entry.js +70 -46
- package/dist/cjs/ion-toggle.cjs.entry.js +82 -25
- package/dist/cjs/ionic-global-CSEbHD_F.js +519 -0
- package/dist/cjs/ionic.cjs.js +4 -4
- package/dist/cjs/{ios.transition-trBiC95R.js → ios.transition-UCjoxA3D.js} +7 -5
- package/dist/cjs/{keyboard-hHzlEQpk.js → keyboard-Bhav6x-R.js} +4 -3
- package/dist/cjs/{keyboard-UuAS4D_9.js → keyboard-Dsczf-iT.js} +1 -1
- package/dist/cjs/{keyboard-controller-GXBiBRKS.js → keyboard-controller-tqGDP9SU.js} +11 -9
- package/dist/cjs/list-a-7GSA6K.js +8 -0
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-CUQECuvD.js → md.transition-CNwlchQn.js} +6 -5
- package/dist/cjs/{notch-controller-sD-lTpdc.js → notch-controller-CgtkBzy0.js} +4 -4
- package/dist/cjs/{overlays-C2jiBSNQ.js → overlays-Hci_7vw_.js} +110 -16
- package/dist/cjs/select-option-render-C7klBX2H.js +81 -0
- package/dist/cjs/{status-tap-CCJk5VgT.js → status-tap-CTY2dMsZ.js} +4 -3
- package/dist/cjs/{swipe-back-BGhTQ1CU.js → swipe-back-jJFi5KCB.js} +3 -2
- package/dist/cjs/{theme-CeDs6Hcv.js → theme-IlOsGAz7.js} +25 -1
- package/dist/cjs/validity-QmuwEptc.js +51 -0
- package/dist/cjs/x-BTF99yFH.js +8 -0
- package/dist/collection/collection-manifest.json +7 -0
- package/dist/collection/components/accordion/accordion.ionic.css +201 -0
- package/dist/collection/components/accordion/accordion.ios.css +73 -58
- package/dist/collection/components/accordion/accordion.js +41 -27
- package/dist/collection/components/accordion/accordion.md.css +67 -59
- package/dist/collection/components/accordion-group/accordion-group.ionic.css +93 -0
- package/dist/collection/components/accordion-group/accordion-group.ios.css +16 -4
- package/dist/collection/components/accordion-group/accordion-group.js +44 -8
- package/dist/collection/components/accordion-group/accordion-group.md.css +22 -4
- package/dist/collection/components/action-sheet/action-sheet.ionic.css +834 -0
- package/dist/collection/components/action-sheet/action-sheet.ios.css +102 -6
- package/dist/collection/components/action-sheet/action-sheet.js +32 -13
- package/dist/collection/components/action-sheet/action-sheet.md.css +101 -5
- package/dist/collection/components/alert/alert.ionic.css +1165 -0
- package/dist/collection/components/alert/alert.ios.css +102 -1
- package/dist/collection/components/alert/alert.js +51 -30
- package/dist/collection/components/alert/alert.md.css +102 -1
- package/dist/collection/components/app/app.js +15 -83
- package/dist/collection/components/avatar/avatar.ionic.css +391 -0
- package/dist/collection/components/avatar/avatar.ios.css +7 -33
- package/dist/collection/components/avatar/avatar.js +120 -4
- package/dist/collection/components/avatar/avatar.md.css +51 -0
- package/dist/collection/components/back-button/back-button.ios.css +60 -48
- package/dist/collection/components/back-button/back-button.js +27 -19
- package/dist/collection/components/back-button/back-button.md.css +60 -48
- package/dist/collection/components/backdrop/backdrop.ionic.css +109 -0
- package/dist/collection/components/backdrop/backdrop.ios.css +56 -19
- package/dist/collection/components/backdrop/backdrop.js +12 -6
- package/dist/collection/components/backdrop/backdrop.md.css +56 -19
- package/dist/collection/components/badge/badge.ionic.css +275 -0
- package/dist/collection/components/badge/badge.ios.css +139 -12
- package/dist/collection/components/badge/badge.js +145 -9
- package/dist/collection/components/badge/badge.md.css +123 -12
- package/dist/collection/components/breadcrumb/breadcrumb.ios.css +20 -8
- package/dist/collection/components/breadcrumb/breadcrumb.js +43 -11
- package/dist/collection/components/breadcrumb/breadcrumb.md.css +20 -8
- package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +6 -0
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +11 -9
- package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +6 -0
- package/dist/collection/components/button/button.ionic.css +646 -0
- package/dist/collection/components/button/button.ios.css +154 -46
- package/dist/collection/components/button/button.js +63 -27
- package/dist/collection/components/button/button.md.css +150 -50
- package/dist/collection/components/buttons/buttons.ionic.css +97 -0
- package/dist/collection/components/buttons/buttons.ios.css +59 -7
- package/dist/collection/components/buttons/buttons.js +15 -9
- package/dist/collection/components/buttons/buttons.md.css +55 -3
- package/dist/collection/components/card/card.ionic.css +144 -0
- package/dist/collection/components/card/card.ios.css +65 -14
- package/dist/collection/components/card/card.js +41 -10
- package/dist/collection/components/card/card.md.css +65 -14
- package/dist/collection/components/card-content/card-content.ionic.css +89 -0
- package/dist/collection/components/card-content/card-content.ios.css +20 -35
- package/dist/collection/components/card-content/card-content.js +12 -10
- package/dist/collection/components/card-content/card-content.md.css +20 -35
- package/dist/collection/components/card-header/card-header.ionic.css +85 -0
- package/dist/collection/components/card-header/card-header.ios.css +27 -15
- package/dist/collection/components/card-header/card-header.js +13 -10
- package/dist/collection/components/card-header/card-header.md.css +27 -15
- package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +144 -0
- package/dist/collection/components/card-subtitle/card-subtitle.ios.css +12 -0
- package/dist/collection/components/card-subtitle/card-subtitle.js +11 -8
- package/dist/collection/components/card-subtitle/card-subtitle.md.css +12 -0
- package/dist/collection/components/card-title/card-title.ios.css +73 -0
- package/dist/collection/components/card-title/card-title.js +11 -8
- package/dist/collection/components/card-title/card-title.md.css +73 -0
- package/dist/collection/components/checkbox/checkbox.ionic.css +539 -0
- package/dist/collection/components/checkbox/checkbox.ios.css +161 -101
- package/dist/collection/components/checkbox/checkbox.js +70 -14
- package/dist/collection/components/checkbox/checkbox.md.css +162 -102
- package/dist/collection/components/chip/chip.ionic.css +217 -0
- package/dist/collection/components/chip/chip.ios.css +67 -14
- package/dist/collection/components/chip/chip.js +108 -8
- package/dist/collection/components/chip/chip.md.css +67 -14
- package/dist/collection/components/col/col.css +192 -4
- package/dist/collection/components/col/col.js +211 -61
- package/dist/collection/components/content/content.css +8 -2
- package/dist/collection/components/content/content.js +16 -11
- package/dist/collection/components/datetime/datetime.ionic.css +703 -0
- package/dist/collection/components/datetime/datetime.ios.css +302 -106
- package/dist/collection/components/datetime/datetime.js +98 -20
- package/dist/collection/components/datetime/datetime.md.css +293 -96
- package/dist/collection/components/datetime/utils/data.js +5 -5
- package/dist/collection/components/datetime-button/datetime-button.ios.css +6 -0
- package/dist/collection/components/datetime-button/datetime-button.js +11 -8
- package/dist/collection/components/datetime-button/datetime-button.md.css +6 -0
- package/dist/collection/components/divider/divider.ionic.css +148 -0
- package/dist/collection/components/divider/divider.ios.css +87 -0
- package/dist/collection/components/divider/divider.js +94 -0
- package/dist/collection/components/divider/divider.md.css +87 -0
- package/dist/collection/components/fab/fab.css +25 -1
- package/dist/collection/components/fab/fab.js +9 -5
- package/dist/collection/components/fab-button/fab-button.ios.css +18 -6
- package/dist/collection/components/fab-button/fab-button.js +36 -21
- package/dist/collection/components/fab-button/fab-button.md.css +20 -8
- package/dist/collection/components/fab-list/fab-list.css +12 -0
- package/dist/collection/components/fab-list/fab-list.js +9 -5
- package/dist/collection/components/footer/footer.ios.css +14 -2
- package/dist/collection/components/footer/footer.js +21 -16
- package/dist/collection/components/footer/footer.md.css +12 -0
- package/dist/collection/components/gallery/gallery-interface.js +1 -0
- package/dist/collection/components/gallery/gallery.css +38 -0
- package/dist/collection/components/gallery/gallery.js +421 -0
- package/dist/collection/components/gallery/test/utils.js +100 -0
- package/dist/collection/components/grid/grid.css +12 -0
- package/dist/collection/components/grid/grid.js +9 -5
- package/dist/collection/components/header/header.ionic.css +97 -0
- package/dist/collection/components/header/header.ios.css +25 -10
- package/dist/collection/components/header/header.js +50 -19
- package/dist/collection/components/header/header.md.css +23 -8
- package/dist/collection/components/header/header.utils.js +5 -5
- package/dist/collection/components/img/img.js +8 -2
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +100 -5
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +12 -0
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +16 -10
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +12 -0
- package/dist/collection/components/input/input.ionic.css +889 -0
- package/dist/collection/components/input/input.ios.css +223 -135
- package/dist/collection/components/input/input.js +148 -37
- package/dist/collection/components/input/input.md.css +193 -207
- package/dist/collection/components/input-otp/input-otp.ionic.css +371 -0
- package/dist/collection/components/input-otp/input-otp.ios.css +105 -60
- package/dist/collection/components/input-otp/input-otp.js +73 -6
- package/dist/collection/components/input-otp/input-otp.md.css +105 -60
- package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +78 -0
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +48 -12
- package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +61 -0
- package/dist/collection/components/item/item.ionic.css +508 -0
- package/dist/collection/components/item/item.ios.css +109 -69
- package/dist/collection/components/item/item.js +51 -20
- package/dist/collection/components/item/item.md.css +120 -68
- package/dist/collection/components/item-divider/item-divider.ios.css +18 -0
- package/dist/collection/components/item-divider/item-divider.js +11 -8
- package/dist/collection/components/item-divider/item-divider.md.css +18 -0
- package/dist/collection/components/item-group/item-group.ios.css +12 -0
- package/dist/collection/components/item-group/item-group.js +13 -7
- package/dist/collection/components/item-group/item-group.md.css +12 -0
- package/dist/collection/components/item-option/item-option.ionic.css +278 -0
- package/dist/collection/components/item-option/item-option.ios.css +136 -29
- package/dist/collection/components/item-option/item-option.js +73 -9
- package/dist/collection/components/item-option/item-option.md.css +136 -29
- package/dist/collection/components/item-options/item-options.ionic.css +221 -0
- package/dist/collection/components/item-options/item-options.ios.css +77 -34
- package/dist/collection/components/item-options/item-options.js +13 -7
- package/dist/collection/components/item-options/item-options.md.css +77 -34
- package/dist/collection/components/item-sliding/item-sliding.css +6 -0
- package/dist/collection/components/item-sliding/item-sliding.js +144 -4
- package/dist/collection/components/label/label.ios.css +18 -0
- package/dist/collection/components/label/label.js +11 -8
- package/dist/collection/components/label/label.md.css +18 -0
- package/dist/collection/components/list/list.ionic.css +212 -0
- package/dist/collection/components/list/list.ios.css +54 -14
- package/dist/collection/components/list/list.js +48 -9
- package/dist/collection/components/list/list.md.css +56 -16
- package/dist/collection/components/list-header/list-header.ionic.css +190 -0
- package/dist/collection/components/list-header/list-header.ios.css +82 -38
- package/dist/collection/components/list-header/list-header.js +11 -8
- package/dist/collection/components/list-header/list-header.md.css +82 -38
- package/dist/collection/components/loading/loading.ios.css +13 -1
- package/dist/collection/components/loading/loading.js +14 -11
- package/dist/collection/components/loading/loading.md.css +13 -1
- package/dist/collection/components/menu/menu.ios.css +15 -3
- package/dist/collection/components/menu/menu.js +12 -7
- package/dist/collection/components/menu/menu.md.css +15 -3
- package/dist/collection/components/menu-button/menu-button.ionic.css +236 -0
- package/dist/collection/components/menu-button/menu-button.ios.css +48 -14
- package/dist/collection/components/menu-button/menu-button.js +26 -10
- package/dist/collection/components/menu-button/menu-button.md.css +49 -15
- package/dist/collection/components/menu-toggle/menu-toggle.js +8 -5
- package/dist/collection/components/modal/animations/ionic.enter.js +40 -0
- package/dist/collection/components/modal/animations/ionic.leave.js +28 -0
- package/dist/collection/components/modal/animations/sheet.js +8 -2
- package/dist/collection/components/modal/gestures/sheet.js +76 -10
- package/dist/collection/components/modal/modal.ionic.css +247 -0
- package/dist/collection/components/modal/modal.ios.css +178 -70
- package/dist/collection/components/modal/modal.js +50 -12
- package/dist/collection/components/modal/modal.md.css +178 -70
- package/dist/collection/components/nav/nav.css +7 -1
- package/dist/collection/components/nav/nav.js +11 -5
- package/dist/collection/components/nav-link/nav-link.js +5 -1
- package/dist/collection/components/note/note.ios.css +12 -0
- package/dist/collection/components/note/note.js +11 -8
- package/dist/collection/components/note/note.md.css +12 -0
- package/dist/collection/components/picker/picker.ios.css +15 -3
- package/dist/collection/components/picker/picker.js +8 -5
- package/dist/collection/components/picker/picker.md.css +15 -3
- package/dist/collection/components/picker-column/picker-column.css +9 -2
- package/dist/collection/components/picker-column/picker-column.js +8 -7
- package/dist/collection/components/picker-column-option/picker-column-option.ios.css +6 -0
- package/dist/collection/components/picker-column-option/picker-column-option.js +13 -7
- package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -0
- package/dist/collection/components/picker-legacy/picker.ios.css +13 -1
- package/dist/collection/components/picker-legacy/picker.js +7 -6
- package/dist/collection/components/picker-legacy/picker.md.css +13 -1
- package/dist/collection/components/picker-legacy-column/picker-column.ios.css +12 -0
- package/dist/collection/components/picker-legacy-column/picker-column.js +4 -4
- package/dist/collection/components/picker-legacy-column/picker-column.md.css +12 -0
- package/dist/collection/components/popover/popover.ionic.css +290 -0
- package/dist/collection/components/popover/popover.ios.css +29 -1
- package/dist/collection/components/popover/popover.js +18 -15
- package/dist/collection/components/popover/popover.md.css +29 -1
- package/dist/collection/components/progress-bar/progress-bar.ionic.css +287 -0
- package/dist/collection/components/progress-bar/progress-bar.ios.css +48 -17
- package/dist/collection/components/progress-bar/progress-bar.js +43 -7
- package/dist/collection/components/progress-bar/progress-bar.md.css +48 -17
- package/dist/collection/components/radio/radio.ionic.css +422 -0
- package/dist/collection/components/radio/radio.ios.css +134 -91
- package/dist/collection/components/radio/radio.js +14 -9
- package/dist/collection/components/radio/radio.md.css +134 -91
- package/dist/collection/components/radio-group/radio-group.ionic.css +119 -0
- package/dist/collection/components/radio-group/radio-group.ios.css +43 -19
- package/dist/collection/components/radio-group/radio-group.js +48 -7
- package/dist/collection/components/radio-group/radio-group.md.css +43 -19
- package/dist/collection/components/range/range.ionic.css +567 -0
- package/dist/collection/components/range/range.ios.css +128 -85
- package/dist/collection/components/range/range.js +16 -10
- package/dist/collection/components/range/range.md.css +128 -85
- package/dist/collection/components/refresher/refresher.ios.css +14 -1
- package/dist/collection/components/refresher/refresher.js +11 -8
- package/dist/collection/components/refresher/refresher.md.css +15 -2
- package/dist/collection/components/refresher-content/refresher-content.js +28 -7
- package/dist/collection/components/reorder/reorder.ios.css +6 -0
- package/dist/collection/components/reorder/reorder.js +33 -6
- package/dist/collection/components/reorder/reorder.md.css +6 -0
- package/dist/collection/components/reorder-group/reorder-group.css +6 -0
- package/dist/collection/components/reorder-group/reorder-group.js +8 -4
- package/dist/collection/components/ripple-effect/{ripple-effect.css → ripple-effect.common.css} +7 -1
- package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +215 -0
- package/dist/collection/components/ripple-effect/ripple-effect.js +14 -6
- package/dist/collection/components/route/route.js +4 -0
- package/dist/collection/components/router/router.js +4 -0
- package/dist/collection/components/router-link/router-link.css +8 -2
- package/dist/collection/components/router-link/router-link.js +9 -5
- package/dist/collection/components/router-outlet/router-outlet.css +7 -1
- package/dist/collection/components/router-outlet/router-outlet.js +6 -3
- package/dist/collection/components/row/row.css +16 -0
- package/dist/collection/components/row/row.js +9 -2
- package/dist/collection/components/searchbar/searchbar.ionic.css +626 -0
- package/dist/collection/components/searchbar/searchbar.ios.css +56 -18
- package/dist/collection/components/searchbar/searchbar.js +180 -33
- package/dist/collection/components/searchbar/searchbar.md.css +56 -18
- package/dist/collection/components/segment/segment.ionic.css +115 -0
- package/dist/collection/components/segment/segment.ios.css +45 -2
- package/dist/collection/components/segment/segment.js +11 -8
- package/dist/collection/components/segment/segment.md.css +45 -2
- package/dist/collection/components/segment-button/segment-button.ionic.css +353 -0
- package/dist/collection/components/segment-button/segment-button.ios.css +146 -105
- package/dist/collection/components/segment-button/segment-button.js +11 -8
- package/dist/collection/components/segment-button/segment-button.md.css +148 -107
- package/dist/collection/components/segment-content/segment-content.js +1 -1
- package/dist/collection/components/segment-view/segment-view.ios.css +6 -0
- package/dist/collection/components/segment-view/segment-view.js +6 -4
- package/dist/collection/components/segment-view/segment-view.md.css +6 -0
- package/dist/collection/components/select/select.ionic.css +810 -0
- package/dist/collection/components/select/select.ios.css +348 -176
- package/dist/collection/components/select/select.js +434 -66
- package/dist/collection/components/select/select.md.css +364 -178
- package/dist/collection/components/select-modal/select-modal.ionic.css +154 -0
- package/dist/collection/components/select-modal/select-modal.ios.css +95 -0
- package/dist/collection/components/select-modal/select-modal.js +109 -32
- package/dist/collection/components/select-modal/select-modal.md.css +83 -0
- package/dist/collection/components/select-option/select-option.js +32 -2
- package/dist/collection/components/select-popover/select-popover.ionic.css +499 -0
- package/dist/collection/components/select-popover/select-popover.ios.css +100 -0
- package/dist/collection/components/select-popover/select-popover.js +72 -31
- package/dist/collection/components/select-popover/select-popover.md.css +100 -0
- package/dist/collection/components/skeleton-text/skeleton-text.css +6 -0
- package/dist/collection/components/skeleton-text/skeleton-text.js +9 -5
- package/dist/collection/components/spinner/{spinner.css → spinner.ionic.css} +78 -10
- package/dist/collection/components/spinner/spinner.js +47 -6
- package/dist/collection/components/spinner/spinner.native.css +199 -0
- package/dist/collection/components/split-pane/split-pane.ios.css +20 -2
- package/dist/collection/components/split-pane/split-pane.js +15 -8
- package/dist/collection/components/split-pane/split-pane.md.css +20 -2
- package/dist/collection/components/tab/tab.js +6 -2
- package/dist/collection/components/tab-bar/tab-bar.ionic.css +227 -0
- package/dist/collection/components/tab-bar/tab-bar.ios.css +71 -43
- package/dist/collection/components/tab-bar/tab-bar.js +171 -13
- package/dist/collection/components/tab-bar/tab-bar.md.css +71 -43
- package/dist/collection/components/tab-button/tab-button.ionic.css +348 -0
- package/dist/collection/components/tab-button/tab-button.ios.css +171 -95
- package/dist/collection/components/tab-button/tab-button.js +54 -9
- package/dist/collection/components/tab-button/tab-button.md.css +137 -93
- package/dist/collection/components/tabs/tabs.css +7 -1
- package/dist/collection/components/tabs/tabs.js +4 -1
- package/dist/collection/components/text/text.css +6 -0
- package/dist/collection/components/text/text.js +7 -6
- package/dist/collection/components/textarea/textarea.ionic.css +898 -0
- package/dist/collection/components/textarea/textarea.ios.css +298 -158
- package/dist/collection/components/textarea/textarea.js +162 -24
- package/dist/collection/components/textarea/textarea.md.css +312 -159
- package/dist/collection/components/thumbnail/thumbnail.css +6 -0
- package/dist/collection/components/thumbnail/thumbnail.js +9 -2
- package/dist/collection/components/title/title.ionic.css +127 -0
- package/dist/collection/components/title/title.ios.css +32 -4
- package/dist/collection/components/title/title.js +13 -7
- package/dist/collection/components/title/title.md.css +32 -4
- package/dist/collection/components/toast/animations/utils.js +1 -1
- package/dist/collection/components/toast/toast.ionic.css +394 -0
- package/dist/collection/components/toast/toast.ios.css +84 -45
- package/dist/collection/components/toast/toast.js +76 -13
- package/dist/collection/components/toast/toast.md.css +84 -45
- package/dist/collection/components/toggle/toggle.ionic.css +508 -0
- package/dist/collection/components/toggle/toggle.ios.css +247 -131
- package/dist/collection/components/toggle/toggle.js +73 -18
- package/dist/collection/components/toggle/toggle.md.css +244 -131
- package/dist/collection/components/toolbar/test/image.svg +1 -0
- package/dist/collection/components/toolbar/toolbar.ionic.css +249 -0
- package/dist/collection/components/toolbar/toolbar.ios.css +90 -47
- package/dist/collection/components/toolbar/toolbar.js +218 -13
- package/dist/collection/components/toolbar/toolbar.md.css +90 -47
- package/dist/collection/global/ionic-global.js +241 -13
- package/dist/collection/utils/focus-trap.js +13 -2
- package/dist/collection/utils/focus-visible.js +22 -0
- package/dist/collection/utils/forms/validity.js +31 -0
- package/dist/collection/utils/framework-delegate.js +3 -1
- package/dist/collection/utils/hardware-back-button.js +15 -0
- package/dist/collection/utils/helpers.js +57 -3
- package/dist/collection/utils/keyboard/keyboard-controller.js +3 -1
- package/dist/collection/utils/media.js +1 -0
- package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
- package/dist/collection/utils/menu-controller/animations/push.js +2 -1
- package/dist/collection/utils/menu-controller/animations/reveal.js +2 -1
- package/dist/collection/utils/overlays.js +91 -6
- package/dist/collection/utils/select-option-render.js +76 -0
- package/dist/collection/utils/test/playwright/drag-element.js +3 -4
- package/dist/collection/utils/test/playwright/generator.js +48 -23
- package/dist/collection/utils/test/playwright/page/utils/goto.js +14 -5
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +26 -3
- package/dist/collection/utils/theme.js +25 -1
- package/dist/collection/utils/transition/ios.transition.js +1 -0
- package/dist/docs.json +8781 -283
- package/dist/esm/{animation-CnGMT4ji.js → animation-Cqe2x-Pt.js} +2 -2
- package/dist/esm/{app-globals-DhZjtldk.js → app-globals-Dk1rB3aE.js} +1 -1
- package/dist/esm/{button-active-BBx21brx.js → button-active-g6ZnZzDZ.js} +2 -2
- package/dist/esm/{capacitor-CFERIeaU.js → capacitor-C4lYa1nV.js} +1 -1
- package/dist/esm/caret-down-D1t981Ih.js +6 -0
- package/dist/esm/caret-left-fIOYmaqA.js +6 -0
- package/dist/esm/caret-right-BYSs-jZz.js +6 -0
- package/dist/esm/config-BwKpO3Is.js +31 -0
- package/dist/esm/{data-B9iGR5YO.js → data-BNKYavC3.js} +6 -6
- package/dist/esm/{focus-visible-BmVRXR1y.js → focus-visible-vXpMhGrs.js} +23 -1
- package/dist/esm/{framework-delegate-CyxE1S_P.js → framework-delegate-CjVwn_KZ.js} +4 -2
- package/dist/esm/{haptic-DzAMWJuk.js → haptic-_88k1V5U.js} +1 -1
- package/dist/esm/{helpers-Tl8jw6S2.js → helpers-Do7zwvM1.js} +58 -5
- package/dist/esm/{index-hW6eNZ3o.js → index-BmkLokUL.js} +2 -2
- package/dist/esm/{index-BtUdxPjv.js → index-C5t9-ciC.js} +4 -3
- package/dist/esm/{index-B-hkiOUh.js → index-CGthURny.js} +4 -4
- package/dist/esm/{index-DV3sJJW8.js → index-D2tu5BUg.js} +2 -1
- package/dist/esm/{config-TO1rZH52.js → index-D4ugF_sT.js} +2 -29
- package/dist/esm/{index-IGIE5vDm.js → index-Omi_TcwW.js} +41 -4
- package/dist/esm/{index-B2KwgBLx.js → index-hpH08p5s.js} +11 -11
- package/dist/esm/index.js +14 -14
- package/dist/esm/{input-shims-AaDhOpKN.js → input-shims-vDjCsx95.js} +7 -6
- package/dist/esm/{input.utils-Bxa_DQ7-.js → input.utils-B9Q5xHp6.js} +3 -3
- package/dist/esm/ion-accordion_2.entry.js +61 -29
- package/dist/esm/ion-action-sheet.entry.js +41 -22
- package/dist/esm/ion-alert.entry.js +61 -40
- package/dist/esm/ion-app_8.entry.js +292 -157
- package/dist/esm/ion-avatar_3.entry.js +125 -13
- package/dist/esm/ion-back-button.entry.js +31 -22
- package/dist/esm/ion-backdrop.entry.js +10 -7
- package/dist/esm/ion-breadcrumb_2.entry.js +54 -18
- package/dist/esm/ion-button_2.entry.js +59 -22
- package/dist/esm/ion-card_5.entry.js +55 -33
- package/dist/esm/ion-checkbox.entry.js +34 -16
- package/dist/esm/ion-chip.entry.js +50 -9
- package/dist/esm/ion-col_3.entry.js +56 -57
- package/dist/esm/ion-datetime-button.entry.js +13 -9
- package/dist/esm/ion-datetime_3.entry.js +116 -41
- package/dist/esm/ion-divider.entry.js +49 -0
- package/dist/esm/ion-fab_3.entry.js +44 -28
- package/dist/esm/ion-gallery.entry.js +328 -0
- package/dist/esm/ion-img.entry.js +8 -4
- package/dist/esm/ion-infinite-scroll_2.entry.js +92 -16
- package/dist/esm/ion-input-otp.entry.js +74 -9
- package/dist/esm/ion-input-password-toggle.entry.js +53 -15
- package/dist/esm/ion-input.entry.js +124 -34
- package/dist/esm/ion-item-option_3.entry.js +186 -21
- package/dist/esm/ion-item_8.entry.js +116 -49
- package/dist/esm/ion-loading.entry.js +21 -18
- package/dist/esm/ion-menu_3.entry.js +47 -29
- package/dist/esm/ion-modal.entry.js +215 -91
- package/dist/esm/ion-nav_2.entry.js +14 -11
- package/dist/esm/ion-picker-column-option.entry.js +12 -8
- package/dist/esm/ion-picker-column.entry.js +13 -13
- package/dist/esm/ion-picker.entry.js +10 -6
- package/dist/esm/ion-popover.entry.js +21 -19
- package/dist/esm/ion-progress-bar.entry.js +27 -9
- package/dist/esm/ion-radio_2.entry.js +35 -17
- package/dist/esm/ion-range.entry.js +20 -13
- package/dist/esm/ion-refresher_2.entry.js +40 -21
- package/dist/esm/ion-reorder_2.entry.js +38 -14
- package/dist/esm/ion-ripple-effect.entry.js +15 -7
- package/dist/esm/ion-route_4.entry.js +10 -9
- package/dist/esm/ion-searchbar.entry.js +137 -24
- package/dist/esm/ion-segment-content.entry.js +2 -2
- package/dist/esm/ion-segment-view.entry.js +6 -3
- package/dist/esm/ion-segment_2.entry.js +23 -16
- package/dist/esm/ion-select-modal.entry.js +97 -40
- package/dist/esm/ion-select_3.entry.js +453 -84
- package/dist/esm/ion-spinner.entry.js +30 -8
- package/dist/esm/ion-split-pane.entry.js +13 -9
- package/dist/esm/ion-tab-bar_2.entry.js +147 -23
- package/dist/esm/ion-tab_2.entry.js +8 -7
- package/dist/esm/ion-text.entry.js +7 -7
- package/dist/esm/ion-textarea.entry.js +137 -23
- package/dist/esm/ion-toast.entry.js +45 -21
- package/dist/esm/ion-toggle.entry.js +82 -25
- package/dist/esm/ionic-global-CAZb-5i-.js +508 -0
- package/dist/esm/ionic.js +5 -5
- package/dist/esm/{ios.transition--aMF-pDH.js → ios.transition-CzSncKQg.js} +7 -5
- package/dist/esm/{keyboard-CUw4ekVy.js → keyboard-Cpw6xVLJ.js} +1 -1
- package/dist/esm/{keyboard-ywgs5efA.js → keyboard-DJpS2IGK.js} +4 -3
- package/dist/esm/{keyboard-controller-BaaVITYt.js → keyboard-controller-CAc33ylR.js} +5 -3
- package/dist/esm/list-Dhi5xtNS.js +6 -0
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-BEVbfm8j.js → md.transition-DIsWqYBZ.js} +6 -5
- package/dist/esm/{notch-controller-DAcvKU57.js → notch-controller-DiBq57w8.js} +2 -2
- package/dist/esm/{overlays-F8GHPo-e.js → overlays-rwDDzEs4.js} +107 -13
- package/dist/esm/select-option-render-B2qc5ZP7.js +79 -0
- package/dist/esm/{status-tap-BfJqFSLF.js → status-tap-fYFdZg6z.js} +4 -3
- package/dist/esm/{swipe-back-BZBFwTQV.js → swipe-back-BzGqTrrq.js} +3 -2
- package/dist/esm/{theme-DiVJyqlX.js → theme-DaJxRxSQ.js} +25 -1
- package/dist/esm/validity-BjW8SOqw.js +48 -0
- package/dist/esm/x-BDqjX7Z_.js +6 -0
- package/dist/html.html-data.json +2551 -117
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-00c0bd38.entry.js +4 -0
- package/dist/ionic/p-05a30032.entry.js +4 -0
- package/dist/ionic/p-07d3388f.entry.js +4 -0
- package/dist/ionic/p-11nqcMM3.js +4 -0
- package/dist/ionic/p-139d02eb.entry.js +4 -0
- package/dist/ionic/p-15e3e8f5.entry.js +4 -0
- package/dist/ionic/p-1709b0aa.entry.js +4 -0
- package/dist/ionic/p-1c2c1869.entry.js +4 -0
- package/dist/ionic/p-1c4de46b.entry.js +4 -0
- package/dist/ionic/p-1e1c8d61.entry.js +4 -0
- package/dist/ionic/p-2311e660.entry.js +4 -0
- package/dist/ionic/p-2aa7567e.entry.js +4 -0
- package/dist/ionic/p-2ad79c23.entry.js +4 -0
- package/dist/ionic/p-2f0073af.entry.js +4 -0
- package/dist/ionic/p-37ccbee4.entry.js +4 -0
- package/dist/ionic/p-3aba19e2.entry.js +4 -0
- package/dist/ionic/p-3f79f594.entry.js +4 -0
- package/dist/ionic/p-4079cee3.entry.js +4 -0
- package/dist/ionic/p-45825c2c.entry.js +4 -0
- package/dist/ionic/p-48026d15.entry.js +4 -0
- package/dist/ionic/p-488992b6.entry.js +4 -0
- package/dist/ionic/p-4a0260e6.entry.js +4 -0
- package/dist/ionic/p-50b61fab.entry.js +4 -0
- package/dist/ionic/p-50cd2d57.entry.js +4 -0
- package/dist/ionic/p-5274f999.entry.js +4 -0
- package/dist/ionic/p-586d4270.entry.js +4 -0
- package/dist/ionic/p-68c21b2a.entry.js +4 -0
- package/dist/ionic/p-6fbead83.entry.js +4 -0
- package/dist/ionic/p-7194f6fa.entry.js +4 -0
- package/dist/ionic/p-71b6014c.entry.js +4 -0
- package/dist/ionic/p-72491468.entry.js +4 -0
- package/dist/ionic/p-7d267dc6.entry.js +4 -0
- package/dist/ionic/p-7d5057c4.entry.js +4 -0
- package/dist/ionic/p-83c693c4.entry.js +4 -0
- package/dist/ionic/p-8537b2fb.entry.js +4 -0
- package/dist/ionic/p-8f127a9c.entry.js +4 -0
- package/dist/ionic/p-8uDL7fql.js +4 -0
- package/dist/ionic/p-9d789053.entry.js +4 -0
- package/dist/ionic/p-BDqjX7Z_.js +4 -0
- package/dist/ionic/p-BYSs-jZz.js +4 -0
- package/dist/ionic/p-BjW8SOqw.js +4 -0
- package/{components/p-9VcRUwdB.js → dist/ionic/p-BsfuYVMP.js} +1 -1
- package/dist/ionic/p-BwKpO3Is.js +4 -0
- package/dist/ionic/p-Bx0bt2Ar.js +4 -0
- package/dist/ionic/p-C2mpVKI1.js +4 -0
- package/dist/ionic/p-C4uUM9DM.js +4 -0
- package/dist/ionic/p-C5zxLmJ_.js +4 -0
- package/{components/p-BS1TtEiJ.js → dist/ionic/p-C8IHbcuP.js} +1 -1
- package/dist/ionic/p-CBV-BGvD.js +4 -0
- package/dist/ionic/p-CDn0uNJA.js +4 -0
- package/dist/ionic/p-CFjI63GE.js +4 -0
- package/dist/ionic/p-CHE1xWbg.js +4 -0
- package/dist/ionic/p-CIk5QtPm.js +4 -0
- package/dist/ionic/p-CQKe4n56.js +4 -0
- package/dist/ionic/p-CVp2D--1.js +4 -0
- package/dist/ionic/p-CWJdc8f_.js +4 -0
- package/dist/ionic/p-CXqdKf1K.js +4 -0
- package/dist/ionic/p-Cb-0O4h8.js +4 -0
- package/dist/ionic/{p-CKvCXMs9.js → p-CbkICFBN.js} +1 -1
- package/dist/ionic/p-D1t981Ih.js +4 -0
- package/dist/ionic/p-D2tu5BUg.js +4 -0
- package/dist/ionic/{p-B8xlpH8p.js → p-DKWXAwlR.js} +1 -1
- package/dist/ionic/p-DaJxRxSQ.js +4 -0
- package/dist/ionic/p-Dhi5xtNS.js +4 -0
- package/dist/ionic/p-DoyDJ2X5.js +4 -0
- package/dist/ionic/p-FvDKM4Ax.js +4 -0
- package/dist/ionic/p-Omi_TcwW.js +5 -0
- package/{components/p-D13Eaw-8.js → dist/ionic/p-SJmaFQ0H.js} +1 -1
- package/dist/ionic/p-SOASChNu.js +4 -0
- package/dist/ionic/{p-DjriolRs.js → p-ZqkJDyhe.js} +1 -1
- package/dist/ionic/p-a9fb086b.entry.js +4 -0
- package/dist/ionic/p-acdc21a6.entry.js +4 -0
- package/dist/ionic/p-ae667493.entry.js +4 -0
- package/dist/ionic/p-b2fe6c1c.entry.js +4 -0
- package/dist/ionic/p-b3c9f19c.entry.js +4 -0
- package/dist/ionic/p-b653f4c2.entry.js +4 -0
- package/dist/ionic/p-bd71a4a7.entry.js +4 -0
- package/dist/ionic/p-bdfd1761.entry.js +4 -0
- package/dist/ionic/p-bf972309.entry.js +4 -0
- package/dist/ionic/p-c10fa162.entry.js +4 -0
- package/dist/ionic/p-d4ed5710.entry.js +4 -0
- package/dist/ionic/p-d6299c37.entry.js +4 -0
- package/dist/ionic/p-d976e777.entry.js +4 -0
- package/dist/ionic/p-e18d3fdb.entry.js +4 -0
- package/dist/ionic/p-e3abffbe.entry.js +4 -0
- package/dist/ionic/p-f02ba305.entry.js +4 -0
- package/dist/ionic/p-f85942f8.entry.js +4 -0
- package/dist/ionic/p-fIOYmaqA.js +4 -0
- package/dist/ionic/p-fad05840.entry.js +4 -0
- package/dist/ionic/p-qETiT38a.js +4 -0
- package/dist/ionic/p-vXpMhGrs.js +4 -0
- package/dist/types/components/accordion/accordion.d.ts +6 -3
- package/dist/types/components/accordion-group/accordion-group.d.ts +12 -1
- package/dist/types/components/action-sheet/action-sheet-interface.d.ts +3 -7
- package/dist/types/components/action-sheet/action-sheet.d.ts +3 -2
- package/dist/types/components/alert/alert-interface.d.ts +3 -7
- package/dist/types/components/alert/alert.d.ts +3 -2
- package/dist/types/components/app/app.d.ts +4 -5
- package/dist/types/components/avatar/avatar.d.ts +32 -0
- package/dist/types/components/back-button/back-button.d.ts +2 -1
- package/dist/types/components/backdrop/backdrop.d.ts +4 -0
- package/dist/types/components/badge/badge.d.ts +34 -1
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +4 -1
- package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
- package/dist/types/components/button/button.d.ts +23 -8
- package/dist/types/components/buttons/buttons.d.ts +5 -1
- package/dist/types/components/card/card.d.ts +8 -1
- package/dist/types/components/card-content/card-content.d.ts +2 -1
- package/dist/types/components/card-header/card-header.d.ts +3 -2
- package/dist/types/components/card-subtitle/card-subtitle.d.ts +2 -1
- package/dist/types/components/card-title/card-title.d.ts +2 -1
- package/dist/types/components/checkbox/checkbox.d.ts +14 -4
- package/dist/types/components/chip/chip.d.ts +26 -1
- package/dist/types/components/col/col.d.ts +52 -5
- package/dist/types/components/content/content.d.ts +3 -0
- package/dist/types/components/datetime/datetime.d.ts +26 -1
- package/dist/types/components/datetime/utils/data.d.ts +5 -5
- package/dist/types/components/datetime-button/datetime-button.d.ts +2 -1
- package/dist/types/components/divider/divider.d.ts +20 -0
- package/dist/types/components/fab/fab.d.ts +4 -0
- package/dist/types/components/fab-button/fab-button.d.ts +5 -3
- package/dist/types/components/fab-list/fab-list.d.ts +4 -0
- package/dist/types/components/footer/footer.d.ts +4 -3
- package/dist/types/components/gallery/gallery-interface.d.ts +9 -0
- package/dist/types/components/gallery/gallery.d.ts +125 -0
- package/dist/types/components/gallery/test/utils.d.ts +2 -0
- package/dist/types/components/grid/grid.d.ts +4 -0
- package/dist/types/components/header/header.d.ts +9 -3
- package/dist/types/components/header/header.utils.d.ts +3 -3
- package/dist/types/components/img/img.d.ts +3 -0
- package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +21 -0
- package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +4 -0
- package/dist/types/components/input/input.d.ts +31 -5
- package/dist/types/components/input-otp/input-otp.d.ts +37 -0
- package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +2 -0
- package/dist/types/components/item/item.d.ts +11 -4
- package/dist/types/components/item-divider/item-divider.d.ts +2 -1
- package/dist/types/components/item-group/item-group.d.ts +4 -0
- package/dist/types/components/item-option/item-option.d.ts +18 -1
- package/dist/types/components/item-options/item-options.d.ts +4 -0
- package/dist/types/components/item-sliding/item-sliding.d.ts +32 -1
- package/dist/types/components/label/label.d.ts +2 -1
- package/dist/types/components/list/list.d.ts +15 -1
- package/dist/types/components/list-header/list-header.d.ts +2 -1
- package/dist/types/components/loading/loading-interface.d.ts +2 -7
- package/dist/types/components/loading/loading.d.ts +3 -2
- package/dist/types/components/menu/menu.d.ts +3 -0
- package/dist/types/components/menu-button/menu-button.d.ts +3 -1
- package/dist/types/components/menu-toggle/menu-toggle.d.ts +3 -0
- package/dist/types/components/modal/animations/ionic.enter.d.ts +6 -0
- package/dist/types/components/modal/animations/ionic.leave.d.ts +6 -0
- package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
- package/dist/types/components/modal/modal-interface.d.ts +4 -7
- package/dist/types/components/modal/modal.d.ts +11 -1
- package/dist/types/components/nav/nav-interface.d.ts +9 -1
- package/dist/types/components/nav/nav.d.ts +5 -1
- package/dist/types/components/nav-link/nav-link.d.ts +4 -0
- package/dist/types/components/note/note.d.ts +2 -1
- package/dist/types/components/picker/picker.d.ts +2 -1
- package/dist/types/components/picker-column/picker-column.d.ts +2 -1
- package/dist/types/components/picker-column-option/picker-column-option.d.ts +4 -0
- package/dist/types/components/picker-legacy/picker.d.ts +2 -1
- package/dist/types/components/popover/popover-interface.d.ts +3 -6
- package/dist/types/components/popover/popover.d.ts +6 -5
- package/dist/types/components/progress-bar/progress-bar.d.ts +10 -1
- package/dist/types/components/radio/radio.d.ts +2 -1
- package/dist/types/components/radio-group/radio-group.d.ts +12 -0
- package/dist/types/components/range/range.d.ts +2 -1
- package/dist/types/components/refresher/refresher.d.ts +2 -1
- package/dist/types/components/refresher-content/refresher-content.d.ts +4 -0
- package/dist/types/components/reorder/reorder.d.ts +9 -0
- package/dist/types/components/reorder-group/reorder-group.d.ts +4 -0
- package/dist/types/components/ripple-effect/ripple-effect.d.ts +4 -0
- package/dist/types/components/route/route.d.ts +4 -0
- package/dist/types/components/router/router.d.ts +4 -0
- package/dist/types/components/router-link/router-link.d.ts +4 -0
- package/dist/types/components/router-outlet/router-outlet.d.ts +4 -1
- package/dist/types/components/row/row.d.ts +4 -0
- package/dist/types/components/searchbar/searchbar.d.ts +51 -9
- package/dist/types/components/segment/segment.d.ts +2 -1
- package/dist/types/components/segment-button/segment-button.d.ts +2 -1
- package/dist/types/components/select/select-interface.d.ts +23 -0
- package/dist/types/components/select/select.d.ts +66 -13
- package/dist/types/components/select-modal/select-modal.d.ts +8 -0
- package/dist/types/components/select-option/select-option.d.ts +12 -0
- package/dist/types/components/select-popover/select-popover.d.ts +3 -0
- package/dist/types/components/skeleton-text/skeleton-text.d.ts +4 -0
- package/dist/types/components/spinner/spinner.d.ts +15 -0
- package/dist/types/components/split-pane/split-pane.d.ts +4 -0
- package/dist/types/components/tab/tab.d.ts +4 -0
- package/dist/types/components/tab-bar/tab-bar.d.ts +37 -2
- package/dist/types/components/tab-button/tab-button.d.ts +12 -1
- package/dist/types/components/tabs/tabs.d.ts +3 -0
- package/dist/types/components/text/text.d.ts +2 -1
- package/dist/types/components/textarea/textarea.d.ts +53 -4
- package/dist/types/components/thumbnail/thumbnail.d.ts +4 -0
- package/dist/types/components/title/title.d.ts +4 -0
- package/dist/types/components/toast/animations/utils.d.ts +2 -2
- package/dist/types/components/toast/toast-interface.d.ts +3 -7
- package/dist/types/components/toast/toast.d.ts +19 -2
- package/dist/types/components/toggle/toggle.d.ts +15 -1
- package/dist/types/components/toolbar/toolbar.d.ts +43 -3
- package/dist/types/components.d.ts +1793 -206
- package/dist/types/global/ionic-global.d.ts +28 -2
- package/dist/types/interface.d.ts +3 -0
- package/dist/types/utils/config.d.ts +106 -2
- package/dist/types/utils/focus-trap.d.ts +1 -1
- package/dist/types/utils/focus-visible.d.ts +13 -0
- package/dist/types/utils/forms/validity.d.ts +7 -0
- package/dist/types/utils/helpers.d.ts +11 -0
- package/dist/types/utils/overlays-interface.d.ts +31 -1
- package/dist/types/utils/overlays.d.ts +1 -1
- package/dist/types/utils/select-option-render.d.ts +22 -0
- package/dist/types/utils/test/playwright/drag-element.d.ts +1 -1
- package/dist/types/utils/test/playwright/generator.d.ts +31 -2
- package/dist/types/utils/theme.d.ts +9 -0
- package/hydrate/index.js +4682 -1301
- package/hydrate/index.mjs +4682 -1301
- package/package.json +8 -4
- package/components/p-1KVKSLu5.js +0 -4
- package/components/p-B6FQ0cKR.js +0 -4
- package/components/p-B6HaBl3o.js +0 -4
- package/components/p-B8b1Ukl9.js +0 -4
- package/components/p-BGHGpkPX.js +0 -4
- package/components/p-BJoMtgfR.js +0 -4
- package/components/p-BNAG-aVv.js +0 -4
- package/components/p-BR3tZJmu.js +0 -4
- package/components/p-BSB38Tek.js +0 -4
- package/components/p-BTeL5HCK.js +0 -4
- package/components/p-BUbsoBOV.js +0 -4
- package/components/p-BYDc3hSE.js +0 -4
- package/components/p-BagjAGC0.js +0 -4
- package/components/p-BegtE7nr.js +0 -4
- package/components/p-BgwEQWW6.js +0 -4
- package/components/p-BlNv564p.js +0 -4
- package/components/p-BmVRXR1y.js +0 -4
- package/components/p-BxwWvu-b.js +0 -4
- package/components/p-C4jPsTQa.js +0 -4
- package/components/p-C59ryAuS.js +0 -4
- package/components/p-CBzELu-H.js +0 -4
- package/components/p-CDfQnFrd.js +0 -4
- package/components/p-CH0NYjKq.js +0 -4
- package/components/p-CIGNaXM1.js +0 -4
- package/components/p-CO7fmmxt.js +0 -4
- package/components/p-CU1SSH8_.js +0 -4
- package/components/p-CgfaEEem.js +0 -4
- package/components/p-CgqKJg96.js +0 -4
- package/components/p-CneGxKsZ.js +0 -4
- package/components/p-CoA-aqGF.js +0 -4
- package/components/p-Cq8cQ0NL.js +0 -4
- package/components/p-Csw8xuz4.js +0 -4
- package/components/p-CtWGkNnJ.js +0 -4
- package/components/p-Cy5XSfIk.js +0 -4
- package/components/p-Cyxa_4PV.js +0 -4
- package/components/p-Cz5nLPGT.js +0 -4
- package/components/p-D-cP12ZN.js +0 -4
- package/components/p-D6NJwNJN.js +0 -4
- package/components/p-D6Ynv7Xh.js +0 -4
- package/components/p-DHsZWn1l.js +0 -4
- package/components/p-DJMZehmW.js +0 -4
- package/components/p-DJztqcrH.js +0 -4
- package/components/p-DUqnmRFi.js +0 -4
- package/components/p-DYdpXONG.js +0 -4
- package/components/p-DgbT0exM.js +0 -4
- package/components/p-DiVJyqlX.js +0 -4
- package/components/p-DvOO1fxp.js +0 -4
- package/components/p-FBcnjE5W.js +0 -4
- package/components/p-SBseW5KJ.js +0 -4
- package/components/p-ZjP4CjeZ.js +0 -4
- package/components/p-fpbh6w3f.js +0 -4
- package/components/p-kvaDs24J.js +0 -4
- package/components/p-vEbVo2hO.js +0 -4
- package/dist/cjs/hardware-back-button-C4rMJ5uI.js +0 -121
- package/dist/cjs/index-DkNv4J_i.js +0 -10
- package/dist/cjs/ionic-global-Bc3kJi1Z.js +0 -151
- package/dist/cjs/validity-BpS37YFM.js +0 -19
- package/dist/esm/hardware-back-button-CTe4XmL7.js +0 -115
- package/dist/esm/index-ZjP4CjeZ.js +0 -7
- package/dist/esm/ionic-global-DfbeLwcV.js +0 -146
- package/dist/esm/validity-DJztqcrH.js +0 -17
- package/dist/ionic/p-031b76f7.entry.js +0 -4
- package/dist/ionic/p-045a6a42.entry.js +0 -4
- package/dist/ionic/p-07506134.entry.js +0 -4
- package/dist/ionic/p-078037da.entry.js +0 -4
- package/dist/ionic/p-084c25b2.entry.js +0 -4
- package/dist/ionic/p-0d8b5c38.entry.js +0 -4
- package/dist/ionic/p-16813ce7.entry.js +0 -4
- package/dist/ionic/p-1b02923f.entry.js +0 -4
- package/dist/ionic/p-1b169fb6.entry.js +0 -4
- package/dist/ionic/p-23ec35e4.entry.js +0 -4
- package/dist/ionic/p-23fac490.entry.js +0 -4
- package/dist/ionic/p-28a9e720.entry.js +0 -4
- package/dist/ionic/p-294f4bb5.entry.js +0 -4
- package/dist/ionic/p-2a68388b.entry.js +0 -4
- package/dist/ionic/p-2f5a8140.entry.js +0 -4
- package/dist/ionic/p-2fd110aa.entry.js +0 -4
- package/dist/ionic/p-301c43f8.entry.js +0 -4
- package/dist/ionic/p-370a60ee.entry.js +0 -4
- package/dist/ionic/p-4c67ce4c.entry.js +0 -4
- package/dist/ionic/p-51c11c47.entry.js +0 -4
- package/dist/ionic/p-53f750a5.entry.js +0 -4
- package/dist/ionic/p-6af16209.entry.js +0 -4
- package/dist/ionic/p-6b701daa.entry.js +0 -4
- package/dist/ionic/p-6b97f2a3.entry.js +0 -4
- package/dist/ionic/p-7620be24.entry.js +0 -4
- package/dist/ionic/p-771b27a5.entry.js +0 -4
- package/dist/ionic/p-7ca71c83.entry.js +0 -4
- package/dist/ionic/p-80cac7a2.entry.js +0 -4
- package/dist/ionic/p-87125490.entry.js +0 -4
- package/dist/ionic/p-8fda6a62.entry.js +0 -4
- package/dist/ionic/p-9833cf63.entry.js +0 -4
- package/dist/ionic/p-9cbc6f1f.entry.js +0 -4
- package/dist/ionic/p-9cdbabbb.entry.js +0 -4
- package/dist/ionic/p-9eeaBrnk.js +0 -4
- package/dist/ionic/p-BAt5H1ac.js +0 -4
- package/dist/ionic/p-BW_TRJm8.js +0 -4
- package/dist/ionic/p-BmVRXR1y.js +0 -4
- package/dist/ionic/p-Bum7H1fw.js +0 -4
- package/dist/ionic/p-BxIcPWoV.js +0 -4
- package/dist/ionic/p-C0JvVFMv.js +0 -4
- package/dist/ionic/p-CGmVTdWh.js +0 -4
- package/dist/ionic/p-CIGNaXM1.js +0 -4
- package/dist/ionic/p-CYbRmDdy.js +0 -4
- package/dist/ionic/p-CYvM5g3q.js +0 -4
- package/dist/ionic/p-CmFz1Mjc.js +0 -4
- package/dist/ionic/p-CtA-yJYy.js +0 -4
- package/dist/ionic/p-CtWGkNnJ.js +0 -4
- package/dist/ionic/p-D8HJQ1qq.js +0 -4
- package/dist/ionic/p-DB_iPQC-.js +0 -4
- package/dist/ionic/p-DJztqcrH.js +0 -4
- package/dist/ionic/p-DLbbmF9h.js +0 -4
- package/dist/ionic/p-DTPR1Wpn.js +0 -4
- package/dist/ionic/p-DV3sJJW8.js +0 -4
- package/dist/ionic/p-DiVJyqlX.js +0 -4
- package/dist/ionic/p-DtVZDHlS.js +0 -4
- package/dist/ionic/p-IGIE5vDm.js +0 -5
- package/dist/ionic/p-NFFyoJ4Q.js +0 -4
- package/dist/ionic/p-ZjP4CjeZ.js +0 -4
- package/dist/ionic/p-a805674e.entry.js +0 -4
- package/dist/ionic/p-a84f2d21.entry.js +0 -4
- package/dist/ionic/p-aa812c4b.entry.js +0 -4
- package/dist/ionic/p-b325a113.entry.js +0 -4
- package/dist/ionic/p-b5ea8cdd.entry.js +0 -4
- package/dist/ionic/p-b6e0ff03.entry.js +0 -4
- package/dist/ionic/p-bcaa827e.entry.js +0 -4
- package/dist/ionic/p-c3cce9d8.entry.js +0 -4
- package/dist/ionic/p-ca31010f.entry.js +0 -4
- package/dist/ionic/p-d4e8b473.entry.js +0 -4
- package/dist/ionic/p-e0287f41.entry.js +0 -4
- package/dist/ionic/p-e663bc5a.entry.js +0 -4
- package/dist/ionic/p-e6cedcd7.entry.js +0 -4
- package/dist/ionic/p-e863ffe8.entry.js +0 -4
- package/dist/ionic/p-f2deaceb.entry.js +0 -4
- package/dist/ionic/p-f5dfb9a3.entry.js +0 -4
- package/dist/ionic/p-f69a5f71.entry.js +0 -4
- package/dist/ionic/p-f8186550.entry.js +0 -4
- package/dist/ionic/p-fdbc90d4.entry.js +0 -4
- package/dist/ionic/p-gbVXD275.js +0 -4
- package/dist/ionic/p-hNN3VvaC.js +0 -4
- /package/dist/collection/components/{input-password-toggle/input-password-toggle.css → refresher-content/refresher-content.css} +0 -0
|
@@ -1,19 +1,24 @@
|
|
|
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";
|
|
4
5
|
import { Build, Host, h, forceUpdate } from "@stencil/core";
|
|
6
|
+
import { ENABLE_HTML_CONTENT_DEFAULT } from "../../utils/config";
|
|
5
7
|
import { compareOptions, createNotchController, isOptionSelected, checkInvalidState } from "../../utils/forms/index";
|
|
6
8
|
import { focusVisibleElement, renderHiddenInput, inheritAttributes } from "../../utils/helpers";
|
|
7
9
|
import { printIonWarning } from "../../utils/logging/index";
|
|
8
10
|
import { actionSheetController, alertController, popoverController, modalController } from "../../utils/overlays";
|
|
9
11
|
import { isRTL } from "../../utils/rtl/index";
|
|
12
|
+
import { sanitizeDOMString } from "../../utils/sanitization/index";
|
|
10
13
|
import { createColorClasses, hostContext } from "../../utils/theme";
|
|
11
14
|
import { watchForOptions } from "../../utils/watch-options";
|
|
12
15
|
import { caretDownSharp, chevronExpand } from "ionicons/icons";
|
|
13
|
-
import {
|
|
16
|
+
import { config } from "../../global/config";
|
|
17
|
+
import { getIonTheme } from "../../global/ionic-global";
|
|
14
18
|
// TODO(FW-2832): types
|
|
15
19
|
/**
|
|
16
|
-
* @virtualProp {"ios" | "md"} mode - The mode determines
|
|
20
|
+
* @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
|
|
21
|
+
* @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
|
|
17
22
|
*
|
|
18
23
|
* @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.
|
|
19
24
|
* @slot start - Content to display at the leading edge of the select.
|
|
@@ -37,6 +42,7 @@ export class Select {
|
|
|
37
42
|
this.helperTextId = `${this.inputId}-helper-text`;
|
|
38
43
|
this.errorTextId = `${this.inputId}-error-text`;
|
|
39
44
|
this.inheritedAttributes = {};
|
|
45
|
+
this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
|
|
40
46
|
this.isExpanded = false;
|
|
41
47
|
/**
|
|
42
48
|
* The `hasFocus` state ensures the focus class is
|
|
@@ -55,6 +61,14 @@ export class Select {
|
|
|
55
61
|
* The text to display on the cancel button.
|
|
56
62
|
*/
|
|
57
63
|
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;
|
|
58
72
|
/**
|
|
59
73
|
* If `true`, the user cannot interact with the select.
|
|
60
74
|
*/
|
|
@@ -399,9 +413,14 @@ export class Select {
|
|
|
399
413
|
.join(' ');
|
|
400
414
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
401
415
|
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;
|
|
402
421
|
return {
|
|
403
422
|
role: isSelected ? 'selected' : '',
|
|
404
|
-
text:
|
|
423
|
+
text: text !== null && text !== void 0 ? text : '',
|
|
405
424
|
cssClass: optClass,
|
|
406
425
|
handler: () => {
|
|
407
426
|
this.setValue(value);
|
|
@@ -410,6 +429,9 @@ export class Select {
|
|
|
410
429
|
'aria-checked': isSelected ? 'true' : 'false',
|
|
411
430
|
role: 'radio',
|
|
412
431
|
},
|
|
432
|
+
startContent: startContent !== null && startContent !== void 0 ? startContent : undefined,
|
|
433
|
+
endContent: endContent !== null && endContent !== void 0 ? endContent : undefined,
|
|
434
|
+
description: option.description,
|
|
413
435
|
};
|
|
414
436
|
});
|
|
415
437
|
// Add "cancel" button
|
|
@@ -430,13 +452,21 @@ export class Select {
|
|
|
430
452
|
.filter((cls) => cls !== 'hydrated')
|
|
431
453
|
.join(' ');
|
|
432
454
|
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;
|
|
433
460
|
return {
|
|
434
461
|
type: inputType,
|
|
435
462
|
cssClass: optClass,
|
|
436
|
-
label:
|
|
463
|
+
label: label !== null && label !== void 0 ? label : '',
|
|
437
464
|
value,
|
|
438
465
|
checked: isOptionSelected(selectValue, value, this.compareWith),
|
|
439
466
|
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,
|
|
440
470
|
};
|
|
441
471
|
});
|
|
442
472
|
return alertInputs;
|
|
@@ -449,8 +479,13 @@ export class Select {
|
|
|
449
479
|
.filter((cls) => cls !== 'hydrated')
|
|
450
480
|
.join(' ');
|
|
451
481
|
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;
|
|
452
487
|
return {
|
|
453
|
-
text:
|
|
488
|
+
text: text !== null && text !== void 0 ? text : '',
|
|
454
489
|
cssClass: optClass,
|
|
455
490
|
value,
|
|
456
491
|
checked: isOptionSelected(selectValue, value, this.compareWith),
|
|
@@ -461,6 +496,9 @@ export class Select {
|
|
|
461
496
|
this.close();
|
|
462
497
|
}
|
|
463
498
|
},
|
|
499
|
+
startContent: startContent !== null && startContent !== void 0 ? startContent : undefined,
|
|
500
|
+
endContent: endContent !== null && endContent !== void 0 ? endContent : undefined,
|
|
501
|
+
description: option.description,
|
|
464
502
|
};
|
|
465
503
|
});
|
|
466
504
|
return popoverOptions;
|
|
@@ -468,8 +506,8 @@ export class Select {
|
|
|
468
506
|
async openPopover(ev) {
|
|
469
507
|
const { fill, labelPlacement } = this;
|
|
470
508
|
const interfaceOptions = this.interfaceOptions;
|
|
471
|
-
const
|
|
472
|
-
const showBackdrop =
|
|
509
|
+
const theme = getIonTheme(this);
|
|
510
|
+
const showBackdrop = theme === 'md' ? false : true;
|
|
473
511
|
const multiple = this.multiple;
|
|
474
512
|
const value = this.value;
|
|
475
513
|
let event = ev;
|
|
@@ -480,7 +518,7 @@ export class Select {
|
|
|
480
518
|
* when using a fill in MD mode or if the
|
|
481
519
|
* label is floating/stacked.
|
|
482
520
|
*/
|
|
483
|
-
if (hasFloatingOrStackedLabel || (
|
|
521
|
+
if (hasFloatingOrStackedLabel || (theme === 'md' && fill !== undefined)) {
|
|
484
522
|
size = 'cover';
|
|
485
523
|
/**
|
|
486
524
|
* Otherwise the popover
|
|
@@ -493,15 +531,21 @@ export class Select {
|
|
|
493
531
|
ionShadowTarget: this.nativeWrapperEl,
|
|
494
532
|
} });
|
|
495
533
|
}
|
|
496
|
-
const
|
|
534
|
+
const options = this.createOverlaySelectOptions(this.childOpts, value);
|
|
535
|
+
const hasRichContent = options.some((opt) => opt.startContent || opt.endContent || opt.description);
|
|
536
|
+
const popoverOpts = Object.assign(Object.assign({ theme,
|
|
497
537
|
event, alignment: 'center', size,
|
|
498
|
-
showBackdrop }, interfaceOptions), { component: 'ion-select-popover', cssClass: [
|
|
538
|
+
showBackdrop }, interfaceOptions), { component: 'ion-select-popover', cssClass: [
|
|
539
|
+
'select-popover',
|
|
540
|
+
hasRichContent ? 'select-popover-rich-content' : undefined,
|
|
541
|
+
interfaceOptions.cssClass,
|
|
542
|
+
], componentProps: {
|
|
499
543
|
header: interfaceOptions.header,
|
|
500
544
|
subHeader: interfaceOptions.subHeader,
|
|
501
545
|
message: interfaceOptions.message,
|
|
502
546
|
multiple,
|
|
503
547
|
value,
|
|
504
|
-
options
|
|
548
|
+
options,
|
|
505
549
|
} });
|
|
506
550
|
/**
|
|
507
551
|
* Workaround for Stencil to autodefine
|
|
@@ -518,9 +562,9 @@ export class Select {
|
|
|
518
562
|
return popoverController.create(popoverOpts);
|
|
519
563
|
}
|
|
520
564
|
async openActionSheet() {
|
|
521
|
-
const
|
|
565
|
+
const theme = getIonTheme(this);
|
|
522
566
|
const interfaceOptions = this.interfaceOptions;
|
|
523
|
-
const actionSheetOpts = Object.assign(Object.assign({
|
|
567
|
+
const actionSheetOpts = Object.assign(Object.assign({ theme }, interfaceOptions), { buttons: this.createActionSheetButtons(this.childOpts, this.value), cssClass: ['select-action-sheet', interfaceOptions.cssClass] });
|
|
524
568
|
/**
|
|
525
569
|
* Workaround for Stencil to autodefine
|
|
526
570
|
* ion-action-sheet when
|
|
@@ -537,8 +581,8 @@ export class Select {
|
|
|
537
581
|
async openAlert() {
|
|
538
582
|
const interfaceOptions = this.interfaceOptions;
|
|
539
583
|
const inputType = this.multiple ? 'checkbox' : 'radio';
|
|
540
|
-
const
|
|
541
|
-
const alertOpts = Object.assign(Object.assign({
|
|
584
|
+
const theme = getIonTheme(this);
|
|
585
|
+
const alertOpts = Object.assign(Object.assign({ theme }, interfaceOptions), { header: interfaceOptions.header ? interfaceOptions.header : this.labelText, inputs: this.createAlertInputs(this.childOpts, inputType, this.value), buttons: [
|
|
542
586
|
{
|
|
543
587
|
text: this.cancelText,
|
|
544
588
|
role: 'cancel',
|
|
@@ -572,10 +616,11 @@ export class Select {
|
|
|
572
616
|
}
|
|
573
617
|
openModal() {
|
|
574
618
|
const { multiple, value, interfaceOptions } = this;
|
|
575
|
-
const
|
|
576
|
-
const modalOpts = Object.assign(Object.assign({}, interfaceOptions), { mode, cssClass: ['select-modal', interfaceOptions.cssClass], component: 'ion-select-modal', componentProps: {
|
|
619
|
+
const theme = getIonTheme(this);
|
|
620
|
+
const modalOpts = Object.assign(Object.assign({}, interfaceOptions), { mode: theme, cssClass: ['select-modal', interfaceOptions.cssClass], component: 'ion-select-modal', componentProps: {
|
|
577
621
|
header: interfaceOptions.header,
|
|
578
622
|
cancelText: this.cancelText,
|
|
623
|
+
cancelIcon: this.cancelIcon,
|
|
579
624
|
multiple,
|
|
580
625
|
value,
|
|
581
626
|
options: this.createOverlaySelectOptions(this.childOpts, value),
|
|
@@ -628,12 +673,18 @@ export class Select {
|
|
|
628
673
|
}
|
|
629
674
|
return;
|
|
630
675
|
}
|
|
631
|
-
|
|
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) {
|
|
632
683
|
const selectedText = this.selectedText;
|
|
633
684
|
if (selectedText != null && selectedText !== '') {
|
|
634
685
|
return selectedText;
|
|
635
686
|
}
|
|
636
|
-
return generateText(this.childOpts, this.value, this.compareWith);
|
|
687
|
+
return generateText(this.childOpts, this.value, this.compareWith, useHTML);
|
|
637
688
|
}
|
|
638
689
|
setFocus() {
|
|
639
690
|
if (this.focusEl) {
|
|
@@ -647,6 +698,18 @@ export class Select {
|
|
|
647
698
|
};
|
|
648
699
|
this.ionStyle.emit(style);
|
|
649
700
|
}
|
|
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
|
+
}
|
|
650
713
|
renderLabel() {
|
|
651
714
|
const { label } = this;
|
|
652
715
|
return (h("div", { class: {
|
|
@@ -679,8 +742,8 @@ export class Select {
|
|
|
679
742
|
* when fill="outline".
|
|
680
743
|
*/
|
|
681
744
|
renderLabelContainer() {
|
|
682
|
-
const
|
|
683
|
-
const hasOutlineFill =
|
|
745
|
+
const theme = getIonTheme(this);
|
|
746
|
+
const hasOutlineFill = theme === 'md' && this.fill === 'outline';
|
|
684
747
|
if (hasOutlineFill) {
|
|
685
748
|
/**
|
|
686
749
|
* The outline fill has a special outline
|
|
@@ -703,6 +766,47 @@ export class Select {
|
|
|
703
766
|
*/
|
|
704
767
|
return this.renderLabel();
|
|
705
768
|
}
|
|
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
|
+
}
|
|
706
810
|
/**
|
|
707
811
|
* Renders either the placeholder
|
|
708
812
|
* or the selected values based on
|
|
@@ -710,7 +814,7 @@ export class Select {
|
|
|
710
814
|
*/
|
|
711
815
|
renderSelectText() {
|
|
712
816
|
const { placeholder } = this;
|
|
713
|
-
const displayValue = this.getText();
|
|
817
|
+
const displayValue = this.getText(true);
|
|
714
818
|
let addPlaceholderClass = false;
|
|
715
819
|
let selectText = displayValue;
|
|
716
820
|
if (selectText === '' && placeholder !== undefined) {
|
|
@@ -722,6 +826,10 @@ export class Select {
|
|
|
722
826
|
'select-placeholder': addPlaceholderClass,
|
|
723
827
|
};
|
|
724
828
|
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
|
+
}
|
|
725
833
|
return (h("div", { "aria-hidden": "true", class: selectTextClasses, part: textPart }, selectText));
|
|
726
834
|
}
|
|
727
835
|
/**
|
|
@@ -729,21 +837,17 @@ export class Select {
|
|
|
729
837
|
* next to the select text.
|
|
730
838
|
*/
|
|
731
839
|
renderSelectIcon() {
|
|
732
|
-
const
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
icon = expandedIcon;
|
|
737
|
-
}
|
|
738
|
-
else {
|
|
739
|
-
const defaultIcon = mode === 'ios' ? chevronExpand : caretDownSharp;
|
|
740
|
-
icon = toggleIcon !== null && toggleIcon !== void 0 ? toggleIcon : defaultIcon;
|
|
840
|
+
const { isExpanded, selectExpandedIcon, selectCollapsedIcon } = this;
|
|
841
|
+
let icon = selectCollapsedIcon;
|
|
842
|
+
if (isExpanded) {
|
|
843
|
+
icon = selectExpandedIcon;
|
|
741
844
|
}
|
|
742
845
|
return h("ion-icon", { class: "select-icon", part: "icon", "aria-hidden": "true", icon: icon });
|
|
743
846
|
}
|
|
744
847
|
get ariaLabel() {
|
|
745
848
|
var _a;
|
|
746
849
|
const { placeholder, inheritedAttributes } = this;
|
|
850
|
+
// Get the plain text from the selected text
|
|
747
851
|
const displayValue = this.getText();
|
|
748
852
|
// The aria label should be preferred over visible text if both are specified
|
|
749
853
|
const definedLabel = (_a = inheritedAttributes['aria-label']) !== null && _a !== void 0 ? _a : this.labelText;
|
|
@@ -772,6 +876,63 @@ export class Select {
|
|
|
772
876
|
const { disabled, inputId, isExpanded, required } = this;
|
|
773
877
|
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) }));
|
|
774
878
|
}
|
|
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
|
+
}
|
|
775
936
|
getHintTextId() {
|
|
776
937
|
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
777
938
|
if (isInvalid && errorText) {
|
|
@@ -809,13 +970,17 @@ export class Select {
|
|
|
809
970
|
return (h("div", { class: "select-bottom", part: "bottom" }, this.renderHintText()));
|
|
810
971
|
}
|
|
811
972
|
render() {
|
|
812
|
-
const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill,
|
|
813
|
-
const
|
|
973
|
+
const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill, name, value, hasFocus, } = this;
|
|
974
|
+
const theme = getIonTheme(this);
|
|
975
|
+
const shape = this.getShape();
|
|
814
976
|
const hasFloatingOrStackedLabel = labelPlacement === 'floating' || labelPlacement === 'stacked';
|
|
977
|
+
const shouldRenderOuterIcon = theme !== 'ionic' && hasFloatingOrStackedLabel;
|
|
978
|
+
const shouldRenderInnerIcon = theme === 'ionic' || !hasFloatingOrStackedLabel;
|
|
815
979
|
const justifyEnabled = !hasFloatingOrStackedLabel && justify !== undefined;
|
|
816
980
|
const rtl = isRTL(el) ? 'rtl' : 'ltr';
|
|
817
981
|
const inItem = hostContext('ion-item', this.el);
|
|
818
|
-
const
|
|
982
|
+
const size = this.getSize();
|
|
983
|
+
const shouldRenderHighlight = theme === 'md' && fill !== 'outline' && !inItem;
|
|
819
984
|
const hasValue = this.hasValue();
|
|
820
985
|
const hasStartEndSlots = el.querySelector('[slot="start"], [slot="end"]') !== null;
|
|
821
986
|
renderHiddenInput(true, el, name, parseValue(value), disabled);
|
|
@@ -837,8 +1002,8 @@ export class Select {
|
|
|
837
1002
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
838
1003
|
*/
|
|
839
1004
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
|
|
840
|
-
return (h(Host, { key: '
|
|
841
|
-
[
|
|
1005
|
+
return (h(Host, { key: '03fa41ce215865ceeaeddec12d9ac66b5ab18e3f', onClick: this.onClick, class: createColorClasses(this.color, {
|
|
1006
|
+
[theme]: true,
|
|
842
1007
|
'in-item': inItem,
|
|
843
1008
|
'in-item-color': hostContext('ion-item.ion-color', el),
|
|
844
1009
|
'select-disabled': disabled,
|
|
@@ -855,20 +1020,33 @@ export class Select {
|
|
|
855
1020
|
[`select-justify-${justify}`]: justifyEnabled,
|
|
856
1021
|
[`select-shape-${shape}`]: shape !== undefined,
|
|
857
1022
|
[`select-label-placement-${labelPlacement}`]: true,
|
|
858
|
-
|
|
1023
|
+
[`select-size-${size}`]: size !== undefined,
|
|
1024
|
+
}) }, h("label", { key: '66808fb8c26f7a5db356b22d43751463cbb4bcaa', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), h("div", { key: '3e80160009e0e5b47952d666ca621166067adbea', 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: '8ea2530c4dc535661bf97d16724bdca3b9e23560', class: "select-outline" }), h("slot", { key: '2526c811e6f0f250421f6de9834d96d21df528b7', name: "start" }), h("div", { key: '95d0b2432c9e656166bf35ddd457a74052c91a27', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: '0864febe104e3ac77aa10ce397e7c7569855636e', name: "end" }), shouldRenderInnerIcon && this.renderSelectIcon()), shouldRenderOuterIcon && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: 'c83f3992d7a0ee55ca635b391421626a9131c8eb', class: "select-highlight" })), this.renderBottomContent()));
|
|
859
1035
|
}
|
|
860
1036
|
static get is() { return "ion-select"; }
|
|
861
1037
|
static get encapsulation() { return "shadow"; }
|
|
862
1038
|
static get originalStyleUrls() {
|
|
863
1039
|
return {
|
|
864
1040
|
"ios": ["select.ios.scss"],
|
|
865
|
-
"md": ["select.md.scss"]
|
|
1041
|
+
"md": ["select.md.scss"],
|
|
1042
|
+
"ionic": ["select.ionic.scss"]
|
|
866
1043
|
};
|
|
867
1044
|
}
|
|
868
1045
|
static get styleUrls() {
|
|
869
1046
|
return {
|
|
870
1047
|
"ios": ["select.ios.css"],
|
|
871
|
-
"md": ["select.md.css"]
|
|
1048
|
+
"md": ["select.md.css"],
|
|
1049
|
+
"ionic": ["select.ionic.css"]
|
|
872
1050
|
};
|
|
873
1051
|
}
|
|
874
1052
|
static get properties() {
|
|
@@ -893,6 +1071,26 @@ export class Select {
|
|
|
893
1071
|
"attribute": "cancel-text",
|
|
894
1072
|
"defaultValue": "'Cancel'"
|
|
895
1073
|
},
|
|
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
|
+
},
|
|
896
1094
|
"color": {
|
|
897
1095
|
"type": "string",
|
|
898
1096
|
"mutable": false,
|
|
@@ -977,7 +1175,7 @@ export class Select {
|
|
|
977
1175
|
"optional": true,
|
|
978
1176
|
"docs": {
|
|
979
1177
|
"tags": [],
|
|
980
|
-
"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
|
|
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 the `\"md\"` theme."
|
|
981
1179
|
},
|
|
982
1180
|
"getter": false,
|
|
983
1181
|
"setter": false,
|
|
@@ -1237,7 +1435,7 @@ export class Select {
|
|
|
1237
1435
|
"optional": true,
|
|
1238
1436
|
"docs": {
|
|
1239
1437
|
"tags": [],
|
|
1240
|
-
"text": "The toggle icon to use. Defaults to
|
|
1438
|
+
"text": "The toggle icon to use. Defaults to `\"chevronExpand\"` for the `\"ios\"` theme,\nor `\"caretDownSharp\"` for the `\"md\"` and `\"ionic\"` themes."
|
|
1241
1439
|
},
|
|
1242
1440
|
"getter": false,
|
|
1243
1441
|
"setter": false,
|
|
@@ -1256,70 +1454,89 @@ export class Select {
|
|
|
1256
1454
|
"optional": true,
|
|
1257
1455
|
"docs": {
|
|
1258
1456
|
"tags": [],
|
|
1259
|
-
"text": "The toggle icon to show when the select is open. If defined, the icon\nrotation behavior in
|
|
1457
|
+
"text": "The toggle icon to show when the select is open. If defined, the icon\nrotation behavior in `\"md\"` theme will be disabled. If undefined, `toggleIcon`\nwill be used for when the select is both open and closed."
|
|
1260
1458
|
},
|
|
1261
1459
|
"getter": false,
|
|
1262
1460
|
"setter": false,
|
|
1263
1461
|
"reflect": false,
|
|
1264
1462
|
"attribute": "expanded-icon"
|
|
1265
1463
|
},
|
|
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
|
+
},
|
|
1266
1484
|
"shape": {
|
|
1267
1485
|
"type": "string",
|
|
1268
1486
|
"mutable": false,
|
|
1269
1487
|
"complexType": {
|
|
1270
|
-
"original": "'round'",
|
|
1271
|
-
"resolved": "\"round\" | undefined",
|
|
1488
|
+
"original": "'soft' | 'round' | 'rectangular'",
|
|
1489
|
+
"resolved": "\"rectangular\" | \"round\" | \"soft\" | undefined",
|
|
1272
1490
|
"references": {}
|
|
1273
1491
|
},
|
|
1274
1492
|
"required": false,
|
|
1275
1493
|
"optional": true,
|
|
1276
1494
|
"docs": {
|
|
1277
1495
|
"tags": [],
|
|
1278
|
-
"text": "
|
|
1496
|
+
"text": "Set to `\"soft\"` for a select with slightly rounded corners,\n`\"round\"` for a select with fully rounded corners,\nor `\"rectangular\"` for a select without rounded corners.\n\nDefaults to `\"round\"` for the `\"ionic\"` theme, undefined for all other themes."
|
|
1279
1497
|
},
|
|
1280
1498
|
"getter": false,
|
|
1281
1499
|
"setter": false,
|
|
1282
1500
|
"reflect": false,
|
|
1283
1501
|
"attribute": "shape"
|
|
1284
1502
|
},
|
|
1285
|
-
"
|
|
1286
|
-
"type": "
|
|
1287
|
-
"mutable":
|
|
1503
|
+
"size": {
|
|
1504
|
+
"type": "string",
|
|
1505
|
+
"mutable": false,
|
|
1288
1506
|
"complexType": {
|
|
1289
|
-
"original": "
|
|
1290
|
-
"resolved": "
|
|
1507
|
+
"original": "'small' | 'medium' | 'large'",
|
|
1508
|
+
"resolved": "\"large\" | \"medium\" | \"small\" | undefined",
|
|
1291
1509
|
"references": {}
|
|
1292
1510
|
},
|
|
1293
1511
|
"required": false,
|
|
1294
1512
|
"optional": true,
|
|
1295
1513
|
"docs": {
|
|
1296
1514
|
"tags": [],
|
|
1297
|
-
"text": "The
|
|
1515
|
+
"text": "The size of the select. If \"large\" it will increase the height of the select, while\n\"small\" and \"medium\" provide progressively smaller heights.\n\nDefaults to `\"medium\"` for the ionic theme, and undefined for all other themes."
|
|
1298
1516
|
},
|
|
1299
1517
|
"getter": false,
|
|
1300
1518
|
"setter": false,
|
|
1301
1519
|
"reflect": false,
|
|
1302
|
-
"attribute": "
|
|
1520
|
+
"attribute": "size"
|
|
1303
1521
|
},
|
|
1304
|
-
"
|
|
1305
|
-
"type": "
|
|
1306
|
-
"mutable":
|
|
1522
|
+
"value": {
|
|
1523
|
+
"type": "any",
|
|
1524
|
+
"mutable": true,
|
|
1307
1525
|
"complexType": {
|
|
1308
|
-
"original": "
|
|
1309
|
-
"resolved": "
|
|
1526
|
+
"original": "any | null",
|
|
1527
|
+
"resolved": "any",
|
|
1310
1528
|
"references": {}
|
|
1311
1529
|
},
|
|
1312
1530
|
"required": false,
|
|
1313
|
-
"optional":
|
|
1531
|
+
"optional": true,
|
|
1314
1532
|
"docs": {
|
|
1315
1533
|
"tags": [],
|
|
1316
|
-
"text": "
|
|
1534
|
+
"text": "The value of the select."
|
|
1317
1535
|
},
|
|
1318
1536
|
"getter": false,
|
|
1319
1537
|
"setter": false,
|
|
1320
1538
|
"reflect": false,
|
|
1321
|
-
"attribute": "
|
|
1322
|
-
"defaultValue": "false"
|
|
1539
|
+
"attribute": "value"
|
|
1323
1540
|
}
|
|
1324
1541
|
};
|
|
1325
1542
|
}
|
|
@@ -1515,25 +1732,176 @@ const parseValue = (value) => {
|
|
|
1515
1732
|
}
|
|
1516
1733
|
return value.toString();
|
|
1517
1734
|
};
|
|
1518
|
-
const generateText = (opts, value, compareWith) => {
|
|
1735
|
+
const generateText = (opts, value, compareWith, useHTML = false) => {
|
|
1519
1736
|
if (value === undefined) {
|
|
1520
1737
|
return '';
|
|
1521
1738
|
}
|
|
1522
1739
|
if (Array.isArray(value)) {
|
|
1523
1740
|
return value
|
|
1524
|
-
.map((v) => textForValue(opts, v, compareWith))
|
|
1741
|
+
.map((v) => textForValue(opts, v, compareWith, useHTML))
|
|
1525
1742
|
.filter((opt) => opt !== null)
|
|
1526
1743
|
.join(', ');
|
|
1527
1744
|
}
|
|
1528
1745
|
else {
|
|
1529
|
-
return textForValue(opts, value, compareWith) || '';
|
|
1746
|
+
return textForValue(opts, value, compareWith, useHTML) || '';
|
|
1530
1747
|
}
|
|
1531
1748
|
};
|
|
1532
|
-
|
|
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) => {
|
|
1533
1761
|
const selectOpt = opts.find((opt) => {
|
|
1534
1762
|
return compareOptions(value, getOptionValue(opt), compareWith);
|
|
1535
1763
|
});
|
|
1536
|
-
|
|
1764
|
+
const customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
|
|
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(' ');
|
|
1537
1905
|
};
|
|
1538
1906
|
let selectIds = 0;
|
|
1539
1907
|
const OPTION_CLASS = 'select-interface-option';
|