@ionic/core 9.0.1-dev.11788285010.17561004 → 9.0.1-dev.11788375537.1f38f077
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-gFwXiYC_.js → p-5rFO7X8J.js} +1 -1
- package/components/{p-BpLt_Ptn.js → p-7qDu1bID.js} +1 -1
- package/components/{p-7PNwKFZi.js → p-B2L09UOs.js} +1 -1
- package/components/{p-DcOH6-o5.js → p-BAJ7NctL.js} +1 -1
- package/components/{p-Kmrg3Fed.js → p-BE9noJ1O.js} +1 -1
- package/components/{p-CgvDC7hC.js → p-BFwL2yyK.js} +1 -1
- package/components/{p-DysqCsJu.js → p-BWHBdLfY.js} +1 -1
- package/components/{p-SR-LLqp_.js → p-Bcm-GVQM.js} +1 -1
- package/{dist/ionic/p-9wczfs_v.js → components/p-BcuLPPAE.js} +1 -1
- package/components/p-BhlP16sB.js +4 -0
- package/components/{p-H1f2qsk4.js → p-BqE7e5gH.js} +1 -1
- package/components/{p-BqBDq1Ma.js → p-C12SAK00.js} +1 -1
- package/components/{p-A8MJRBIY.js → p-C8mPeq0D.js} +1 -1
- package/components/{p-Bx2saTHs.js → p-CB06XtlF.js} +1 -1
- package/components/{p-BgUIV8NQ.js → p-CBhGZ6rF.js} +1 -1
- package/components/{p-B8MQjdvk.js → p-CDKY4TZ_.js} +1 -1
- package/components/{p-CWETxTjE.js → p-CEkamjav.js} +1 -1
- package/components/p-CFtAWaB6.js +4 -0
- package/components/{p-DEW7CnUc.js → p-CJTKYpZv.js} +1 -1
- package/components/{p-BA_4ZIEg.js → p-CLZPNP7x.js} +1 -1
- package/components/{p-tX3UxCnU.js → p-COxY7PLK.js} +1 -1
- package/components/p-CQxPXWNM.js +4 -0
- package/components/{p-DDdkefwf.js → p-CRcX0EGs.js} +1 -1
- package/components/{p-Bg4OwDwb.js → p-CXQzYyda.js} +1 -1
- package/components/p-CXpy69Ei.js +4 -0
- package/{dist/ionic/p-BZxjcGRP.js → components/p-CdSLe3Q3.js} +1 -1
- package/components/p-CoGD-oMG.js +4 -0
- package/components/p-CpYeYl3u.js +4 -0
- package/components/{p-BFtL8t1r.js → p-CyKlfXdt.js} +1 -1
- package/components/{p-CHswSpKy.js → p-D6PwfJ9F.js} +1 -1
- package/components/{p-Bnc0m4SW.js → p-D6dNJoqU.js} +1 -1
- package/components/{p-eFI3mtEX.js → p-D8BOfNYz.js} +1 -1
- package/{dist/ionic/p-D0dfUysx.js → components/p-DG-dUCKp.js} +1 -1
- package/{dist/ionic/p-DF_Uqql8.js → components/p-DH0rRXjx.js} +1 -1
- package/components/{p-D7ysFE2B.js → p-DMkSsriG.js} +1 -1
- package/components/{p-CaiZOhfC.js → p-Dcxr2vKX.js} +1 -1
- package/components/{p-B6x5_b9w.js → p-DkEb3SCT.js} +1 -1
- package/components/p-Dr-rBSUW.js +4 -0
- package/components/{p-DqAI6tg7.js → p-FQTgh7aH.js} +1 -1
- package/components/{p-DrehWDfv.js → p-KusMkAnB.js} +1 -1
- package/components/p-MHpJ2A_m.js +4 -0
- package/components/p-QgdyH-Zs.js +4 -0
- package/components/{p-BMfgF-Tv.js → p-RRH-7cpd.js} +1 -1
- package/components/{p-CQAjyETU.js → p-U1X_lw_6.js} +1 -1
- package/components/p-UKksD3f9.js +4 -0
- package/components/{p-v2NpoOHp.js → p-VTfnz_8u.js} +1 -1
- package/components/p-fP0QF3iG.js +4 -0
- package/components/{p-BPDxVIRr.js → p-l-zxxFre.js} +1 -1
- package/components/{p-BrFaQbGY.js → p-mXsQnyWB.js} +1 -1
- package/components/p-ntAkt4Ra.js +4 -0
- package/components/p-ufB0gCSU.js +4 -0
- package/dist/cjs/{animation-D-OqR4a4.js → animation-ihPP_z2n.js} +1 -1
- package/dist/cjs/{app-globals-BzgwARwJ.js → app-globals-BlkzA410.js} +1 -1
- package/dist/cjs/{button-active-BlWSD7uK.js → button-active-ItGBjzmO.js} +1 -1
- package/dist/cjs/{format-D7ig6Vm0.js → format-CPIqtp4x.js} +1 -1
- package/dist/cjs/{framework-delegate-BZUx4TnE.js → framework-delegate-DhyWUPGg.js} +1 -1
- package/dist/cjs/{hardware-back-button-JOAEFSzc.js → hardware-back-button-D5f_kASb.js} +1 -1
- package/dist/cjs/{helpers-Dj5o76mq.js → helpers-BCLkFTTd.js} +1 -1
- package/dist/cjs/{index-C8zH6b3d.js → index-49DTLc_Z.js} +2 -2
- package/dist/cjs/{index-CZ6vzt_q.js → index-BcyiqD6R.js} +5 -5
- package/dist/cjs/{index-BrVMoqUk.js → index-Bgz6BcKx.js} +50 -16
- package/dist/cjs/{index-EJLjthTK.js → index-BocV_y-c.js} +2 -1
- package/dist/cjs/{index-2sO-zkZ2.js → index-CldjPPyP.js} +4 -4
- package/dist/cjs/{index-Csue6G3m.js → index-xum7jdbq.js} +2 -2
- package/dist/cjs/index.cjs.js +12 -12
- package/dist/cjs/{input-shims-Bh7bnt2v.js → input-shims-Jisy7U7-.js} +3 -3
- package/dist/cjs/{input.utils-Cq3g9uHy.js → input.utils-BDTpGrfn.js} +1 -1
- package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-action-sheet.cjs.entry.js +10 -10
- package/dist/cjs/ion-alert.cjs.entry.js +10 -10
- package/dist/cjs/ion-app_8.cjs.entry.js +12 -12
- package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-back-button.cjs.entry.js +3 -3
- package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-button_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-card_5.cjs.entry.js +3 -3
- package/dist/cjs/ion-checkbox.cjs.entry.js +4 -4
- package/dist/cjs/ion-chip.cjs.entry.js +2 -2
- package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime-button.cjs.entry.js +4 -4
- package/dist/cjs/ion-datetime.cjs.entry.js +32 -24
- package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-img.cjs.entry.js +3 -3
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-input-otp.cjs.entry.js +3 -3
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +2 -2
- package/dist/cjs/ion-input.cjs.entry.js +5 -5
- package/dist/cjs/ion-item-option_3.cjs.entry.js +13 -15
- package/dist/cjs/ion-item_8.cjs.entry.js +3 -3
- package/dist/cjs/ion-loading.cjs.entry.js +8 -8
- package/dist/cjs/ion-menu_3.cjs.entry.js +8 -8
- package/dist/cjs/ion-modal.cjs.entry.js +9 -9
- package/dist/cjs/ion-nav_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +3 -3
- package/dist/cjs/ion-picker-column.cjs.entry.js +210 -46
- package/dist/cjs/ion-picker.cjs.entry.js +2 -2
- package/dist/cjs/ion-popover.cjs.entry.js +8 -8
- package/dist/cjs/ion-progress-bar.cjs.entry.js +3 -3
- package/dist/cjs/ion-radio_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-range.cjs.entry.js +4 -4
- package/dist/cjs/ion-refresher_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-reorder_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
- package/dist/cjs/ion-route_4.cjs.entry.js +4 -4
- package/dist/cjs/ion-searchbar.cjs.entry.js +3 -3
- package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment-view.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment_2.cjs.entry.js +14 -10
- package/dist/cjs/ion-select-modal.cjs.entry.js +8 -8
- package/dist/cjs/ion-select_3.cjs.entry.js +57 -47
- package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
- package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-text.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +5 -5
- package/dist/cjs/ion-toast.cjs.entry.js +8 -8
- package/dist/cjs/ion-toggle.cjs.entry.js +4 -4
- package/dist/cjs/{ionic-global-DvgIzM2F.js → ionic-global-BMU-Us1Q.js} +1 -1
- package/dist/cjs/ionic.cjs.js +4 -4
- package/dist/cjs/{ios.transition-zIgdoSYe.js → ios.transition-OCcCN--B.js} +4 -4
- package/dist/cjs/{item-multiple-inputs-DG-ZGm6j.js → item-multiple-inputs-BH9yPC66.js} +1 -1
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/cjs/{md.transition-CXeJ9rfh.js → md.transition-D0o2IIbo.js} +4 -4
- package/dist/cjs/{overlays-Bg0auTQa.js → overlays-hCtsdAvn.js} +5 -5
- package/dist/cjs/{select-option-render-7m1WdFzF.js → select-option-render-BPjGDlsG.js} +2 -2
- package/dist/cjs/{slot-mutation-controller-BJEJzx_e.js → slot-mutation-controller-IQ250LoG.js} +1 -1
- package/dist/cjs/{status-tap-DxbUM5XX.js → status-tap-Bakl9czs.js} +3 -3
- package/dist/cjs/{swipe-back-F_DBt-Aw.js → swipe-back-Cv4OZVJ5.js} +2 -2
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/datetime/datetime.js +25 -17
- package/dist/collection/components/item-sliding/item-sliding.js +10 -12
- package/dist/collection/components/picker-column/picker-column.js +207 -43
- package/dist/collection/components/segment-button/segment-button.js +11 -7
- package/dist/collection/components/select/select.js +49 -39
- package/dist/collection/utils/test/late-props/late-props.js +69 -0
- package/dist/docs.json +279 -48
- package/dist/esm/{animation-TxGPYeDn.js → animation-B6KGUJwl.js} +1 -1
- package/dist/esm/{app-globals-Do8rJest.js → app-globals-BvutUX8P.js} +1 -1
- package/dist/esm/{button-active-ChA4D-ml.js → button-active-DRNebs9r.js} +1 -1
- package/dist/esm/{format-CVk5e_GP.js → format-BF3btM7P.js} +1 -1
- package/dist/esm/{framework-delegate-DaLWnISz.js → framework-delegate-60cEIAgt.js} +1 -1
- package/dist/esm/{hardware-back-button-D8W4L0JP.js → hardware-back-button-rhkwRNk2.js} +1 -1
- package/dist/esm/{helpers-BIgoInJU.js → helpers-DLLANtRS.js} +1 -1
- package/dist/esm/{index-C8Dsa6li.js → index-BZHVn0iF.js} +4 -4
- package/dist/esm/{index-DHw2lZxe.js → index-Bl4BUvBL.js} +2 -2
- package/dist/esm/{index-BmOR8tCv.js → index-DOrtAUWV.js} +2 -2
- package/dist/esm/{index-C5ZdL0qp.js → index-D_7MeuVD.js} +5 -5
- package/dist/esm/{index-elneMH8y.js → index-JgU5uTSY.js} +2 -2
- package/dist/esm/{index-CKYcsw8f.js → index-h81G-QbJ.js} +50 -16
- package/dist/esm/index.js +12 -12
- package/dist/esm/{input-shims-09NN97kF.js → input-shims-C2ipc_XX.js} +3 -3
- package/dist/esm/{input.utils-BxyH9l1w.js → input.utils-D-qoPjqr.js} +1 -1
- package/dist/esm/ion-accordion_2.entry.js +3 -3
- package/dist/esm/ion-action-sheet.entry.js +10 -10
- package/dist/esm/ion-alert.entry.js +10 -10
- package/dist/esm/ion-app_8.entry.js +12 -12
- package/dist/esm/ion-avatar_3.entry.js +2 -2
- package/dist/esm/ion-back-button.entry.js +3 -3
- package/dist/esm/ion-backdrop.entry.js +2 -2
- package/dist/esm/ion-breadcrumb_2.entry.js +3 -3
- package/dist/esm/ion-button_2.entry.js +3 -3
- package/dist/esm/ion-card_5.entry.js +3 -3
- package/dist/esm/ion-checkbox.entry.js +4 -4
- package/dist/esm/ion-chip.entry.js +2 -2
- package/dist/esm/ion-col_3.entry.js +2 -2
- package/dist/esm/ion-datetime-button.entry.js +4 -4
- package/dist/esm/ion-datetime.entry.js +32 -24
- package/dist/esm/ion-fab_3.entry.js +3 -3
- package/dist/esm/ion-img.entry.js +3 -3
- package/dist/esm/ion-infinite-scroll_2.entry.js +5 -5
- package/dist/esm/ion-input-otp.entry.js +3 -3
- package/dist/esm/ion-input-password-toggle.entry.js +2 -2
- package/dist/esm/ion-input.entry.js +5 -5
- package/dist/esm/ion-item-option_3.entry.js +13 -15
- package/dist/esm/ion-item_8.entry.js +3 -3
- package/dist/esm/ion-loading.entry.js +8 -8
- package/dist/esm/ion-menu_3.entry.js +8 -8
- package/dist/esm/ion-modal.entry.js +9 -9
- package/dist/esm/ion-nav_2.entry.js +6 -6
- package/dist/esm/ion-picker-column-option.entry.js +3 -3
- package/dist/esm/ion-picker-column.entry.js +211 -47
- package/dist/esm/ion-picker.entry.js +2 -2
- package/dist/esm/ion-popover.entry.js +8 -8
- package/dist/esm/ion-progress-bar.entry.js +3 -3
- package/dist/esm/ion-radio_2.entry.js +4 -4
- package/dist/esm/ion-range.entry.js +4 -4
- package/dist/esm/ion-refresher_2.entry.js +6 -6
- package/dist/esm/ion-reorder_2.entry.js +4 -4
- package/dist/esm/ion-ripple-effect.entry.js +2 -2
- package/dist/esm/ion-route_4.entry.js +4 -4
- package/dist/esm/ion-searchbar.entry.js +3 -3
- package/dist/esm/ion-segment-content.entry.js +1 -1
- package/dist/esm/ion-segment-view.entry.js +1 -1
- package/dist/esm/ion-segment_2.entry.js +14 -10
- package/dist/esm/ion-select-modal.entry.js +8 -8
- package/dist/esm/ion-select_3.entry.js +57 -47
- package/dist/esm/ion-spinner.entry.js +2 -2
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar_2.entry.js +3 -3
- package/dist/esm/ion-tab_2.entry.js +3 -3
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +5 -5
- package/dist/esm/ion-toast.entry.js +8 -8
- package/dist/esm/ion-toggle.entry.js +4 -4
- package/dist/esm/{ionic-global-lrowsHfi.js → ionic-global-B7I1sdvg.js} +1 -1
- package/dist/esm/ionic.js +5 -5
- package/dist/esm/{ios.transition-BQhADrk1.js → ios.transition-C-6IaIxe.js} +4 -4
- package/dist/esm/{item-multiple-inputs-D_N3fDkD.js → item-multiple-inputs-DI91syHS.js} +1 -1
- package/dist/esm/loader.js +4 -4
- package/dist/esm/{md.transition-D58NpmRa.js → md.transition-dyqt0t0d.js} +4 -4
- package/dist/esm/{overlays-BpnIFlXI.js → overlays-CiFoZEq1.js} +5 -5
- package/dist/esm/{select-option-render-lIuu64EV.js → select-option-render-CUJpruSC.js} +2 -2
- package/dist/esm/{slot-mutation-controller-rS_T3FDR.js → slot-mutation-controller-wFuztlVD.js} +1 -1
- package/dist/esm/{status-tap-CpFQMLl6.js → status-tap-Dn_42wiy.js} +3 -3
- package/dist/esm/{swipe-back-rmc7zeNW.js → swipe-back-CqOqrHW7.js} +2 -2
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-d8deff43.entry.js → p-026e2e4c.entry.js} +1 -1
- package/dist/ionic/{p-RzUn7cKs.js → p-06ZcwRF5.js} +1 -1
- package/dist/ionic/{p-b62bfce8.entry.js → p-082b8125.entry.js} +1 -1
- package/dist/ionic/{p-16e9f542.entry.js → p-0b52d921.entry.js} +1 -1
- package/dist/ionic/{p-485fb218.entry.js → p-1a20571c.entry.js} +1 -1
- package/dist/ionic/{p-90ba736e.entry.js → p-1f66c230.entry.js} +1 -1
- package/dist/ionic/{p-a0fee899.entry.js → p-2aabd568.entry.js} +1 -1
- package/dist/ionic/{p-295ff427.entry.js → p-2ff12c8a.entry.js} +1 -1
- package/dist/ionic/p-326e0d05.entry.js +4 -0
- package/dist/ionic/p-392079fa.entry.js +4 -0
- package/dist/ionic/{p-48c859fe.entry.js → p-39415b06.entry.js} +1 -1
- package/dist/ionic/{p-886d9e66.entry.js → p-3bad6750.entry.js} +1 -1
- package/dist/ionic/{p-6f048604.entry.js → p-43bae3f5.entry.js} +1 -1
- package/dist/ionic/{p-d3384a40.entry.js → p-47b8b59a.entry.js} +1 -1
- package/dist/ionic/p-4dcd329a.entry.js +4 -0
- package/dist/ionic/{p-478035a7.entry.js → p-53ba5651.entry.js} +1 -1
- package/dist/ionic/{p-bbf6878c.entry.js → p-546b1109.entry.js} +1 -1
- package/dist/ionic/{p-8dd4c026.entry.js → p-5dc53bdf.entry.js} +1 -1
- package/dist/ionic/{p-1df75f9e.entry.js → p-5ed60413.entry.js} +1 -1
- package/dist/ionic/{p-05800a02.entry.js → p-5fce4bf4.entry.js} +1 -1
- package/dist/ionic/{p-ddfb7e5f.entry.js → p-6d84fa9f.entry.js} +1 -1
- package/dist/ionic/{p-68507e70.entry.js → p-70334101.entry.js} +1 -1
- package/dist/ionic/{p-72ad7c64.entry.js → p-7c859f42.entry.js} +1 -1
- package/dist/ionic/{p-f376876b.entry.js → p-83aa7d47.entry.js} +1 -1
- package/dist/ionic/{p-959df5f8.entry.js → p-8d72244b.entry.js} +1 -1
- package/dist/ionic/{p-34b9379b.entry.js → p-8db6e422.entry.js} +1 -1
- package/dist/ionic/{p-9e455875.entry.js → p-8e388a30.entry.js} +1 -1
- package/dist/ionic/{p-b5f37106.entry.js → p-9452849d.entry.js} +1 -1
- package/dist/ionic/{p-75887ee0.entry.js → p-986a1db8.entry.js} +1 -1
- package/dist/ionic/{p-a54bcd16.entry.js → p-9e688396.entry.js} +1 -1
- package/dist/ionic/{p-cad4eccf.entry.js → p-9eba0d8a.entry.js} +1 -1
- package/dist/ionic/{p-8e007f11.entry.js → p-9f2d3987.entry.js} +1 -1
- package/{components/p-BSARlp49.js → dist/ionic/p-BC17SPKH.js} +1 -1
- package/dist/ionic/p-BRa1Jjxr.js +4 -0
- package/dist/ionic/{p-De0eY881.js → p-BRc8gq5v.js} +1 -1
- package/{components/p-66ogmUZU.js → dist/ionic/p-BpG7jkT9.js} +1 -1
- package/dist/ionic/{p-B1Y7LZhV.js → p-C10K-FJg.js} +1 -1
- package/dist/ionic/{p-D9yvytgv.js → p-C2BY_4Wp.js} +1 -1
- package/dist/ionic/{p-BZVE25Gu.js → p-CH8tk7Pr.js} +1 -1
- package/dist/ionic/{p-CDBop-kz.js → p-CTBfxfjC.js} +1 -1
- package/dist/ionic/p-Cc-fFNy8.js +4 -0
- package/dist/ionic/p-Cc4w3fVf.js +4 -0
- package/{components/p-BuPAFTWI.js → dist/ionic/p-CoEa7CiN.js} +1 -1
- package/dist/ionic/p-CvRL-Eju.js +4 -0
- package/dist/ionic/{p-DdhHqKj-.js → p-DA52akcQ.js} +1 -1
- package/dist/ionic/p-DA88iqXQ.js +4 -0
- package/dist/ionic/{p-DXJgZWgi.js → p-DMj-M2c4.js} +1 -1
- package/dist/ionic/p-D_IgV7tz.js +4 -0
- package/dist/ionic/{p-VquyMbjp.js → p-DoUx_N0R.js} +1 -1
- package/dist/ionic/{p-C4IBDDj6.js → p-KJ5pLPiN.js} +1 -1
- package/dist/ionic/{p-ByLaqOPm.js → p-Q9w8L_Sw.js} +1 -1
- package/dist/ionic/{p-ClrlQU2y.js → p-S1shXW5M.js} +1 -1
- package/dist/ionic/{p-1db2afb4.entry.js → p-a2fccdaa.entry.js} +1 -1
- package/dist/ionic/{p-fbd83d4c.entry.js → p-ac71362a.entry.js} +1 -1
- package/dist/ionic/{p-b7a11b58.entry.js → p-b62c04b2.entry.js} +1 -1
- package/dist/ionic/p-b8cd338d.entry.js +4 -0
- package/dist/ionic/{p-5f216b79.entry.js → p-ca57763d.entry.js} +1 -1
- package/dist/ionic/{p-39a8d4e0.entry.js → p-cc749877.entry.js} +1 -1
- package/dist/ionic/{p-56307aea.entry.js → p-d1539609.entry.js} +1 -1
- package/dist/ionic/{p-cdc5115e.entry.js → p-d1b888de.entry.js} +1 -1
- package/dist/ionic/p-da5a7bcd.entry.js +4 -0
- package/dist/ionic/{p-70ee8888.entry.js → p-dadcb3d2.entry.js} +1 -1
- package/dist/ionic/{p-0eb50dca.entry.js → p-e090eca3.entry.js} +1 -1
- package/dist/ionic/{p-873a315a.entry.js → p-e5a54d99.entry.js} +1 -1
- package/dist/ionic/{p-c49165af.entry.js → p-e93cc1e1.entry.js} +1 -1
- package/dist/ionic/p-eab77a74.entry.js +4 -0
- package/dist/ionic/{p-aebc4d69.entry.js → p-eaeac54e.entry.js} +1 -1
- package/dist/ionic/{p-e538f18d.entry.js → p-ecfc9c71.entry.js} +1 -1
- package/dist/ionic/{p-5ee2d7b1.entry.js → p-eeb65463.entry.js} +1 -1
- package/dist/ionic/{p-881b6954.entry.js → p-f0645c98.entry.js} +1 -1
- package/dist/ionic/{p-d8bae128.entry.js → p-f607ad4f.entry.js} +1 -1
- package/dist/ionic/{p-61c799d1.entry.js → p-fb4dabbb.entry.js} +1 -1
- package/dist/ionic/{p-63bbba8d.entry.js → p-fe80ebb1.entry.js} +1 -1
- package/dist/ionic/p-h81G-QbJ.js +6 -0
- package/dist/ionic/p-w3KTiug9.js +4 -0
- package/{components/p-RFfE9hF6.js → dist/ionic/p-wdSUbx5C.js} +1 -1
- package/dist/types/components/picker-column/picker-column.d.ts +42 -0
- package/dist/types/components.d.ts +1 -1
- package/dist/types/stencil-public-runtime.d.ts +12 -0
- package/hydrate/index.js +328 -123
- package/hydrate/index.mjs +328 -123
- package/loader/index.d.ts +1 -1
- package/package.json +2 -2
- package/components/p-6Vp915Y7.js +0 -4
- package/components/p-AQcCdH2_.js +0 -4
- package/components/p-BdwCtX8Y.js +0 -4
- package/components/p-BxhE2W85.js +0 -4
- package/components/p-CR9OgE6N.js +0 -4
- package/components/p-CaZeZIL2.js +0 -4
- package/components/p-CqyGR9Aq.js +0 -4
- package/components/p-DCWfzDM8.js +0 -4
- package/components/p-DQ1IPvZO.js +0 -4
- package/components/p-DfdYCsov.js +0 -4
- package/components/p-DhOoEIAs.js +0 -4
- package/components/p-Dl_7b_UJ.js +0 -4
- package/components/p-HVYBAhFx.js +0 -4
- package/dist/ionic/p-18d532a3.entry.js +0 -4
- package/dist/ionic/p-4437015c.entry.js +0 -4
- package/dist/ionic/p-49b9d405.entry.js +0 -4
- package/dist/ionic/p-8f464a8f.entry.js +0 -4
- package/dist/ionic/p-8f51110d.entry.js +0 -4
- package/dist/ionic/p-B5RyLYvl.js +0 -4
- package/dist/ionic/p-BQv5i5Kf.js +0 -4
- package/dist/ionic/p-BnGA34Pd.js +0 -4
- package/dist/ionic/p-C06QNN45.js +0 -4
- package/dist/ionic/p-CCVlNZ__.js +0 -4
- package/dist/ionic/p-CKYcsw8f.js +0 -5
- package/dist/ionic/p-CazSodad.js +0 -4
- package/dist/ionic/p-DgUL3JbO.js +0 -4
- package/dist/ionic/p-f521b13c.entry.js +0 -4
package/hydrate/index.mjs
CHANGED
|
@@ -420,7 +420,7 @@ const appGlobalScript = initialize || (() => {});
|
|
|
420
420
|
const globalScripts = appGlobalScript;
|
|
421
421
|
|
|
422
422
|
/*
|
|
423
|
-
Stencil Hydrate Platform v4.
|
|
423
|
+
Stencil Hydrate Platform v4.44.1 | MIT Licensed | https://stenciljs.com
|
|
424
424
|
*/
|
|
425
425
|
var __create = Object.create;
|
|
426
426
|
var __defProp = Object.defineProperty;
|
|
@@ -755,6 +755,8 @@ var DEFAULT_DOC_DATA = {
|
|
|
755
755
|
};
|
|
756
756
|
var SLOT_FB_CSS = "slot-fb{display:contents}slot-fb[hidden]{display:none}";
|
|
757
757
|
var XLINK_NS = "http://www.w3.org/1999/xlink";
|
|
758
|
+
var MAX_LAZY_LOAD_RETRIES = 3;
|
|
759
|
+
var LAZY_LOAD_RETRY_INTERVAL_MS = 1e3;
|
|
758
760
|
|
|
759
761
|
// src/utils/style.ts
|
|
760
762
|
function createStyleSheetIfNeededAndSupported(styles2) {
|
|
@@ -818,7 +820,7 @@ function getHostSlotNodes(childNodes, hostName, slotName) {
|
|
|
818
820
|
slottedNodes.push(childNode);
|
|
819
821
|
if (typeof slotName !== "undefined") return slottedNodes;
|
|
820
822
|
}
|
|
821
|
-
slottedNodes = [...slottedNodes, ...getHostSlotNodes(childNode
|
|
823
|
+
slottedNodes = [...slottedNodes, ...getHostSlotNodes(internalCall(childNode, "childNodes"), hostName, slotName)];
|
|
822
824
|
}
|
|
823
825
|
return slottedNodes;
|
|
824
826
|
}
|
|
@@ -1062,6 +1064,11 @@ var h = (nodeName, vnodeData, ...children) => {
|
|
|
1062
1064
|
} else if (child != null && typeof child !== "boolean") {
|
|
1063
1065
|
if (simple = typeof nodeName !== "function" && !isComplexType(child)) {
|
|
1064
1066
|
child = String(child);
|
|
1067
|
+
} else if (typeof nodeName !== "function" && child.$flags$ === void 0) {
|
|
1068
|
+
{
|
|
1069
|
+
consoleError("Invalid vNode child");
|
|
1070
|
+
}
|
|
1071
|
+
continue;
|
|
1065
1072
|
}
|
|
1066
1073
|
if (simple && lastSimple) {
|
|
1067
1074
|
vNodeChildren[vNodeChildren.length - 1].$text$ += child;
|
|
@@ -2297,7 +2304,7 @@ var setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags, initialRen
|
|
|
2297
2304
|
}
|
|
2298
2305
|
}
|
|
2299
2306
|
if (newValue == null || newValue === false) {
|
|
2300
|
-
if (newValue !== false || elm.getAttribute(memberName) === "") {
|
|
2307
|
+
if (newValue !== false || elm.getAttribute(memberName) === "" || flags & 4 /* isHost */ && !isEnumeratedAttribute(memberName)) {
|
|
2301
2308
|
if (xlink) {
|
|
2302
2309
|
elm.removeAttributeNS(XLINK_NS, memberName);
|
|
2303
2310
|
} else {
|
|
@@ -2314,6 +2321,8 @@ var setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags, initialRen
|
|
|
2314
2321
|
}
|
|
2315
2322
|
}
|
|
2316
2323
|
};
|
|
2324
|
+
var ENUMERATED_ATTRIBUTES = /* @__PURE__ */ new Set(["draggable", "contenteditable", "spellcheck"]);
|
|
2325
|
+
var isEnumeratedAttribute = (attrName) => ENUMERATED_ATTRIBUTES.has(attrName) || attrName.startsWith("aria-");
|
|
2317
2326
|
var parseClassListRegex = /\s/;
|
|
2318
2327
|
var parseClassList = (value) => {
|
|
2319
2328
|
if (typeof value === "object" && value && "baseVal" in value) {
|
|
@@ -2716,7 +2725,10 @@ var markSlotContentForRelocation = (elm) => {
|
|
|
2716
2725
|
const slotName = childNode["s-sn"];
|
|
2717
2726
|
for (j = hostContentNodes.length - 1; j >= 0; j--) {
|
|
2718
2727
|
node = hostContentNodes[j];
|
|
2719
|
-
if (!node["s-cn"] && !node["s-nr"] && node["s-hn"] !== childNode["s-hn"] &&
|
|
2728
|
+
if (!node["s-cn"] && !node["s-nr"] && node["s-hn"] !== childNode["s-hn"] && // let an exact named-slot match override a stale default-slot claim. Skip this for
|
|
2729
|
+
// `slotName === ''` itself - a matched default node's cached `s-sn` is `''` too, which
|
|
2730
|
+
// would trivially "match" on every re-render and force pointless re-insertion.
|
|
2731
|
+
(!node["s-sh"] || node["s-sh"] !== childNode["s-hn"] || slotName !== "" && getSlotName(node) === slotName)) {
|
|
2720
2732
|
if (isNodeLocatedInSlot(node, slotName)) {
|
|
2721
2733
|
let relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);
|
|
2722
2734
|
checkSlotFallbackVisibility = true;
|
|
@@ -2786,7 +2798,7 @@ var insertBefore = (parent, newNode, reference, isInitialLoad) => {
|
|
|
2786
2798
|
return newNode;
|
|
2787
2799
|
}
|
|
2788
2800
|
}
|
|
2789
|
-
if (parent.__insertBefore) {
|
|
2801
|
+
if ((parent == null ? void 0 : parent.__insertBefore)) {
|
|
2790
2802
|
return parent.__insertBefore(newNode, reference);
|
|
2791
2803
|
} else {
|
|
2792
2804
|
return parent == null ? void 0 : parent.insertBefore(newNode, reference);
|
|
@@ -3291,10 +3303,12 @@ var proxyComponent = (Cstr, cmpMeta, flags) => {
|
|
|
3291
3303
|
|
|
3292
3304
|
// src/runtime/initialize-component.ts
|
|
3293
3305
|
var initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
|
|
3306
|
+
var _a2;
|
|
3294
3307
|
let Cstr;
|
|
3295
3308
|
try {
|
|
3296
3309
|
if ((hostRef.$flags$ & 32 /* hasInitializedComponent */) === 0) {
|
|
3297
3310
|
hostRef.$flags$ |= 32 /* hasInitializedComponent */;
|
|
3311
|
+
hostRef.$flags$ &= -1025 /* hasFailedLoad */;
|
|
3298
3312
|
const bundleId = cmpMeta.$lazyBundleId$;
|
|
3299
3313
|
if (bundleId) {
|
|
3300
3314
|
const CstrImport = loadModule(cmpMeta);
|
|
@@ -3306,6 +3320,11 @@ var initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
|
|
|
3306
3320
|
Cstr = CstrImport;
|
|
3307
3321
|
}
|
|
3308
3322
|
if (!Cstr) {
|
|
3323
|
+
hostRef.$flags$ &= -33 /* hasInitializedComponent */;
|
|
3324
|
+
hostRef.$loadRetryCount$ = ((_a2 = hostRef.$loadRetryCount$) != null ? _a2 : 0) + 1;
|
|
3325
|
+
if (hostRef.$loadRetryCount$ < MAX_LAZY_LOAD_RETRIES) {
|
|
3326
|
+
hostRef.$flags$ |= 1024 /* hasFailedLoad */;
|
|
3327
|
+
}
|
|
3309
3328
|
throw new Error(`Constructor for "${cmpMeta.$tagName$}#${hostRef.$modeName$}" was not found`);
|
|
3310
3329
|
}
|
|
3311
3330
|
if (!Cstr.isProxied) {
|
|
@@ -3385,7 +3404,7 @@ var initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
|
|
|
3385
3404
|
hostRef.$onRenderResolve$();
|
|
3386
3405
|
hostRef.$onRenderResolve$ = void 0;
|
|
3387
3406
|
}
|
|
3388
|
-
if (hostRef.$onReadyResolve$) {
|
|
3407
|
+
if (hostRef.$onReadyResolve$ && !(hostRef.$flags$ & 1024 /* hasFailedLoad */)) {
|
|
3389
3408
|
hostRef.$onReadyResolve$(elm);
|
|
3390
3409
|
}
|
|
3391
3410
|
}
|
|
@@ -3444,6 +3463,8 @@ var connectedCallback = (elm) => {
|
|
|
3444
3463
|
addHostEventListeners(elm, hostRef, cmpMeta.$listeners$);
|
|
3445
3464
|
if (hostRef == null ? void 0 : hostRef.$lazyInstance$) {
|
|
3446
3465
|
fireConnectedCallback(hostRef.$lazyInstance$, elm);
|
|
3466
|
+
} else if (hostRef.$flags$ & 1024 /* hasFailedLoad */) {
|
|
3467
|
+
setTimeout(() => initializeComponent(elm, hostRef, cmpMeta), LAZY_LOAD_RETRY_INTERVAL_MS);
|
|
3447
3468
|
} else if (hostRef == null ? void 0 : hostRef.$onReadyPromise$) {
|
|
3448
3469
|
hostRef.$onReadyPromise$.then(() => fireConnectedCallback(hostRef.$lazyInstance$, elm));
|
|
3449
3470
|
}
|
|
@@ -17026,7 +17047,6 @@ class Datetime {
|
|
|
17026
17047
|
}
|
|
17027
17048
|
renderCombinedDatePickerColumn() {
|
|
17028
17049
|
const { defaultParts, disabled, workingParts, locale, minParts, maxParts, todayParts, isDateEnabled } = this;
|
|
17029
|
-
const activePart = this.getActivePartsWithFallback();
|
|
17030
17050
|
/**
|
|
17031
17051
|
* By default, generate a range of 3 months:
|
|
17032
17052
|
* Previous month, current month, and next month
|
|
@@ -17082,8 +17102,10 @@ class Datetime {
|
|
|
17082
17102
|
return (hAsync("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select a date", class: "date-column", color: this.color, disabled: disabled, value: todayString, onIonChange: (ev) => {
|
|
17083
17103
|
const { value } = ev.detail;
|
|
17084
17104
|
const findPart = parts.find(({ month, day, year }) => value === `${year}-${month}-${day}`);
|
|
17105
|
+
// Read live so parts a sibling column just committed are included.
|
|
17106
|
+
const activePart = this.getActivePartsWithFallback();
|
|
17085
17107
|
this.setWorkingParts({
|
|
17086
|
-
...workingParts,
|
|
17108
|
+
...this.workingParts,
|
|
17087
17109
|
...findPart,
|
|
17088
17110
|
});
|
|
17089
17111
|
this.setActiveParts({
|
|
@@ -17160,11 +17182,12 @@ class Datetime {
|
|
|
17160
17182
|
return [];
|
|
17161
17183
|
}
|
|
17162
17184
|
const { disabled, workingParts } = this;
|
|
17163
|
-
const activePart = this.getActivePartsWithFallback();
|
|
17164
17185
|
const pickerColumnValue = (workingParts.day !== null ? workingParts.day : this.defaultParts.day) ?? undefined;
|
|
17165
17186
|
return (hAsync("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select a day", class: "day-column", color: this.color, disabled: disabled, value: pickerColumnValue, onIonChange: (ev) => {
|
|
17187
|
+
// Read live so parts a sibling column just committed are included.
|
|
17188
|
+
const activePart = this.getActivePartsWithFallback();
|
|
17166
17189
|
this.setWorkingParts({
|
|
17167
|
-
...workingParts,
|
|
17190
|
+
...this.workingParts,
|
|
17168
17191
|
day: ev.detail.value,
|
|
17169
17192
|
});
|
|
17170
17193
|
this.setActiveParts({
|
|
@@ -17179,10 +17202,11 @@ class Datetime {
|
|
|
17179
17202
|
return [];
|
|
17180
17203
|
}
|
|
17181
17204
|
const { disabled, workingParts } = this;
|
|
17182
|
-
const activePart = this.getActivePartsWithFallback();
|
|
17183
17205
|
return (hAsync("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select a month", class: "month-column", color: this.color, disabled: disabled, value: workingParts.month, onIonChange: (ev) => {
|
|
17206
|
+
// Read live so parts a sibling column just committed are included.
|
|
17207
|
+
const activePart = this.getActivePartsWithFallback();
|
|
17184
17208
|
this.setWorkingParts({
|
|
17185
|
-
...workingParts,
|
|
17209
|
+
...this.workingParts,
|
|
17186
17210
|
month: ev.detail.value,
|
|
17187
17211
|
});
|
|
17188
17212
|
// Month wheel is navigation-only in multi-select mode as a fix for https://github.com/ionic-team/ionic-framework/issues/29673
|
|
@@ -17200,10 +17224,11 @@ class Datetime {
|
|
|
17200
17224
|
return [];
|
|
17201
17225
|
}
|
|
17202
17226
|
const { disabled, workingParts } = this;
|
|
17203
|
-
const activePart = this.getActivePartsWithFallback();
|
|
17204
17227
|
return (hAsync("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select a year", class: "year-column", color: this.color, disabled: disabled, value: workingParts.year, onIonChange: (ev) => {
|
|
17228
|
+
// Read live so parts a sibling column just committed are included.
|
|
17229
|
+
const activePart = this.getActivePartsWithFallback();
|
|
17205
17230
|
this.setWorkingParts({
|
|
17206
|
-
...workingParts,
|
|
17231
|
+
...this.workingParts,
|
|
17207
17232
|
year: ev.detail.value,
|
|
17208
17233
|
});
|
|
17209
17234
|
// Year wheel is navigation-only in multi-select mode as a fix for https://github.com/ionic-team/ionic-framework/issues/29673
|
|
@@ -17239,13 +17264,14 @@ class Datetime {
|
|
|
17239
17264
|
];
|
|
17240
17265
|
}
|
|
17241
17266
|
renderHourPickerColumn(hoursData) {
|
|
17242
|
-
const { disabled
|
|
17267
|
+
const { disabled } = this;
|
|
17243
17268
|
if (hoursData.length === 0)
|
|
17244
17269
|
return [];
|
|
17245
17270
|
const activePart = this.getActivePartsWithFallback();
|
|
17246
17271
|
return (hAsync("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select an hour", color: this.color, disabled: disabled, value: activePart.hour, numericInput: true, onIonChange: (ev) => {
|
|
17272
|
+
// Read live so parts a sibling column just committed are included.
|
|
17247
17273
|
this.setWorkingParts({
|
|
17248
|
-
...workingParts,
|
|
17274
|
+
...this.workingParts,
|
|
17249
17275
|
hour: ev.detail.value,
|
|
17250
17276
|
});
|
|
17251
17277
|
this.setActiveParts({
|
|
@@ -17256,13 +17282,14 @@ class Datetime {
|
|
|
17256
17282
|
} }, hoursData.map((hour) => (hAsync("ion-picker-column-option", { color: this.color, part: hour.value === activePart.hour ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: hour.value, disabled: hour.disabled, value: hour.value }, hour.text)))));
|
|
17257
17283
|
}
|
|
17258
17284
|
renderMinutePickerColumn(minutesData) {
|
|
17259
|
-
const { disabled
|
|
17285
|
+
const { disabled } = this;
|
|
17260
17286
|
if (minutesData.length === 0)
|
|
17261
17287
|
return [];
|
|
17262
17288
|
const activePart = this.getActivePartsWithFallback();
|
|
17263
17289
|
return (hAsync("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select a minute", color: this.color, disabled: disabled, value: activePart.minute, numericInput: true, onIonChange: (ev) => {
|
|
17290
|
+
// Read live so parts a sibling column just committed are included.
|
|
17264
17291
|
this.setWorkingParts({
|
|
17265
|
-
...workingParts,
|
|
17292
|
+
...this.workingParts,
|
|
17266
17293
|
minute: ev.detail.value,
|
|
17267
17294
|
});
|
|
17268
17295
|
this.setActiveParts({
|
|
@@ -17273,16 +17300,18 @@ class Datetime {
|
|
|
17273
17300
|
} }, minutesData.map((minute) => (hAsync("ion-picker-column-option", { color: this.color, part: minute.value === activePart.minute ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: minute.value, disabled: minute.disabled, value: minute.value }, minute.text)))));
|
|
17274
17301
|
}
|
|
17275
17302
|
renderDayPeriodPickerColumn(dayPeriodData) {
|
|
17276
|
-
const { disabled
|
|
17303
|
+
const { disabled } = this;
|
|
17277
17304
|
if (dayPeriodData.length === 0) {
|
|
17278
17305
|
return [];
|
|
17279
17306
|
}
|
|
17280
17307
|
const activePart = this.getActivePartsWithFallback();
|
|
17281
17308
|
const isDayPeriodRTL = isLocaleDayPeriodRTL(this.locale);
|
|
17282
17309
|
return (hAsync("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select a day period", style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, onIonChange: (ev) => {
|
|
17283
|
-
|
|
17310
|
+
// Read live so parts a sibling column just committed are included.
|
|
17311
|
+
const currentParts = this.workingParts;
|
|
17312
|
+
const hour = calculateHourFromAMPM(currentParts, ev.detail.value);
|
|
17284
17313
|
this.setWorkingParts({
|
|
17285
|
-
...
|
|
17314
|
+
...currentParts,
|
|
17286
17315
|
ampm: ev.detail.value,
|
|
17287
17316
|
hour,
|
|
17288
17317
|
});
|
|
@@ -17634,7 +17663,7 @@ class Datetime {
|
|
|
17634
17663
|
const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
|
|
17635
17664
|
const hasWheelVariant = hasDatePresentation && preferWheel;
|
|
17636
17665
|
renderHiddenInput(true, el, name, formatValue(value), disabled);
|
|
17637
|
-
return (hAsync(Host, { key: '
|
|
17666
|
+
return (hAsync(Host, { key: '4e0b529a70924b065bcc6191e08550428b5a52a0', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: {
|
|
17638
17667
|
...createColorClasses$1(color, {
|
|
17639
17668
|
[mode]: true,
|
|
17640
17669
|
['datetime-readonly']: readonly,
|
|
@@ -17646,7 +17675,7 @@ class Datetime {
|
|
|
17646
17675
|
[`datetime-prefer-wheel`]: hasWheelVariant,
|
|
17647
17676
|
[`datetime-grid`]: isGridStyle,
|
|
17648
17677
|
}),
|
|
17649
|
-
} }, hAsync("div", { key: '
|
|
17678
|
+
} }, hAsync("div", { key: 'cc9d1b92f960984cb0466d0003a240ace67da243', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
|
|
17650
17679
|
}
|
|
17651
17680
|
get el() { return getElement(this); }
|
|
17652
17681
|
static get watchers() { return {
|
|
@@ -22328,19 +22357,17 @@ class ItemSliding {
|
|
|
22328
22357
|
}
|
|
22329
22358
|
}
|
|
22330
22359
|
async updateOptions() {
|
|
22331
|
-
const options = this.el.querySelectorAll('ion-item-options');
|
|
22360
|
+
const options = Array.from(this.el.querySelectorAll('ion-item-options'));
|
|
22361
|
+
/**
|
|
22362
|
+
* Frameworks that assign element props after inserting the element haven't set
|
|
22363
|
+
* `side` while `connectedCallback` runs, so reading it any earlier reports every
|
|
22364
|
+
* option as `end`.
|
|
22365
|
+
*/
|
|
22366
|
+
await Promise.all(options.map((option) => new Promise((resolve) => componentOnReady(option, resolve))));
|
|
22332
22367
|
let sides = 0;
|
|
22333
22368
|
// Reset left and right options in case they were removed
|
|
22334
22369
|
this.leftOptions = this.rightOptions = undefined;
|
|
22335
|
-
for (
|
|
22336
|
-
const item = options.item(i);
|
|
22337
|
-
/**
|
|
22338
|
-
* We cannot use the componentOnReady helper
|
|
22339
|
-
* util here since we need to wait for all of these items
|
|
22340
|
-
* to be ready before we set `this.sides` and `this.optsDirty`.
|
|
22341
|
-
*/
|
|
22342
|
-
// eslint-disable-next-line custom-rules/no-component-on-ready-method
|
|
22343
|
-
const option = item.componentOnReady !== undefined ? await item.componentOnReady() : item;
|
|
22370
|
+
for (const option of options) {
|
|
22344
22371
|
const side = isEndSide(option.side ?? option.getAttribute('side')) ? 'end' : 'start';
|
|
22345
22372
|
if (side === 'start') {
|
|
22346
22373
|
this.leftOptions = option;
|
|
@@ -22539,7 +22566,7 @@ class ItemSliding {
|
|
|
22539
22566
|
}
|
|
22540
22567
|
render() {
|
|
22541
22568
|
const mode = getIonMode$1(this);
|
|
22542
|
-
return (hAsync(Host, { key: '
|
|
22569
|
+
return (hAsync(Host, { key: '02174ca963753d3a51a4249068f3d436f8acb03d', class: {
|
|
22543
22570
|
[mode]: true,
|
|
22544
22571
|
'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
|
|
22545
22572
|
'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
|
|
@@ -29257,6 +29284,12 @@ class PickerColumn {
|
|
|
29257
29284
|
this.isColumnVisible = false;
|
|
29258
29285
|
this.canExitInputMode = true;
|
|
29259
29286
|
this.updateValueTextOnScroll = false;
|
|
29287
|
+
this.isUserScroll = false;
|
|
29288
|
+
/**
|
|
29289
|
+
* The haptics for the wheel picker are an iOS-only feature. As a result,
|
|
29290
|
+
* they should be disabled on Android.
|
|
29291
|
+
*/
|
|
29292
|
+
this.enableHaptics = false;
|
|
29260
29293
|
this.ariaLabel = null;
|
|
29261
29294
|
this.isActive = false;
|
|
29262
29295
|
/**
|
|
@@ -29288,6 +29321,12 @@ class PickerColumn {
|
|
|
29288
29321
|
*/
|
|
29289
29322
|
this.canExitInputMode = canExitInputMode;
|
|
29290
29323
|
this.updateValueTextOnScroll = false;
|
|
29324
|
+
/**
|
|
29325
|
+
* This scroll takes over from whatever the user was doing, so an outside
|
|
29326
|
+
* press must not commit an option the column is only passing through.
|
|
29327
|
+
*/
|
|
29328
|
+
this.isUserScroll = false;
|
|
29329
|
+
this.stopWatchingForOutsidePress();
|
|
29291
29330
|
scrollEl.scroll({
|
|
29292
29331
|
top,
|
|
29293
29332
|
left: 0,
|
|
@@ -29342,6 +29381,117 @@ class PickerColumn {
|
|
|
29342
29381
|
}
|
|
29343
29382
|
this.isActive = state;
|
|
29344
29383
|
};
|
|
29384
|
+
this.clearScrollEndTimeout = () => {
|
|
29385
|
+
if (this.scrollEndTimeout) {
|
|
29386
|
+
clearTimeout(this.scrollEndTimeout);
|
|
29387
|
+
this.scrollEndTimeout = undefined;
|
|
29388
|
+
}
|
|
29389
|
+
};
|
|
29390
|
+
/**
|
|
29391
|
+
* Resets the idle timer that commits the centered option.
|
|
29392
|
+
*/
|
|
29393
|
+
this.resetScrollEndTimeout = () => {
|
|
29394
|
+
this.clearScrollEndTimeout();
|
|
29395
|
+
this.scrollEndTimeout = setTimeout(this.settle, SCROLL_END_DELAY);
|
|
29396
|
+
};
|
|
29397
|
+
/**
|
|
29398
|
+
* Capture so the column still commits if an application's own pointerdown
|
|
29399
|
+
* handler stops the event before it reaches the document.
|
|
29400
|
+
*/
|
|
29401
|
+
this.watchForOutsidePress = () => {
|
|
29402
|
+
doc?.addEventListener('pointerdown', this.onPointerDownOutside, { capture: true });
|
|
29403
|
+
};
|
|
29404
|
+
this.stopWatchingForOutsidePress = () => {
|
|
29405
|
+
doc?.removeEventListener('pointerdown', this.onPointerDownOutside, { capture: true });
|
|
29406
|
+
};
|
|
29407
|
+
/**
|
|
29408
|
+
* Resets everything the current scroll interaction is holding, so nothing
|
|
29409
|
+
* pending on it can commit later.
|
|
29410
|
+
*/
|
|
29411
|
+
this.discardScroll = () => {
|
|
29412
|
+
this.stopWatchingForOutsidePress();
|
|
29413
|
+
this.clearScrollEndTimeout();
|
|
29414
|
+
this.scrollEndCallback = undefined;
|
|
29415
|
+
this.centeredOption = undefined;
|
|
29416
|
+
this.haltedAtScrollTop = undefined;
|
|
29417
|
+
this.isScrolling = false;
|
|
29418
|
+
this.isUserScroll = false;
|
|
29419
|
+
this.canExitInputMode = true;
|
|
29420
|
+
};
|
|
29421
|
+
/**
|
|
29422
|
+
* Commits the option that is currently centered under the highlight and ends
|
|
29423
|
+
* the scroll interaction.
|
|
29424
|
+
*/
|
|
29425
|
+
this.settle = () => {
|
|
29426
|
+
const { centeredOption } = this;
|
|
29427
|
+
this.clearScrollEndTimeout();
|
|
29428
|
+
this.stopWatchingForOutsidePress();
|
|
29429
|
+
this.isUserScroll = false;
|
|
29430
|
+
this.isScrolling = false;
|
|
29431
|
+
this.updateValueTextOnScroll = true;
|
|
29432
|
+
this.enableHaptics && hapticSelectionEnd();
|
|
29433
|
+
/**
|
|
29434
|
+
* Certain tasks (such as those that
|
|
29435
|
+
* cause re-renders) should only be done
|
|
29436
|
+
* once scrolling has finished, otherwise
|
|
29437
|
+
* flickering may occur.
|
|
29438
|
+
*/
|
|
29439
|
+
const { scrollEndCallback } = this;
|
|
29440
|
+
if (scrollEndCallback) {
|
|
29441
|
+
scrollEndCallback();
|
|
29442
|
+
this.scrollEndCallback = undefined;
|
|
29443
|
+
}
|
|
29444
|
+
/**
|
|
29445
|
+
* Reset this flag as the
|
|
29446
|
+
* next scroll interaction could
|
|
29447
|
+
* be a scroll from the user. In this
|
|
29448
|
+
* case, we should exit input mode.
|
|
29449
|
+
*/
|
|
29450
|
+
this.canExitInputMode = true;
|
|
29451
|
+
if (centeredOption !== undefined) {
|
|
29452
|
+
// Cleared here so a later scroll that centers nothing cannot fall back on it.
|
|
29453
|
+
this.centeredOption = undefined;
|
|
29454
|
+
if (centeredOption.isConnected) {
|
|
29455
|
+
this.setValue(centeredOption.value);
|
|
29456
|
+
}
|
|
29457
|
+
}
|
|
29458
|
+
};
|
|
29459
|
+
/**
|
|
29460
|
+
* Commits the option the user can see when they press anything outside of the
|
|
29461
|
+
* column during a scroll they started. This runs on pointerdown rather than
|
|
29462
|
+
* click so the value is up to date by the time an application's own click
|
|
29463
|
+
* handler (a Save button, for example) reads it.
|
|
29464
|
+
*/
|
|
29465
|
+
this.onPointerDownOutside = (ev) => {
|
|
29466
|
+
const { centeredOption, parentEl, scrollEl } = this;
|
|
29467
|
+
if (!this.isScrolling) {
|
|
29468
|
+
return;
|
|
29469
|
+
}
|
|
29470
|
+
/**
|
|
29471
|
+
* The column can live in another component's Shadow DOM, where a document
|
|
29472
|
+
* listener sees the target retargeted to the outer host. The composed path
|
|
29473
|
+
* is the only reliable way to tell a press on the column apart.
|
|
29474
|
+
*/
|
|
29475
|
+
const path = ev.composedPath();
|
|
29476
|
+
/**
|
|
29477
|
+
* A press anywhere in the parent picker counts as inside, so reaching for a
|
|
29478
|
+
* sibling wheel leaves this column coasting.
|
|
29479
|
+
*/
|
|
29480
|
+
if (path.includes(this.el) || (parentEl != null && path.includes(parentEl))) {
|
|
29481
|
+
return;
|
|
29482
|
+
}
|
|
29483
|
+
/**
|
|
29484
|
+
* Landing on the centered option halts the in-flight momentum scroll, so the
|
|
29485
|
+
* committed value and the option the user is left looking at agree. The
|
|
29486
|
+
* option list can be replaced mid-scroll, and a detached option has no
|
|
29487
|
+
* offset to center on.
|
|
29488
|
+
*/
|
|
29489
|
+
if (centeredOption !== undefined && centeredOption.isConnected) {
|
|
29490
|
+
this.centerPickerItemInView(centeredOption, false, false);
|
|
29491
|
+
this.haltedAtScrollTop = scrollEl?.scrollTop;
|
|
29492
|
+
}
|
|
29493
|
+
this.settle();
|
|
29494
|
+
};
|
|
29345
29495
|
/**
|
|
29346
29496
|
* When the column scrolls, the component
|
|
29347
29497
|
* needs to determine which item is centered
|
|
@@ -29349,27 +29499,42 @@ class PickerColumn {
|
|
|
29349
29499
|
* the item object.
|
|
29350
29500
|
*/
|
|
29351
29501
|
this.initializeScrollListener = () => {
|
|
29352
|
-
|
|
29353
|
-
* The haptics for the wheel picker are
|
|
29354
|
-
* an iOS-only feature. As a result, they should
|
|
29355
|
-
* be disabled on Android.
|
|
29356
|
-
*/
|
|
29357
|
-
const enableHaptics = isPlatform('ios');
|
|
29502
|
+
this.enableHaptics = isPlatform('ios');
|
|
29358
29503
|
const { el, scrollEl } = this;
|
|
29359
|
-
let timeout;
|
|
29360
29504
|
let activeEl = this.activeItem;
|
|
29361
29505
|
const scrollCallback = () => {
|
|
29362
29506
|
raf(() => {
|
|
29363
|
-
|
|
29507
|
+
/**
|
|
29508
|
+
* This frame cannot be cancelled, and moving the column disconnects it
|
|
29509
|
+
* without the observer reporting a change, so this checks live state.
|
|
29510
|
+
*/
|
|
29511
|
+
if (!this.el.isConnected || !this.isColumnVisible || !scrollEl)
|
|
29364
29512
|
return;
|
|
29365
|
-
|
|
29366
|
-
|
|
29367
|
-
|
|
29513
|
+
const { haltedAtScrollTop } = this;
|
|
29514
|
+
if (haltedAtScrollTop !== undefined) {
|
|
29515
|
+
/**
|
|
29516
|
+
* Still at the halted position, so this frame is the halt landing
|
|
29517
|
+
* rather than the wheel moving, and re-arming would start a second
|
|
29518
|
+
* commit cycle.
|
|
29519
|
+
*/
|
|
29520
|
+
if (Math.abs(scrollEl.scrollTop - haltedAtScrollTop) <= HALT_TOLERANCE)
|
|
29521
|
+
return;
|
|
29522
|
+
this.haltedAtScrollTop = undefined;
|
|
29368
29523
|
}
|
|
29524
|
+
// Armed before the early returns below, so a scroll never ends uncommitted.
|
|
29525
|
+
this.resetScrollEndTimeout();
|
|
29369
29526
|
if (!this.isScrolling) {
|
|
29370
|
-
enableHaptics && hapticSelectionStart();
|
|
29527
|
+
this.enableHaptics && hapticSelectionStart();
|
|
29371
29528
|
this.isScrolling = true;
|
|
29372
29529
|
}
|
|
29530
|
+
/**
|
|
29531
|
+
* Only a user-driven scroll holds an uncommitted selection. Checked every
|
|
29532
|
+
* frame because the user can take hold of the wheel mid-scroll, and
|
|
29533
|
+
* re-adding the same listener is a no-op.
|
|
29534
|
+
*/
|
|
29535
|
+
if (this.isUserScroll) {
|
|
29536
|
+
this.watchForOutsidePress();
|
|
29537
|
+
}
|
|
29373
29538
|
/**
|
|
29374
29539
|
* Select item in the center of the column
|
|
29375
29540
|
* which is the month/year that we want to select
|
|
@@ -29429,18 +29594,23 @@ class PickerColumn {
|
|
|
29429
29594
|
newActiveElement = fallbackActiveElement;
|
|
29430
29595
|
}
|
|
29431
29596
|
}
|
|
29432
|
-
|
|
29433
|
-
|
|
29434
|
-
|
|
29597
|
+
/**
|
|
29598
|
+
* A scroll can land with no selectable option centered, such as an
|
|
29599
|
+
* overscroll bounce briefly centering the empty padding rows. Keep the
|
|
29600
|
+
* current selection until an option is centered again.
|
|
29601
|
+
*/
|
|
29435
29602
|
if (newActiveElement === undefined || newActiveElement.disabled) {
|
|
29436
29603
|
return;
|
|
29437
29604
|
}
|
|
29605
|
+
if (activeEl !== undefined) {
|
|
29606
|
+
this.setPickerItemActiveState(activeEl, false);
|
|
29607
|
+
}
|
|
29438
29608
|
/**
|
|
29439
29609
|
* If we are selecting a new value,
|
|
29440
29610
|
* we need to run haptics again.
|
|
29441
29611
|
*/
|
|
29442
29612
|
if (newActiveElement !== activeEl) {
|
|
29443
|
-
enableHaptics && hapticSelectionChanged();
|
|
29613
|
+
this.enableHaptics && hapticSelectionChanged();
|
|
29444
29614
|
if (this.canExitInputMode) {
|
|
29445
29615
|
/**
|
|
29446
29616
|
* The native iOS wheel picker
|
|
@@ -29472,32 +29642,14 @@ class PickerColumn {
|
|
|
29472
29642
|
if (this.updateValueTextOnScroll) {
|
|
29473
29643
|
this.assistiveFocusable?.setAttribute('aria-valuetext', this.getOptionValueText(newActiveElement));
|
|
29474
29644
|
}
|
|
29475
|
-
|
|
29476
|
-
this.isScrolling = false;
|
|
29477
|
-
this.updateValueTextOnScroll = true;
|
|
29478
|
-
enableHaptics && hapticSelectionEnd();
|
|
29479
|
-
/**
|
|
29480
|
-
* Certain tasks (such as those that
|
|
29481
|
-
* cause re-renders) should only be done
|
|
29482
|
-
* once scrolling has finished, otherwise
|
|
29483
|
-
* flickering may occur.
|
|
29484
|
-
*/
|
|
29485
|
-
const { scrollEndCallback } = this;
|
|
29486
|
-
if (scrollEndCallback) {
|
|
29487
|
-
scrollEndCallback();
|
|
29488
|
-
this.scrollEndCallback = undefined;
|
|
29489
|
-
}
|
|
29490
|
-
/**
|
|
29491
|
-
* Reset this flag as the
|
|
29492
|
-
* next scroll interaction could
|
|
29493
|
-
* be a scroll from the user. In this
|
|
29494
|
-
* case, we should exit input mode.
|
|
29495
|
-
*/
|
|
29496
|
-
this.canExitInputMode = true;
|
|
29497
|
-
this.setValue(newActiveElement.value);
|
|
29498
|
-
}, 250);
|
|
29645
|
+
this.centeredOption = newActiveElement;
|
|
29499
29646
|
});
|
|
29500
29647
|
};
|
|
29648
|
+
const userScrollCallback = () => {
|
|
29649
|
+
this.isUserScroll = true;
|
|
29650
|
+
// Taking hold of the wheel ends the halt even if it has not moved yet.
|
|
29651
|
+
this.haltedAtScrollTop = undefined;
|
|
29652
|
+
};
|
|
29501
29653
|
/**
|
|
29502
29654
|
* Wrap this in an raf so that the scroll callback
|
|
29503
29655
|
* does not fire when component is initially shown.
|
|
@@ -29506,8 +29658,19 @@ class PickerColumn {
|
|
|
29506
29658
|
if (!scrollEl)
|
|
29507
29659
|
return;
|
|
29508
29660
|
scrollEl.addEventListener('scroll', scrollCallback);
|
|
29661
|
+
scrollEl.addEventListener('pointerdown', userScrollCallback);
|
|
29662
|
+
scrollEl.addEventListener('wheel', userScrollCallback, { passive: true });
|
|
29663
|
+
/**
|
|
29664
|
+
* A `pointerdown` fires once per touch, so a drag that pauses long enough
|
|
29665
|
+
* to commit would look like a scroll the column started. A `touchmove`
|
|
29666
|
+
* keeps arriving while the finger moves.
|
|
29667
|
+
*/
|
|
29668
|
+
scrollEl.addEventListener('touchmove', userScrollCallback, { passive: true });
|
|
29509
29669
|
this.destroyScrollListener = () => {
|
|
29510
29670
|
scrollEl.removeEventListener('scroll', scrollCallback);
|
|
29671
|
+
scrollEl.removeEventListener('pointerdown', userScrollCallback);
|
|
29672
|
+
scrollEl.removeEventListener('wheel', userScrollCallback);
|
|
29673
|
+
scrollEl.removeEventListener('touchmove', userScrollCallback);
|
|
29511
29674
|
};
|
|
29512
29675
|
});
|
|
29513
29676
|
};
|
|
@@ -29690,6 +29853,14 @@ class PickerColumn {
|
|
|
29690
29853
|
}
|
|
29691
29854
|
else {
|
|
29692
29855
|
this.isColumnVisible = false;
|
|
29856
|
+
/**
|
|
29857
|
+
* The pending timer still runs so it resets the scroll state, but the
|
|
29858
|
+
* option it would have committed is dropped. A column the user cannot
|
|
29859
|
+
* see should not change its value.
|
|
29860
|
+
*/
|
|
29861
|
+
this.stopWatchingForOutsidePress();
|
|
29862
|
+
this.centeredOption = undefined;
|
|
29863
|
+
this.haltedAtScrollTop = undefined;
|
|
29693
29864
|
if (this.destroyScrollListener) {
|
|
29694
29865
|
this.destroyScrollListener();
|
|
29695
29866
|
this.destroyScrollListener = undefined;
|
|
@@ -29760,6 +29931,13 @@ class PickerColumn {
|
|
|
29760
29931
|
connectedCallback() {
|
|
29761
29932
|
this.ariaLabel = this.el.getAttribute('aria-label') ?? 'Select a value';
|
|
29762
29933
|
}
|
|
29934
|
+
disconnectedCallback() {
|
|
29935
|
+
/**
|
|
29936
|
+
* A pending settle would otherwise commit a value on a column that is no
|
|
29937
|
+
* longer in the DOM.
|
|
29938
|
+
*/
|
|
29939
|
+
this.discardScroll();
|
|
29940
|
+
}
|
|
29763
29941
|
get activeItem() {
|
|
29764
29942
|
const { value } = this;
|
|
29765
29943
|
const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
|
|
@@ -29777,14 +29955,14 @@ class PickerColumn {
|
|
|
29777
29955
|
render() {
|
|
29778
29956
|
const { color, disabled, isActive, numericInput } = this;
|
|
29779
29957
|
const mode = getIonMode$1(this);
|
|
29780
|
-
return (hAsync(Host, { key: '
|
|
29958
|
+
return (hAsync(Host, { key: '60a893619d0b01fba53fbccef67a10d533a22657', class: createColorClasses$1(color, {
|
|
29781
29959
|
[mode]: true,
|
|
29782
29960
|
['picker-column-active']: isActive,
|
|
29783
29961
|
['picker-column-numeric-input']: numericInput,
|
|
29784
29962
|
['picker-column-disabled']: disabled,
|
|
29785
|
-
}) }, hAsync("slot", { key: '
|
|
29963
|
+
}) }, hAsync("slot", { key: '79f1e047f89c5ec916ed02efaac56ef3f73b8969', name: "prefix" }), hAsync("div", { key: 'c45c86e88353a196ff38159f40f390bc27852c9e', class: "picker-opts", ref: (el) => {
|
|
29786
29964
|
this.scrollEl = el;
|
|
29787
|
-
}, role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": this.getOptionValueText(this.activeItem), "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }, hAsync("div", { key: '
|
|
29965
|
+
}, role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": this.getOptionValueText(this.activeItem), "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }, hAsync("div", { key: 'e02d76752f5d3dd4cd2846fbc28645f1508a4b49', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'd577bcbadc530970b2781692b050811633625c5a', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'c89e78c3a896bc1f55b922d01df16fdbb1259bdd', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", { key: '6c597ff899692597432ee2aa0b42de53b86deed4' }), hAsync("div", { key: '91686ed94f14c47647836ed4d63e54b5c54ee3b9', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '2ff058c6d0e8cef4e143c2d848f9a52684579af1', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'bc7386bec6fced36e44084a7a137b3fe6506c996', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { key: '8835fd3f4e025bce964e6f05984c9aaadc20d7fb', name: "suffix" })));
|
|
29788
29966
|
}
|
|
29789
29967
|
get el() { return getElement(this); }
|
|
29790
29968
|
static get watchers() { return {
|
|
@@ -29816,6 +29994,19 @@ class PickerColumn {
|
|
|
29816
29994
|
}; }
|
|
29817
29995
|
}
|
|
29818
29996
|
const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
|
|
29997
|
+
/**
|
|
29998
|
+
* How long the column must be idle before the centered option is treated as
|
|
29999
|
+
* the user's selection. Replaceable by the `scrollend` event once that is
|
|
30000
|
+
* supported everywhere (https://caniuse.com/?search=scrollend).
|
|
30001
|
+
*/
|
|
30002
|
+
const SCROLL_END_DELAY = 250;
|
|
30003
|
+
/**
|
|
30004
|
+
* How far, in pixels, the column may report from where it was halted and still
|
|
30005
|
+
* count as having stayed there. Centering targets a position between two snap
|
|
30006
|
+
* points, so mandatory snapping corrects it by half the column height less
|
|
30007
|
+
* three option heights: 2px at the default sizes.
|
|
30008
|
+
*/
|
|
30009
|
+
const HALT_TOLERANCE = 2;
|
|
29819
30010
|
|
|
29820
30011
|
const pickerColumnOptionIosCss = () => `.picker-column-option-button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) .picker-column-option-button{cursor:default}`;
|
|
29821
30012
|
|
|
@@ -37273,11 +37464,6 @@ class SegmentButton {
|
|
|
37273
37464
|
addEventListener$1(segmentEl, 'ionSelect', this.updateState);
|
|
37274
37465
|
addEventListener$1(segmentEl, 'ionStyle', this.updateStyle);
|
|
37275
37466
|
}
|
|
37276
|
-
// Prevent buttons from being disabled when associated with segment content
|
|
37277
|
-
if (this.contentId && this.disabled) {
|
|
37278
|
-
printIonWarning(`[ion-segment-button] - Segment buttons cannot be disabled when associated with an <ion-segment-content>.`);
|
|
37279
|
-
this.disabled = false;
|
|
37280
|
-
}
|
|
37281
37467
|
}
|
|
37282
37468
|
disconnectedCallback() {
|
|
37283
37469
|
const segmentEl = this.segmentEl;
|
|
@@ -37294,6 +37480,15 @@ class SegmentButton {
|
|
|
37294
37480
|
// Return if there is no contentId defined
|
|
37295
37481
|
if (!this.contentId)
|
|
37296
37482
|
return;
|
|
37483
|
+
/**
|
|
37484
|
+
* Checked here rather than in `connectedCallback` so frameworks that assign element
|
|
37485
|
+
* props after inserting the element have set `disabled` by now. A disabled ion-segment
|
|
37486
|
+
* pushes that onto its buttons too, which this guard should not undo.
|
|
37487
|
+
*/
|
|
37488
|
+
if (this.disabled && this.segmentEl?.disabled !== true) {
|
|
37489
|
+
printIonWarning(`[ion-segment-button] - Segment buttons cannot be disabled when associated with an <ion-segment-content>.`);
|
|
37490
|
+
this.disabled = false;
|
|
37491
|
+
}
|
|
37297
37492
|
// Attempt to find the Segment Content by its contentId
|
|
37298
37493
|
const segmentContent = document.getElementById(this.contentId);
|
|
37299
37494
|
// If no associated Segment Content exists, log an error and return
|
|
@@ -37328,7 +37523,7 @@ class SegmentButton {
|
|
|
37328
37523
|
const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
|
|
37329
37524
|
const mode = getIonMode$1(this);
|
|
37330
37525
|
const hasSegmentColor = () => segmentEl?.color !== undefined;
|
|
37331
|
-
return (hAsync(Host, { key: '
|
|
37526
|
+
return (hAsync(Host, { key: 'd8acc71d87e26b32f20b2d0f9a6acc9f0dab0dee', class: {
|
|
37332
37527
|
[mode]: true,
|
|
37333
37528
|
'in-toolbar': hostContext('ion-toolbar', this.el),
|
|
37334
37529
|
'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
|
|
@@ -37344,7 +37539,7 @@ class SegmentButton {
|
|
|
37344
37539
|
'ion-activatable': true,
|
|
37345
37540
|
'ion-activatable-instant': true,
|
|
37346
37541
|
'ion-focusable': true,
|
|
37347
|
-
} }, hAsync("button", { key: '
|
|
37542
|
+
} }, hAsync("button", { key: 'ce65da07b1a012bce353b3c6c24eecfbd4071d54', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled, ...this.inheritedAttributes }, hAsync("span", { key: '6c4b4dcd20e407e5dc31674bea23633d8a09187a', class: "button-inner" }, hAsync("slot", { key: '817145ae77a3c5ada88ab95723d881f1bde96b2a' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '054d7e5e2a13013914fac6bbde8efdb28d9b459e' })), hAsync("div", { key: 'c48074881a302510ad4752eeb9383222cd3a54cb', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, hAsync("div", { key: '7672a6b10ee18ad026b798fbd8207dc3cd5683f9', part: "indicator-background", class: "segment-button-indicator-background" }))));
|
|
37348
37543
|
}
|
|
37349
37544
|
get el() { return getElement(this); }
|
|
37350
37545
|
static get watchers() { return {
|
|
@@ -38388,7 +38583,7 @@ class Select {
|
|
|
38388
38583
|
const hasOutlineFill = mode === 'md' && fill === 'outline';
|
|
38389
38584
|
renderHiddenInput(true, el, name, parseValue(value), disabled);
|
|
38390
38585
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || isExpanded));
|
|
38391
|
-
return (hAsync(Host, { key: '
|
|
38586
|
+
return (hAsync(Host, { key: 'b2f161e3706e139e61440cd13e162714b1b75d72', onClick: this.onClick, class: createColorClasses$1(this.color, {
|
|
38392
38587
|
[mode]: true,
|
|
38393
38588
|
'in-item': inItem,
|
|
38394
38589
|
'in-item-color': hostContext('ion-item.ion-color', el),
|
|
@@ -38406,7 +38601,7 @@ class Select {
|
|
|
38406
38601
|
[`select-justify-${justify}`]: justifyEnabled,
|
|
38407
38602
|
[`select-shape-${shape}`]: shape !== undefined,
|
|
38408
38603
|
[`select-label-placement-${labelPlacement}`]: true,
|
|
38409
|
-
}) }, hAsync("label", { key: '
|
|
38604
|
+
}) }, hAsync("label", { key: '944a2eb468154a21260d181fdaf67828a71eb902', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, hasOutlineFill && this.renderOutlineContainer(), hAsync("div", { key: '927200c53548b1bb4f52d6a167605b724a7b7d0d', class: "select-start", part: "start", ref: (el) => (this.startContainerEl = el) }, hAsync("slot", { key: '6e14b95e9b95c116b16744d630600e90977782bc', name: "start" })), hAsync("div", { key: '8451ed4300ac005963075be36a04ea8763bc0fdd', class: "select-control", part: "control" }, this.renderLabel(), hAsync("div", { key: '207e7b63f3224a4870579365ac992da6784fb31f', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox(), !hasFloatingOrStackedLabel && this.renderSelectIcon())), hAsync("div", { key: '5c17367d488db4d570f31b25e33560efa9011500', class: "select-end", part: "end" }, hasFloatingOrStackedLabel && this.renderSelectIcon(), hAsync("slot", { key: '21fd8c0d9bee8cffef9ef6984cacd31e8f38211c', name: "end" })), shouldRenderHighlight && hAsync("div", { key: '1fff767db9a1ec07b274ef65ff7ae8fb976e6ad2', class: "select-highlight" })), this.renderBottomContent()));
|
|
38410
38605
|
}
|
|
38411
38606
|
get el() { return getElement(this); }
|
|
38412
38607
|
static get watchers() { return {
|
|
@@ -38515,29 +38710,14 @@ const textForValue = (opts, value, compareWith, useHTML = false) => {
|
|
|
38515
38710
|
return getOptionContent(selectOpt, undefined, true);
|
|
38516
38711
|
}
|
|
38517
38712
|
/**
|
|
38518
|
-
*
|
|
38519
|
-
*
|
|
38520
|
-
* the
|
|
38713
|
+
* Every text-only context reads only the default slot, so the start
|
|
38714
|
+
* and end slots stay out of the `aria-label` and the overlay labels.
|
|
38715
|
+
* Both config paths derive that text through the same helper, so they
|
|
38716
|
+
* cannot disagree about what an option's text is. `null` marks an
|
|
38717
|
+
* option with no text, which is dropped from the joined text of a
|
|
38718
|
+
* `multiple` select rather than joined in as an empty entry.
|
|
38521
38719
|
*/
|
|
38522
|
-
|
|
38523
|
-
const content = getOptionContent(selectOpt);
|
|
38524
|
-
if (typeof content === 'string') {
|
|
38525
|
-
return content;
|
|
38526
|
-
}
|
|
38527
|
-
/**
|
|
38528
|
-
* Elements were found in the default slot, extract and concatenate
|
|
38529
|
-
* their text content while trimming whitespace.
|
|
38530
|
-
*/
|
|
38531
|
-
if (content) {
|
|
38532
|
-
const texts = Array.from(content.childNodes)
|
|
38533
|
-
.map((n) => n.textContent?.trim())
|
|
38534
|
-
.filter((t) => t);
|
|
38535
|
-
return texts.join(' ') || null;
|
|
38536
|
-
}
|
|
38537
|
-
// Empty option
|
|
38538
|
-
return null;
|
|
38539
|
-
}
|
|
38540
|
-
return getDefaultSlotPlainText(selectOpt);
|
|
38720
|
+
return getDefaultSlotPlainText(selectOpt) || null;
|
|
38541
38721
|
};
|
|
38542
38722
|
/**
|
|
38543
38723
|
* Trims whitespace from all text nodes within a DOM tree.
|
|
@@ -38593,9 +38773,13 @@ const getOptionContent = (option, slotName, useHTML = false) => {
|
|
|
38593
38773
|
if (nodes.length === 0) {
|
|
38594
38774
|
return null;
|
|
38595
38775
|
}
|
|
38596
|
-
|
|
38776
|
+
/**
|
|
38777
|
+
* Return plain text if no elements are found. This reads the option the
|
|
38778
|
+
* same way the non-custom-HTML path does, so the two do not disagree
|
|
38779
|
+
* about what an option's text is.
|
|
38780
|
+
*/
|
|
38597
38781
|
if (!slotName && nodes.every((n) => n.nodeType === Node.TEXT_NODE)) {
|
|
38598
|
-
return
|
|
38782
|
+
return getDefaultSlotPlainText(option) || null;
|
|
38599
38783
|
}
|
|
38600
38784
|
/**
|
|
38601
38785
|
* Mirror known custom-element properties (e.g. ion-icon's `icon`)
|
|
@@ -38651,22 +38835,43 @@ const getOptionDefaultSlot = (option) => {
|
|
|
38651
38835
|
}
|
|
38652
38836
|
return defaultSlotNodes;
|
|
38653
38837
|
};
|
|
38838
|
+
/**
|
|
38839
|
+
* Concatenates the text a node renders, skipping the subtrees of tags
|
|
38840
|
+
* whose contents the browser never paints (`script`, `style`, and the
|
|
38841
|
+
* rest of `blockedTags`). `textContent` includes those, so reading it
|
|
38842
|
+
* directly would put stylesheet or script source into the select text
|
|
38843
|
+
* and the `aria-label`.
|
|
38844
|
+
*
|
|
38845
|
+
* @param node - The node to read text from.
|
|
38846
|
+
* @returns The node's rendered text.
|
|
38847
|
+
*/
|
|
38848
|
+
const getRenderedTextContent = (node) => {
|
|
38849
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
38850
|
+
return node.textContent ?? '';
|
|
38851
|
+
}
|
|
38852
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
38853
|
+
return '';
|
|
38854
|
+
}
|
|
38855
|
+
if (blockedTags.includes(node.tagName.toLowerCase())) {
|
|
38856
|
+
return '';
|
|
38857
|
+
}
|
|
38858
|
+
return Array.from(node.childNodes)
|
|
38859
|
+
.map((child) => getRenderedTextContent(child))
|
|
38860
|
+
.join('');
|
|
38861
|
+
};
|
|
38654
38862
|
/**
|
|
38655
38863
|
* Extracts plain text from only the default slot of an option,
|
|
38656
|
-
* excluding content assigned to named slots (start/end).
|
|
38864
|
+
* excluding content assigned to named slots (start/end). Text is
|
|
38865
|
+
* concatenated with no separator and collapsible whitespace is
|
|
38866
|
+
* collapsed, approximating how the browser renders the option.
|
|
38867
|
+
* NBSP is not collapsible, so it is preserved.
|
|
38868
|
+
*
|
|
38869
|
+
* @param option - The `ion-select-option` element to read text from.
|
|
38870
|
+
* @returns The option's default slot text.
|
|
38657
38871
|
*/
|
|
38658
38872
|
const getDefaultSlotPlainText = (option) => {
|
|
38659
|
-
const
|
|
38660
|
-
|
|
38661
|
-
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
38662
|
-
return !node.hasAttribute('slot');
|
|
38663
|
-
}
|
|
38664
|
-
return node.nodeType === Node.TEXT_NODE;
|
|
38665
|
-
})
|
|
38666
|
-
.filter((node) => node.nodeType === Node.TEXT_NODE)
|
|
38667
|
-
.map((n) => n.textContent?.trim())
|
|
38668
|
-
.filter((t) => t);
|
|
38669
|
-
return texts.join(' ');
|
|
38873
|
+
const text = (getOptionDefaultSlot(option) ?? []).map((node) => getRenderedTextContent(node)).join('');
|
|
38874
|
+
return text.replace(/[ \t\n\r\f]+/g, ' ').replace(/^[ \t\n\r\f]+|[ \t\n\r\f]+$/g, '');
|
|
38670
38875
|
};
|
|
38671
38876
|
/**
|
|
38672
38877
|
* Extracts the rich content from an `ion-select-option`.
|
|
@@ -42742,7 +42947,7 @@ var NAMESPACE = (
|
|
|
42742
42947
|
);
|
|
42743
42948
|
|
|
42744
42949
|
/*
|
|
42745
|
-
Stencil Hydrate Runner v4.
|
|
42950
|
+
Stencil Hydrate Runner v4.44.1 | MIT Licensed | https://stenciljs.com
|
|
42746
42951
|
*/
|
|
42747
42952
|
var __create = Object.create;
|
|
42748
42953
|
var __defProp = Object.defineProperty;
|