@ionic/core 9.0.0 → 9.0.1-dev.11787248963.10a00c73
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/index.js +1 -1
- package/components/ion-accordion-group.js +1 -1
- package/components/ion-accordion.js +1 -1
- package/components/ion-action-sheet.js +1 -1
- package/components/ion-alert.js +1 -1
- package/components/ion-app.js +1 -1
- package/components/ion-avatar.js +1 -1
- package/components/ion-back-button.js +1 -1
- package/components/ion-backdrop.js +1 -1
- package/components/ion-badge.js +1 -1
- package/components/ion-breadcrumb.js +1 -1
- package/components/ion-breadcrumbs.js +1 -1
- package/components/ion-button.js +1 -1
- package/components/ion-buttons.js +1 -1
- package/components/ion-card-content.js +1 -1
- package/components/ion-card-header.js +1 -1
- package/components/ion-card-subtitle.js +1 -1
- package/components/ion-card-title.js +1 -1
- package/components/ion-card.js +1 -1
- package/components/ion-checkbox.js +1 -1
- package/components/ion-chip.js +1 -1
- package/components/ion-col.js +1 -1
- package/components/ion-content.js +1 -1
- package/components/ion-datetime-button.js +1 -1
- package/components/ion-datetime.js +1 -1
- package/components/ion-fab-button.js +1 -1
- package/components/ion-fab-list.js +1 -1
- package/components/ion-fab.js +1 -1
- package/components/ion-footer.js +1 -1
- package/components/ion-grid.js +1 -1
- package/components/ion-header.js +1 -1
- package/components/ion-icon.js +1 -1
- package/components/ion-img.js +1 -1
- package/components/ion-infinite-scroll-content.js +1 -1
- package/components/ion-infinite-scroll.js +1 -1
- package/components/ion-input-otp.js +1 -1
- package/components/ion-input-password-toggle.js +1 -1
- package/components/ion-input.js +1 -1
- package/components/ion-item-divider.js +1 -1
- package/components/ion-item-group.js +1 -1
- package/components/ion-item-option.js +1 -1
- package/components/ion-item-options.js +1 -1
- package/components/ion-item-sliding.js +1 -1
- package/components/ion-item.js +1 -1
- package/components/ion-label.js +1 -1
- package/components/ion-list-header.js +1 -1
- package/components/ion-list.js +1 -1
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-menu-toggle.js +1 -1
- package/components/ion-menu.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +1 -1
- package/components/ion-note.js +1 -1
- package/components/ion-picker-column-option.js +1 -1
- package/components/ion-picker-column.js +1 -1
- package/components/ion-picker.js +1 -1
- package/components/ion-popover.js +1 -1
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-radio-group.js +1 -1
- package/components/ion-radio.js +1 -1
- package/components/ion-range.js +1 -1
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-ripple-effect.js +1 -1
- package/components/ion-route-redirect.js +1 -1
- package/components/ion-route.js +1 -1
- package/components/ion-router-link.js +1 -1
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-router.js +1 -1
- package/components/ion-row.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-segment-content.js +1 -1
- package/components/ion-segment-view.js +1 -1
- package/components/ion-segment.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select-option.js +1 -1
- package/components/ion-select-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-skeleton-text.js +1 -1
- package/components/ion-spinner.js +1 -1
- package/components/ion-split-pane.js +1 -1
- package/components/ion-tab-bar.js +1 -1
- package/components/ion-tab-button.js +1 -1
- package/components/ion-tab.js +1 -1
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +1 -1
- package/components/ion-textarea.js +1 -1
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-title.js +1 -1
- package/components/ion-toast.js +1 -1
- package/components/ion-toggle.js +1 -1
- package/components/ion-toolbar.js +1 -1
- package/components/{p-63OhffQv.js → p-66ogmUZU.js} +1 -1
- package/components/p-6Vp915Y7.js +4 -0
- package/components/p-7PNwKFZi.js +4 -0
- package/components/{p-G0TxqHfe.js → p-A8MJRBIY.js} +1 -1
- package/components/p-AQcCdH2_.js +4 -0
- package/{dist/ionic/p-Dn0mqQ_R.js → components/p-B6x5_b9w.js} +1 -1
- package/components/p-B8MQjdvk.js +4 -0
- package/components/p-BA_4ZIEg.js +4 -0
- package/components/p-BFtL8t1r.js +4 -0
- package/components/{p-DaA_8eqt.js → p-BMfgF-Tv.js} +1 -1
- package/components/p-BPDxVIRr.js +4 -0
- package/components/p-BSARlp49.js +4 -0
- package/components/p-B_gJaBk0.js +4 -0
- package/components/p-BdwCtX8Y.js +4 -0
- package/components/p-Bg4OwDwb.js +4 -0
- package/components/{p-DV85C0e0.js → p-BgUIV8NQ.js} +1 -1
- package/components/p-Bnc0m4SW.js +4 -0
- package/components/p-BpLt_Ptn.js +4 -0
- package/components/p-BqBDq1Ma.js +4 -0
- package/components/{p-C_phlPMC.js → p-BrFaQbGY.js} +1 -1
- package/{dist/ionic/p-Cdjxf_yg.js → components/p-BuPAFTWI.js} +1 -1
- package/components/p-Bx2saTHs.js +4 -0
- package/components/p-BxhE2W85.js +4 -0
- package/components/p-CHswSpKy.js +4 -0
- package/components/{p-fruGqVHh.js → p-CQAjyETU.js} +1 -1
- package/components/{p-1jI5oW-W.js → p-CR9OgE6N.js} +1 -1
- package/components/p-CWETxTjE.js +4 -0
- package/components/p-CaZeZIL2.js +4 -0
- package/components/p-CaiZOhfC.js +4 -0
- package/components/p-CgvDC7hC.js +4 -0
- package/components/{p-BqPNzJf6.js → p-CqyGR9Aq.js} +1 -1
- package/components/{p-UIBJkZf8.js → p-D0YpjgON.js} +1 -1
- package/components/p-D7ysFE2B.js +4 -0
- package/{dist/ionic/p-4eOQC00Z.js → components/p-DCWfzDM8.js} +1 -1
- package/components/{p-DwpKZ6rl.js → p-DDdkefwf.js} +1 -1
- package/components/{p-DzRT60Tw.js → p-DEW7CnUc.js} +1 -1
- package/components/p-DQ1IPvZO.js +4 -0
- package/components/p-DcOH6-o5.js +4 -0
- package/components/{p-DD5fQ4EQ.js → p-DfdYCsov.js} +1 -1
- package/components/{p-DSzSbVP2.js → p-DhOoEIAs.js} +1 -1
- package/components/{p-DM-PrAoh.js → p-Dl_7b_UJ.js} +1 -1
- package/components/p-DqAI6tg7.js +4 -0
- package/components/p-DrehWDfv.js +4 -0
- package/components/{p-ryyf_ItD.js → p-DysqCsJu.js} +1 -1
- package/components/p-H1f2qsk4.js +4 -0
- package/components/p-HVYBAhFx.js +4 -0
- package/components/{p-CbhUdtjf.js → p-Kmrg3Fed.js} +1 -1
- package/components/{p-Bjig0DJK.js → p-RFfE9hF6.js} +1 -1
- package/{dist/ionic/p-CBWAXjA5.js → components/p-SR-LLqp_.js} +1 -1
- package/components/p-eFI3mtEX.js +4 -0
- package/components/p-gFwXiYC_.js +4 -0
- package/components/p-tX3UxCnU.js +4 -0
- package/components/p-v2NpoOHp.js +4 -0
- package/dist/cjs/{animation-C0mOHzej.js → animation-D-OqR4a4.js} +1 -1
- package/dist/cjs/{app-globals-BREG4twP.js → app-globals-BzgwARwJ.js} +1 -1
- package/dist/cjs/{button-active-CVMevT9a.js → button-active-BlWSD7uK.js} +2 -2
- package/dist/cjs/{format-pp0Du3K-.js → format-D7ig6Vm0.js} +1 -1
- package/dist/cjs/{framework-delegate-Dfo5XsGv.js → framework-delegate-BZUx4TnE.js} +1 -1
- package/dist/cjs/{gesture-controller-BDUH7687.js → gesture-controller-CeJslptU.js} +6 -14
- package/dist/cjs/{hardware-back-button-fqpYh-kd.js → hardware-back-button-JOAEFSzc.js} +1 -1
- package/dist/cjs/{helpers-YPQybDph.js → helpers-Dj5o76mq.js} +1 -1
- package/dist/cjs/{index-BLdJCcJY.js → index-2sO-zkZ2.js} +4 -4
- package/dist/cjs/{index-uvry__L4.js → index-BrVMoqUk.js} +3 -1
- package/dist/cjs/{index-zVCah4Uz.js → index-C8zH6b3d.js} +2 -2
- package/dist/cjs/{index-DXsPSne6.js → index-CZ6vzt_q.js} +5 -5
- package/dist/cjs/{index-DDg31ZF5.js → index-Csue6G3m.js} +2 -2
- package/dist/cjs/{index-DwlRtFZe.js → index-DRPqwSvU.js} +1 -1
- package/dist/cjs/{index-B7zJsYWS.js → index-EJLjthTK.js} +1 -2
- package/dist/cjs/index.cjs.js +14 -14
- package/dist/cjs/{input-shims-Cbu1fcye.js → input-shims-Bh7bnt2v.js} +3 -3
- package/dist/cjs/{input.utils-BZdMWVrt.js → input.utils-Cq3g9uHy.js} +1 -1
- package/dist/cjs/ion-accordion_2.cjs.entry.js +335 -364
- package/dist/cjs/ion-action-sheet.cjs.entry.js +60 -140
- package/dist/cjs/ion-alert.cjs.entry.js +67 -159
- package/dist/cjs/ion-app_8.cjs.entry.js +163 -258
- package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -8
- package/dist/cjs/ion-back-button.cjs.entry.js +21 -45
- package/dist/cjs/ion-backdrop.cjs.entry.js +14 -18
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +117 -195
- package/dist/cjs/ion-button_2.cjs.entry.js +61 -130
- package/dist/cjs/ion-card_5.cjs.entry.js +28 -80
- package/dist/cjs/ion-checkbox.cjs.entry.js +98 -147
- package/dist/cjs/ion-chip.cjs.entry.js +10 -16
- package/dist/cjs/ion-col_3.cjs.entry.js +6 -126
- package/dist/cjs/ion-datetime-button.cjs.entry.js +232 -248
- package/dist/cjs/ion-datetime.cjs.entry.js +775 -953
- package/dist/cjs/ion-fab_3.cjs.entry.js +78 -136
- package/dist/cjs/ion-img.cjs.entry.js +11 -31
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +71 -98
- package/dist/cjs/ion-input-otp.cjs.entry.js +352 -424
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +14 -29
- package/dist/cjs/ion-input.cjs.entry.js +158 -302
- package/dist/cjs/ion-item-option_3.cjs.entry.js +54 -98
- package/dist/cjs/ion-item_8.cjs.entry.js +61 -157
- package/dist/cjs/ion-loading.cjs.entry.js +54 -131
- package/dist/cjs/ion-menu_3.cjs.entry.js +94 -158
- package/dist/cjs/ion-modal.cjs.entry.js +206 -362
- package/dist/cjs/ion-nav_2.cjs.entry.js +26 -78
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +23 -33
- package/dist/cjs/ion-picker-column.cjs.entry.js +389 -410
- package/dist/cjs/ion-picker.cjs.entry.js +390 -400
- package/dist/cjs/ion-popover.cjs.entry.js +184 -292
- package/dist/cjs/ion-progress-bar.cjs.entry.js +23 -29
- package/dist/cjs/ion-radio_2.cjs.entry.js +128 -201
- package/dist/cjs/ion-range.cjs.entry.js +223 -293
- package/dist/cjs/ion-refresher_2.cjs.entry.js +89 -154
- package/dist/cjs/ion-reorder_2.cjs.entry.js +19 -49
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +13 -13
- package/dist/cjs/ion-route_4.cjs.entry.js +45 -144
- package/dist/cjs/ion-searchbar.cjs.entry.js +182 -268
- package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment-view.cjs.entry.js +12 -24
- package/dist/cjs/ion-segment_2.cjs.entry.js +122 -161
- package/dist/cjs/ion-select-modal.cjs.entry.js +19 -21
- package/dist/cjs/ion-select_3.cjs.entry.js +151 -319
- package/dist/cjs/ion-spinner.cjs.entry.js +6 -21
- package/dist/cjs/ion-split-pane.cjs.entry.js +14 -27
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +32 -89
- package/dist/cjs/ion-tab_2.cjs.entry.js +22 -49
- package/dist/cjs/ion-text.cjs.entry.js +2 -8
- package/dist/cjs/ion-textarea.cjs.entry.js +139 -256
- package/dist/cjs/ion-toast.cjs.entry.js +106 -221
- package/dist/cjs/ion-toggle.cjs.entry.js +114 -165
- package/dist/cjs/{ionic-global-k6hOWWpn.js → ionic-global-DvgIzM2F.js} +1 -1
- package/dist/cjs/ionic.cjs.js +4 -4
- package/dist/cjs/{ios.transition-zTmJz8T-.js → ios.transition-zIgdoSYe.js} +4 -4
- package/dist/cjs/{item-multiple-inputs-BdYSbfKN.js → item-multiple-inputs-DG-ZGm6j.js} +1 -1
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-nb_4pUXu.js → md.transition-CXeJ9rfh.js} +4 -4
- package/dist/cjs/{overlays-KaNVDNqC.js → overlays-Bg0auTQa.js} +6 -6
- package/dist/cjs/{select-option-render-pULCGldr.js → select-option-render-7m1WdFzF.js} +2 -2
- package/dist/cjs/{slot-mutation-controller-DPHmqXdV.js → slot-mutation-controller-BJEJzx_e.js} +1 -1
- package/dist/cjs/{status-tap-o9IIymsP.js → status-tap-DxbUM5XX.js} +3 -3
- package/dist/cjs/{swipe-back-B7X9VOlH.js → swipe-back-F_DBt-Aw.js} +4 -4
- package/dist/collection/components/accordion/accordion.js +310 -314
- package/dist/collection/components/accordion-group/accordion-group.js +23 -46
- package/dist/collection/components/action-sheet/action-sheet.js +49 -128
- package/dist/collection/components/action-sheet/test/basic/fixture.js +0 -3
- package/dist/collection/components/alert/alert.js +56 -147
- package/dist/collection/components/app/app.js +0 -3
- package/dist/collection/components/back-button/back-button.js +19 -42
- package/dist/collection/components/backdrop/backdrop.js +14 -16
- package/dist/collection/components/badge/badge.js +0 -6
- package/dist/collection/components/breadcrumb/breadcrumb.js +29 -90
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +87 -102
- package/dist/collection/components/button/button.js +59 -127
- package/dist/collection/components/buttons/buttons.js +15 -13
- package/dist/collection/components/card/card.js +20 -53
- package/dist/collection/components/card-header/card-header.js +8 -12
- package/dist/collection/components/card-subtitle/card-subtitle.js +0 -6
- package/dist/collection/components/card-title/card-title.js +0 -6
- package/dist/collection/components/checkbox/checkbox.js +95 -143
- package/dist/collection/components/chip/chip.js +10 -14
- package/dist/collection/components/col/col.js +0 -120
- package/dist/collection/components/content/content.js +60 -90
- package/dist/collection/components/datetime/datetime.js +762 -939
- package/dist/collection/components/datetime-button/datetime-button.js +229 -244
- package/dist/collection/components/fab/fab.js +13 -20
- package/dist/collection/components/fab-button/fab-button.js +54 -103
- package/dist/collection/components/fab-list/fab-list.js +11 -10
- package/dist/collection/components/footer/footer.js +43 -49
- package/dist/collection/components/grid/grid.js +6 -4
- package/dist/collection/components/header/header.js +23 -33
- package/dist/collection/components/img/img.js +9 -28
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +66 -73
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +3 -20
- package/dist/collection/components/input/input.js +154 -297
- package/dist/collection/components/input-otp/input-otp.js +350 -421
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +13 -27
- package/dist/collection/components/item/item.js +37 -80
- package/dist/collection/components/item-divider/item-divider.js +10 -15
- package/dist/collection/components/item-option/item-option.js +20 -48
- package/dist/collection/components/item-options/item-options.js +7 -10
- package/dist/collection/components/item-sliding/item-sliding.js +26 -36
- package/dist/collection/components/label/label.js +4 -24
- package/dist/collection/components/list/list.js +6 -9
- package/dist/collection/components/list-header/list-header.js +0 -10
- package/dist/collection/components/loading/loading.js +46 -122
- package/dist/collection/components/menu/menu.js +55 -99
- package/dist/collection/components/menu-button/menu-button.js +19 -28
- package/dist/collection/components/menu-toggle/menu-toggle.js +13 -20
- package/dist/collection/components/modal/modal.js +196 -351
- package/dist/collection/components/modal/test/fixtures.js +0 -3
- package/dist/collection/components/nav/nav.js +12 -45
- package/dist/collection/components/nav/view-controller.js +1 -7
- package/dist/collection/components/nav-link/nav-link.js +9 -20
- package/dist/collection/components/note/note.js +0 -6
- package/dist/collection/components/picker/picker.js +388 -397
- package/dist/collection/components/picker-column/picker-column.js +389 -409
- package/dist/collection/components/picker-column-option/picker-column-option.js +21 -30
- package/dist/collection/components/popover/popover.js +176 -283
- package/dist/collection/components/popover/test/fixture.js +0 -1
- package/dist/collection/components/progress-bar/progress-bar.js +22 -26
- package/dist/collection/components/radio/radio.js +62 -98
- package/dist/collection/components/radio-group/radio-group.js +64 -99
- package/dist/collection/components/radio-group/test/fixtures.js +0 -2
- package/dist/collection/components/range/range.js +220 -289
- package/dist/collection/components/refresher/refresher.js +79 -105
- package/dist/collection/components/refresher-content/refresher-content.js +3 -40
- package/dist/collection/components/reorder/reorder.js +0 -1
- package/dist/collection/components/reorder-group/reorder-group.js +14 -43
- package/dist/collection/components/ripple-effect/ripple-effect.js +12 -11
- package/dist/collection/components/route/route.js +9 -38
- package/dist/collection/components/route-redirect/route-redirect.js +0 -31
- package/dist/collection/components/router/router.js +27 -35
- package/dist/collection/components/router/utils/matching.js +0 -1
- package/dist/collection/components/router-link/router-link.js +10 -35
- package/dist/collection/components/router-outlet/router-outlet.js +12 -34
- package/dist/collection/components/searchbar/searchbar.js +180 -265
- package/dist/collection/components/segment/segment.js +76 -113
- package/dist/collection/components/segment-button/segment-button.js +44 -44
- package/dist/collection/components/segment-view/segment-view.js +12 -23
- package/dist/collection/components/select/select.js +127 -240
- package/dist/collection/components/select-modal/select-modal.js +11 -12
- package/dist/collection/components/select-modal/test/fixtures.js +1 -8
- package/dist/collection/components/select-option/select-option.js +7 -44
- package/dist/collection/components/select-popover/select-popover.js +10 -25
- package/dist/collection/components/select-popover/test/fixtures.js +1 -8
- package/dist/collection/components/skeleton-text/skeleton-text.js +6 -10
- package/dist/collection/components/spinner/spinner.js +6 -19
- package/dist/collection/components/split-pane/split-pane.js +13 -25
- package/dist/collection/components/tab/tab.js +4 -15
- package/dist/collection/components/tab-bar/tab-bar.js +12 -30
- package/dist/collection/components/tab-button/tab-button.js +19 -56
- package/dist/collection/components/tabs/tabs.js +17 -31
- package/dist/collection/components/text/text.js +0 -6
- package/dist/collection/components/textarea/textarea.js +135 -251
- package/dist/collection/components/title/title.js +0 -16
- package/dist/collection/components/toast/toast.js +97 -211
- package/dist/collection/components/toggle/toggle.js +111 -161
- package/dist/collection/components/toolbar/toolbar.js +3 -8
- package/dist/collection/global/config.js +3 -1
- package/dist/collection/utils/gesture/gesture-controller.js +6 -14
- package/dist/collection/utils/sanitization/index.js +0 -1
- package/dist/collection/utils/test/late-props/late-props.js +69 -0
- package/dist/collection/utils/test/playwright/page/event-spy.js +8 -9
- package/dist/collection/utils/test/press-keys.js +1 -4
- package/dist/docs.json +1 -1
- package/dist/esm/{animation-CGFdmGk9.js → animation-TxGPYeDn.js} +1 -1
- package/dist/esm/{app-globals-CYmMeGdU.js → app-globals-Do8rJest.js} +1 -1
- package/dist/esm/{button-active-BDOsVAiZ.js → button-active-ChA4D-ml.js} +2 -2
- package/dist/esm/{format-Dcwga61t.js → format-CVk5e_GP.js} +2 -2
- package/dist/esm/{framework-delegate-BHTU2Ip9.js → framework-delegate-DaLWnISz.js} +1 -1
- package/dist/esm/{gesture-controller-TXPDHL13.js → gesture-controller-B_gJaBk0.js} +6 -14
- package/dist/esm/{hardware-back-button-gLJHMX_F.js → hardware-back-button-D8W4L0JP.js} +1 -1
- package/dist/esm/{helpers-CAGf8Wgp.js → helpers-BIgoInJU.js} +1 -1
- package/dist/esm/{index-DcPaH5uL.js → index-BmLuEdV7.js} +1 -1
- package/dist/esm/{index-T0JxBI8V.js → index-BmOR8tCv.js} +2 -2
- package/dist/esm/{index-CqneaaGd.js → index-C5ZdL0qp.js} +5 -5
- package/dist/esm/{index-WlteAIqz.js → index-C8Dsa6li.js} +4 -4
- package/dist/esm/{index-ChhhtsGZ.js → index-CKYcsw8f.js} +3 -1
- package/dist/esm/{index-Clc-28O1.js → index-DHw2lZxe.js} +2 -2
- package/dist/esm/{index-CKM1DdGm.js → index-elneMH8y.js} +1 -2
- package/dist/esm/index.js +14 -14
- package/dist/esm/{input-shims-B8sfni1e.js → input-shims-09NN97kF.js} +3 -3
- package/dist/esm/{input.utils-B1ValN_N.js → input.utils-BxyH9l1w.js} +1 -1
- package/dist/esm/ion-accordion_2.entry.js +335 -364
- package/dist/esm/ion-action-sheet.entry.js +60 -140
- package/dist/esm/ion-alert.entry.js +67 -159
- package/dist/esm/ion-app_8.entry.js +163 -258
- package/dist/esm/ion-avatar_3.entry.js +2 -8
- package/dist/esm/ion-back-button.entry.js +21 -45
- package/dist/esm/ion-backdrop.entry.js +14 -18
- package/dist/esm/ion-breadcrumb_2.entry.js +117 -195
- package/dist/esm/ion-button_2.entry.js +61 -130
- package/dist/esm/ion-card_5.entry.js +28 -80
- package/dist/esm/ion-checkbox.entry.js +98 -147
- package/dist/esm/ion-chip.entry.js +10 -16
- package/dist/esm/ion-col_3.entry.js +6 -126
- package/dist/esm/ion-datetime-button.entry.js +232 -248
- package/dist/esm/ion-datetime.entry.js +775 -953
- package/dist/esm/ion-fab_3.entry.js +78 -136
- package/dist/esm/ion-img.entry.js +11 -31
- package/dist/esm/ion-infinite-scroll_2.entry.js +71 -98
- package/dist/esm/ion-input-otp.entry.js +352 -424
- package/dist/esm/ion-input-password-toggle.entry.js +14 -29
- package/dist/esm/ion-input.entry.js +158 -302
- package/dist/esm/ion-item-option_3.entry.js +54 -98
- package/dist/esm/ion-item_8.entry.js +61 -157
- package/dist/esm/ion-loading.entry.js +54 -131
- package/dist/esm/ion-menu_3.entry.js +94 -158
- package/dist/esm/ion-modal.entry.js +206 -362
- package/dist/esm/ion-nav_2.entry.js +26 -78
- package/dist/esm/ion-picker-column-option.entry.js +23 -33
- package/dist/esm/ion-picker-column.entry.js +389 -410
- package/dist/esm/ion-picker.entry.js +390 -400
- package/dist/esm/ion-popover.entry.js +184 -292
- package/dist/esm/ion-progress-bar.entry.js +23 -29
- package/dist/esm/ion-radio_2.entry.js +128 -201
- package/dist/esm/ion-range.entry.js +223 -293
- package/dist/esm/ion-refresher_2.entry.js +89 -154
- package/dist/esm/ion-reorder_2.entry.js +19 -49
- package/dist/esm/ion-ripple-effect.entry.js +13 -13
- package/dist/esm/ion-route_4.entry.js +45 -144
- package/dist/esm/ion-searchbar.entry.js +182 -268
- package/dist/esm/ion-segment-content.entry.js +1 -1
- package/dist/esm/ion-segment-view.entry.js +12 -24
- package/dist/esm/ion-segment_2.entry.js +122 -161
- package/dist/esm/ion-select-modal.entry.js +19 -21
- package/dist/esm/ion-select_3.entry.js +151 -319
- package/dist/esm/ion-spinner.entry.js +6 -21
- package/dist/esm/ion-split-pane.entry.js +14 -27
- package/dist/esm/ion-tab-bar_2.entry.js +32 -89
- package/dist/esm/ion-tab_2.entry.js +22 -49
- package/dist/esm/ion-text.entry.js +2 -8
- package/dist/esm/ion-textarea.entry.js +139 -256
- package/dist/esm/ion-toast.entry.js +106 -221
- package/dist/esm/ion-toggle.entry.js +114 -165
- package/dist/esm/{ionic-global-BVB7BrLT.js → ionic-global-lrowsHfi.js} +1 -1
- package/dist/esm/ionic.js +5 -5
- package/dist/esm/{ios.transition-DXRCmcbC.js → ios.transition-BQhADrk1.js} +4 -4
- package/dist/esm/{item-multiple-inputs-rU8VaNNg.js → item-multiple-inputs-D_N3fDkD.js} +1 -1
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-BMngO4i_.js → md.transition-D58NpmRa.js} +4 -4
- package/dist/esm/{overlays-CPmIs9Ls.js → overlays-BpnIFlXI.js} +6 -6
- package/dist/esm/{select-option-render-C4m76VGH.js → select-option-render-lIuu64EV.js} +2 -2
- package/dist/esm/{slot-mutation-controller-DiE_C9un.js → slot-mutation-controller-rS_T3FDR.js} +1 -1
- package/dist/esm/{status-tap-CHB7KwIb.js → status-tap-CpFQMLl6.js} +3 -3
- package/dist/esm/{swipe-back-C9HW1bug.js → swipe-back-rmc7zeNW.js} +4 -4
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-05800a02.entry.js +4 -0
- package/dist/ionic/p-0eb50dca.entry.js +4 -0
- package/dist/ionic/p-16e9f542.entry.js +4 -0
- package/dist/ionic/p-18d532a3.entry.js +4 -0
- package/dist/ionic/p-1db2afb4.entry.js +4 -0
- package/dist/ionic/p-1df75f9e.entry.js +4 -0
- package/dist/ionic/p-295ff427.entry.js +4 -0
- package/dist/ionic/p-34b9379b.entry.js +4 -0
- package/dist/ionic/p-39a8d4e0.entry.js +4 -0
- package/dist/ionic/p-4437015c.entry.js +4 -0
- package/dist/ionic/p-478035a7.entry.js +4 -0
- package/dist/ionic/p-485fb218.entry.js +4 -0
- package/dist/ionic/p-48c859fe.entry.js +4 -0
- package/dist/ionic/p-49b9d405.entry.js +4 -0
- package/dist/ionic/p-56307aea.entry.js +4 -0
- package/dist/ionic/p-5b906fd6.entry.js +4 -0
- package/dist/ionic/p-5ee2d7b1.entry.js +4 -0
- package/dist/ionic/p-5f216b79.entry.js +4 -0
- package/dist/ionic/p-61c799d1.entry.js +4 -0
- package/dist/ionic/p-63bbba8d.entry.js +4 -0
- package/dist/ionic/p-68507e70.entry.js +4 -0
- package/dist/ionic/{p-ded69ceb.entry.js → p-6f048604.entry.js} +1 -1
- package/dist/ionic/p-70ee8888.entry.js +4 -0
- package/dist/ionic/p-72ad7c64.entry.js +4 -0
- package/dist/ionic/p-75887ee0.entry.js +4 -0
- package/dist/ionic/p-873a315a.entry.js +4 -0
- package/dist/ionic/p-881b6954.entry.js +4 -0
- package/dist/ionic/p-886d9e66.entry.js +4 -0
- package/dist/ionic/p-8dd4c026.entry.js +4 -0
- package/dist/ionic/p-8e007f11.entry.js +4 -0
- package/dist/ionic/p-8f51110d.entry.js +4 -0
- package/dist/ionic/p-90ba736e.entry.js +4 -0
- package/dist/ionic/p-959df5f8.entry.js +4 -0
- package/dist/ionic/p-9e455875.entry.js +4 -0
- package/dist/ionic/{p-CBR_W98Z.js → p-9wczfs_v.js} +1 -1
- package/dist/ionic/p-B1Y7LZhV.js +4 -0
- package/dist/ionic/p-B5RyLYvl.js +4 -0
- package/dist/ionic/{p-CPcPmkGv.js → p-BQv5i5Kf.js} +1 -1
- package/{components/p-8FN7p701.js → dist/ionic/p-BZVE25Gu.js} +1 -1
- package/{components/p-DFvZn99E.js → dist/ionic/p-BZxjcGRP.js} +1 -1
- package/dist/ionic/p-B_gJaBk0.js +4 -0
- package/dist/ionic/p-BnGA34Pd.js +4 -0
- package/dist/ionic/p-ByLaqOPm.js +4 -0
- package/dist/ionic/p-C06QNN45.js +4 -0
- package/dist/ionic/p-C4IBDDj6.js +4 -0
- package/dist/ionic/p-CCVlNZ__.js +4 -0
- package/dist/ionic/{p-CMRtMbJc.js → p-CDBop-kz.js} +1 -1
- package/dist/ionic/p-CKYcsw8f.js +5 -0
- package/dist/ionic/p-CazSodad.js +4 -0
- package/{components/p-ia3IDdJS.js → dist/ionic/p-ClrlQU2y.js} +1 -1
- package/dist/ionic/{p-UIBJkZf8.js → p-D0YpjgON.js} +1 -1
- package/dist/ionic/p-D0dfUysx.js +4 -0
- package/dist/ionic/{p-BB0LlG4y.js → p-D9yvytgv.js} +1 -1
- package/{components/p-C5KYjZWD.js → dist/ionic/p-DF_Uqql8.js} +1 -1
- package/dist/ionic/{p-BYEAtHr-.js → p-DXJgZWgi.js} +1 -1
- package/dist/ionic/{p-D94_RztK.js → p-DdhHqKj-.js} +1 -1
- package/dist/ionic/p-De0eY881.js +4 -0
- package/dist/ionic/p-DgUL3JbO.js +4 -0
- package/dist/ionic/{p-7CBuOvEo.js → p-RzUn7cKs.js} +1 -1
- package/dist/ionic/p-VquyMbjp.js +4 -0
- package/dist/ionic/p-a0fee899.entry.js +4 -0
- package/dist/ionic/p-a54bcd16.entry.js +4 -0
- package/dist/ionic/p-aebc4d69.entry.js +4 -0
- package/dist/ionic/p-b5f37106.entry.js +4 -0
- package/dist/ionic/{p-40424a88.entry.js → p-b62bfce8.entry.js} +1 -1
- package/dist/ionic/p-b7a11b58.entry.js +4 -0
- package/dist/ionic/p-bbf6878c.entry.js +4 -0
- package/dist/ionic/p-c49165af.entry.js +4 -0
- package/dist/ionic/p-cad4eccf.entry.js +4 -0
- package/dist/ionic/p-cdc5115e.entry.js +4 -0
- package/dist/ionic/p-d3384a40.entry.js +4 -0
- package/dist/ionic/p-d8bae128.entry.js +4 -0
- package/dist/ionic/p-d8deff43.entry.js +4 -0
- package/dist/ionic/p-ddfb7e5f.entry.js +4 -0
- package/dist/ionic/p-e538f18d.entry.js +4 -0
- package/dist/ionic/p-f376876b.entry.js +4 -0
- package/dist/ionic/p-f7dd1ed9.entry.js +4 -0
- package/dist/ionic/p-fbd83d4c.entry.js +4 -0
- package/dist/types/components/refresher/refresher.d.ts +7 -0
- package/hydrate/index.js +5450 -8380
- package/hydrate/index.mjs +5450 -8380
- package/package.json +1 -1
- package/components/p--m5cCjbK.js +0 -4
- package/components/p-B4uHHhPK.js +0 -4
- package/components/p-BNJOu1Q2.js +0 -4
- package/components/p-BOvLNVKq.js +0 -4
- package/components/p-BeamQXHF.js +0 -4
- package/components/p-BjluhQMI.js +0 -4
- package/components/p-BlsIikdZ.js +0 -4
- package/components/p-BrD9Xv62.js +0 -4
- package/components/p-BvJqoZ5R.js +0 -4
- package/components/p-Bz6z3Asd.js +0 -4
- package/components/p-C6HnVvHO.js +0 -4
- package/components/p-C7jvh5Wy.js +0 -4
- package/components/p-C9BGR5fy.js +0 -4
- package/components/p-CB-y1CdP.js +0 -4
- package/components/p-CHH3loEE.js +0 -4
- package/components/p-CJKUWjmg.js +0 -4
- package/components/p-CMLAwl_N.js +0 -4
- package/components/p-CejmQs3h.js +0 -4
- package/components/p-CtZqa4HM.js +0 -4
- package/components/p-D9qIVSWm.js +0 -4
- package/components/p-DE-3iMNW.js +0 -4
- package/components/p-DHFt2rdc.js +0 -4
- package/components/p-D_RCyzwu.js +0 -4
- package/components/p-D_tD8r3L.js +0 -4
- package/components/p-DjCtLZbF.js +0 -4
- package/components/p-Dmd2xqCe.js +0 -4
- package/components/p-G6JR-cr_.js +0 -4
- package/components/p-GG5GhznE.js +0 -4
- package/components/p-TXPDHL13.js +0 -4
- package/components/p-_IKFD3ID.js +0 -4
- package/components/p-dKq2jIum.js +0 -4
- package/components/p-iYhH60Tc.js +0 -4
- package/dist/ionic/p-06ec7136.entry.js +0 -4
- package/dist/ionic/p-09fe4fa3.entry.js +0 -4
- package/dist/ionic/p-10d45a07.entry.js +0 -4
- package/dist/ionic/p-208c8a07.entry.js +0 -4
- package/dist/ionic/p-212474fa.entry.js +0 -4
- package/dist/ionic/p-2eef1396.entry.js +0 -4
- package/dist/ionic/p-347e005d.entry.js +0 -4
- package/dist/ionic/p-3a0b3f1d.entry.js +0 -4
- package/dist/ionic/p-3b071259.entry.js +0 -4
- package/dist/ionic/p-4204184c.entry.js +0 -4
- package/dist/ionic/p-47464391.entry.js +0 -4
- package/dist/ionic/p-4f9c9126.entry.js +0 -4
- package/dist/ionic/p-5JsKPLJD.js +0 -4
- package/dist/ionic/p-5bc485c6.entry.js +0 -4
- package/dist/ionic/p-603a61e6.entry.js +0 -4
- package/dist/ionic/p-60576951.entry.js +0 -4
- package/dist/ionic/p-67a81d33.entry.js +0 -4
- package/dist/ionic/p-6affb775.entry.js +0 -4
- package/dist/ionic/p-6f120c25.entry.js +0 -4
- package/dist/ionic/p-71c82b60.entry.js +0 -4
- package/dist/ionic/p-79325ffe.entry.js +0 -4
- package/dist/ionic/p-7e4d51fa.entry.js +0 -4
- package/dist/ionic/p-7f5d4664.entry.js +0 -4
- package/dist/ionic/p-80ee82fc.entry.js +0 -4
- package/dist/ionic/p-84af7dbc.entry.js +0 -4
- package/dist/ionic/p-89ca830a.entry.js +0 -4
- package/dist/ionic/p-93b8ec8f.entry.js +0 -4
- package/dist/ionic/p-946f65c2.entry.js +0 -4
- package/dist/ionic/p-9c4b39fb.entry.js +0 -4
- package/dist/ionic/p-B1NEZUzQ.js +0 -4
- package/dist/ionic/p-B1ck5iy-.js +0 -4
- package/dist/ionic/p-B4FrqdW0.js +0 -4
- package/dist/ionic/p-C-94tAim.js +0 -4
- package/dist/ionic/p-C-eHZMYE.js +0 -4
- package/dist/ionic/p-CaRuIadB.js +0 -4
- package/dist/ionic/p-ChhhtsGZ.js +0 -5
- package/dist/ionic/p-CzS1qWve.js +0 -4
- package/dist/ionic/p-DjjfauRM.js +0 -4
- package/dist/ionic/p-DkUB-ROc.js +0 -4
- package/dist/ionic/p-DplOqGUv.js +0 -4
- package/dist/ionic/p-Dst_XmZh.js +0 -4
- package/dist/ionic/p-TXPDHL13.js +0 -4
- package/dist/ionic/p-a438b193.entry.js +0 -4
- package/dist/ionic/p-babaaaa7.entry.js +0 -4
- package/dist/ionic/p-be08d500.entry.js +0 -4
- package/dist/ionic/p-be9a4f51.entry.js +0 -4
- package/dist/ionic/p-c00d3092.entry.js +0 -4
- package/dist/ionic/p-c36dc8f5.entry.js +0 -4
- package/dist/ionic/p-c72a7e17.entry.js +0 -4
- package/dist/ionic/p-c8edd88c.entry.js +0 -4
- package/dist/ionic/p-ce0e380b.entry.js +0 -4
- package/dist/ionic/p-ce32912b.entry.js +0 -4
- package/dist/ionic/p-d07cf130.entry.js +0 -4
- package/dist/ionic/p-d27edeb3.entry.js +0 -4
- package/dist/ionic/p-d5d2c506.entry.js +0 -4
- package/dist/ionic/p-d5e31ca9.entry.js +0 -4
- package/dist/ionic/p-de91444f.entry.js +0 -4
- package/dist/ionic/p-df72866d.entry.js +0 -4
- package/dist/ionic/p-e47e3151.entry.js +0 -4
- package/dist/ionic/p-e621e5e8.entry.js +0 -4
- package/dist/ionic/p-eea9cf93.entry.js +0 -4
- package/dist/ionic/p-f402f5a4.entry.js +0 -4
- package/dist/ionic/p-fe1bfbcf.entry.js +0 -4
- package/dist/ionic/p-ffb90460.entry.js +0 -4
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { r as registerInstance,
|
|
5
|
-
import {
|
|
4
|
+
import { r as registerInstance, j as printIonError, h, d as Host, g as getElement } from './index-CKYcsw8f.js';
|
|
5
|
+
import { f as addEventListener, c as componentOnReady } from './helpers-BIgoInJU.js';
|
|
6
6
|
import { c as createColorClasses } from './theme-byZM6qHV.js';
|
|
7
|
-
import { b as getIonMode } from './ionic-global-
|
|
8
|
-
import {
|
|
7
|
+
import { b as getIonMode } from './ionic-global-lrowsHfi.js';
|
|
8
|
+
import { D as parseDate, d as getHourCycle, P as getLocalizedDateTime, O as getLocalizedTime } from './format-CVk5e_GP.js';
|
|
9
9
|
import './dir-Dojwmvde.js';
|
|
10
10
|
|
|
11
11
|
const datetimeButtonIosCss = () => `:host{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}:host button{border-radius:8px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;margin-top:0px;margin-bottom:0px;position:relative;-webkit-transition:150ms color ease-in-out;transition:150ms color ease-in-out;border:none;background:var(--ion-color-step-300, var(--ion-background-color-step-300, #edeef0));color:var(--ion-text-color, #000);font-family:inherit;font-size:1rem;cursor:pointer;overflow:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none}:host(.time-active) #time-button,:host(.date-active) #date-button{color:var(--ion-color-primary, #0054e9)}:host(.ion-color.time-active) #time-button,:host(.ion-color.date-active) #date-button{color:var(--ion-color-base)}:host(.datetime-button-disabled){pointer-events:none}:host(.datetime-button-disabled) button{opacity:0.4}:host button{-webkit-padding-start:13px;padding-inline-start:13px;-webkit-padding-end:13px;padding-inline-end:13px;padding-top:7px;padding-bottom:7px}:host button.ion-activated{color:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666))}`;
|
|
@@ -15,32 +15,234 @@ const datetimeButtonMdCss = () => `:host{display:-ms-flexbox;display:flex;-ms-fl
|
|
|
15
15
|
const DatetimeButton = class {
|
|
16
16
|
constructor(hostRef) {
|
|
17
17
|
registerInstance(this, hostRef);
|
|
18
|
+
this.datetimeEl = null;
|
|
19
|
+
this.overlayEl = null;
|
|
20
|
+
this.datetimePresentation = 'date-time';
|
|
21
|
+
this.datetimeActive = false;
|
|
22
|
+
/**
|
|
23
|
+
* If `true`, the user cannot interact with the button.
|
|
24
|
+
*/
|
|
25
|
+
this.disabled = false;
|
|
26
|
+
/**
|
|
27
|
+
* Accepts one or more string values and converts
|
|
28
|
+
* them to DatetimeParts. This is done so datetime-button
|
|
29
|
+
* can work with an array internally and not need
|
|
30
|
+
* to keep checking if the datetime value is `string` or `string[]`.
|
|
31
|
+
*/
|
|
32
|
+
this.getParsedDateValues = (value) => {
|
|
33
|
+
if (value === undefined || value === null) {
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
36
|
+
if (Array.isArray(value)) {
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
return [value];
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Check the value property on the linked
|
|
43
|
+
* ion-datetime and then format it according
|
|
44
|
+
* to the locale specified on ion-datetime.
|
|
45
|
+
*/
|
|
46
|
+
this.setDateTimeText = async () => {
|
|
47
|
+
const { datetimeEl, datetimePresentation } = this;
|
|
48
|
+
if (!datetimeEl) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const { value, locale, formatOptions, hourCycle, preferWheel, multiple, titleSelectedDatesFormatter } = datetimeEl;
|
|
52
|
+
const parsedValues = this.getParsedDateValues(value);
|
|
53
|
+
/**
|
|
54
|
+
* Both ion-datetime and ion-datetime-button default to today's date and
|
|
55
|
+
* time if no value is set. We read the datetime's computed default so the
|
|
56
|
+
* button respects the same constraints (min, max, minuteValues, etc.) that
|
|
57
|
+
* the datetime applies to its own fallback, instead of using a raw "now".
|
|
58
|
+
*/
|
|
59
|
+
const parsedDatetimes = parsedValues.length > 0 ? parseDate(parsedValues) : [await datetimeEl.getDefaultPart()];
|
|
60
|
+
if (!parsedDatetimes) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* If developers incorrectly use multiple="true"
|
|
65
|
+
* with non "date" datetimes, then just select
|
|
66
|
+
* the first value so the interface does
|
|
67
|
+
* not appear broken. Datetime will provide a
|
|
68
|
+
* warning in the console.
|
|
69
|
+
*/
|
|
70
|
+
const firstParsedDatetime = parsedDatetimes[0];
|
|
71
|
+
const computedHourCycle = getHourCycle(locale, hourCycle);
|
|
72
|
+
this.dateText = this.timeText = undefined;
|
|
73
|
+
switch (datetimePresentation) {
|
|
74
|
+
case 'date-time':
|
|
75
|
+
case 'time-date':
|
|
76
|
+
const dateText = getLocalizedDateTime(locale, firstParsedDatetime, formatOptions?.date ?? { month: 'short', day: 'numeric', year: 'numeric' });
|
|
77
|
+
const timeText = getLocalizedTime(locale, firstParsedDatetime, computedHourCycle, formatOptions?.time);
|
|
78
|
+
if (preferWheel) {
|
|
79
|
+
this.dateText = `${dateText} ${timeText}`;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
this.dateText = dateText;
|
|
83
|
+
this.timeText = timeText;
|
|
84
|
+
}
|
|
85
|
+
break;
|
|
86
|
+
case 'date':
|
|
87
|
+
if (multiple && parsedValues.length !== 1) {
|
|
88
|
+
let headerText = `${parsedValues.length} days`; // default/fallback for multiple selection
|
|
89
|
+
if (titleSelectedDatesFormatter !== undefined) {
|
|
90
|
+
try {
|
|
91
|
+
headerText = titleSelectedDatesFormatter(parsedValues);
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
printIonError('[ion-datetime-button] - Exception in provided `titleSelectedDatesFormatter`:', e);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
this.dateText = headerText;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, formatOptions?.date ?? { month: 'short', day: 'numeric', year: 'numeric' });
|
|
101
|
+
}
|
|
102
|
+
break;
|
|
103
|
+
case 'time':
|
|
104
|
+
this.timeText = getLocalizedTime(locale, firstParsedDatetime, computedHourCycle, formatOptions?.time);
|
|
105
|
+
break;
|
|
106
|
+
case 'month-year':
|
|
107
|
+
this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, formatOptions?.date ?? { month: 'long', year: 'numeric' });
|
|
108
|
+
break;
|
|
109
|
+
case 'month':
|
|
110
|
+
this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, formatOptions?.time ?? { month: 'long' });
|
|
111
|
+
break;
|
|
112
|
+
case 'year':
|
|
113
|
+
this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, formatOptions?.time ?? { year: 'numeric' });
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Waits for the ion-datetime to re-render.
|
|
119
|
+
* This is needed in order to correctly position
|
|
120
|
+
* a popover relative to the trigger element.
|
|
121
|
+
*/
|
|
122
|
+
this.waitForDatetimeChanges = async () => {
|
|
123
|
+
const { datetimeEl } = this;
|
|
124
|
+
if (!datetimeEl) {
|
|
125
|
+
return Promise.resolve();
|
|
126
|
+
}
|
|
127
|
+
return new Promise((resolve) => {
|
|
128
|
+
addEventListener(datetimeEl, 'ionRender', resolve, { once: true });
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
this.handleDateClick = async (ev) => {
|
|
132
|
+
const { datetimeEl, datetimePresentation } = this;
|
|
133
|
+
if (!datetimeEl) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
let needsPresentationChange = false;
|
|
137
|
+
/**
|
|
138
|
+
* When clicking the date button,
|
|
139
|
+
* we need to make sure that only a date
|
|
140
|
+
* picker is displayed. For presentation styles
|
|
141
|
+
* that display content other than a date picker,
|
|
142
|
+
* we need to update the presentation style.
|
|
143
|
+
*/
|
|
144
|
+
switch (datetimePresentation) {
|
|
145
|
+
case 'date-time':
|
|
146
|
+
case 'time-date':
|
|
147
|
+
const needsChange = datetimeEl.presentation !== 'date';
|
|
148
|
+
/**
|
|
149
|
+
* The date+time wheel picker
|
|
150
|
+
* shows date and time together,
|
|
151
|
+
* so do not adjust the presentation
|
|
152
|
+
* in that case.
|
|
153
|
+
*/
|
|
154
|
+
if (!datetimeEl.preferWheel && needsChange) {
|
|
155
|
+
datetimeEl.presentation = 'date';
|
|
156
|
+
needsPresentationChange = true;
|
|
157
|
+
}
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Track which button was clicked
|
|
162
|
+
* so that it can have the correct
|
|
163
|
+
* activated styles applied when
|
|
164
|
+
* the modal/popover containing
|
|
165
|
+
* the datetime is opened.
|
|
166
|
+
*/
|
|
167
|
+
this.selectedButton = 'date';
|
|
168
|
+
this.presentOverlay(ev, needsPresentationChange, this.dateTargetEl);
|
|
169
|
+
};
|
|
170
|
+
this.handleTimeClick = (ev) => {
|
|
171
|
+
const { datetimeEl, datetimePresentation } = this;
|
|
172
|
+
if (!datetimeEl) {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
let needsPresentationChange = false;
|
|
176
|
+
/**
|
|
177
|
+
* When clicking the time button,
|
|
178
|
+
* we need to make sure that only a time
|
|
179
|
+
* picker is displayed. For presentation styles
|
|
180
|
+
* that display content other than a time picker,
|
|
181
|
+
* we need to update the presentation style.
|
|
182
|
+
*/
|
|
183
|
+
switch (datetimePresentation) {
|
|
184
|
+
case 'date-time':
|
|
185
|
+
case 'time-date':
|
|
186
|
+
const needsChange = datetimeEl.presentation !== 'time';
|
|
187
|
+
if (needsChange) {
|
|
188
|
+
datetimeEl.presentation = 'time';
|
|
189
|
+
needsPresentationChange = true;
|
|
190
|
+
}
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Track which button was clicked
|
|
195
|
+
* so that it can have the correct
|
|
196
|
+
* activated styles applied when
|
|
197
|
+
* the modal/popover containing
|
|
198
|
+
* the datetime is opened.
|
|
199
|
+
*/
|
|
200
|
+
this.selectedButton = 'time';
|
|
201
|
+
this.presentOverlay(ev, needsPresentationChange, this.timeTargetEl);
|
|
202
|
+
};
|
|
203
|
+
/**
|
|
204
|
+
* If the datetime is presented in an
|
|
205
|
+
* overlay, the datetime and overlay
|
|
206
|
+
* should be appropriately sized.
|
|
207
|
+
* These classes provide default sizing values
|
|
208
|
+
* that developers can customize.
|
|
209
|
+
* The goal is to provide an overlay that is
|
|
210
|
+
* reasonably sized with a datetime that
|
|
211
|
+
* fills the entire container.
|
|
212
|
+
*/
|
|
213
|
+
this.presentOverlay = async (ev, needsPresentationChange, triggerEl) => {
|
|
214
|
+
const { overlayEl } = this;
|
|
215
|
+
if (!overlayEl) {
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
if (overlayEl.tagName === 'ION-POPOVER') {
|
|
219
|
+
/**
|
|
220
|
+
* When the presentation on datetime changes,
|
|
221
|
+
* we need to wait for the component to re-render
|
|
222
|
+
* otherwise the computed width/height of the
|
|
223
|
+
* popover content will be wrong, causing
|
|
224
|
+
* the popover to not align with the trigger element.
|
|
225
|
+
*/
|
|
226
|
+
if (needsPresentationChange) {
|
|
227
|
+
await this.waitForDatetimeChanges();
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* We pass the trigger button element
|
|
231
|
+
* so that the popover aligns with the individual
|
|
232
|
+
* button that was clicked, not the component container.
|
|
233
|
+
*/
|
|
234
|
+
overlayEl.present({
|
|
235
|
+
...ev,
|
|
236
|
+
detail: {
|
|
237
|
+
ionShadowTarget: triggerEl,
|
|
238
|
+
},
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
overlayEl.present();
|
|
243
|
+
}
|
|
244
|
+
};
|
|
18
245
|
}
|
|
19
|
-
datetimeEl = null;
|
|
20
|
-
overlayEl = null;
|
|
21
|
-
dateTargetEl;
|
|
22
|
-
timeTargetEl;
|
|
23
|
-
get el() { return getElement(this); }
|
|
24
|
-
datetimePresentation = 'date-time';
|
|
25
|
-
dateText;
|
|
26
|
-
timeText;
|
|
27
|
-
datetimeActive = false;
|
|
28
|
-
selectedButton;
|
|
29
|
-
/**
|
|
30
|
-
* The color to use from your application's color palette.
|
|
31
|
-
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
32
|
-
* For more information on colors, see [theming](/docs/theming/basics).
|
|
33
|
-
*/
|
|
34
|
-
color;
|
|
35
|
-
/**
|
|
36
|
-
* If `true`, the user cannot interact with the button.
|
|
37
|
-
*/
|
|
38
|
-
disabled = false;
|
|
39
|
-
/**
|
|
40
|
-
* The ID of the `ion-datetime` instance
|
|
41
|
-
* associated with the datetime button.
|
|
42
|
-
*/
|
|
43
|
-
datetime;
|
|
44
246
|
async componentWillLoad() {
|
|
45
247
|
const { datetime } = this;
|
|
46
248
|
if (!datetime) {
|
|
@@ -129,225 +331,6 @@ const DatetimeButton = class {
|
|
|
129
331
|
}
|
|
130
332
|
});
|
|
131
333
|
}
|
|
132
|
-
/**
|
|
133
|
-
* Accepts one or more string values and converts
|
|
134
|
-
* them to DatetimeParts. This is done so datetime-button
|
|
135
|
-
* can work with an array internally and not need
|
|
136
|
-
* to keep checking if the datetime value is `string` or `string[]`.
|
|
137
|
-
*/
|
|
138
|
-
getParsedDateValues = (value) => {
|
|
139
|
-
if (value === undefined || value === null) {
|
|
140
|
-
return [];
|
|
141
|
-
}
|
|
142
|
-
if (Array.isArray(value)) {
|
|
143
|
-
return value;
|
|
144
|
-
}
|
|
145
|
-
return [value];
|
|
146
|
-
};
|
|
147
|
-
/**
|
|
148
|
-
* Check the value property on the linked
|
|
149
|
-
* ion-datetime and then format it according
|
|
150
|
-
* to the locale specified on ion-datetime.
|
|
151
|
-
*/
|
|
152
|
-
setDateTimeText = async () => {
|
|
153
|
-
const { datetimeEl, datetimePresentation } = this;
|
|
154
|
-
if (!datetimeEl) {
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
const { value, locale, formatOptions, hourCycle, preferWheel, multiple, titleSelectedDatesFormatter } = datetimeEl;
|
|
158
|
-
const parsedValues = this.getParsedDateValues(value);
|
|
159
|
-
/**
|
|
160
|
-
* Both ion-datetime and ion-datetime-button default to today's date and
|
|
161
|
-
* time if no value is set. We read the datetime's computed default so the
|
|
162
|
-
* button respects the same constraints (min, max, minuteValues, etc.) that
|
|
163
|
-
* the datetime applies to its own fallback, instead of using a raw "now".
|
|
164
|
-
*/
|
|
165
|
-
const parsedDatetimes = parsedValues.length > 0 ? parseDate(parsedValues) : [await datetimeEl.getDefaultPart()];
|
|
166
|
-
if (!parsedDatetimes) {
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* If developers incorrectly use multiple="true"
|
|
171
|
-
* with non "date" datetimes, then just select
|
|
172
|
-
* the first value so the interface does
|
|
173
|
-
* not appear broken. Datetime will provide a
|
|
174
|
-
* warning in the console.
|
|
175
|
-
*/
|
|
176
|
-
const firstParsedDatetime = parsedDatetimes[0];
|
|
177
|
-
const computedHourCycle = getHourCycle(locale, hourCycle);
|
|
178
|
-
this.dateText = this.timeText = undefined;
|
|
179
|
-
switch (datetimePresentation) {
|
|
180
|
-
case 'date-time':
|
|
181
|
-
case 'time-date':
|
|
182
|
-
const dateText = getLocalizedDateTime(locale, firstParsedDatetime, formatOptions?.date ?? { month: 'short', day: 'numeric', year: 'numeric' });
|
|
183
|
-
const timeText = getLocalizedTime(locale, firstParsedDatetime, computedHourCycle, formatOptions?.time);
|
|
184
|
-
if (preferWheel) {
|
|
185
|
-
this.dateText = `${dateText} ${timeText}`;
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
this.dateText = dateText;
|
|
189
|
-
this.timeText = timeText;
|
|
190
|
-
}
|
|
191
|
-
break;
|
|
192
|
-
case 'date':
|
|
193
|
-
if (multiple && parsedValues.length !== 1) {
|
|
194
|
-
let headerText = `${parsedValues.length} days`; // default/fallback for multiple selection
|
|
195
|
-
if (titleSelectedDatesFormatter !== undefined) {
|
|
196
|
-
try {
|
|
197
|
-
headerText = titleSelectedDatesFormatter(parsedValues);
|
|
198
|
-
}
|
|
199
|
-
catch (e) {
|
|
200
|
-
printIonError('[ion-datetime-button] - Exception in provided `titleSelectedDatesFormatter`:', e);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
this.dateText = headerText;
|
|
204
|
-
}
|
|
205
|
-
else {
|
|
206
|
-
this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, formatOptions?.date ?? { month: 'short', day: 'numeric', year: 'numeric' });
|
|
207
|
-
}
|
|
208
|
-
break;
|
|
209
|
-
case 'time':
|
|
210
|
-
this.timeText = getLocalizedTime(locale, firstParsedDatetime, computedHourCycle, formatOptions?.time);
|
|
211
|
-
break;
|
|
212
|
-
case 'month-year':
|
|
213
|
-
this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, formatOptions?.date ?? { month: 'long', year: 'numeric' });
|
|
214
|
-
break;
|
|
215
|
-
case 'month':
|
|
216
|
-
this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, formatOptions?.time ?? { month: 'long' });
|
|
217
|
-
break;
|
|
218
|
-
case 'year':
|
|
219
|
-
this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, formatOptions?.time ?? { year: 'numeric' });
|
|
220
|
-
break;
|
|
221
|
-
}
|
|
222
|
-
};
|
|
223
|
-
/**
|
|
224
|
-
* Waits for the ion-datetime to re-render.
|
|
225
|
-
* This is needed in order to correctly position
|
|
226
|
-
* a popover relative to the trigger element.
|
|
227
|
-
*/
|
|
228
|
-
waitForDatetimeChanges = async () => {
|
|
229
|
-
const { datetimeEl } = this;
|
|
230
|
-
if (!datetimeEl) {
|
|
231
|
-
return Promise.resolve();
|
|
232
|
-
}
|
|
233
|
-
return new Promise((resolve) => {
|
|
234
|
-
addEventListener(datetimeEl, 'ionRender', resolve, { once: true });
|
|
235
|
-
});
|
|
236
|
-
};
|
|
237
|
-
handleDateClick = async (ev) => {
|
|
238
|
-
const { datetimeEl, datetimePresentation } = this;
|
|
239
|
-
if (!datetimeEl) {
|
|
240
|
-
return;
|
|
241
|
-
}
|
|
242
|
-
let needsPresentationChange = false;
|
|
243
|
-
/**
|
|
244
|
-
* When clicking the date button,
|
|
245
|
-
* we need to make sure that only a date
|
|
246
|
-
* picker is displayed. For presentation styles
|
|
247
|
-
* that display content other than a date picker,
|
|
248
|
-
* we need to update the presentation style.
|
|
249
|
-
*/
|
|
250
|
-
switch (datetimePresentation) {
|
|
251
|
-
case 'date-time':
|
|
252
|
-
case 'time-date':
|
|
253
|
-
const needsChange = datetimeEl.presentation !== 'date';
|
|
254
|
-
/**
|
|
255
|
-
* The date+time wheel picker
|
|
256
|
-
* shows date and time together,
|
|
257
|
-
* so do not adjust the presentation
|
|
258
|
-
* in that case.
|
|
259
|
-
*/
|
|
260
|
-
if (!datetimeEl.preferWheel && needsChange) {
|
|
261
|
-
datetimeEl.presentation = 'date';
|
|
262
|
-
needsPresentationChange = true;
|
|
263
|
-
}
|
|
264
|
-
break;
|
|
265
|
-
}
|
|
266
|
-
/**
|
|
267
|
-
* Track which button was clicked
|
|
268
|
-
* so that it can have the correct
|
|
269
|
-
* activated styles applied when
|
|
270
|
-
* the modal/popover containing
|
|
271
|
-
* the datetime is opened.
|
|
272
|
-
*/
|
|
273
|
-
this.selectedButton = 'date';
|
|
274
|
-
this.presentOverlay(ev, needsPresentationChange, this.dateTargetEl);
|
|
275
|
-
};
|
|
276
|
-
handleTimeClick = (ev) => {
|
|
277
|
-
const { datetimeEl, datetimePresentation } = this;
|
|
278
|
-
if (!datetimeEl) {
|
|
279
|
-
return;
|
|
280
|
-
}
|
|
281
|
-
let needsPresentationChange = false;
|
|
282
|
-
/**
|
|
283
|
-
* When clicking the time button,
|
|
284
|
-
* we need to make sure that only a time
|
|
285
|
-
* picker is displayed. For presentation styles
|
|
286
|
-
* that display content other than a time picker,
|
|
287
|
-
* we need to update the presentation style.
|
|
288
|
-
*/
|
|
289
|
-
switch (datetimePresentation) {
|
|
290
|
-
case 'date-time':
|
|
291
|
-
case 'time-date':
|
|
292
|
-
const needsChange = datetimeEl.presentation !== 'time';
|
|
293
|
-
if (needsChange) {
|
|
294
|
-
datetimeEl.presentation = 'time';
|
|
295
|
-
needsPresentationChange = true;
|
|
296
|
-
}
|
|
297
|
-
break;
|
|
298
|
-
}
|
|
299
|
-
/**
|
|
300
|
-
* Track which button was clicked
|
|
301
|
-
* so that it can have the correct
|
|
302
|
-
* activated styles applied when
|
|
303
|
-
* the modal/popover containing
|
|
304
|
-
* the datetime is opened.
|
|
305
|
-
*/
|
|
306
|
-
this.selectedButton = 'time';
|
|
307
|
-
this.presentOverlay(ev, needsPresentationChange, this.timeTargetEl);
|
|
308
|
-
};
|
|
309
|
-
/**
|
|
310
|
-
* If the datetime is presented in an
|
|
311
|
-
* overlay, the datetime and overlay
|
|
312
|
-
* should be appropriately sized.
|
|
313
|
-
* These classes provide default sizing values
|
|
314
|
-
* that developers can customize.
|
|
315
|
-
* The goal is to provide an overlay that is
|
|
316
|
-
* reasonably sized with a datetime that
|
|
317
|
-
* fills the entire container.
|
|
318
|
-
*/
|
|
319
|
-
presentOverlay = async (ev, needsPresentationChange, triggerEl) => {
|
|
320
|
-
const { overlayEl } = this;
|
|
321
|
-
if (!overlayEl) {
|
|
322
|
-
return;
|
|
323
|
-
}
|
|
324
|
-
if (overlayEl.tagName === 'ION-POPOVER') {
|
|
325
|
-
/**
|
|
326
|
-
* When the presentation on datetime changes,
|
|
327
|
-
* we need to wait for the component to re-render
|
|
328
|
-
* otherwise the computed width/height of the
|
|
329
|
-
* popover content will be wrong, causing
|
|
330
|
-
* the popover to not align with the trigger element.
|
|
331
|
-
*/
|
|
332
|
-
if (needsPresentationChange) {
|
|
333
|
-
await this.waitForDatetimeChanges();
|
|
334
|
-
}
|
|
335
|
-
/**
|
|
336
|
-
* We pass the trigger button element
|
|
337
|
-
* so that the popover aligns with the individual
|
|
338
|
-
* button that was clicked, not the component container.
|
|
339
|
-
*/
|
|
340
|
-
overlayEl.present({
|
|
341
|
-
...ev,
|
|
342
|
-
detail: {
|
|
343
|
-
ionShadowTarget: triggerEl,
|
|
344
|
-
},
|
|
345
|
-
});
|
|
346
|
-
}
|
|
347
|
-
else {
|
|
348
|
-
overlayEl.present();
|
|
349
|
-
}
|
|
350
|
-
};
|
|
351
334
|
render() {
|
|
352
335
|
const { color, dateText, timeText, selectedButton, datetimeActive, disabled } = this;
|
|
353
336
|
const mode = getIonMode(this);
|
|
@@ -357,6 +340,7 @@ const DatetimeButton = class {
|
|
|
357
340
|
['datetime-button-disabled']: disabled,
|
|
358
341
|
}) }, dateText && (h("button", { key: 'd9698471fa5d5c834ca73db57f9ed98dfc705b4c', class: "ion-activatable", id: "date-button", "aria-expanded": datetimeActive ? 'true' : 'false', onClick: this.handleDateClick, disabled: disabled, part: "native", ref: (el) => (this.dateTargetEl = el) }, h("slot", { key: 'c8761a7f25ae5b93c953b3486dd6335f5ad4fd53', name: "date-target" }, dateText), mode === 'md' && h("ion-ripple-effect", { key: '3dd5e97af8d35a2b008de4ab01f690b3c2223135' }))), timeText && (h("button", { key: '1107ca2382940b642b551f885f7ca763012c236c', class: "ion-activatable", id: "time-button", "aria-expanded": datetimeActive ? 'true' : 'false', onClick: this.handleTimeClick, disabled: disabled, part: "native", ref: (el) => (this.timeTargetEl = el) }, h("slot", { key: '5cff53e486923b03715b9ab4dc0947e26f4ea1d9', name: "time-target" }, timeText), mode === 'md' && h("ion-ripple-effect", { key: '5aac1facb6fc7457307c4f59a241e3a5b31facc8' })))));
|
|
359
342
|
}
|
|
343
|
+
get el() { return getElement(this); }
|
|
360
344
|
};
|
|
361
345
|
DatetimeButton.style = {
|
|
362
346
|
ios: datetimeButtonIosCss(),
|