@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
|
@@ -43,48 +43,226 @@ import { roundToMaxDecimalPlaces } from "../../utils/floating-point";
|
|
|
43
43
|
* @part pressed - Added to the knob-handle, knob, and pin that is currently being pressed to drag. Only one set has this part at a time when `dualKnobs` is `true`.
|
|
44
44
|
*/
|
|
45
45
|
export class Range {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
46
|
+
constructor() {
|
|
47
|
+
this.rangeId = `ion-r-${rangeIds++}`;
|
|
48
|
+
this.didLoad = false;
|
|
49
|
+
this.noUpdate = false;
|
|
50
|
+
this.hasFocus = false;
|
|
51
|
+
this.inheritedAttributes = {};
|
|
52
|
+
this.contentEl = null;
|
|
53
|
+
this.initialContentScrollY = true;
|
|
54
|
+
/**
|
|
55
|
+
* Used to avoid setting the focused state on click or tap. The focused
|
|
56
|
+
* state is only set when the focus comes from the keyboard (e.g. Tab).
|
|
57
|
+
* This is set to true on pointer down (mouse/touch).
|
|
58
|
+
*/
|
|
59
|
+
this.focusFromPointer = false;
|
|
60
|
+
this.ratioA = 0;
|
|
61
|
+
this.ratioB = 0;
|
|
62
|
+
/**
|
|
63
|
+
* The name of the control, which is submitted with the form data.
|
|
64
|
+
*/
|
|
65
|
+
this.name = this.rangeId;
|
|
66
|
+
/**
|
|
67
|
+
* If `true`, the range shows two knobs and `value` is an object with `lower`
|
|
68
|
+
* and `upper` properties. If `false`, the range shows one knob and `value` is
|
|
69
|
+
* a number.
|
|
70
|
+
*/
|
|
71
|
+
this.dualKnobs = false;
|
|
72
|
+
/**
|
|
73
|
+
* Minimum integer value of the range.
|
|
74
|
+
*/
|
|
75
|
+
this.min = 0;
|
|
76
|
+
/**
|
|
77
|
+
* Maximum integer value of the range.
|
|
78
|
+
*/
|
|
79
|
+
this.max = 100;
|
|
80
|
+
/**
|
|
81
|
+
* If `true`, a pin with integer value is shown when the knob
|
|
82
|
+
* is pressed.
|
|
83
|
+
*/
|
|
84
|
+
this.pin = false;
|
|
85
|
+
/**
|
|
86
|
+
* A callback used to format the pin text.
|
|
87
|
+
* By default the pin text is set to `Math.round(value)`.
|
|
88
|
+
*
|
|
89
|
+
* See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this
|
|
90
|
+
* if you need to access `this` from within the callback.
|
|
91
|
+
*/
|
|
92
|
+
this.pinFormatter = (value) => Math.round(value);
|
|
93
|
+
/**
|
|
94
|
+
* If `true`, the knob snaps to tick marks evenly spaced based
|
|
95
|
+
* on the step property value.
|
|
96
|
+
*/
|
|
97
|
+
this.snaps = false;
|
|
98
|
+
/**
|
|
99
|
+
* Specifies the value granularity.
|
|
100
|
+
*/
|
|
101
|
+
this.step = 1;
|
|
102
|
+
/**
|
|
103
|
+
* If `true`, tick marks are displayed based on the step value.
|
|
104
|
+
* Only applies when `snaps` is `true`.
|
|
105
|
+
*/
|
|
106
|
+
this.ticks = true;
|
|
107
|
+
/**
|
|
108
|
+
* If `true`, the user cannot interact with the range.
|
|
109
|
+
*/
|
|
110
|
+
this.disabled = false;
|
|
111
|
+
/**
|
|
112
|
+
* the value of the range.
|
|
113
|
+
*/
|
|
114
|
+
this.value = 0;
|
|
115
|
+
/**
|
|
116
|
+
* Compares two RangeValue inputs to determine if they are different.
|
|
117
|
+
*
|
|
118
|
+
* @param newVal - The new value.
|
|
119
|
+
* @param oldVal - The old value.
|
|
120
|
+
* @returns `true` if the values are different, `false` otherwise.
|
|
121
|
+
*/
|
|
122
|
+
this.compareValues = (newVal, oldVal) => {
|
|
123
|
+
if (typeof newVal === 'object' && typeof oldVal === 'object') {
|
|
124
|
+
return newVal.lower !== oldVal.lower || newVal.upper !== oldVal.upper;
|
|
125
|
+
}
|
|
126
|
+
return newVal !== oldVal;
|
|
127
|
+
};
|
|
128
|
+
this.clampBounds = (value) => {
|
|
129
|
+
return clamp(this.min, value, this.max);
|
|
130
|
+
};
|
|
131
|
+
this.ensureValueInBounds = (value) => {
|
|
132
|
+
if (this.dualKnobs) {
|
|
133
|
+
return {
|
|
134
|
+
lower: this.clampBounds(value.lower),
|
|
135
|
+
upper: this.clampBounds(value.upper),
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
return this.clampBounds(value);
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* Where to place the label relative to the range.
|
|
144
|
+
* `"start"`: The label will appear to the left of the range in LTR and to the right in RTL.
|
|
145
|
+
* `"end"`: The label will appear to the right of the range in LTR and to the left in RTL.
|
|
146
|
+
* `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
|
|
147
|
+
* `"stacked"`: The label will appear above the range regardless of the direction.
|
|
148
|
+
*/
|
|
149
|
+
this.labelPlacement = 'start';
|
|
150
|
+
this.setupGesture = async () => {
|
|
151
|
+
const rangeSlider = this.rangeSlider;
|
|
152
|
+
if (rangeSlider) {
|
|
153
|
+
this.gesture = (await import('../../utils/gesture')).createGesture({
|
|
154
|
+
el: rangeSlider,
|
|
155
|
+
gestureName: 'range',
|
|
156
|
+
gesturePriority: 100,
|
|
157
|
+
/**
|
|
158
|
+
* Provide a threshold since the drag movement
|
|
159
|
+
* might be a user scrolling the view.
|
|
160
|
+
* If this is true, then the range
|
|
161
|
+
* should not move.
|
|
162
|
+
*/
|
|
163
|
+
threshold: 10,
|
|
164
|
+
onStart: () => this.onStart(),
|
|
165
|
+
onMove: (ev) => this.onMove(ev),
|
|
166
|
+
onEnd: (ev) => this.onEnd(ev),
|
|
167
|
+
});
|
|
168
|
+
this.gesture.enable(!this.disabled);
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
/**
|
|
172
|
+
* Observes the knob handles for the ion-activated class and syncs
|
|
173
|
+
* activatedKnob so the activated part is correctly set on the handle,
|
|
174
|
+
* knob, and pin.
|
|
175
|
+
*/
|
|
176
|
+
this.setupActivatedObserver = () => {
|
|
177
|
+
const knobHandleA = this.el.shadowRoot.querySelector('.range-knob-handle-a');
|
|
178
|
+
const knobHandleB = this.el.shadowRoot.querySelector('.range-knob-handle-b');
|
|
179
|
+
const syncActivated = () => {
|
|
180
|
+
this.activatedKnob = knobHandleA?.classList.contains('ion-activated')
|
|
181
|
+
? 'A'
|
|
182
|
+
: knobHandleB?.classList.contains('ion-activated')
|
|
183
|
+
? 'B'
|
|
184
|
+
: undefined;
|
|
185
|
+
};
|
|
186
|
+
if (Build.isBrowser && typeof MutationObserver !== 'undefined') {
|
|
187
|
+
this.activatedObserver = new MutationObserver(syncActivated);
|
|
188
|
+
this.activatedObserver.observe(this.el.shadowRoot, {
|
|
189
|
+
attributes: true,
|
|
190
|
+
attributeFilter: ['class'],
|
|
191
|
+
subtree: true,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
syncActivated();
|
|
195
|
+
};
|
|
196
|
+
this.handleKeyboard = (knob, isIncrease) => {
|
|
197
|
+
const { ensureValueInBounds } = this;
|
|
198
|
+
let step = this.step;
|
|
199
|
+
step = step > 0 ? step : 1;
|
|
200
|
+
step = step / (this.max - this.min);
|
|
201
|
+
if (!isIncrease) {
|
|
202
|
+
step *= -1;
|
|
203
|
+
}
|
|
204
|
+
if (knob === 'A') {
|
|
205
|
+
this.ratioA = clamp(0, this.ratioA + step, 1);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
this.ratioB = clamp(0, this.ratioB + step, 1);
|
|
209
|
+
}
|
|
210
|
+
this.ionKnobMoveStart.emit({ value: ensureValueInBounds(this.value) });
|
|
211
|
+
this.updateValue();
|
|
212
|
+
this.emitValueChange();
|
|
213
|
+
this.ionKnobMoveEnd.emit({ value: ensureValueInBounds(this.value) });
|
|
214
|
+
};
|
|
215
|
+
this.onBlur = () => {
|
|
216
|
+
if (this.hasFocus) {
|
|
217
|
+
this.hasFocus = false;
|
|
218
|
+
this.focusedKnob = undefined;
|
|
219
|
+
this.ionBlur.emit();
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
this.onFocus = () => {
|
|
223
|
+
if (!this.hasFocus) {
|
|
224
|
+
this.hasFocus = true;
|
|
225
|
+
this.ionFocus.emit();
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
this.onKnobFocus = (knob) => {
|
|
229
|
+
// Clicking focuses the range which is needed for the keyboard,
|
|
230
|
+
// but we only want to add the ion-focused class when focused via Tab.
|
|
231
|
+
if (!this.focusFromPointer) {
|
|
232
|
+
this.focusedKnob = knob;
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
this.focusFromPointer = false;
|
|
236
|
+
this.focusedKnob = undefined;
|
|
237
|
+
}
|
|
238
|
+
// If the knob was not already focused, emit the focus event
|
|
239
|
+
if (!this.hasFocus) {
|
|
240
|
+
this.hasFocus = true;
|
|
241
|
+
this.ionFocus.emit();
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
this.onKnobBlur = () => {
|
|
245
|
+
// Check if focus is moving to another knob within the same range
|
|
246
|
+
// by delaying the reset to allow the new focus to register
|
|
247
|
+
setTimeout(() => {
|
|
248
|
+
const activeElement = this.el.shadowRoot?.activeElement;
|
|
249
|
+
const isStillFocusedOnKnob = activeElement && activeElement.classList.contains('range-knob-handle');
|
|
250
|
+
if (!isStillFocusedOnKnob) {
|
|
251
|
+
if (this.hasFocus) {
|
|
252
|
+
this.hasFocus = false;
|
|
253
|
+
this.focusedKnob = undefined;
|
|
254
|
+
this.ionBlur.emit();
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}, 0);
|
|
258
|
+
};
|
|
259
|
+
this.onKnobMouseEnter = (knob) => {
|
|
260
|
+
this.hoveredKnob = knob;
|
|
261
|
+
};
|
|
262
|
+
this.onKnobMouseLeave = () => {
|
|
263
|
+
this.hoveredKnob = undefined;
|
|
264
|
+
};
|
|
265
|
+
}
|
|
88
266
|
debounceChanged() {
|
|
89
267
|
const { ionInput, debounce, originalIonInput } = this;
|
|
90
268
|
/**
|
|
@@ -93,31 +271,11 @@ export class Range {
|
|
|
93
271
|
*/
|
|
94
272
|
this.ionInput = debounce === undefined ? originalIonInput ?? ionInput : debounceEvent(ionInput, debounce);
|
|
95
273
|
}
|
|
96
|
-
/**
|
|
97
|
-
* The name of the control, which is submitted with the form data.
|
|
98
|
-
*/
|
|
99
|
-
name = this.rangeId;
|
|
100
|
-
/**
|
|
101
|
-
* The text to display as the control's label. Use this over the `label` slot if
|
|
102
|
-
* you only need plain text. The `label` property will take priority over the
|
|
103
|
-
* `label` slot if both are used.
|
|
104
|
-
*/
|
|
105
|
-
label;
|
|
106
|
-
/**
|
|
107
|
-
* If `true`, the range shows two knobs and `value` is an object with `lower`
|
|
108
|
-
* and `upper` properties. If `false`, the range shows one knob and `value` is
|
|
109
|
-
* a number.
|
|
110
|
-
*/
|
|
111
|
-
dualKnobs = false;
|
|
112
274
|
dualKnobsChanged() {
|
|
113
275
|
if (!this.noUpdate) {
|
|
114
276
|
this.updateRatio();
|
|
115
277
|
}
|
|
116
278
|
}
|
|
117
|
-
/**
|
|
118
|
-
* Minimum integer value of the range.
|
|
119
|
-
*/
|
|
120
|
-
min = 0;
|
|
121
279
|
minChanged(newValue) {
|
|
122
280
|
if (!isSafeNumber(newValue)) {
|
|
123
281
|
this.min = 0;
|
|
@@ -126,10 +284,6 @@ export class Range {
|
|
|
126
284
|
this.updateRatio();
|
|
127
285
|
}
|
|
128
286
|
}
|
|
129
|
-
/**
|
|
130
|
-
* Maximum integer value of the range.
|
|
131
|
-
*/
|
|
132
|
-
max = 100;
|
|
133
287
|
maxChanged(newValue) {
|
|
134
288
|
if (!isSafeNumber(newValue)) {
|
|
135
289
|
this.max = 100;
|
|
@@ -138,43 +292,11 @@ export class Range {
|
|
|
138
292
|
this.updateRatio();
|
|
139
293
|
}
|
|
140
294
|
}
|
|
141
|
-
/**
|
|
142
|
-
* If `true`, a pin with integer value is shown when the knob
|
|
143
|
-
* is pressed.
|
|
144
|
-
*/
|
|
145
|
-
pin = false;
|
|
146
|
-
/**
|
|
147
|
-
* A callback used to format the pin text.
|
|
148
|
-
* By default the pin text is set to `Math.round(value)`.
|
|
149
|
-
*
|
|
150
|
-
* See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this
|
|
151
|
-
* if you need to access `this` from within the callback.
|
|
152
|
-
*/
|
|
153
|
-
pinFormatter = (value) => Math.round(value);
|
|
154
|
-
/**
|
|
155
|
-
* If `true`, the knob snaps to tick marks evenly spaced based
|
|
156
|
-
* on the step property value.
|
|
157
|
-
*/
|
|
158
|
-
snaps = false;
|
|
159
|
-
/**
|
|
160
|
-
* Specifies the value granularity.
|
|
161
|
-
*/
|
|
162
|
-
step = 1;
|
|
163
295
|
stepChanged(newValue) {
|
|
164
296
|
if (!isSafeNumber(newValue)) {
|
|
165
297
|
this.step = 1;
|
|
166
298
|
}
|
|
167
299
|
}
|
|
168
|
-
/**
|
|
169
|
-
* If `true`, tick marks are displayed based on the step value.
|
|
170
|
-
* Only applies when `snaps` is `true`.
|
|
171
|
-
*/
|
|
172
|
-
ticks = true;
|
|
173
|
-
/**
|
|
174
|
-
* The start position of the range active bar. This feature is only available with a single knob (dualKnobs="false").
|
|
175
|
-
* Valid values are greater than or equal to the min value and less than or equal to the max value.
|
|
176
|
-
*/
|
|
177
|
-
activeBarStart;
|
|
178
300
|
activeBarStartChanged() {
|
|
179
301
|
const { activeBarStart } = this;
|
|
180
302
|
if (activeBarStart !== undefined) {
|
|
@@ -188,19 +310,11 @@ export class Range {
|
|
|
188
310
|
}
|
|
189
311
|
}
|
|
190
312
|
}
|
|
191
|
-
/**
|
|
192
|
-
* If `true`, the user cannot interact with the range.
|
|
193
|
-
*/
|
|
194
|
-
disabled = false;
|
|
195
313
|
disabledChanged() {
|
|
196
314
|
if (this.gesture) {
|
|
197
315
|
this.gesture.enable(!this.disabled);
|
|
198
316
|
}
|
|
199
317
|
}
|
|
200
|
-
/**
|
|
201
|
-
* the value of the range.
|
|
202
|
-
*/
|
|
203
|
-
value = 0;
|
|
204
318
|
valueChanged(newValue, oldValue) {
|
|
205
319
|
const valuesChanged = this.compareValues(newValue, oldValue);
|
|
206
320
|
if (valuesChanged) {
|
|
@@ -210,120 +324,6 @@ export class Range {
|
|
|
210
324
|
this.updateRatio();
|
|
211
325
|
}
|
|
212
326
|
}
|
|
213
|
-
/**
|
|
214
|
-
* Compares two RangeValue inputs to determine if they are different.
|
|
215
|
-
*
|
|
216
|
-
* @param newVal - The new value.
|
|
217
|
-
* @param oldVal - The old value.
|
|
218
|
-
* @returns `true` if the values are different, `false` otherwise.
|
|
219
|
-
*/
|
|
220
|
-
compareValues = (newVal, oldVal) => {
|
|
221
|
-
if (typeof newVal === 'object' && typeof oldVal === 'object') {
|
|
222
|
-
return newVal.lower !== oldVal.lower || newVal.upper !== oldVal.upper;
|
|
223
|
-
}
|
|
224
|
-
return newVal !== oldVal;
|
|
225
|
-
};
|
|
226
|
-
clampBounds = (value) => {
|
|
227
|
-
return clamp(this.min, value, this.max);
|
|
228
|
-
};
|
|
229
|
-
ensureValueInBounds = (value) => {
|
|
230
|
-
if (this.dualKnobs) {
|
|
231
|
-
return {
|
|
232
|
-
lower: this.clampBounds(value.lower),
|
|
233
|
-
upper: this.clampBounds(value.upper),
|
|
234
|
-
};
|
|
235
|
-
}
|
|
236
|
-
else {
|
|
237
|
-
return this.clampBounds(value);
|
|
238
|
-
}
|
|
239
|
-
};
|
|
240
|
-
/**
|
|
241
|
-
* Where to place the label relative to the range.
|
|
242
|
-
* `"start"`: The label will appear to the left of the range in LTR and to the right in RTL.
|
|
243
|
-
* `"end"`: The label will appear to the right of the range in LTR and to the left in RTL.
|
|
244
|
-
* `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
|
|
245
|
-
* `"stacked"`: The label will appear above the range regardless of the direction.
|
|
246
|
-
*/
|
|
247
|
-
labelPlacement = 'start';
|
|
248
|
-
/**
|
|
249
|
-
* The `ionChange` event is fired for `<ion-range>` elements when the user
|
|
250
|
-
* modifies the element's value:
|
|
251
|
-
* - When the user releases the knob after dragging;
|
|
252
|
-
* - When the user moves the knob with keyboard arrows
|
|
253
|
-
*
|
|
254
|
-
* This event will not emit when programmatically setting the `value` property.
|
|
255
|
-
*/
|
|
256
|
-
ionChange;
|
|
257
|
-
/**
|
|
258
|
-
* The `ionInput` event is fired for `<ion-range>` elements when the value
|
|
259
|
-
* is modified. Unlike `ionChange`, `ionInput` is fired continuously
|
|
260
|
-
* while the user is dragging the knob.
|
|
261
|
-
*/
|
|
262
|
-
ionInput;
|
|
263
|
-
/**
|
|
264
|
-
* Emitted when the range has focus.
|
|
265
|
-
*/
|
|
266
|
-
ionFocus;
|
|
267
|
-
/**
|
|
268
|
-
* Emitted when the range loses focus.
|
|
269
|
-
*/
|
|
270
|
-
ionBlur;
|
|
271
|
-
/**
|
|
272
|
-
* Emitted when the user starts moving the range knob, whether through
|
|
273
|
-
* mouse drag, touch gesture, or keyboard interaction.
|
|
274
|
-
*/
|
|
275
|
-
ionKnobMoveStart;
|
|
276
|
-
/**
|
|
277
|
-
* Emitted when the user finishes moving the range knob, whether through
|
|
278
|
-
* mouse drag, touch gesture, or keyboard interaction.
|
|
279
|
-
*/
|
|
280
|
-
ionKnobMoveEnd;
|
|
281
|
-
setupGesture = async () => {
|
|
282
|
-
const rangeSlider = this.rangeSlider;
|
|
283
|
-
if (rangeSlider) {
|
|
284
|
-
this.gesture = (await import('../../utils/gesture')).createGesture({
|
|
285
|
-
el: rangeSlider,
|
|
286
|
-
gestureName: 'range',
|
|
287
|
-
gesturePriority: 100,
|
|
288
|
-
/**
|
|
289
|
-
* Provide a threshold since the drag movement
|
|
290
|
-
* might be a user scrolling the view.
|
|
291
|
-
* If this is true, then the range
|
|
292
|
-
* should not move.
|
|
293
|
-
*/
|
|
294
|
-
threshold: 10,
|
|
295
|
-
onStart: () => this.onStart(),
|
|
296
|
-
onMove: (ev) => this.onMove(ev),
|
|
297
|
-
onEnd: (ev) => this.onEnd(ev),
|
|
298
|
-
});
|
|
299
|
-
this.gesture.enable(!this.disabled);
|
|
300
|
-
}
|
|
301
|
-
};
|
|
302
|
-
/**
|
|
303
|
-
* Observes the knob handles for the ion-activated class and syncs
|
|
304
|
-
* activatedKnob so the activated part is correctly set on the handle,
|
|
305
|
-
* knob, and pin.
|
|
306
|
-
*/
|
|
307
|
-
setupActivatedObserver = () => {
|
|
308
|
-
const knobHandleA = this.el.shadowRoot.querySelector('.range-knob-handle-a');
|
|
309
|
-
const knobHandleB = this.el.shadowRoot.querySelector('.range-knob-handle-b');
|
|
310
|
-
const syncActivated = () => {
|
|
311
|
-
this.activatedKnob = knobHandleA?.classList.contains('ion-activated')
|
|
312
|
-
? 'A'
|
|
313
|
-
: knobHandleB?.classList.contains('ion-activated')
|
|
314
|
-
? 'B'
|
|
315
|
-
: undefined;
|
|
316
|
-
};
|
|
317
|
-
if (Build.isBrowser && typeof MutationObserver !== 'undefined') {
|
|
318
|
-
this.activatedObserver = new MutationObserver(syncActivated);
|
|
319
|
-
this.activatedObserver.observe(this.el.shadowRoot, {
|
|
320
|
-
attributes: true,
|
|
321
|
-
attributeFilter: ['class'],
|
|
322
|
-
subtree: true,
|
|
323
|
-
});
|
|
324
|
-
}
|
|
325
|
-
syncActivated();
|
|
326
|
-
};
|
|
327
327
|
componentWillLoad() {
|
|
328
328
|
/**
|
|
329
329
|
* If user has custom ID set then we should
|
|
@@ -374,25 +374,6 @@ export class Range {
|
|
|
374
374
|
this.activatedObserver = undefined;
|
|
375
375
|
}
|
|
376
376
|
}
|
|
377
|
-
handleKeyboard = (knob, isIncrease) => {
|
|
378
|
-
const { ensureValueInBounds } = this;
|
|
379
|
-
let step = this.step;
|
|
380
|
-
step = step > 0 ? step : 1;
|
|
381
|
-
step = step / (this.max - this.min);
|
|
382
|
-
if (!isIncrease) {
|
|
383
|
-
step *= -1;
|
|
384
|
-
}
|
|
385
|
-
if (knob === 'A') {
|
|
386
|
-
this.ratioA = clamp(0, this.ratioA + step, 1);
|
|
387
|
-
}
|
|
388
|
-
else {
|
|
389
|
-
this.ratioB = clamp(0, this.ratioB + step, 1);
|
|
390
|
-
}
|
|
391
|
-
this.ionKnobMoveStart.emit({ value: ensureValueInBounds(this.value) });
|
|
392
|
-
this.updateValue();
|
|
393
|
-
this.emitValueChange();
|
|
394
|
-
this.ionKnobMoveEnd.emit({ value: ensureValueInBounds(this.value) });
|
|
395
|
-
};
|
|
396
377
|
getValue() {
|
|
397
378
|
const value = this.value ?? 0;
|
|
398
379
|
if (this.dualKnobs) {
|
|
@@ -601,56 +582,6 @@ export class Range {
|
|
|
601
582
|
};
|
|
602
583
|
this.noUpdate = false;
|
|
603
584
|
}
|
|
604
|
-
onBlur = () => {
|
|
605
|
-
if (this.hasFocus) {
|
|
606
|
-
this.hasFocus = false;
|
|
607
|
-
this.focusedKnob = undefined;
|
|
608
|
-
this.ionBlur.emit();
|
|
609
|
-
}
|
|
610
|
-
};
|
|
611
|
-
onFocus = () => {
|
|
612
|
-
if (!this.hasFocus) {
|
|
613
|
-
this.hasFocus = true;
|
|
614
|
-
this.ionFocus.emit();
|
|
615
|
-
}
|
|
616
|
-
};
|
|
617
|
-
onKnobFocus = (knob) => {
|
|
618
|
-
// Clicking focuses the range which is needed for the keyboard,
|
|
619
|
-
// but we only want to add the ion-focused class when focused via Tab.
|
|
620
|
-
if (!this.focusFromPointer) {
|
|
621
|
-
this.focusedKnob = knob;
|
|
622
|
-
}
|
|
623
|
-
else {
|
|
624
|
-
this.focusFromPointer = false;
|
|
625
|
-
this.focusedKnob = undefined;
|
|
626
|
-
}
|
|
627
|
-
// If the knob was not already focused, emit the focus event
|
|
628
|
-
if (!this.hasFocus) {
|
|
629
|
-
this.hasFocus = true;
|
|
630
|
-
this.ionFocus.emit();
|
|
631
|
-
}
|
|
632
|
-
};
|
|
633
|
-
onKnobBlur = () => {
|
|
634
|
-
// Check if focus is moving to another knob within the same range
|
|
635
|
-
// by delaying the reset to allow the new focus to register
|
|
636
|
-
setTimeout(() => {
|
|
637
|
-
const activeElement = this.el.shadowRoot?.activeElement;
|
|
638
|
-
const isStillFocusedOnKnob = activeElement && activeElement.classList.contains('range-knob-handle');
|
|
639
|
-
if (!isStillFocusedOnKnob) {
|
|
640
|
-
if (this.hasFocus) {
|
|
641
|
-
this.hasFocus = false;
|
|
642
|
-
this.focusedKnob = undefined;
|
|
643
|
-
this.ionBlur.emit();
|
|
644
|
-
}
|
|
645
|
-
}
|
|
646
|
-
}, 0);
|
|
647
|
-
};
|
|
648
|
-
onKnobMouseEnter = (knob) => {
|
|
649
|
-
this.hoveredKnob = knob;
|
|
650
|
-
};
|
|
651
|
-
onKnobMouseLeave = () => {
|
|
652
|
-
this.hoveredKnob = undefined;
|
|
653
|
-
};
|
|
654
585
|
/**
|
|
655
586
|
* Returns true if content was passed to the "start" slot
|
|
656
587
|
*/
|