@ionic/core 9.0.1-dev.11787248963.10a00c73 → 9.0.1-dev.11787949960.1e63841c
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-C8Tp0cQy.js +4 -0
- 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-CVNvmbDp.js +4 -0
- 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-CaiZOhfC.js → p-CuS0-WwK.js} +1 -1
- package/components/{p-Bnc0m4SW.js → p-CxiXpCtB.js} +1 -1
- package/components/{p-BFtL8t1r.js → p-CyKlfXdt.js} +1 -1
- package/components/p-D2XJVty5.js +4 -0
- package/components/p-DALTMT_o.js +4 -0
- 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-B6x5_b9w.js → p-DkEb3SCT.js} +1 -1
- package/components/p-Dr-rBSUW.js +4 -0
- package/components/p-MHpJ2A_m.js +4 -0
- package/components/p-N6lZFXYR.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-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/components/p-z-BF3clL.js +4 -0
- package/css/core.css +1 -1
- package/css/core.css.map +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- 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 +45 -29
- package/dist/cjs/ion-alert.cjs.entry.js +29 -21
- package/dist/cjs/ion-app_8.cjs.entry.js +38 -16
- 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 +4 -4
- package/dist/cjs/ion-item_8.cjs.entry.js +3 -3
- package/dist/cjs/ion-loading.cjs.entry.js +14 -10
- package/dist/cjs/ion-menu_3.cjs.entry.js +8 -8
- package/dist/cjs/ion-modal.cjs.entry.js +85 -32
- 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 +23 -10
- 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 +3 -3
- 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-HN9joo1Z.js} +59 -34
- 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/action-sheet/action-sheet.js +36 -20
- package/dist/collection/components/alert/alert.js +20 -12
- package/dist/collection/components/content/content.js +26 -4
- package/dist/collection/components/datetime/datetime.js +25 -17
- package/dist/collection/components/loading/loading.js +7 -3
- package/dist/collection/components/modal/modal.ios.css +12 -1
- package/dist/collection/components/modal/modal.js +75 -22
- package/dist/collection/components/modal/modal.md.css +12 -1
- package/dist/collection/components/picker-column/picker-column.js +207 -43
- package/dist/collection/components/popover/popover.js +16 -3
- package/dist/collection/components/select/select.js +49 -39
- package/dist/collection/utils/overlays.js +53 -29
- package/dist/collection/utils/test/playwright/detach-reattach.js +23 -0
- package/dist/collection/utils/test/playwright/index.js +1 -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 +45 -29
- package/dist/esm/ion-alert.entry.js +29 -21
- package/dist/esm/ion-app_8.entry.js +38 -16
- 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 +4 -4
- package/dist/esm/ion-item_8.entry.js +3 -3
- package/dist/esm/ion-loading.entry.js +14 -10
- package/dist/esm/ion-menu_3.entry.js +8 -8
- package/dist/esm/ion-modal.entry.js +85 -32
- 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 +23 -10
- 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 +3 -3
- 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-Dz2cGX5q.js} +59 -35
- 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-010601fe.entry.js +4 -0
- package/dist/ionic/{p-05800a02.entry.js → p-025763b2.entry.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-0c2b3555.entry.js +4 -0
- 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-5b906fd6.entry.js → p-326e0d05.entry.js} +1 -1
- package/dist/ionic/p-392079fa.entry.js +4 -0
- package/dist/ionic/{p-6f048604.entry.js → p-43bae3f5.entry.js} +1 -1
- package/dist/ionic/p-4778b90f.entry.js +4 -0
- package/dist/ionic/{p-d3384a40.entry.js → p-47b8b59a.entry.js} +1 -1
- 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-639d3b55.entry.js +4 -0
- package/dist/ionic/{p-ddfb7e5f.entry.js → p-6d84fa9f.entry.js} +1 -1
- package/dist/ionic/{p-72ad7c64.entry.js → p-7c859f42.entry.js} +1 -1
- package/dist/ionic/p-7dec112e.entry.js +4 -0
- 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-9e455875.entry.js → p-8e388a30.entry.js} +1 -1
- package/dist/ionic/{p-75887ee0.entry.js → p-90e06e60.entry.js} +1 -1
- package/dist/ionic/{p-b5f37106.entry.js → p-9452849d.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/dist/ionic/p-9fef333a.entry.js +4 -0
- 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-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-b8cd338d.entry.js +4 -0
- package/dist/ionic/{p-873a315a.entry.js → p-bdc01880.entry.js} +1 -1
- 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-d85e59b1.entry.js +4 -0
- package/dist/ionic/p-dad2f3e4.entry.js +4 -0
- package/dist/ionic/{p-70ee8888.entry.js → p-dadcb3d2.entry.js} +1 -1
- package/dist/ionic/{p-c49165af.entry.js → p-e93cc1e1.entry.js} +1 -1
- package/dist/ionic/{p-f7dd1ed9.entry.js → p-eab77a74.entry.js} +1 -1
- 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-nxFQkv7U.js +4 -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/action-sheet/action-sheet.d.ts +10 -0
- package/dist/types/components/alert/alert.d.ts +7 -0
- package/dist/types/components/content/content.d.ts +7 -0
- package/dist/types/components/modal/modal.d.ts +8 -0
- 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/dist/types/utils/overlays.d.ts +9 -0
- package/dist/types/utils/test/playwright/detach-reattach.d.ts +13 -0
- package/dist/types/utils/test/playwright/index.d.ts +1 -0
- package/hydrate/index.js +538 -195
- package/hydrate/index.mjs +538 -195
- 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-Bg4OwDwb.js +0 -4
- package/components/p-BxhE2W85.js +0 -4
- package/components/p-CHswSpKy.js +0 -4
- package/components/p-CQAjyETU.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-DqAI6tg7.js +0 -4
- package/components/p-DrehWDfv.js +0 -4
- package/components/p-HVYBAhFx.js +0 -4
- package/components/p-eFI3mtEX.js +0 -4
- package/dist/ionic/p-0eb50dca.entry.js +0 -4
- package/dist/ionic/p-18d532a3.entry.js +0 -4
- package/dist/ionic/p-34b9379b.entry.js +0 -4
- package/dist/ionic/p-4437015c.entry.js +0 -4
- package/dist/ionic/p-48c859fe.entry.js +0 -4
- package/dist/ionic/p-49b9d405.entry.js +0 -4
- package/dist/ionic/p-68507e70.entry.js +0 -4
- package/dist/ionic/p-886d9e66.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-DdhHqKj-.js +0 -4
- package/dist/ionic/p-DgUL3JbO.js +0 -4
- package/dist/ionic/p-b7a11b58.entry.js +0 -4
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
6
|
var index$1 = require('./index-DkNv4J_i.js');
|
|
7
|
-
var helpers = require('./helpers-
|
|
8
|
-
var hardwareBackButton = require('./hardware-back-button-
|
|
9
|
-
var index = require('./index-
|
|
10
|
-
var ionicGlobal = require('./ionic-global-
|
|
11
|
-
var frameworkDelegate = require('./framework-delegate-
|
|
7
|
+
var helpers = require('./helpers-BCLkFTTd.js');
|
|
8
|
+
var hardwareBackButton = require('./hardware-back-button-D5f_kASb.js');
|
|
9
|
+
var index = require('./index-Bgz6BcKx.js');
|
|
10
|
+
var ionicGlobal = require('./ionic-global-BMU-Us1Q.js');
|
|
11
|
+
var frameworkDelegate = require('./framework-delegate-DhyWUPGg.js');
|
|
12
12
|
var gestureController = require('./gesture-controller-CeJslptU.js');
|
|
13
13
|
|
|
14
14
|
/**
|
|
@@ -102,6 +102,15 @@ const activeAnimations = new WeakMap();
|
|
|
102
102
|
const isBackdropAlwaysBlocking = (el) => {
|
|
103
103
|
return el.showBackdrop !== false && !((el.backdropBreakpoint ?? 0) > 0);
|
|
104
104
|
};
|
|
105
|
+
/**
|
|
106
|
+
* Whether the overlay takes the app root out of the accessibility tree and
|
|
107
|
+
* blocks body scroll while presented. Toasts never do, modal and popover can
|
|
108
|
+
* opt out with `focusTrap={false}`, and a backdrop that does not block
|
|
109
|
+
* (`showBackdrop={false}`, or a `backdropBreakpoint` above 0) is excluded.
|
|
110
|
+
*/
|
|
111
|
+
const locksAppRoot = (el) => {
|
|
112
|
+
return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && isBackdropAlwaysBlocking(el);
|
|
113
|
+
};
|
|
105
114
|
const createController = (tagName) => {
|
|
106
115
|
return {
|
|
107
116
|
create(options) {
|
|
@@ -472,6 +481,13 @@ const getPresentedOverlay = (doc, overlayTag, id) => {
|
|
|
472
481
|
// Otherwise, return the last overlay with the given id
|
|
473
482
|
return (id === undefined ? overlays : overlays.filter((o) => o.id === id)).slice(-1)[0];
|
|
474
483
|
};
|
|
484
|
+
/**
|
|
485
|
+
* The element an app nests its views under. Overlays hide this rather than the
|
|
486
|
+
* whole root, so the overlay itself (a sibling) stays reachable.
|
|
487
|
+
*/
|
|
488
|
+
const getViewContainer = () => {
|
|
489
|
+
return getAppRoot(document).querySelector('ion-router-outlet, #ion-view-container-root');
|
|
490
|
+
};
|
|
475
491
|
/**
|
|
476
492
|
* When an overlay is presented, the main
|
|
477
493
|
* focus is the overlay not the page content.
|
|
@@ -495,8 +511,7 @@ const getPresentedOverlay = (doc, overlayTag, id) => {
|
|
|
495
511
|
* for main content.
|
|
496
512
|
*/
|
|
497
513
|
const setRootAriaHidden = (hidden = false) => {
|
|
498
|
-
const
|
|
499
|
-
const viewContainer = root.querySelector('ion-router-outlet, #ion-view-container-root');
|
|
514
|
+
const viewContainer = getViewContainer();
|
|
500
515
|
if (!viewContainer) {
|
|
501
516
|
return;
|
|
502
517
|
}
|
|
@@ -521,15 +536,42 @@ const cleanupRootFocusTrapAccessibility = () => {
|
|
|
521
536
|
return;
|
|
522
537
|
}
|
|
523
538
|
const remainingOverlays = getPresentedOverlays(document);
|
|
524
|
-
const hasRemainingLocking = remainingOverlays.some((o) =>
|
|
525
|
-
const el = o;
|
|
526
|
-
return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && isBackdropAlwaysBlocking(el);
|
|
527
|
-
});
|
|
539
|
+
const hasRemainingLocking = remainingOverlays.some((o) => locksAppRoot(o));
|
|
528
540
|
if (!hasRemainingLocking) {
|
|
529
541
|
setRootAriaHidden(false);
|
|
530
542
|
document.body.classList.remove(gestureController.BACKDROP_NO_SCROLL);
|
|
531
543
|
}
|
|
532
544
|
};
|
|
545
|
+
/**
|
|
546
|
+
* Applies the root lock itself: `aria-hidden` on the view container, and
|
|
547
|
+
* `backdrop-no-scroll` on the body. Shared by `present()` and the restore
|
|
548
|
+
* below, which have to stay in lockstep.
|
|
549
|
+
*/
|
|
550
|
+
const applyRootLock = (el) => {
|
|
551
|
+
// Hiding the container the overlay now sits in would hide the overlay too.
|
|
552
|
+
if (!getViewContainer()?.contains(el)) {
|
|
553
|
+
setRootAriaHidden(true);
|
|
554
|
+
}
|
|
555
|
+
document.body.classList.add(gestureController.BACKDROP_NO_SCROLL);
|
|
556
|
+
};
|
|
557
|
+
/**
|
|
558
|
+
* Re-applies the root lock that `cleanupRootFocusTrapAccessibility()` released.
|
|
559
|
+
* Call from `connectedCallback` when the overlay is still presented.
|
|
560
|
+
*
|
|
561
|
+
* A synchronous move keeps the overlay connected, so the lock survives. A
|
|
562
|
+
* detach with a re-insert in a later task releases it, which is the shape a
|
|
563
|
+
* framework produces when it takes a subtree out and puts it back.
|
|
564
|
+
*/
|
|
565
|
+
const restoreRootFocusTrapAccessibility = (overlayEl) => {
|
|
566
|
+
if (typeof document === 'undefined') {
|
|
567
|
+
return;
|
|
568
|
+
}
|
|
569
|
+
const el = overlayEl;
|
|
570
|
+
if (!locksAppRoot(el)) {
|
|
571
|
+
return;
|
|
572
|
+
}
|
|
573
|
+
applyRootLock(el);
|
|
574
|
+
};
|
|
533
575
|
const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts) => {
|
|
534
576
|
if (overlay.presented) {
|
|
535
577
|
return;
|
|
@@ -546,15 +588,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
546
588
|
restoreElementFocus(overlay.el);
|
|
547
589
|
}
|
|
548
590
|
/**
|
|
549
|
-
*
|
|
550
|
-
* focus traps.
|
|
551
|
-
*
|
|
552
|
-
* All other overlays should have focus traps to prevent
|
|
553
|
-
* the keyboard focus from leaving the overlay unless
|
|
554
|
-
* developers explicitly opt out (for example, sheet
|
|
555
|
-
* modals that should permit background interaction).
|
|
556
|
-
*
|
|
557
|
-
* Note: Some apps move inline overlays to a specific container
|
|
591
|
+
* Some apps move inline overlays to a specific container
|
|
558
592
|
* during the willPresent lifecycle (e.g., React portals via
|
|
559
593
|
* onWillPresent). Defer applying aria-hidden/inert to the app
|
|
560
594
|
* root until after willPresent so we can detect where the
|
|
@@ -563,18 +597,11 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
563
597
|
* to avoid disabling the overlay.
|
|
564
598
|
*/
|
|
565
599
|
const overlayEl = overlay.el;
|
|
566
|
-
const
|
|
567
|
-
const shouldLockRoot = shouldTrapFocus && isBackdropAlwaysBlocking(overlayEl);
|
|
600
|
+
const shouldLockRoot = locksAppRoot(overlayEl);
|
|
568
601
|
overlay.presented = true;
|
|
569
602
|
overlay.willPresent.emit();
|
|
570
603
|
if (shouldLockRoot) {
|
|
571
|
-
|
|
572
|
-
const viewContainer = root.querySelector('ion-router-outlet, #ion-view-container-root');
|
|
573
|
-
const overlayInsideViewContainer = viewContainer ? viewContainer.contains(overlayEl) : false;
|
|
574
|
-
if (!overlayInsideViewContainer) {
|
|
575
|
-
setRootAriaHidden(true);
|
|
576
|
-
}
|
|
577
|
-
document.body.classList.add(gestureController.BACKDROP_NO_SCROLL);
|
|
604
|
+
applyRootLock(overlayEl);
|
|
578
605
|
}
|
|
579
606
|
overlay.willPresentShorthand?.emit();
|
|
580
607
|
const mode = ionicGlobal.getIonMode(overlay);
|
|
@@ -700,12 +727,9 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
|
|
|
700
727
|
* from the root element when the last focus-trapping overlay
|
|
701
728
|
* is dismissed.
|
|
702
729
|
*/
|
|
703
|
-
const overlaysLockingRoot = presentedOverlays.filter((o) =>
|
|
704
|
-
const el = o;
|
|
705
|
-
return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && isBackdropAlwaysBlocking(el);
|
|
706
|
-
});
|
|
730
|
+
const overlaysLockingRoot = presentedOverlays.filter((o) => locksAppRoot(o));
|
|
707
731
|
const overlayEl = overlay.el;
|
|
708
|
-
const locksRoot =
|
|
732
|
+
const locksRoot = locksAppRoot(overlayEl);
|
|
709
733
|
/**
|
|
710
734
|
* If this is the last visible overlay that is trapping focus
|
|
711
735
|
* then we want to re-add the root to the accessibility tree.
|
|
@@ -972,6 +996,7 @@ exports.modalController = modalController;
|
|
|
972
996
|
exports.popoverController = popoverController;
|
|
973
997
|
exports.prepareOverlay = prepareOverlay;
|
|
974
998
|
exports.present = present;
|
|
999
|
+
exports.restoreRootFocusTrapAccessibility = restoreRootFocusTrapAccessibility;
|
|
975
1000
|
exports.safeCall = safeCall;
|
|
976
1001
|
exports.setOverlayId = setOverlayId;
|
|
977
1002
|
exports.toastController = toastController;
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var index = require('./index-
|
|
7
|
-
var index$1 = require('./index-
|
|
6
|
+
var index = require('./index-Bgz6BcKx.js');
|
|
7
|
+
var index$1 = require('./index-BocV_y-c.js');
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Converts a DOM node into a Stencil VNode (or text string) so the
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var index = require('./index-
|
|
7
|
-
var index$1 = require('./index-
|
|
8
|
-
var helpers = require('./helpers-
|
|
6
|
+
var index = require('./index-Bgz6BcKx.js');
|
|
7
|
+
var index$1 = require('./index-49DTLc_Z.js');
|
|
8
|
+
var helpers = require('./helpers-BCLkFTTd.js');
|
|
9
9
|
require('./dir-zwDPRE5K.js');
|
|
10
10
|
|
|
11
11
|
const startStatusTap = () => {
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var helpers = require('./helpers-
|
|
6
|
+
var helpers = require('./helpers-BCLkFTTd.js');
|
|
7
7
|
var dir = require('./dir-zwDPRE5K.js');
|
|
8
8
|
var index = require('./index-DRPqwSvU.js');
|
|
9
|
-
require('./index-
|
|
9
|
+
require('./index-Bgz6BcKx.js');
|
|
10
10
|
require('./gesture-controller-CeJslptU.js');
|
|
11
11
|
|
|
12
12
|
const createSwipeBackGesture = (el, canStartHandler, onStartHandler, onMoveHandler, onEndHandler) => {
|
|
@@ -5,7 +5,7 @@ import { Host, h, readTask } from "@stencil/core";
|
|
|
5
5
|
import { createButtonActiveGesture } from "../../utils/gesture/button-active";
|
|
6
6
|
import { raf } from "../../utils/helpers";
|
|
7
7
|
import { createLockController } from "../../utils/lock-controller";
|
|
8
|
-
import { BACKDROP, cleanupRootFocusTrapAccessibility, createDelegateController, createTriggerController, dismiss, eventMethod, isCancel, prepareOverlay, present, safeCall, setOverlayId, } from "../../utils/overlays";
|
|
8
|
+
import { BACKDROP, cleanupRootFocusTrapAccessibility, createDelegateController, createTriggerController, dismiss, eventMethod, isCancel, prepareOverlay, present, restoreRootFocusTrapAccessibility, safeCall, setOverlayId, } from "../../utils/overlays";
|
|
9
9
|
import { renderOptionLabel } from "../../utils/select-option-render";
|
|
10
10
|
import { getClassMap } from "../../utils/theme";
|
|
11
11
|
import { getIonMode } from "../../global/ionic-global";
|
|
@@ -277,6 +277,13 @@ export class ActionSheet {
|
|
|
277
277
|
connectedCallback() {
|
|
278
278
|
prepareOverlay(this.el);
|
|
279
279
|
this.triggerChanged();
|
|
280
|
+
// `componentDidLoad` only fires once per instance, so a reconnect has to
|
|
281
|
+
// rebuild the gesture its disconnect destroyed.
|
|
282
|
+
this.setupButtonActiveGesture();
|
|
283
|
+
// Re-apply the root lock if moved without dismiss() being called
|
|
284
|
+
if (this.presented) {
|
|
285
|
+
restoreRootFocusTrapAccessibility(this.el);
|
|
286
|
+
}
|
|
280
287
|
}
|
|
281
288
|
disconnectedCallback() {
|
|
282
289
|
if (this.gesture) {
|
|
@@ -296,24 +303,33 @@ export class ActionSheet {
|
|
|
296
303
|
// Initialize activeRadioId for radio buttons
|
|
297
304
|
this.buttonsChanged();
|
|
298
305
|
}
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
306
|
+
/**
|
|
307
|
+
* Only create gesture if:
|
|
308
|
+
* 1. A gesture does not already exist
|
|
309
|
+
* 2. App is running in iOS mode
|
|
310
|
+
* 3. A wrapper ref exists
|
|
311
|
+
* 4. A group ref exists
|
|
312
|
+
* 5. The host is still connected, since a reconnect can schedule this and
|
|
313
|
+
* disconnect again before the task runs
|
|
314
|
+
*/
|
|
315
|
+
setupButtonActiveGesture() {
|
|
307
316
|
const { groupEl, wrapperEl } = this;
|
|
308
|
-
if (
|
|
309
|
-
|
|
310
|
-
const isScrollable = groupEl.scrollHeight > groupEl.clientHeight;
|
|
311
|
-
if (!isScrollable) {
|
|
312
|
-
this.gesture = createButtonActiveGesture(wrapperEl, (refEl) => refEl.classList.contains('action-sheet-button'));
|
|
313
|
-
this.gesture.enable(true);
|
|
314
|
-
}
|
|
315
|
-
});
|
|
317
|
+
if (getIonMode(this) !== 'ios' || !wrapperEl || !groupEl) {
|
|
318
|
+
return;
|
|
316
319
|
}
|
|
320
|
+
readTask(() => {
|
|
321
|
+
// Bail if a call queued ahead of this one already built the gesture
|
|
322
|
+
// (a second would orphan the first with its listeners still bound), if
|
|
323
|
+
// the host disconnected while this task waited, or if the group scrolls.
|
|
324
|
+
if (this.gesture || !this.el.isConnected || groupEl.scrollHeight > groupEl.clientHeight) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
this.gesture = createButtonActiveGesture(wrapperEl, (refEl) => refEl.classList.contains('action-sheet-button'));
|
|
328
|
+
this.gesture.enable(true);
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
componentDidLoad() {
|
|
332
|
+
this.setupButtonActiveGesture();
|
|
317
333
|
/**
|
|
318
334
|
* If action sheet was rendered with isOpen="true"
|
|
319
335
|
* then we should open action sheet immediately.
|
|
@@ -406,17 +422,17 @@ export class ActionSheet {
|
|
|
406
422
|
const cancelButton = allButtons.find((b) => b.role === 'cancel');
|
|
407
423
|
const buttons = allButtons.filter((b) => b.role !== 'cancel');
|
|
408
424
|
const headerID = `action-sheet-${overlayIndex}-header`;
|
|
409
|
-
return (h(Host, { key: '
|
|
425
|
+
return (h(Host, { key: '83b47ea6b81d4eec6582c1dcaae6f267c78ba634', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1", ...htmlAttributes, style: {
|
|
410
426
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
411
427
|
}, class: {
|
|
412
428
|
[mode]: true,
|
|
413
429
|
...getClassMap(this.cssClass),
|
|
414
430
|
'overlay-hidden': true,
|
|
415
431
|
'action-sheet-translucent': this.translucent,
|
|
416
|
-
}, onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, h("ion-backdrop", { key: '
|
|
432
|
+
}, onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, h("ion-backdrop", { key: '3652793ec76adcfb87b814eb65d1260ae26f6910', tappable: this.backdropDismiss }), h("div", { key: '7de3a51daf95b50e02734a2cc8eec6f55b1473f3', tabindex: "0", "aria-hidden": "true" }), h("div", { key: '9b76bbf12901b956f7ee6d984f7f71e169bb5939', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, h("div", { key: 'cb52c905275a46ff27810fb1b4748ab533a78c45', class: "action-sheet-container" }, h("div", { key: '578c7194cfbcb65c1e41e15c390af41f179a2686', class: "action-sheet-group", ref: (el) => (this.groupEl = el), role: hasRadioButtons ? 'radiogroup' : undefined }, header !== undefined && (h("div", { key: 'ee961307c25cb1fcb0c6bbf667a8ed76ab717860', id: headerID, class: {
|
|
417
433
|
'action-sheet-title': true,
|
|
418
434
|
'action-sheet-has-sub-title': this.subHeader !== undefined,
|
|
419
|
-
} }, header, this.subHeader && h("div", { key: '
|
|
435
|
+
} }, header, this.subHeader && h("div", { key: '82d4016010db14d3f3b9911c276cb9a63b960ef4', class: "action-sheet-sub-title" }, this.subHeader))), this.renderActionSheetButtons(buttons)), cancelButton && (h("div", { key: 'a88fbfab194e13c6642a65f2e19a12299dd4ac23', class: "action-sheet-group action-sheet-group-cancel" }, h("button", { key: 'a232b8d23f1fc2efb7b37a605102b6994761a2f6', ...cancelButton.htmlAttributes, type: "button", class: buttonClass(cancelButton), onClick: () => this.buttonClick(cancelButton) }, h("span", { key: '19a7d95d3428d78a56b7dacabdec8fc0b722d8c2', class: "action-sheet-button-inner" }, cancelButton.icon && (h("ion-icon", { key: '5f3f3cb996a48e6365a3a09ea72ddc68ac9ccb78', icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), mode === 'md' && h("ion-ripple-effect", { key: '6e8fcb5f103ac19aa4b0682f19791cef0a147001' })))))), h("div", { key: '36f63ab77949c88f662e2cf6bb18510cb9de6a9f', tabindex: "0", "aria-hidden": "true" })));
|
|
420
436
|
}
|
|
421
437
|
static get is() { return "ion-action-sheet"; }
|
|
422
438
|
static get encapsulation() { return "scoped"; }
|
|
@@ -8,7 +8,7 @@ import { raf } from "../../utils/helpers";
|
|
|
8
8
|
import { createLockController } from "../../utils/lock-controller";
|
|
9
9
|
import { printIonWarning } from "../../utils/logging/index";
|
|
10
10
|
import { getOverlayLabelJustify, getOverlayLabelPlacement } from "../../utils/overlay-control-label";
|
|
11
|
-
import { BACKDROP, cleanupRootFocusTrapAccessibility, createDelegateController, createTriggerController, dismiss, eventMethod, isCancel, prepareOverlay, present, safeCall, setOverlayId, } from "../../utils/overlays";
|
|
11
|
+
import { BACKDROP, cleanupRootFocusTrapAccessibility, createDelegateController, createTriggerController, dismiss, eventMethod, isCancel, prepareOverlay, present, restoreRootFocusTrapAccessibility, safeCall, setOverlayId, } from "../../utils/overlays";
|
|
12
12
|
import { sanitizeDOMString } from "../../utils/sanitization/index";
|
|
13
13
|
import { renderOptionLabel } from "../../utils/select-option-render";
|
|
14
14
|
import { getClassMap } from "../../utils/theme";
|
|
@@ -198,10 +198,15 @@ export class Alert {
|
|
|
198
198
|
this.triggerChanged();
|
|
199
199
|
/**
|
|
200
200
|
* If the alert was previously connected and is being reattached, the
|
|
201
|
-
* ResizeObserver
|
|
202
|
-
* instance, so re-establish
|
|
201
|
+
* `ResizeObserver` and the button gesture were torn down. `componentDidLoad`
|
|
202
|
+
* only fires once per instance, so re-establish both here on reconnect.
|
|
203
203
|
*/
|
|
204
204
|
this.setupButtonGroupResizeObserver();
|
|
205
|
+
this.setupButtonActiveGesture();
|
|
206
|
+
// Re-apply the root lock if moved without dismiss() being called
|
|
207
|
+
if (this.presented) {
|
|
208
|
+
restoreRootFocusTrapAccessibility(this.el);
|
|
209
|
+
}
|
|
205
210
|
}
|
|
206
211
|
componentWillLoad() {
|
|
207
212
|
if (!this.htmlAttributes?.id) {
|
|
@@ -223,17 +228,20 @@ export class Alert {
|
|
|
223
228
|
this.buttonGroupResizeObserver?.disconnect();
|
|
224
229
|
this.buttonGroupResizeObserver = undefined;
|
|
225
230
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
231
|
+
/**
|
|
232
|
+
* Only create gesture if:
|
|
233
|
+
* 1. A gesture does not already exist
|
|
234
|
+
* 2. App is running in iOS mode
|
|
235
|
+
* 3. A wrapper ref exists
|
|
236
|
+
*/
|
|
237
|
+
setupButtonActiveGesture() {
|
|
233
238
|
if (!this.gesture && getIonMode(this) === 'ios' && this.wrapperEl) {
|
|
234
239
|
this.gesture = createButtonActiveGesture(this.wrapperEl, (refEl) => refEl.classList.contains('alert-button'));
|
|
235
240
|
this.gesture.enable(true);
|
|
236
241
|
}
|
|
242
|
+
}
|
|
243
|
+
componentDidLoad() {
|
|
244
|
+
this.setupButtonActiveGesture();
|
|
237
245
|
this.setupButtonGroupResizeObserver();
|
|
238
246
|
/**
|
|
239
247
|
* If alert was rendered with isOpen="true"
|
|
@@ -556,14 +564,14 @@ export class Alert {
|
|
|
556
564
|
* If neither are defined, do not set aria-labelledby.
|
|
557
565
|
*/
|
|
558
566
|
const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
|
|
559
|
-
return (h(Host, { key: '
|
|
567
|
+
return (h(Host, { key: '083b5250dc4c76e85240e0225abcb7ca2b66de2f', tabindex: "-1", style: {
|
|
560
568
|
zIndex: `${20000 + overlayIndex}`,
|
|
561
569
|
}, class: {
|
|
562
570
|
...getClassMap(this.cssClass),
|
|
563
571
|
[mode]: true,
|
|
564
572
|
'overlay-hidden': true,
|
|
565
573
|
'alert-translucent': this.translucent,
|
|
566
|
-
}, onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, h("ion-backdrop", { key: '
|
|
574
|
+
}, onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, h("ion-backdrop", { key: '65c92a956d998ae9016396dd2a29c42ab7376d0e', tappable: this.backdropDismiss }), h("div", { key: 'f2288fa0b7ef9d0bf031c168fe78c48422cf91c8', tabindex: "0", "aria-hidden": "true" }), h("div", { key: 'dbb109435c378f77c6b0231e58756f8a0467732d', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el), ...htmlAttributes }, h("div", { key: '075597f94719673cf1f894a8566e1036849afa75', class: "alert-head" }, header && (h("h2", { key: 'f96f4b1db8473c62040beed6e96108c733978d73', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (h("h2", { key: 'dbd824ef19a07bddde4eb928f11de7c7cadf98b8', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (h("h3", { key: '4774fa13700dd23aec7930492acae80de3bdf5d1', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), h("div", { key: '5c728b7457e231f64294bbec821bdb547c6437dd', tabindex: "0", "aria-hidden": "true" })));
|
|
567
575
|
}
|
|
568
576
|
static get is() { return "ion-alert"; }
|
|
569
577
|
static get encapsulation() { return "scoped"; }
|
|
@@ -221,6 +221,23 @@ export class Content {
|
|
|
221
221
|
const mode = getIonMode(this);
|
|
222
222
|
return forceOverscroll === undefined ? mode === 'ios' && isPlatform('ios') : forceOverscroll;
|
|
223
223
|
}
|
|
224
|
+
/**
|
|
225
|
+
* Whether this component should size itself to its contents height, which
|
|
226
|
+
* is the case inside any popover and inside a modal whose `--height` is a
|
|
227
|
+
* content-based value. Those overlays give the content no definite height
|
|
228
|
+
* to fill.
|
|
229
|
+
*/
|
|
230
|
+
shouldSizeToContent() {
|
|
231
|
+
if (hostContext('ion-popover', this.el)) {
|
|
232
|
+
return true;
|
|
233
|
+
}
|
|
234
|
+
const modal = this.el.closest('ion-modal');
|
|
235
|
+
if (modal === null) {
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
const height = getComputedStyle(modal).getPropertyValue('--height').trim();
|
|
239
|
+
return CONTENT_SIZED_HEIGHTS.includes(height);
|
|
240
|
+
}
|
|
224
241
|
resize() {
|
|
225
242
|
/**
|
|
226
243
|
* Only force update if the component is rendered in a browser context.
|
|
@@ -418,21 +435,21 @@ export class Content {
|
|
|
418
435
|
const forceOverscroll = this.shouldForceOverscroll();
|
|
419
436
|
const transitionShadow = mode === 'ios';
|
|
420
437
|
this.resize();
|
|
421
|
-
return (h(Host, { key: '
|
|
438
|
+
return (h(Host, { key: 'd6ea57ec1f5def0bfd22f52ec5a5bbe6aa2f8e8e', role: isMainContent ? 'main' : undefined, class: createColorClasses(this.color, {
|
|
422
439
|
[mode]: true,
|
|
423
440
|
'content-fullscreen': this.fullscreen,
|
|
424
|
-
'content-sizing':
|
|
441
|
+
'content-sizing': this.shouldSizeToContent(),
|
|
425
442
|
overscroll: forceOverscroll,
|
|
426
443
|
[`content-${rtl}`]: true,
|
|
427
444
|
}), style: {
|
|
428
445
|
'--offset-top': `${this.cTop}px`,
|
|
429
446
|
'--offset-bottom': `${this.cBottom}px`,
|
|
430
|
-
}, ...inheritedAttributes }, h("div", { key: '
|
|
447
|
+
}, ...inheritedAttributes }, h("div", { key: '3ea7145f051ac3870ffb2b0c1fd83c20ce42d431', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? h("slot", { name: "fixed" }) : null, h("div", { key: 'af112b5f681fd40417c82bee085263c85755dad5', class: {
|
|
431
448
|
'inner-scroll': true,
|
|
432
449
|
'scroll-x': scrollX,
|
|
433
450
|
'scroll-y': scrollY,
|
|
434
451
|
overscroll: (scrollX || scrollY) && forceOverscroll,
|
|
435
|
-
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, h("slot", { key: '
|
|
452
|
+
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, h("slot", { key: '1b130c5713874fe457934359a1a1709a8cdb257a' })), transitionShadow ? (h("div", { class: "transition-effect" }, h("div", { class: "transition-cover" }), h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? h("slot", { name: "fixed" }) : null));
|
|
436
453
|
}
|
|
437
454
|
static get is() { return "ion-content"; }
|
|
438
455
|
static get encapsulation() { return "shadow"; }
|
|
@@ -874,6 +891,11 @@ export class Content {
|
|
|
874
891
|
}];
|
|
875
892
|
}
|
|
876
893
|
}
|
|
894
|
+
/**
|
|
895
|
+
* `ion-modal` `--height` values that size the modal to its contents, leaving
|
|
896
|
+
* children an indefinite height to resolve against.
|
|
897
|
+
*/
|
|
898
|
+
const CONTENT_SIZED_HEIGHTS = ['auto', 'fit-content', 'min-content', 'max-content'];
|
|
877
899
|
const getParentElement = (el) => {
|
|
878
900
|
if (el.parentElement) {
|
|
879
901
|
// normal element with a parent element
|
|
@@ -1206,7 +1206,6 @@ export class Datetime {
|
|
|
1206
1206
|
}
|
|
1207
1207
|
renderCombinedDatePickerColumn() {
|
|
1208
1208
|
const { defaultParts, disabled, workingParts, locale, minParts, maxParts, todayParts, isDateEnabled } = this;
|
|
1209
|
-
const activePart = this.getActivePartsWithFallback();
|
|
1210
1209
|
/**
|
|
1211
1210
|
* By default, generate a range of 3 months:
|
|
1212
1211
|
* Previous month, current month, and next month
|
|
@@ -1262,8 +1261,10 @@ export class Datetime {
|
|
|
1262
1261
|
return (h("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select a date", class: "date-column", color: this.color, disabled: disabled, value: todayString, onIonChange: (ev) => {
|
|
1263
1262
|
const { value } = ev.detail;
|
|
1264
1263
|
const findPart = parts.find(({ month, day, year }) => value === `${year}-${month}-${day}`);
|
|
1264
|
+
// Read live so parts a sibling column just committed are included.
|
|
1265
|
+
const activePart = this.getActivePartsWithFallback();
|
|
1265
1266
|
this.setWorkingParts({
|
|
1266
|
-
...workingParts,
|
|
1267
|
+
...this.workingParts,
|
|
1267
1268
|
...findPart,
|
|
1268
1269
|
});
|
|
1269
1270
|
this.setActiveParts({
|
|
@@ -1340,11 +1341,12 @@ export class Datetime {
|
|
|
1340
1341
|
return [];
|
|
1341
1342
|
}
|
|
1342
1343
|
const { disabled, workingParts } = this;
|
|
1343
|
-
const activePart = this.getActivePartsWithFallback();
|
|
1344
1344
|
const pickerColumnValue = (workingParts.day !== null ? workingParts.day : this.defaultParts.day) ?? undefined;
|
|
1345
1345
|
return (h("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select a day", class: "day-column", color: this.color, disabled: disabled, value: pickerColumnValue, onIonChange: (ev) => {
|
|
1346
|
+
// Read live so parts a sibling column just committed are included.
|
|
1347
|
+
const activePart = this.getActivePartsWithFallback();
|
|
1346
1348
|
this.setWorkingParts({
|
|
1347
|
-
...workingParts,
|
|
1349
|
+
...this.workingParts,
|
|
1348
1350
|
day: ev.detail.value,
|
|
1349
1351
|
});
|
|
1350
1352
|
this.setActiveParts({
|
|
@@ -1359,10 +1361,11 @@ export class Datetime {
|
|
|
1359
1361
|
return [];
|
|
1360
1362
|
}
|
|
1361
1363
|
const { disabled, workingParts } = this;
|
|
1362
|
-
const activePart = this.getActivePartsWithFallback();
|
|
1363
1364
|
return (h("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select a month", class: "month-column", color: this.color, disabled: disabled, value: workingParts.month, onIonChange: (ev) => {
|
|
1365
|
+
// Read live so parts a sibling column just committed are included.
|
|
1366
|
+
const activePart = this.getActivePartsWithFallback();
|
|
1364
1367
|
this.setWorkingParts({
|
|
1365
|
-
...workingParts,
|
|
1368
|
+
...this.workingParts,
|
|
1366
1369
|
month: ev.detail.value,
|
|
1367
1370
|
});
|
|
1368
1371
|
// Month wheel is navigation-only in multi-select mode as a fix for https://github.com/ionic-team/ionic-framework/issues/29673
|
|
@@ -1380,10 +1383,11 @@ export class Datetime {
|
|
|
1380
1383
|
return [];
|
|
1381
1384
|
}
|
|
1382
1385
|
const { disabled, workingParts } = this;
|
|
1383
|
-
const activePart = this.getActivePartsWithFallback();
|
|
1384
1386
|
return (h("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select a year", class: "year-column", color: this.color, disabled: disabled, value: workingParts.year, onIonChange: (ev) => {
|
|
1387
|
+
// Read live so parts a sibling column just committed are included.
|
|
1388
|
+
const activePart = this.getActivePartsWithFallback();
|
|
1385
1389
|
this.setWorkingParts({
|
|
1386
|
-
...workingParts,
|
|
1390
|
+
...this.workingParts,
|
|
1387
1391
|
year: ev.detail.value,
|
|
1388
1392
|
});
|
|
1389
1393
|
// Year wheel is navigation-only in multi-select mode as a fix for https://github.com/ionic-team/ionic-framework/issues/29673
|
|
@@ -1419,13 +1423,14 @@ export class Datetime {
|
|
|
1419
1423
|
];
|
|
1420
1424
|
}
|
|
1421
1425
|
renderHourPickerColumn(hoursData) {
|
|
1422
|
-
const { disabled
|
|
1426
|
+
const { disabled } = this;
|
|
1423
1427
|
if (hoursData.length === 0)
|
|
1424
1428
|
return [];
|
|
1425
1429
|
const activePart = this.getActivePartsWithFallback();
|
|
1426
1430
|
return (h("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select an hour", color: this.color, disabled: disabled, value: activePart.hour, numericInput: true, onIonChange: (ev) => {
|
|
1431
|
+
// Read live so parts a sibling column just committed are included.
|
|
1427
1432
|
this.setWorkingParts({
|
|
1428
|
-
...workingParts,
|
|
1433
|
+
...this.workingParts,
|
|
1429
1434
|
hour: ev.detail.value,
|
|
1430
1435
|
});
|
|
1431
1436
|
this.setActiveParts({
|
|
@@ -1436,13 +1441,14 @@ export class Datetime {
|
|
|
1436
1441
|
} }, hoursData.map((hour) => (h("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)))));
|
|
1437
1442
|
}
|
|
1438
1443
|
renderMinutePickerColumn(minutesData) {
|
|
1439
|
-
const { disabled
|
|
1444
|
+
const { disabled } = this;
|
|
1440
1445
|
if (minutesData.length === 0)
|
|
1441
1446
|
return [];
|
|
1442
1447
|
const activePart = this.getActivePartsWithFallback();
|
|
1443
1448
|
return (h("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select a minute", color: this.color, disabled: disabled, value: activePart.minute, numericInput: true, onIonChange: (ev) => {
|
|
1449
|
+
// Read live so parts a sibling column just committed are included.
|
|
1444
1450
|
this.setWorkingParts({
|
|
1445
|
-
...workingParts,
|
|
1451
|
+
...this.workingParts,
|
|
1446
1452
|
minute: ev.detail.value,
|
|
1447
1453
|
});
|
|
1448
1454
|
this.setActiveParts({
|
|
@@ -1453,16 +1459,18 @@ export class Datetime {
|
|
|
1453
1459
|
} }, minutesData.map((minute) => (h("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)))));
|
|
1454
1460
|
}
|
|
1455
1461
|
renderDayPeriodPickerColumn(dayPeriodData) {
|
|
1456
|
-
const { disabled
|
|
1462
|
+
const { disabled } = this;
|
|
1457
1463
|
if (dayPeriodData.length === 0) {
|
|
1458
1464
|
return [];
|
|
1459
1465
|
}
|
|
1460
1466
|
const activePart = this.getActivePartsWithFallback();
|
|
1461
1467
|
const isDayPeriodRTL = isLocaleDayPeriodRTL(this.locale);
|
|
1462
1468
|
return (h("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) => {
|
|
1463
|
-
|
|
1469
|
+
// Read live so parts a sibling column just committed are included.
|
|
1470
|
+
const currentParts = this.workingParts;
|
|
1471
|
+
const hour = calculateHourFromAMPM(currentParts, ev.detail.value);
|
|
1464
1472
|
this.setWorkingParts({
|
|
1465
|
-
...
|
|
1473
|
+
...currentParts,
|
|
1466
1474
|
ampm: ev.detail.value,
|
|
1467
1475
|
hour,
|
|
1468
1476
|
});
|
|
@@ -1814,7 +1822,7 @@ export class Datetime {
|
|
|
1814
1822
|
const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
|
|
1815
1823
|
const hasWheelVariant = hasDatePresentation && preferWheel;
|
|
1816
1824
|
renderHiddenInput(true, el, name, formatValue(value), disabled);
|
|
1817
|
-
return (h(Host, { key: '
|
|
1825
|
+
return (h(Host, { key: '4e0b529a70924b065bcc6191e08550428b5a52a0', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: {
|
|
1818
1826
|
...createColorClasses(color, {
|
|
1819
1827
|
[mode]: true,
|
|
1820
1828
|
['datetime-readonly']: readonly,
|
|
@@ -1826,7 +1834,7 @@ export class Datetime {
|
|
|
1826
1834
|
[`datetime-prefer-wheel`]: hasWheelVariant,
|
|
1827
1835
|
[`datetime-grid`]: isGridStyle,
|
|
1828
1836
|
}),
|
|
1829
|
-
} }, h("div", { key: '
|
|
1837
|
+
} }, h("div", { key: 'cc9d1b92f960984cb0466d0003a240ace67da243', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
|
|
1830
1838
|
}
|
|
1831
1839
|
static get is() { return "ion-datetime"; }
|
|
1832
1840
|
static get encapsulation() { return "shadow"; }
|