@ionic/core 8.8.8 → 8.8.9-dev.11779411201.1a483e09
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/index.js +1 -1
- package/components/ion-accordion-group.js +1 -1
- package/components/ion-accordion.js +1 -1
- package/components/ion-action-sheet.js +1 -1
- package/components/ion-alert.js +1 -1
- package/components/ion-app.js +1 -1
- package/components/ion-avatar.js +1 -1
- package/components/ion-back-button.js +1 -1
- package/components/ion-backdrop.js +1 -1
- package/components/ion-badge.js +1 -1
- package/components/ion-breadcrumb.js +1 -1
- package/components/ion-breadcrumbs.js +1 -1
- package/components/ion-button.js +1 -1
- package/components/ion-buttons.js +1 -1
- package/components/ion-card-content.js +1 -1
- package/components/ion-card-header.js +1 -1
- package/components/ion-card-subtitle.js +1 -1
- package/components/ion-card-title.js +1 -1
- package/components/ion-card.js +1 -1
- package/components/ion-checkbox.js +1 -1
- package/components/ion-chip.js +1 -1
- package/components/ion-col.js +1 -1
- package/components/ion-content.js +1 -1
- package/components/ion-datetime-button.js +1 -1
- package/components/ion-datetime.js +1 -1
- package/components/ion-divider.d.ts +11 -0
- package/components/ion-divider.js +4 -0
- package/components/ion-fab-button.js +1 -1
- package/components/ion-fab-list.js +1 -1
- package/components/ion-fab.js +1 -1
- package/components/ion-footer.js +1 -1
- package/components/ion-gallery.d.ts +11 -0
- package/components/ion-gallery.js +4 -0
- package/components/ion-grid.js +1 -1
- package/components/ion-header.js +1 -1
- package/components/ion-icon.js +1 -1
- package/components/ion-img.js +1 -1
- package/components/ion-infinite-scroll-content.js +1 -1
- package/components/ion-infinite-scroll.js +1 -1
- package/components/ion-input-otp.js +1 -1
- package/components/ion-input-password-toggle.js +1 -1
- package/components/ion-input.js +1 -1
- package/components/ion-item-divider.js +1 -1
- package/components/ion-item-group.js +1 -1
- package/components/ion-item-option.js +1 -1
- package/components/ion-item-options.js +1 -1
- package/components/ion-item-sliding.js +1 -1
- package/components/ion-item.js +1 -1
- package/components/ion-label.js +1 -1
- package/components/ion-list-header.js +1 -1
- package/components/ion-list.js +1 -1
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-menu-toggle.js +1 -1
- package/components/ion-menu.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +1 -1
- package/components/ion-note.js +1 -1
- package/components/ion-picker-column-option.js +1 -1
- package/components/ion-picker-column.js +1 -1
- package/components/ion-picker-legacy-column.js +1 -1
- package/components/ion-picker-legacy.js +1 -1
- package/components/ion-picker.js +1 -1
- package/components/ion-popover.js +1 -1
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-radio-group.js +1 -1
- package/components/ion-radio.js +1 -1
- package/components/ion-range.js +1 -1
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-ripple-effect.js +1 -1
- package/components/ion-route-redirect.js +1 -1
- package/components/ion-route.js +1 -1
- package/components/ion-router-link.js +1 -1
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-router.js +1 -1
- package/components/ion-row.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-segment-content.js +1 -1
- package/components/ion-segment-view.js +1 -1
- package/components/ion-segment.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select-option.js +1 -1
- package/components/ion-select-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-skeleton-text.js +1 -1
- package/components/ion-spinner.js +1 -1
- package/components/ion-split-pane.js +1 -1
- package/components/ion-tab-bar.js +1 -1
- package/components/ion-tab-button.js +1 -1
- package/components/ion-tab.js +1 -1
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +1 -1
- package/components/ion-textarea.js +1 -1
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-title.js +1 -1
- package/components/ion-toast.js +1 -1
- package/components/ion-toggle.js +1 -1
- package/components/ion-toolbar.js +1 -1
- package/components/p-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-BYSs-jZz.js +4 -0
- package/components/{p-CU1SSH8_.js → p-BZCB7f49.js} +1 -1
- package/components/p-B_MdONwD.js +4 -0
- package/components/p-BaPtaYEC.js +4 -0
- package/components/p-BcbmT6b3.js +4 -0
- 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-BsNpz2u3.js +4 -0
- package/components/p-BsSTz5ia.js +4 -0
- package/{dist/ionic/p-BxIcPWoV.js → components/p-Bt0d89x3.js} +1 -1
- package/components/p-BwQOIWD7.js +4 -0
- package/components/{p-CEmXdzGo.js → p-ByW0kK1F.js} +1 -1
- package/components/p-C75FIZBC.js +4 -0
- package/components/p-C8kBejTT.js +4 -0
- package/components/p-CBS0sBAa.js +4 -0
- package/components/{p-9VcRUwdB.js → p-CDgDBcU9.js} +1 -1
- package/components/p-CUAgUmQC.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-DXehWlOr.js +4 -0
- package/components/p-DaJxRxSQ.js +4 -0
- package/components/p-DdgejEM3.js +4 -0
- package/components/p-DhXUGFNH.js +4 -0
- package/components/p-Dhi5xtNS.js +4 -0
- package/components/p-Do7NMUwR.js +4 -0
- package/components/p-DohYi97K.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-PzmQ86nh.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-hpwmNJ2Q.js +4 -0
- package/components/p-kKYBfhbe.js +4 -0
- package/components/p-lGSe6-vg.js +4 -0
- package/{dist/ionic/p-BvFYtOdE.js → components/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-vXpMhGrs.js +4 -0
- package/components/p-wCDzv5Q8.js +4 -0
- package/components/{p-YLXPWgVj.js → p-zWP0sUV_.js} +1 -1
- package/css/core.css +1 -1
- package/css/core.css.map +1 -1
- package/css/display.css +1 -1
- package/css/display.css.map +1 -1
- package/css/flex-utils.css +1 -1
- package/css/flex-utils.css.map +1 -1
- package/css/float-elements.css.map +1 -1
- package/css/global.bundle.css.map +1 -1
- package/css/ionic/bundle.ionic.css +1 -0
- package/css/ionic/bundle.ionic.css.map +1 -0
- package/css/ionic/core.ionic.css +1 -0
- package/css/ionic/core.ionic.css.map +1 -0
- package/css/ionic/global.bundle.ionic.css +1 -0
- package/css/ionic/global.bundle.ionic.css.map +1 -0
- package/css/ionic/ionic-swiper.ionic.css +1 -0
- package/css/ionic/ionic-swiper.ionic.css.map +1 -0
- package/css/ionic/link.ionic.css +1 -0
- package/css/ionic/link.ionic.css.map +1 -0
- package/css/ionic/structure.ionic.css +1 -0
- package/css/ionic/structure.ionic.css.map +1 -0
- package/css/ionic/typography.ionic.css +1 -0
- package/css/ionic/typography.ionic.css.map +1 -0
- package/css/ionic/utils.bundle.ionic.css +1 -0
- package/css/ionic/utils.bundle.ionic.css.map +1 -0
- package/css/ionic-swiper.css +1 -1
- package/css/ionic-swiper.css.map +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/css/normalize.css.map +1 -1
- package/css/padding.css.map +1 -1
- package/css/palettes/dark.always.css.map +1 -1
- package/css/palettes/dark.class.css.map +1 -1
- package/css/palettes/dark.system.css.map +1 -1
- package/css/palettes/high-contrast-dark.always.css.map +1 -1
- package/css/palettes/high-contrast-dark.class.css.map +1 -1
- package/css/palettes/high-contrast-dark.system.css.map +1 -1
- package/css/palettes/high-contrast.always.css.map +1 -1
- package/css/palettes/high-contrast.class.css.map +1 -1
- package/css/palettes/high-contrast.system.css.map +1 -1
- package/css/structure.css.map +1 -1
- package/css/text-alignment.css.map +1 -1
- package/css/text-transformation.css.map +1 -1
- package/css/typography.css.map +1 -1
- package/css/utils.bundle.css +1 -1
- package/css/utils.bundle.css.map +1 -1
- package/dist/cjs/{animation-Dg4yiuR2.js → animation-BZJ2wKuM.js} +3 -3
- package/dist/cjs/{app-globals-CLI8xCmk.js → app-globals-C-d5fQ35.js} +1 -1
- package/dist/cjs/{button-active-FscMI17-.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-BukYi_pW.js → config-OJmFhoxl.js} +108 -7
- package/dist/cjs/{data-BYlBjkMU.js → data-DuOuKG7I.js} +6 -6
- package/dist/cjs/{focus-visible-CCvKiLh3.js → focus-visible-BIj-I3-C.js} +24 -0
- package/dist/cjs/{framework-delegate-CRgp8o_p.js → framework-delegate-Dx9FrqAC.js} +4 -2
- package/dist/cjs/{haptic-ClPPQ_PS.js → haptic-CQJGW58i.js} +1 -1
- package/dist/cjs/{helpers-CxTYJdbT.js → helpers-DJYxKN5U.js} +57 -4
- package/dist/cjs/{index-MbaBbWXk.js → index-BJrpF9T3.js} +2 -2
- package/dist/cjs/{index-CFUwM5x_.js → index-BekUBS8C.js} +15 -15
- package/dist/cjs/{index-DqmRDbxg.js → index-CgAbCW6L.js} +2 -0
- package/dist/cjs/{index-YcSftOMz.js → index-CwxYd6UD.js} +9 -8
- package/dist/cjs/{index-CqT-2gKy.js → index-CzcLEdQ5.js} +41 -4
- package/dist/cjs/{index-C845Ti6K.js → index-DSNlrgfO.js} +4 -4
- package/dist/cjs/index.cjs.js +13 -14
- package/dist/cjs/{input-shims-CPL2J8F-.js → input-shims-VyZciSxi.js} +18 -17
- package/dist/cjs/{input.utils-DmeJ8dmo.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 +40 -22
- package/dist/cjs/ion-alert.cjs.entry.js +76 -40
- package/dist/cjs/ion-app_8.cjs.entry.js +292 -157
- package/dist/cjs/ion-avatar_3.cjs.entry.js +125 -13
- package/dist/cjs/ion-back-button.cjs.entry.js +31 -22
- package/dist/cjs/ion-backdrop.cjs.entry.js +10 -7
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +54 -18
- package/dist/cjs/ion-button_2.cjs.entry.js +59 -22
- package/dist/cjs/ion-card_5.cjs.entry.js +55 -33
- package/dist/cjs/ion-checkbox.cjs.entry.js +34 -16
- package/dist/cjs/ion-chip.cjs.entry.js +50 -9
- package/dist/cjs/ion-col_3.cjs.entry.js +56 -57
- package/dist/cjs/ion-datetime-button.cjs.entry.js +13 -9
- package/dist/cjs/ion-datetime_3.cjs.entry.js +116 -41
- package/dist/cjs/ion-divider.cjs.entry.js +51 -0
- package/dist/cjs/ion-fab_3.cjs.entry.js +44 -28
- package/dist/cjs/ion-gallery.cjs.entry.js +510 -0
- package/dist/cjs/ion-img.cjs.entry.js +8 -4
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +91 -16
- package/dist/cjs/ion-input-otp.cjs.entry.js +74 -9
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +53 -15
- package/dist/cjs/ion-input.cjs.entry.js +124 -34
- package/dist/cjs/ion-item-option_3.cjs.entry.js +467 -52
- package/dist/cjs/ion-item_8.cjs.entry.js +115 -49
- package/dist/cjs/ion-loading.cjs.entry.js +20 -18
- package/dist/cjs/ion-menu_3.cjs.entry.js +47 -29
- package/dist/cjs/ion-modal.cjs.entry.js +262 -138
- package/dist/cjs/ion-nav_2.cjs.entry.js +14 -11
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +12 -8
- package/dist/cjs/ion-picker-column.cjs.entry.js +14 -14
- package/dist/cjs/ion-picker.cjs.entry.js +10 -6
- package/dist/cjs/ion-popover.cjs.entry.js +21 -19
- package/dist/cjs/ion-progress-bar.cjs.entry.js +27 -9
- package/dist/cjs/ion-radio_2.cjs.entry.js +35 -17
- package/dist/cjs/ion-range.cjs.entry.js +20 -13
- package/dist/cjs/ion-refresher_2.cjs.entry.js +39 -21
- package/dist/cjs/ion-reorder_2.cjs.entry.js +38 -14
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +15 -7
- package/dist/cjs/ion-route_4.cjs.entry.js +10 -9
- package/dist/cjs/ion-searchbar.cjs.entry.js +137 -24
- package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment-view.cjs.entry.js +13 -3
- package/dist/cjs/ion-segment_2.cjs.entry.js +23 -16
- package/dist/cjs/ion-select-modal.cjs.entry.js +119 -40
- package/dist/cjs/ion-select_3.cjs.entry.js +513 -84
- package/dist/cjs/ion-spinner.cjs.entry.js +30 -8
- package/dist/cjs/ion-split-pane.cjs.entry.js +13 -9
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +147 -23
- package/dist/cjs/ion-tab_2.cjs.entry.js +8 -7
- package/dist/cjs/ion-text.cjs.entry.js +7 -7
- package/dist/cjs/ion-textarea.cjs.entry.js +137 -23
- package/dist/cjs/ion-toast.cjs.entry.js +69 -46
- package/dist/cjs/ion-toggle.cjs.entry.js +82 -25
- package/dist/cjs/ionic-global-BW5tRzrz.js +519 -0
- package/dist/cjs/ionic.cjs.js +4 -4
- package/dist/cjs/{ios.transition-trBiC95R.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-CUQECuvD.js → md.transition-BEfrfWKW.js} +6 -5
- package/dist/cjs/{notch-controller-sD-lTpdc.js → notch-controller-BTZCPOsd.js} +4 -4
- package/dist/cjs/overlay-control-label-t9ZFhCtr.js +51 -0
- package/dist/cjs/{overlays-C2jiBSNQ.js → overlays-BuMIwR8B.js} +110 -16
- package/dist/cjs/select-option-render-C72N7OsO.js +111 -0
- package/dist/cjs/{status-tap-CCJk5VgT.js → status-tap-CTY2dMsZ.js} +4 -3
- package/dist/cjs/{swipe-back-BGhTQ1CU.js → swipe-back-jJFi5KCB.js} +3 -2
- package/dist/cjs/{theme-CeDs6Hcv.js → theme-IlOsGAz7.js} +25 -1
- package/dist/cjs/validity-QmuwEptc.js +51 -0
- package/dist/cjs/x-BTF99yFH.js +8 -0
- package/dist/collection/collection-manifest.json +7 -0
- package/dist/collection/components/accordion/accordion.ionic.css +201 -0
- package/dist/collection/components/accordion/accordion.ios.css +73 -58
- package/dist/collection/components/accordion/accordion.js +41 -27
- package/dist/collection/components/accordion/accordion.md.css +67 -59
- package/dist/collection/components/accordion-group/accordion-group.ionic.css +93 -0
- package/dist/collection/components/accordion-group/accordion-group.ios.css +16 -4
- package/dist/collection/components/accordion-group/accordion-group.js +44 -8
- package/dist/collection/components/accordion-group/accordion-group.md.css +22 -4
- package/dist/collection/components/action-sheet/action-sheet.ionic.css +439 -0
- package/dist/collection/components/action-sheet/action-sheet.ios.css +155 -11
- package/dist/collection/components/action-sheet/action-sheet.js +32 -13
- package/dist/collection/components/action-sheet/action-sheet.md.css +155 -10
- package/dist/collection/components/alert/alert.ionic.css +726 -0
- package/dist/collection/components/alert/alert.ios.css +219 -19
- package/dist/collection/components/alert/alert.js +67 -30
- package/dist/collection/components/alert/alert.md.css +229 -15
- 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 +595 -0
- package/dist/collection/components/gallery/test/utils.js +100 -0
- package/dist/collection/components/grid/grid.css +12 -0
- package/dist/collection/components/grid/grid.js +9 -5
- package/dist/collection/components/header/header.ionic.css +97 -0
- package/dist/collection/components/header/header.ios.css +25 -10
- package/dist/collection/components/header/header.js +50 -19
- package/dist/collection/components/header/header.md.css +23 -8
- package/dist/collection/components/header/header.utils.js +5 -5
- package/dist/collection/components/img/img.js +8 -2
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +100 -5
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +12 -0
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +16 -10
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +12 -0
- package/dist/collection/components/input/input.ionic.css +889 -0
- package/dist/collection/components/input/input.ios.css +223 -135
- package/dist/collection/components/input/input.js +148 -37
- package/dist/collection/components/input/input.md.css +193 -207
- package/dist/collection/components/input-otp/input-otp.ionic.css +371 -0
- package/dist/collection/components/input-otp/input-otp.ios.css +105 -60
- package/dist/collection/components/input-otp/input-otp.js +73 -6
- package/dist/collection/components/input-otp/input-otp.md.css +105 -60
- package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +78 -0
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +48 -12
- package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +61 -0
- package/dist/collection/components/item/item.ionic.css +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 +14 -11
- package/dist/collection/components/loading/loading.md.css +13 -1
- package/dist/collection/components/menu/menu.ios.css +15 -3
- package/dist/collection/components/menu/menu.js +12 -7
- package/dist/collection/components/menu/menu.md.css +15 -3
- package/dist/collection/components/menu-button/menu-button.ionic.css +236 -0
- package/dist/collection/components/menu-button/menu-button.ios.css +48 -14
- package/dist/collection/components/menu-button/menu-button.js +26 -10
- package/dist/collection/components/menu-button/menu-button.md.css +49 -15
- package/dist/collection/components/menu-toggle/menu-toggle.js +8 -5
- package/dist/collection/components/modal/animations/ionic.enter.js +40 -0
- package/dist/collection/components/modal/animations/ionic.leave.js +28 -0
- package/dist/collection/components/modal/animations/sheet.js +8 -2
- package/dist/collection/components/modal/gestures/sheet.js +76 -10
- package/dist/collection/components/modal/modal.ionic.css +247 -0
- package/dist/collection/components/modal/modal.ios.css +178 -70
- package/dist/collection/components/modal/modal.js +50 -12
- package/dist/collection/components/modal/modal.md.css +178 -70
- package/dist/collection/components/nav/nav.css +7 -1
- package/dist/collection/components/nav/nav.js +11 -5
- package/dist/collection/components/nav-link/nav-link.js +5 -1
- package/dist/collection/components/note/note.ios.css +12 -0
- package/dist/collection/components/note/note.js +11 -8
- package/dist/collection/components/note/note.md.css +12 -0
- package/dist/collection/components/picker/picker.ios.css +15 -3
- package/dist/collection/components/picker/picker.js +8 -5
- package/dist/collection/components/picker/picker.md.css +15 -3
- package/dist/collection/components/picker-column/picker-column.css +9 -2
- package/dist/collection/components/picker-column/picker-column.js +8 -7
- package/dist/collection/components/picker-column-option/picker-column-option.ios.css +6 -0
- package/dist/collection/components/picker-column-option/picker-column-option.js +13 -7
- package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -0
- package/dist/collection/components/picker-legacy/picker.ios.css +13 -1
- package/dist/collection/components/picker-legacy/picker.js +7 -6
- package/dist/collection/components/picker-legacy/picker.md.css +13 -1
- package/dist/collection/components/picker-legacy-column/picker-column.ios.css +12 -0
- package/dist/collection/components/picker-legacy-column/picker-column.js +4 -4
- package/dist/collection/components/picker-legacy-column/picker-column.md.css +12 -0
- package/dist/collection/components/popover/popover.ionic.css +290 -0
- package/dist/collection/components/popover/popover.ios.css +29 -1
- package/dist/collection/components/popover/popover.js +18 -15
- package/dist/collection/components/popover/popover.md.css +29 -1
- package/dist/collection/components/progress-bar/progress-bar.ionic.css +287 -0
- package/dist/collection/components/progress-bar/progress-bar.ios.css +48 -17
- package/dist/collection/components/progress-bar/progress-bar.js +43 -7
- package/dist/collection/components/progress-bar/progress-bar.md.css +48 -17
- package/dist/collection/components/radio/radio.ionic.css +422 -0
- package/dist/collection/components/radio/radio.ios.css +134 -91
- package/dist/collection/components/radio/radio.js +14 -9
- package/dist/collection/components/radio/radio.md.css +134 -91
- package/dist/collection/components/radio-group/radio-group.ionic.css +119 -0
- package/dist/collection/components/radio-group/radio-group.ios.css +43 -19
- package/dist/collection/components/radio-group/radio-group.js +48 -7
- package/dist/collection/components/radio-group/radio-group.md.css +43 -19
- package/dist/collection/components/range/range.ionic.css +567 -0
- package/dist/collection/components/range/range.ios.css +128 -85
- package/dist/collection/components/range/range.js +16 -10
- package/dist/collection/components/range/range.md.css +128 -85
- package/dist/collection/components/refresher/refresher.ios.css +14 -1
- package/dist/collection/components/refresher/refresher.js +11 -8
- package/dist/collection/components/refresher/refresher.md.css +15 -2
- package/dist/collection/components/refresher-content/refresher-content.js +28 -7
- package/dist/collection/components/reorder/reorder.ios.css +6 -0
- package/dist/collection/components/reorder/reorder.js +33 -6
- package/dist/collection/components/reorder/reorder.md.css +6 -0
- package/dist/collection/components/reorder-group/reorder-group.css +6 -0
- package/dist/collection/components/reorder-group/reorder-group.js +8 -4
- package/dist/collection/components/ripple-effect/{ripple-effect.css → ripple-effect.common.css} +7 -1
- package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +215 -0
- package/dist/collection/components/ripple-effect/ripple-effect.js +14 -6
- package/dist/collection/components/route/route.js +4 -0
- package/dist/collection/components/router/router.js +4 -0
- package/dist/collection/components/router-link/router-link.css +8 -2
- package/dist/collection/components/router-link/router-link.js +9 -5
- package/dist/collection/components/router-outlet/router-outlet.css +7 -1
- package/dist/collection/components/router-outlet/router-outlet.js +6 -3
- package/dist/collection/components/row/row.css +16 -0
- package/dist/collection/components/row/row.js +9 -2
- package/dist/collection/components/searchbar/searchbar.ionic.css +626 -0
- package/dist/collection/components/searchbar/searchbar.ios.css +56 -18
- package/dist/collection/components/searchbar/searchbar.js +180 -33
- package/dist/collection/components/searchbar/searchbar.md.css +56 -18
- package/dist/collection/components/segment/segment.ionic.css +115 -0
- package/dist/collection/components/segment/segment.ios.css +45 -2
- package/dist/collection/components/segment/segment.js +11 -8
- package/dist/collection/components/segment/segment.md.css +45 -2
- package/dist/collection/components/segment-button/segment-button.ionic.css +353 -0
- package/dist/collection/components/segment-button/segment-button.ios.css +146 -105
- package/dist/collection/components/segment-button/segment-button.js +11 -8
- package/dist/collection/components/segment-button/segment-button.md.css +148 -107
- package/dist/collection/components/segment-content/segment-content.js +1 -1
- package/dist/collection/components/segment-view/segment-view.ios.css +6 -0
- package/dist/collection/components/segment-view/segment-view.js +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 +473 -66
- package/dist/collection/components/select/select.md.css +364 -178
- package/dist/collection/components/select-modal/select-modal.ionic.css +221 -0
- package/dist/collection/components/select-modal/select-modal.ios.css +156 -0
- package/dist/collection/components/select-modal/select-modal.js +132 -32
- package/dist/collection/components/select-modal/select-modal.md.css +139 -0
- package/dist/collection/components/select-option/select-option.js +70 -2
- package/dist/collection/components/select-popover/select-popover.ionic.css +220 -0
- package/dist/collection/components/select-popover/select-popover.ios.css +117 -23
- package/dist/collection/components/select-popover/select-popover.js +94 -31
- package/dist/collection/components/select-popover/select-popover.md.css +117 -22
- package/dist/collection/components/skeleton-text/skeleton-text.css +6 -0
- package/dist/collection/components/skeleton-text/skeleton-text.js +9 -5
- package/dist/collection/components/spinner/{spinner.css → spinner.ionic.css} +78 -10
- package/dist/collection/components/spinner/spinner.js +47 -6
- package/dist/collection/components/spinner/spinner.native.css +199 -0
- package/dist/collection/components/split-pane/split-pane.ios.css +20 -2
- package/dist/collection/components/split-pane/split-pane.js +15 -8
- package/dist/collection/components/split-pane/split-pane.md.css +20 -2
- package/dist/collection/components/tab/tab.js +6 -2
- package/dist/collection/components/tab-bar/tab-bar.ionic.css +227 -0
- package/dist/collection/components/tab-bar/tab-bar.ios.css +71 -43
- package/dist/collection/components/tab-bar/tab-bar.js +171 -13
- package/dist/collection/components/tab-bar/tab-bar.md.css +71 -43
- package/dist/collection/components/tab-button/tab-button.ionic.css +348 -0
- package/dist/collection/components/tab-button/tab-button.ios.css +171 -95
- package/dist/collection/components/tab-button/tab-button.js +54 -9
- package/dist/collection/components/tab-button/tab-button.md.css +137 -93
- package/dist/collection/components/tabs/tabs.css +7 -1
- package/dist/collection/components/tabs/tabs.js +4 -1
- package/dist/collection/components/text/text.css +6 -0
- package/dist/collection/components/text/text.js +7 -6
- package/dist/collection/components/textarea/textarea.ionic.css +898 -0
- package/dist/collection/components/textarea/textarea.ios.css +298 -158
- package/dist/collection/components/textarea/textarea.js +162 -24
- package/dist/collection/components/textarea/textarea.md.css +312 -159
- package/dist/collection/components/thumbnail/thumbnail.css +6 -0
- package/dist/collection/components/thumbnail/thumbnail.js +9 -2
- package/dist/collection/components/title/title.ionic.css +127 -0
- package/dist/collection/components/title/title.ios.css +32 -4
- package/dist/collection/components/title/title.js +13 -7
- package/dist/collection/components/title/title.md.css +32 -4
- package/dist/collection/components/toast/animations/utils.js +1 -1
- package/dist/collection/components/toast/toast.ionic.css +394 -0
- package/dist/collection/components/toast/toast.ios.css +84 -45
- package/dist/collection/components/toast/toast.js +76 -13
- package/dist/collection/components/toast/toast.md.css +84 -45
- package/dist/collection/components/toggle/toggle.ionic.css +508 -0
- package/dist/collection/components/toggle/toggle.ios.css +247 -131
- package/dist/collection/components/toggle/toggle.js +73 -18
- package/dist/collection/components/toggle/toggle.md.css +244 -131
- package/dist/collection/components/toolbar/test/image.svg +1 -0
- package/dist/collection/components/toolbar/toolbar.ionic.css +249 -0
- package/dist/collection/components/toolbar/toolbar.ios.css +90 -47
- package/dist/collection/components/toolbar/toolbar.js +218 -13
- package/dist/collection/components/toolbar/toolbar.md.css +90 -47
- package/dist/collection/global/ionic-global.js +241 -13
- package/dist/collection/utils/css-value-validation.js +25 -0
- package/dist/collection/utils/focus-trap.js +13 -2
- package/dist/collection/utils/focus-visible.js +22 -0
- package/dist/collection/utils/forms/validity.js +31 -0
- package/dist/collection/utils/framework-delegate.js +3 -1
- package/dist/collection/utils/hardware-back-button.js +15 -0
- package/dist/collection/utils/helpers.js +57 -3
- package/dist/collection/utils/keyboard/keyboard-controller.js +3 -1
- package/dist/collection/utils/media.js +1 -0
- package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
- package/dist/collection/utils/menu-controller/animations/push.js +2 -1
- package/dist/collection/utils/menu-controller/animations/reveal.js +2 -1
- package/dist/collection/utils/overlay-control-label.js +46 -0
- package/dist/collection/utils/overlays.js +91 -6
- package/dist/collection/utils/sanitization/index.js +105 -6
- package/dist/collection/utils/select-option-render.js +106 -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 +8891 -283
- package/dist/esm/{animation-CnGMT4ji.js → animation-Cd1EA2ar.js} +2 -2
- package/dist/esm/{app-globals-DhZjtldk.js → app-globals-9x_U7ofY.js} +1 -1
- package/dist/esm/{button-active-BBx21brx.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-TO1rZH52.js → config-C5F1aoVz.js} +107 -8
- package/dist/esm/{data-B9iGR5YO.js → data-BNKYavC3.js} +6 -6
- package/dist/esm/{focus-visible-BmVRXR1y.js → focus-visible-vXpMhGrs.js} +23 -1
- package/dist/esm/{framework-delegate-CyxE1S_P.js → framework-delegate-CjVwn_KZ.js} +4 -2
- package/dist/esm/{haptic-DzAMWJuk.js → haptic-CbnKC3go.js} +1 -1
- package/dist/esm/{helpers-Tl8jw6S2.js → helpers-Do7zwvM1.js} +58 -5
- package/dist/esm/{index-B-hkiOUh.js → index-B2VWavcK.js} +4 -4
- package/dist/esm/{index-B2KwgBLx.js → index-BWMvrRiE.js} +11 -11
- package/dist/esm/{index-hW6eNZ3o.js → index-BmkLokUL.js} +2 -2
- package/dist/esm/{index-DV3sJJW8.js → index-D2tu5BUg.js} +2 -1
- package/dist/esm/{index-BtUdxPjv.js → index-D3WueHpT.js} +4 -3
- package/dist/esm/{index-IGIE5vDm.js → index-Omi_TcwW.js} +41 -4
- package/dist/esm/index.js +13 -14
- package/dist/esm/{input-shims-DbrgeeNb.js → input-shims-DU23z7Hg.js} +7 -6
- package/dist/esm/{input.utils-Bxa_DQ7-.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 +40 -22
- package/dist/esm/ion-alert.entry.js +76 -40
- package/dist/esm/ion-app_8.entry.js +292 -157
- package/dist/esm/ion-avatar_3.entry.js +125 -13
- package/dist/esm/ion-back-button.entry.js +31 -22
- package/dist/esm/ion-backdrop.entry.js +10 -7
- package/dist/esm/ion-breadcrumb_2.entry.js +54 -18
- package/dist/esm/ion-button_2.entry.js +59 -22
- package/dist/esm/ion-card_5.entry.js +55 -33
- package/dist/esm/ion-checkbox.entry.js +34 -16
- package/dist/esm/ion-chip.entry.js +50 -9
- package/dist/esm/ion-col_3.entry.js +56 -57
- package/dist/esm/ion-datetime-button.entry.js +13 -9
- package/dist/esm/ion-datetime_3.entry.js +116 -41
- package/dist/esm/ion-divider.entry.js +49 -0
- package/dist/esm/ion-fab_3.entry.js +44 -28
- package/dist/esm/ion-gallery.entry.js +508 -0
- package/dist/esm/ion-img.entry.js +8 -4
- package/dist/esm/ion-infinite-scroll_2.entry.js +91 -16
- package/dist/esm/ion-input-otp.entry.js +74 -9
- package/dist/esm/ion-input-password-toggle.entry.js +53 -15
- package/dist/esm/ion-input.entry.js +124 -34
- package/dist/esm/ion-item-option_3.entry.js +467 -52
- package/dist/esm/ion-item_8.entry.js +115 -49
- package/dist/esm/ion-loading.entry.js +20 -18
- package/dist/esm/ion-menu_3.entry.js +47 -29
- package/dist/esm/ion-modal.entry.js +215 -91
- package/dist/esm/ion-nav_2.entry.js +14 -11
- package/dist/esm/ion-picker-column-option.entry.js +12 -8
- package/dist/esm/ion-picker-column.entry.js +13 -13
- package/dist/esm/ion-picker.entry.js +10 -6
- package/dist/esm/ion-popover.entry.js +21 -19
- package/dist/esm/ion-progress-bar.entry.js +27 -9
- package/dist/esm/ion-radio_2.entry.js +35 -17
- package/dist/esm/ion-range.entry.js +20 -13
- package/dist/esm/ion-refresher_2.entry.js +39 -21
- package/dist/esm/ion-reorder_2.entry.js +38 -14
- package/dist/esm/ion-ripple-effect.entry.js +15 -7
- package/dist/esm/ion-route_4.entry.js +10 -9
- package/dist/esm/ion-searchbar.entry.js +137 -24
- package/dist/esm/ion-segment-content.entry.js +2 -2
- package/dist/esm/ion-segment-view.entry.js +13 -3
- package/dist/esm/ion-segment_2.entry.js +23 -16
- package/dist/esm/ion-select-modal.entry.js +119 -40
- package/dist/esm/ion-select_3.entry.js +513 -84
- package/dist/esm/ion-spinner.entry.js +30 -8
- package/dist/esm/ion-split-pane.entry.js +13 -9
- package/dist/esm/ion-tab-bar_2.entry.js +147 -23
- package/dist/esm/ion-tab_2.entry.js +8 -7
- package/dist/esm/ion-text.entry.js +7 -7
- package/dist/esm/ion-textarea.entry.js +137 -23
- package/dist/esm/ion-toast.entry.js +44 -21
- package/dist/esm/ion-toggle.entry.js +82 -25
- package/dist/esm/ionic-global--9mOmThr.js +508 -0
- package/dist/esm/ionic.js +5 -5
- package/dist/esm/{ios.transition--aMF-pDH.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-BEVbfm8j.js → md.transition-DZydrWwq.js} +6 -5
- package/dist/esm/{notch-controller-DAcvKU57.js → notch-controller-klgNWpjJ.js} +2 -2
- package/dist/esm/overlay-control-label-PzmQ86nh.js +48 -0
- package/dist/esm/{overlays-F8GHPo-e.js → overlays-CpQ6Df2g.js} +107 -13
- package/dist/esm/select-option-render-y_4XoEqH.js +109 -0
- package/dist/esm/{status-tap-BfJqFSLF.js → status-tap-fYFdZg6z.js} +4 -3
- package/dist/esm/{swipe-back-BZBFwTQV.js → swipe-back-BzGqTrrq.js} +3 -2
- package/dist/esm/{theme-DiVJyqlX.js → theme-DaJxRxSQ.js} +25 -1
- package/dist/esm/validity-BjW8SOqw.js +48 -0
- package/dist/esm/x-BDqjX7Z_.js +6 -0
- package/dist/html.html-data.json +2570 -105
- 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-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-2aa7567e.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-3e186bd8.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-410d60c5.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-4a5ebd2b.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-729a5b04.entry.js +4 -0
- package/dist/ionic/p-76c70824.entry.js +4 -0
- package/dist/ionic/p-7d25ad9a.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/dist/ionic/{p-DjriolRs.js → 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/{components/p-BS1TtEiJ.js → dist/ionic/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-CLHjFE18.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-D1t981Ih.js +4 -0
- package/dist/ionic/p-D2tu5BUg.js +4 -0
- package/dist/ionic/p-DDFhx1YX.js +4 -0
- package/dist/ionic/{p-B8xlpH8p.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-Omi_TcwW.js +5 -0
- package/dist/ionic/p-PoSbs6oh.js +4 -0
- package/dist/ionic/p-PzmQ86nh.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-ad4d0138.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-bc317965.entry.js +4 -0
- package/dist/ionic/p-bsfLvRbd.js +4 -0
- package/dist/ionic/p-c6516c13.entry.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-e7505567.entry.js +4 -0
- package/dist/ionic/p-eTI_FbQJ.js +4 -0
- package/dist/ionic/p-f72200cc.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-pI5qh5HW.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 +183 -0
- package/dist/types/components/gallery/test/utils.d.ts +2 -0
- package/dist/types/components/grid/grid.d.ts +4 -0
- package/dist/types/components/header/header.d.ts +9 -3
- package/dist/types/components/header/header.utils.d.ts +3 -3
- package/dist/types/components/img/img.d.ts +3 -0
- package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +21 -0
- package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +4 -0
- package/dist/types/components/input/input.d.ts +31 -5
- package/dist/types/components/input-otp/input-otp.d.ts +37 -0
- package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +2 -0
- package/dist/types/components/item/item.d.ts +11 -4
- package/dist/types/components/item-divider/item-divider.d.ts +2 -1
- package/dist/types/components/item-group/item-group.d.ts +4 -0
- package/dist/types/components/item-option/item-option.d.ts +18 -1
- package/dist/types/components/item-options/item-options.d.ts +4 -0
- package/dist/types/components/item-sliding/item-sliding.d.ts +47 -1
- package/dist/types/components/item-sliding/test/test.utils.d.ts +13 -0
- package/dist/types/components/label/label.d.ts +2 -1
- package/dist/types/components/list/list.d.ts +15 -1
- package/dist/types/components/list-header/list-header.d.ts +2 -1
- package/dist/types/components/loading/loading-interface.d.ts +2 -7
- package/dist/types/components/loading/loading.d.ts +3 -2
- package/dist/types/components/menu/menu.d.ts +3 -0
- package/dist/types/components/menu-button/menu-button.d.ts +3 -1
- package/dist/types/components/menu-toggle/menu-toggle.d.ts +3 -0
- package/dist/types/components/modal/animations/ionic.enter.d.ts +6 -0
- package/dist/types/components/modal/animations/ionic.leave.d.ts +6 -0
- package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
- package/dist/types/components/modal/modal-interface.d.ts +4 -7
- package/dist/types/components/modal/modal.d.ts +11 -1
- package/dist/types/components/nav/nav-interface.d.ts +9 -1
- package/dist/types/components/nav/nav.d.ts +5 -1
- package/dist/types/components/nav-link/nav-link.d.ts +4 -0
- package/dist/types/components/note/note.d.ts +2 -1
- package/dist/types/components/picker/picker.d.ts +2 -1
- package/dist/types/components/picker-column/picker-column.d.ts +2 -1
- package/dist/types/components/picker-column-option/picker-column-option.d.ts +4 -0
- package/dist/types/components/picker-legacy/picker.d.ts +2 -1
- package/dist/types/components/popover/popover-interface.d.ts +3 -6
- package/dist/types/components/popover/popover.d.ts +6 -5
- package/dist/types/components/progress-bar/progress-bar.d.ts +10 -1
- package/dist/types/components/radio/radio.d.ts +2 -1
- package/dist/types/components/radio-group/radio-group.d.ts +12 -0
- package/dist/types/components/range/range.d.ts +2 -1
- package/dist/types/components/refresher/refresher.d.ts +2 -1
- package/dist/types/components/refresher-content/refresher-content.d.ts +4 -0
- package/dist/types/components/reorder/reorder.d.ts +9 -0
- package/dist/types/components/reorder-group/reorder-group.d.ts +4 -0
- package/dist/types/components/ripple-effect/ripple-effect.d.ts +4 -0
- package/dist/types/components/route/route.d.ts +4 -0
- package/dist/types/components/router/router.d.ts +4 -0
- package/dist/types/components/router-link/router-link.d.ts +4 -0
- package/dist/types/components/router-outlet/router-outlet.d.ts +4 -1
- package/dist/types/components/row/row.d.ts +4 -0
- package/dist/types/components/searchbar/searchbar.d.ts +51 -9
- package/dist/types/components/segment/segment.d.ts +2 -1
- package/dist/types/components/segment-button/segment-button.d.ts +2 -1
- package/dist/types/components/select/select-interface.d.ts +31 -0
- package/dist/types/components/select/select.d.ts +66 -13
- package/dist/types/components/select-modal/select-modal.d.ts +8 -0
- package/dist/types/components/select-option/select-option.d.ts +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 +1819 -205
- package/dist/types/global/ionic-global.d.ts +28 -2
- package/dist/types/interface.d.ts +3 -0
- package/dist/types/utils/config.d.ts +106 -2
- package/dist/types/utils/css-value-validation.d.ts +12 -0
- package/dist/types/utils/focus-trap.d.ts +1 -1
- package/dist/types/utils/focus-visible.d.ts +13 -0
- package/dist/types/utils/forms/validity.d.ts +7 -0
- package/dist/types/utils/helpers.d.ts +11 -0
- package/dist/types/utils/overlay-control-label.d.ts +34 -0
- package/dist/types/utils/overlays-interface.d.ts +31 -1
- package/dist/types/utils/overlays.d.ts +1 -1
- package/dist/types/utils/sanitization/index.d.ts +46 -2
- package/dist/types/utils/select-option-render.d.ts +22 -0
- package/dist/types/utils/test/playwright/drag-element.d.ts +16 -3
- package/dist/types/utils/test/playwright/generator.d.ts +31 -2
- package/dist/types/utils/theme.d.ts +9 -0
- package/hydrate/index.js +5271 -1182
- package/hydrate/index.mjs +5271 -1182
- package/package.json +8 -4
- package/components/p-B6FQ0cKR.js +0 -4
- package/components/p-B6HaBl3o.js +0 -4
- package/components/p-B8b1Ukl9.js +0 -4
- package/components/p-BJoMtgfR.js +0 -4
- package/components/p-BNAG-aVv.js +0 -4
- package/components/p-BR3tZJmu.js +0 -4
- package/components/p-BSB38Tek.js +0 -4
- package/components/p-BTeL5HCK.js +0 -4
- package/components/p-BUbsoBOV.js +0 -4
- package/components/p-BYDc3hSE.js +0 -4
- package/components/p-BagjAGC0.js +0 -4
- package/components/p-BegtE7nr.js +0 -4
- package/components/p-BgwEQWW6.js +0 -4
- package/components/p-BmVRXR1y.js +0 -4
- package/components/p-BxwWvu-b.js +0 -4
- package/components/p-C4jPsTQa.js +0 -4
- package/components/p-C59ryAuS.js +0 -4
- package/components/p-CBzELu-H.js +0 -4
- package/components/p-CDfQnFrd.js +0 -4
- package/components/p-CIGNaXM1.js +0 -4
- package/components/p-CO7fmmxt.js +0 -4
- package/components/p-Cf6Z1pmL.js +0 -4
- package/components/p-CgfaEEem.js +0 -4
- package/components/p-CgqKJg96.js +0 -4
- package/components/p-CneGxKsZ.js +0 -4
- package/components/p-CoA-aqGF.js +0 -4
- package/components/p-Cq8cQ0NL.js +0 -4
- package/components/p-Csw8xuz4.js +0 -4
- package/components/p-CtWGkNnJ.js +0 -4
- package/components/p-Cy5XSfIk.js +0 -4
- package/components/p-Cyxa_4PV.js +0 -4
- package/components/p-Cz5nLPGT.js +0 -4
- package/components/p-D-cP12ZN.js +0 -4
- package/components/p-D6NJwNJN.js +0 -4
- package/components/p-D6Ynv7Xh.js +0 -4
- package/components/p-DHsZWn1l.js +0 -4
- package/components/p-DJMZehmW.js +0 -4
- package/components/p-DJztqcrH.js +0 -4
- package/components/p-DYdpXONG.js +0 -4
- package/components/p-DZhbcvo5.js +0 -4
- package/components/p-DgbT0exM.js +0 -4
- package/components/p-DiVJyqlX.js +0 -4
- package/components/p-DlgpdeOi.js +0 -4
- package/components/p-DvOO1fxp.js +0 -4
- package/components/p-FBcnjE5W.js +0 -4
- package/components/p-Q1-Xy3As.js +0 -4
- package/components/p-SBseW5KJ.js +0 -4
- package/components/p-ZjP4CjeZ.js +0 -4
- package/components/p-ZuZOauwD.js +0 -4
- package/components/p-ak_d-z48.js +0 -4
- package/components/p-fpbh6w3f.js +0 -4
- package/components/p-kvaDs24J.js +0 -4
- package/components/p-vEbVo2hO.js +0 -4
- package/dist/cjs/hardware-back-button-C4rMJ5uI.js +0 -121
- package/dist/cjs/index-DkNv4J_i.js +0 -10
- package/dist/cjs/ionic-global-Bc3kJi1Z.js +0 -151
- package/dist/cjs/validity-BpS37YFM.js +0 -19
- package/dist/esm/hardware-back-button-CTe4XmL7.js +0 -115
- package/dist/esm/index-ZjP4CjeZ.js +0 -7
- package/dist/esm/ionic-global-DfbeLwcV.js +0 -146
- package/dist/esm/validity-DJztqcrH.js +0 -17
- package/dist/ionic/p-031b76f7.entry.js +0 -4
- package/dist/ionic/p-045a6a42.entry.js +0 -4
- package/dist/ionic/p-07506134.entry.js +0 -4
- package/dist/ionic/p-078037da.entry.js +0 -4
- package/dist/ionic/p-084c25b2.entry.js +0 -4
- package/dist/ionic/p-0d8b5c38.entry.js +0 -4
- package/dist/ionic/p-16813ce7.entry.js +0 -4
- package/dist/ionic/p-1b169fb6.entry.js +0 -4
- package/dist/ionic/p-1ca9c36b.entry.js +0 -4
- package/dist/ionic/p-23ec35e4.entry.js +0 -4
- package/dist/ionic/p-23fac490.entry.js +0 -4
- package/dist/ionic/p-28a9e720.entry.js +0 -4
- package/dist/ionic/p-294f4bb5.entry.js +0 -4
- package/dist/ionic/p-2a68388b.entry.js +0 -4
- package/dist/ionic/p-2f5a8140.entry.js +0 -4
- package/dist/ionic/p-2fd110aa.entry.js +0 -4
- package/dist/ionic/p-301c43f8.entry.js +0 -4
- package/dist/ionic/p-370a60ee.entry.js +0 -4
- package/dist/ionic/p-53f750a5.entry.js +0 -4
- package/dist/ionic/p-6888a88b.entry.js +0 -4
- package/dist/ionic/p-6af16209.entry.js +0 -4
- package/dist/ionic/p-6b701daa.entry.js +0 -4
- package/dist/ionic/p-6b97f2a3.entry.js +0 -4
- package/dist/ionic/p-7620be24.entry.js +0 -4
- package/dist/ionic/p-771b27a5.entry.js +0 -4
- package/dist/ionic/p-7761ef65.entry.js +0 -4
- package/dist/ionic/p-7ca71c83.entry.js +0 -4
- package/dist/ionic/p-80cac7a2.entry.js +0 -4
- package/dist/ionic/p-87125490.entry.js +0 -4
- package/dist/ionic/p-8fda6a62.entry.js +0 -4
- package/dist/ionic/p-9833cf63.entry.js +0 -4
- package/dist/ionic/p-9cbc6f1f.entry.js +0 -4
- package/dist/ionic/p-9eeaBrnk.js +0 -4
- package/dist/ionic/p-BAt5H1ac.js +0 -4
- package/dist/ionic/p-BW_TRJm8.js +0 -4
- package/dist/ionic/p-BmVRXR1y.js +0 -4
- package/dist/ionic/p-Bum7H1fw.js +0 -4
- package/dist/ionic/p-C0JvVFMv.js +0 -4
- package/dist/ionic/p-CGmVTdWh.js +0 -4
- package/dist/ionic/p-CIGNaXM1.js +0 -4
- package/dist/ionic/p-CYbRmDdy.js +0 -4
- package/dist/ionic/p-CmFz1Mjc.js +0 -4
- package/dist/ionic/p-CtA-yJYy.js +0 -4
- package/dist/ionic/p-CtWGkNnJ.js +0 -4
- package/dist/ionic/p-D8HJQ1qq.js +0 -4
- package/dist/ionic/p-DB_iPQC-.js +0 -4
- package/dist/ionic/p-DJztqcrH.js +0 -4
- package/dist/ionic/p-DLbbmF9h.js +0 -4
- package/dist/ionic/p-DTPR1Wpn.js +0 -4
- package/dist/ionic/p-DV3sJJW8.js +0 -4
- package/dist/ionic/p-DcSNwXfb.js +0 -4
- package/dist/ionic/p-DiVJyqlX.js +0 -4
- package/dist/ionic/p-DtVZDHlS.js +0 -4
- package/dist/ionic/p-IGIE5vDm.js +0 -5
- package/dist/ionic/p-NFFyoJ4Q.js +0 -4
- package/dist/ionic/p-ZjP4CjeZ.js +0 -4
- package/dist/ionic/p-a805674e.entry.js +0 -4
- package/dist/ionic/p-a84f2d21.entry.js +0 -4
- package/dist/ionic/p-a893c61c.entry.js +0 -4
- package/dist/ionic/p-aa812c4b.entry.js +0 -4
- package/dist/ionic/p-b325a113.entry.js +0 -4
- package/dist/ionic/p-b6e0ff03.entry.js +0 -4
- package/dist/ionic/p-bcaa827e.entry.js +0 -4
- package/dist/ionic/p-c3cce9d8.entry.js +0 -4
- package/dist/ionic/p-ca31010f.entry.js +0 -4
- package/dist/ionic/p-cf8757a7.entry.js +0 -4
- package/dist/ionic/p-d4e8b473.entry.js +0 -4
- package/dist/ionic/p-e663bc5a.entry.js +0 -4
- package/dist/ionic/p-e6cedcd7.entry.js +0 -4
- package/dist/ionic/p-e863ffe8.entry.js +0 -4
- package/dist/ionic/p-f2deaceb.entry.js +0 -4
- package/dist/ionic/p-f3e7b155.entry.js +0 -4
- package/dist/ionic/p-f5dfb9a3.entry.js +0 -4
- package/dist/ionic/p-f69a5f71.entry.js +0 -4
- package/dist/ionic/p-f8186550.entry.js +0 -4
- package/dist/ionic/p-fdbc90d4.entry.js +0 -4
- package/dist/ionic/p-gbVXD275.js +0 -4
- package/dist/ionic/p-hNN3VvaC.js +0 -4
- /package/dist/collection/components/{input-password-toggle/input-password-toggle.css → refresher-content/refresher-content.css} +0 -0
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
+
import caretDownRegular from "@phosphor-icons/core/assets/regular/caret-down.svg";
|
|
4
5
|
import { Build, Host, h, forceUpdate } from "@stencil/core";
|
|
6
|
+
import { ENABLE_HTML_CONTENT_DEFAULT } from "../../utils/config";
|
|
5
7
|
import { compareOptions, createNotchController, isOptionSelected, checkInvalidState } from "../../utils/forms/index";
|
|
6
8
|
import { focusVisibleElement, renderHiddenInput, inheritAttributes } from "../../utils/helpers";
|
|
7
9
|
import { printIonWarning } from "../../utils/logging/index";
|
|
8
10
|
import { actionSheetController, alertController, popoverController, modalController } from "../../utils/overlays";
|
|
9
11
|
import { isRTL } from "../../utils/rtl/index";
|
|
12
|
+
import { 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
|
*/
|
|
@@ -399,9 +413,10 @@ export class Select {
|
|
|
399
413
|
.join(' ');
|
|
400
414
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
401
415
|
const isSelected = isOptionSelected(selectValue, value, this.compareWith);
|
|
416
|
+
const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
|
|
402
417
|
return {
|
|
403
418
|
role: isSelected ? 'selected' : '',
|
|
404
|
-
text:
|
|
419
|
+
text: content !== null && content !== void 0 ? content : '',
|
|
405
420
|
cssClass: optClass,
|
|
406
421
|
handler: () => {
|
|
407
422
|
this.setValue(value);
|
|
@@ -410,6 +425,9 @@ export class Select {
|
|
|
410
425
|
'aria-checked': isSelected ? 'true' : 'false',
|
|
411
426
|
role: 'radio',
|
|
412
427
|
},
|
|
428
|
+
startContent,
|
|
429
|
+
endContent,
|
|
430
|
+
description: option.description,
|
|
413
431
|
};
|
|
414
432
|
});
|
|
415
433
|
// Add "cancel" button
|
|
@@ -430,13 +448,19 @@ export class Select {
|
|
|
430
448
|
.filter((cls) => cls !== 'hydrated')
|
|
431
449
|
.join(' ');
|
|
432
450
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
451
|
+
const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
|
|
433
452
|
return {
|
|
434
453
|
type: inputType,
|
|
435
454
|
cssClass: optClass,
|
|
436
|
-
label:
|
|
455
|
+
label: content !== null && content !== void 0 ? content : '',
|
|
437
456
|
value,
|
|
438
457
|
checked: isOptionSelected(selectValue, value, this.compareWith),
|
|
439
458
|
disabled: option.disabled,
|
|
459
|
+
startContent,
|
|
460
|
+
endContent,
|
|
461
|
+
description: option.description,
|
|
462
|
+
labelPlacement: option.labelPlacement,
|
|
463
|
+
justify: option.justify,
|
|
440
464
|
};
|
|
441
465
|
});
|
|
442
466
|
return alertInputs;
|
|
@@ -449,8 +473,9 @@ export class Select {
|
|
|
449
473
|
.filter((cls) => cls !== 'hydrated')
|
|
450
474
|
.join(' ');
|
|
451
475
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
476
|
+
const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
|
|
452
477
|
return {
|
|
453
|
-
text:
|
|
478
|
+
text: content !== null && content !== void 0 ? content : '',
|
|
454
479
|
cssClass: optClass,
|
|
455
480
|
value,
|
|
456
481
|
checked: isOptionSelected(selectValue, value, this.compareWith),
|
|
@@ -461,6 +486,11 @@ export class Select {
|
|
|
461
486
|
this.close();
|
|
462
487
|
}
|
|
463
488
|
},
|
|
489
|
+
startContent,
|
|
490
|
+
endContent,
|
|
491
|
+
description: option.description,
|
|
492
|
+
labelPlacement: option.labelPlacement,
|
|
493
|
+
justify: option.justify,
|
|
464
494
|
};
|
|
465
495
|
});
|
|
466
496
|
return popoverOptions;
|
|
@@ -468,8 +498,8 @@ export class Select {
|
|
|
468
498
|
async openPopover(ev) {
|
|
469
499
|
const { fill, labelPlacement } = this;
|
|
470
500
|
const interfaceOptions = this.interfaceOptions;
|
|
471
|
-
const
|
|
472
|
-
const showBackdrop =
|
|
501
|
+
const theme = getIonTheme(this);
|
|
502
|
+
const showBackdrop = theme === 'md' ? false : true;
|
|
473
503
|
const multiple = this.multiple;
|
|
474
504
|
const value = this.value;
|
|
475
505
|
let event = ev;
|
|
@@ -480,7 +510,7 @@ export class Select {
|
|
|
480
510
|
* when using a fill in MD mode or if the
|
|
481
511
|
* label is floating/stacked.
|
|
482
512
|
*/
|
|
483
|
-
if (hasFloatingOrStackedLabel || (
|
|
513
|
+
if (hasFloatingOrStackedLabel || (theme === 'md' && fill !== undefined)) {
|
|
484
514
|
size = 'cover';
|
|
485
515
|
/**
|
|
486
516
|
* Otherwise the popover
|
|
@@ -493,15 +523,21 @@ export class Select {
|
|
|
493
523
|
ionShadowTarget: this.nativeWrapperEl,
|
|
494
524
|
} });
|
|
495
525
|
}
|
|
496
|
-
const
|
|
526
|
+
const options = this.createOverlaySelectOptions(this.childOpts, value);
|
|
527
|
+
const hasRichContent = options.some((opt) => opt.startContent || opt.endContent || opt.description);
|
|
528
|
+
const popoverOpts = Object.assign(Object.assign({ theme,
|
|
497
529
|
event, alignment: 'center', size,
|
|
498
|
-
showBackdrop }, interfaceOptions), { component: 'ion-select-popover', cssClass: [
|
|
530
|
+
showBackdrop }, interfaceOptions), { component: 'ion-select-popover', cssClass: [
|
|
531
|
+
'select-popover',
|
|
532
|
+
hasRichContent ? 'select-popover-rich-content' : undefined,
|
|
533
|
+
interfaceOptions.cssClass,
|
|
534
|
+
], componentProps: {
|
|
499
535
|
header: interfaceOptions.header,
|
|
500
536
|
subHeader: interfaceOptions.subHeader,
|
|
501
537
|
message: interfaceOptions.message,
|
|
502
538
|
multiple,
|
|
503
539
|
value,
|
|
504
|
-
options
|
|
540
|
+
options,
|
|
505
541
|
} });
|
|
506
542
|
/**
|
|
507
543
|
* Workaround for Stencil to autodefine
|
|
@@ -518,9 +554,9 @@ export class Select {
|
|
|
518
554
|
return popoverController.create(popoverOpts);
|
|
519
555
|
}
|
|
520
556
|
async openActionSheet() {
|
|
521
|
-
const
|
|
557
|
+
const theme = getIonTheme(this);
|
|
522
558
|
const interfaceOptions = this.interfaceOptions;
|
|
523
|
-
const actionSheetOpts = Object.assign(Object.assign({
|
|
559
|
+
const actionSheetOpts = Object.assign(Object.assign({ theme }, interfaceOptions), { buttons: this.createActionSheetButtons(this.childOpts, this.value), cssClass: ['select-action-sheet', interfaceOptions.cssClass] });
|
|
524
560
|
/**
|
|
525
561
|
* Workaround for Stencil to autodefine
|
|
526
562
|
* ion-action-sheet when
|
|
@@ -537,8 +573,8 @@ export class Select {
|
|
|
537
573
|
async openAlert() {
|
|
538
574
|
const interfaceOptions = this.interfaceOptions;
|
|
539
575
|
const inputType = this.multiple ? 'checkbox' : 'radio';
|
|
540
|
-
const
|
|
541
|
-
const alertOpts = Object.assign(Object.assign({
|
|
576
|
+
const theme = getIonTheme(this);
|
|
577
|
+
const alertOpts = Object.assign(Object.assign({ theme }, interfaceOptions), { header: interfaceOptions.header ? interfaceOptions.header : this.labelText, inputs: this.createAlertInputs(this.childOpts, inputType, this.value), buttons: [
|
|
542
578
|
{
|
|
543
579
|
text: this.cancelText,
|
|
544
580
|
role: 'cancel',
|
|
@@ -572,10 +608,11 @@ export class Select {
|
|
|
572
608
|
}
|
|
573
609
|
openModal() {
|
|
574
610
|
const { multiple, value, interfaceOptions } = this;
|
|
575
|
-
const
|
|
576
|
-
const modalOpts = Object.assign(Object.assign({}, interfaceOptions), { mode, cssClass: ['select-modal', interfaceOptions.cssClass], component: 'ion-select-modal', componentProps: {
|
|
611
|
+
const theme = getIonTheme(this);
|
|
612
|
+
const modalOpts = Object.assign(Object.assign({}, interfaceOptions), { mode: theme, cssClass: ['select-modal', interfaceOptions.cssClass], component: 'ion-select-modal', componentProps: {
|
|
577
613
|
header: interfaceOptions.header,
|
|
578
614
|
cancelText: this.cancelText,
|
|
615
|
+
cancelIcon: this.cancelIcon,
|
|
579
616
|
multiple,
|
|
580
617
|
value,
|
|
581
618
|
options: this.createOverlaySelectOptions(this.childOpts, value),
|
|
@@ -628,12 +665,18 @@ export class Select {
|
|
|
628
665
|
}
|
|
629
666
|
return;
|
|
630
667
|
}
|
|
631
|
-
|
|
668
|
+
/**
|
|
669
|
+
* Returns the text to display in the select based on the selected value.
|
|
670
|
+
*
|
|
671
|
+
* @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`.
|
|
672
|
+
* @returns The text to display in the select, either with or without HTML based on the `useHTML` parameter.
|
|
673
|
+
*/
|
|
674
|
+
getText(useHTML = false) {
|
|
632
675
|
const selectedText = this.selectedText;
|
|
633
676
|
if (selectedText != null && selectedText !== '') {
|
|
634
677
|
return selectedText;
|
|
635
678
|
}
|
|
636
|
-
return generateText(this.childOpts, this.value, this.compareWith);
|
|
679
|
+
return generateText(this.childOpts, this.value, this.compareWith, useHTML);
|
|
637
680
|
}
|
|
638
681
|
setFocus() {
|
|
639
682
|
if (this.focusEl) {
|
|
@@ -647,6 +690,18 @@ export class Select {
|
|
|
647
690
|
};
|
|
648
691
|
this.ionStyle.emit(style);
|
|
649
692
|
}
|
|
693
|
+
getSize() {
|
|
694
|
+
const theme = getIonTheme(this);
|
|
695
|
+
const { size } = this;
|
|
696
|
+
// TODO(ROU-11370): Remove theme check when sizes are defined for all themes.
|
|
697
|
+
if (theme !== 'ionic') {
|
|
698
|
+
return undefined;
|
|
699
|
+
}
|
|
700
|
+
if (size === undefined) {
|
|
701
|
+
return 'medium';
|
|
702
|
+
}
|
|
703
|
+
return size;
|
|
704
|
+
}
|
|
650
705
|
renderLabel() {
|
|
651
706
|
const { label } = this;
|
|
652
707
|
return (h("div", { class: {
|
|
@@ -679,8 +734,8 @@ export class Select {
|
|
|
679
734
|
* when fill="outline".
|
|
680
735
|
*/
|
|
681
736
|
renderLabelContainer() {
|
|
682
|
-
const
|
|
683
|
-
const hasOutlineFill =
|
|
737
|
+
const theme = getIonTheme(this);
|
|
738
|
+
const hasOutlineFill = theme === 'md' && this.fill === 'outline';
|
|
684
739
|
if (hasOutlineFill) {
|
|
685
740
|
/**
|
|
686
741
|
* The outline fill has a special outline
|
|
@@ -703,6 +758,47 @@ export class Select {
|
|
|
703
758
|
*/
|
|
704
759
|
return this.renderLabel();
|
|
705
760
|
}
|
|
761
|
+
/**
|
|
762
|
+
* Wraps text nodes in the select text with span elements
|
|
763
|
+
* so spacing can be added between elements without
|
|
764
|
+
* changing the display to prevent losing the ellipses
|
|
765
|
+
* behavior.
|
|
766
|
+
*
|
|
767
|
+
* Only wraps when the string contains HTML elements
|
|
768
|
+
* alongside text.
|
|
769
|
+
*/
|
|
770
|
+
wrapSelectTextNodes(html) {
|
|
771
|
+
const temp = document.createElement('div');
|
|
772
|
+
temp.innerHTML = html;
|
|
773
|
+
const hasElements = Array.from(temp.childNodes).some((n) => n.nodeType === Node.ELEMENT_NODE);
|
|
774
|
+
// Return the plain text
|
|
775
|
+
if (!hasElements) {
|
|
776
|
+
return html;
|
|
777
|
+
}
|
|
778
|
+
Array.from(temp.childNodes).forEach((node) => {
|
|
779
|
+
var _a, _b, _c, _d;
|
|
780
|
+
if (node.nodeType === Node.TEXT_NODE && ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim())) {
|
|
781
|
+
const text = node.textContent;
|
|
782
|
+
/**
|
|
783
|
+
* Split comma separator from the text content
|
|
784
|
+
* e.g., ", Bacon" becomes ", " text node + <span>Bacon</span>.
|
|
785
|
+
*/
|
|
786
|
+
const commaMatch = text.match(/^(,\s*)(.*)/);
|
|
787
|
+
if (commaMatch) {
|
|
788
|
+
const commaNode = document.createTextNode(commaMatch[1]);
|
|
789
|
+
const wrapper = document.createElement('span');
|
|
790
|
+
wrapper.textContent = commaMatch[2];
|
|
791
|
+
(_b = node.parentNode) === null || _b === void 0 ? void 0 : _b.replaceChild(wrapper, node);
|
|
792
|
+
(_c = wrapper.parentNode) === null || _c === void 0 ? void 0 : _c.insertBefore(commaNode, wrapper);
|
|
793
|
+
return;
|
|
794
|
+
}
|
|
795
|
+
const wrapper = document.createElement('span');
|
|
796
|
+
(_d = node.parentNode) === null || _d === void 0 ? void 0 : _d.replaceChild(wrapper, node);
|
|
797
|
+
wrapper.appendChild(node);
|
|
798
|
+
}
|
|
799
|
+
});
|
|
800
|
+
return temp.innerHTML;
|
|
801
|
+
}
|
|
706
802
|
/**
|
|
707
803
|
* Renders either the placeholder
|
|
708
804
|
* or the selected values based on
|
|
@@ -710,7 +806,7 @@ export class Select {
|
|
|
710
806
|
*/
|
|
711
807
|
renderSelectText() {
|
|
712
808
|
const { placeholder } = this;
|
|
713
|
-
const displayValue = this.getText();
|
|
809
|
+
const displayValue = this.getText(true);
|
|
714
810
|
let addPlaceholderClass = false;
|
|
715
811
|
let selectText = displayValue;
|
|
716
812
|
if (selectText === '' && placeholder !== undefined) {
|
|
@@ -722,6 +818,10 @@ export class Select {
|
|
|
722
818
|
'select-placeholder': addPlaceholderClass,
|
|
723
819
|
};
|
|
724
820
|
const textPart = addPlaceholderClass ? 'placeholder' : 'text';
|
|
821
|
+
if (this.customHTMLEnabled) {
|
|
822
|
+
const wrapped = this.wrapSelectTextNodes(selectText);
|
|
823
|
+
return h("div", { "aria-hidden": "true", class: selectTextClasses, part: textPart, innerHTML: wrapped });
|
|
824
|
+
}
|
|
725
825
|
return (h("div", { "aria-hidden": "true", class: selectTextClasses, part: textPart }, selectText));
|
|
726
826
|
}
|
|
727
827
|
/**
|
|
@@ -729,21 +829,17 @@ export class Select {
|
|
|
729
829
|
* next to the select text.
|
|
730
830
|
*/
|
|
731
831
|
renderSelectIcon() {
|
|
732
|
-
const
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
icon = expandedIcon;
|
|
737
|
-
}
|
|
738
|
-
else {
|
|
739
|
-
const defaultIcon = mode === 'ios' ? chevronExpand : caretDownSharp;
|
|
740
|
-
icon = toggleIcon !== null && toggleIcon !== void 0 ? toggleIcon : defaultIcon;
|
|
832
|
+
const { isExpanded, selectExpandedIcon, selectCollapsedIcon } = this;
|
|
833
|
+
let icon = selectCollapsedIcon;
|
|
834
|
+
if (isExpanded) {
|
|
835
|
+
icon = selectExpandedIcon;
|
|
741
836
|
}
|
|
742
837
|
return h("ion-icon", { class: "select-icon", part: "icon", "aria-hidden": "true", icon: icon });
|
|
743
838
|
}
|
|
744
839
|
get ariaLabel() {
|
|
745
840
|
var _a;
|
|
746
841
|
const { placeholder, inheritedAttributes } = this;
|
|
842
|
+
// Get the plain text from the selected text
|
|
747
843
|
const displayValue = this.getText();
|
|
748
844
|
// The aria label should be preferred over visible text if both are specified
|
|
749
845
|
const definedLabel = (_a = inheritedAttributes['aria-label']) !== null && _a !== void 0 ? _a : this.labelText;
|
|
@@ -772,6 +868,63 @@ export class Select {
|
|
|
772
868
|
const { disabled, inputId, isExpanded, required } = this;
|
|
773
869
|
return (h("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, "aria-required": `${required}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
|
|
774
870
|
}
|
|
871
|
+
getShape() {
|
|
872
|
+
const theme = getIonTheme(this);
|
|
873
|
+
const { shape } = this;
|
|
874
|
+
// TODO(ROU-11366): Remove theme check when shapes are defined for all themes.
|
|
875
|
+
if (theme === 'ionic' && shape === undefined) {
|
|
876
|
+
return 'round';
|
|
877
|
+
}
|
|
878
|
+
return shape;
|
|
879
|
+
}
|
|
880
|
+
/**
|
|
881
|
+
* Get the icon to use for the expand icon.
|
|
882
|
+
* If an icon is set on the component, use that.
|
|
883
|
+
* Otherwise, use the icon set in the config.
|
|
884
|
+
* If no icon is set in the config, use the default icon.
|
|
885
|
+
*/
|
|
886
|
+
get selectExpandedIcon() {
|
|
887
|
+
// Return the expandedIcon or toggleIcon if either is explicitly set
|
|
888
|
+
if (this.expandedIcon != null) {
|
|
889
|
+
return this.expandedIcon;
|
|
890
|
+
}
|
|
891
|
+
else if (this.toggleIcon != null) {
|
|
892
|
+
return this.toggleIcon;
|
|
893
|
+
}
|
|
894
|
+
// Determine the theme and map to default icons
|
|
895
|
+
const theme = getIonTheme(this);
|
|
896
|
+
const defaultIcons = {
|
|
897
|
+
ios: chevronExpand,
|
|
898
|
+
ionic: caretDownRegular,
|
|
899
|
+
md: caretDownSharp,
|
|
900
|
+
};
|
|
901
|
+
// Get the default icon based on the theme, falling back to 'md' icon if necessary
|
|
902
|
+
const defaultIcon = defaultIcons[theme] || defaultIcons.md;
|
|
903
|
+
// Return the configured select expanded icon or the default icon
|
|
904
|
+
return config.get('selectExpandedIcon', defaultIcon);
|
|
905
|
+
}
|
|
906
|
+
/**
|
|
907
|
+
* Get the icon to use for the collapsed icon.
|
|
908
|
+
* If an icon is set on the component, use that.
|
|
909
|
+
* Otherwise, use the icon set in the config.
|
|
910
|
+
* If no icon is set in the config, use the default icon.
|
|
911
|
+
*/
|
|
912
|
+
get selectCollapsedIcon() {
|
|
913
|
+
// Return the toggleIcon if it is explicitly set
|
|
914
|
+
if (this.toggleIcon) {
|
|
915
|
+
return this.toggleIcon;
|
|
916
|
+
}
|
|
917
|
+
// Determine the theme and map to default icons
|
|
918
|
+
const theme = getIonTheme(this);
|
|
919
|
+
const defaultIcons = {
|
|
920
|
+
ios: chevronExpand,
|
|
921
|
+
ionic: caretDownRegular,
|
|
922
|
+
md: caretDownSharp,
|
|
923
|
+
};
|
|
924
|
+
// Get the default icon based on the theme, falling back to 'md' icon if necessary
|
|
925
|
+
const defaultIcon = defaultIcons[theme] || defaultIcons.md;
|
|
926
|
+
return config.get('selectCollapsedIcon', defaultIcon);
|
|
927
|
+
}
|
|
775
928
|
getHintTextId() {
|
|
776
929
|
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
777
930
|
if (isInvalid && errorText) {
|
|
@@ -809,13 +962,17 @@ export class Select {
|
|
|
809
962
|
return (h("div", { class: "select-bottom", part: "bottom" }, this.renderHintText()));
|
|
810
963
|
}
|
|
811
964
|
render() {
|
|
812
|
-
const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill,
|
|
813
|
-
const
|
|
965
|
+
const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill, name, value, hasFocus, } = this;
|
|
966
|
+
const theme = getIonTheme(this);
|
|
967
|
+
const shape = this.getShape();
|
|
814
968
|
const hasFloatingOrStackedLabel = labelPlacement === 'floating' || labelPlacement === 'stacked';
|
|
969
|
+
const shouldRenderOuterIcon = theme !== 'ionic' && hasFloatingOrStackedLabel;
|
|
970
|
+
const shouldRenderInnerIcon = theme === 'ionic' || !hasFloatingOrStackedLabel;
|
|
815
971
|
const justifyEnabled = !hasFloatingOrStackedLabel && justify !== undefined;
|
|
816
972
|
const rtl = isRTL(el) ? 'rtl' : 'ltr';
|
|
817
973
|
const inItem = hostContext('ion-item', this.el);
|
|
818
|
-
const
|
|
974
|
+
const size = this.getSize();
|
|
975
|
+
const shouldRenderHighlight = theme === 'md' && fill !== 'outline' && !inItem;
|
|
819
976
|
const hasValue = this.hasValue();
|
|
820
977
|
const hasStartEndSlots = el.querySelector('[slot="start"], [slot="end"]') !== null;
|
|
821
978
|
renderHiddenInput(true, el, name, parseValue(value), disabled);
|
|
@@ -837,8 +994,8 @@ export class Select {
|
|
|
837
994
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
838
995
|
*/
|
|
839
996
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
|
|
840
|
-
return (h(Host, { key: '
|
|
841
|
-
[
|
|
997
|
+
return (h(Host, { key: 'ce995037cea6ce309ead79f881772c628086ab45', onClick: this.onClick, class: createColorClasses(this.color, {
|
|
998
|
+
[theme]: true,
|
|
842
999
|
'in-item': inItem,
|
|
843
1000
|
'in-item-color': hostContext('ion-item.ion-color', el),
|
|
844
1001
|
'select-disabled': disabled,
|
|
@@ -855,20 +1012,33 @@ export class Select {
|
|
|
855
1012
|
[`select-justify-${justify}`]: justifyEnabled,
|
|
856
1013
|
[`select-shape-${shape}`]: shape !== undefined,
|
|
857
1014
|
[`select-label-placement-${labelPlacement}`]: true,
|
|
858
|
-
|
|
1015
|
+
[`select-size-${size}`]: size !== undefined,
|
|
1016
|
+
}) }, h("label", { key: '862fa9d03a7feeeac05463842898849001724cef', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), h("div", { key: '1e91cc271790756a97cfc0c8caaca767ba793467', class: "select-wrapper-inner", part: "inner" },
|
|
1017
|
+
/**
|
|
1018
|
+
* For the ionic theme, we render the outline container here
|
|
1019
|
+
* instead of higher up, so it can be positioned relative to
|
|
1020
|
+
* the native wrapper instead of the <label> element or the
|
|
1021
|
+
* entire component. This allows the label text to be positioned
|
|
1022
|
+
* above the outline, while staying within the bounds of the
|
|
1023
|
+
* <label> element, ensuring that clicking the label text
|
|
1024
|
+
* focuses the select.
|
|
1025
|
+
*/
|
|
1026
|
+
theme === 'ionic' && fill === 'outline' && h("div", { key: '14a2a14daa10625fa59f8f148e124a1c0c147319', class: "select-outline" }), h("slot", { key: 'a5a4372feffbeb3652e6045e64cbfacb66c58da9', name: "start" }), h("div", { key: 'b6ac054eaca720a21e0617cf413e576ef23a60e8', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: '140d299760a7c7f186b31e9e38f968534b1e116a', name: "end" }), shouldRenderInnerIcon && this.renderSelectIcon()), shouldRenderOuterIcon && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: 'b1a1e98302b0e87c3cd850e9abd8faf946a2b492', class: "select-highlight" })), this.renderBottomContent()));
|
|
859
1027
|
}
|
|
860
1028
|
static get is() { return "ion-select"; }
|
|
861
1029
|
static get encapsulation() { return "shadow"; }
|
|
862
1030
|
static get originalStyleUrls() {
|
|
863
1031
|
return {
|
|
864
1032
|
"ios": ["select.ios.scss"],
|
|
865
|
-
"md": ["select.md.scss"]
|
|
1033
|
+
"md": ["select.md.scss"],
|
|
1034
|
+
"ionic": ["select.ionic.scss"]
|
|
866
1035
|
};
|
|
867
1036
|
}
|
|
868
1037
|
static get styleUrls() {
|
|
869
1038
|
return {
|
|
870
1039
|
"ios": ["select.ios.css"],
|
|
871
|
-
"md": ["select.md.css"]
|
|
1040
|
+
"md": ["select.md.css"],
|
|
1041
|
+
"ionic": ["select.ionic.css"]
|
|
872
1042
|
};
|
|
873
1043
|
}
|
|
874
1044
|
static get properties() {
|
|
@@ -893,6 +1063,26 @@ export class Select {
|
|
|
893
1063
|
"attribute": "cancel-text",
|
|
894
1064
|
"defaultValue": "'Cancel'"
|
|
895
1065
|
},
|
|
1066
|
+
"cancelIcon": {
|
|
1067
|
+
"type": "boolean",
|
|
1068
|
+
"mutable": false,
|
|
1069
|
+
"complexType": {
|
|
1070
|
+
"original": "boolean",
|
|
1071
|
+
"resolved": "boolean",
|
|
1072
|
+
"references": {}
|
|
1073
|
+
},
|
|
1074
|
+
"required": false,
|
|
1075
|
+
"optional": false,
|
|
1076
|
+
"docs": {
|
|
1077
|
+
"tags": [],
|
|
1078
|
+
"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."
|
|
1079
|
+
},
|
|
1080
|
+
"getter": false,
|
|
1081
|
+
"setter": false,
|
|
1082
|
+
"reflect": false,
|
|
1083
|
+
"attribute": "cancel-icon",
|
|
1084
|
+
"defaultValue": "false"
|
|
1085
|
+
},
|
|
896
1086
|
"color": {
|
|
897
1087
|
"type": "string",
|
|
898
1088
|
"mutable": false,
|
|
@@ -977,7 +1167,7 @@ export class Select {
|
|
|
977
1167
|
"optional": true,
|
|
978
1168
|
"docs": {
|
|
979
1169
|
"tags": [],
|
|
980
|
-
"text": "The fill for the item. If `\"solid\"` the item will have a background. If\n`\"outline\"` the item will be transparent with a border. Only available in
|
|
1170
|
+
"text": "The fill for the item. If `\"solid\"` the item will have a background. If\n`\"outline\"` the item will be transparent with a border. Only available in the `\"md\"` theme."
|
|
981
1171
|
},
|
|
982
1172
|
"getter": false,
|
|
983
1173
|
"setter": false,
|
|
@@ -1237,7 +1427,7 @@ export class Select {
|
|
|
1237
1427
|
"optional": true,
|
|
1238
1428
|
"docs": {
|
|
1239
1429
|
"tags": [],
|
|
1240
|
-
"text": "The toggle icon to use. Defaults to
|
|
1430
|
+
"text": "The toggle icon to use. Defaults to `\"chevronExpand\"` for the `\"ios\"` theme,\nor `\"caretDownSharp\"` for the `\"md\"` and `\"ionic\"` themes."
|
|
1241
1431
|
},
|
|
1242
1432
|
"getter": false,
|
|
1243
1433
|
"setter": false,
|
|
@@ -1256,70 +1446,89 @@ export class Select {
|
|
|
1256
1446
|
"optional": true,
|
|
1257
1447
|
"docs": {
|
|
1258
1448
|
"tags": [],
|
|
1259
|
-
"text": "The toggle icon to show when the select is open. If defined, the icon\nrotation behavior in
|
|
1449
|
+
"text": "The toggle icon to show when the select is open. If defined, the icon\nrotation behavior in `\"md\"` theme will be disabled. If undefined, `toggleIcon`\nwill be used for when the select is both open and closed."
|
|
1260
1450
|
},
|
|
1261
1451
|
"getter": false,
|
|
1262
1452
|
"setter": false,
|
|
1263
1453
|
"reflect": false,
|
|
1264
1454
|
"attribute": "expanded-icon"
|
|
1265
1455
|
},
|
|
1456
|
+
"required": {
|
|
1457
|
+
"type": "boolean",
|
|
1458
|
+
"mutable": false,
|
|
1459
|
+
"complexType": {
|
|
1460
|
+
"original": "boolean",
|
|
1461
|
+
"resolved": "boolean",
|
|
1462
|
+
"references": {}
|
|
1463
|
+
},
|
|
1464
|
+
"required": false,
|
|
1465
|
+
"optional": false,
|
|
1466
|
+
"docs": {
|
|
1467
|
+
"tags": [],
|
|
1468
|
+
"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."
|
|
1469
|
+
},
|
|
1470
|
+
"getter": false,
|
|
1471
|
+
"setter": false,
|
|
1472
|
+
"reflect": false,
|
|
1473
|
+
"attribute": "required",
|
|
1474
|
+
"defaultValue": "false"
|
|
1475
|
+
},
|
|
1266
1476
|
"shape": {
|
|
1267
1477
|
"type": "string",
|
|
1268
1478
|
"mutable": false,
|
|
1269
1479
|
"complexType": {
|
|
1270
|
-
"original": "'round'",
|
|
1271
|
-
"resolved": "\"round\" | undefined",
|
|
1480
|
+
"original": "'soft' | 'round' | 'rectangular'",
|
|
1481
|
+
"resolved": "\"rectangular\" | \"round\" | \"soft\" | undefined",
|
|
1272
1482
|
"references": {}
|
|
1273
1483
|
},
|
|
1274
1484
|
"required": false,
|
|
1275
1485
|
"optional": true,
|
|
1276
1486
|
"docs": {
|
|
1277
1487
|
"tags": [],
|
|
1278
|
-
"text": "
|
|
1488
|
+
"text": "Set to `\"soft\"` for a select with slightly rounded corners,\n`\"round\"` for a select with fully rounded corners,\nor `\"rectangular\"` for a select without rounded corners.\n\nDefaults to `\"round\"` for the `\"ionic\"` theme, undefined for all other themes."
|
|
1279
1489
|
},
|
|
1280
1490
|
"getter": false,
|
|
1281
1491
|
"setter": false,
|
|
1282
1492
|
"reflect": false,
|
|
1283
1493
|
"attribute": "shape"
|
|
1284
1494
|
},
|
|
1285
|
-
"
|
|
1286
|
-
"type": "
|
|
1287
|
-
"mutable":
|
|
1495
|
+
"size": {
|
|
1496
|
+
"type": "string",
|
|
1497
|
+
"mutable": false,
|
|
1288
1498
|
"complexType": {
|
|
1289
|
-
"original": "
|
|
1290
|
-
"resolved": "
|
|
1499
|
+
"original": "'small' | 'medium' | 'large'",
|
|
1500
|
+
"resolved": "\"large\" | \"medium\" | \"small\" | undefined",
|
|
1291
1501
|
"references": {}
|
|
1292
1502
|
},
|
|
1293
1503
|
"required": false,
|
|
1294
1504
|
"optional": true,
|
|
1295
1505
|
"docs": {
|
|
1296
1506
|
"tags": [],
|
|
1297
|
-
"text": "The
|
|
1507
|
+
"text": "The size of the select. If \"large\" it will increase the height of the select, while\n\"small\" and \"medium\" provide progressively smaller heights.\n\nDefaults to `\"medium\"` for the ionic theme, and undefined for all other themes."
|
|
1298
1508
|
},
|
|
1299
1509
|
"getter": false,
|
|
1300
1510
|
"setter": false,
|
|
1301
1511
|
"reflect": false,
|
|
1302
|
-
"attribute": "
|
|
1512
|
+
"attribute": "size"
|
|
1303
1513
|
},
|
|
1304
|
-
"
|
|
1305
|
-
"type": "
|
|
1306
|
-
"mutable":
|
|
1514
|
+
"value": {
|
|
1515
|
+
"type": "any",
|
|
1516
|
+
"mutable": true,
|
|
1307
1517
|
"complexType": {
|
|
1308
|
-
"original": "
|
|
1309
|
-
"resolved": "
|
|
1518
|
+
"original": "any | null",
|
|
1519
|
+
"resolved": "any",
|
|
1310
1520
|
"references": {}
|
|
1311
1521
|
},
|
|
1312
1522
|
"required": false,
|
|
1313
|
-
"optional":
|
|
1523
|
+
"optional": true,
|
|
1314
1524
|
"docs": {
|
|
1315
1525
|
"tags": [],
|
|
1316
|
-
"text": "
|
|
1526
|
+
"text": "The value of the select."
|
|
1317
1527
|
},
|
|
1318
1528
|
"getter": false,
|
|
1319
1529
|
"setter": false,
|
|
1320
1530
|
"reflect": false,
|
|
1321
|
-
"attribute": "
|
|
1322
|
-
"defaultValue": "false"
|
|
1531
|
+
"attribute": "value"
|
|
1323
1532
|
}
|
|
1324
1533
|
};
|
|
1325
1534
|
}
|
|
@@ -1515,25 +1724,223 @@ const parseValue = (value) => {
|
|
|
1515
1724
|
}
|
|
1516
1725
|
return value.toString();
|
|
1517
1726
|
};
|
|
1518
|
-
const generateText = (opts, value, compareWith) => {
|
|
1727
|
+
const generateText = (opts, value, compareWith, useHTML = false) => {
|
|
1519
1728
|
if (value === undefined) {
|
|
1520
1729
|
return '';
|
|
1521
1730
|
}
|
|
1522
1731
|
if (Array.isArray(value)) {
|
|
1523
1732
|
return value
|
|
1524
|
-
.map((v) => textForValue(opts, v, compareWith))
|
|
1733
|
+
.map((v) => textForValue(opts, v, compareWith, useHTML))
|
|
1525
1734
|
.filter((opt) => opt !== null)
|
|
1526
1735
|
.join(', ');
|
|
1527
1736
|
}
|
|
1528
1737
|
else {
|
|
1529
|
-
return textForValue(opts, value, compareWith) || '';
|
|
1738
|
+
return textForValue(opts, value, compareWith, useHTML) || '';
|
|
1530
1739
|
}
|
|
1531
1740
|
};
|
|
1532
|
-
|
|
1741
|
+
/**
|
|
1742
|
+
* Returns the display text for a given value from the list of options.
|
|
1743
|
+
* When `useHTML` is true, returns sanitized HTML for the select text.
|
|
1744
|
+
* When `useHTML` is false, returns plain text for aria-label and other
|
|
1745
|
+
* text-only contexts.
|
|
1746
|
+
*
|
|
1747
|
+
* @param opts - The list of ion-select-option elements.
|
|
1748
|
+
* @param value - The value to find the matching option for.
|
|
1749
|
+
* @param compareWith - Custom comparison function or property name.
|
|
1750
|
+
* @param useHTML - If true, returns HTML string. If false, returns plain text.
|
|
1751
|
+
*/
|
|
1752
|
+
const textForValue = (opts, value, compareWith, useHTML = false) => {
|
|
1533
1753
|
const selectOpt = opts.find((opt) => {
|
|
1534
1754
|
return compareOptions(value, getOptionValue(opt), compareWith);
|
|
1535
1755
|
});
|
|
1536
|
-
|
|
1756
|
+
const customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
|
|
1757
|
+
if (!selectOpt) {
|
|
1758
|
+
return null;
|
|
1759
|
+
}
|
|
1760
|
+
// Return sanitized HTML for the select text
|
|
1761
|
+
if (customHTMLEnabled && useHTML) {
|
|
1762
|
+
return getOptionContent(selectOpt, undefined, true);
|
|
1763
|
+
}
|
|
1764
|
+
/**
|
|
1765
|
+
* When custom HTML is enabled, extract only the default slot content.
|
|
1766
|
+
* This ensures aria-label and other text-only contexts read only
|
|
1767
|
+
* the relevant option text.
|
|
1768
|
+
*/
|
|
1769
|
+
if (customHTMLEnabled) {
|
|
1770
|
+
const content = getOptionContent(selectOpt);
|
|
1771
|
+
if (typeof content === 'string') {
|
|
1772
|
+
return content;
|
|
1773
|
+
}
|
|
1774
|
+
/**
|
|
1775
|
+
* Elements were found in the default slot, extract and concatenate
|
|
1776
|
+
* their text content while trimming whitespace.
|
|
1777
|
+
*/
|
|
1778
|
+
if (content) {
|
|
1779
|
+
const texts = Array.from(content.childNodes)
|
|
1780
|
+
.map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); })
|
|
1781
|
+
.filter((t) => t);
|
|
1782
|
+
return texts.join(' ') || null;
|
|
1783
|
+
}
|
|
1784
|
+
// Empty option
|
|
1785
|
+
return null;
|
|
1786
|
+
}
|
|
1787
|
+
return getDefaultSlotPlainText(selectOpt);
|
|
1788
|
+
};
|
|
1789
|
+
/**
|
|
1790
|
+
* Trims whitespace from all text nodes within a DOM tree.
|
|
1791
|
+
* This prevents invisible layout shifts and unwanted gaps between
|
|
1792
|
+
* elements when HTML content is injected via innerHTML or cloneNode,
|
|
1793
|
+
* as browsers preserve whitespace (tabs, newlines, spaces) from
|
|
1794
|
+
* the original source markup.
|
|
1795
|
+
*
|
|
1796
|
+
* @param node The root node to start trimming text nodes from.
|
|
1797
|
+
*/
|
|
1798
|
+
const trimTextNodes = (node) => {
|
|
1799
|
+
node.childNodes.forEach((child) => {
|
|
1800
|
+
var _a;
|
|
1801
|
+
if (child.nodeType === Node.TEXT_NODE) {
|
|
1802
|
+
child.textContent = ((_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '';
|
|
1803
|
+
}
|
|
1804
|
+
else if (child.nodeType === Node.ELEMENT_NODE) {
|
|
1805
|
+
trimTextNodes(child);
|
|
1806
|
+
}
|
|
1807
|
+
});
|
|
1808
|
+
};
|
|
1809
|
+
/**
|
|
1810
|
+
* Extracts and clones content from an `ion-select-option` element
|
|
1811
|
+
* for rendering within overlay interfaces or the select text when `customHTMLEnabled` is `true`.
|
|
1812
|
+
*
|
|
1813
|
+
* @param option - The `ion-select-option` element to extract content from.
|
|
1814
|
+
* @param slotName - Optional slot name to extract. If omitted, extracts the default slot content.
|
|
1815
|
+
* @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.
|
|
1816
|
+
* @returns When `useHTML` is `true`, a sanitized HTML string. When `false`, a
|
|
1817
|
+
* div element containing cloned child nodes. Returns `null` if no matching
|
|
1818
|
+
* content is found.
|
|
1819
|
+
*/
|
|
1820
|
+
const getOptionContent = (option, slotName, useHTML = false) => {
|
|
1821
|
+
let nodes;
|
|
1822
|
+
if (slotName) {
|
|
1823
|
+
// Named slot: get elements with matching slot attribute
|
|
1824
|
+
nodes = Array.from(option.children).filter((el) => el.getAttribute('slot') === slotName);
|
|
1825
|
+
}
|
|
1826
|
+
else {
|
|
1827
|
+
// Default slot: get nodes without a slot attribute
|
|
1828
|
+
const defaultSlot = getOptionDefaultSlot(option) || [];
|
|
1829
|
+
nodes = defaultSlot.filter((node) => {
|
|
1830
|
+
var _a;
|
|
1831
|
+
/**
|
|
1832
|
+
* Exclude whitespace-only text nodes (newline noise between
|
|
1833
|
+
* markup elements). Element nodes are always kept, even when
|
|
1834
|
+
* their textContent is empty (e.g. <svg>, <img>).
|
|
1835
|
+
*/
|
|
1836
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
1837
|
+
return ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim().length) !== 0;
|
|
1838
|
+
}
|
|
1839
|
+
return true;
|
|
1840
|
+
});
|
|
1841
|
+
}
|
|
1842
|
+
if (nodes.length === 0) {
|
|
1843
|
+
return null;
|
|
1844
|
+
}
|
|
1845
|
+
// Return plain text if no elements are found
|
|
1846
|
+
if (!slotName && nodes.every((n) => n.nodeType === Node.TEXT_NODE)) {
|
|
1847
|
+
return nodes.map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); }).join(' ') || null;
|
|
1848
|
+
}
|
|
1849
|
+
/**
|
|
1850
|
+
* Mirror known custom-element properties (e.g. ion-icon's `icon`)
|
|
1851
|
+
* onto attributes before cloning. Frameworks like Vue set these as
|
|
1852
|
+
* DOM properties, which `cloneNode` doesn't copy, so without this
|
|
1853
|
+
* step the cloned overlay copy renders without the prop's value.
|
|
1854
|
+
*/
|
|
1855
|
+
nodes.forEach((n) => {
|
|
1856
|
+
if (n.nodeType === Node.ELEMENT_NODE) {
|
|
1857
|
+
reflectPropertiesToAttributes(n);
|
|
1858
|
+
}
|
|
1859
|
+
});
|
|
1860
|
+
// Clone each node into a temporary container
|
|
1861
|
+
const container = document.createElement('div');
|
|
1862
|
+
nodes.forEach((n) => {
|
|
1863
|
+
var _a;
|
|
1864
|
+
const clone = n.cloneNode(true);
|
|
1865
|
+
if (clone.nodeType === Node.TEXT_NODE) {
|
|
1866
|
+
clone.textContent = ((_a = clone.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '';
|
|
1867
|
+
}
|
|
1868
|
+
else {
|
|
1869
|
+
trimTextNodes(clone);
|
|
1870
|
+
}
|
|
1871
|
+
container.appendChild(clone);
|
|
1872
|
+
});
|
|
1873
|
+
/**
|
|
1874
|
+
* Sanitize the cloned DOM in place. Trusted attributes (size, color,
|
|
1875
|
+
* shape, etc.) are preserved; event handlers, javascript: URLs, and
|
|
1876
|
+
* blocked tags are stripped.
|
|
1877
|
+
*/
|
|
1878
|
+
sanitizeDOMTree(container);
|
|
1879
|
+
if (useHTML) {
|
|
1880
|
+
return container.innerHTML.trim() || null;
|
|
1881
|
+
}
|
|
1882
|
+
return container;
|
|
1883
|
+
};
|
|
1884
|
+
/**
|
|
1885
|
+
* Returns the child nodes that belong to the default slot of an
|
|
1886
|
+
* option element, excluding any nodes that are assigned to named
|
|
1887
|
+
* slots.
|
|
1888
|
+
*
|
|
1889
|
+
* @param option - The `ion-select-option` element to extract default-slot nodes from.
|
|
1890
|
+
* @returns An array of default slot nodes, or `null` if none are found.
|
|
1891
|
+
*/
|
|
1892
|
+
const getOptionDefaultSlot = (option) => {
|
|
1893
|
+
const defaultSlotNodes = Array.from(option.childNodes).filter((node) => {
|
|
1894
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
1895
|
+
return !node.hasAttribute('slot');
|
|
1896
|
+
}
|
|
1897
|
+
return node.nodeType === Node.TEXT_NODE;
|
|
1898
|
+
});
|
|
1899
|
+
if (defaultSlotNodes.length === 0) {
|
|
1900
|
+
return null;
|
|
1901
|
+
}
|
|
1902
|
+
return defaultSlotNodes;
|
|
1903
|
+
};
|
|
1904
|
+
/**
|
|
1905
|
+
* Extracts plain text from only the default slot of an option,
|
|
1906
|
+
* excluding content assigned to named slots (start/end).
|
|
1907
|
+
*/
|
|
1908
|
+
const getDefaultSlotPlainText = (option) => {
|
|
1909
|
+
const texts = Array.from(option.childNodes)
|
|
1910
|
+
.filter((node) => {
|
|
1911
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
1912
|
+
return !node.hasAttribute('slot');
|
|
1913
|
+
}
|
|
1914
|
+
return node.nodeType === Node.TEXT_NODE;
|
|
1915
|
+
})
|
|
1916
|
+
.filter((node) => node.nodeType === Node.TEXT_NODE)
|
|
1917
|
+
.map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); })
|
|
1918
|
+
.filter((t) => t);
|
|
1919
|
+
return texts.join(' ');
|
|
1920
|
+
};
|
|
1921
|
+
/**
|
|
1922
|
+
* Extracts the rich content from an `ion-select-option`.
|
|
1923
|
+
* When `customHTMLEnabled` is `false`, only the plain text from the
|
|
1924
|
+
* default slot is read and the start and end slots are skipped.
|
|
1925
|
+
*
|
|
1926
|
+
* @param option - The `ion-select-option` element to extract content from.
|
|
1927
|
+
* @param customHTMLEnabled - Whether custom HTML rendering is enabled
|
|
1928
|
+
* via the `innerHTMLTemplatesEnabled` config.
|
|
1929
|
+
*/
|
|
1930
|
+
const extractOptionContent = (option, customHTMLEnabled) => {
|
|
1931
|
+
var _a, _b;
|
|
1932
|
+
if (!customHTMLEnabled) {
|
|
1933
|
+
return {
|
|
1934
|
+
content: getDefaultSlotPlainText(option),
|
|
1935
|
+
startContent: undefined,
|
|
1936
|
+
endContent: undefined,
|
|
1937
|
+
};
|
|
1938
|
+
}
|
|
1939
|
+
return {
|
|
1940
|
+
content: getOptionContent(option),
|
|
1941
|
+
startContent: (_a = getOptionContent(option, 'start')) !== null && _a !== void 0 ? _a : undefined,
|
|
1942
|
+
endContent: (_b = getOptionContent(option, 'end')) !== null && _b !== void 0 ? _b : undefined,
|
|
1943
|
+
};
|
|
1537
1944
|
};
|
|
1538
1945
|
let selectIds = 0;
|
|
1539
1946
|
const OPTION_CLASS = 'select-interface-option';
|