@ionic/core 8.8.9-dev.11781013468.1ed93da9 → 8.8.9-dev.11781024903.1e4268e5
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-3Ni1Z654.js +4 -0
- package/components/p-7kL3tltU.js +4 -0
- package/components/p-B9MABkWm.js +4 -0
- package/components/p-BBu2n-9C.js +4 -0
- package/components/p-BDcohALy.js +4 -0
- package/components/p-BDqjX7Z_.js +4 -0
- package/components/p-BJzJdLry.js +4 -0
- package/components/p-BP_TU_4l.js +4 -0
- package/components/p-BYSs-jZz.js +4 -0
- package/components/p-BZCB7f49.js +4 -0
- package/components/p-BaPtaYEC.js +4 -0
- package/components/{p-Sh0ICmPV.js → p-BcbmT6b3.js} +1 -1
- package/components/p-Bg30AtDZ.js +4 -0
- package/components/p-BhkGOA7t.js +4 -0
- package/components/p-BjW8SOqw.js +4 -0
- package/components/p-Bk9hTY4h.js +4 -0
- package/components/p-BqDiJgC_.js +4 -0
- package/components/p-BqTwa6uT.js +4 -0
- package/components/p-BsNpz2u3.js +4 -0
- package/components/p-Bt0d89x3.js +4 -0
- package/components/p-BwKpO3Is.js +4 -0
- package/components/p-BwQOIWD7.js +4 -0
- package/components/p-Bxiu1dAN.js +4 -0
- package/components/{p-D5Ubpm7D.js → p-ByW0kK1F.js} +1 -1
- package/components/p-C75FIZBC.js +4 -0
- package/components/p-C8kBejTT.js +4 -0
- package/components/p-C91NnY87.js +4 -0
- package/components/p-CBS0sBAa.js +4 -0
- package/{dist/ionic/p-VAemlbDS.js → components/p-CDgDBcU9.js} +1 -1
- package/components/p-CODBQrPj.js +4 -0
- package/components/p-Cg-xpJhD.js +4 -0
- package/components/p-CgSn4J7d.js +4 -0
- package/components/p-CgZLVOCc.js +4 -0
- package/{dist/ionic/p-D13Eaw-8.js → components/p-Cllkut-B.js} +1 -1
- package/components/p-Cz4uz3Dy.js +4 -0
- package/components/p-CzC_ZSgb.js +4 -0
- package/components/p-D1t981Ih.js +4 -0
- package/components/p-D2mReIu8.js +4 -0
- package/components/p-D6g8ud1e.js +4 -0
- package/components/p-DDw-NYxz.js +4 -0
- package/components/p-DN_scBC7.js +4 -0
- package/components/p-DVcs-2q3.js +4 -0
- package/components/{p-DNQI6d-L.js → p-DXehWlOr.js} +1 -1
- package/components/p-DaJxRxSQ.js +4 -0
- package/components/p-Dhi5xtNS.js +4 -0
- package/components/p-Do7NMUwR.js +4 -0
- package/components/p-Dp2x0MpA.js +4 -0
- package/components/p-GElQZ38c.js +4 -0
- package/components/p-GtzfsjJP.js +4 -0
- package/components/p-LB-QPk3e.js +4 -0
- package/components/p-Skz67GXZ.js +4 -0
- package/components/p-WdrzoonY.js +4 -0
- package/components/p-XegQjlzJ.js +4 -0
- package/components/p-fIOYmaqA.js +4 -0
- package/components/p-h64_gZrH.js +4 -0
- package/components/p-hpwmNJ2Q.js +4 -0
- package/components/p-kKYBfhbe.js +4 -0
- package/components/p-lGSe6-vg.js +4 -0
- package/components/{p-BAYYcg3o.js → p-oF-CwZ0b.js} +1 -1
- package/components/p-pvh0bjpw.js +4 -0
- package/components/{p-cyNmxje6.js → p-re70ahxF.js} +1 -1
- package/components/p-sToA4Co7.js +4 -0
- package/components/p-sehKq5RI.js +4 -0
- package/components/p-vXpMhGrs.js +4 -0
- package/components/{p-ijF0iCrA.js → p-wCDzv5Q8.js} +1 -1
- package/components/{p-DqLB8yFQ.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-BJq0kcy2.js → animation-BZJ2wKuM.js} +3 -3
- package/dist/cjs/{app-globals-BlqrqKTN.js → app-globals-C-d5fQ35.js} +1 -1
- package/dist/cjs/{button-active-0mPOKmV2.js → button-active-B_20Nxkv.js} +2 -2
- package/dist/cjs/{capacitor-DmA66EwP.js → capacitor-CXqhdZym.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-DLTUw-KF.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-BtICZDHr.js → framework-delegate-Dx9FrqAC.js} +4 -2
- package/dist/cjs/{haptic-ClPPQ_PS.js → haptic-CQJGW58i.js} +1 -1
- package/dist/cjs/{helpers-Cv23MFHM.js → helpers-DJYxKN5U.js} +57 -4
- package/dist/cjs/{index-CIrkNXqJ.js → index-BJrpF9T3.js} +2 -2
- package/dist/cjs/{index-aC4x3Fk3.js → index-BekUBS8C.js} +15 -15
- package/dist/cjs/{index-DqmRDbxg.js → index-CgAbCW6L.js} +2 -0
- package/dist/cjs/{index-D81eLYUM.js → index-CwxYd6UD.js} +9 -8
- package/dist/cjs/{index-Ct7gcRif.js → index-CzcLEdQ5.js} +64 -71
- package/dist/cjs/{index-BERfRao3.js → index-DSNlrgfO.js} +4 -4
- package/dist/cjs/index-Dm4Dm7Vg.js +414 -0
- package/dist/cjs/index.cjs.js +17 -16
- package/dist/cjs/{input-shims-CFLg7uzj.js → input-shims-VyZciSxi.js} +18 -17
- package/dist/cjs/{input.utils-DetjmtH2.js → input.utils-Ct5KzpYv.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 +78 -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 +529 -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 +125 -35
- package/dist/cjs/ion-item-option_3.cjs.entry.js +467 -52
- package/dist/cjs/ion-item_8.cjs.entry.js +115 -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 -145
- 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 +39 -15
- 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 +138 -25
- 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 +115 -38
- package/dist/cjs/ion-select_3.cjs.entry.js +510 -113
- 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 +71 -47
- package/dist/cjs/ion-toggle.cjs.entry.js +84 -27
- package/dist/cjs/ionic-global-BW5tRzrz.js +519 -0
- package/dist/cjs/ionic.cjs.js +5 -5
- package/dist/cjs/{ios.transition-BOSWOaiK.js → ios.transition-CyNNpj1i.js} +7 -5
- package/dist/cjs/{keyboard-hHzlEQpk.js → keyboard-CA6RtoWx.js} +4 -3
- package/dist/cjs/{keyboard-UuAS4D_9.js → keyboard-VLGMzWBE.js} +1 -1
- package/dist/cjs/{keyboard-controller-GXBiBRKS.js → keyboard-controller-CCTvHp9l.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-B8-wBZqt.js → md.transition-BEfrfWKW.js} +6 -5
- package/dist/cjs/{notch-controller-18PzRGXd.js → notch-controller-BTZCPOsd.js} +4 -4
- package/dist/cjs/overlay-control-label-DnRLQR1t.js +52 -0
- package/dist/cjs/{overlays-DSmSrd_4.js → overlays-BuMIwR8B.js} +117 -42
- package/dist/cjs/select-option-render-DQyZnlF5.js +116 -0
- package/dist/cjs/{status-tap-BXX8H8_Y.js → status-tap-CTY2dMsZ.js} +4 -3
- package/dist/cjs/{swipe-back-C0GCB18x.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 +14 -4
- 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 +491 -0
- package/dist/collection/components/action-sheet/action-sheet.ios.css +368 -11
- package/dist/collection/components/action-sheet/action-sheet.js +33 -18
- package/dist/collection/components/action-sheet/action-sheet.md.css +307 -10
- package/dist/collection/components/alert/alert.ionic.css +784 -0
- package/dist/collection/components/alert/alert.ios.css +482 -19
- package/dist/collection/components/alert/alert.js +68 -35
- package/dist/collection/components/alert/alert.md.css +465 -29
- 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 +600 -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 +153 -42
- 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 +496 -0
- package/dist/collection/components/item/item.ios.css +109 -69
- package/dist/collection/components/item/item.js +50 -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 -20
- 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 +185 -38
- 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 +474 -97
- package/dist/collection/components/select/select.md.css +364 -178
- package/dist/collection/components/select-modal/select-modal.ionic.css +264 -0
- package/dist/collection/components/select-modal/select-modal.ios.css +467 -0
- package/dist/collection/components/select-modal/select-modal.js +127 -30
- package/dist/collection/components/select-modal/select-modal.md.css +395 -0
- package/dist/collection/components/select-option/select-option.js +70 -2
- package/dist/collection/components/select-popover/select-popover.ionic.css +252 -0
- package/dist/collection/components/select-popover/select-popover.ios.css +303 -20
- package/dist/collection/components/select-popover/select-popover.js +89 -29
- package/dist/collection/components/select-popover/select-popover.md.css +346 -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 +16 -9
- 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 +39 -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/overlay-control-label.js +47 -0
- package/dist/collection/utils/overlays.js +97 -31
- package/dist/collection/utils/sanitization/index.js +255 -14
- package/dist/collection/utils/select-option-render.js +111 -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 +10106 -575
- package/dist/esm/{animation-DLJpuoEz.js → animation-Cd1EA2ar.js} +2 -2
- package/dist/esm/{app-globals-D0C5S4hU.js → app-globals-9x_U7ofY.js} +1 -1
- package/dist/esm/{button-active-BSpTQmS9.js → button-active-B016u5N-.js} +2 -2
- package/dist/esm/{capacitor-CFERIeaU.js → capacitor-13SFuT1K.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-DZI70dKr.js → data-BNKYavC3.js} +6 -6
- package/dist/esm/{focus-visible-BmVRXR1y.js → focus-visible-vXpMhGrs.js} +23 -1
- package/dist/esm/{framework-delegate-FnPGymXL.js → framework-delegate-CjVwn_KZ.js} +4 -2
- package/dist/esm/{haptic-DzAMWJuk.js → haptic-CbnKC3go.js} +1 -1
- package/dist/esm/{helpers-HEqiOzXb.js → helpers-Do7zwvM1.js} +58 -5
- package/dist/esm/{index-B_dQk_WE.js → index-B2VWavcK.js} +4 -4
- package/dist/esm/{index-Q6UPU0Ay.js → index-BWMvrRiE.js} +11 -11
- package/dist/esm/{index-MEDq2S8l.js → index-BmkLokUL.js} +2 -2
- package/dist/esm/index-Bmyj8b0z.js +409 -0
- package/dist/esm/{index-AlrZKoWR.js → index-D2tu5BUg.js} +2 -1
- package/dist/esm/{index-BRHzoo00.js → index-D3WueHpT.js} +4 -3
- package/dist/esm/{index-tcQvqkiX.js → index-Omi_TcwW.js} +64 -71
- package/dist/esm/index.js +14 -14
- package/dist/esm/{input-shims-D10mwcw1.js → input-shims-DU23z7Hg.js} +7 -6
- package/dist/esm/{input.utils-Y6NgW8bw.js → input.utils-C64RbLd_.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 +77 -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 +527 -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 +125 -35
- package/dist/esm/ion-item-option_3.entry.js +467 -52
- package/dist/esm/ion-item_8.entry.js +115 -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 -98
- 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 +39 -15
- 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 +138 -25
- 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 +115 -38
- package/dist/esm/ion-select_3.entry.js +511 -114
- 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 +46 -22
- package/dist/esm/ion-toggle.entry.js +84 -27
- package/dist/esm/ionic-global--9mOmThr.js +508 -0
- package/dist/esm/ionic.js +6 -6
- package/dist/esm/{ios.transition-ClFrsIrS.js → ios.transition-DoQTN5Jk.js} +7 -5
- package/dist/esm/{keyboard-ywgs5efA.js → keyboard-Ca1zVCcH.js} +4 -3
- package/dist/esm/{keyboard-CUw4ekVy.js → keyboard-Dnno7-Ci.js} +1 -1
- package/dist/esm/{keyboard-controller-BaaVITYt.js → keyboard-controller-BpOdk6xN.js} +5 -3
- package/dist/esm/list-Dhi5xtNS.js +6 -0
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-D0msQmzI.js → md.transition-DZydrWwq.js} +6 -5
- package/dist/esm/{notch-controller-DKDjU_O7.js → notch-controller-klgNWpjJ.js} +2 -2
- package/dist/esm/overlay-control-label-CODBQrPj.js +49 -0
- package/dist/esm/{overlays-DLNOHWNc.js → overlays-CpQ6Df2g.js} +114 -39
- package/dist/esm/select-option-render-QGJ9tZHa.js +114 -0
- package/dist/esm/{status-tap-Kan2W7sh.js → status-tap-fYFdZg6z.js} +4 -3
- package/dist/esm/{swipe-back-DQ1q5MgD.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 +2671 -135
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-0030507d.entry.js +4 -0
- package/dist/ionic/p-084c2623.entry.js +4 -0
- package/dist/ionic/p-09f8a57f.entry.js +4 -0
- package/dist/ionic/p-108c0f30.entry.js +4 -0
- package/dist/ionic/p-1439fecb.entry.js +4 -0
- package/dist/ionic/p-18ed37e3.entry.js +4 -0
- package/dist/ionic/p-199bffb3.entry.js +4 -0
- package/dist/ionic/p-19a1ff9a.entry.js +4 -0
- package/dist/ionic/p-1a026890.entry.js +4 -0
- package/dist/ionic/p-1ad16c09.entry.js +4 -0
- package/dist/ionic/p-2049aa81.entry.js +4 -0
- package/dist/ionic/p-290778c1.entry.js +4 -0
- package/dist/ionic/p-2aa7567e.entry.js +4 -0
- package/dist/ionic/p-2e7e3da1.entry.js +4 -0
- package/dist/ionic/p-3656314c.entry.js +4 -0
- package/dist/ionic/p-379cc989.entry.js +4 -0
- package/dist/ionic/p-3f18dfe9.entry.js +4 -0
- package/dist/ionic/p-40d9e029.entry.js +4 -0
- package/dist/ionic/p-456736d1.entry.js +4 -0
- package/dist/ionic/p-48e3cb9e.entry.js +4 -0
- package/dist/ionic/p-497f6391.entry.js +4 -0
- package/dist/ionic/p-64b4e6eb.entry.js +4 -0
- package/dist/ionic/p-66eb0193.entry.js +4 -0
- package/dist/ionic/p-67c2d349.entry.js +4 -0
- package/dist/ionic/p-7054a1b9.entry.js +4 -0
- package/dist/ionic/p-70ee89c9.entry.js +4 -0
- package/dist/ionic/p-7186786e.entry.js +4 -0
- package/dist/ionic/p-7194f6fa.entry.js +4 -0
- package/dist/ionic/p-76c70824.entry.js +4 -0
- package/dist/ionic/p-7f294078.entry.js +4 -0
- package/dist/ionic/p-8458f1b6.entry.js +4 -0
- package/dist/ionic/p-88e7f52a.entry.js +4 -0
- package/dist/ionic/p-89eab395.entry.js +4 -0
- package/dist/ionic/p-93315d96.entry.js +4 -0
- package/dist/ionic/p-9ccfb733.entry.js +4 -0
- package/dist/ionic/p-9dfbe98d.entry.js +4 -0
- package/{components/p-BT_5jSqG.js → dist/ionic/p-B2-sg7NJ.js} +1 -1
- package/dist/ionic/p-B4ikoeaj.js +4 -0
- package/dist/ionic/p-BDqjX7Z_.js +4 -0
- package/dist/ionic/p-BFBCtvFI.js +4 -0
- package/dist/ionic/p-BQgCYKKG.js +4 -0
- package/dist/ionic/p-BYAxJDlE.js +4 -0
- package/dist/ionic/p-BYSs-jZz.js +4 -0
- package/dist/ionic/p-BjW8SOqw.js +4 -0
- package/dist/ionic/{p-CKvCXMs9.js → p-BmEwy3tY.js} +1 -1
- package/dist/ionic/p-BwKpO3Is.js +4 -0
- package/dist/ionic/{p-DAAFkPFT.js → p-C8IHbcuP.js} +1 -1
- package/dist/ionic/p-CDn0uNJA.js +4 -0
- package/dist/ionic/p-CHE1xWbg.js +4 -0
- package/dist/ionic/p-CK179dBb.js +4 -0
- package/dist/ionic/p-CODBQrPj.js +4 -0
- package/dist/ionic/p-CYhXBSjd.js +4 -0
- package/{components/p-D13Eaw-8.js → dist/ionic/p-CuGhCBt7.js} +1 -1
- package/dist/ionic/p-CxRK9GyE.js +4 -0
- package/dist/ionic/p-D1t981Ih.js +4 -0
- package/dist/ionic/p-D2tu5BUg.js +4 -0
- package/dist/ionic/p-DDFhx1YX.js +4 -0
- package/dist/ionic/{p-Wk5HzclC.js → p-DKWXAwlR.js} +1 -1
- package/dist/ionic/p-DNGqaUsl.js +4 -0
- package/dist/ionic/p-DaJxRxSQ.js +4 -0
- package/dist/ionic/p-DaknVxZR.js +4 -0
- package/dist/ionic/p-Dhi5xtNS.js +4 -0
- package/dist/ionic/p-DoyDJ2X5.js +4 -0
- package/dist/ionic/p-E1wtzfO0.js +4 -0
- package/dist/ionic/p-FvDKM4Ax.js +4 -0
- package/dist/ionic/p-IXZW3FBt.js +4 -0
- package/dist/ionic/p-NqPMS7BP.js +4 -0
- package/dist/ionic/p-Omi_TcwW.js +5 -0
- package/dist/ionic/p-PoSbs6oh.js +4 -0
- package/dist/ionic/p-VAJ_3beW.js +4 -0
- package/dist/ionic/p-a3f9be52.entry.js +4 -0
- package/dist/ionic/p-b4fd91b8.entry.js +4 -0
- package/dist/ionic/p-b653f4c2.entry.js +4 -0
- package/dist/ionic/p-b69add0e.entry.js +4 -0
- package/dist/ionic/p-b7235e85.entry.js +4 -0
- package/dist/ionic/p-b847907d.entry.js +4 -0
- package/dist/ionic/p-bc317965.entry.js +4 -0
- package/dist/ionic/p-bc3d68ff.entry.js +4 -0
- package/dist/ionic/p-bsfLvRbd.js +4 -0
- package/dist/ionic/p-c684a3b6.entry.js +4 -0
- package/dist/ionic/p-c7139c41.entry.js +4 -0
- package/dist/ionic/p-c94fbdab.entry.js +4 -0
- package/dist/ionic/p-dac1d4de.entry.js +4 -0
- package/dist/ionic/p-dd2981d0.entry.js +4 -0
- package/dist/ionic/p-e89848b2.entry.js +4 -0
- package/dist/ionic/p-eTI_FbQJ.js +4 -0
- package/dist/ionic/p-f2f740aa.entry.js +4 -0
- package/dist/ionic/p-f52856cb.entry.js +4 -0
- package/dist/ionic/p-fIOYmaqA.js +4 -0
- package/dist/ionic/p-fbdbdb3e.entry.js +4 -0
- package/dist/ionic/p-ff09d2a5.entry.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 +185 -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 +32 -6
- 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 +52 -10
- 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 +31 -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 +44 -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 +2136 -259
- 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/stencil-public-runtime.d.ts +1 -4
- package/dist/types/utils/config.d.ts +114 -2
- package/dist/types/utils/css-value-validation.d.ts +21 -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/overlay-control-label.d.ts +34 -0
- package/dist/types/utils/overlays-interface.d.ts +31 -1
- package/dist/types/utils/overlays.d.ts +10 -12
- package/dist/types/utils/sanitization/index.d.ts +54 -2
- package/dist/types/utils/select-option-render.d.ts +53 -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 +6668 -2303
- package/hydrate/index.mjs +6668 -2303
- package/package.json +12 -40
- package/components/p--JUspHvy.js +0 -4
- package/components/p-B8U2xbtx.js +0 -4
- package/components/p-B9jFTlwE.js +0 -4
- package/components/p-BTPfOxsU.js +0 -4
- package/components/p-Baq1XyAy.js +0 -4
- package/components/p-BhmadOit.js +0 -4
- package/components/p-BirPFsRD.js +0 -4
- package/components/p-BjfgFSSR.js +0 -4
- package/components/p-BmVRXR1y.js +0 -4
- package/components/p-BnqQlm7c.js +0 -4
- package/components/p-BpCi7xHq.js +0 -4
- package/components/p-Bz0dSlXZ.js +0 -4
- package/components/p-C1aScSTo.js +0 -4
- package/components/p-C4t5ymfq.js +0 -4
- package/components/p-CHqRYvYm.js +0 -4
- package/components/p-CHzfYZbv.js +0 -4
- package/components/p-CI3ncNZm.js +0 -4
- package/components/p-CIGNaXM1.js +0 -4
- package/components/p-CO7fmmxt.js +0 -4
- package/components/p-CSZf8_j0.js +0 -4
- package/components/p-C_xFdyXe.js +0 -4
- package/components/p-Ciz1-FuE.js +0 -4
- package/components/p-Ck2wcXbv.js +0 -4
- package/components/p-CmR5uXej.js +0 -4
- package/components/p-CtWGkNnJ.js +0 -4
- package/components/p-CtukzcyX.js +0 -4
- package/components/p-D6Ynv7Xh.js +0 -4
- package/components/p-D7bSXQD3.js +0 -4
- package/components/p-DEBD4LvH.js +0 -4
- package/components/p-DH50pr9O.js +0 -4
- package/components/p-DIE4pXMl.js +0 -4
- package/components/p-DJztqcrH.js +0 -4
- package/components/p-DOFCbuQR.js +0 -4
- package/components/p-DhkITZ-y.js +0 -4
- package/components/p-DiVJyqlX.js +0 -4
- package/components/p-DmpBvltk.js +0 -4
- package/components/p-DnL1c9_X.js +0 -4
- package/components/p-DpV-p5Xs.js +0 -4
- package/components/p-DqZAXv2t.js +0 -4
- package/components/p-Dz74mwlk.js +0 -4
- package/components/p-W5nO8mX_.js +0 -4
- package/components/p-XJWMAP8m.js +0 -4
- package/components/p-ZjP4CjeZ.js +0 -4
- package/components/p-djQLE88P.js +0 -4
- package/components/p-j5IxBIan.js +0 -4
- package/components/p-k_E4tX5Z.js +0 -4
- package/components/p-lE_JGpHD.js +0 -4
- package/components/p-r0aq7dpt.js +0 -4
- package/components/p-ryqmO0B-.js +0 -4
- package/components/p-wk2QqrAo.js +0 -4
- package/dist/cjs/config-xninhj0J.js +0 -201
- package/dist/cjs/hardware-back-button-iUuF_76h.js +0 -121
- package/dist/cjs/index-DkNv4J_i.js +0 -10
- package/dist/cjs/ionic-global-B-cA6LkY.js +0 -151
- package/dist/cjs/validity-BpS37YFM.js +0 -19
- package/dist/esm/config-DQCONYYp.js +0 -195
- package/dist/esm/hardware-back-button-B93Gru0Y.js +0 -115
- package/dist/esm/index-ZjP4CjeZ.js +0 -7
- package/dist/esm/ionic-global-Cp_eT4sZ.js +0 -146
- package/dist/esm/validity-DJztqcrH.js +0 -17
- package/dist/ionic/p-03aa786d.entry.js +0 -4
- package/dist/ionic/p-06c232a4.entry.js +0 -4
- package/dist/ionic/p-11684553.entry.js +0 -4
- package/dist/ionic/p-1ae21e4c.entry.js +0 -4
- package/dist/ionic/p-20b1a044.entry.js +0 -4
- package/dist/ionic/p-259d0d98.entry.js +0 -4
- package/dist/ionic/p-2a6d6565.entry.js +0 -4
- package/dist/ionic/p-341032b3.entry.js +0 -4
- package/dist/ionic/p-441fbb13.entry.js +0 -4
- package/dist/ionic/p-4502a274.entry.js +0 -4
- package/dist/ionic/p-4621c387.entry.js +0 -4
- package/dist/ionic/p-4bb3eb60.entry.js +0 -4
- package/dist/ionic/p-4e92a11f.entry.js +0 -4
- package/dist/ionic/p-50e1194a.entry.js +0 -4
- package/dist/ionic/p-51cd1643.entry.js +0 -4
- package/dist/ionic/p-5c3ec490.entry.js +0 -4
- package/dist/ionic/p-627fabd9.entry.js +0 -4
- package/dist/ionic/p-629e4703.entry.js +0 -4
- package/dist/ionic/p-76e92a84.entry.js +0 -4
- package/dist/ionic/p-7a37b3ce.entry.js +0 -4
- package/dist/ionic/p-7aed7726.entry.js +0 -4
- package/dist/ionic/p-7ebd980c.entry.js +0 -4
- package/dist/ionic/p-80b44b3c.entry.js +0 -4
- package/dist/ionic/p-81ea5652.entry.js +0 -4
- package/dist/ionic/p-8c8eee7d.entry.js +0 -4
- package/dist/ionic/p-8d624ee5.entry.js +0 -4
- package/dist/ionic/p-8d6fd502.entry.js +0 -4
- package/dist/ionic/p-9177f4ac.entry.js +0 -4
- package/dist/ionic/p-944c8939.entry.js +0 -4
- package/dist/ionic/p-9c6a5a8d.entry.js +0 -4
- package/dist/ionic/p-9eeaBrnk.js +0 -4
- package/dist/ionic/p-AlrZKoWR.js +0 -4
- package/dist/ionic/p-BGqMS-oh.js +0 -4
- package/dist/ionic/p-BUFIpxKM.js +0 -4
- package/dist/ionic/p-BmVRXR1y.js +0 -4
- package/dist/ionic/p-CFlfIb2g.js +0 -4
- package/dist/ionic/p-CIGNaXM1.js +0 -4
- package/dist/ionic/p-Cg5-OQYy.js +0 -4
- package/dist/ionic/p-CtWGkNnJ.js +0 -4
- package/dist/ionic/p-Cx3IXROA.js +0 -4
- package/dist/ionic/p-D4uTWt4-.js +0 -4
- package/dist/ionic/p-DC3RagnA.js +0 -4
- package/dist/ionic/p-DIuEbVLu.js +0 -4
- package/dist/ionic/p-DJztqcrH.js +0 -4
- package/dist/ionic/p-DSG2s2Eb.js +0 -4
- package/dist/ionic/p-Dfbt-q2k.js +0 -4
- package/dist/ionic/p-DiVJyqlX.js +0 -4
- package/dist/ionic/p-DoJvtrbw.js +0 -4
- package/dist/ionic/p-DzWaWHGc.js +0 -4
- package/dist/ionic/p-KjNvRoEp.js +0 -4
- package/dist/ionic/p-Nqf6uvGh.js +0 -4
- package/dist/ionic/p-SNAkTDfm.js +0 -4
- package/dist/ionic/p-ZjP4CjeZ.js +0 -4
- package/dist/ionic/p-a2e51c5d.entry.js +0 -4
- package/dist/ionic/p-a3bdcae6.entry.js +0 -4
- package/dist/ionic/p-a44b7536.entry.js +0 -4
- package/dist/ionic/p-a5213260.entry.js +0 -4
- package/dist/ionic/p-a7628bc7.entry.js +0 -4
- package/dist/ionic/p-b1599fca.entry.js +0 -4
- package/dist/ionic/p-b16be471.entry.js +0 -4
- package/dist/ionic/p-b6a7397c.entry.js +0 -4
- package/dist/ionic/p-b9ac1fe0.entry.js +0 -4
- package/dist/ionic/p-c6e49f3f.entry.js +0 -4
- package/dist/ionic/p-c93553d2.entry.js +0 -4
- package/dist/ionic/p-d2c7f046.entry.js +0 -4
- package/dist/ionic/p-d8387b99.entry.js +0 -4
- package/dist/ionic/p-d8ac9eea.entry.js +0 -4
- package/dist/ionic/p-db1b6738.entry.js +0 -4
- package/dist/ionic/p-dfa8d673.entry.js +0 -4
- package/dist/ionic/p-ed797c72.entry.js +0 -4
- package/dist/ionic/p-ef93ca92.entry.js +0 -4
- package/dist/ionic/p-f09f9642.entry.js +0 -4
- package/dist/ionic/p-f1c06f82.entry.js +0 -4
- package/dist/ionic/p-f386f6ae.entry.js +0 -4
- package/dist/ionic/p-fe4aa1db.entry.js +0 -4
- package/dist/ionic/p-mjKAFv89.js +0 -4
- package/dist/ionic/p-tcQvqkiX.js +0 -5
- package/dist/ionic/p-viFHDgRs.js +0 -4
- package/dist/ionic/p-xWb6fgfq.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 { reflectPropertiesToAttributes, sanitizeDOMTree } 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,10 +413,12 @@ export class Select {
|
|
|
430
413
|
.join(' ');
|
|
431
414
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
432
415
|
const isSelected = isOptionSelected(selectValue, value, this.compareWith);
|
|
416
|
+
const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
|
|
433
417
|
return {
|
|
434
418
|
role: isSelected ? 'selected' : '',
|
|
435
|
-
text:
|
|
419
|
+
text: content !== null && content !== void 0 ? content : '',
|
|
436
420
|
cssClass: optClass,
|
|
421
|
+
disabled: option.disabled,
|
|
437
422
|
handler: () => {
|
|
438
423
|
this.setValue(value);
|
|
439
424
|
},
|
|
@@ -441,6 +426,9 @@ export class Select {
|
|
|
441
426
|
'aria-checked': isSelected ? 'true' : 'false',
|
|
442
427
|
role: 'radio',
|
|
443
428
|
},
|
|
429
|
+
startContent,
|
|
430
|
+
endContent,
|
|
431
|
+
description: option.description,
|
|
444
432
|
};
|
|
445
433
|
});
|
|
446
434
|
// Add "cancel" button
|
|
@@ -461,13 +449,19 @@ export class Select {
|
|
|
461
449
|
.filter((cls) => cls !== 'hydrated')
|
|
462
450
|
.join(' ');
|
|
463
451
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
452
|
+
const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
|
|
464
453
|
return {
|
|
465
454
|
type: inputType,
|
|
466
455
|
cssClass: optClass,
|
|
467
|
-
label:
|
|
456
|
+
label: content !== null && content !== void 0 ? content : '',
|
|
468
457
|
value,
|
|
469
458
|
checked: isOptionSelected(selectValue, value, this.compareWith),
|
|
470
459
|
disabled: option.disabled,
|
|
460
|
+
startContent,
|
|
461
|
+
endContent,
|
|
462
|
+
description: option.description,
|
|
463
|
+
labelPlacement: option.labelPlacement,
|
|
464
|
+
justify: option.justify,
|
|
471
465
|
};
|
|
472
466
|
});
|
|
473
467
|
return alertInputs;
|
|
@@ -480,8 +474,9 @@ export class Select {
|
|
|
480
474
|
.filter((cls) => cls !== 'hydrated')
|
|
481
475
|
.join(' ');
|
|
482
476
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
477
|
+
const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
|
|
483
478
|
return {
|
|
484
|
-
text:
|
|
479
|
+
text: content !== null && content !== void 0 ? content : '',
|
|
485
480
|
cssClass: optClass,
|
|
486
481
|
value,
|
|
487
482
|
checked: isOptionSelected(selectValue, value, this.compareWith),
|
|
@@ -492,6 +487,11 @@ export class Select {
|
|
|
492
487
|
this.close();
|
|
493
488
|
}
|
|
494
489
|
},
|
|
490
|
+
startContent,
|
|
491
|
+
endContent,
|
|
492
|
+
description: option.description,
|
|
493
|
+
labelPlacement: option.labelPlacement,
|
|
494
|
+
justify: option.justify,
|
|
495
495
|
};
|
|
496
496
|
});
|
|
497
497
|
return popoverOptions;
|
|
@@ -499,8 +499,8 @@ export class Select {
|
|
|
499
499
|
async openPopover(ev) {
|
|
500
500
|
const { fill, labelPlacement } = this;
|
|
501
501
|
const interfaceOptions = this.interfaceOptions;
|
|
502
|
-
const
|
|
503
|
-
const showBackdrop =
|
|
502
|
+
const theme = getIonTheme(this);
|
|
503
|
+
const showBackdrop = theme === 'md' ? false : true;
|
|
504
504
|
const multiple = this.multiple;
|
|
505
505
|
const value = this.value;
|
|
506
506
|
let event = ev;
|
|
@@ -511,7 +511,7 @@ export class Select {
|
|
|
511
511
|
* when using a fill in MD mode or if the
|
|
512
512
|
* label is floating/stacked.
|
|
513
513
|
*/
|
|
514
|
-
if (hasFloatingOrStackedLabel || (
|
|
514
|
+
if (hasFloatingOrStackedLabel || (theme === 'md' && fill !== undefined)) {
|
|
515
515
|
size = 'cover';
|
|
516
516
|
/**
|
|
517
517
|
* Otherwise the popover
|
|
@@ -524,15 +524,21 @@ export class Select {
|
|
|
524
524
|
ionShadowTarget: this.nativeWrapperEl,
|
|
525
525
|
} });
|
|
526
526
|
}
|
|
527
|
-
const
|
|
527
|
+
const options = this.createOverlaySelectOptions(this.childOpts, value);
|
|
528
|
+
const hasRichContent = options.some((opt) => opt.startContent || opt.endContent || opt.description);
|
|
529
|
+
const popoverOpts = Object.assign(Object.assign({ theme,
|
|
528
530
|
event, alignment: 'center', size,
|
|
529
|
-
showBackdrop }, interfaceOptions), { component: 'ion-select-popover', cssClass: [
|
|
531
|
+
showBackdrop }, interfaceOptions), { component: 'ion-select-popover', cssClass: [
|
|
532
|
+
'select-popover',
|
|
533
|
+
hasRichContent ? 'select-popover-rich-content' : undefined,
|
|
534
|
+
interfaceOptions.cssClass,
|
|
535
|
+
], componentProps: {
|
|
530
536
|
header: interfaceOptions.header,
|
|
531
537
|
subHeader: interfaceOptions.subHeader,
|
|
532
538
|
message: interfaceOptions.message,
|
|
533
539
|
multiple,
|
|
534
540
|
value,
|
|
535
|
-
options
|
|
541
|
+
options,
|
|
536
542
|
} });
|
|
537
543
|
/**
|
|
538
544
|
* Workaround for Stencil to autodefine
|
|
@@ -549,9 +555,9 @@ export class Select {
|
|
|
549
555
|
return popoverController.create(popoverOpts);
|
|
550
556
|
}
|
|
551
557
|
async openActionSheet() {
|
|
552
|
-
const
|
|
558
|
+
const theme = getIonTheme(this);
|
|
553
559
|
const interfaceOptions = this.interfaceOptions;
|
|
554
|
-
const actionSheetOpts = Object.assign(Object.assign({
|
|
560
|
+
const actionSheetOpts = Object.assign(Object.assign({ theme }, interfaceOptions), { buttons: this.createActionSheetButtons(this.childOpts, this.value), cssClass: ['select-action-sheet', interfaceOptions.cssClass] });
|
|
555
561
|
/**
|
|
556
562
|
* Workaround for Stencil to autodefine
|
|
557
563
|
* ion-action-sheet when
|
|
@@ -568,8 +574,8 @@ export class Select {
|
|
|
568
574
|
async openAlert() {
|
|
569
575
|
const interfaceOptions = this.interfaceOptions;
|
|
570
576
|
const inputType = this.multiple ? 'checkbox' : 'radio';
|
|
571
|
-
const
|
|
572
|
-
const alertOpts = Object.assign(Object.assign({
|
|
577
|
+
const theme = getIonTheme(this);
|
|
578
|
+
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
579
|
{
|
|
574
580
|
text: this.cancelText,
|
|
575
581
|
role: 'cancel',
|
|
@@ -603,10 +609,11 @@ export class Select {
|
|
|
603
609
|
}
|
|
604
610
|
openModal() {
|
|
605
611
|
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: {
|
|
612
|
+
const theme = getIonTheme(this);
|
|
613
|
+
const modalOpts = Object.assign(Object.assign({}, interfaceOptions), { mode: theme, cssClass: ['select-modal', interfaceOptions.cssClass], component: 'ion-select-modal', componentProps: {
|
|
608
614
|
header: interfaceOptions.header,
|
|
609
615
|
cancelText: this.cancelText,
|
|
616
|
+
cancelIcon: this.cancelIcon,
|
|
610
617
|
multiple,
|
|
611
618
|
value,
|
|
612
619
|
options: this.createOverlaySelectOptions(this.childOpts, value),
|
|
@@ -659,12 +666,18 @@ export class Select {
|
|
|
659
666
|
}
|
|
660
667
|
return;
|
|
661
668
|
}
|
|
662
|
-
|
|
669
|
+
/**
|
|
670
|
+
* Returns the text to display in the select based on the selected value.
|
|
671
|
+
*
|
|
672
|
+
* @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`.
|
|
673
|
+
* @returns The text to display in the select, either with or without HTML based on the `useHTML` parameter.
|
|
674
|
+
*/
|
|
675
|
+
getText(useHTML = false) {
|
|
663
676
|
const selectedText = this.selectedText;
|
|
664
677
|
if (selectedText != null && selectedText !== '') {
|
|
665
678
|
return selectedText;
|
|
666
679
|
}
|
|
667
|
-
return generateText(this.childOpts, this.value, this.compareWith);
|
|
680
|
+
return generateText(this.childOpts, this.value, this.compareWith, useHTML);
|
|
668
681
|
}
|
|
669
682
|
setFocus() {
|
|
670
683
|
if (this.focusEl) {
|
|
@@ -678,6 +691,18 @@ export class Select {
|
|
|
678
691
|
};
|
|
679
692
|
this.ionStyle.emit(style);
|
|
680
693
|
}
|
|
694
|
+
getSize() {
|
|
695
|
+
const theme = getIonTheme(this);
|
|
696
|
+
const { size } = this;
|
|
697
|
+
// TODO(ROU-11370): Remove theme check when sizes are defined for all themes.
|
|
698
|
+
if (theme !== 'ionic') {
|
|
699
|
+
return undefined;
|
|
700
|
+
}
|
|
701
|
+
if (size === undefined) {
|
|
702
|
+
return 'medium';
|
|
703
|
+
}
|
|
704
|
+
return size;
|
|
705
|
+
}
|
|
681
706
|
renderLabel() {
|
|
682
707
|
const { label } = this;
|
|
683
708
|
return (h("div", { class: {
|
|
@@ -710,8 +735,8 @@ export class Select {
|
|
|
710
735
|
* when fill="outline".
|
|
711
736
|
*/
|
|
712
737
|
renderLabelContainer() {
|
|
713
|
-
const
|
|
714
|
-
const hasOutlineFill =
|
|
738
|
+
const theme = getIonTheme(this);
|
|
739
|
+
const hasOutlineFill = theme === 'md' && this.fill === 'outline';
|
|
715
740
|
if (hasOutlineFill) {
|
|
716
741
|
/**
|
|
717
742
|
* The outline fill has a special outline
|
|
@@ -734,6 +759,47 @@ export class Select {
|
|
|
734
759
|
*/
|
|
735
760
|
return this.renderLabel();
|
|
736
761
|
}
|
|
762
|
+
/**
|
|
763
|
+
* Wraps text nodes in the select text with span elements
|
|
764
|
+
* so spacing can be added between elements without
|
|
765
|
+
* changing the display to prevent losing the ellipses
|
|
766
|
+
* behavior.
|
|
767
|
+
*
|
|
768
|
+
* Only wraps when the string contains HTML elements
|
|
769
|
+
* alongside text.
|
|
770
|
+
*/
|
|
771
|
+
wrapSelectTextNodes(html) {
|
|
772
|
+
const temp = document.createElement('div');
|
|
773
|
+
temp.innerHTML = html;
|
|
774
|
+
const hasElements = Array.from(temp.childNodes).some((n) => n.nodeType === Node.ELEMENT_NODE);
|
|
775
|
+
// Return the plain text
|
|
776
|
+
if (!hasElements) {
|
|
777
|
+
return html;
|
|
778
|
+
}
|
|
779
|
+
Array.from(temp.childNodes).forEach((node) => {
|
|
780
|
+
var _a, _b, _c, _d;
|
|
781
|
+
if (node.nodeType === Node.TEXT_NODE && ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim())) {
|
|
782
|
+
const text = node.textContent;
|
|
783
|
+
/**
|
|
784
|
+
* Split comma separator from the text content
|
|
785
|
+
* e.g., ", Bacon" becomes ", " text node + <span>Bacon</span>.
|
|
786
|
+
*/
|
|
787
|
+
const commaMatch = text.match(/^(,\s*)(.*)/);
|
|
788
|
+
if (commaMatch) {
|
|
789
|
+
const commaNode = document.createTextNode(commaMatch[1]);
|
|
790
|
+
const wrapper = document.createElement('span');
|
|
791
|
+
wrapper.textContent = commaMatch[2];
|
|
792
|
+
(_b = node.parentNode) === null || _b === void 0 ? void 0 : _b.replaceChild(wrapper, node);
|
|
793
|
+
(_c = wrapper.parentNode) === null || _c === void 0 ? void 0 : _c.insertBefore(commaNode, wrapper);
|
|
794
|
+
return;
|
|
795
|
+
}
|
|
796
|
+
const wrapper = document.createElement('span');
|
|
797
|
+
(_d = node.parentNode) === null || _d === void 0 ? void 0 : _d.replaceChild(wrapper, node);
|
|
798
|
+
wrapper.appendChild(node);
|
|
799
|
+
}
|
|
800
|
+
});
|
|
801
|
+
return temp.innerHTML;
|
|
802
|
+
}
|
|
737
803
|
/**
|
|
738
804
|
* Renders either the placeholder
|
|
739
805
|
* or the selected values based on
|
|
@@ -741,7 +807,7 @@ export class Select {
|
|
|
741
807
|
*/
|
|
742
808
|
renderSelectText() {
|
|
743
809
|
const { placeholder } = this;
|
|
744
|
-
const displayValue = this.getText();
|
|
810
|
+
const displayValue = this.getText(true);
|
|
745
811
|
let addPlaceholderClass = false;
|
|
746
812
|
let selectText = displayValue;
|
|
747
813
|
if (selectText === '' && placeholder !== undefined) {
|
|
@@ -753,6 +819,10 @@ export class Select {
|
|
|
753
819
|
'select-placeholder': addPlaceholderClass,
|
|
754
820
|
};
|
|
755
821
|
const textPart = addPlaceholderClass ? 'placeholder' : 'text';
|
|
822
|
+
if (this.customHTMLEnabled) {
|
|
823
|
+
const wrapped = this.wrapSelectTextNodes(selectText);
|
|
824
|
+
return h("div", { "aria-hidden": "true", class: selectTextClasses, part: textPart, innerHTML: wrapped });
|
|
825
|
+
}
|
|
756
826
|
return (h("div", { "aria-hidden": "true", class: selectTextClasses, part: textPart }, selectText));
|
|
757
827
|
}
|
|
758
828
|
/**
|
|
@@ -760,21 +830,17 @@ export class Select {
|
|
|
760
830
|
* next to the select text.
|
|
761
831
|
*/
|
|
762
832
|
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;
|
|
833
|
+
const { isExpanded, selectExpandedIcon, selectCollapsedIcon } = this;
|
|
834
|
+
let icon = selectCollapsedIcon;
|
|
835
|
+
if (isExpanded) {
|
|
836
|
+
icon = selectExpandedIcon;
|
|
772
837
|
}
|
|
773
838
|
return h("ion-icon", { class: "select-icon", part: "icon", "aria-hidden": "true", icon: icon });
|
|
774
839
|
}
|
|
775
840
|
get ariaLabel() {
|
|
776
841
|
var _a;
|
|
777
842
|
const { placeholder, inheritedAttributes } = this;
|
|
843
|
+
// Get the plain text from the selected text
|
|
778
844
|
const displayValue = this.getText();
|
|
779
845
|
// The aria label should be preferred over visible text if both are specified
|
|
780
846
|
const definedLabel = (_a = inheritedAttributes['aria-label']) !== null && _a !== void 0 ? _a : this.labelText;
|
|
@@ -803,6 +869,63 @@ export class Select {
|
|
|
803
869
|
const { disabled, inputId, isExpanded, required } = this;
|
|
804
870
|
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
871
|
}
|
|
872
|
+
getShape() {
|
|
873
|
+
const theme = getIonTheme(this);
|
|
874
|
+
const { shape } = this;
|
|
875
|
+
// TODO(ROU-11366): Remove theme check when shapes are defined for all themes.
|
|
876
|
+
if (theme === 'ionic' && shape === undefined) {
|
|
877
|
+
return 'round';
|
|
878
|
+
}
|
|
879
|
+
return shape;
|
|
880
|
+
}
|
|
881
|
+
/**
|
|
882
|
+
* Get the icon to use for the expand icon.
|
|
883
|
+
* If an icon is set on the component, use that.
|
|
884
|
+
* Otherwise, use the icon set in the config.
|
|
885
|
+
* If no icon is set in the config, use the default icon.
|
|
886
|
+
*/
|
|
887
|
+
get selectExpandedIcon() {
|
|
888
|
+
// Return the expandedIcon or toggleIcon if either is explicitly set
|
|
889
|
+
if (this.expandedIcon != null) {
|
|
890
|
+
return this.expandedIcon;
|
|
891
|
+
}
|
|
892
|
+
else if (this.toggleIcon != null) {
|
|
893
|
+
return this.toggleIcon;
|
|
894
|
+
}
|
|
895
|
+
// Determine the theme and map to default icons
|
|
896
|
+
const theme = getIonTheme(this);
|
|
897
|
+
const defaultIcons = {
|
|
898
|
+
ios: chevronExpand,
|
|
899
|
+
ionic: caretDownRegular,
|
|
900
|
+
md: caretDownSharp,
|
|
901
|
+
};
|
|
902
|
+
// Get the default icon based on the theme, falling back to 'md' icon if necessary
|
|
903
|
+
const defaultIcon = defaultIcons[theme] || defaultIcons.md;
|
|
904
|
+
// Return the configured select expanded icon or the default icon
|
|
905
|
+
return config.get('selectExpandedIcon', defaultIcon);
|
|
906
|
+
}
|
|
907
|
+
/**
|
|
908
|
+
* Get the icon to use for the collapsed icon.
|
|
909
|
+
* If an icon is set on the component, use that.
|
|
910
|
+
* Otherwise, use the icon set in the config.
|
|
911
|
+
* If no icon is set in the config, use the default icon.
|
|
912
|
+
*/
|
|
913
|
+
get selectCollapsedIcon() {
|
|
914
|
+
// Return the toggleIcon if it is explicitly set
|
|
915
|
+
if (this.toggleIcon) {
|
|
916
|
+
return this.toggleIcon;
|
|
917
|
+
}
|
|
918
|
+
// Determine the theme and map to default icons
|
|
919
|
+
const theme = getIonTheme(this);
|
|
920
|
+
const defaultIcons = {
|
|
921
|
+
ios: chevronExpand,
|
|
922
|
+
ionic: caretDownRegular,
|
|
923
|
+
md: caretDownSharp,
|
|
924
|
+
};
|
|
925
|
+
// Get the default icon based on the theme, falling back to 'md' icon if necessary
|
|
926
|
+
const defaultIcon = defaultIcons[theme] || defaultIcons.md;
|
|
927
|
+
return config.get('selectCollapsedIcon', defaultIcon);
|
|
928
|
+
}
|
|
806
929
|
getHintTextId() {
|
|
807
930
|
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
808
931
|
if (isInvalid && errorText) {
|
|
@@ -840,13 +963,17 @@ export class Select {
|
|
|
840
963
|
return (h("div", { class: "select-bottom", part: "bottom" }, this.renderHintText()));
|
|
841
964
|
}
|
|
842
965
|
render() {
|
|
843
|
-
const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill,
|
|
844
|
-
const
|
|
966
|
+
const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill, name, value, hasFocus, } = this;
|
|
967
|
+
const theme = getIonTheme(this);
|
|
968
|
+
const shape = this.getShape();
|
|
845
969
|
const hasFloatingOrStackedLabel = labelPlacement === 'floating' || labelPlacement === 'stacked';
|
|
970
|
+
const shouldRenderOuterIcon = theme !== 'ionic' && hasFloatingOrStackedLabel;
|
|
971
|
+
const shouldRenderInnerIcon = theme === 'ionic' || !hasFloatingOrStackedLabel;
|
|
846
972
|
const justifyEnabled = !hasFloatingOrStackedLabel && justify !== undefined;
|
|
847
973
|
const rtl = isRTL(el) ? 'rtl' : 'ltr';
|
|
848
974
|
const inItem = hostContext('ion-item', this.el);
|
|
849
|
-
const
|
|
975
|
+
const size = this.getSize();
|
|
976
|
+
const shouldRenderHighlight = theme === 'md' && fill !== 'outline' && !inItem;
|
|
850
977
|
const hasValue = this.hasValue();
|
|
851
978
|
const hasStartEndSlots = el.querySelector('[slot="start"], [slot="end"]') !== null;
|
|
852
979
|
renderHiddenInput(true, el, name, parseValue(value), disabled);
|
|
@@ -868,8 +995,8 @@ export class Select {
|
|
|
868
995
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
869
996
|
*/
|
|
870
997
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
|
|
871
|
-
return (h(Host, { key: '
|
|
872
|
-
[
|
|
998
|
+
return (h(Host, { key: '03e44fdbb6e0451998711d3233cbf508538ee768', onClick: this.onClick, class: createColorClasses(this.color, {
|
|
999
|
+
[theme]: true,
|
|
873
1000
|
'in-item': inItem,
|
|
874
1001
|
'in-item-color': hostContext('ion-item.ion-color', el),
|
|
875
1002
|
'select-disabled': disabled,
|
|
@@ -886,20 +1013,33 @@ export class Select {
|
|
|
886
1013
|
[`select-justify-${justify}`]: justifyEnabled,
|
|
887
1014
|
[`select-shape-${shape}`]: shape !== undefined,
|
|
888
1015
|
[`select-label-placement-${labelPlacement}`]: true,
|
|
889
|
-
|
|
1016
|
+
[`select-size-${size}`]: size !== undefined,
|
|
1017
|
+
}) }, h("label", { key: '7bb66ac4302033164def96ee2e7e4c75e91486bf', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), h("div", { key: 'f471303b19939f7f2dbbff84c71baee0245744f8', class: "select-wrapper-inner", part: "inner" },
|
|
1018
|
+
/**
|
|
1019
|
+
* For the ionic theme, we render the outline container here
|
|
1020
|
+
* instead of higher up, so it can be positioned relative to
|
|
1021
|
+
* the native wrapper instead of the <label> element or the
|
|
1022
|
+
* entire component. This allows the label text to be positioned
|
|
1023
|
+
* above the outline, while staying within the bounds of the
|
|
1024
|
+
* <label> element, ensuring that clicking the label text
|
|
1025
|
+
* focuses the select.
|
|
1026
|
+
*/
|
|
1027
|
+
theme === 'ionic' && fill === 'outline' && h("div", { key: '07ec46ff5185031edeaeb9c329ae05a1dc4500bc', class: "select-outline" }), h("slot", { key: '69bb4d4a2948f9fbcdd8aa7450a08bdd4e812eea', name: "start" }), h("div", { key: '44c1be22c26165e68fc7fced999019a1da8ea58d', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: 'be3d1f07547ecb117056a7baf0013d162db67dc4', name: "end" }), shouldRenderInnerIcon && this.renderSelectIcon()), shouldRenderOuterIcon && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: '621376ed95b35dc867ed8a6f450155405f9f37fe', class: "select-highlight" })), this.renderBottomContent()));
|
|
890
1028
|
}
|
|
891
1029
|
static get is() { return "ion-select"; }
|
|
892
1030
|
static get encapsulation() { return "shadow"; }
|
|
893
1031
|
static get originalStyleUrls() {
|
|
894
1032
|
return {
|
|
895
1033
|
"ios": ["select.ios.scss"],
|
|
896
|
-
"md": ["select.md.scss"]
|
|
1034
|
+
"md": ["select.md.scss"],
|
|
1035
|
+
"ionic": ["select.ionic.scss"]
|
|
897
1036
|
};
|
|
898
1037
|
}
|
|
899
1038
|
static get styleUrls() {
|
|
900
1039
|
return {
|
|
901
1040
|
"ios": ["select.ios.css"],
|
|
902
|
-
"md": ["select.md.css"]
|
|
1041
|
+
"md": ["select.md.css"],
|
|
1042
|
+
"ionic": ["select.ionic.css"]
|
|
903
1043
|
};
|
|
904
1044
|
}
|
|
905
1045
|
static get properties() {
|
|
@@ -924,6 +1064,26 @@ export class Select {
|
|
|
924
1064
|
"attribute": "cancel-text",
|
|
925
1065
|
"defaultValue": "'Cancel'"
|
|
926
1066
|
},
|
|
1067
|
+
"cancelIcon": {
|
|
1068
|
+
"type": "boolean",
|
|
1069
|
+
"mutable": false,
|
|
1070
|
+
"complexType": {
|
|
1071
|
+
"original": "boolean",
|
|
1072
|
+
"resolved": "boolean",
|
|
1073
|
+
"references": {}
|
|
1074
|
+
},
|
|
1075
|
+
"required": false,
|
|
1076
|
+
"optional": false,
|
|
1077
|
+
"docs": {
|
|
1078
|
+
"tags": [],
|
|
1079
|
+
"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."
|
|
1080
|
+
},
|
|
1081
|
+
"getter": false,
|
|
1082
|
+
"setter": false,
|
|
1083
|
+
"reflect": false,
|
|
1084
|
+
"attribute": "cancel-icon",
|
|
1085
|
+
"defaultValue": "false"
|
|
1086
|
+
},
|
|
927
1087
|
"color": {
|
|
928
1088
|
"type": "string",
|
|
929
1089
|
"mutable": false,
|
|
@@ -1008,7 +1168,7 @@ export class Select {
|
|
|
1008
1168
|
"optional": true,
|
|
1009
1169
|
"docs": {
|
|
1010
1170
|
"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
|
|
1171
|
+
"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
1172
|
},
|
|
1013
1173
|
"getter": false,
|
|
1014
1174
|
"setter": false,
|
|
@@ -1268,7 +1428,7 @@ export class Select {
|
|
|
1268
1428
|
"optional": true,
|
|
1269
1429
|
"docs": {
|
|
1270
1430
|
"tags": [],
|
|
1271
|
-
"text": "The toggle icon to use. Defaults to
|
|
1431
|
+
"text": "The toggle icon to use. Defaults to `\"chevronExpand\"` for the `\"ios\"` theme,\nor `\"caretDownSharp\"` for the `\"md\"` and `\"ionic\"` themes."
|
|
1272
1432
|
},
|
|
1273
1433
|
"getter": false,
|
|
1274
1434
|
"setter": false,
|
|
@@ -1287,70 +1447,89 @@ export class Select {
|
|
|
1287
1447
|
"optional": true,
|
|
1288
1448
|
"docs": {
|
|
1289
1449
|
"tags": [],
|
|
1290
|
-
"text": "The toggle icon to show when the select is open. If defined, the icon\nrotation behavior in
|
|
1450
|
+
"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
1451
|
},
|
|
1292
1452
|
"getter": false,
|
|
1293
1453
|
"setter": false,
|
|
1294
1454
|
"reflect": false,
|
|
1295
1455
|
"attribute": "expanded-icon"
|
|
1296
1456
|
},
|
|
1457
|
+
"required": {
|
|
1458
|
+
"type": "boolean",
|
|
1459
|
+
"mutable": false,
|
|
1460
|
+
"complexType": {
|
|
1461
|
+
"original": "boolean",
|
|
1462
|
+
"resolved": "boolean",
|
|
1463
|
+
"references": {}
|
|
1464
|
+
},
|
|
1465
|
+
"required": false,
|
|
1466
|
+
"optional": false,
|
|
1467
|
+
"docs": {
|
|
1468
|
+
"tags": [],
|
|
1469
|
+
"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."
|
|
1470
|
+
},
|
|
1471
|
+
"getter": false,
|
|
1472
|
+
"setter": false,
|
|
1473
|
+
"reflect": false,
|
|
1474
|
+
"attribute": "required",
|
|
1475
|
+
"defaultValue": "false"
|
|
1476
|
+
},
|
|
1297
1477
|
"shape": {
|
|
1298
1478
|
"type": "string",
|
|
1299
1479
|
"mutable": false,
|
|
1300
1480
|
"complexType": {
|
|
1301
|
-
"original": "'round'",
|
|
1302
|
-
"resolved": "\"round\" | undefined",
|
|
1481
|
+
"original": "'soft' | 'round' | 'rectangular'",
|
|
1482
|
+
"resolved": "\"rectangular\" | \"round\" | \"soft\" | undefined",
|
|
1303
1483
|
"references": {}
|
|
1304
1484
|
},
|
|
1305
1485
|
"required": false,
|
|
1306
1486
|
"optional": true,
|
|
1307
1487
|
"docs": {
|
|
1308
1488
|
"tags": [],
|
|
1309
|
-
"text": "
|
|
1489
|
+
"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
1490
|
},
|
|
1311
1491
|
"getter": false,
|
|
1312
1492
|
"setter": false,
|
|
1313
1493
|
"reflect": false,
|
|
1314
1494
|
"attribute": "shape"
|
|
1315
1495
|
},
|
|
1316
|
-
"
|
|
1317
|
-
"type": "
|
|
1318
|
-
"mutable":
|
|
1496
|
+
"size": {
|
|
1497
|
+
"type": "string",
|
|
1498
|
+
"mutable": false,
|
|
1319
1499
|
"complexType": {
|
|
1320
|
-
"original": "
|
|
1321
|
-
"resolved": "
|
|
1500
|
+
"original": "'small' | 'medium' | 'large'",
|
|
1501
|
+
"resolved": "\"large\" | \"medium\" | \"small\" | undefined",
|
|
1322
1502
|
"references": {}
|
|
1323
1503
|
},
|
|
1324
1504
|
"required": false,
|
|
1325
1505
|
"optional": true,
|
|
1326
1506
|
"docs": {
|
|
1327
1507
|
"tags": [],
|
|
1328
|
-
"text": "The
|
|
1508
|
+
"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
1509
|
},
|
|
1330
1510
|
"getter": false,
|
|
1331
1511
|
"setter": false,
|
|
1332
1512
|
"reflect": false,
|
|
1333
|
-
"attribute": "
|
|
1513
|
+
"attribute": "size"
|
|
1334
1514
|
},
|
|
1335
|
-
"
|
|
1336
|
-
"type": "
|
|
1337
|
-
"mutable":
|
|
1515
|
+
"value": {
|
|
1516
|
+
"type": "any",
|
|
1517
|
+
"mutable": true,
|
|
1338
1518
|
"complexType": {
|
|
1339
|
-
"original": "
|
|
1340
|
-
"resolved": "
|
|
1519
|
+
"original": "any | null",
|
|
1520
|
+
"resolved": "any",
|
|
1341
1521
|
"references": {}
|
|
1342
1522
|
},
|
|
1343
1523
|
"required": false,
|
|
1344
|
-
"optional":
|
|
1524
|
+
"optional": true,
|
|
1345
1525
|
"docs": {
|
|
1346
1526
|
"tags": [],
|
|
1347
|
-
"text": "
|
|
1527
|
+
"text": "The value of the select."
|
|
1348
1528
|
},
|
|
1349
1529
|
"getter": false,
|
|
1350
1530
|
"setter": false,
|
|
1351
1531
|
"reflect": false,
|
|
1352
|
-
"attribute": "
|
|
1353
|
-
"defaultValue": "false"
|
|
1532
|
+
"attribute": "value"
|
|
1354
1533
|
}
|
|
1355
1534
|
};
|
|
1356
1535
|
}
|
|
@@ -1546,25 +1725,223 @@ const parseValue = (value) => {
|
|
|
1546
1725
|
}
|
|
1547
1726
|
return value.toString();
|
|
1548
1727
|
};
|
|
1549
|
-
const generateText = (opts, value, compareWith) => {
|
|
1728
|
+
const generateText = (opts, value, compareWith, useHTML = false) => {
|
|
1550
1729
|
if (value === undefined) {
|
|
1551
1730
|
return '';
|
|
1552
1731
|
}
|
|
1553
1732
|
if (Array.isArray(value)) {
|
|
1554
1733
|
return value
|
|
1555
|
-
.map((v) => textForValue(opts, v, compareWith))
|
|
1734
|
+
.map((v) => textForValue(opts, v, compareWith, useHTML))
|
|
1556
1735
|
.filter((opt) => opt !== null)
|
|
1557
1736
|
.join(', ');
|
|
1558
1737
|
}
|
|
1559
1738
|
else {
|
|
1560
|
-
return textForValue(opts, value, compareWith) || '';
|
|
1739
|
+
return textForValue(opts, value, compareWith, useHTML) || '';
|
|
1561
1740
|
}
|
|
1562
1741
|
};
|
|
1563
|
-
|
|
1742
|
+
/**
|
|
1743
|
+
* Returns the display text for a given value from the list of options.
|
|
1744
|
+
* When `useHTML` is true, returns sanitized HTML for the select text.
|
|
1745
|
+
* When `useHTML` is false, returns plain text for aria-label and other
|
|
1746
|
+
* text-only contexts.
|
|
1747
|
+
*
|
|
1748
|
+
* @param opts - The list of ion-select-option elements.
|
|
1749
|
+
* @param value - The value to find the matching option for.
|
|
1750
|
+
* @param compareWith - Custom comparison function or property name.
|
|
1751
|
+
* @param useHTML - If true, returns HTML string. If false, returns plain text.
|
|
1752
|
+
*/
|
|
1753
|
+
const textForValue = (opts, value, compareWith, useHTML = false) => {
|
|
1564
1754
|
const selectOpt = opts.find((opt) => {
|
|
1565
1755
|
return compareOptions(value, getOptionValue(opt), compareWith);
|
|
1566
1756
|
});
|
|
1567
|
-
|
|
1757
|
+
const customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
|
|
1758
|
+
if (!selectOpt) {
|
|
1759
|
+
return null;
|
|
1760
|
+
}
|
|
1761
|
+
// Return sanitized HTML for the select text
|
|
1762
|
+
if (customHTMLEnabled && useHTML) {
|
|
1763
|
+
return getOptionContent(selectOpt, undefined, true);
|
|
1764
|
+
}
|
|
1765
|
+
/**
|
|
1766
|
+
* When custom HTML is enabled, extract only the default slot content.
|
|
1767
|
+
* This ensures aria-label and other text-only contexts read only
|
|
1768
|
+
* the relevant option text.
|
|
1769
|
+
*/
|
|
1770
|
+
if (customHTMLEnabled) {
|
|
1771
|
+
const content = getOptionContent(selectOpt);
|
|
1772
|
+
if (typeof content === 'string') {
|
|
1773
|
+
return content;
|
|
1774
|
+
}
|
|
1775
|
+
/**
|
|
1776
|
+
* Elements were found in the default slot, extract and concatenate
|
|
1777
|
+
* their text content while trimming whitespace.
|
|
1778
|
+
*/
|
|
1779
|
+
if (content) {
|
|
1780
|
+
const texts = Array.from(content.childNodes)
|
|
1781
|
+
.map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); })
|
|
1782
|
+
.filter((t) => t);
|
|
1783
|
+
return texts.join(' ') || null;
|
|
1784
|
+
}
|
|
1785
|
+
// Empty option
|
|
1786
|
+
return null;
|
|
1787
|
+
}
|
|
1788
|
+
return getDefaultSlotPlainText(selectOpt);
|
|
1789
|
+
};
|
|
1790
|
+
/**
|
|
1791
|
+
* Trims whitespace from all text nodes within a DOM tree.
|
|
1792
|
+
* This prevents invisible layout shifts and unwanted gaps between
|
|
1793
|
+
* elements when HTML content is injected via innerHTML or cloneNode,
|
|
1794
|
+
* as browsers preserve whitespace (tabs, newlines, spaces) from
|
|
1795
|
+
* the original source markup.
|
|
1796
|
+
*
|
|
1797
|
+
* @param node The root node to start trimming text nodes from.
|
|
1798
|
+
*/
|
|
1799
|
+
const trimTextNodes = (node) => {
|
|
1800
|
+
node.childNodes.forEach((child) => {
|
|
1801
|
+
var _a;
|
|
1802
|
+
if (child.nodeType === Node.TEXT_NODE) {
|
|
1803
|
+
child.textContent = ((_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '';
|
|
1804
|
+
}
|
|
1805
|
+
else if (child.nodeType === Node.ELEMENT_NODE) {
|
|
1806
|
+
trimTextNodes(child);
|
|
1807
|
+
}
|
|
1808
|
+
});
|
|
1809
|
+
};
|
|
1810
|
+
/**
|
|
1811
|
+
* Extracts and clones content from an `ion-select-option` element
|
|
1812
|
+
* for rendering within overlay interfaces or the select text when `customHTMLEnabled` is `true`.
|
|
1813
|
+
*
|
|
1814
|
+
* @param option - The `ion-select-option` element to extract content from.
|
|
1815
|
+
* @param slotName - Optional slot name to extract. If omitted, extracts the default slot content.
|
|
1816
|
+
* @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.
|
|
1817
|
+
* @returns When `useHTML` is `true`, a sanitized HTML string. When `false`, a
|
|
1818
|
+
* div element containing cloned child nodes. Returns `null` if no matching
|
|
1819
|
+
* content is found.
|
|
1820
|
+
*/
|
|
1821
|
+
const getOptionContent = (option, slotName, useHTML = false) => {
|
|
1822
|
+
let nodes;
|
|
1823
|
+
if (slotName) {
|
|
1824
|
+
// Named slot: get elements with matching slot attribute
|
|
1825
|
+
nodes = Array.from(option.children).filter((el) => el.getAttribute('slot') === slotName);
|
|
1826
|
+
}
|
|
1827
|
+
else {
|
|
1828
|
+
// Default slot: get nodes without a slot attribute
|
|
1829
|
+
const defaultSlot = getOptionDefaultSlot(option) || [];
|
|
1830
|
+
nodes = defaultSlot.filter((node) => {
|
|
1831
|
+
var _a;
|
|
1832
|
+
/**
|
|
1833
|
+
* Exclude whitespace-only text nodes (newline noise between
|
|
1834
|
+
* markup elements). Element nodes are always kept, even when
|
|
1835
|
+
* their textContent is empty (e.g. <svg>, <img>).
|
|
1836
|
+
*/
|
|
1837
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
1838
|
+
return ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim().length) !== 0;
|
|
1839
|
+
}
|
|
1840
|
+
return true;
|
|
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
|
+
/**
|
|
1851
|
+
* Mirror known custom-element properties (e.g. ion-icon's `icon`)
|
|
1852
|
+
* onto attributes before cloning. Frameworks like Vue set these as
|
|
1853
|
+
* DOM properties, which `cloneNode` doesn't copy, so without this
|
|
1854
|
+
* step the cloned overlay copy renders without the prop's value.
|
|
1855
|
+
*/
|
|
1856
|
+
nodes.forEach((n) => {
|
|
1857
|
+
if (n.nodeType === Node.ELEMENT_NODE) {
|
|
1858
|
+
reflectPropertiesToAttributes(n);
|
|
1859
|
+
}
|
|
1860
|
+
});
|
|
1861
|
+
// Clone each node into a temporary container
|
|
1862
|
+
const container = document.createElement('div');
|
|
1863
|
+
nodes.forEach((n) => {
|
|
1864
|
+
var _a;
|
|
1865
|
+
const clone = n.cloneNode(true);
|
|
1866
|
+
if (clone.nodeType === Node.TEXT_NODE) {
|
|
1867
|
+
clone.textContent = ((_a = clone.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '';
|
|
1868
|
+
}
|
|
1869
|
+
else {
|
|
1870
|
+
trimTextNodes(clone);
|
|
1871
|
+
}
|
|
1872
|
+
container.appendChild(clone);
|
|
1873
|
+
});
|
|
1874
|
+
/**
|
|
1875
|
+
* Sanitize the cloned DOM in place. Trusted attributes (size, color,
|
|
1876
|
+
* shape, etc.) are preserved; event handlers, javascript: URLs, and
|
|
1877
|
+
* blocked tags are stripped.
|
|
1878
|
+
*/
|
|
1879
|
+
sanitizeDOMTree(container);
|
|
1880
|
+
if (useHTML) {
|
|
1881
|
+
return container.innerHTML.trim() || null;
|
|
1882
|
+
}
|
|
1883
|
+
return container;
|
|
1884
|
+
};
|
|
1885
|
+
/**
|
|
1886
|
+
* Returns the child nodes that belong to the default slot of an
|
|
1887
|
+
* option element, excluding any nodes that are assigned to named
|
|
1888
|
+
* slots.
|
|
1889
|
+
*
|
|
1890
|
+
* @param option - The `ion-select-option` element to extract default-slot nodes from.
|
|
1891
|
+
* @returns An array of default slot nodes, or `null` if none are found.
|
|
1892
|
+
*/
|
|
1893
|
+
const getOptionDefaultSlot = (option) => {
|
|
1894
|
+
const defaultSlotNodes = Array.from(option.childNodes).filter((node) => {
|
|
1895
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
1896
|
+
return !node.hasAttribute('slot');
|
|
1897
|
+
}
|
|
1898
|
+
return node.nodeType === Node.TEXT_NODE;
|
|
1899
|
+
});
|
|
1900
|
+
if (defaultSlotNodes.length === 0) {
|
|
1901
|
+
return null;
|
|
1902
|
+
}
|
|
1903
|
+
return defaultSlotNodes;
|
|
1904
|
+
};
|
|
1905
|
+
/**
|
|
1906
|
+
* Extracts plain text from only the default slot of an option,
|
|
1907
|
+
* excluding content assigned to named slots (start/end).
|
|
1908
|
+
*/
|
|
1909
|
+
const getDefaultSlotPlainText = (option) => {
|
|
1910
|
+
const texts = Array.from(option.childNodes)
|
|
1911
|
+
.filter((node) => {
|
|
1912
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
1913
|
+
return !node.hasAttribute('slot');
|
|
1914
|
+
}
|
|
1915
|
+
return node.nodeType === Node.TEXT_NODE;
|
|
1916
|
+
})
|
|
1917
|
+
.filter((node) => node.nodeType === Node.TEXT_NODE)
|
|
1918
|
+
.map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); })
|
|
1919
|
+
.filter((t) => t);
|
|
1920
|
+
return texts.join(' ');
|
|
1921
|
+
};
|
|
1922
|
+
/**
|
|
1923
|
+
* Extracts the rich content from an `ion-select-option`.
|
|
1924
|
+
* When `customHTMLEnabled` is `false`, only the plain text from the
|
|
1925
|
+
* default slot is read and the start and end slots are skipped.
|
|
1926
|
+
*
|
|
1927
|
+
* @param option - The `ion-select-option` element to extract content from.
|
|
1928
|
+
* @param customHTMLEnabled - Whether custom HTML rendering is enabled
|
|
1929
|
+
* via the `innerHTMLTemplatesEnabled` config.
|
|
1930
|
+
*/
|
|
1931
|
+
const extractOptionContent = (option, customHTMLEnabled) => {
|
|
1932
|
+
var _a, _b;
|
|
1933
|
+
if (!customHTMLEnabled) {
|
|
1934
|
+
return {
|
|
1935
|
+
content: getDefaultSlotPlainText(option),
|
|
1936
|
+
startContent: undefined,
|
|
1937
|
+
endContent: undefined,
|
|
1938
|
+
};
|
|
1939
|
+
}
|
|
1940
|
+
return {
|
|
1941
|
+
content: getOptionContent(option),
|
|
1942
|
+
startContent: (_a = getOptionContent(option, 'start')) !== null && _a !== void 0 ? _a : undefined,
|
|
1943
|
+
endContent: (_b = getOptionContent(option, 'end')) !== null && _b !== void 0 ? _b : undefined,
|
|
1944
|
+
};
|
|
1568
1945
|
};
|
|
1569
1946
|
let selectIds = 0;
|
|
1570
1947
|
const OPTION_CLASS = 'select-interface-option';
|