@ionic/core 9.0.0 → 9.0.1-dev.11787248963.10a00c73
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/index.js +1 -1
- package/components/ion-accordion-group.js +1 -1
- package/components/ion-accordion.js +1 -1
- package/components/ion-action-sheet.js +1 -1
- package/components/ion-alert.js +1 -1
- package/components/ion-app.js +1 -1
- package/components/ion-avatar.js +1 -1
- package/components/ion-back-button.js +1 -1
- package/components/ion-backdrop.js +1 -1
- package/components/ion-badge.js +1 -1
- package/components/ion-breadcrumb.js +1 -1
- package/components/ion-breadcrumbs.js +1 -1
- package/components/ion-button.js +1 -1
- package/components/ion-buttons.js +1 -1
- package/components/ion-card-content.js +1 -1
- package/components/ion-card-header.js +1 -1
- package/components/ion-card-subtitle.js +1 -1
- package/components/ion-card-title.js +1 -1
- package/components/ion-card.js +1 -1
- package/components/ion-checkbox.js +1 -1
- package/components/ion-chip.js +1 -1
- package/components/ion-col.js +1 -1
- package/components/ion-content.js +1 -1
- package/components/ion-datetime-button.js +1 -1
- package/components/ion-datetime.js +1 -1
- package/components/ion-fab-button.js +1 -1
- package/components/ion-fab-list.js +1 -1
- package/components/ion-fab.js +1 -1
- package/components/ion-footer.js +1 -1
- package/components/ion-grid.js +1 -1
- package/components/ion-header.js +1 -1
- package/components/ion-icon.js +1 -1
- package/components/ion-img.js +1 -1
- package/components/ion-infinite-scroll-content.js +1 -1
- package/components/ion-infinite-scroll.js +1 -1
- package/components/ion-input-otp.js +1 -1
- package/components/ion-input-password-toggle.js +1 -1
- package/components/ion-input.js +1 -1
- package/components/ion-item-divider.js +1 -1
- package/components/ion-item-group.js +1 -1
- package/components/ion-item-option.js +1 -1
- package/components/ion-item-options.js +1 -1
- package/components/ion-item-sliding.js +1 -1
- package/components/ion-item.js +1 -1
- package/components/ion-label.js +1 -1
- package/components/ion-list-header.js +1 -1
- package/components/ion-list.js +1 -1
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-menu-toggle.js +1 -1
- package/components/ion-menu.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +1 -1
- package/components/ion-note.js +1 -1
- package/components/ion-picker-column-option.js +1 -1
- package/components/ion-picker-column.js +1 -1
- package/components/ion-picker.js +1 -1
- package/components/ion-popover.js +1 -1
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-radio-group.js +1 -1
- package/components/ion-radio.js +1 -1
- package/components/ion-range.js +1 -1
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-ripple-effect.js +1 -1
- package/components/ion-route-redirect.js +1 -1
- package/components/ion-route.js +1 -1
- package/components/ion-router-link.js +1 -1
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-router.js +1 -1
- package/components/ion-row.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-segment-content.js +1 -1
- package/components/ion-segment-view.js +1 -1
- package/components/ion-segment.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select-option.js +1 -1
- package/components/ion-select-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-skeleton-text.js +1 -1
- package/components/ion-spinner.js +1 -1
- package/components/ion-split-pane.js +1 -1
- package/components/ion-tab-bar.js +1 -1
- package/components/ion-tab-button.js +1 -1
- package/components/ion-tab.js +1 -1
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +1 -1
- package/components/ion-textarea.js +1 -1
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-title.js +1 -1
- package/components/ion-toast.js +1 -1
- package/components/ion-toggle.js +1 -1
- package/components/ion-toolbar.js +1 -1
- package/components/{p-63OhffQv.js → p-66ogmUZU.js} +1 -1
- package/components/p-6Vp915Y7.js +4 -0
- package/components/p-7PNwKFZi.js +4 -0
- package/components/{p-G0TxqHfe.js → p-A8MJRBIY.js} +1 -1
- package/components/p-AQcCdH2_.js +4 -0
- package/{dist/ionic/p-Dn0mqQ_R.js → components/p-B6x5_b9w.js} +1 -1
- package/components/p-B8MQjdvk.js +4 -0
- package/components/p-BA_4ZIEg.js +4 -0
- package/components/p-BFtL8t1r.js +4 -0
- package/components/{p-DaA_8eqt.js → p-BMfgF-Tv.js} +1 -1
- package/components/p-BPDxVIRr.js +4 -0
- package/components/p-BSARlp49.js +4 -0
- package/components/p-B_gJaBk0.js +4 -0
- package/components/p-BdwCtX8Y.js +4 -0
- package/components/p-Bg4OwDwb.js +4 -0
- package/components/{p-DV85C0e0.js → p-BgUIV8NQ.js} +1 -1
- package/components/p-Bnc0m4SW.js +4 -0
- package/components/p-BpLt_Ptn.js +4 -0
- package/components/p-BqBDq1Ma.js +4 -0
- package/components/{p-C_phlPMC.js → p-BrFaQbGY.js} +1 -1
- package/{dist/ionic/p-Cdjxf_yg.js → components/p-BuPAFTWI.js} +1 -1
- package/components/p-Bx2saTHs.js +4 -0
- package/components/p-BxhE2W85.js +4 -0
- package/components/p-CHswSpKy.js +4 -0
- package/components/{p-fruGqVHh.js → p-CQAjyETU.js} +1 -1
- package/components/{p-1jI5oW-W.js → p-CR9OgE6N.js} +1 -1
- package/components/p-CWETxTjE.js +4 -0
- package/components/p-CaZeZIL2.js +4 -0
- package/components/p-CaiZOhfC.js +4 -0
- package/components/p-CgvDC7hC.js +4 -0
- package/components/{p-BqPNzJf6.js → p-CqyGR9Aq.js} +1 -1
- package/components/{p-UIBJkZf8.js → p-D0YpjgON.js} +1 -1
- package/components/p-D7ysFE2B.js +4 -0
- package/{dist/ionic/p-4eOQC00Z.js → components/p-DCWfzDM8.js} +1 -1
- package/components/{p-DwpKZ6rl.js → p-DDdkefwf.js} +1 -1
- package/components/{p-DzRT60Tw.js → p-DEW7CnUc.js} +1 -1
- package/components/p-DQ1IPvZO.js +4 -0
- package/components/p-DcOH6-o5.js +4 -0
- package/components/{p-DD5fQ4EQ.js → p-DfdYCsov.js} +1 -1
- package/components/{p-DSzSbVP2.js → p-DhOoEIAs.js} +1 -1
- package/components/{p-DM-PrAoh.js → p-Dl_7b_UJ.js} +1 -1
- package/components/p-DqAI6tg7.js +4 -0
- package/components/p-DrehWDfv.js +4 -0
- package/components/{p-ryyf_ItD.js → p-DysqCsJu.js} +1 -1
- package/components/p-H1f2qsk4.js +4 -0
- package/components/p-HVYBAhFx.js +4 -0
- package/components/{p-CbhUdtjf.js → p-Kmrg3Fed.js} +1 -1
- package/components/{p-Bjig0DJK.js → p-RFfE9hF6.js} +1 -1
- package/{dist/ionic/p-CBWAXjA5.js → components/p-SR-LLqp_.js} +1 -1
- package/components/p-eFI3mtEX.js +4 -0
- package/components/p-gFwXiYC_.js +4 -0
- package/components/p-tX3UxCnU.js +4 -0
- package/components/p-v2NpoOHp.js +4 -0
- package/dist/cjs/{animation-C0mOHzej.js → animation-D-OqR4a4.js} +1 -1
- package/dist/cjs/{app-globals-BREG4twP.js → app-globals-BzgwARwJ.js} +1 -1
- package/dist/cjs/{button-active-CVMevT9a.js → button-active-BlWSD7uK.js} +2 -2
- package/dist/cjs/{format-pp0Du3K-.js → format-D7ig6Vm0.js} +1 -1
- package/dist/cjs/{framework-delegate-Dfo5XsGv.js → framework-delegate-BZUx4TnE.js} +1 -1
- package/dist/cjs/{gesture-controller-BDUH7687.js → gesture-controller-CeJslptU.js} +6 -14
- package/dist/cjs/{hardware-back-button-fqpYh-kd.js → hardware-back-button-JOAEFSzc.js} +1 -1
- package/dist/cjs/{helpers-YPQybDph.js → helpers-Dj5o76mq.js} +1 -1
- package/dist/cjs/{index-BLdJCcJY.js → index-2sO-zkZ2.js} +4 -4
- package/dist/cjs/{index-uvry__L4.js → index-BrVMoqUk.js} +3 -1
- package/dist/cjs/{index-zVCah4Uz.js → index-C8zH6b3d.js} +2 -2
- package/dist/cjs/{index-DXsPSne6.js → index-CZ6vzt_q.js} +5 -5
- package/dist/cjs/{index-DDg31ZF5.js → index-Csue6G3m.js} +2 -2
- package/dist/cjs/{index-DwlRtFZe.js → index-DRPqwSvU.js} +1 -1
- package/dist/cjs/{index-B7zJsYWS.js → index-EJLjthTK.js} +1 -2
- package/dist/cjs/index.cjs.js +14 -14
- package/dist/cjs/{input-shims-Cbu1fcye.js → input-shims-Bh7bnt2v.js} +3 -3
- package/dist/cjs/{input.utils-BZdMWVrt.js → input.utils-Cq3g9uHy.js} +1 -1
- package/dist/cjs/ion-accordion_2.cjs.entry.js +335 -364
- package/dist/cjs/ion-action-sheet.cjs.entry.js +60 -140
- package/dist/cjs/ion-alert.cjs.entry.js +67 -159
- package/dist/cjs/ion-app_8.cjs.entry.js +163 -258
- package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -8
- package/dist/cjs/ion-back-button.cjs.entry.js +21 -45
- package/dist/cjs/ion-backdrop.cjs.entry.js +14 -18
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +117 -195
- package/dist/cjs/ion-button_2.cjs.entry.js +61 -130
- package/dist/cjs/ion-card_5.cjs.entry.js +28 -80
- package/dist/cjs/ion-checkbox.cjs.entry.js +98 -147
- package/dist/cjs/ion-chip.cjs.entry.js +10 -16
- package/dist/cjs/ion-col_3.cjs.entry.js +6 -126
- package/dist/cjs/ion-datetime-button.cjs.entry.js +232 -248
- package/dist/cjs/ion-datetime.cjs.entry.js +775 -953
- package/dist/cjs/ion-fab_3.cjs.entry.js +78 -136
- package/dist/cjs/ion-img.cjs.entry.js +11 -31
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +71 -98
- package/dist/cjs/ion-input-otp.cjs.entry.js +352 -424
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +14 -29
- package/dist/cjs/ion-input.cjs.entry.js +158 -302
- package/dist/cjs/ion-item-option_3.cjs.entry.js +54 -98
- package/dist/cjs/ion-item_8.cjs.entry.js +61 -157
- package/dist/cjs/ion-loading.cjs.entry.js +54 -131
- package/dist/cjs/ion-menu_3.cjs.entry.js +94 -158
- package/dist/cjs/ion-modal.cjs.entry.js +206 -362
- package/dist/cjs/ion-nav_2.cjs.entry.js +26 -78
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +23 -33
- package/dist/cjs/ion-picker-column.cjs.entry.js +389 -410
- package/dist/cjs/ion-picker.cjs.entry.js +390 -400
- package/dist/cjs/ion-popover.cjs.entry.js +184 -292
- package/dist/cjs/ion-progress-bar.cjs.entry.js +23 -29
- package/dist/cjs/ion-radio_2.cjs.entry.js +128 -201
- package/dist/cjs/ion-range.cjs.entry.js +223 -293
- package/dist/cjs/ion-refresher_2.cjs.entry.js +89 -154
- package/dist/cjs/ion-reorder_2.cjs.entry.js +19 -49
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +13 -13
- package/dist/cjs/ion-route_4.cjs.entry.js +45 -144
- package/dist/cjs/ion-searchbar.cjs.entry.js +182 -268
- package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment-view.cjs.entry.js +12 -24
- package/dist/cjs/ion-segment_2.cjs.entry.js +122 -161
- package/dist/cjs/ion-select-modal.cjs.entry.js +19 -21
- package/dist/cjs/ion-select_3.cjs.entry.js +151 -319
- package/dist/cjs/ion-spinner.cjs.entry.js +6 -21
- package/dist/cjs/ion-split-pane.cjs.entry.js +14 -27
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +32 -89
- package/dist/cjs/ion-tab_2.cjs.entry.js +22 -49
- package/dist/cjs/ion-text.cjs.entry.js +2 -8
- package/dist/cjs/ion-textarea.cjs.entry.js +139 -256
- package/dist/cjs/ion-toast.cjs.entry.js +106 -221
- package/dist/cjs/ion-toggle.cjs.entry.js +114 -165
- package/dist/cjs/{ionic-global-k6hOWWpn.js → ionic-global-DvgIzM2F.js} +1 -1
- package/dist/cjs/ionic.cjs.js +4 -4
- package/dist/cjs/{ios.transition-zTmJz8T-.js → ios.transition-zIgdoSYe.js} +4 -4
- package/dist/cjs/{item-multiple-inputs-BdYSbfKN.js → item-multiple-inputs-DG-ZGm6j.js} +1 -1
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-nb_4pUXu.js → md.transition-CXeJ9rfh.js} +4 -4
- package/dist/cjs/{overlays-KaNVDNqC.js → overlays-Bg0auTQa.js} +6 -6
- package/dist/cjs/{select-option-render-pULCGldr.js → select-option-render-7m1WdFzF.js} +2 -2
- package/dist/cjs/{slot-mutation-controller-DPHmqXdV.js → slot-mutation-controller-BJEJzx_e.js} +1 -1
- package/dist/cjs/{status-tap-o9IIymsP.js → status-tap-DxbUM5XX.js} +3 -3
- package/dist/cjs/{swipe-back-B7X9VOlH.js → swipe-back-F_DBt-Aw.js} +4 -4
- package/dist/collection/components/accordion/accordion.js +310 -314
- package/dist/collection/components/accordion-group/accordion-group.js +23 -46
- package/dist/collection/components/action-sheet/action-sheet.js +49 -128
- package/dist/collection/components/action-sheet/test/basic/fixture.js +0 -3
- package/dist/collection/components/alert/alert.js +56 -147
- package/dist/collection/components/app/app.js +0 -3
- package/dist/collection/components/back-button/back-button.js +19 -42
- package/dist/collection/components/backdrop/backdrop.js +14 -16
- package/dist/collection/components/badge/badge.js +0 -6
- package/dist/collection/components/breadcrumb/breadcrumb.js +29 -90
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +87 -102
- package/dist/collection/components/button/button.js +59 -127
- package/dist/collection/components/buttons/buttons.js +15 -13
- package/dist/collection/components/card/card.js +20 -53
- package/dist/collection/components/card-header/card-header.js +8 -12
- package/dist/collection/components/card-subtitle/card-subtitle.js +0 -6
- package/dist/collection/components/card-title/card-title.js +0 -6
- package/dist/collection/components/checkbox/checkbox.js +95 -143
- package/dist/collection/components/chip/chip.js +10 -14
- package/dist/collection/components/col/col.js +0 -120
- package/dist/collection/components/content/content.js +60 -90
- package/dist/collection/components/datetime/datetime.js +762 -939
- package/dist/collection/components/datetime-button/datetime-button.js +229 -244
- package/dist/collection/components/fab/fab.js +13 -20
- package/dist/collection/components/fab-button/fab-button.js +54 -103
- package/dist/collection/components/fab-list/fab-list.js +11 -10
- package/dist/collection/components/footer/footer.js +43 -49
- package/dist/collection/components/grid/grid.js +6 -4
- package/dist/collection/components/header/header.js +23 -33
- package/dist/collection/components/img/img.js +9 -28
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +66 -73
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +3 -20
- package/dist/collection/components/input/input.js +154 -297
- package/dist/collection/components/input-otp/input-otp.js +350 -421
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +13 -27
- package/dist/collection/components/item/item.js +37 -80
- package/dist/collection/components/item-divider/item-divider.js +10 -15
- package/dist/collection/components/item-option/item-option.js +20 -48
- package/dist/collection/components/item-options/item-options.js +7 -10
- package/dist/collection/components/item-sliding/item-sliding.js +26 -36
- package/dist/collection/components/label/label.js +4 -24
- package/dist/collection/components/list/list.js +6 -9
- package/dist/collection/components/list-header/list-header.js +0 -10
- package/dist/collection/components/loading/loading.js +46 -122
- package/dist/collection/components/menu/menu.js +55 -99
- package/dist/collection/components/menu-button/menu-button.js +19 -28
- package/dist/collection/components/menu-toggle/menu-toggle.js +13 -20
- package/dist/collection/components/modal/modal.js +196 -351
- package/dist/collection/components/modal/test/fixtures.js +0 -3
- package/dist/collection/components/nav/nav.js +12 -45
- package/dist/collection/components/nav/view-controller.js +1 -7
- package/dist/collection/components/nav-link/nav-link.js +9 -20
- package/dist/collection/components/note/note.js +0 -6
- package/dist/collection/components/picker/picker.js +388 -397
- package/dist/collection/components/picker-column/picker-column.js +389 -409
- package/dist/collection/components/picker-column-option/picker-column-option.js +21 -30
- package/dist/collection/components/popover/popover.js +176 -283
- package/dist/collection/components/popover/test/fixture.js +0 -1
- package/dist/collection/components/progress-bar/progress-bar.js +22 -26
- package/dist/collection/components/radio/radio.js +62 -98
- package/dist/collection/components/radio-group/radio-group.js +64 -99
- package/dist/collection/components/radio-group/test/fixtures.js +0 -2
- package/dist/collection/components/range/range.js +220 -289
- package/dist/collection/components/refresher/refresher.js +79 -105
- package/dist/collection/components/refresher-content/refresher-content.js +3 -40
- package/dist/collection/components/reorder/reorder.js +0 -1
- package/dist/collection/components/reorder-group/reorder-group.js +14 -43
- package/dist/collection/components/ripple-effect/ripple-effect.js +12 -11
- package/dist/collection/components/route/route.js +9 -38
- package/dist/collection/components/route-redirect/route-redirect.js +0 -31
- package/dist/collection/components/router/router.js +27 -35
- package/dist/collection/components/router/utils/matching.js +0 -1
- package/dist/collection/components/router-link/router-link.js +10 -35
- package/dist/collection/components/router-outlet/router-outlet.js +12 -34
- package/dist/collection/components/searchbar/searchbar.js +180 -265
- package/dist/collection/components/segment/segment.js +76 -113
- package/dist/collection/components/segment-button/segment-button.js +44 -44
- package/dist/collection/components/segment-view/segment-view.js +12 -23
- package/dist/collection/components/select/select.js +127 -240
- package/dist/collection/components/select-modal/select-modal.js +11 -12
- package/dist/collection/components/select-modal/test/fixtures.js +1 -8
- package/dist/collection/components/select-option/select-option.js +7 -44
- package/dist/collection/components/select-popover/select-popover.js +10 -25
- package/dist/collection/components/select-popover/test/fixtures.js +1 -8
- package/dist/collection/components/skeleton-text/skeleton-text.js +6 -10
- package/dist/collection/components/spinner/spinner.js +6 -19
- package/dist/collection/components/split-pane/split-pane.js +13 -25
- package/dist/collection/components/tab/tab.js +4 -15
- package/dist/collection/components/tab-bar/tab-bar.js +12 -30
- package/dist/collection/components/tab-button/tab-button.js +19 -56
- package/dist/collection/components/tabs/tabs.js +17 -31
- package/dist/collection/components/text/text.js +0 -6
- package/dist/collection/components/textarea/textarea.js +135 -251
- package/dist/collection/components/title/title.js +0 -16
- package/dist/collection/components/toast/toast.js +97 -211
- package/dist/collection/components/toggle/toggle.js +111 -161
- package/dist/collection/components/toolbar/toolbar.js +3 -8
- package/dist/collection/global/config.js +3 -1
- package/dist/collection/utils/gesture/gesture-controller.js +6 -14
- package/dist/collection/utils/sanitization/index.js +0 -1
- package/dist/collection/utils/test/late-props/late-props.js +69 -0
- package/dist/collection/utils/test/playwright/page/event-spy.js +8 -9
- package/dist/collection/utils/test/press-keys.js +1 -4
- package/dist/docs.json +1 -1
- package/dist/esm/{animation-CGFdmGk9.js → animation-TxGPYeDn.js} +1 -1
- package/dist/esm/{app-globals-CYmMeGdU.js → app-globals-Do8rJest.js} +1 -1
- package/dist/esm/{button-active-BDOsVAiZ.js → button-active-ChA4D-ml.js} +2 -2
- package/dist/esm/{format-Dcwga61t.js → format-CVk5e_GP.js} +2 -2
- package/dist/esm/{framework-delegate-BHTU2Ip9.js → framework-delegate-DaLWnISz.js} +1 -1
- package/dist/esm/{gesture-controller-TXPDHL13.js → gesture-controller-B_gJaBk0.js} +6 -14
- package/dist/esm/{hardware-back-button-gLJHMX_F.js → hardware-back-button-D8W4L0JP.js} +1 -1
- package/dist/esm/{helpers-CAGf8Wgp.js → helpers-BIgoInJU.js} +1 -1
- package/dist/esm/{index-DcPaH5uL.js → index-BmLuEdV7.js} +1 -1
- package/dist/esm/{index-T0JxBI8V.js → index-BmOR8tCv.js} +2 -2
- package/dist/esm/{index-CqneaaGd.js → index-C5ZdL0qp.js} +5 -5
- package/dist/esm/{index-WlteAIqz.js → index-C8Dsa6li.js} +4 -4
- package/dist/esm/{index-ChhhtsGZ.js → index-CKYcsw8f.js} +3 -1
- package/dist/esm/{index-Clc-28O1.js → index-DHw2lZxe.js} +2 -2
- package/dist/esm/{index-CKM1DdGm.js → index-elneMH8y.js} +1 -2
- package/dist/esm/index.js +14 -14
- package/dist/esm/{input-shims-B8sfni1e.js → input-shims-09NN97kF.js} +3 -3
- package/dist/esm/{input.utils-B1ValN_N.js → input.utils-BxyH9l1w.js} +1 -1
- package/dist/esm/ion-accordion_2.entry.js +335 -364
- package/dist/esm/ion-action-sheet.entry.js +60 -140
- package/dist/esm/ion-alert.entry.js +67 -159
- package/dist/esm/ion-app_8.entry.js +163 -258
- package/dist/esm/ion-avatar_3.entry.js +2 -8
- package/dist/esm/ion-back-button.entry.js +21 -45
- package/dist/esm/ion-backdrop.entry.js +14 -18
- package/dist/esm/ion-breadcrumb_2.entry.js +117 -195
- package/dist/esm/ion-button_2.entry.js +61 -130
- package/dist/esm/ion-card_5.entry.js +28 -80
- package/dist/esm/ion-checkbox.entry.js +98 -147
- package/dist/esm/ion-chip.entry.js +10 -16
- package/dist/esm/ion-col_3.entry.js +6 -126
- package/dist/esm/ion-datetime-button.entry.js +232 -248
- package/dist/esm/ion-datetime.entry.js +775 -953
- package/dist/esm/ion-fab_3.entry.js +78 -136
- package/dist/esm/ion-img.entry.js +11 -31
- package/dist/esm/ion-infinite-scroll_2.entry.js +71 -98
- package/dist/esm/ion-input-otp.entry.js +352 -424
- package/dist/esm/ion-input-password-toggle.entry.js +14 -29
- package/dist/esm/ion-input.entry.js +158 -302
- package/dist/esm/ion-item-option_3.entry.js +54 -98
- package/dist/esm/ion-item_8.entry.js +61 -157
- package/dist/esm/ion-loading.entry.js +54 -131
- package/dist/esm/ion-menu_3.entry.js +94 -158
- package/dist/esm/ion-modal.entry.js +206 -362
- package/dist/esm/ion-nav_2.entry.js +26 -78
- package/dist/esm/ion-picker-column-option.entry.js +23 -33
- package/dist/esm/ion-picker-column.entry.js +389 -410
- package/dist/esm/ion-picker.entry.js +390 -400
- package/dist/esm/ion-popover.entry.js +184 -292
- package/dist/esm/ion-progress-bar.entry.js +23 -29
- package/dist/esm/ion-radio_2.entry.js +128 -201
- package/dist/esm/ion-range.entry.js +223 -293
- package/dist/esm/ion-refresher_2.entry.js +89 -154
- package/dist/esm/ion-reorder_2.entry.js +19 -49
- package/dist/esm/ion-ripple-effect.entry.js +13 -13
- package/dist/esm/ion-route_4.entry.js +45 -144
- package/dist/esm/ion-searchbar.entry.js +182 -268
- package/dist/esm/ion-segment-content.entry.js +1 -1
- package/dist/esm/ion-segment-view.entry.js +12 -24
- package/dist/esm/ion-segment_2.entry.js +122 -161
- package/dist/esm/ion-select-modal.entry.js +19 -21
- package/dist/esm/ion-select_3.entry.js +151 -319
- package/dist/esm/ion-spinner.entry.js +6 -21
- package/dist/esm/ion-split-pane.entry.js +14 -27
- package/dist/esm/ion-tab-bar_2.entry.js +32 -89
- package/dist/esm/ion-tab_2.entry.js +22 -49
- package/dist/esm/ion-text.entry.js +2 -8
- package/dist/esm/ion-textarea.entry.js +139 -256
- package/dist/esm/ion-toast.entry.js +106 -221
- package/dist/esm/ion-toggle.entry.js +114 -165
- package/dist/esm/{ionic-global-BVB7BrLT.js → ionic-global-lrowsHfi.js} +1 -1
- package/dist/esm/ionic.js +5 -5
- package/dist/esm/{ios.transition-DXRCmcbC.js → ios.transition-BQhADrk1.js} +4 -4
- package/dist/esm/{item-multiple-inputs-rU8VaNNg.js → item-multiple-inputs-D_N3fDkD.js} +1 -1
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-BMngO4i_.js → md.transition-D58NpmRa.js} +4 -4
- package/dist/esm/{overlays-CPmIs9Ls.js → overlays-BpnIFlXI.js} +6 -6
- package/dist/esm/{select-option-render-C4m76VGH.js → select-option-render-lIuu64EV.js} +2 -2
- package/dist/esm/{slot-mutation-controller-DiE_C9un.js → slot-mutation-controller-rS_T3FDR.js} +1 -1
- package/dist/esm/{status-tap-CHB7KwIb.js → status-tap-CpFQMLl6.js} +3 -3
- package/dist/esm/{swipe-back-C9HW1bug.js → swipe-back-rmc7zeNW.js} +4 -4
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-05800a02.entry.js +4 -0
- package/dist/ionic/p-0eb50dca.entry.js +4 -0
- package/dist/ionic/p-16e9f542.entry.js +4 -0
- package/dist/ionic/p-18d532a3.entry.js +4 -0
- package/dist/ionic/p-1db2afb4.entry.js +4 -0
- package/dist/ionic/p-1df75f9e.entry.js +4 -0
- package/dist/ionic/p-295ff427.entry.js +4 -0
- package/dist/ionic/p-34b9379b.entry.js +4 -0
- package/dist/ionic/p-39a8d4e0.entry.js +4 -0
- package/dist/ionic/p-4437015c.entry.js +4 -0
- package/dist/ionic/p-478035a7.entry.js +4 -0
- package/dist/ionic/p-485fb218.entry.js +4 -0
- package/dist/ionic/p-48c859fe.entry.js +4 -0
- package/dist/ionic/p-49b9d405.entry.js +4 -0
- package/dist/ionic/p-56307aea.entry.js +4 -0
- package/dist/ionic/p-5b906fd6.entry.js +4 -0
- package/dist/ionic/p-5ee2d7b1.entry.js +4 -0
- package/dist/ionic/p-5f216b79.entry.js +4 -0
- package/dist/ionic/p-61c799d1.entry.js +4 -0
- package/dist/ionic/p-63bbba8d.entry.js +4 -0
- package/dist/ionic/p-68507e70.entry.js +4 -0
- package/dist/ionic/{p-ded69ceb.entry.js → p-6f048604.entry.js} +1 -1
- package/dist/ionic/p-70ee8888.entry.js +4 -0
- package/dist/ionic/p-72ad7c64.entry.js +4 -0
- package/dist/ionic/p-75887ee0.entry.js +4 -0
- package/dist/ionic/p-873a315a.entry.js +4 -0
- package/dist/ionic/p-881b6954.entry.js +4 -0
- package/dist/ionic/p-886d9e66.entry.js +4 -0
- package/dist/ionic/p-8dd4c026.entry.js +4 -0
- package/dist/ionic/p-8e007f11.entry.js +4 -0
- package/dist/ionic/p-8f51110d.entry.js +4 -0
- package/dist/ionic/p-90ba736e.entry.js +4 -0
- package/dist/ionic/p-959df5f8.entry.js +4 -0
- package/dist/ionic/p-9e455875.entry.js +4 -0
- package/dist/ionic/{p-CBR_W98Z.js → p-9wczfs_v.js} +1 -1
- package/dist/ionic/p-B1Y7LZhV.js +4 -0
- package/dist/ionic/p-B5RyLYvl.js +4 -0
- package/dist/ionic/{p-CPcPmkGv.js → p-BQv5i5Kf.js} +1 -1
- package/{components/p-8FN7p701.js → dist/ionic/p-BZVE25Gu.js} +1 -1
- package/{components/p-DFvZn99E.js → dist/ionic/p-BZxjcGRP.js} +1 -1
- package/dist/ionic/p-B_gJaBk0.js +4 -0
- package/dist/ionic/p-BnGA34Pd.js +4 -0
- package/dist/ionic/p-ByLaqOPm.js +4 -0
- package/dist/ionic/p-C06QNN45.js +4 -0
- package/dist/ionic/p-C4IBDDj6.js +4 -0
- package/dist/ionic/p-CCVlNZ__.js +4 -0
- package/dist/ionic/{p-CMRtMbJc.js → p-CDBop-kz.js} +1 -1
- package/dist/ionic/p-CKYcsw8f.js +5 -0
- package/dist/ionic/p-CazSodad.js +4 -0
- package/{components/p-ia3IDdJS.js → dist/ionic/p-ClrlQU2y.js} +1 -1
- package/dist/ionic/{p-UIBJkZf8.js → p-D0YpjgON.js} +1 -1
- package/dist/ionic/p-D0dfUysx.js +4 -0
- package/dist/ionic/{p-BB0LlG4y.js → p-D9yvytgv.js} +1 -1
- package/{components/p-C5KYjZWD.js → dist/ionic/p-DF_Uqql8.js} +1 -1
- package/dist/ionic/{p-BYEAtHr-.js → p-DXJgZWgi.js} +1 -1
- package/dist/ionic/{p-D94_RztK.js → p-DdhHqKj-.js} +1 -1
- package/dist/ionic/p-De0eY881.js +4 -0
- package/dist/ionic/p-DgUL3JbO.js +4 -0
- package/dist/ionic/{p-7CBuOvEo.js → p-RzUn7cKs.js} +1 -1
- package/dist/ionic/p-VquyMbjp.js +4 -0
- package/dist/ionic/p-a0fee899.entry.js +4 -0
- package/dist/ionic/p-a54bcd16.entry.js +4 -0
- package/dist/ionic/p-aebc4d69.entry.js +4 -0
- package/dist/ionic/p-b5f37106.entry.js +4 -0
- package/dist/ionic/{p-40424a88.entry.js → p-b62bfce8.entry.js} +1 -1
- package/dist/ionic/p-b7a11b58.entry.js +4 -0
- package/dist/ionic/p-bbf6878c.entry.js +4 -0
- package/dist/ionic/p-c49165af.entry.js +4 -0
- package/dist/ionic/p-cad4eccf.entry.js +4 -0
- package/dist/ionic/p-cdc5115e.entry.js +4 -0
- package/dist/ionic/p-d3384a40.entry.js +4 -0
- package/dist/ionic/p-d8bae128.entry.js +4 -0
- package/dist/ionic/p-d8deff43.entry.js +4 -0
- package/dist/ionic/p-ddfb7e5f.entry.js +4 -0
- package/dist/ionic/p-e538f18d.entry.js +4 -0
- package/dist/ionic/p-f376876b.entry.js +4 -0
- package/dist/ionic/p-f7dd1ed9.entry.js +4 -0
- package/dist/ionic/p-fbd83d4c.entry.js +4 -0
- package/dist/types/components/refresher/refresher.d.ts +7 -0
- package/hydrate/index.js +5450 -8380
- package/hydrate/index.mjs +5450 -8380
- package/package.json +1 -1
- package/components/p--m5cCjbK.js +0 -4
- package/components/p-B4uHHhPK.js +0 -4
- package/components/p-BNJOu1Q2.js +0 -4
- package/components/p-BOvLNVKq.js +0 -4
- package/components/p-BeamQXHF.js +0 -4
- package/components/p-BjluhQMI.js +0 -4
- package/components/p-BlsIikdZ.js +0 -4
- package/components/p-BrD9Xv62.js +0 -4
- package/components/p-BvJqoZ5R.js +0 -4
- package/components/p-Bz6z3Asd.js +0 -4
- package/components/p-C6HnVvHO.js +0 -4
- package/components/p-C7jvh5Wy.js +0 -4
- package/components/p-C9BGR5fy.js +0 -4
- package/components/p-CB-y1CdP.js +0 -4
- package/components/p-CHH3loEE.js +0 -4
- package/components/p-CJKUWjmg.js +0 -4
- package/components/p-CMLAwl_N.js +0 -4
- package/components/p-CejmQs3h.js +0 -4
- package/components/p-CtZqa4HM.js +0 -4
- package/components/p-D9qIVSWm.js +0 -4
- package/components/p-DE-3iMNW.js +0 -4
- package/components/p-DHFt2rdc.js +0 -4
- package/components/p-D_RCyzwu.js +0 -4
- package/components/p-D_tD8r3L.js +0 -4
- package/components/p-DjCtLZbF.js +0 -4
- package/components/p-Dmd2xqCe.js +0 -4
- package/components/p-G6JR-cr_.js +0 -4
- package/components/p-GG5GhznE.js +0 -4
- package/components/p-TXPDHL13.js +0 -4
- package/components/p-_IKFD3ID.js +0 -4
- package/components/p-dKq2jIum.js +0 -4
- package/components/p-iYhH60Tc.js +0 -4
- package/dist/ionic/p-06ec7136.entry.js +0 -4
- package/dist/ionic/p-09fe4fa3.entry.js +0 -4
- package/dist/ionic/p-10d45a07.entry.js +0 -4
- package/dist/ionic/p-208c8a07.entry.js +0 -4
- package/dist/ionic/p-212474fa.entry.js +0 -4
- package/dist/ionic/p-2eef1396.entry.js +0 -4
- package/dist/ionic/p-347e005d.entry.js +0 -4
- package/dist/ionic/p-3a0b3f1d.entry.js +0 -4
- package/dist/ionic/p-3b071259.entry.js +0 -4
- package/dist/ionic/p-4204184c.entry.js +0 -4
- package/dist/ionic/p-47464391.entry.js +0 -4
- package/dist/ionic/p-4f9c9126.entry.js +0 -4
- package/dist/ionic/p-5JsKPLJD.js +0 -4
- package/dist/ionic/p-5bc485c6.entry.js +0 -4
- package/dist/ionic/p-603a61e6.entry.js +0 -4
- package/dist/ionic/p-60576951.entry.js +0 -4
- package/dist/ionic/p-67a81d33.entry.js +0 -4
- package/dist/ionic/p-6affb775.entry.js +0 -4
- package/dist/ionic/p-6f120c25.entry.js +0 -4
- package/dist/ionic/p-71c82b60.entry.js +0 -4
- package/dist/ionic/p-79325ffe.entry.js +0 -4
- package/dist/ionic/p-7e4d51fa.entry.js +0 -4
- package/dist/ionic/p-7f5d4664.entry.js +0 -4
- package/dist/ionic/p-80ee82fc.entry.js +0 -4
- package/dist/ionic/p-84af7dbc.entry.js +0 -4
- package/dist/ionic/p-89ca830a.entry.js +0 -4
- package/dist/ionic/p-93b8ec8f.entry.js +0 -4
- package/dist/ionic/p-946f65c2.entry.js +0 -4
- package/dist/ionic/p-9c4b39fb.entry.js +0 -4
- package/dist/ionic/p-B1NEZUzQ.js +0 -4
- package/dist/ionic/p-B1ck5iy-.js +0 -4
- package/dist/ionic/p-B4FrqdW0.js +0 -4
- package/dist/ionic/p-C-94tAim.js +0 -4
- package/dist/ionic/p-C-eHZMYE.js +0 -4
- package/dist/ionic/p-CaRuIadB.js +0 -4
- package/dist/ionic/p-ChhhtsGZ.js +0 -5
- package/dist/ionic/p-CzS1qWve.js +0 -4
- package/dist/ionic/p-DjjfauRM.js +0 -4
- package/dist/ionic/p-DkUB-ROc.js +0 -4
- package/dist/ionic/p-DplOqGUv.js +0 -4
- package/dist/ionic/p-Dst_XmZh.js +0 -4
- package/dist/ionic/p-TXPDHL13.js +0 -4
- package/dist/ionic/p-a438b193.entry.js +0 -4
- package/dist/ionic/p-babaaaa7.entry.js +0 -4
- package/dist/ionic/p-be08d500.entry.js +0 -4
- package/dist/ionic/p-be9a4f51.entry.js +0 -4
- package/dist/ionic/p-c00d3092.entry.js +0 -4
- package/dist/ionic/p-c36dc8f5.entry.js +0 -4
- package/dist/ionic/p-c72a7e17.entry.js +0 -4
- package/dist/ionic/p-c8edd88c.entry.js +0 -4
- package/dist/ionic/p-ce0e380b.entry.js +0 -4
- package/dist/ionic/p-ce32912b.entry.js +0 -4
- package/dist/ionic/p-d07cf130.entry.js +0 -4
- package/dist/ionic/p-d27edeb3.entry.js +0 -4
- package/dist/ionic/p-d5d2c506.entry.js +0 -4
- package/dist/ionic/p-d5e31ca9.entry.js +0 -4
- package/dist/ionic/p-de91444f.entry.js +0 -4
- package/dist/ionic/p-df72866d.entry.js +0 -4
- package/dist/ionic/p-e47e3151.entry.js +0 -4
- package/dist/ionic/p-e621e5e8.entry.js +0 -4
- package/dist/ionic/p-eea9cf93.entry.js +0 -4
- package/dist/ionic/p-f402f5a4.entry.js +0 -4
- package/dist/ionic/p-fe1bfbcf.entry.js +0 -4
- package/dist/ionic/p-ffb90460.entry.js +0 -4
|
@@ -38,190 +38,133 @@ import { getIonMode } from "../../global/ionic-global";
|
|
|
38
38
|
* @part end - The wrapper element for the content in the end slot. When the label is floating or stacked, this part also contains the dropdown icon.
|
|
39
39
|
*/
|
|
40
40
|
export class Select {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
placeholder;
|
|
169
|
-
/**
|
|
170
|
-
* The text to display instead of the selected option's value.
|
|
171
|
-
*/
|
|
172
|
-
selectedText;
|
|
173
|
-
/**
|
|
174
|
-
* The toggle icon to use. Defaults to `chevronExpand` for `ios` mode,
|
|
175
|
-
* or `caretDownSharp` for `md` mode.
|
|
176
|
-
*/
|
|
177
|
-
toggleIcon;
|
|
178
|
-
/**
|
|
179
|
-
* The toggle icon to show when the select is open. If defined, the icon
|
|
180
|
-
* rotation behavior in `md` mode will be disabled. If undefined, `toggleIcon`
|
|
181
|
-
* will be used for when the select is both open and closed.
|
|
182
|
-
*/
|
|
183
|
-
expandedIcon;
|
|
184
|
-
/**
|
|
185
|
-
* The shape of the select. If "round" it will have an increased border radius.
|
|
186
|
-
*/
|
|
187
|
-
shape;
|
|
188
|
-
/**
|
|
189
|
-
* The value of the select.
|
|
190
|
-
*/
|
|
191
|
-
value;
|
|
192
|
-
/**
|
|
193
|
-
* If true, screen readers will announce it as a required field. This property
|
|
194
|
-
* works only for accessibility purposes, it will not prevent the form from
|
|
195
|
-
* submitting if the value is invalid.
|
|
196
|
-
*/
|
|
197
|
-
required = false;
|
|
198
|
-
/**
|
|
199
|
-
* Emitted when the value has changed.
|
|
200
|
-
*
|
|
201
|
-
* This event will not emit when programmatically setting the `value` property.
|
|
202
|
-
*/
|
|
203
|
-
ionChange;
|
|
204
|
-
/**
|
|
205
|
-
* Emitted when the selection is cancelled.
|
|
206
|
-
*/
|
|
207
|
-
ionCancel;
|
|
208
|
-
/**
|
|
209
|
-
* Emitted when the overlay is dismissed.
|
|
210
|
-
*/
|
|
211
|
-
ionDismiss;
|
|
212
|
-
/**
|
|
213
|
-
* Emitted when the select has focus.
|
|
214
|
-
*/
|
|
215
|
-
ionFocus;
|
|
216
|
-
/**
|
|
217
|
-
* Emitted when the select loses focus.
|
|
218
|
-
*/
|
|
219
|
-
ionBlur;
|
|
220
|
-
/**
|
|
221
|
-
* Emitted when the styles change.
|
|
222
|
-
* @internal
|
|
223
|
-
*/
|
|
224
|
-
ionStyle;
|
|
41
|
+
constructor() {
|
|
42
|
+
this.inputId = `ion-sel-${selectIds++}`;
|
|
43
|
+
this.helperTextId = `${this.inputId}-helper-text`;
|
|
44
|
+
this.errorTextId = `${this.inputId}-error-text`;
|
|
45
|
+
this.inheritedAttributes = {};
|
|
46
|
+
this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
|
|
47
|
+
this.isExpanded = false;
|
|
48
|
+
/**
|
|
49
|
+
* The `hasFocus` state ensures the focus class is
|
|
50
|
+
* added regardless of how the element is focused.
|
|
51
|
+
* The `ion-focused` class only applies when focused
|
|
52
|
+
* via tabbing, not by clicking.
|
|
53
|
+
* The `has-focus` logic was added to ensure the class
|
|
54
|
+
* is applied in both cases.
|
|
55
|
+
*/
|
|
56
|
+
this.hasFocus = false;
|
|
57
|
+
/**
|
|
58
|
+
* Track validation state for proper aria-live announcements.
|
|
59
|
+
*/
|
|
60
|
+
this.isInvalid = false;
|
|
61
|
+
/**
|
|
62
|
+
* The text to display on the cancel button.
|
|
63
|
+
*/
|
|
64
|
+
this.cancelText = 'Cancel';
|
|
65
|
+
/**
|
|
66
|
+
* If `true`, the user cannot interact with the select.
|
|
67
|
+
*/
|
|
68
|
+
this.disabled = false;
|
|
69
|
+
/**
|
|
70
|
+
* The interface the select should use: `action-sheet`, `popover`, `alert`, or `modal`.
|
|
71
|
+
*/
|
|
72
|
+
this.interface = 'alert';
|
|
73
|
+
/**
|
|
74
|
+
* Any additional options that the `alert`, `action-sheet` or `popover` interface
|
|
75
|
+
* can take. See the [ion-alert docs](./alert), the
|
|
76
|
+
* [ion-action-sheet docs](./action-sheet), the
|
|
77
|
+
* [ion-popover docs](./popover), and the [ion-modal docs](./modal) for the
|
|
78
|
+
* create options for each interface.
|
|
79
|
+
*
|
|
80
|
+
* Note: `interfaceOptions` will not override `inputs` or `buttons` with the `alert` interface.
|
|
81
|
+
*/
|
|
82
|
+
this.interfaceOptions = {};
|
|
83
|
+
/**
|
|
84
|
+
* Where to place the label relative to the select.
|
|
85
|
+
* `"start"`: The label will appear to the left of the select in LTR and to the right in RTL.
|
|
86
|
+
* `"end"`: The label will appear to the right of the select in LTR and to the left in RTL.
|
|
87
|
+
* `"floating"`: The label will appear smaller and above the select when the select is focused or it has a value. Otherwise it will appear on top of the select.
|
|
88
|
+
* `"stacked"`: The label will appear smaller and above the select regardless even when the select is blurred or has no value.
|
|
89
|
+
* `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
|
|
90
|
+
* When using `"floating"` or `"stacked"` we recommend initializing the select with either a `value` or a `placeholder`.
|
|
91
|
+
*/
|
|
92
|
+
this.labelPlacement = 'start';
|
|
93
|
+
/**
|
|
94
|
+
* If `true`, the select can accept multiple values.
|
|
95
|
+
*/
|
|
96
|
+
this.multiple = false;
|
|
97
|
+
/**
|
|
98
|
+
* The name of the control, which is submitted with the form data.
|
|
99
|
+
*/
|
|
100
|
+
this.name = this.inputId;
|
|
101
|
+
/**
|
|
102
|
+
* The text to display on the ok button.
|
|
103
|
+
*/
|
|
104
|
+
this.okText = 'OK';
|
|
105
|
+
/**
|
|
106
|
+
* If true, screen readers will announce it as a required field. This property
|
|
107
|
+
* works only for accessibility purposes, it will not prevent the form from
|
|
108
|
+
* submitting if the value is invalid.
|
|
109
|
+
*/
|
|
110
|
+
this.required = false;
|
|
111
|
+
this.onClick = (ev) => {
|
|
112
|
+
const target = ev.target;
|
|
113
|
+
const closestSlot = target.closest('[slot="start"], [slot="end"]');
|
|
114
|
+
if (target === this.el || closestSlot === null) {
|
|
115
|
+
this.setFocus();
|
|
116
|
+
this.open(ev);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
/**
|
|
120
|
+
* Prevent clicks to the start/end slots from opening the select.
|
|
121
|
+
* We ensure the target isn't this element in case the select is slotted
|
|
122
|
+
* in, for example, an item. This would prevent the select from ever
|
|
123
|
+
* being opened since the element itself has slot="start"/"end".
|
|
124
|
+
*
|
|
125
|
+
* Clicking a slotted element also causes a click
|
|
126
|
+
* on the <label> element (since it wraps the slots).
|
|
127
|
+
* Clicking <label> dispatches another click event on
|
|
128
|
+
* the native form control that then bubbles up to this
|
|
129
|
+
* listener. This additional event targets the host
|
|
130
|
+
* element, so the select overlay is opened.
|
|
131
|
+
*
|
|
132
|
+
* When the slotted elements are clicked (and therefore
|
|
133
|
+
* the ancestor <label> element) we want to prevent the label
|
|
134
|
+
* from dispatching another click event.
|
|
135
|
+
*
|
|
136
|
+
* Do not call stopPropagation() because this will cause
|
|
137
|
+
* click handlers on the slotted elements to never fire in React.
|
|
138
|
+
* When developers do onClick in React a native "click" listener
|
|
139
|
+
* is added on the root element, not the slotted element. When that
|
|
140
|
+
* native click listener fires, React then dispatches the synthetic
|
|
141
|
+
* click event on the slotted element. However, if stopPropagation
|
|
142
|
+
* is called then the native click event will never bubble up
|
|
143
|
+
* to the root element.
|
|
144
|
+
*/
|
|
145
|
+
ev.preventDefault();
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
this.onFocus = () => {
|
|
149
|
+
this.hasFocus = true;
|
|
150
|
+
this.ionFocus.emit();
|
|
151
|
+
};
|
|
152
|
+
this.onBlur = () => {
|
|
153
|
+
this.hasFocus = false;
|
|
154
|
+
this.ionBlur.emit();
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* Stops propagation for re-dispatched clicks (when already expanded) to
|
|
158
|
+
* prevent double-click events. Allows initial button clicks (from keyboard
|
|
159
|
+
* or mouse) and slotted content clicks to propagate so event delegation
|
|
160
|
+
* works for parent handlers.
|
|
161
|
+
*/
|
|
162
|
+
this.onLabelClick = (ev) => {
|
|
163
|
+
if (ev.target === this.focusEl && this.isExpanded) {
|
|
164
|
+
ev.stopPropagation();
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
}
|
|
225
168
|
styleChanged() {
|
|
226
169
|
this.emitStyle();
|
|
227
170
|
}
|
|
@@ -807,51 +750,6 @@ export class Select {
|
|
|
807
750
|
};
|
|
808
751
|
this.ionStyle.emit(style);
|
|
809
752
|
}
|
|
810
|
-
onClick = (ev) => {
|
|
811
|
-
const target = ev.target;
|
|
812
|
-
const closestSlot = target.closest('[slot="start"], [slot="end"]');
|
|
813
|
-
if (target === this.el || closestSlot === null) {
|
|
814
|
-
this.setFocus();
|
|
815
|
-
this.open(ev);
|
|
816
|
-
}
|
|
817
|
-
else {
|
|
818
|
-
/**
|
|
819
|
-
* Prevent clicks to the start/end slots from opening the select.
|
|
820
|
-
* We ensure the target isn't this element in case the select is slotted
|
|
821
|
-
* in, for example, an item. This would prevent the select from ever
|
|
822
|
-
* being opened since the element itself has slot="start"/"end".
|
|
823
|
-
*
|
|
824
|
-
* Clicking a slotted element also causes a click
|
|
825
|
-
* on the <label> element (since it wraps the slots).
|
|
826
|
-
* Clicking <label> dispatches another click event on
|
|
827
|
-
* the native form control that then bubbles up to this
|
|
828
|
-
* listener. This additional event targets the host
|
|
829
|
-
* element, so the select overlay is opened.
|
|
830
|
-
*
|
|
831
|
-
* When the slotted elements are clicked (and therefore
|
|
832
|
-
* the ancestor <label> element) we want to prevent the label
|
|
833
|
-
* from dispatching another click event.
|
|
834
|
-
*
|
|
835
|
-
* Do not call stopPropagation() because this will cause
|
|
836
|
-
* click handlers on the slotted elements to never fire in React.
|
|
837
|
-
* When developers do onClick in React a native "click" listener
|
|
838
|
-
* is added on the root element, not the slotted element. When that
|
|
839
|
-
* native click listener fires, React then dispatches the synthetic
|
|
840
|
-
* click event on the slotted element. However, if stopPropagation
|
|
841
|
-
* is called then the native click event will never bubble up
|
|
842
|
-
* to the root element.
|
|
843
|
-
*/
|
|
844
|
-
ev.preventDefault();
|
|
845
|
-
}
|
|
846
|
-
};
|
|
847
|
-
onFocus = () => {
|
|
848
|
-
this.hasFocus = true;
|
|
849
|
-
this.ionFocus.emit();
|
|
850
|
-
};
|
|
851
|
-
onBlur = () => {
|
|
852
|
-
this.hasFocus = false;
|
|
853
|
-
this.ionBlur.emit();
|
|
854
|
-
};
|
|
855
753
|
renderLabel() {
|
|
856
754
|
const { label } = this;
|
|
857
755
|
return (h("div", { class: {
|
|
@@ -879,17 +777,6 @@ export class Select {
|
|
|
879
777
|
get hasLabel() {
|
|
880
778
|
return this.label !== undefined || this.labelSlot !== null;
|
|
881
779
|
}
|
|
882
|
-
/**
|
|
883
|
-
* Stops propagation for re-dispatched clicks (when already expanded) to
|
|
884
|
-
* prevent double-click events. Allows initial button clicks (from keyboard
|
|
885
|
-
* or mouse) and slotted content clicks to propagate so event delegation
|
|
886
|
-
* works for parent handlers.
|
|
887
|
-
*/
|
|
888
|
-
onLabelClick = (ev) => {
|
|
889
|
-
if (ev.target === this.focusEl && this.isExpanded) {
|
|
890
|
-
ev.stopPropagation();
|
|
891
|
-
}
|
|
892
|
-
};
|
|
893
780
|
/**
|
|
894
781
|
* Renders the outline border with a notch for the label.
|
|
895
782
|
*/
|
|
@@ -8,18 +8,17 @@ import { safeCall } from "../../utils/overlays";
|
|
|
8
8
|
import { renderOptionLabel } from "../../utils/select-option-render";
|
|
9
9
|
import { getClassMap } from "../../utils/theme";
|
|
10
10
|
export class SelectModal {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
options = [];
|
|
11
|
+
constructor() {
|
|
12
|
+
// Tracks the option that received Enter-keydown so keyup only
|
|
13
|
+
// dismisses when the press started on the same option. Prevents
|
|
14
|
+
// Enter on the triggering ion-select from auto-dismissing.
|
|
15
|
+
this.pendingEnterTarget = null;
|
|
16
|
+
/**
|
|
17
|
+
* The text to display on the cancel button.
|
|
18
|
+
*/
|
|
19
|
+
this.cancelText = 'Close';
|
|
20
|
+
this.options = [];
|
|
21
|
+
}
|
|
23
22
|
closeModal() {
|
|
24
23
|
const modal = this.el.closest('ion-modal');
|
|
25
24
|
if (modal) {
|
|
@@ -3,15 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { expect } from "@playwright/test";
|
|
5
5
|
export class SelectModalPage {
|
|
6
|
-
page;
|
|
7
|
-
multiple;
|
|
8
|
-
options = [];
|
|
9
|
-
// Locators
|
|
10
|
-
modal;
|
|
11
|
-
selectModal;
|
|
12
|
-
// Event spies
|
|
13
|
-
ionModalDidDismiss;
|
|
14
6
|
constructor(page) {
|
|
7
|
+
this.options = [];
|
|
15
8
|
this.page = page;
|
|
16
9
|
}
|
|
17
10
|
async setup(config, options, multiple = false) {
|
|
@@ -11,50 +11,13 @@ import { getIonMode } from "../../global/ionic-global";
|
|
|
11
11
|
* @slot end - Content is placed to the right of the select option text in LTR, and to the left in RTL.
|
|
12
12
|
*/
|
|
13
13
|
export class SelectOption {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
* The text value of the option.
|
|
22
|
-
*/
|
|
23
|
-
value;
|
|
24
|
-
/**
|
|
25
|
-
* Text that is placed underneath the option text to provide additional details about the option.
|
|
26
|
-
*/
|
|
27
|
-
description;
|
|
28
|
-
/**
|
|
29
|
-
* Where the label is placed relative to the option's selection control
|
|
30
|
-
* (radio circle or checkbox box) when the option is rendered in an
|
|
31
|
-
* `alert`, `popover`, or `modal` interface.
|
|
32
|
-
* `"start"`: The label will appear to the left of the radio in LTR and to the right in RTL.
|
|
33
|
-
* `"end"`: The label will appear to the right of the radio in LTR and to the left in RTL.
|
|
34
|
-
*
|
|
35
|
-
* Applies to the `alert`, `popover`, and `modal` interfaces, but has no
|
|
36
|
-
* visible effect on radio options in `popover` or `modal` on `md` (the radio control is hidden there).
|
|
37
|
-
*
|
|
38
|
-
* When unset, the interface picks a default based on mode and control
|
|
39
|
-
* type.
|
|
40
|
-
*/
|
|
41
|
-
labelPlacement;
|
|
42
|
-
/**
|
|
43
|
-
* How to pack the label and the option's selection control within a line.
|
|
44
|
-
* `"start"`: The label and radio will appear on the left in LTR and
|
|
45
|
-
* on the right in RTL.
|
|
46
|
-
* `"end"`: The label and radio will appear on the right in LTR and
|
|
47
|
-
* on the left in RTL.
|
|
48
|
-
* `"space-between"`: The label and radio will appear on opposite
|
|
49
|
-
* ends of the line with space between the two elements.
|
|
50
|
-
*
|
|
51
|
-
* Applies to the `alert`, `popover`, and `modal` interfaces, but has no
|
|
52
|
-
* visible effect on radio options in `popover` or `modal` on `md` (the radio control is hidden there).
|
|
53
|
-
*
|
|
54
|
-
* When unset, the interface picks a default based on mode and control
|
|
55
|
-
* type.
|
|
56
|
-
*/
|
|
57
|
-
justify;
|
|
14
|
+
constructor() {
|
|
15
|
+
this.inputId = `ion-selopt-${selectOptionIds++}`;
|
|
16
|
+
/**
|
|
17
|
+
* If `true`, the user cannot interact with the select option.
|
|
18
|
+
*/
|
|
19
|
+
this.disabled = false;
|
|
20
|
+
}
|
|
58
21
|
render() {
|
|
59
22
|
return h(Host, { key: '01275b5a613c4b065b24e0d939f611f6ed1fc9ee', role: "option", id: this.inputId, class: getIonMode(this) });
|
|
60
23
|
}
|
|
@@ -11,31 +11,16 @@ import { getIonMode } from "../../global/ionic-global";
|
|
|
11
11
|
* @internal
|
|
12
12
|
*/
|
|
13
13
|
export class SelectPopover {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
* The subheader text of the popover
|
|
25
|
-
*/
|
|
26
|
-
subHeader;
|
|
27
|
-
/**
|
|
28
|
-
* The text content of the popover body
|
|
29
|
-
*/
|
|
30
|
-
message;
|
|
31
|
-
/**
|
|
32
|
-
* If true, the select accepts multiple values
|
|
33
|
-
*/
|
|
34
|
-
multiple;
|
|
35
|
-
/**
|
|
36
|
-
* An array of options for the popover
|
|
37
|
-
*/
|
|
38
|
-
options = [];
|
|
14
|
+
constructor() {
|
|
15
|
+
// Tracks the option that received Enter-keydown so keyup only
|
|
16
|
+
// dismisses when the press started on the same option. Prevents
|
|
17
|
+
// Enter on the triggering ion-select from auto-dismissing.
|
|
18
|
+
this.pendingEnterTarget = null;
|
|
19
|
+
/**
|
|
20
|
+
* An array of options for the popover
|
|
21
|
+
*/
|
|
22
|
+
this.options = [];
|
|
23
|
+
}
|
|
39
24
|
findOptionFromEvent(ev) {
|
|
40
25
|
const { options } = this;
|
|
41
26
|
return options.find((o) => o.value === ev.target.value);
|
|
@@ -3,15 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { expect } from "@playwright/test";
|
|
5
5
|
export class SelectPopoverPage {
|
|
6
|
-
page;
|
|
7
|
-
multiple;
|
|
8
|
-
options = [];
|
|
9
|
-
// Locators
|
|
10
|
-
popover;
|
|
11
|
-
selectPopover;
|
|
12
|
-
// Event spies
|
|
13
|
-
ionPopoverDidDismiss;
|
|
14
6
|
constructor(page) {
|
|
7
|
+
this.options = [];
|
|
15
8
|
this.page = page;
|
|
16
9
|
}
|
|
17
10
|
async setup(config, options, multiple = false) {
|
|
@@ -6,16 +6,12 @@ import { hostContext } from "../../utils/theme";
|
|
|
6
6
|
import { config } from "../../global/config";
|
|
7
7
|
import { getIonMode } from "../../global/ionic-global";
|
|
8
8
|
export class SkeletonText {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
* Emitted when the styles change.
|
|
16
|
-
* @internal
|
|
17
|
-
*/
|
|
18
|
-
ionStyle;
|
|
9
|
+
constructor() {
|
|
10
|
+
/**
|
|
11
|
+
* If `true`, the skeleton text will animate.
|
|
12
|
+
*/
|
|
13
|
+
this.animated = false;
|
|
14
|
+
}
|
|
19
15
|
componentWillLoad() {
|
|
20
16
|
this.emitStyle();
|
|
21
17
|
}
|
|
@@ -7,25 +7,12 @@ import { config } from "../../global/config";
|
|
|
7
7
|
import { getIonMode } from "../../global/ionic-global";
|
|
8
8
|
import { SPINNERS } from "./spinner-configs";
|
|
9
9
|
export class Spinner {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Duration of the spinner animation in milliseconds. The default varies based on the spinner.
|
|
18
|
-
*/
|
|
19
|
-
duration;
|
|
20
|
-
/**
|
|
21
|
-
* The name of the SVG spinner to use. If a name is not provided, the platform's default
|
|
22
|
-
* spinner will be used.
|
|
23
|
-
*/
|
|
24
|
-
name;
|
|
25
|
-
/**
|
|
26
|
-
* If `true`, the spinner's animation will be paused.
|
|
27
|
-
*/
|
|
28
|
-
paused = false;
|
|
10
|
+
constructor() {
|
|
11
|
+
/**
|
|
12
|
+
* If `true`, the spinner's animation will be paused.
|
|
13
|
+
*/
|
|
14
|
+
this.paused = false;
|
|
15
|
+
}
|
|
29
16
|
getName() {
|
|
30
17
|
const spinnerName = this.name || config.get('spinner');
|
|
31
18
|
const mode = getIonMode(this);
|