@ionic/core 8.8.7-dev.11778707797.1723d277 → 8.8.7-dev.11779385275.161a641b
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.d.ts +11 -0
- package/components/ion-picker-legacy-column.js +4 -0
- package/components/ion-picker-legacy.d.ts +11 -0
- package/components/ion-picker-legacy.js +4 -0
- 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-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-Dmuy6xyk.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 +17 -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 -26
- package/dist/cjs/ion-alert.cjs.entry.js +62 -45
- package/dist/cjs/ion-app_8.cjs.entry.js +296 -175
- 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.cjs.entry.js → ion-datetime_3.cjs.entry.js} +742 -29
- 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 +531 -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 +467 -52
- package/dist/cjs/ion-item_8.cjs.entry.js +116 -49
- package/dist/cjs/ion-loading.cjs.entry.js +22 -23
- package/dist/cjs/ion-menu_3.cjs.entry.js +47 -29
- package/dist/cjs/ion-modal.cjs.entry.js +262 -142
- 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 -23
- 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 +13 -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 -115
- 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-DIfHxkst.js → overlays-Hci_7vw_.js} +117 -42
- 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 +12 -1
- 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 +33 -18
- 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 +52 -35
- 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-constants.js +12 -0
- package/dist/collection/components/gallery/gallery-interface.js +1 -0
- package/dist/collection/components/gallery/gallery.css +100 -0
- package/dist/collection/components/gallery/gallery.js +616 -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.ionic.css +211 -0
- package/dist/collection/components/item-sliding/item-sliding.js +421 -35
- package/dist/collection/components/item-sliding/{item-sliding.css → item-sliding.native.css} +84 -9
- package/dist/collection/components/item-sliding/test/test.utils.js +13 -0
- 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 +15 -16
- 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 +51 -17
- 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/animations/ios.enter.js +27 -0
- package/dist/collection/components/picker-legacy/animations/ios.leave.js +23 -0
- package/dist/collection/components/picker-legacy/picker-interface.js +1 -0
- package/dist/collection/components/picker-legacy/picker.ios.css +312 -0
- package/dist/collection/components/picker-legacy/picker.js +891 -0
- package/dist/collection/components/picker-legacy/picker.md.css +299 -0
- package/dist/collection/components/picker-legacy-column/picker-column.ios.css +243 -0
- package/dist/collection/components/picker-legacy-column/picker-column.js +422 -0
- package/dist/collection/components/picker-legacy-column/picker-column.md.css +234 -0
- package/dist/collection/components/picker-legacy-column/test/test.utils.js +43 -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 +19 -20
- 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 +15 -10
- 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 +10 -40
- 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 +13 -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 -97
- 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/index.js +1 -1
- package/dist/collection/utils/css-value-validation.js +25 -0
- 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 +97 -31
- package/dist/collection/utils/select-option-render.js +76 -0
- package/dist/collection/utils/test/playwright/drag-element.js +32 -9
- 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 +10124 -669
- 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-AlrZKoWR.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 -26
- package/dist/esm/ion-alert.entry.js +61 -44
- package/dist/esm/ion-app_8.entry.js +296 -175
- 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.entry.js → ion-datetime_3.entry.js} +741 -30
- 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 +529 -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 +467 -52
- package/dist/esm/ion-item_8.entry.js +116 -49
- package/dist/esm/ion-loading.entry.js +21 -22
- package/dist/esm/ion-menu_3.entry.js +47 -29
- package/dist/esm/ion-modal.entry.js +215 -95
- 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 -23
- 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 +13 -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 +454 -116
- 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-BDGzTP3L.js → overlays-rwDDzEs4.js} +114 -39
- 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 +2592 -99
- 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-07d3388f.entry.js +4 -0
- package/dist/ionic/p-0f3b4262.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-35b144f5.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-432c5888.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-7054a1b9.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-76307d10.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-8uDL7fql.js +4 -0
- package/dist/ionic/p-90e653e3.entry.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-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-e18d3fdb.entry.js +4 -0
- package/dist/ionic/p-f02ba305.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-constants.d.ts +9 -0
- package/dist/types/components/gallery/gallery-interface.d.ts +10 -0
- package/dist/types/components/gallery/gallery.d.ts +186 -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 +47 -1
- package/dist/types/components/item-sliding/test/test.utils.d.ts +13 -0
- 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/animations/ios.enter.d.ts +5 -0
- package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +5 -0
- package/dist/types/components/picker-legacy/picker-interface.d.ts +52 -0
- package/dist/types/components/picker-legacy/picker.d.ts +159 -0
- package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
- package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +9 -0
- 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 -8
- 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 -14
- 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 +2109 -250
- package/dist/types/global/ionic-global.d.ts +28 -2
- package/dist/types/index.d.ts +1 -1
- package/dist/types/interface.d.ts +4 -0
- package/dist/types/utils/config.d.ts +114 -2
- package/dist/types/utils/css-value-validation.d.ts +12 -0
- 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 +10 -12
- package/dist/types/utils/select-option-render.d.ts +22 -0
- package/dist/types/utils/test/playwright/drag-element.d.ts +16 -3
- package/dist/types/utils/test/playwright/generator.d.ts +31 -2
- package/dist/types/utils/theme.d.ts +9 -0
- package/hydrate/index.js +5874 -1443
- package/hydrate/index.mjs +5874 -1443
- package/package.json +10 -6
- 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-BJu4LSK8.js +0 -4
- package/components/p-BNAG-aVv.js +0 -4
- package/components/p-BR3tZJmu.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-BeL7B3Bb.js +0 -4
- package/components/p-Bg7NsGS9.js +0 -4
- package/components/p-BgwEQWW6.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-CDXBV7oG.js +0 -4
- package/components/p-CDfQnFrd.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-CWpbvhwY.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-Csw8xuz4.js +0 -4
- package/components/p-Ct3FLpwo.js +0 -4
- package/components/p-CtWGkNnJ.js +0 -4
- package/components/p-Cy5XSfIk.js +0 -4
- package/components/p-Cz5nLPGT.js +0 -4
- package/components/p-D6NJwNJN.js +0 -4
- package/components/p-D6Ynv7Xh.js +0 -4
- package/components/p-DBHdZu4y.js +0 -4
- package/components/p-DJztqcrH.js +0 -4
- package/components/p-DL2W2mt3.js +0 -4
- package/components/p-DPdqO7R6.js +0 -4
- package/components/p-DYdpXONG.js +0 -4
- package/components/p-DbISMmiI.js +0 -4
- package/components/p-DgbT0exM.js +0 -4
- package/components/p-DiVJyqlX.js +0 -4
- package/components/p-DrIm1s9R.js +0 -4
- package/components/p-DvOO1fxp.js +0 -4
- package/components/p-DxXmSp9Y.js +0 -4
- package/components/p-FBcnjE5W.js +0 -4
- package/components/p-OOMJP0jy.js +0 -4
- package/components/p-SBseW5KJ.js +0 -4
- package/components/p-ZjP4CjeZ.js +0 -4
- package/components/p-nPoOPlPt.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-045a6a42.entry.js +0 -4
- package/dist/ionic/p-078037da.entry.js +0 -4
- package/dist/ionic/p-0ed06d90.entry.js +0 -4
- package/dist/ionic/p-18b5d5ff.entry.js +0 -4
- package/dist/ionic/p-19adf785.entry.js +0 -4
- package/dist/ionic/p-1d2163ad.entry.js +0 -4
- package/dist/ionic/p-23ec35e4.entry.js +0 -4
- package/dist/ionic/p-30f5ad9e.entry.js +0 -4
- package/dist/ionic/p-34b3a309.entry.js +0 -4
- package/dist/ionic/p-370a60ee.entry.js +0 -4
- package/dist/ionic/p-3b58996c.entry.js +0 -4
- package/dist/ionic/p-460fbe5b.entry.js +0 -4
- package/dist/ionic/p-4c8d8c55.entry.js +0 -4
- package/dist/ionic/p-4ea520a4.entry.js +0 -4
- package/dist/ionic/p-4ed63122.entry.js +0 -4
- package/dist/ionic/p-4f3a8ccf.entry.js +0 -4
- package/dist/ionic/p-528d4c1d.entry.js +0 -4
- package/dist/ionic/p-5430ae94.entry.js +0 -4
- package/dist/ionic/p-5c2cc090.entry.js +0 -4
- package/dist/ionic/p-6406d5a9.entry.js +0 -4
- package/dist/ionic/p-66494f9b.entry.js +0 -4
- package/dist/ionic/p-6a56880f.entry.js +0 -4
- package/dist/ionic/p-6af16209.entry.js +0 -4
- package/dist/ionic/p-6b97f2a3.entry.js +0 -4
- package/dist/ionic/p-6da572e7.entry.js +0 -4
- package/dist/ionic/p-6e99ae8d.entry.js +0 -4
- package/dist/ionic/p-7f269aff.entry.js +0 -4
- package/dist/ionic/p-7f9db51b.entry.js +0 -4
- package/dist/ionic/p-7fe42b71.entry.js +0 -4
- package/dist/ionic/p-823eccd3.entry.js +0 -4
- package/dist/ionic/p-87125490.entry.js +0 -4
- package/dist/ionic/p-898f9d11.entry.js +0 -4
- package/dist/ionic/p-8a3a936b.entry.js +0 -4
- package/dist/ionic/p-9833cf63.entry.js +0 -4
- package/dist/ionic/p-9eeaBrnk.js +0 -4
- package/dist/ionic/p-AlrZKoWR.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-Csx_Ej2k.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-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-a39db980.entry.js +0 -4
- package/dist/ionic/p-a805674e.entry.js +0 -4
- package/dist/ionic/p-b553828c.entry.js +0 -4
- package/dist/ionic/p-b5e3e1f7.entry.js +0 -4
- package/dist/ionic/p-b6e0ff03.entry.js +0 -4
- package/dist/ionic/p-b8f4a31c.entry.js +0 -4
- package/dist/ionic/p-ca31010f.entry.js +0 -4
- package/dist/ionic/p-cce0cd26.entry.js +0 -4
- package/dist/ionic/p-dc198c3a.entry.js +0 -4
- package/dist/ionic/p-e0d788e9.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-e9dd191b.entry.js +0 -4
- package/dist/ionic/p-ede28b71.entry.js +0 -4
- package/dist/ionic/p-f17d05e3.entry.js +0 -4
- package/dist/ionic/p-f5dfb9a3.entry.js +0 -4
- package/dist/ionic/p-f7762013.entry.js +0 -4
- package/dist/ionic/p-fed27c64.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
|
*/
|
|
@@ -162,40 +176,9 @@ export class Select {
|
|
|
162
176
|
this.emitStyle();
|
|
163
177
|
}
|
|
164
178
|
setValue(value) {
|
|
165
|
-
if (this.isValueEqual(this.value, value)) {
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
179
|
this.value = value;
|
|
169
180
|
this.ionChange.emit({ value });
|
|
170
181
|
}
|
|
171
|
-
isValueEqual(currentValue, newValue) {
|
|
172
|
-
if (this.multiple) {
|
|
173
|
-
const currentArr = Array.isArray(currentValue) ? currentValue : [];
|
|
174
|
-
const newArr = Array.isArray(newValue) ? newValue : [];
|
|
175
|
-
if (currentArr.length !== newArr.length) {
|
|
176
|
-
return false;
|
|
177
|
-
}
|
|
178
|
-
// Multiset compare: each new value must match a distinct current value.
|
|
179
|
-
// A plain `every(isOptionSelected)` would accept ['a','a'] as equal to
|
|
180
|
-
// ['a','b'] when both 'a' and 'b' map to options whose values overlap.
|
|
181
|
-
const remaining = currentArr.slice();
|
|
182
|
-
return newArr.every((val) => {
|
|
183
|
-
const idx = remaining.findIndex((c) => compareOptions(c, val, this.compareWith));
|
|
184
|
-
if (idx === -1) {
|
|
185
|
-
return false;
|
|
186
|
-
}
|
|
187
|
-
remaining.splice(idx, 1);
|
|
188
|
-
return true;
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
if (currentValue == null && newValue == null) {
|
|
192
|
-
return true;
|
|
193
|
-
}
|
|
194
|
-
if (currentValue == null || newValue == null) {
|
|
195
|
-
return false;
|
|
196
|
-
}
|
|
197
|
-
return compareOptions(currentValue, newValue, this.compareWith);
|
|
198
|
-
}
|
|
199
182
|
async connectedCallback() {
|
|
200
183
|
const { el } = this;
|
|
201
184
|
this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
|
|
@@ -430,9 +413,14 @@ export class Select {
|
|
|
430
413
|
.join(' ');
|
|
431
414
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
432
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;
|
|
433
421
|
return {
|
|
434
422
|
role: isSelected ? 'selected' : '',
|
|
435
|
-
text:
|
|
423
|
+
text: text !== null && text !== void 0 ? text : '',
|
|
436
424
|
cssClass: optClass,
|
|
437
425
|
handler: () => {
|
|
438
426
|
this.setValue(value);
|
|
@@ -441,6 +429,9 @@ export class Select {
|
|
|
441
429
|
'aria-checked': isSelected ? 'true' : 'false',
|
|
442
430
|
role: 'radio',
|
|
443
431
|
},
|
|
432
|
+
startContent: startContent !== null && startContent !== void 0 ? startContent : undefined,
|
|
433
|
+
endContent: endContent !== null && endContent !== void 0 ? endContent : undefined,
|
|
434
|
+
description: option.description,
|
|
444
435
|
};
|
|
445
436
|
});
|
|
446
437
|
// Add "cancel" button
|
|
@@ -461,13 +452,21 @@ export class Select {
|
|
|
461
452
|
.filter((cls) => cls !== 'hydrated')
|
|
462
453
|
.join(' ');
|
|
463
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;
|
|
464
460
|
return {
|
|
465
461
|
type: inputType,
|
|
466
462
|
cssClass: optClass,
|
|
467
|
-
label:
|
|
463
|
+
label: label !== null && label !== void 0 ? label : '',
|
|
468
464
|
value,
|
|
469
465
|
checked: isOptionSelected(selectValue, value, this.compareWith),
|
|
470
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,
|
|
471
470
|
};
|
|
472
471
|
});
|
|
473
472
|
return alertInputs;
|
|
@@ -480,8 +479,13 @@ export class Select {
|
|
|
480
479
|
.filter((cls) => cls !== 'hydrated')
|
|
481
480
|
.join(' ');
|
|
482
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;
|
|
483
487
|
return {
|
|
484
|
-
text:
|
|
488
|
+
text: text !== null && text !== void 0 ? text : '',
|
|
485
489
|
cssClass: optClass,
|
|
486
490
|
value,
|
|
487
491
|
checked: isOptionSelected(selectValue, value, this.compareWith),
|
|
@@ -492,6 +496,9 @@ export class Select {
|
|
|
492
496
|
this.close();
|
|
493
497
|
}
|
|
494
498
|
},
|
|
499
|
+
startContent: startContent !== null && startContent !== void 0 ? startContent : undefined,
|
|
500
|
+
endContent: endContent !== null && endContent !== void 0 ? endContent : undefined,
|
|
501
|
+
description: option.description,
|
|
495
502
|
};
|
|
496
503
|
});
|
|
497
504
|
return popoverOptions;
|
|
@@ -499,8 +506,8 @@ export class Select {
|
|
|
499
506
|
async openPopover(ev) {
|
|
500
507
|
const { fill, labelPlacement } = this;
|
|
501
508
|
const interfaceOptions = this.interfaceOptions;
|
|
502
|
-
const
|
|
503
|
-
const showBackdrop =
|
|
509
|
+
const theme = getIonTheme(this);
|
|
510
|
+
const showBackdrop = theme === 'md' ? false : true;
|
|
504
511
|
const multiple = this.multiple;
|
|
505
512
|
const value = this.value;
|
|
506
513
|
let event = ev;
|
|
@@ -511,7 +518,7 @@ export class Select {
|
|
|
511
518
|
* when using a fill in MD mode or if the
|
|
512
519
|
* label is floating/stacked.
|
|
513
520
|
*/
|
|
514
|
-
if (hasFloatingOrStackedLabel || (
|
|
521
|
+
if (hasFloatingOrStackedLabel || (theme === 'md' && fill !== undefined)) {
|
|
515
522
|
size = 'cover';
|
|
516
523
|
/**
|
|
517
524
|
* Otherwise the popover
|
|
@@ -524,15 +531,21 @@ export class Select {
|
|
|
524
531
|
ionShadowTarget: this.nativeWrapperEl,
|
|
525
532
|
} });
|
|
526
533
|
}
|
|
527
|
-
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,
|
|
528
537
|
event, alignment: 'center', size,
|
|
529
|
-
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: {
|
|
530
543
|
header: interfaceOptions.header,
|
|
531
544
|
subHeader: interfaceOptions.subHeader,
|
|
532
545
|
message: interfaceOptions.message,
|
|
533
546
|
multiple,
|
|
534
547
|
value,
|
|
535
|
-
options
|
|
548
|
+
options,
|
|
536
549
|
} });
|
|
537
550
|
/**
|
|
538
551
|
* Workaround for Stencil to autodefine
|
|
@@ -549,9 +562,9 @@ export class Select {
|
|
|
549
562
|
return popoverController.create(popoverOpts);
|
|
550
563
|
}
|
|
551
564
|
async openActionSheet() {
|
|
552
|
-
const
|
|
565
|
+
const theme = getIonTheme(this);
|
|
553
566
|
const interfaceOptions = this.interfaceOptions;
|
|
554
|
-
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] });
|
|
555
568
|
/**
|
|
556
569
|
* Workaround for Stencil to autodefine
|
|
557
570
|
* ion-action-sheet when
|
|
@@ -568,8 +581,8 @@ export class Select {
|
|
|
568
581
|
async openAlert() {
|
|
569
582
|
const interfaceOptions = this.interfaceOptions;
|
|
570
583
|
const inputType = this.multiple ? 'checkbox' : 'radio';
|
|
571
|
-
const
|
|
572
|
-
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: [
|
|
573
586
|
{
|
|
574
587
|
text: this.cancelText,
|
|
575
588
|
role: 'cancel',
|
|
@@ -603,10 +616,11 @@ export class Select {
|
|
|
603
616
|
}
|
|
604
617
|
openModal() {
|
|
605
618
|
const { multiple, value, interfaceOptions } = this;
|
|
606
|
-
const
|
|
607
|
-
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: {
|
|
608
621
|
header: interfaceOptions.header,
|
|
609
622
|
cancelText: this.cancelText,
|
|
623
|
+
cancelIcon: this.cancelIcon,
|
|
610
624
|
multiple,
|
|
611
625
|
value,
|
|
612
626
|
options: this.createOverlaySelectOptions(this.childOpts, value),
|
|
@@ -659,12 +673,18 @@ export class Select {
|
|
|
659
673
|
}
|
|
660
674
|
return;
|
|
661
675
|
}
|
|
662
|
-
|
|
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) {
|
|
663
683
|
const selectedText = this.selectedText;
|
|
664
684
|
if (selectedText != null && selectedText !== '') {
|
|
665
685
|
return selectedText;
|
|
666
686
|
}
|
|
667
|
-
return generateText(this.childOpts, this.value, this.compareWith);
|
|
687
|
+
return generateText(this.childOpts, this.value, this.compareWith, useHTML);
|
|
668
688
|
}
|
|
669
689
|
setFocus() {
|
|
670
690
|
if (this.focusEl) {
|
|
@@ -678,6 +698,18 @@ export class Select {
|
|
|
678
698
|
};
|
|
679
699
|
this.ionStyle.emit(style);
|
|
680
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
|
+
}
|
|
681
713
|
renderLabel() {
|
|
682
714
|
const { label } = this;
|
|
683
715
|
return (h("div", { class: {
|
|
@@ -710,8 +742,8 @@ export class Select {
|
|
|
710
742
|
* when fill="outline".
|
|
711
743
|
*/
|
|
712
744
|
renderLabelContainer() {
|
|
713
|
-
const
|
|
714
|
-
const hasOutlineFill =
|
|
745
|
+
const theme = getIonTheme(this);
|
|
746
|
+
const hasOutlineFill = theme === 'md' && this.fill === 'outline';
|
|
715
747
|
if (hasOutlineFill) {
|
|
716
748
|
/**
|
|
717
749
|
* The outline fill has a special outline
|
|
@@ -734,6 +766,47 @@ export class Select {
|
|
|
734
766
|
*/
|
|
735
767
|
return this.renderLabel();
|
|
736
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
|
+
}
|
|
737
810
|
/**
|
|
738
811
|
* Renders either the placeholder
|
|
739
812
|
* or the selected values based on
|
|
@@ -741,7 +814,7 @@ export class Select {
|
|
|
741
814
|
*/
|
|
742
815
|
renderSelectText() {
|
|
743
816
|
const { placeholder } = this;
|
|
744
|
-
const displayValue = this.getText();
|
|
817
|
+
const displayValue = this.getText(true);
|
|
745
818
|
let addPlaceholderClass = false;
|
|
746
819
|
let selectText = displayValue;
|
|
747
820
|
if (selectText === '' && placeholder !== undefined) {
|
|
@@ -753,6 +826,10 @@ export class Select {
|
|
|
753
826
|
'select-placeholder': addPlaceholderClass,
|
|
754
827
|
};
|
|
755
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
|
+
}
|
|
756
833
|
return (h("div", { "aria-hidden": "true", class: selectTextClasses, part: textPart }, selectText));
|
|
757
834
|
}
|
|
758
835
|
/**
|
|
@@ -760,21 +837,17 @@ export class Select {
|
|
|
760
837
|
* next to the select text.
|
|
761
838
|
*/
|
|
762
839
|
renderSelectIcon() {
|
|
763
|
-
const
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
icon = expandedIcon;
|
|
768
|
-
}
|
|
769
|
-
else {
|
|
770
|
-
const defaultIcon = mode === 'ios' ? chevronExpand : caretDownSharp;
|
|
771
|
-
icon = toggleIcon !== null && toggleIcon !== void 0 ? toggleIcon : defaultIcon;
|
|
840
|
+
const { isExpanded, selectExpandedIcon, selectCollapsedIcon } = this;
|
|
841
|
+
let icon = selectCollapsedIcon;
|
|
842
|
+
if (isExpanded) {
|
|
843
|
+
icon = selectExpandedIcon;
|
|
772
844
|
}
|
|
773
845
|
return h("ion-icon", { class: "select-icon", part: "icon", "aria-hidden": "true", icon: icon });
|
|
774
846
|
}
|
|
775
847
|
get ariaLabel() {
|
|
776
848
|
var _a;
|
|
777
849
|
const { placeholder, inheritedAttributes } = this;
|
|
850
|
+
// Get the plain text from the selected text
|
|
778
851
|
const displayValue = this.getText();
|
|
779
852
|
// The aria label should be preferred over visible text if both are specified
|
|
780
853
|
const definedLabel = (_a = inheritedAttributes['aria-label']) !== null && _a !== void 0 ? _a : this.labelText;
|
|
@@ -803,6 +876,63 @@ export class Select {
|
|
|
803
876
|
const { disabled, inputId, isExpanded, required } = this;
|
|
804
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) }));
|
|
805
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
|
+
}
|
|
806
936
|
getHintTextId() {
|
|
807
937
|
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
808
938
|
if (isInvalid && errorText) {
|
|
@@ -840,13 +970,17 @@ export class Select {
|
|
|
840
970
|
return (h("div", { class: "select-bottom", part: "bottom" }, this.renderHintText()));
|
|
841
971
|
}
|
|
842
972
|
render() {
|
|
843
|
-
const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill,
|
|
844
|
-
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();
|
|
845
976
|
const hasFloatingOrStackedLabel = labelPlacement === 'floating' || labelPlacement === 'stacked';
|
|
977
|
+
const shouldRenderOuterIcon = theme !== 'ionic' && hasFloatingOrStackedLabel;
|
|
978
|
+
const shouldRenderInnerIcon = theme === 'ionic' || !hasFloatingOrStackedLabel;
|
|
846
979
|
const justifyEnabled = !hasFloatingOrStackedLabel && justify !== undefined;
|
|
847
980
|
const rtl = isRTL(el) ? 'rtl' : 'ltr';
|
|
848
981
|
const inItem = hostContext('ion-item', this.el);
|
|
849
|
-
const
|
|
982
|
+
const size = this.getSize();
|
|
983
|
+
const shouldRenderHighlight = theme === 'md' && fill !== 'outline' && !inItem;
|
|
850
984
|
const hasValue = this.hasValue();
|
|
851
985
|
const hasStartEndSlots = el.querySelector('[slot="start"], [slot="end"]') !== null;
|
|
852
986
|
renderHiddenInput(true, el, name, parseValue(value), disabled);
|
|
@@ -868,8 +1002,8 @@ export class Select {
|
|
|
868
1002
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
869
1003
|
*/
|
|
870
1004
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
|
|
871
|
-
return (h(Host, { key: '
|
|
872
|
-
[
|
|
1005
|
+
return (h(Host, { key: '03fa41ce215865ceeaeddec12d9ac66b5ab18e3f', onClick: this.onClick, class: createColorClasses(this.color, {
|
|
1006
|
+
[theme]: true,
|
|
873
1007
|
'in-item': inItem,
|
|
874
1008
|
'in-item-color': hostContext('ion-item.ion-color', el),
|
|
875
1009
|
'select-disabled': disabled,
|
|
@@ -886,20 +1020,33 @@ export class Select {
|
|
|
886
1020
|
[`select-justify-${justify}`]: justifyEnabled,
|
|
887
1021
|
[`select-shape-${shape}`]: shape !== undefined,
|
|
888
1022
|
[`select-label-placement-${labelPlacement}`]: true,
|
|
889
|
-
|
|
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()));
|
|
890
1035
|
}
|
|
891
1036
|
static get is() { return "ion-select"; }
|
|
892
1037
|
static get encapsulation() { return "shadow"; }
|
|
893
1038
|
static get originalStyleUrls() {
|
|
894
1039
|
return {
|
|
895
1040
|
"ios": ["select.ios.scss"],
|
|
896
|
-
"md": ["select.md.scss"]
|
|
1041
|
+
"md": ["select.md.scss"],
|
|
1042
|
+
"ionic": ["select.ionic.scss"]
|
|
897
1043
|
};
|
|
898
1044
|
}
|
|
899
1045
|
static get styleUrls() {
|
|
900
1046
|
return {
|
|
901
1047
|
"ios": ["select.ios.css"],
|
|
902
|
-
"md": ["select.md.css"]
|
|
1048
|
+
"md": ["select.md.css"],
|
|
1049
|
+
"ionic": ["select.ionic.css"]
|
|
903
1050
|
};
|
|
904
1051
|
}
|
|
905
1052
|
static get properties() {
|
|
@@ -924,6 +1071,26 @@ export class Select {
|
|
|
924
1071
|
"attribute": "cancel-text",
|
|
925
1072
|
"defaultValue": "'Cancel'"
|
|
926
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
|
+
},
|
|
927
1094
|
"color": {
|
|
928
1095
|
"type": "string",
|
|
929
1096
|
"mutable": false,
|
|
@@ -1008,7 +1175,7 @@ export class Select {
|
|
|
1008
1175
|
"optional": true,
|
|
1009
1176
|
"docs": {
|
|
1010
1177
|
"tags": [],
|
|
1011
|
-
"text": "The fill for the item. If `\"solid\"` the item will have a background. If\n`\"outline\"` the item will be transparent with a border. Only available in
|
|
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."
|
|
1012
1179
|
},
|
|
1013
1180
|
"getter": false,
|
|
1014
1181
|
"setter": false,
|
|
@@ -1268,7 +1435,7 @@ export class Select {
|
|
|
1268
1435
|
"optional": true,
|
|
1269
1436
|
"docs": {
|
|
1270
1437
|
"tags": [],
|
|
1271
|
-
"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."
|
|
1272
1439
|
},
|
|
1273
1440
|
"getter": false,
|
|
1274
1441
|
"setter": false,
|
|
@@ -1287,70 +1454,89 @@ export class Select {
|
|
|
1287
1454
|
"optional": true,
|
|
1288
1455
|
"docs": {
|
|
1289
1456
|
"tags": [],
|
|
1290
|
-
"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."
|
|
1291
1458
|
},
|
|
1292
1459
|
"getter": false,
|
|
1293
1460
|
"setter": false,
|
|
1294
1461
|
"reflect": false,
|
|
1295
1462
|
"attribute": "expanded-icon"
|
|
1296
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
|
+
},
|
|
1297
1484
|
"shape": {
|
|
1298
1485
|
"type": "string",
|
|
1299
1486
|
"mutable": false,
|
|
1300
1487
|
"complexType": {
|
|
1301
|
-
"original": "'round'",
|
|
1302
|
-
"resolved": "\"round\" | undefined",
|
|
1488
|
+
"original": "'soft' | 'round' | 'rectangular'",
|
|
1489
|
+
"resolved": "\"rectangular\" | \"round\" | \"soft\" | undefined",
|
|
1303
1490
|
"references": {}
|
|
1304
1491
|
},
|
|
1305
1492
|
"required": false,
|
|
1306
1493
|
"optional": true,
|
|
1307
1494
|
"docs": {
|
|
1308
1495
|
"tags": [],
|
|
1309
|
-
"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."
|
|
1310
1497
|
},
|
|
1311
1498
|
"getter": false,
|
|
1312
1499
|
"setter": false,
|
|
1313
1500
|
"reflect": false,
|
|
1314
1501
|
"attribute": "shape"
|
|
1315
1502
|
},
|
|
1316
|
-
"
|
|
1317
|
-
"type": "
|
|
1318
|
-
"mutable":
|
|
1503
|
+
"size": {
|
|
1504
|
+
"type": "string",
|
|
1505
|
+
"mutable": false,
|
|
1319
1506
|
"complexType": {
|
|
1320
|
-
"original": "
|
|
1321
|
-
"resolved": "
|
|
1507
|
+
"original": "'small' | 'medium' | 'large'",
|
|
1508
|
+
"resolved": "\"large\" | \"medium\" | \"small\" | undefined",
|
|
1322
1509
|
"references": {}
|
|
1323
1510
|
},
|
|
1324
1511
|
"required": false,
|
|
1325
1512
|
"optional": true,
|
|
1326
1513
|
"docs": {
|
|
1327
1514
|
"tags": [],
|
|
1328
|
-
"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."
|
|
1329
1516
|
},
|
|
1330
1517
|
"getter": false,
|
|
1331
1518
|
"setter": false,
|
|
1332
1519
|
"reflect": false,
|
|
1333
|
-
"attribute": "
|
|
1520
|
+
"attribute": "size"
|
|
1334
1521
|
},
|
|
1335
|
-
"
|
|
1336
|
-
"type": "
|
|
1337
|
-
"mutable":
|
|
1522
|
+
"value": {
|
|
1523
|
+
"type": "any",
|
|
1524
|
+
"mutable": true,
|
|
1338
1525
|
"complexType": {
|
|
1339
|
-
"original": "
|
|
1340
|
-
"resolved": "
|
|
1526
|
+
"original": "any | null",
|
|
1527
|
+
"resolved": "any",
|
|
1341
1528
|
"references": {}
|
|
1342
1529
|
},
|
|
1343
1530
|
"required": false,
|
|
1344
|
-
"optional":
|
|
1531
|
+
"optional": true,
|
|
1345
1532
|
"docs": {
|
|
1346
1533
|
"tags": [],
|
|
1347
|
-
"text": "
|
|
1534
|
+
"text": "The value of the select."
|
|
1348
1535
|
},
|
|
1349
1536
|
"getter": false,
|
|
1350
1537
|
"setter": false,
|
|
1351
1538
|
"reflect": false,
|
|
1352
|
-
"attribute": "
|
|
1353
|
-
"defaultValue": "false"
|
|
1539
|
+
"attribute": "value"
|
|
1354
1540
|
}
|
|
1355
1541
|
};
|
|
1356
1542
|
}
|
|
@@ -1546,25 +1732,176 @@ const parseValue = (value) => {
|
|
|
1546
1732
|
}
|
|
1547
1733
|
return value.toString();
|
|
1548
1734
|
};
|
|
1549
|
-
const generateText = (opts, value, compareWith) => {
|
|
1735
|
+
const generateText = (opts, value, compareWith, useHTML = false) => {
|
|
1550
1736
|
if (value === undefined) {
|
|
1551
1737
|
return '';
|
|
1552
1738
|
}
|
|
1553
1739
|
if (Array.isArray(value)) {
|
|
1554
1740
|
return value
|
|
1555
|
-
.map((v) => textForValue(opts, v, compareWith))
|
|
1741
|
+
.map((v) => textForValue(opts, v, compareWith, useHTML))
|
|
1556
1742
|
.filter((opt) => opt !== null)
|
|
1557
1743
|
.join(', ');
|
|
1558
1744
|
}
|
|
1559
1745
|
else {
|
|
1560
|
-
return textForValue(opts, value, compareWith) || '';
|
|
1746
|
+
return textForValue(opts, value, compareWith, useHTML) || '';
|
|
1561
1747
|
}
|
|
1562
1748
|
};
|
|
1563
|
-
|
|
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) => {
|
|
1564
1761
|
const selectOpt = opts.find((opt) => {
|
|
1565
1762
|
return compareOptions(value, getOptionValue(opt), compareWith);
|
|
1566
1763
|
});
|
|
1567
|
-
|
|
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(' ');
|
|
1568
1905
|
};
|
|
1569
1906
|
let selectIds = 0;
|
|
1570
1907
|
const OPTION_CLASS = 'select-interface-option';
|