@ionic/core 8.7.18 → 8.7.19-dev.11772655618.1af0949f
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.d.ts +2 -0
- package/components/index.js +1 -114
- package/components/ion-accordion-group.js +1 -268
- package/components/ion-accordion.js +1 -456
- package/components/ion-action-sheet.js +1 -6
- package/components/ion-alert.js +1 -6
- package/components/ion-app.js +1 -132
- package/components/ion-avatar.js +1 -41
- package/components/ion-back-button.js +1 -130
- package/components/ion-backdrop.js +1 -6
- package/components/ion-badge.js +1 -47
- package/components/ion-breadcrumb.js +1 -137
- package/components/ion-breadcrumbs.js +1 -164
- package/components/ion-button.js +1 -6
- package/components/ion-buttons.js +1 -6
- package/components/ion-card-content.js +1 -45
- package/components/ion-card-header.js +1 -56
- package/components/ion-card-subtitle.js +1 -48
- package/components/ion-card-title.js +1 -48
- package/components/ion-card.js +1 -107
- package/components/ion-checkbox.js +1 -6
- package/components/ion-chip.js +1 -66
- package/components/ion-col.js +1 -163
- package/components/ion-content.js +1 -6
- package/components/ion-datetime-button.js +1 -383
- package/components/ion-datetime.js +1 -2047
- package/components/ion-fab-button.js +1 -151
- package/components/ion-fab-list.js +1 -73
- package/components/ion-fab.js +1 -101
- package/components/ion-footer.js +1 -179
- package/components/ion-grid.js +1 -46
- package/components/ion-header.js +1 -6
- package/components/ion-icon.js +1 -6
- package/components/ion-img.js +1 -133
- package/components/ion-infinite-scroll-content.js +1 -69
- package/components/ion-infinite-scroll.js +1 -236
- package/components/ion-input-otp.js +1 -682
- package/components/ion-input-password-toggle.js +1 -128
- package/components/ion-input.js +1 -646
- package/components/ion-item-divider.js +1 -59
- package/components/ion-item-group.js +1 -46
- package/components/ion-item-option.js +1 -91
- package/components/ion-item-options.js +1 -73
- package/components/ion-item-sliding.js +1 -457
- package/components/ion-item.js +1 -6
- package/components/ion-label.js +1 -6
- package/components/ion-list-header.js +1 -6
- package/components/ion-list.js +1 -6
- package/components/ion-loading.js +1 -343
- package/components/ion-menu-button.js +1 -109
- package/components/ion-menu-toggle.js +1 -64
- package/components/ion-menu.js +1 -741
- package/components/ion-modal.js +1 -6
- package/components/ion-nav-link.js +1 -64
- package/components/ion-nav.js +1 -951
- package/components/ion-note.js +1 -47
- package/components/ion-picker-column-option.js +1 -6
- package/components/ion-picker-column.js +1 -6
- package/components/ion-picker-legacy-column.js +1 -6
- package/components/ion-picker-legacy.js +1 -342
- package/components/ion-picker.js +1 -6
- package/components/ion-popover.js +1 -6
- package/components/ion-progress-bar.js +1 -100
- package/components/ion-radio-group.js +1 -6
- package/components/ion-radio.js +1 -6
- package/components/ion-range.js +1 -844
- package/components/ion-refresher-content.js +1 -88
- package/components/ion-refresher.js +1 -750
- package/components/ion-reorder-group.js +1 -322
- package/components/ion-reorder.js +1 -60
- package/components/ion-ripple-effect.js +1 -6
- package/components/ion-route-redirect.js +1 -45
- package/components/ion-route.js +1 -74
- package/components/ion-router-link.js +1 -61
- package/components/ion-router-outlet.js +1 -226
- package/components/ion-router.js +1 -840
- package/components/ion-row.js +1 -36
- package/components/ion-searchbar.js +1 -540
- package/components/ion-segment-button.js +1 -173
- package/components/ion-segment-content.js +1 -35
- package/components/ion-segment-view.js +1 -142
- package/components/ion-segment.js +1 -602
- package/components/ion-select-modal.js +1 -6
- package/components/ion-select-option.js +1 -46
- package/components/ion-select-popover.js +1 -6
- package/components/ion-select.js +1 -1035
- package/components/ion-skeleton-text.js +1 -64
- package/components/ion-spinner.js +1 -6
- package/components/ion-split-pane.js +1 -190
- package/components/ion-tab-bar.js +1 -135
- package/components/ion-tab-button.js +1 -127
- package/components/ion-tab.js +1 -82
- package/components/ion-tabs.js +1 -204
- package/components/ion-text.js +1 -42
- package/components/ion-textarea.js +1 -554
- package/components/ion-thumbnail.js +1 -36
- package/components/ion-title.js +1 -6
- package/components/ion-toast.js +1 -938
- package/components/ion-toggle.js +1 -360
- package/components/ion-toolbar.js +1 -6
- package/components/p-1KVKSLu5.js +4 -0
- package/{dist/ionic/p-DUt5fQmA.js → components/p-9VcRUwdB.js} +1 -1
- package/components/p-ApmKVjaE.js +4 -0
- package/components/p-B-hirT0v.js +1 -35
- package/components/p-B6FQ0cKR.js +4 -0
- package/components/p-B6HaBl3o.js +4 -0
- package/components/p-B8b1Ukl9.js +4 -0
- package/components/p-BFxT89Wl.js +4 -0
- package/components/p-BJoMtgfR.js +4 -0
- package/components/p-BNAG-aVv.js +4 -0
- package/{dist/ionic/p-D-eFFUkA.js → components/p-BR3tZJmu.js} +1 -1
- package/{dist/ionic/p-D0dMcSkw.js → components/p-BS1TtEiJ.js} +1 -1
- package/components/p-BSB38Tek.js +4 -0
- package/components/p-BTEOs1at.js +1 -192
- package/components/p-BTeL5HCK.js +4 -0
- package/{dist/ionic/p-DbQ5QkTP.js → components/p-BUbsoBOV.js} +1 -1
- package/components/p-BVnB3eEn.js +4 -0
- package/components/p-BYDc3hSE.js +4 -0
- package/components/p-BagjAGC0.js +4 -0
- package/components/p-BegtE7nr.js +4 -0
- package/components/p-BgwEQWW6.js +4 -0
- package/components/p-Bk2zuNWT.js +4 -0
- package/components/p-BmVRXR1y.js +1 -72
- package/components/p-Bum_LjMh.js +4 -0
- package/components/p-BxwWvu-b.js +4 -0
- package/components/p-C4jPsTQa.js +4 -0
- package/components/p-C53feagD.js +1 -15
- package/{dist/ionic/p-CwgG81ZD.js → components/p-C59ryAuS.js} +1 -1
- package/components/p-C7AoMl7c.js +4 -0
- package/components/p-CBzELu-H.js +4 -0
- package/components/p-CDfQnFrd.js +4 -0
- package/components/p-CH0NYjKq.js +4 -0
- package/components/p-CIGNaXM1.js +1 -10
- package/components/p-CO7fmmxt.js +1 -29
- package/components/p-CU1SSH8_.js +4 -0
- package/components/p-CVF7ukTk.js +4 -0
- package/components/p-CgfaEEem.js +4 -0
- package/components/p-CgqKJg96.js +4 -0
- package/components/p-Cl0B-RWe.js +1 -452
- package/components/p-CneGxKsZ.js +4 -0
- package/components/p-CoA-aqGF.js +4 -0
- package/{dist/ionic/p-DdR6rpbR.js → components/p-Cq8cQ0NL.js} +1 -1
- package/components/p-Csw8xuz4.js +4 -0
- package/components/p-CtWGkNnJ.js +1 -162
- package/components/p-Cwv-vmkN.js +4 -0
- package/{dist/ionic/p-BYEqWnSg.js → components/p-Cy5XSfIk.js} +1 -1
- package/components/p-Cyxa_4PV.js +4 -0
- package/components/p-Cz5nLPGT.js +4 -0
- package/components/p-D13Eaw-8.js +1 -76
- package/components/p-D6NJwNJN.js +4 -0
- package/components/p-D6Ynv7Xh.js +1 -141
- package/components/p-DHsZWn1l.js +4 -0
- package/components/p-DJMZehmW.js +4 -0
- package/components/p-DJztqcrH.js +1 -14
- package/components/p-DYdpXONG.js +4 -0
- package/components/p-DgbT0exM.js +4 -0
- package/components/p-DiVJyqlX.js +1 -40
- package/components/p-Dtdm8lKC.js +1 -44
- package/components/p-YLXPWgVj.js +4 -0
- package/components/p-ZjP4CjeZ.js +1 -4
- package/{dist/ionic/p-DCv9sLH2.js → components/p-ak_d-z48.js} +1 -1
- package/components/p-cyNmxje6.js +1 -155
- package/components/p-fpbh6w3f.js +4 -0
- package/components/p-hHmYLOfE.js +1 -87
- package/components/p-kvaDs24J.js +4 -0
- package/components/p-vEbVo2hO.js +4 -0
- package/dist/cjs/{animation-Bt3H9L1C.js → animation-Dg4yiuR2.js} +1 -1
- package/dist/cjs/app-globals-CLI8xCmk.js +11 -0
- package/dist/cjs/{button-active-CMc8cD90.js → button-active-FscMI17-.js} +1 -1
- package/dist/cjs/{config-C5fsO43a.js → config-BukYi_pW.js} +1 -1
- package/dist/cjs/{data-JwZKaIQB.js → data-BYlBjkMU.js} +1 -1
- package/dist/cjs/{framework-delegate-DMJRBuDi.js → framework-delegate-CRgp8o_p.js} +1 -1
- package/dist/cjs/{hardware-back-button-VCK4V3mG.js → hardware-back-button-C4rMJ5uI.js} +1 -1
- package/dist/cjs/{helpers-DrTqNghc.js → helpers-CxTYJdbT.js} +1 -1
- package/dist/cjs/{index-094mMFB-.js → index-C845Ti6K.js} +4 -4
- package/dist/cjs/{index-DrMUZJj6.js → index-CFUwM5x_.js} +5 -5
- package/dist/cjs/{index-D6Wc6v08.js → index-CqT-2gKy.js} +503 -382
- package/dist/cjs/{index-CO6eryBo.js → index-MbaBbWXk.js} +2 -2
- package/dist/cjs/{index-C534ULug.js → index-YcSftOMz.js} +2 -2
- package/dist/cjs/index.cjs.js +12 -12
- package/dist/cjs/{input-shims-CuMghsQ-.js → input-shims-Dl5cnc_e.js} +3 -3
- package/dist/cjs/{input.utils-B_QROI2g.js → input.utils-DmeJ8dmo.js} +2 -2
- package/dist/cjs/ion-accordion_2.cjs.entry.js +23 -15
- package/dist/cjs/ion-action-sheet.cjs.entry.js +21 -15
- package/dist/cjs/ion-alert.cjs.entry.js +25 -17
- package/dist/cjs/ion-app_8.cjs.entry.js +48 -43
- package/dist/cjs/ion-avatar_3.cjs.entry.js +12 -12
- package/dist/cjs/ion-back-button.cjs.entry.js +7 -7
- package/dist/cjs/ion-backdrop.cjs.entry.js +6 -6
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +20 -14
- package/dist/cjs/ion-button_2.cjs.entry.js +36 -18
- package/dist/cjs/ion-card_5.cjs.entry.js +23 -23
- package/dist/cjs/ion-checkbox.cjs.entry.js +7 -7
- package/dist/cjs/ion-chip.cjs.entry.js +6 -6
- package/dist/cjs/ion-col_3.cjs.entry.js +8 -8
- package/dist/cjs/ion-datetime-button.cjs.entry.js +8 -8
- package/dist/cjs/ion-datetime_3.cjs.entry.js +75 -46
- package/dist/cjs/ion-fab_3.cjs.entry.js +17 -13
- package/dist/cjs/ion-img.cjs.entry.js +8 -6
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +17 -13
- package/dist/cjs/ion-input-otp.cjs.entry.js +16 -10
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +9 -7
- package/dist/cjs/ion-input.cjs.entry.js +21 -13
- package/dist/cjs/ion-item-option_3.cjs.entry.js +19 -17
- package/dist/cjs/ion-item_8.cjs.entry.js +48 -42
- package/dist/cjs/ion-loading.cjs.entry.js +18 -14
- package/dist/cjs/ion-menu_3.cjs.entry.js +30 -22
- package/dist/cjs/ion-modal.cjs.entry.js +237 -59
- package/dist/cjs/ion-nav_2.cjs.entry.js +14 -10
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +10 -8
- package/dist/cjs/ion-picker-column.cjs.entry.js +11 -7
- package/dist/cjs/ion-picker.cjs.entry.js +6 -6
- package/dist/cjs/ion-popover.cjs.entry.js +21 -15
- package/dist/cjs/ion-progress-bar.cjs.entry.js +7 -7
- package/dist/cjs/ion-radio_2.cjs.entry.js +17 -13
- package/dist/cjs/ion-range.cjs.entry.js +205 -57
- package/dist/cjs/ion-refresher_2.cjs.entry.js +45 -14
- package/dist/cjs/ion-reorder_2.cjs.entry.js +13 -11
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +4 -4
- package/dist/cjs/ion-route_4.cjs.entry.js +20 -10
- package/dist/cjs/ion-searchbar.cjs.entry.js +22 -12
- package/dist/cjs/ion-segment-content.cjs.entry.js +3 -3
- package/dist/cjs/ion-segment-view.cjs.entry.js +13 -8
- package/dist/cjs/ion-segment_2.cjs.entry.js +26 -16
- package/dist/cjs/ion-select-modal.cjs.entry.js +17 -13
- package/dist/cjs/ion-select_3.cjs.entry.js +33 -24
- package/dist/cjs/ion-spinner.cjs.entry.js +4 -4
- package/dist/cjs/ion-split-pane.cjs.entry.js +15 -9
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +14 -12
- package/dist/cjs/ion-tab_2.cjs.entry.js +10 -8
- package/dist/cjs/ion-text.cjs.entry.js +4 -4
- package/dist/cjs/ion-textarea.cjs.entry.js +20 -14
- package/dist/cjs/ion-toast.cjs.entry.js +21 -15
- package/dist/cjs/ion-toggle.cjs.entry.js +10 -8
- package/dist/cjs/{ionic-global-HMVqOFGO.js → ionic-global-Bc3kJi1Z.js} +1 -1
- package/dist/cjs/ionic.cjs.js +5 -5
- package/dist/cjs/{ios.transition-BOt_uW73.js → ios.transition-trBiC95R.js} +4 -4
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-Dt968VXB.js → md.transition-CUQECuvD.js} +4 -4
- package/dist/cjs/{notch-controller-Bzqhjm4f.js → notch-controller-sD-lTpdc.js} +1 -1
- package/dist/cjs/{overlays-B2b-TTbl.js → overlays-C2jiBSNQ.js} +5 -5
- package/dist/cjs/{status-tap-g0sWWkXk.js → status-tap-CCJk5VgT.js} +3 -3
- package/dist/cjs/{swipe-back-BIayeNOD.js → swipe-back-BGhTQ1CU.js} +2 -2
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/accordion-group/accordion-group.js +4 -2
- package/dist/collection/components/action-sheet/action-sheet.js +20 -10
- package/dist/collection/components/alert/alert.js +24 -12
- package/dist/collection/components/back-button/back-button.js +4 -2
- package/dist/collection/components/badge/badge.js +2 -1
- package/dist/collection/components/breadcrumb/breadcrumb.js +8 -4
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +4 -2
- package/dist/collection/components/button/button.js +6 -3
- package/dist/collection/components/card/card.js +6 -3
- package/dist/collection/components/card-header/card-header.js +2 -1
- package/dist/collection/components/card-subtitle/card-subtitle.js +2 -1
- package/dist/collection/components/card-title/card-title.js +2 -1
- package/dist/collection/components/checkbox/checkbox.js +4 -2
- package/dist/collection/components/chip/chip.js +2 -1
- package/dist/collection/components/content/content.js +12 -7
- package/dist/collection/components/datetime/datetime.js +43 -22
- package/dist/collection/components/datetime-button/datetime-button.js +2 -1
- package/dist/collection/components/fab-button/fab-button.js +6 -3
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +4 -2
- package/dist/collection/components/input/input.js +11 -6
- package/dist/collection/components/input-otp/input-otp.js +8 -4
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +4 -2
- package/dist/collection/components/item/item.js +10 -5
- package/dist/collection/components/item-divider/item-divider.js +7 -3
- package/dist/collection/components/item-option/item-option.js +6 -3
- package/dist/collection/components/item-options/item-options.js +2 -1
- package/dist/collection/components/item-sliding/item-sliding.js +2 -1
- package/dist/collection/components/label/label.js +6 -3
- package/dist/collection/components/list-header/list-header.js +6 -3
- package/dist/collection/components/loading/loading.js +22 -11
- package/dist/collection/components/menu/menu.js +10 -5
- package/dist/collection/components/menu-button/menu-button.js +2 -1
- package/dist/collection/components/modal/gestures/sheet.js +120 -12
- package/dist/collection/components/modal/gestures/swipe-to-close.js +54 -1
- package/dist/collection/components/modal/modal.js +127 -45
- package/dist/collection/components/nav/nav.js +89 -45
- package/dist/collection/components/nav-link/nav-link.js +9 -5
- package/dist/collection/components/note/note.js +2 -1
- package/dist/collection/components/picker/picker.js +2 -1
- package/dist/collection/components/picker-column/picker-column.js +6 -3
- package/dist/collection/components/picker-column-option/picker-column-option.js +2 -1
- package/dist/collection/components/picker-legacy/picker.js +24 -12
- package/dist/collection/components/picker-legacy-column/picker-column.js +4 -2
- package/dist/collection/components/popover/popover.js +33 -17
- package/dist/collection/components/progress-bar/progress-bar.js +2 -1
- package/dist/collection/components/radio/radio.js +2 -1
- package/dist/collection/components/radio-group/radio-group.js +6 -3
- package/dist/collection/components/range/range.js +214 -53
- package/dist/collection/components/refresher/refresher.js +73 -5
- package/dist/collection/components/refresher-content/refresher-content.js +8 -4
- package/dist/collection/components/reorder-group/reorder-group.js +6 -3
- package/dist/collection/components/route/route.js +4 -2
- package/dist/collection/components/router/router.js +10 -5
- package/dist/collection/components/router-link/router-link.js +6 -3
- package/dist/collection/components/router-outlet/router-outlet.js +18 -9
- package/dist/collection/components/searchbar/searchbar.js +11 -6
- package/dist/collection/components/segment/segment.js +10 -5
- package/dist/collection/components/segment-button/segment-button.js +4 -2
- package/dist/collection/components/segment-view/segment-view.ios.css +2 -1
- package/dist/collection/components/segment-view/segment-view.js +30 -4
- package/dist/collection/components/segment-view/segment-view.md.css +2 -1
- package/dist/collection/components/select/select.js +17 -8
- package/dist/collection/components/select-modal/select-modal.js +27 -2
- package/dist/collection/components/select-popover/select-popover.js +2 -1
- package/dist/collection/components/skeleton-text/skeleton-text.js +2 -1
- package/dist/collection/components/spinner/spinner.js +4 -2
- package/dist/collection/components/tab/tab.js +4 -2
- package/dist/collection/components/tab-bar/tab-bar.js +4 -2
- package/dist/collection/components/tab-button/tab-button.js +4 -2
- package/dist/collection/components/tabs/tabs.js +4 -2
- package/dist/collection/components/text/text.js +2 -1
- package/dist/collection/components/textarea/textarea.js +10 -7
- package/dist/collection/components/title/title.js +4 -2
- package/dist/collection/components/toast/toast.js +34 -17
- package/dist/collection/components/toggle/toggle.js +4 -2
- package/dist/collection/components/toolbar/toolbar.js +2 -1
- package/dist/docs.d.ts +37 -0
- package/dist/docs.json +1186 -389
- package/dist/esm/{animation-Dt8bGnA-.js → animation-CnGMT4ji.js} +1 -1
- package/dist/esm/app-globals-DhZjtldk.js +9 -0
- package/dist/esm/{button-active-L570Swow.js → button-active-BBx21brx.js} +1 -1
- package/dist/esm/{config-mCdtaoPe.js → config-TO1rZH52.js} +1 -1
- package/dist/esm/{data-DCORV9FH.js → data-B9iGR5YO.js} +1 -1
- package/dist/esm/{framework-delegate-BYawdMXj.js → framework-delegate-CyxE1S_P.js} +1 -1
- package/dist/esm/{hardware-back-button-CPLxO-Ev.js → hardware-back-button-CTe4XmL7.js} +1 -1
- package/dist/esm/{helpers-DEn3pfjm.js → helpers-Tl8jw6S2.js} +1 -1
- package/dist/esm/{index-r2D9DEro.js → index-B-hkiOUh.js} +4 -4
- package/dist/esm/{index-CvDIirVx.js → index-B2KwgBLx.js} +5 -5
- package/dist/esm/{index-ceb5RaMT.js → index-BtUdxPjv.js} +2 -2
- package/dist/esm/{index-C8IsBmNU.js → index-IGIE5vDm.js} +503 -382
- package/dist/esm/{index-Bs3kT4bc.js → index-hW6eNZ3o.js} +2 -2
- package/dist/esm/index.js +12 -12
- package/dist/esm/{input-shims-D6H3ZaWt.js → input-shims-AaDhOpKN.js} +3 -3
- package/dist/esm/{input.utils-DrvTa8gz.js → input.utils-Bxa_DQ7-.js} +2 -2
- package/dist/esm/ion-accordion_2.entry.js +23 -15
- package/dist/esm/ion-action-sheet.entry.js +21 -15
- package/dist/esm/ion-alert.entry.js +25 -17
- package/dist/esm/ion-app_8.entry.js +48 -43
- package/dist/esm/ion-avatar_3.entry.js +12 -12
- package/dist/esm/ion-back-button.entry.js +7 -7
- package/dist/esm/ion-backdrop.entry.js +6 -6
- package/dist/esm/ion-breadcrumb_2.entry.js +20 -14
- package/dist/esm/ion-button_2.entry.js +36 -18
- package/dist/esm/ion-card_5.entry.js +23 -23
- package/dist/esm/ion-checkbox.entry.js +7 -7
- package/dist/esm/ion-chip.entry.js +6 -6
- package/dist/esm/ion-col_3.entry.js +8 -8
- package/dist/esm/ion-datetime-button.entry.js +8 -8
- package/dist/esm/ion-datetime_3.entry.js +75 -46
- package/dist/esm/ion-fab_3.entry.js +17 -13
- package/dist/esm/ion-img.entry.js +8 -6
- package/dist/esm/ion-infinite-scroll_2.entry.js +17 -13
- package/dist/esm/ion-input-otp.entry.js +16 -10
- package/dist/esm/ion-input-password-toggle.entry.js +9 -7
- package/dist/esm/ion-input.entry.js +21 -13
- package/dist/esm/ion-item-option_3.entry.js +19 -17
- package/dist/esm/ion-item_8.entry.js +48 -42
- package/dist/esm/ion-loading.entry.js +18 -14
- package/dist/esm/ion-menu_3.entry.js +30 -22
- package/dist/esm/ion-modal.entry.js +237 -59
- package/dist/esm/ion-nav_2.entry.js +14 -10
- package/dist/esm/ion-picker-column-option.entry.js +10 -8
- package/dist/esm/ion-picker-column.entry.js +11 -7
- package/dist/esm/ion-picker.entry.js +6 -6
- package/dist/esm/ion-popover.entry.js +21 -15
- package/dist/esm/ion-progress-bar.entry.js +7 -7
- package/dist/esm/ion-radio_2.entry.js +17 -13
- package/dist/esm/ion-range.entry.js +205 -57
- package/dist/esm/ion-refresher_2.entry.js +45 -14
- package/dist/esm/ion-reorder_2.entry.js +13 -11
- package/dist/esm/ion-ripple-effect.entry.js +4 -4
- package/dist/esm/ion-route_4.entry.js +20 -10
- package/dist/esm/ion-searchbar.entry.js +22 -12
- package/dist/esm/ion-segment-content.entry.js +3 -3
- package/dist/esm/ion-segment-view.entry.js +13 -8
- package/dist/esm/ion-segment_2.entry.js +26 -16
- package/dist/esm/ion-select-modal.entry.js +17 -13
- package/dist/esm/ion-select_3.entry.js +33 -24
- package/dist/esm/ion-spinner.entry.js +4 -4
- package/dist/esm/ion-split-pane.entry.js +15 -9
- package/dist/esm/ion-tab-bar_2.entry.js +14 -12
- package/dist/esm/ion-tab_2.entry.js +10 -8
- package/dist/esm/ion-text.entry.js +4 -4
- package/dist/esm/ion-textarea.entry.js +20 -14
- package/dist/esm/ion-toast.entry.js +21 -15
- package/dist/esm/ion-toggle.entry.js +10 -8
- package/dist/esm/{ionic-global-CDrldh-5.js → ionic-global-DfbeLwcV.js} +1 -1
- package/dist/esm/ionic.js +6 -6
- package/dist/esm/{ios.transition-BDzw0_Hm.js → ios.transition--aMF-pDH.js} +4 -4
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-BzDYi3qq.js → md.transition-BEVbfm8j.js} +4 -4
- package/dist/esm/{notch-controller-BwelN_JM.js → notch-controller-DAcvKU57.js} +1 -1
- package/dist/esm/{overlays-D5YkFThA.js → overlays-F8GHPo-e.js} +5 -5
- package/dist/esm/{status-tap-5DQ7Fc4V.js → status-tap-BfJqFSLF.js} +3 -3
- package/dist/esm/{swipe-back-BKw2CAHc.js → swipe-back-BZBFwTQV.js} +2 -2
- package/dist/html.html-data.json +117 -109
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-031b76f7.entry.js +4 -0
- package/dist/ionic/p-045a6a42.entry.js +4 -0
- package/dist/ionic/p-07506134.entry.js +4 -0
- package/dist/ionic/p-084c25b2.entry.js +4 -0
- package/dist/ionic/p-0d8b5c38.entry.js +4 -0
- package/dist/ionic/p-16813ce7.entry.js +4 -0
- package/dist/ionic/p-16b65553.entry.js +4 -0
- package/dist/ionic/p-1b02923f.entry.js +4 -0
- package/dist/ionic/{p-5c8f7253.entry.js → p-1b169fb6.entry.js} +1 -1
- package/dist/ionic/{p-915b3e3d.entry.js → p-23fac490.entry.js} +1 -1
- package/dist/ionic/{p-b8551510.entry.js → p-294f4bb5.entry.js} +1 -1
- package/dist/ionic/p-2a68388b.entry.js +4 -0
- package/dist/ionic/p-2f5a8140.entry.js +4 -0
- package/dist/ionic/{p-49d06882.entry.js → p-301c43f8.entry.js} +1 -1
- package/dist/ionic/{p-79bd78f9.entry.js → p-370a60ee.entry.js} +1 -1
- package/dist/ionic/p-3e143d1d.entry.js +4 -0
- package/dist/ionic/p-4819b469.entry.js +4 -0
- package/dist/ionic/p-4dd5e8e0.entry.js +4 -0
- package/dist/ionic/p-51c11c47.entry.js +4 -0
- package/dist/ionic/p-53f750a5.entry.js +4 -0
- package/dist/ionic/{p-7cad388a.entry.js → p-6af16209.entry.js} +1 -1
- package/dist/ionic/{p-7f98e710.entry.js → p-6b701daa.entry.js} +1 -1
- package/dist/ionic/p-6b97f2a3.entry.js +4 -0
- package/dist/ionic/p-71e322f7.entry.js +4 -0
- package/dist/ionic/p-7620be24.entry.js +4 -0
- package/dist/ionic/p-771b27a5.entry.js +4 -0
- package/dist/ionic/{p-906bb44d.entry.js → p-7ca71c83.entry.js} +1 -1
- package/dist/ionic/{p-11aa58d6.entry.js → p-80cac7a2.entry.js} +1 -1
- package/dist/ionic/p-96a2e768.entry.js +4 -0
- package/dist/ionic/{p-582824c5.entry.js → p-9833cf63.entry.js} +1 -1
- package/dist/ionic/p-9cbc6f1f.entry.js +4 -0
- package/dist/ionic/p-9cdbabbb.entry.js +4 -0
- package/dist/ionic/p-9eac4eb1.entry.js +4 -0
- package/dist/ionic/{p-675b1a31.entry.js → p-9fae83d8.entry.js} +1 -1
- package/dist/ionic/p-B8xlpH8p.js +4 -0
- package/dist/ionic/{p-C7hRNDhM.js → p-BAt5H1ac.js} +1 -1
- package/dist/ionic/p-BW_TRJm8.js +4 -0
- package/dist/ionic/{p-DDb5r57F.js → p-Bum7H1fw.js} +1 -1
- package/dist/ionic/p-BvFYtOdE.js +4 -0
- package/dist/ionic/{p-Dc45iWE4.js → p-BxIcPWoV.js} +1 -1
- package/dist/ionic/p-C0JvVFMv.js +4 -0
- package/dist/ionic/{p-CTfR9YZG.js → p-CGmVTdWh.js} +1 -1
- package/dist/ionic/{p-BOVrCkpJ.js → p-CYbRmDdy.js} +1 -1
- package/dist/ionic/{p-MUoJJJwd.js → p-CYvM5g3q.js} +1 -1
- package/dist/ionic/p-CmFz1Mjc.js +4 -0
- package/dist/ionic/p-CtA-yJYy.js +4 -0
- package/dist/ionic/p-D8HJQ1qq.js +4 -0
- package/dist/ionic/{p-B0q1YL7N.js → p-DB_iPQC-.js} +1 -1
- package/dist/ionic/{p-DNcfiJwE.js → p-DLbbmF9h.js} +1 -1
- package/dist/ionic/p-DTPR1Wpn.js +4 -0
- package/dist/ionic/p-DjriolRs.js +4 -0
- package/dist/ionic/p-DtVZDHlS.js +4 -0
- package/dist/ionic/p-IGIE5vDm.js +5 -0
- package/dist/ionic/{p-BFvmZNyx.js → p-NFFyoJ4Q.js} +1 -1
- package/dist/ionic/p-a805674e.entry.js +4 -0
- package/dist/ionic/{p-da7d04cc.entry.js → p-a84f2d21.entry.js} +1 -1
- package/dist/ionic/p-aa47f46e.entry.js +4 -0
- package/dist/ionic/{p-2668188b.entry.js → p-b325a113.entry.js} +1 -1
- package/dist/ionic/{p-d1f54e28.entry.js → p-b440381f.entry.js} +1 -1
- package/dist/ionic/p-b6e0ff03.entry.js +4 -0
- package/dist/ionic/{p-6f37536a.entry.js → p-bcaa827e.entry.js} +1 -1
- package/dist/ionic/{p-fb0271ae.entry.js → p-c3cce9d8.entry.js} +1 -1
- package/dist/ionic/{p-b0a7585c.entry.js → p-ca31010f.entry.js} +1 -1
- package/dist/ionic/p-d4e8b473.entry.js +4 -0
- package/dist/ionic/{p-9575b654.entry.js → p-e663bc5a.entry.js} +1 -1
- package/dist/ionic/p-e6c5f060.entry.js +4 -0
- package/dist/ionic/{p-652318c3.entry.js → p-e6cedcd7.entry.js} +1 -1
- package/dist/ionic/{p-fbb00634.entry.js → p-e863ffe8.entry.js} +1 -1
- package/dist/ionic/{p-0ca0fe9c.entry.js → p-f2deaceb.entry.js} +1 -1
- package/dist/ionic/{p-ac4eb91d.entry.js → p-f5dfb9a3.entry.js} +1 -1
- package/dist/ionic/{p-bce86e56.entry.js → p-f8186550.entry.js} +1 -1
- package/dist/ionic/p-fdbc90d4.entry.js +4 -0
- package/dist/ionic/p-gbVXD275.js +4 -0
- package/dist/ionic/p-hNN3VvaC.js +4 -0
- package/dist/types/components/datetime/datetime.d.ts +10 -0
- package/dist/types/components/header/header.utils.d.ts +2 -1
- package/dist/types/components/item/item.d.ts +2 -0
- package/dist/types/components/item-divider/item-divider.d.ts +3 -0
- package/dist/types/components/item-option/item-option.d.ts +2 -0
- package/dist/types/components/list-header/list-header.d.ts +2 -0
- package/dist/types/components/modal/gestures/sheet.d.ts +2 -2
- package/dist/types/components/modal/gestures/swipe-to-close.d.ts +2 -2
- package/dist/types/components/modal/modal-interface.d.ts +25 -0
- package/dist/types/components/modal/modal.d.ts +22 -1
- package/dist/types/components/range/range-interface.d.ts +1 -0
- package/dist/types/components/range/range.d.ts +44 -4
- package/dist/types/components/refresher/refresher-interface.d.ts +7 -0
- package/dist/types/components/refresher/refresher.d.ts +16 -3
- package/dist/types/components/segment-view/segment-view.d.ts +4 -0
- package/dist/types/components/select/select.d.ts +3 -0
- package/dist/types/components/select-modal/select-modal.d.ts +4 -0
- package/dist/types/components.d.ts +964 -191
- package/dist/types/interface.d.ts +2 -2
- package/dist/types/stencil-public-runtime.d.ts +126 -14
- package/dist/types/utils/gesture/listener.d.ts +2 -1
- package/hydrate/index.d.ts +12 -0
- package/hydrate/index.js +5632 -1421
- package/hydrate/index.mjs +5631 -1422
- package/package.json +2 -2
- package/components/p-B25GjpND.js +0 -71
- package/components/p-BANeLH_G.js +0 -290
- package/components/p-BBFQmhcD.js +0 -59
- package/components/p-BC-awmYt.js +0 -306
- package/components/p-BHbOsu99.js +0 -501
- package/components/p-BTlwXR9e.js +0 -73
- package/components/p-BcazQttQ.js +0 -612
- package/components/p-BdGshsIJ.js +0 -226
- package/components/p-BfS7vSpC.js +0 -147
- package/components/p-BhRFCLuX.js +0 -675
- package/components/p-Bhnhnzjz.js +0 -75
- package/components/p-BmcqD0EN.js +0 -153
- package/components/p-Boi6hecl.js +0 -115
- package/components/p-Bt_moUyl.js +0 -232
- package/components/p-Bxl5etF4.js +0 -146
- package/components/p-ByjmWt3s.js +0 -139
- package/components/p-C04oPyjT.js +0 -54
- package/components/p-C6dkQWq2.js +0 -1626
- package/components/p-CFZWrvIQ.js +0 -194
- package/components/p-CIJwkzL6.js +0 -195
- package/components/p-CL12ApCQ.js +0 -820
- package/components/p-CXJR56Oq.js +0 -564
- package/components/p-Cdm3dKWf.js +0 -108
- package/components/p-CslsoGzv.js +0 -192
- package/components/p-Cyd00tgZ.js +0 -167
- package/components/p-CzAJ3ArC.js +0 -380
- package/components/p-CzW34QBh.js +0 -12
- package/components/p-D0zXRwcr.js +0 -196
- package/components/p-D5hF6rwn.js +0 -339
- package/components/p-D8eD2iBA.js +0 -67
- package/components/p-DGOrLIyS.js +0 -481
- package/components/p-DK2Bn1Mc.js +0 -305
- package/components/p-DKRQWlK2.js +0 -598
- package/components/p-DNDUsygf.js +0 -128
- package/components/p-DTWZF6wg.js +0 -418
- package/components/p-DWoUQeZ3.js +0 -3012
- package/components/p-DX0w75a9.js +0 -420
- package/components/p-Dt8zaCLQ.js +0 -92
- package/components/p-DyFBFrV7.js +0 -264
- package/components/p-DyHPCMyn.js +0 -39
- package/components/p-LgLeKTkH.js +0 -112
- package/components/p-NhiRFRn9.js +0 -50
- package/components/p-OuiHmXO5.js +0 -646
- package/components/p-Wro9IPHE.js +0 -459
- package/components/p-aIWC4ZEV.js +0 -305
- package/components/p-c-XJ9XhZ.js +0 -915
- package/components/p-fVuFT3Wd.js +0 -78
- package/components/p-iyo0Toaz.js +0 -2822
- package/components/p-l_lso3Zl.js +0 -140
- package/components/p-mQp4lwQD.js +0 -1638
- package/dist/cjs/app-globals-Ciccnk9_.js +0 -10
- package/dist/esm/app-globals-BDSf8fOA.js +0 -8
- package/dist/ionic/p-11518b31.entry.js +0 -4
- package/dist/ionic/p-221a3d8c.entry.js +0 -4
- package/dist/ionic/p-2ac254dc.entry.js +0 -4
- package/dist/ionic/p-2bd1ea35.entry.js +0 -4
- package/dist/ionic/p-30333874.entry.js +0 -4
- package/dist/ionic/p-31db96da.entry.js +0 -4
- package/dist/ionic/p-34642fa1.entry.js +0 -4
- package/dist/ionic/p-35696017.entry.js +0 -4
- package/dist/ionic/p-363d1209.entry.js +0 -4
- package/dist/ionic/p-46a38cfd.entry.js +0 -4
- package/dist/ionic/p-4eec1a5e.entry.js +0 -4
- package/dist/ionic/p-530fcd71.entry.js +0 -4
- package/dist/ionic/p-5d6fb6e3.entry.js +0 -4
- package/dist/ionic/p-66fbe052.entry.js +0 -4
- package/dist/ionic/p-7babec72.entry.js +0 -4
- package/dist/ionic/p-82d5bb3d.entry.js +0 -4
- package/dist/ionic/p-97eb0812.entry.js +0 -4
- package/dist/ionic/p-9b6d46f2.entry.js +0 -4
- package/dist/ionic/p-BKc55Xev.js +0 -4
- package/dist/ionic/p-Bmgaetn_.js +0 -4
- package/dist/ionic/p-C8IsBmNU.js +0 -5
- package/dist/ionic/p-CJxh_yLS.js +0 -4
- package/dist/ionic/p-DZRJwG4S.js +0 -4
- package/dist/ionic/p-a4a9f5ae.entry.js +0 -4
- package/dist/ionic/p-b0ebf9f8.entry.js +0 -4
- package/dist/ionic/p-be263062.entry.js +0 -4
- package/dist/ionic/p-c175d792.entry.js +0 -4
- package/dist/ionic/p-cc2a9936.entry.js +0 -4
- package/dist/ionic/p-cc45bcbc.entry.js +0 -4
- package/dist/ionic/p-d0a2a1ab.entry.js +0 -4
- package/dist/ionic/p-e4c57008.entry.js +0 -4
- package/dist/ionic/p-e5d6d0f0.entry.js +0 -4
- package/dist/ionic/p-f1dfee25.entry.js +0 -4
- package/dist/ionic/p-f9f7b9db.entry.js +0 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { Host, h } from "@stencil/core";
|
|
4
|
+
import { Build, Host, h } from "@stencil/core";
|
|
5
5
|
import { findClosestIonContent, disableContentScrollY, resetContentScrollY } from "../../utils/content/index";
|
|
6
6
|
import { inheritAriaAttributes, clamp, debounceEvent, renderHiddenInput, isSafeNumber } from "../../utils/helpers";
|
|
7
7
|
import { printIonWarning } from "../../utils/logging/index";
|
|
@@ -17,13 +17,30 @@ import { roundToMaxDecimalPlaces } from "../../utils/floating-point";
|
|
|
17
17
|
* @slot start - Content is placed to the left of the range slider in LTR, and to the right in RTL.
|
|
18
18
|
* @slot end - Content is placed to the right of the range slider in LTR, and to the left in RTL.
|
|
19
19
|
*
|
|
20
|
+
* @part label - The label text describing the range.
|
|
20
21
|
* @part tick - An inactive tick mark.
|
|
21
22
|
* @part tick-active - An active tick mark.
|
|
22
|
-
* @part pin - The counter that appears above a knob.
|
|
23
|
-
* @part knob - The handle that is used to drag the range.
|
|
24
23
|
* @part bar - The inactive part of the bar.
|
|
25
24
|
* @part bar-active - The active part of the bar.
|
|
26
|
-
* @part
|
|
25
|
+
* @part knob-handle - The container that wraps the knob and handles drag interactions.
|
|
26
|
+
* @part knob-handle-a - The container for the knob with the static `A` identity when `dualKnobs` is `true`. This identity does not change, even if the knobs cross and swap which one represents the lower or upper value.
|
|
27
|
+
* @part knob-handle-b - The container for the knob with the static `B` identity when `dualKnobs` is `true`. This identity does not change, even if the knobs cross and swap which one represents the lower or upper value.
|
|
28
|
+
* @part knob-handle-lower - The container for the knob whose current `value` is `lower` when `dualKnobs` is `true`. The lower and upper parts swap which knob handle they refer to when the knobs cross.
|
|
29
|
+
* @part knob-handle-upper - The container for the knob whose current `value` is `upper` when `dualKnobs` is `true`. The lower and upper parts swap which knob handle they refer to when the knobs cross.
|
|
30
|
+
* @part pin - The value indicator displayed above a knob.
|
|
31
|
+
* @part pin-a - The value indicator above the knob with the static `A` identity when `dualKnobs` is `true`. This identity does not change, even if the knobs cross and swap which one represents the lower or upper value.
|
|
32
|
+
* @part pin-b - The value indicator above the knob with the static `B` identity when `dualKnobs` is `true`. This identity does not change, even if the knobs cross and swap which one represents the lower or upper value.
|
|
33
|
+
* @part pin-lower - The value indicator above the knob whose current `value` is `lower` when `dualKnobs` is `true`. The lower and upper parts swap which pin they refer to when the knobs cross.
|
|
34
|
+
* @part pin-upper - The value indicator above the knob whose current `value` is `upper` when `dualKnobs` is `true`. The lower and upper parts swap which pin they refer to when the knobs cross.
|
|
35
|
+
* @part knob - The visual knob element on the range track.
|
|
36
|
+
* @part knob-a - The visual knob for the static `A` identity when `dualKnobs` is `true`. This identity does not change, even if the knobs cross and swap which one represents the lower or upper value.
|
|
37
|
+
* @part knob-b - The visual knob for the static `B` identity when `dualKnobs` is `true`. This identity does not change, even if the knobs cross and swap which one represents the lower or upper value.
|
|
38
|
+
* @part knob-lower - The visual knob whose current `value` is `lower` when `dualKnobs` is `true`. The lower and upper parts swap which knob they refer to when the knobs cross.
|
|
39
|
+
* @part knob-upper - The visual knob whose current `value` is `upper` when `dualKnobs` is `true`. The lower and upper parts swap which knob they refer to when the knobs cross.
|
|
40
|
+
* @part activated - Added to the knob-handle, knob, and pin when the knob is active. Only one set has this part at a time when `dualKnobs` is `true`.
|
|
41
|
+
* @part focused - Added to the knob-handle, knob, and pin that currently has focus. Only one set has this part at a time when `dualKnobs` is `true`.
|
|
42
|
+
* @part hover - Added to the knob-handle, knob, and pin when the knob has hover. Only one set has this part at a time when `dualKnobs` is `true`.
|
|
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`.
|
|
27
44
|
*/
|
|
28
45
|
export class Range {
|
|
29
46
|
constructor() {
|
|
@@ -34,6 +51,12 @@ export class Range {
|
|
|
34
51
|
this.inheritedAttributes = {};
|
|
35
52
|
this.contentEl = null;
|
|
36
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;
|
|
37
60
|
this.ratioA = 0;
|
|
38
61
|
this.ratioB = 0;
|
|
39
62
|
/**
|
|
@@ -143,6 +166,31 @@ export class Range {
|
|
|
143
166
|
this.gesture.enable(!this.disabled);
|
|
144
167
|
}
|
|
145
168
|
};
|
|
169
|
+
/**
|
|
170
|
+
* Observes the knob handles for the ion-activated class and syncs
|
|
171
|
+
* activatedKnob so the activated part is correctly set on the handle,
|
|
172
|
+
* knob, and pin.
|
|
173
|
+
*/
|
|
174
|
+
this.setupActivatedObserver = () => {
|
|
175
|
+
const knobHandleA = this.el.shadowRoot.querySelector('.range-knob-handle-a');
|
|
176
|
+
const knobHandleB = this.el.shadowRoot.querySelector('.range-knob-handle-b');
|
|
177
|
+
const syncActivated = () => {
|
|
178
|
+
this.activatedKnob = (knobHandleA === null || knobHandleA === void 0 ? void 0 : knobHandleA.classList.contains('ion-activated'))
|
|
179
|
+
? 'A'
|
|
180
|
+
: (knobHandleB === null || knobHandleB === void 0 ? void 0 : knobHandleB.classList.contains('ion-activated'))
|
|
181
|
+
? 'B'
|
|
182
|
+
: undefined;
|
|
183
|
+
};
|
|
184
|
+
if (Build.isBrowser && typeof MutationObserver !== 'undefined') {
|
|
185
|
+
this.activatedObserver = new MutationObserver(syncActivated);
|
|
186
|
+
this.activatedObserver.observe(this.el.shadowRoot, {
|
|
187
|
+
attributes: true,
|
|
188
|
+
attributeFilter: ['class'],
|
|
189
|
+
subtree: true,
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
syncActivated();
|
|
193
|
+
};
|
|
146
194
|
this.handleKeyboard = (knob, isIncrease) => {
|
|
147
195
|
const { ensureValueInBounds } = this;
|
|
148
196
|
let step = this.step;
|
|
@@ -165,6 +213,7 @@ export class Range {
|
|
|
165
213
|
this.onBlur = () => {
|
|
166
214
|
if (this.hasFocus) {
|
|
167
215
|
this.hasFocus = false;
|
|
216
|
+
this.focusedKnob = undefined;
|
|
168
217
|
this.ionBlur.emit();
|
|
169
218
|
}
|
|
170
219
|
};
|
|
@@ -175,21 +224,20 @@ export class Range {
|
|
|
175
224
|
}
|
|
176
225
|
};
|
|
177
226
|
this.onKnobFocus = (knob) => {
|
|
227
|
+
// Clicking focuses the range which is needed for the keyboard,
|
|
228
|
+
// but we only want to add the ion-focused class when focused via Tab.
|
|
229
|
+
if (!this.focusFromPointer) {
|
|
230
|
+
this.focusedKnob = knob;
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
this.focusFromPointer = false;
|
|
234
|
+
this.focusedKnob = undefined;
|
|
235
|
+
}
|
|
236
|
+
// If the knob was not already focused, emit the focus event
|
|
178
237
|
if (!this.hasFocus) {
|
|
179
238
|
this.hasFocus = true;
|
|
180
239
|
this.ionFocus.emit();
|
|
181
240
|
}
|
|
182
|
-
// Manually manage ion-focused class for dual knobs
|
|
183
|
-
if (this.dualKnobs && this.el.shadowRoot) {
|
|
184
|
-
const knobA = this.el.shadowRoot.querySelector('.range-knob-a');
|
|
185
|
-
const knobB = this.el.shadowRoot.querySelector('.range-knob-b');
|
|
186
|
-
// Remove ion-focused from both knobs first
|
|
187
|
-
knobA === null || knobA === void 0 ? void 0 : knobA.classList.remove('ion-focused');
|
|
188
|
-
knobB === null || knobB === void 0 ? void 0 : knobB.classList.remove('ion-focused');
|
|
189
|
-
// Add ion-focused only to the focused knob
|
|
190
|
-
const focusedKnobEl = knob === 'A' ? knobA : knobB;
|
|
191
|
-
focusedKnobEl === null || focusedKnobEl === void 0 ? void 0 : focusedKnobEl.classList.add('ion-focused');
|
|
192
|
-
}
|
|
193
241
|
};
|
|
194
242
|
this.onKnobBlur = () => {
|
|
195
243
|
// Check if focus is moving to another knob within the same range
|
|
@@ -201,18 +249,18 @@ export class Range {
|
|
|
201
249
|
if (!isStillFocusedOnKnob) {
|
|
202
250
|
if (this.hasFocus) {
|
|
203
251
|
this.hasFocus = false;
|
|
252
|
+
this.focusedKnob = undefined;
|
|
204
253
|
this.ionBlur.emit();
|
|
205
254
|
}
|
|
206
|
-
// Remove ion-focused from both knobs when focus leaves the range
|
|
207
|
-
if (this.dualKnobs && this.el.shadowRoot) {
|
|
208
|
-
const knobA = this.el.shadowRoot.querySelector('.range-knob-a');
|
|
209
|
-
const knobB = this.el.shadowRoot.querySelector('.range-knob-b');
|
|
210
|
-
knobA === null || knobA === void 0 ? void 0 : knobA.classList.remove('ion-focused');
|
|
211
|
-
knobB === null || knobB === void 0 ? void 0 : knobB.classList.remove('ion-focused');
|
|
212
|
-
}
|
|
213
255
|
}
|
|
214
256
|
}, 0);
|
|
215
257
|
};
|
|
258
|
+
this.onKnobMouseEnter = (knob) => {
|
|
259
|
+
this.hoveredKnob = knob;
|
|
260
|
+
};
|
|
261
|
+
this.onKnobMouseLeave = () => {
|
|
262
|
+
this.hoveredKnob = undefined;
|
|
263
|
+
};
|
|
216
264
|
}
|
|
217
265
|
debounceChanged() {
|
|
218
266
|
const { ionInput, debounce, originalIonInput } = this;
|
|
@@ -289,6 +337,7 @@ export class Range {
|
|
|
289
337
|
this.originalIonInput = this.ionInput;
|
|
290
338
|
this.setupGesture();
|
|
291
339
|
this.updateRatio();
|
|
340
|
+
this.setupActivatedObserver();
|
|
292
341
|
this.didLoad = true;
|
|
293
342
|
}
|
|
294
343
|
connectedCallback() {
|
|
@@ -305,6 +354,7 @@ export class Range {
|
|
|
305
354
|
*/
|
|
306
355
|
if (this.didLoad) {
|
|
307
356
|
this.setupGesture();
|
|
357
|
+
this.setupActivatedObserver();
|
|
308
358
|
}
|
|
309
359
|
const ionContent = findClosestIonContent(this.el);
|
|
310
360
|
this.contentEl = (_a = ionContent === null || ionContent === void 0 ? void 0 : ionContent.querySelector('.ion-content-scroll-host')) !== null && _a !== void 0 ? _a : ionContent;
|
|
@@ -314,6 +364,10 @@ export class Range {
|
|
|
314
364
|
this.gesture.destroy();
|
|
315
365
|
this.gesture = undefined;
|
|
316
366
|
}
|
|
367
|
+
if (this.activatedObserver) {
|
|
368
|
+
this.activatedObserver.disconnect();
|
|
369
|
+
this.activatedObserver = undefined;
|
|
370
|
+
}
|
|
317
371
|
}
|
|
318
372
|
getValue() {
|
|
319
373
|
var _a;
|
|
@@ -384,7 +438,7 @@ export class Range {
|
|
|
384
438
|
* started dragging the knob.
|
|
385
439
|
*
|
|
386
440
|
* This is necessary to determine which knob the user is dragging,
|
|
387
|
-
* especially when
|
|
441
|
+
* especially when using dual knobs.
|
|
388
442
|
* Plus, it determines when to apply certain styles.
|
|
389
443
|
*
|
|
390
444
|
* This only needs to be done once since the knob won't change
|
|
@@ -411,7 +465,7 @@ export class Range {
|
|
|
411
465
|
* dragged the knob. They just tapped on the bar.
|
|
412
466
|
*
|
|
413
467
|
* This is necessary to determine which knob the user is changing,
|
|
414
|
-
* especially when
|
|
468
|
+
* especially when using dual knobs.
|
|
415
469
|
* Plus, it determines when to apply certain styles.
|
|
416
470
|
*/
|
|
417
471
|
if (this.pressedKnob === undefined) {
|
|
@@ -466,7 +520,6 @@ export class Range {
|
|
|
466
520
|
ratio = 1 - ratio;
|
|
467
521
|
}
|
|
468
522
|
this.pressedKnob = !this.dualKnobs || Math.abs(this.ratioA - ratio) < Math.abs(this.ratioB - ratio) ? 'A' : 'B';
|
|
469
|
-
this.setFocus(this.pressedKnob);
|
|
470
523
|
}
|
|
471
524
|
get valA() {
|
|
472
525
|
return ratioToValue(this.ratioA, this.min, this.max, this.step);
|
|
@@ -493,9 +546,23 @@ export class Range {
|
|
|
493
546
|
updateRatio() {
|
|
494
547
|
const value = this.getValue();
|
|
495
548
|
const { min, max } = this;
|
|
549
|
+
/**
|
|
550
|
+
* For dual knobs, value gives lower/upper but not which is A vs B.
|
|
551
|
+
* Assign (lowerRatio, upperRatio) to (ratioA, ratioB) in the way that
|
|
552
|
+
* minimizes change from the current ratios so the knobs don't swap.
|
|
553
|
+
*/
|
|
496
554
|
if (this.dualKnobs) {
|
|
497
|
-
|
|
498
|
-
|
|
555
|
+
const lowerRatio = valueToRatio(value.lower, min, max);
|
|
556
|
+
const upperRatio = valueToRatio(value.upper, min, max);
|
|
557
|
+
if (Math.abs(this.ratioA - lowerRatio) + Math.abs(this.ratioB - upperRatio) <=
|
|
558
|
+
Math.abs(this.ratioA - upperRatio) + Math.abs(this.ratioB - lowerRatio)) {
|
|
559
|
+
this.ratioA = lowerRatio;
|
|
560
|
+
this.ratioB = upperRatio;
|
|
561
|
+
}
|
|
562
|
+
else {
|
|
563
|
+
this.ratioA = upperRatio;
|
|
564
|
+
this.ratioB = lowerRatio;
|
|
565
|
+
}
|
|
499
566
|
}
|
|
500
567
|
else {
|
|
501
568
|
this.ratioA = valueToRatio(value, min, max);
|
|
@@ -512,14 +579,6 @@ export class Range {
|
|
|
512
579
|
};
|
|
513
580
|
this.noUpdate = false;
|
|
514
581
|
}
|
|
515
|
-
setFocus(knob) {
|
|
516
|
-
if (this.el.shadowRoot) {
|
|
517
|
-
const knobEl = this.el.shadowRoot.querySelector(knob === 'A' ? '.range-knob-a' : '.range-knob-b');
|
|
518
|
-
if (knobEl) {
|
|
519
|
-
knobEl.focus();
|
|
520
|
-
}
|
|
521
|
-
}
|
|
522
|
-
}
|
|
523
582
|
/**
|
|
524
583
|
* Returns true if content was passed to the "start" slot
|
|
525
584
|
*/
|
|
@@ -537,7 +596,7 @@ export class Range {
|
|
|
537
596
|
}
|
|
538
597
|
renderRangeSlider() {
|
|
539
598
|
var _a;
|
|
540
|
-
const { min, max, step, handleKeyboard, pressedKnob, disabled, pin, ratioLower, ratioUpper, pinFormatter, inheritedAttributes, } = this;
|
|
599
|
+
const { min, max, step, handleKeyboard, activatedKnob, focusedKnob, hoveredKnob, pressedKnob, disabled, pin, ratioLower, ratioUpper, pinFormatter, inheritedAttributes, } = this;
|
|
541
600
|
let barStart = `${ratioLower * 100}%`;
|
|
542
601
|
let barEnd = `${100 - ratioUpper * 100}%`;
|
|
543
602
|
const rtl = isRTL(this.el);
|
|
@@ -597,7 +656,9 @@ export class Range {
|
|
|
597
656
|
ticks.push(tick);
|
|
598
657
|
}
|
|
599
658
|
}
|
|
600
|
-
return (h("div", { class: "range-slider", ref: (rangeEl) => (this.rangeSlider = rangeEl),
|
|
659
|
+
return (h("div", { class: "range-slider", ref: (rangeEl) => (this.rangeSlider = rangeEl), onPointerDown: () => {
|
|
660
|
+
this.focusFromPointer = true;
|
|
661
|
+
},
|
|
601
662
|
/**
|
|
602
663
|
* Since the gesture has a threshold, the value
|
|
603
664
|
* won't change until the user has dragged past
|
|
@@ -610,6 +671,7 @@ export class Range {
|
|
|
610
671
|
* we need to listen for the "pointerUp" event.
|
|
611
672
|
*/
|
|
612
673
|
onPointerUp: (ev) => {
|
|
674
|
+
this.focusFromPointer = false;
|
|
613
675
|
/**
|
|
614
676
|
* If the user drags the knob on the web
|
|
615
677
|
* version (does not occur on mobile),
|
|
@@ -635,6 +697,11 @@ export class Range {
|
|
|
635
697
|
'has-ticks': ticks.length > 0,
|
|
636
698
|
}, role: "presentation", style: barStyle, part: "bar-active" })), renderKnob(rtl, {
|
|
637
699
|
knob: 'A',
|
|
700
|
+
position: getKnobPosition('A', this.ratioA, this.ratioB, this.dualKnobs),
|
|
701
|
+
dualKnobs: this.dualKnobs,
|
|
702
|
+
activated: activatedKnob === 'A',
|
|
703
|
+
focused: focusedKnob === 'A',
|
|
704
|
+
hovered: hoveredKnob === 'A',
|
|
638
705
|
pressed: pressedKnob === 'A',
|
|
639
706
|
value: this.valA,
|
|
640
707
|
ratio: this.ratioA,
|
|
@@ -647,9 +714,16 @@ export class Range {
|
|
|
647
714
|
inheritedAttributes,
|
|
648
715
|
onKnobFocus: this.onKnobFocus,
|
|
649
716
|
onKnobBlur: this.onKnobBlur,
|
|
717
|
+
onKnobMouseEnter: this.onKnobMouseEnter,
|
|
718
|
+
onKnobMouseLeave: this.onKnobMouseLeave,
|
|
650
719
|
}), this.dualKnobs &&
|
|
651
720
|
renderKnob(rtl, {
|
|
652
721
|
knob: 'B',
|
|
722
|
+
position: getKnobPosition('B', this.ratioA, this.ratioB, this.dualKnobs),
|
|
723
|
+
dualKnobs: this.dualKnobs,
|
|
724
|
+
activated: activatedKnob === 'B',
|
|
725
|
+
focused: focusedKnob === 'B',
|
|
726
|
+
hovered: hoveredKnob === 'B',
|
|
653
727
|
pressed: pressedKnob === 'B',
|
|
654
728
|
value: this.valB,
|
|
655
729
|
ratio: this.ratioB,
|
|
@@ -662,10 +736,12 @@ export class Range {
|
|
|
662
736
|
inheritedAttributes,
|
|
663
737
|
onKnobFocus: this.onKnobFocus,
|
|
664
738
|
onKnobBlur: this.onKnobBlur,
|
|
739
|
+
onKnobMouseEnter: this.onKnobMouseEnter,
|
|
740
|
+
onKnobMouseLeave: this.onKnobMouseLeave,
|
|
665
741
|
})));
|
|
666
742
|
}
|
|
667
743
|
render() {
|
|
668
|
-
const { disabled, el, hasLabel, rangeId, pin, pressedKnob, labelPlacement, label } = this;
|
|
744
|
+
const { disabled, el, hasLabel, rangeId, pin, pressedKnob, labelPlacement, label, dualKnobs, min, max } = this;
|
|
669
745
|
const inItem = hostContext('ion-item', el);
|
|
670
746
|
/**
|
|
671
747
|
* If there is no start content then the knob at
|
|
@@ -680,20 +756,37 @@ export class Range {
|
|
|
680
756
|
const hasEndContent = (hasLabel && labelPlacement === 'end') || this.hasEndSlotContent;
|
|
681
757
|
const needsEndAdjustment = inItem && !hasEndContent;
|
|
682
758
|
const mode = getIonMode(this);
|
|
759
|
+
/**
|
|
760
|
+
* Determine the name and position of the pressed knob to apply
|
|
761
|
+
* Host classes for styling.
|
|
762
|
+
*/
|
|
763
|
+
const pressedKnobName = dualKnobs ? pressedKnob === null || pressedKnob === void 0 ? void 0 : pressedKnob.toLowerCase() : undefined;
|
|
764
|
+
const pressedKnobPosition = dualKnobs && pressedKnob ? getKnobPosition(pressedKnob, this.ratioA, this.ratioB, dualKnobs) : undefined;
|
|
765
|
+
/**
|
|
766
|
+
* Determine if any knob is at the min or max value to
|
|
767
|
+
* apply Host classes for styling.
|
|
768
|
+
*/
|
|
769
|
+
const valueAtMin = dualKnobs ? this.valA === min || this.valB === min : this.valA === min;
|
|
770
|
+
const valueAtMax = dualKnobs ? this.valA === max || this.valB === max : this.valA === max;
|
|
683
771
|
renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
|
|
684
|
-
return (h(Host, { key: '
|
|
772
|
+
return (h(Host, { key: 'f8063d1234fb113fe55a7902845dd4b4da8b1edb', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
|
|
685
773
|
[mode]: true,
|
|
686
774
|
'in-item': inItem,
|
|
687
775
|
'range-disabled': disabled,
|
|
776
|
+
'range-dual-knobs': dualKnobs,
|
|
688
777
|
'range-pressed': pressedKnob !== undefined,
|
|
778
|
+
[`range-pressed-${pressedKnobName}`]: pressedKnob !== undefined && pressedKnobName !== undefined,
|
|
779
|
+
[`range-pressed-${pressedKnobPosition}`]: pressedKnob !== undefined && pressedKnobPosition !== undefined,
|
|
689
780
|
'range-has-pin': pin,
|
|
690
781
|
[`range-label-placement-${labelPlacement}`]: true,
|
|
691
782
|
'range-item-start-adjustment': needsStartAdjustment,
|
|
692
783
|
'range-item-end-adjustment': needsEndAdjustment,
|
|
693
|
-
|
|
784
|
+
'range-value-min': valueAtMin,
|
|
785
|
+
'range-value-max': valueAtMax,
|
|
786
|
+
}) }, h("label", { key: 'beead65ab01e3b18e4be59c0ee8ac6ebf32aad7c', class: "range-wrapper", id: "range-label" }, h("div", { key: '03633c689d9d2e4c50a2131bcd560329df49e314', class: {
|
|
694
787
|
'label-text-wrapper': true,
|
|
695
788
|
'label-text-wrapper-hidden': !hasLabel,
|
|
696
|
-
}, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '
|
|
789
|
+
}, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: 'c066804263ab6ae7393f8dcc51184b7198844ffa', class: "native-wrapper" }, h("slot", { key: '7e8ea224d72b3e965dd948bee7e45c1a096b6899', name: "start" }), this.renderRangeSlider(), h("slot", { key: '21f242f6f60ff3adce6a2d90b2d4dac1ceaf6624', name: "end" })))));
|
|
697
790
|
}
|
|
698
791
|
static get is() { return "ion-range"; }
|
|
699
792
|
static get encapsulation() { return "shadow"; }
|
|
@@ -721,7 +814,8 @@ export class Range {
|
|
|
721
814
|
"Color": {
|
|
722
815
|
"location": "import",
|
|
723
816
|
"path": "../../interface",
|
|
724
|
-
"id": "src/interface.d.ts::Color"
|
|
817
|
+
"id": "src/interface.d.ts::Color",
|
|
818
|
+
"referenceLocation": "Color"
|
|
725
819
|
}
|
|
726
820
|
}
|
|
727
821
|
},
|
|
@@ -884,7 +978,8 @@ export class Range {
|
|
|
884
978
|
"PinFormatter": {
|
|
885
979
|
"location": "import",
|
|
886
980
|
"path": "./range-interface",
|
|
887
|
-
"id": "src/components/range/range-interface.ts::PinFormatter"
|
|
981
|
+
"id": "src/components/range/range-interface.ts::PinFormatter",
|
|
982
|
+
"referenceLocation": "PinFormatter"
|
|
888
983
|
}
|
|
889
984
|
}
|
|
890
985
|
},
|
|
@@ -1007,7 +1102,8 @@ export class Range {
|
|
|
1007
1102
|
"RangeValue": {
|
|
1008
1103
|
"location": "import",
|
|
1009
1104
|
"path": "./range-interface",
|
|
1010
|
-
"id": "src/components/range/range-interface.ts::RangeValue"
|
|
1105
|
+
"id": "src/components/range/range-interface.ts::RangeValue",
|
|
1106
|
+
"referenceLocation": "RangeValue"
|
|
1011
1107
|
}
|
|
1012
1108
|
}
|
|
1013
1109
|
},
|
|
@@ -1049,6 +1145,9 @@ export class Range {
|
|
|
1049
1145
|
return {
|
|
1050
1146
|
"ratioA": {},
|
|
1051
1147
|
"ratioB": {},
|
|
1148
|
+
"activatedKnob": {},
|
|
1149
|
+
"focusedKnob": {},
|
|
1150
|
+
"hoveredKnob": {},
|
|
1052
1151
|
"pressedKnob": {}
|
|
1053
1152
|
};
|
|
1054
1153
|
}
|
|
@@ -1070,7 +1169,8 @@ export class Range {
|
|
|
1070
1169
|
"RangeChangeEventDetail": {
|
|
1071
1170
|
"location": "import",
|
|
1072
1171
|
"path": "./range-interface",
|
|
1073
|
-
"id": "src/components/range/range-interface.ts::RangeChangeEventDetail"
|
|
1172
|
+
"id": "src/components/range/range-interface.ts::RangeChangeEventDetail",
|
|
1173
|
+
"referenceLocation": "RangeChangeEventDetail"
|
|
1074
1174
|
}
|
|
1075
1175
|
}
|
|
1076
1176
|
}
|
|
@@ -1091,7 +1191,8 @@ export class Range {
|
|
|
1091
1191
|
"RangeChangeEventDetail": {
|
|
1092
1192
|
"location": "import",
|
|
1093
1193
|
"path": "./range-interface",
|
|
1094
|
-
"id": "src/components/range/range-interface.ts::RangeChangeEventDetail"
|
|
1194
|
+
"id": "src/components/range/range-interface.ts::RangeChangeEventDetail",
|
|
1195
|
+
"referenceLocation": "RangeChangeEventDetail"
|
|
1095
1196
|
}
|
|
1096
1197
|
}
|
|
1097
1198
|
}
|
|
@@ -1142,7 +1243,8 @@ export class Range {
|
|
|
1142
1243
|
"RangeKnobMoveStartEventDetail": {
|
|
1143
1244
|
"location": "import",
|
|
1144
1245
|
"path": "./range-interface",
|
|
1145
|
-
"id": "src/components/range/range-interface.ts::RangeKnobMoveStartEventDetail"
|
|
1246
|
+
"id": "src/components/range/range-interface.ts::RangeKnobMoveStartEventDetail",
|
|
1247
|
+
"referenceLocation": "RangeKnobMoveStartEventDetail"
|
|
1146
1248
|
}
|
|
1147
1249
|
}
|
|
1148
1250
|
}
|
|
@@ -1163,7 +1265,8 @@ export class Range {
|
|
|
1163
1265
|
"RangeKnobMoveEndEventDetail": {
|
|
1164
1266
|
"location": "import",
|
|
1165
1267
|
"path": "./range-interface",
|
|
1166
|
-
"id": "src/components/range/range-interface.ts::RangeKnobMoveEndEventDetail"
|
|
1268
|
+
"id": "src/components/range/range-interface.ts::RangeKnobMoveEndEventDetail",
|
|
1269
|
+
"referenceLocation": "RangeKnobMoveEndEventDetail"
|
|
1167
1270
|
}
|
|
1168
1271
|
}
|
|
1169
1272
|
}
|
|
@@ -1195,7 +1298,7 @@ export class Range {
|
|
|
1195
1298
|
}];
|
|
1196
1299
|
}
|
|
1197
1300
|
}
|
|
1198
|
-
const renderKnob = (rtl, { knob, value, ratio, min, max, disabled, pressed, pin, handleKeyboard, pinFormatter, inheritedAttributes, onKnobFocus, onKnobBlur, }) => {
|
|
1301
|
+
const renderKnob = (rtl, { knob, position, dualKnobs, value, ratio, min, max, disabled, activated, focused, hovered, pressed, pin, handleKeyboard, pinFormatter, inheritedAttributes, onKnobFocus, onKnobBlur, onKnobMouseEnter, onKnobMouseLeave, }) => {
|
|
1199
1302
|
const start = rtl ? 'right' : 'left';
|
|
1200
1303
|
const knobStyle = () => {
|
|
1201
1304
|
const style = {};
|
|
@@ -1216,16 +1319,74 @@ const renderKnob = (rtl, { knob, value, ratio, min, max, disabled, pressed, pin,
|
|
|
1216
1319
|
ev.preventDefault();
|
|
1217
1320
|
ev.stopPropagation();
|
|
1218
1321
|
}
|
|
1219
|
-
}, onFocus: () => onKnobFocus(knob), onBlur: onKnobBlur, class: {
|
|
1322
|
+
}, onFocus: () => onKnobFocus(knob), onBlur: onKnobBlur, onMouseEnter: () => onKnobMouseEnter(knob), onMouseLeave: onKnobMouseLeave, class: {
|
|
1220
1323
|
'range-knob-handle': true,
|
|
1221
|
-
'range-knob-a': knob === 'A',
|
|
1222
|
-
'range-knob-b': knob === 'B',
|
|
1324
|
+
'range-knob-handle-a': knob === 'A',
|
|
1325
|
+
'range-knob-handle-b': knob === 'B',
|
|
1223
1326
|
'range-knob-pressed': pressed,
|
|
1224
1327
|
'range-knob-min': value === min,
|
|
1225
1328
|
'range-knob-max': value === max,
|
|
1226
1329
|
'ion-activatable': true,
|
|
1227
1330
|
'ion-focusable': true,
|
|
1228
|
-
|
|
1331
|
+
'ion-focused': focused,
|
|
1332
|
+
}, part: [
|
|
1333
|
+
'knob-handle',
|
|
1334
|
+
dualKnobs && knob === 'A' && 'knob-handle-a',
|
|
1335
|
+
dualKnobs && knob === 'B' && 'knob-handle-b',
|
|
1336
|
+
dualKnobs && position === 'lower' && 'knob-handle-lower',
|
|
1337
|
+
dualKnobs && position === 'upper' && 'knob-handle-upper',
|
|
1338
|
+
pressed && 'pressed',
|
|
1339
|
+
focused && 'focused',
|
|
1340
|
+
hovered && 'hover',
|
|
1341
|
+
activated && 'activated',
|
|
1342
|
+
]
|
|
1343
|
+
.filter(Boolean)
|
|
1344
|
+
.join(' '), style: knobStyle(), role: "slider", tabindex: disabled ? -1 : 0, "aria-label": ariaLabel !== undefined ? ariaLabel : null, "aria-labelledby": ariaLabel === undefined ? 'range-label' : null, "aria-valuemin": min, "aria-valuemax": max, "aria-disabled": disabled ? 'true' : null, "aria-valuenow": value }, pin && (h("div", { class: "range-pin", role: "presentation", part: [
|
|
1345
|
+
'pin',
|
|
1346
|
+
dualKnobs && knob === 'A' && 'pin-a',
|
|
1347
|
+
dualKnobs && knob === 'B' && 'pin-b',
|
|
1348
|
+
dualKnobs && position === 'lower' && 'pin-lower',
|
|
1349
|
+
dualKnobs && position === 'upper' && 'pin-upper',
|
|
1350
|
+
pressed && 'pressed',
|
|
1351
|
+
focused && 'focused',
|
|
1352
|
+
hovered && 'hover',
|
|
1353
|
+
activated && 'activated',
|
|
1354
|
+
]
|
|
1355
|
+
.filter(Boolean)
|
|
1356
|
+
.join(' ') }, pinFormatter(value))), h("div", { class: "range-knob", role: "presentation", part: [
|
|
1357
|
+
'knob',
|
|
1358
|
+
dualKnobs && knob === 'A' && 'knob-a',
|
|
1359
|
+
dualKnobs && knob === 'B' && 'knob-b',
|
|
1360
|
+
dualKnobs && position === 'lower' && 'knob-lower',
|
|
1361
|
+
dualKnobs && position === 'upper' && 'knob-upper',
|
|
1362
|
+
pressed && 'pressed',
|
|
1363
|
+
focused && 'focused',
|
|
1364
|
+
hovered && 'hover',
|
|
1365
|
+
activated && 'activated',
|
|
1366
|
+
]
|
|
1367
|
+
.filter(Boolean)
|
|
1368
|
+
.join(' ') })));
|
|
1369
|
+
};
|
|
1370
|
+
/**
|
|
1371
|
+
* Returns whether the given knob is at the lower or upper position based
|
|
1372
|
+
* on current ratios for the given knob.
|
|
1373
|
+
*
|
|
1374
|
+
* When both knobs have the same ratio, we only want one "lower" and one
|
|
1375
|
+
* "upper" position so that the `lower` and `upper` parts are not applied to
|
|
1376
|
+
* the same knob. In that case, we treat knob "A" as the lower position and
|
|
1377
|
+
* knob "B" as the upper position.
|
|
1378
|
+
*/
|
|
1379
|
+
const getKnobPosition = (knob, ratioA, ratioB, dualKnobs) => {
|
|
1380
|
+
if (!dualKnobs) {
|
|
1381
|
+
return 'lower';
|
|
1382
|
+
}
|
|
1383
|
+
if (ratioA === ratioB) {
|
|
1384
|
+
return knob === 'A' ? 'lower' : 'upper';
|
|
1385
|
+
}
|
|
1386
|
+
if (knob === 'A') {
|
|
1387
|
+
return ratioA < ratioB ? 'lower' : 'upper';
|
|
1388
|
+
}
|
|
1389
|
+
return ratioB < ratioA ? 'lower' : 'upper';
|
|
1229
1390
|
};
|
|
1230
1391
|
const ratioToValue = (ratio, min, max, step) => {
|
|
1231
1392
|
let value = (max - min) * ratio;
|