@vuetify/nightly 3.9.2-master.2025-07-23 → 3.9.2-master.2025-07-25
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/CHANGELOG.md +15 -3
- package/dist/_component-variables-labs.sass +3 -1
- package/dist/json/attributes.json +4029 -3617
- package/dist/json/importMap-labs.json +38 -14
- package/dist/json/importMap.json +148 -148
- package/dist/json/tags.json +133 -0
- package/dist/json/web-types.json +13484 -11867
- package/dist/vuetify-labs.cjs +1525 -126
- package/dist/vuetify-labs.css +5448 -5007
- package/dist/vuetify-labs.d.ts +7670 -974
- package/dist/vuetify-labs.esm.js +1526 -127
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +1525 -126
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +74 -34
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3415 -3415
- package/dist/vuetify.d.ts +86 -61
- package/dist/vuetify.esm.js +74 -34
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +74 -34
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +976 -977
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VBottomSheet/VBottomSheet.d.ts +6 -6
- package/lib/components/VDialog/VDialog.d.ts +6 -6
- package/lib/components/VOverlay/VOverlay.js +1 -0
- package/lib/components/VOverlay/VOverlay.js.map +1 -1
- package/lib/components/VOverlay/locationStrategies.js +16 -10
- package/lib/components/VOverlay/locationStrategies.js.map +1 -1
- package/lib/components/VOverlay/scrollStrategies.d.ts +1 -0
- package/lib/components/VOverlay/scrollStrategies.js +6 -4
- package/lib/components/VOverlay/scrollStrategies.js.map +1 -1
- package/lib/components/VRangeSlider/VRangeSlider.d.ts +13 -0
- package/lib/components/VSlider/VSlider.d.ts +13 -0
- package/lib/components/VSlider/VSlider.js +3 -1
- package/lib/components/VSlider/VSlider.js.map +1 -1
- package/lib/components/VSlider/VSliderThumb.d.ts +13 -0
- package/lib/components/VSlider/VSliderThumb.js +2 -0
- package/lib/components/VSlider/VSliderThumb.js.map +1 -1
- package/lib/components/VSlider/slider.d.ts +6 -0
- package/lib/components/VSlider/slider.js +2 -0
- package/lib/components/VSlider/slider.js.map +1 -1
- package/lib/components/index.js +2 -2
- package/lib/components/index.js.map +1 -1
- package/lib/composables/goto.d.ts +3 -2
- package/lib/composables/goto.js +2 -16
- package/lib/composables/goto.js.map +1 -1
- package/lib/composables/reveal.d.ts +36 -0
- package/lib/composables/reveal.js +30 -0
- package/lib/composables/reveal.js.map +1 -0
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +142 -133
- package/lib/framework.js +1 -1
- package/lib/iconsets/fa.js +9 -1
- package/lib/iconsets/fa.js.map +1 -1
- package/lib/iconsets/fa4.js +9 -1
- package/lib/iconsets/fa4.js.map +1 -1
- package/lib/iconsets/md.js +9 -1
- package/lib/iconsets/md.js.map +1 -1
- package/lib/iconsets/mdi-svg.js +9 -1
- package/lib/iconsets/mdi-svg.js.map +1 -1
- package/lib/iconsets/mdi.js +9 -1
- package/lib/iconsets/mdi.js.map +1 -1
- package/lib/labs/VPie/VPie.css +105 -0
- package/lib/labs/VPie/VPie.d.ts +891 -0
- package/lib/labs/VPie/VPie.js +291 -0
- package/lib/labs/VPie/VPie.js.map +1 -0
- package/lib/labs/VPie/VPie.sass +109 -0
- package/lib/labs/VPie/VPieSegment.d.ts +310 -0
- package/lib/labs/VPie/VPieSegment.js +103 -0
- package/lib/labs/VPie/VPieSegment.js.map +1 -0
- package/lib/labs/VPie/VPieTooltip.d.ts +279 -0
- package/lib/labs/VPie/VPieTooltip.js +84 -0
- package/lib/labs/VPie/VPieTooltip.js.map +1 -0
- package/lib/labs/VPie/_variables.scss +11 -0
- package/lib/labs/VPie/index.d.ts +3 -0
- package/lib/labs/VPie/index.js +4 -0
- package/lib/labs/VPie/index.js.map +1 -0
- package/lib/labs/VPie/types.d.ts +16 -0
- package/lib/labs/VPie/types.js +2 -0
- package/lib/labs/VPie/types.js.map +1 -0
- package/lib/labs/VPie/utils.d.ts +23 -0
- package/lib/labs/VPie/utils.js +49 -0
- package/lib/labs/VPie/utils.js.map +1 -0
- package/lib/labs/VVideo/VVideo.css +322 -0
- package/lib/labs/VVideo/VVideo.d.ts +6932 -0
- package/lib/labs/VVideo/VVideo.js +424 -0
- package/lib/labs/VVideo/VVideo.js.map +1 -0
- package/lib/labs/VVideo/VVideo.sass +304 -0
- package/lib/labs/VVideo/VVideoControls.d.ts +3524 -0
- package/lib/labs/VVideo/VVideoControls.js +236 -0
- package/lib/labs/VVideo/VVideoControls.js.map +1 -0
- package/lib/labs/VVideo/VVideoVolume.d.ts +3088 -0
- package/lib/labs/VVideo/VVideoVolume.js +94 -0
- package/lib/labs/VVideo/VVideoVolume.js.map +1 -0
- package/lib/labs/VVideo/_variables.scss +58 -0
- package/lib/labs/VVideo/index.d.ts +3 -0
- package/lib/labs/VVideo/index.js +4 -0
- package/lib/labs/VVideo/index.js.map +1 -0
- package/lib/labs/components.d.ts +2 -0
- package/lib/labs/components.js +2 -0
- package/lib/labs/components.js.map +1 -1
- package/lib/locale/af.d.ts +11 -0
- package/lib/locale/af.js +11 -0
- package/lib/locale/af.js.map +1 -1
- package/lib/locale/ar.d.ts +11 -0
- package/lib/locale/ar.js +11 -0
- package/lib/locale/ar.js.map +1 -1
- package/lib/locale/az.d.ts +11 -0
- package/lib/locale/az.js +11 -0
- package/lib/locale/az.js.map +1 -1
- package/lib/locale/bg.d.ts +11 -0
- package/lib/locale/bg.js +11 -0
- package/lib/locale/bg.js.map +1 -1
- package/lib/locale/ca.d.ts +11 -0
- package/lib/locale/ca.js +11 -0
- package/lib/locale/ca.js.map +1 -1
- package/lib/locale/ckb.d.ts +11 -0
- package/lib/locale/ckb.js +11 -0
- package/lib/locale/ckb.js.map +1 -1
- package/lib/locale/cs.d.ts +11 -0
- package/lib/locale/cs.js +11 -0
- package/lib/locale/cs.js.map +1 -1
- package/lib/locale/da.d.ts +11 -0
- package/lib/locale/da.js +11 -0
- package/lib/locale/da.js.map +1 -1
- package/lib/locale/de.d.ts +11 -0
- package/lib/locale/de.js +11 -0
- package/lib/locale/de.js.map +1 -1
- package/lib/locale/el.d.ts +11 -0
- package/lib/locale/el.js +11 -0
- package/lib/locale/el.js.map +1 -1
- package/lib/locale/en.d.ts +11 -0
- package/lib/locale/en.js +11 -0
- package/lib/locale/en.js.map +1 -1
- package/lib/locale/es.d.ts +11 -0
- package/lib/locale/es.js +11 -0
- package/lib/locale/es.js.map +1 -1
- package/lib/locale/et.d.ts +11 -0
- package/lib/locale/et.js +11 -0
- package/lib/locale/et.js.map +1 -1
- package/lib/locale/fa.d.ts +11 -0
- package/lib/locale/fa.js +11 -0
- package/lib/locale/fa.js.map +1 -1
- package/lib/locale/fi.d.ts +11 -0
- package/lib/locale/fi.js +11 -0
- package/lib/locale/fi.js.map +1 -1
- package/lib/locale/fr.d.ts +11 -0
- package/lib/locale/fr.js +11 -0
- package/lib/locale/fr.js.map +1 -1
- package/lib/locale/he.d.ts +11 -0
- package/lib/locale/he.js +11 -0
- package/lib/locale/he.js.map +1 -1
- package/lib/locale/hr.d.ts +11 -0
- package/lib/locale/hr.js +11 -0
- package/lib/locale/hr.js.map +1 -1
- package/lib/locale/hu.d.ts +11 -0
- package/lib/locale/hu.js +11 -0
- package/lib/locale/hu.js.map +1 -1
- package/lib/locale/id.d.ts +11 -0
- package/lib/locale/id.js +11 -0
- package/lib/locale/id.js.map +1 -1
- package/lib/locale/it.d.ts +11 -0
- package/lib/locale/it.js +11 -0
- package/lib/locale/it.js.map +1 -1
- package/lib/locale/ja.d.ts +11 -0
- package/lib/locale/ja.js +11 -0
- package/lib/locale/ja.js.map +1 -1
- package/lib/locale/km.d.ts +11 -0
- package/lib/locale/km.js +11 -0
- package/lib/locale/km.js.map +1 -1
- package/lib/locale/ko.d.ts +11 -0
- package/lib/locale/ko.js +11 -0
- package/lib/locale/ko.js.map +1 -1
- package/lib/locale/lt.d.ts +11 -0
- package/lib/locale/lt.js +11 -0
- package/lib/locale/lt.js.map +1 -1
- package/lib/locale/lv.d.ts +11 -0
- package/lib/locale/lv.js +11 -0
- package/lib/locale/lv.js.map +1 -1
- package/lib/locale/nl.d.ts +11 -0
- package/lib/locale/nl.js +11 -0
- package/lib/locale/nl.js.map +1 -1
- package/lib/locale/no.d.ts +11 -0
- package/lib/locale/no.js +11 -0
- package/lib/locale/no.js.map +1 -1
- package/lib/locale/pl.d.ts +11 -0
- package/lib/locale/pl.js +11 -0
- package/lib/locale/pl.js.map +1 -1
- package/lib/locale/pt.d.ts +11 -0
- package/lib/locale/pt.js +11 -0
- package/lib/locale/pt.js.map +1 -1
- package/lib/locale/ro.d.ts +11 -0
- package/lib/locale/ro.js +11 -0
- package/lib/locale/ro.js.map +1 -1
- package/lib/locale/ru.d.ts +11 -0
- package/lib/locale/ru.js +11 -0
- package/lib/locale/ru.js.map +1 -1
- package/lib/locale/sk.d.ts +11 -0
- package/lib/locale/sk.js +11 -0
- package/lib/locale/sk.js.map +1 -1
- package/lib/locale/sl.d.ts +11 -0
- package/lib/locale/sl.js +11 -0
- package/lib/locale/sl.js.map +1 -1
- package/lib/locale/sr-Cyrl.d.ts +11 -0
- package/lib/locale/sr-Cyrl.js +11 -0
- package/lib/locale/sr-Cyrl.js.map +1 -1
- package/lib/locale/sr-Latn.d.ts +11 -0
- package/lib/locale/sr-Latn.js +11 -0
- package/lib/locale/sr-Latn.js.map +1 -1
- package/lib/locale/sv.d.ts +11 -0
- package/lib/locale/sv.js +11 -0
- package/lib/locale/sv.js.map +1 -1
- package/lib/locale/th.d.ts +11 -0
- package/lib/locale/th.js +11 -0
- package/lib/locale/th.js.map +1 -1
- package/lib/locale/tr.d.ts +11 -0
- package/lib/locale/tr.js +11 -0
- package/lib/locale/tr.js.map +1 -1
- package/lib/locale/uk.d.ts +11 -0
- package/lib/locale/uk.js +11 -0
- package/lib/locale/uk.js.map +1 -1
- package/lib/locale/vi.d.ts +11 -0
- package/lib/locale/vi.js +11 -0
- package/lib/locale/vi.js.map +1 -1
- package/lib/locale/zh-Hans.d.ts +11 -0
- package/lib/locale/zh-Hans.js +11 -0
- package/lib/locale/zh-Hans.js.map +1 -1
- package/lib/locale/zh-Hant.d.ts +11 -0
- package/lib/locale/zh-Hant.js +11 -0
- package/lib/locale/zh-Hant.js.map +1 -1
- package/lib/util/easing.d.ts +22 -0
- package/lib/util/easing.js +53 -0
- package/lib/util/easing.js.map +1 -1
- package/lib/util/index.d.ts +1 -0
- package/lib/util/index.js +1 -0
- package/lib/util/index.js.map +1 -1
- package/lib/util/svg-arc-corners.d.ts +4 -0
- package/lib/util/svg-arc-corners.js +73 -0
- package/lib/util/svg-arc-corners.js.map +1 -0
- package/lib/util/timeUtils.d.ts +1 -0
- package/lib/util/timeUtils.js +4 -0
- package/lib/util/timeUtils.js.map +1 -0
- package/package.json +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"scrollStrategies.js","names":["effectScope","onScopeDispose","watchEffect","requestNewFrame","convertToUnit","getScrollParents","hasScrollbar","IN_BROWSER","propsFactory","scrollStrategies","none","close","closeScrollStrategy","block","blockScrollStrategy","reposition","repositionScrollStrategy","makeScrollStrategyProps","scrollStrategy","type","String","Function","default","validator","val","useScrollStrategies","props","data","scope","stop","isActive","value","Promise","resolve","setTimeout","active","run","onScroll","e","bindScroll","targetEl","contentEl","offsetParent","root","scrollElements","Set","contained","undefined","filter","el","classList","contains","scrollbarWidth","window","innerWidth","document","documentElement","offsetWidth","scrollableParent","add","forEach","i","style","setProperty","scrollLeft","scrollTop","x","parseFloat","getPropertyValue","y","scrollBehavior","removeProperty","remove","slow","raf","ric","update","start","performance","now","updateLocation","time","requestIdleCallback","cb","cancelAnimationFrame","requestAnimationFrame","cancelIdleCallback","addEventListener","passive","removeEventListener"],"sources":["../../../src/components/VOverlay/scrollStrategies.ts"],"sourcesContent":["// Utilities\nimport { effectScope, onScopeDispose, watchEffect } from 'vue'\nimport { requestNewFrame } from './requestNewFrame'\nimport { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\n\nexport interface ScrollStrategyData {\n root: Ref<HTMLElement | undefined>\n contentEl: Ref<HTMLElement | undefined>\n targetEl: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n updateLocation: Ref<((e: Event) => void) | undefined>\n}\n\nexport type ScrollStrategyFunction = (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) => void\n\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy,\n}\n\nexport interface StrategyProps {\n scrollStrategy: keyof typeof scrollStrategies | ScrollStrategyFunction\n contained: boolean | undefined\n}\n\nexport const makeScrollStrategyProps = propsFactory({\n scrollStrategy: {\n type: [String, Function] as PropType<StrategyProps['scrollStrategy']>,\n default: 'block',\n validator: (val: any) => typeof val === 'function' || val in scrollStrategies,\n },\n}, 'VOverlay-scroll-strategies')\n\nexport function useScrollStrategies (\n props: StrategyProps,\n data: ScrollStrategyData\n) {\n if (!IN_BROWSER) return\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n\n if (!(data.isActive.value && props.scrollStrategy)) return\n\n scope = effectScope()\n await new Promise(resolve => setTimeout(resolve))\n scope.active && scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope!)\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope!)\n }\n })\n })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n\nfunction closeScrollStrategy (data: ScrollStrategyData) {\n function onScroll (e: Event) {\n data.isActive.value = false\n }\n\n bindScroll(data.targetEl.value ?? data.contentEl.value, onScroll)\n}\n\nfunction blockScrollStrategy (data: ScrollStrategyData, props: StrategyProps) {\n const offsetParent = data.root.value?.offsetParent\n const scrollElements = [...new Set([\n ...getScrollParents(data.targetEl.value, props.contained ? offsetParent : undefined),\n ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined),\n ])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'))\n const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth\n\n const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement)\n if (scrollableParent) {\n data.root.value!.classList.add('v-overlay--scroll-blocked')\n }\n\n scrollElements.forEach((el, i) => {\n el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft))\n el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop))\n\n if (el !== document.documentElement) {\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth))\n }\n\n el.classList.add('v-overlay-scroll-blocked')\n })\n\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'))\n const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'))\n\n const scrollBehavior = el.style.scrollBehavior\n\n el.style.scrollBehavior = 'auto'\n el.style.removeProperty('--v-body-scroll-x')\n el.style.removeProperty('--v-body-scroll-y')\n el.style.removeProperty('--v-scrollbar-offset')\n el.classList.remove('v-overlay-scroll-blocked')\n\n el.scrollLeft = -x\n el.scrollTop = -y\n\n el.style.scrollBehavior = scrollBehavior\n })\n if (scrollableParent) {\n data.root.value!.classList.remove('v-overlay--scroll-blocked')\n }\n })\n}\n\nfunction repositionScrollStrategy (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) {\n let slow = false\n let raf = -1\n let ric = -1\n\n function update (e: Event) {\n requestNewFrame(() => {\n const start = performance.now()\n data.updateLocation.value?.(e)\n const time = performance.now() - start\n slow = time / (1000 / 60) > 2\n })\n }\n\n ric = (typeof requestIdleCallback === 'undefined' ? (cb: Function) => cb() : requestIdleCallback)(() => {\n scope.run(() => {\n bindScroll(data.targetEl.value ?? data.contentEl.value, e => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e)\n })\n })\n } else {\n update(e)\n }\n })\n })\n })\n\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric)\n cancelAnimationFrame(raf)\n })\n}\n\n/** @private */\nfunction bindScroll (el: HTMLElement | undefined, onScroll: (e: Event) => void) {\n const scrollElements = [document, ...getScrollParents(el)]\n scrollElements.forEach(el => {\n el.addEventListener('scroll', onScroll, { passive: true })\n })\n\n onScopeDispose(() => {\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', onScroll)\n })\n })\n}\n"],"mappings":"AAAA;AACA,SAASA,WAAW,EAAEC,cAAc,EAAEC,WAAW,QAAQ,KAAK;AAAA,SACrDC,eAAe;AAAA,SACfC,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,UAAU,EAAEC,YAAY,+BAEhF;AAaA,MAAMC,gBAAgB,GAAG;EACvBC,IAAI,EAAE,IAAI;EACVC,KAAK,EAAEC,mBAAmB;EAC1BC,KAAK,EAAEC,mBAAmB;EAC1BC,UAAU,EAAEC;AACd,CAAC;AAOD,OAAO,MAAMC,uBAAuB,GAAGT,YAAY,CAAC;EAClDU,cAAc,EAAE;IACdC,IAAI,EAAE,CAACC,MAAM,EAAEC,QAAQ,CAA8C;IACrEC,OAAO,EAAE,OAAO;IAChBC,SAAS,EAAGC,GAAQ,IAAK,OAAOA,GAAG,KAAK,UAAU,IAAIA,GAAG,IAAIf;EAC/D;AACF,CAAC,EAAE,4BAA4B,CAAC;AAEhC,OAAO,SAASgB,mBAAmBA,CACjCC,KAAoB,EACpBC,IAAwB,EACxB;EACA,IAAI,CAACpB,UAAU,EAAE;EAEjB,IAAIqB,KAA8B;EAClC1B,WAAW,CAAC,YAAY;IACtB0B,KAAK,EAAEC,IAAI,CAAC,CAAC;IAEb,IAAI,EAAEF,IAAI,CAACG,QAAQ,CAACC,KAAK,IAAIL,KAAK,CAACR,cAAc,CAAC,EAAE;IAEpDU,KAAK,GAAG5B,WAAW,CAAC,CAAC;IACrB,MAAM,IAAIgC,OAAO,CAACC,OAAO,IAAIC,UAAU,CAACD,OAAO,CAAC,CAAC;IACjDL,KAAK,CAACO,MAAM,IAAIP,KAAK,CAACQ,GAAG,CAAC,MAAM;MAC9B,IAAI,OAAOV,KAAK,CAACR,cAAc,KAAK,UAAU,EAAE;QAC9CQ,KAAK,CAACR,cAAc,CAACS,IAAI,EAAED,KAAK,EAAEE,KAAM,CAAC;MAC3C,CAAC,MAAM;QACLnB,gBAAgB,CAACiB,KAAK,CAACR,cAAc,CAAC,GAAGS,IAAI,EAAED,KAAK,EAAEE,KAAM,CAAC;MAC/D;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF3B,cAAc,CAAC,MAAM;IACnB2B,KAAK,EAAEC,IAAI,CAAC,CAAC;EACf,CAAC,CAAC;AACJ;AAEA,SAASjB,mBAAmBA,CAAEe,IAAwB,EAAE;EACtD,SAASU,QAAQA,CAAEC,CAAQ,EAAE;IAC3BX,IAAI,CAACG,QAAQ,CAACC,KAAK,GAAG,KAAK;EAC7B;EAEAQ,UAAU,CAACZ,IAAI,CAACa,QAAQ,CAACT,KAAK,IAAIJ,IAAI,CAACc,SAAS,CAACV,KAAK,EAAEM,QAAQ,CAAC;AACnE;AAEA,SAASvB,mBAAmBA,CAAEa,IAAwB,EAAED,KAAoB,EAAE;EAC5E,MAAMgB,YAAY,GAAGf,IAAI,CAACgB,IAAI,CAACZ,KAAK,EAAEW,YAAY;EAClD,MAAME,cAAc,GAAG,CAAC,GAAG,IAAIC,GAAG,CAAC,CACjC,GAAGxC,gBAAgB,CAACsB,IAAI,CAACa,QAAQ,CAACT,KAAK,EAAEL,KAAK,CAACoB,SAAS,GAAGJ,YAAY,GAAGK,SAAS,CAAC,EACpF,GAAG1C,gBAAgB,CAACsB,IAAI,CAACc,SAAS,CAACV,KAAK,EAAEL,KAAK,CAACoB,SAAS,GAAGJ,YAAY,GAAGK,SAAS,CAAC,CACtF,CAAC,CAAC,CAACC,MAAM,CAACC,EAAE,IAAI,CAACA,EAAE,CAACC,SAAS,CAACC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;EACpE,MAAMC,cAAc,GAAGC,MAAM,CAACC,UAAU,GAAGC,QAAQ,CAACC,eAAe,CAACC,WAAW;EAE/E,MAAMC,gBAAgB,GAAG,CAACT,EAAE,IAAI3C,YAAY,CAAC2C,EAAE,CAAC,IAAIA,EAAE,EAAEP,YAAY,IAAIa,QAAQ,CAACC,eAAe,CAAC;EACjG,IAAIE,gBAAgB,EAAE;IACpB/B,IAAI,CAACgB,IAAI,CAACZ,KAAK,CAAEmB,SAAS,CAACS,GAAG,CAAC,2BAA2B,CAAC;EAC7D;EAEAf,cAAc,CAACgB,OAAO,CAAC,CAACX,EAAE,EAAEY,CAAC,KAAK;IAChCZ,EAAE,CAACa,KAAK,CAACC,WAAW,CAAC,mBAAmB,EAAE3D,aAAa,CAAC,CAAC6C,EAAE,CAACe,UAAU,CAAC,CAAC;IACxEf,EAAE,CAACa,KAAK,CAACC,WAAW,CAAC,mBAAmB,EAAE3D,aAAa,CAAC,CAAC6C,EAAE,CAACgB,SAAS,CAAC,CAAC;IAEvE,IAAIhB,EAAE,KAAKM,QAAQ,CAACC,eAAe,EAAE;MACnCP,EAAE,CAACa,KAAK,CAACC,WAAW,CAAC,sBAAsB,EAAE3D,aAAa,CAACgD,cAAc,CAAC,CAAC;IAC7E;IAEAH,EAAE,CAACC,SAAS,CAACS,GAAG,CAAC,0BAA0B,CAAC;EAC9C,CAAC,CAAC;EAEF1D,cAAc,CAAC,MAAM;IACnB2C,cAAc,CAACgB,OAAO,CAAC,CAACX,EAAE,EAAEY,CAAC,KAAK;MAChC,MAAMK,CAAC,GAAGC,UAAU,CAAClB,EAAE,CAACa,KAAK,CAACM,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;MACpE,MAAMC,CAAC,GAAGF,UAAU,CAAClB,EAAE,CAACa,KAAK,CAACM,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;MAEpE,MAAME,cAAc,GAAGrB,EAAE,CAACa,KAAK,CAACQ,cAAc;MAE9CrB,EAAE,CAACa,KAAK,CAACQ,cAAc,GAAG,MAAM;MAChCrB,EAAE,CAACa,KAAK,CAACS,cAAc,CAAC,mBAAmB,CAAC;MAC5CtB,EAAE,CAACa,KAAK,CAACS,cAAc,CAAC,mBAAmB,CAAC;MAC5CtB,EAAE,CAACa,KAAK,CAACS,cAAc,CAAC,sBAAsB,CAAC;MAC/CtB,EAAE,CAACC,SAAS,CAACsB,MAAM,CAAC,0BAA0B,CAAC;MAE/CvB,EAAE,CAACe,UAAU,GAAG,CAACE,CAAC;MAClBjB,EAAE,CAACgB,SAAS,GAAG,CAACI,CAAC;MAEjBpB,EAAE,CAACa,KAAK,CAACQ,cAAc,GAAGA,cAAc;IAC1C,CAAC,CAAC;IACF,IAAIZ,gBAAgB,EAAE;MACpB/B,IAAI,CAACgB,IAAI,CAACZ,KAAK,CAAEmB,SAAS,CAACsB,MAAM,CAAC,2BAA2B,CAAC;IAChE;EACF,CAAC,CAAC;AACJ;AAEA,SAASxD,wBAAwBA,CAAEW,IAAwB,EAAED,KAAoB,EAAEE,KAAkB,EAAE;EACrG,IAAI6C,IAAI,GAAG,KAAK;EAChB,IAAIC,GAAG,GAAG,CAAC,CAAC;EACZ,IAAIC,GAAG,GAAG,CAAC,CAAC;EAEZ,SAASC,MAAMA,CAAEtC,CAAQ,EAAE;IACzBnC,eAAe,CAAC,MAAM;MACpB,MAAM0E,KAAK,GAAGC,WAAW,CAACC,GAAG,CAAC,CAAC;MAC/BpD,IAAI,CAACqD,cAAc,CAACjD,KAAK,GAAGO,CAAC,CAAC;MAC9B,MAAM2C,IAAI,GAAGH,WAAW,CAACC,GAAG,CAAC,CAAC,GAAGF,KAAK;MACtCJ,IAAI,GAAGQ,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC;IAC/B,CAAC,CAAC;EACJ;EAEAN,GAAG,GAAG,CAAC,OAAOO,mBAAmB,KAAK,WAAW,GAAIC,EAAY,IAAKA,EAAE,CAAC,CAAC,GAAGD,mBAAmB,EAAE,MAAM;IACtGtD,KAAK,CAACQ,GAAG,CAAC,MAAM;MACdG,UAAU,CAACZ,IAAI,CAACa,QAAQ,CAACT,KAAK,IAAIJ,IAAI,CAACc,SAAS,CAACV,KAAK,EAAEO,CAAC,IAAI;QAC3D,IAAImC,IAAI,EAAE;UACR;UACA;UACA;UACA;UACAW,oBAAoB,CAACV,GAAG,CAAC;UACzBA,GAAG,GAAGW,qBAAqB,CAAC,MAAM;YAChCX,GAAG,GAAGW,qBAAqB,CAAC,MAAM;cAChCT,MAAM,CAACtC,CAAC,CAAC;YACX,CAAC,CAAC;UACJ,CAAC,CAAC;QACJ,CAAC,MAAM;UACLsC,MAAM,CAACtC,CAAC,CAAC;QACX;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFrC,cAAc,CAAC,MAAM;IACnB,OAAOqF,kBAAkB,KAAK,WAAW,IAAIA,kBAAkB,CAACX,GAAG,CAAC;IACpES,oBAAoB,CAACV,GAAG,CAAC;EAC3B,CAAC,CAAC;AACJ;;AAEA;AACA,SAASnC,UAAUA,CAAEU,EAA2B,EAAEZ,QAA4B,EAAE;EAC9E,MAAMO,cAAc,GAAG,CAACW,QAAQ,EAAE,GAAGlD,gBAAgB,CAAC4C,EAAE,CAAC,CAAC;EAC1DL,cAAc,CAACgB,OAAO,CAACX,EAAE,IAAI;IAC3BA,EAAE,CAACsC,gBAAgB,CAAC,QAAQ,EAAElD,QAAQ,EAAE;MAAEmD,OAAO,EAAE;IAAK,CAAC,CAAC;EAC5D,CAAC,CAAC;EAEFvF,cAAc,CAAC,MAAM;IACnB2C,cAAc,CAACgB,OAAO,CAACX,EAAE,IAAI;MAC3BA,EAAE,CAACwC,mBAAmB,CAAC,QAAQ,EAAEpD,QAAQ,CAAC;IAC5C,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ","ignoreList":[]}
|
1
|
+
{"version":3,"file":"scrollStrategies.js","names":["effectScope","onScopeDispose","watchEffect","requestNewFrame","convertToUnit","getScrollParents","hasScrollbar","IN_BROWSER","propsFactory","scrollStrategies","none","close","closeScrollStrategy","block","blockScrollStrategy","reposition","repositionScrollStrategy","makeScrollStrategyProps","scrollStrategy","type","String","Function","default","validator","val","useScrollStrategies","props","data","scope","stop","isActive","value","Promise","resolve","setTimeout","active","run","onScroll","e","bindScroll","target","contentEl","offsetParent","root","Array","isArray","document","elementFromPoint","scrollElements","Set","contained","undefined","filter","el","classList","contains","scrollbarWidth","window","innerWidth","documentElement","offsetWidth","scrollableParent","add","forEach","i","style","setProperty","scrollLeft","scrollTop","x","parseFloat","getPropertyValue","y","scrollBehavior","removeProperty","remove","slow","raf","ric","update","start","performance","now","updateLocation","time","requestIdleCallback","cb","cancelAnimationFrame","requestAnimationFrame","cancelIdleCallback","addEventListener","passive","removeEventListener"],"sources":["../../../src/components/VOverlay/scrollStrategies.ts"],"sourcesContent":["// Utilities\nimport { effectScope, onScopeDispose, watchEffect } from 'vue'\nimport { requestNewFrame } from './requestNewFrame'\nimport { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\n\nexport interface ScrollStrategyData {\n root: Ref<HTMLElement | undefined>\n contentEl: Ref<HTMLElement | undefined>\n targetEl: Ref<HTMLElement | undefined>\n target: Ref<HTMLElement | [x: number, y: number] | undefined>\n isActive: Ref<boolean>\n updateLocation: Ref<((e: Event) => void) | undefined>\n}\n\nexport type ScrollStrategyFunction = (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) => void\n\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy,\n}\n\nexport interface StrategyProps {\n scrollStrategy: keyof typeof scrollStrategies | ScrollStrategyFunction\n contained: boolean | undefined\n}\n\nexport const makeScrollStrategyProps = propsFactory({\n scrollStrategy: {\n type: [String, Function] as PropType<StrategyProps['scrollStrategy']>,\n default: 'block',\n validator: (val: any) => typeof val === 'function' || val in scrollStrategies,\n },\n}, 'VOverlay-scroll-strategies')\n\nexport function useScrollStrategies (\n props: StrategyProps,\n data: ScrollStrategyData\n) {\n if (!IN_BROWSER) return\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n\n if (!(data.isActive.value && props.scrollStrategy)) return\n\n scope = effectScope()\n await new Promise(resolve => setTimeout(resolve))\n scope.active && scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope!)\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope!)\n }\n })\n })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n\nfunction closeScrollStrategy (data: ScrollStrategyData) {\n function onScroll (e: Event) {\n data.isActive.value = false\n }\n\n bindScroll(data.target.value ?? data.contentEl.value, onScroll)\n}\n\nfunction blockScrollStrategy (data: ScrollStrategyData, props: StrategyProps) {\n const offsetParent = data.root.value?.offsetParent\n const target = Array.isArray(data.target.value)\n ? document.elementFromPoint(...data.target.value)\n : data.target.value\n const scrollElements = [...new Set([\n ...getScrollParents(target, props.contained ? offsetParent : undefined),\n ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined),\n ])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'))\n const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth\n\n const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement)\n if (scrollableParent) {\n data.root.value!.classList.add('v-overlay--scroll-blocked')\n }\n\n scrollElements.forEach((el, i) => {\n el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft))\n el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop))\n\n if (el !== document.documentElement) {\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth))\n }\n\n el.classList.add('v-overlay-scroll-blocked')\n })\n\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'))\n const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'))\n\n const scrollBehavior = el.style.scrollBehavior\n\n el.style.scrollBehavior = 'auto'\n el.style.removeProperty('--v-body-scroll-x')\n el.style.removeProperty('--v-body-scroll-y')\n el.style.removeProperty('--v-scrollbar-offset')\n el.classList.remove('v-overlay-scroll-blocked')\n\n el.scrollLeft = -x\n el.scrollTop = -y\n\n el.style.scrollBehavior = scrollBehavior\n })\n if (scrollableParent) {\n data.root.value!.classList.remove('v-overlay--scroll-blocked')\n }\n })\n}\n\nfunction repositionScrollStrategy (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) {\n let slow = false\n let raf = -1\n let ric = -1\n\n function update (e: Event) {\n requestNewFrame(() => {\n const start = performance.now()\n data.updateLocation.value?.(e)\n const time = performance.now() - start\n slow = time / (1000 / 60) > 2\n })\n }\n\n ric = (typeof requestIdleCallback === 'undefined' ? (cb: Function) => cb() : requestIdleCallback)(() => {\n scope.run(() => {\n bindScroll(data.target.value ?? data.contentEl.value, e => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e)\n })\n })\n } else {\n update(e)\n }\n })\n })\n })\n\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric)\n cancelAnimationFrame(raf)\n })\n}\n\n/** @private */\nfunction bindScroll (target: HTMLElement | [x: number, y: number] | undefined, onScroll: (e: Event) => void) {\n const el = Array.isArray(target) ? document.elementFromPoint(...target) : target\n const scrollElements = [document, ...getScrollParents(el)]\n scrollElements.forEach(el => {\n el.addEventListener('scroll', onScroll, { passive: true })\n })\n\n onScopeDispose(() => {\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', onScroll)\n })\n })\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -24,6 +24,7 @@ export declare const makeVRangeSliderProps: <Defaults extends {
|
|
24
24
|
trackSize?: unknown;
|
25
25
|
direction?: unknown;
|
26
26
|
reverse?: unknown;
|
27
|
+
noKeyboard?: unknown;
|
27
28
|
focused?: unknown;
|
28
29
|
'onUpdate:focused'?: unknown;
|
29
30
|
errorMessages?: unknown;
|
@@ -257,6 +258,10 @@ export declare const makeVRangeSliderProps: <Defaults extends {
|
|
257
258
|
type: PropType<unknown extends Defaults["reverse"] ? boolean : boolean | Defaults["reverse"]>;
|
258
259
|
default: unknown extends Defaults["reverse"] ? boolean : boolean | Defaults["reverse"];
|
259
260
|
};
|
261
|
+
noKeyboard: unknown extends Defaults["noKeyboard"] ? BooleanConstructor : {
|
262
|
+
type: PropType<unknown extends Defaults["noKeyboard"] ? boolean : boolean | Defaults["noKeyboard"]>;
|
263
|
+
default: unknown extends Defaults["noKeyboard"] ? boolean : boolean | Defaults["noKeyboard"];
|
264
|
+
};
|
260
265
|
focused: unknown extends Defaults["focused"] ? BooleanConstructor : {
|
261
266
|
type: PropType<unknown extends Defaults["focused"] ? boolean : boolean | Defaults["focused"]>;
|
262
267
|
default: unknown extends Defaults["focused"] ? boolean : boolean | Defaults["focused"];
|
@@ -452,6 +457,7 @@ export declare const VRangeSlider: {
|
|
452
457
|
tickSize: string | number;
|
453
458
|
trackSize: string | number;
|
454
459
|
thumbSize: string | number;
|
460
|
+
noKeyboard: boolean;
|
455
461
|
} & {
|
456
462
|
name?: string | undefined;
|
457
463
|
id?: string | undefined;
|
@@ -802,6 +808,7 @@ export declare const VRangeSlider: {
|
|
802
808
|
trackSize: string | number;
|
803
809
|
thumbLabel: boolean | "always" | undefined;
|
804
810
|
thumbSize: string | number;
|
811
|
+
noKeyboard: boolean;
|
805
812
|
}, true, {}, import("vue").SlotsType<Partial<{
|
806
813
|
default: (arg: import("../VInput/VInput.js").VInputSlot) => import("vue").VNode[];
|
807
814
|
prepend: (arg: import("../VInput/VInput.js").VInputSlot) => import("vue").VNode[];
|
@@ -852,6 +859,7 @@ export declare const VRangeSlider: {
|
|
852
859
|
tickSize: string | number;
|
853
860
|
trackSize: string | number;
|
854
861
|
thumbSize: string | number;
|
862
|
+
noKeyboard: boolean;
|
855
863
|
} & {
|
856
864
|
name?: string | undefined;
|
857
865
|
id?: string | undefined;
|
@@ -1197,6 +1205,7 @@ export declare const VRangeSlider: {
|
|
1197
1205
|
trackSize: string | number;
|
1198
1206
|
thumbLabel: boolean | "always" | undefined;
|
1199
1207
|
thumbSize: string | number;
|
1208
|
+
noKeyboard: boolean;
|
1200
1209
|
}>;
|
1201
1210
|
__isFragment?: never;
|
1202
1211
|
__isTeleport?: never;
|
@@ -1230,6 +1239,7 @@ export declare const VRangeSlider: {
|
|
1230
1239
|
tickSize: string | number;
|
1231
1240
|
trackSize: string | number;
|
1232
1241
|
thumbSize: string | number;
|
1242
|
+
noKeyboard: boolean;
|
1233
1243
|
} & {
|
1234
1244
|
name?: string | undefined;
|
1235
1245
|
id?: string | undefined;
|
@@ -1580,6 +1590,7 @@ export declare const VRangeSlider: {
|
|
1580
1590
|
trackSize: string | number;
|
1581
1591
|
thumbLabel: boolean | "always" | undefined;
|
1582
1592
|
thumbSize: string | number;
|
1593
|
+
noKeyboard: boolean;
|
1583
1594
|
}, {}, string, import("vue").SlotsType<Partial<{
|
1584
1595
|
default: (arg: import("../VInput/VInput.js").VInputSlot) => import("vue").VNode[];
|
1585
1596
|
prepend: (arg: import("../VInput/VInput.js").VInputSlot) => import("vue").VNode[];
|
@@ -1672,6 +1683,7 @@ export declare const VRangeSlider: {
|
|
1672
1683
|
validator: (v: any) => boolean;
|
1673
1684
|
};
|
1674
1685
|
reverse: BooleanConstructor;
|
1686
|
+
noKeyboard: BooleanConstructor;
|
1675
1687
|
focused: BooleanConstructor;
|
1676
1688
|
'onUpdate:focused': PropType<(args_0: boolean) => void>;
|
1677
1689
|
errorMessages: {
|
@@ -1802,6 +1814,7 @@ export declare const VRangeSlider: {
|
|
1802
1814
|
validator: (v: any) => boolean;
|
1803
1815
|
};
|
1804
1816
|
reverse: BooleanConstructor;
|
1817
|
+
noKeyboard: BooleanConstructor;
|
1805
1818
|
focused: BooleanConstructor;
|
1806
1819
|
'onUpdate:focused': PropType<(args_0: boolean) => void>;
|
1807
1820
|
errorMessages: {
|
@@ -58,6 +58,7 @@ export declare const makeVSliderProps: <Defaults extends {
|
|
58
58
|
trackFillColor?: unknown;
|
59
59
|
trackSize?: unknown;
|
60
60
|
reverse?: unknown;
|
61
|
+
noKeyboard?: unknown;
|
61
62
|
} = {}>(defaults?: Defaults | undefined) => {
|
62
63
|
modelValue: unknown extends Defaults["modelValue"] ? {
|
63
64
|
type: (StringConstructor | NumberConstructor)[];
|
@@ -421,6 +422,10 @@ export declare const makeVSliderProps: <Defaults extends {
|
|
421
422
|
type: import("vue").PropType<unknown extends Defaults["reverse"] ? boolean : boolean | Defaults["reverse"]>;
|
422
423
|
default: unknown extends Defaults["reverse"] ? boolean : boolean | Defaults["reverse"];
|
423
424
|
};
|
425
|
+
noKeyboard: unknown extends Defaults["noKeyboard"] ? BooleanConstructor : {
|
426
|
+
type: import("vue").PropType<unknown extends Defaults["noKeyboard"] ? boolean : boolean | Defaults["noKeyboard"]>;
|
427
|
+
default: unknown extends Defaults["noKeyboard"] ? boolean : boolean | Defaults["noKeyboard"];
|
428
|
+
};
|
424
429
|
};
|
425
430
|
export declare const VSlider: {
|
426
431
|
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
@@ -451,6 +456,7 @@ export declare const VSlider: {
|
|
451
456
|
tickSize: string | number;
|
452
457
|
trackSize: string | number;
|
453
458
|
thumbSize: string | number;
|
459
|
+
noKeyboard: boolean;
|
454
460
|
} & {
|
455
461
|
name?: string | undefined;
|
456
462
|
id?: string | undefined;
|
@@ -800,6 +806,7 @@ export declare const VSlider: {
|
|
800
806
|
trackSize: string | number;
|
801
807
|
thumbLabel: boolean | "always" | undefined;
|
802
808
|
thumbSize: string | number;
|
809
|
+
noKeyboard: boolean;
|
803
810
|
}, true, {}, import("vue").SlotsType<Partial<{
|
804
811
|
default: (arg: VInputSlot) => import("vue").VNode[];
|
805
812
|
prepend: (arg: VInputSlot) => import("vue").VNode[];
|
@@ -849,6 +856,7 @@ export declare const VSlider: {
|
|
849
856
|
tickSize: string | number;
|
850
857
|
trackSize: string | number;
|
851
858
|
thumbSize: string | number;
|
859
|
+
noKeyboard: boolean;
|
852
860
|
} & {
|
853
861
|
name?: string | undefined;
|
854
862
|
id?: string | undefined;
|
@@ -1193,6 +1201,7 @@ export declare const VSlider: {
|
|
1193
1201
|
trackSize: string | number;
|
1194
1202
|
thumbLabel: boolean | "always" | undefined;
|
1195
1203
|
thumbSize: string | number;
|
1204
|
+
noKeyboard: boolean;
|
1196
1205
|
}>;
|
1197
1206
|
__isFragment?: never;
|
1198
1207
|
__isTeleport?: never;
|
@@ -1225,6 +1234,7 @@ export declare const VSlider: {
|
|
1225
1234
|
tickSize: string | number;
|
1226
1235
|
trackSize: string | number;
|
1227
1236
|
thumbSize: string | number;
|
1237
|
+
noKeyboard: boolean;
|
1228
1238
|
} & {
|
1229
1239
|
name?: string | undefined;
|
1230
1240
|
id?: string | undefined;
|
@@ -1574,6 +1584,7 @@ export declare const VSlider: {
|
|
1574
1584
|
trackSize: string | number;
|
1575
1585
|
thumbLabel: boolean | "always" | undefined;
|
1576
1586
|
thumbSize: string | number;
|
1587
|
+
noKeyboard: boolean;
|
1577
1588
|
}, {}, string, import("vue").SlotsType<Partial<{
|
1578
1589
|
default: (arg: VInputSlot) => import("vue").VNode[];
|
1579
1590
|
prepend: (arg: VInputSlot) => import("vue").VNode[];
|
@@ -1717,6 +1728,7 @@ export declare const VSlider: {
|
|
1717
1728
|
default: number;
|
1718
1729
|
};
|
1719
1730
|
reverse: BooleanConstructor;
|
1731
|
+
noKeyboard: BooleanConstructor;
|
1720
1732
|
}, import("vue").ExtractPropTypes<{
|
1721
1733
|
modelValue: {
|
1722
1734
|
type: (StringConstructor | NumberConstructor)[];
|
@@ -1846,5 +1858,6 @@ export declare const VSlider: {
|
|
1846
1858
|
default: number;
|
1847
1859
|
};
|
1848
1860
|
reverse: BooleanConstructor;
|
1861
|
+
noKeyboard: BooleanConstructor;
|
1849
1862
|
}>>;
|
1850
1863
|
export type VSlider = InstanceType<typeof VSlider>;
|
@@ -56,7 +56,8 @@ export const VSlider = genericComponent()({
|
|
56
56
|
trackContainerRef,
|
57
57
|
position,
|
58
58
|
hasLabels,
|
59
|
-
readonly
|
59
|
+
readonly,
|
60
|
+
noKeyboard
|
60
61
|
} = useSlider({
|
61
62
|
props,
|
62
63
|
steps,
|
@@ -132,6 +133,7 @@ export const VSlider = genericComponent()({
|
|
132
133
|
"ref": thumbContainerRef,
|
133
134
|
"aria-describedby": messagesId.value,
|
134
135
|
"focused": isFocused.value,
|
136
|
+
"noKeyboard": noKeyboard.value,
|
135
137
|
"min": min.value,
|
136
138
|
"max": max.value,
|
137
139
|
"modelValue": model.value,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VSlider.js","names":["VSliderThumb","VSliderTrack","makeVInputProps","VInput","VLabel","makeSliderProps","useSlider","useSteps","makeFocusProps","useFocus","forwardRefs","useRtl","useProxiedModel","computed","ref","genericComponent","propsFactory","useRender","makeVSliderProps","modelValue","type","Number","String","default","VSlider","name","props","emits","value","v","start","end","setup","_ref","slots","emit","thumbContainerRef","inputRef","rtlClasses","steps","model","undefined","roundValue","min","max","mousePressed","onSliderMousedown","onSliderTouchstart","trackContainerRef","position","hasLabels","readonly","onSliderStart","onSliderEnd","_ref2","roundedValue","onSliderMove","_ref3","getActiveThumb","$el","isFocused","focus","blur","trackStop","inputProps","filterProps","hasPrepend","label","prepend","_createVNode","_mergeProps","disabled","class","style","slotProps","_createElementVNode","_Fragment","id","_ref4","messagesId","elevation","ripple"],"sources":["../../../src/components/VSlider/VSlider.tsx"],"sourcesContent":["// Styles\nimport './VSlider.sass'\n\n// Components\nimport { VSliderThumb } from './VSliderThumb'\nimport { VSliderTrack } from './VSliderTrack'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\n\n// Composables\nimport { makeSliderProps, useSlider, useSteps } from './slider'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VSliderThumbSlots } from './VSliderThumb'\nimport type { VSliderTrackSlots } from './VSliderTrack'\nimport type { VInputSlot, VInputSlots } from '@/components/VInput/VInput'\n\nexport type VSliderSlots = VInputSlots & VSliderThumbSlots & VSliderTrackSlots & {\n label: VInputSlot\n}\n\nexport const makeVSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeSliderProps(),\n ...makeVInputProps(),\n\n modelValue: {\n type: [Number, String],\n default: 0,\n },\n}, 'VSlider')\n\nexport const VSlider = genericComponent<VSliderSlots>()({\n name: 'VSlider',\n\n props: makeVSliderProps(),\n\n emits: {\n 'update:focused': (value: boolean) => true,\n 'update:modelValue': (v: number) => true,\n start: (value: number) => true,\n end: (value: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const thumbContainerRef = ref<VSliderThumb>()\n const inputRef = ref<VInput>()\n const { rtlClasses } = useRtl()\n\n const steps = useSteps(props)\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n value => {\n return steps.roundValue(value == null ? steps.min.value : value)\n },\n )\n\n const {\n min,\n max,\n mousePressed,\n roundValue,\n onSliderMousedown,\n onSliderTouchstart,\n trackContainerRef,\n position,\n hasLabels,\n readonly,\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value)\n },\n onSliderEnd: ({ value }) => {\n const roundedValue = roundValue(value)\n model.value = roundedValue\n emit('end', roundedValue)\n },\n onSliderMove: ({ value }) => model.value = roundValue(value),\n getActiveThumb: () => thumbContainerRef.value?.$el,\n })\n\n const { isFocused, focus, blur } = useFocus(props)\n const trackStop = computed(() => position(model.value))\n\n useRender(() => {\n const inputProps = VInput.filterProps(props)\n const hasPrepend = !!(props.label || slots.label || slots.prepend)\n\n return (\n <VInput\n ref={ inputRef }\n class={[\n 'v-slider',\n {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled,\n },\n rtlClasses.value,\n props.class,\n ]}\n style={ props.style }\n { ...inputProps }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => (\n <>\n { slots.label?.(slotProps) ?? (\n props.label\n ? (\n <VLabel\n id={ slotProps.id.value }\n class=\"v-slider__label\"\n text={ props.label }\n />\n ) : undefined\n )}\n\n { slots.prepend?.(slotProps) }\n </>\n ) : undefined,\n default: ({ id, messagesId }) => (\n <div\n class=\"v-slider__container\"\n onMousedown={ !readonly.value ? onSliderMousedown : undefined }\n onTouchstartPassive={ !readonly.value ? onSliderTouchstart : undefined }\n >\n <input\n id={ id.value }\n name={ props.name || id.value }\n disabled={ !!props.disabled }\n readonly={ !!props.readonly }\n tabindex=\"-1\"\n value={ model.value }\n />\n\n <VSliderTrack\n ref={ trackContainerRef }\n start={ 0 }\n stop={ trackStop.value }\n >\n {{ 'tick-label': slots['tick-label'] }}\n </VSliderTrack>\n\n <VSliderThumb\n ref={ thumbContainerRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused.value }\n min={ min.value }\n max={ max.value }\n modelValue={ model.value }\n onUpdate:modelValue={ v => (model.value = v) }\n position={ trackStop.value }\n elevation={ props.elevation }\n onFocus={ focus }\n onBlur={ blur }\n ripple={ props.ripple }\n name={ props.name }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n </div>\n ),\n }}\n </VInput>\n )\n })\n\n return forwardRefs({\n focus: () => thumbContainerRef.value?.$el.focus(),\n }, inputRef)\n },\n})\n\nexport type VSlider = InstanceType<typeof VSlider>\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"VSlider.js","names":["VSliderThumb","VSliderTrack","makeVInputProps","VInput","VLabel","makeSliderProps","useSlider","useSteps","makeFocusProps","useFocus","forwardRefs","useRtl","useProxiedModel","computed","ref","genericComponent","propsFactory","useRender","makeVSliderProps","modelValue","type","Number","String","default","VSlider","name","props","emits","value","v","start","end","setup","_ref","slots","emit","thumbContainerRef","inputRef","rtlClasses","steps","model","undefined","roundValue","min","max","mousePressed","onSliderMousedown","onSliderTouchstart","trackContainerRef","position","hasLabels","readonly","noKeyboard","onSliderStart","onSliderEnd","_ref2","roundedValue","onSliderMove","_ref3","getActiveThumb","$el","isFocused","focus","blur","trackStop","inputProps","filterProps","hasPrepend","label","prepend","_createVNode","_mergeProps","disabled","class","style","slotProps","_createElementVNode","_Fragment","id","_ref4","messagesId","elevation","ripple"],"sources":["../../../src/components/VSlider/VSlider.tsx"],"sourcesContent":["// Styles\nimport './VSlider.sass'\n\n// Components\nimport { VSliderThumb } from './VSliderThumb'\nimport { VSliderTrack } from './VSliderTrack'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\n\n// Composables\nimport { makeSliderProps, useSlider, useSteps } from './slider'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VSliderThumbSlots } from './VSliderThumb'\nimport type { VSliderTrackSlots } from './VSliderTrack'\nimport type { VInputSlot, VInputSlots } from '@/components/VInput/VInput'\n\nexport type VSliderSlots = VInputSlots & VSliderThumbSlots & VSliderTrackSlots & {\n label: VInputSlot\n}\n\nexport const makeVSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeSliderProps(),\n ...makeVInputProps(),\n\n modelValue: {\n type: [Number, String],\n default: 0,\n },\n}, 'VSlider')\n\nexport const VSlider = genericComponent<VSliderSlots>()({\n name: 'VSlider',\n\n props: makeVSliderProps(),\n\n emits: {\n 'update:focused': (value: boolean) => true,\n 'update:modelValue': (v: number) => true,\n start: (value: number) => true,\n end: (value: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const thumbContainerRef = ref<VSliderThumb>()\n const inputRef = ref<VInput>()\n const { rtlClasses } = useRtl()\n\n const steps = useSteps(props)\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n value => {\n return steps.roundValue(value == null ? steps.min.value : value)\n },\n )\n\n const {\n min,\n max,\n mousePressed,\n roundValue,\n onSliderMousedown,\n onSliderTouchstart,\n trackContainerRef,\n position,\n hasLabels,\n readonly,\n noKeyboard,\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value)\n },\n onSliderEnd: ({ value }) => {\n const roundedValue = roundValue(value)\n model.value = roundedValue\n emit('end', roundedValue)\n },\n onSliderMove: ({ value }) => model.value = roundValue(value),\n getActiveThumb: () => thumbContainerRef.value?.$el,\n })\n\n const { isFocused, focus, blur } = useFocus(props)\n const trackStop = computed(() => position(model.value))\n\n useRender(() => {\n const inputProps = VInput.filterProps(props)\n const hasPrepend = !!(props.label || slots.label || slots.prepend)\n\n return (\n <VInput\n ref={ inputRef }\n class={[\n 'v-slider',\n {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled,\n },\n rtlClasses.value,\n props.class,\n ]}\n style={ props.style }\n { ...inputProps }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => (\n <>\n { slots.label?.(slotProps) ?? (\n props.label\n ? (\n <VLabel\n id={ slotProps.id.value }\n class=\"v-slider__label\"\n text={ props.label }\n />\n ) : undefined\n )}\n\n { slots.prepend?.(slotProps) }\n </>\n ) : undefined,\n default: ({ id, messagesId }) => (\n <div\n class=\"v-slider__container\"\n onMousedown={ !readonly.value ? onSliderMousedown : undefined }\n onTouchstartPassive={ !readonly.value ? onSliderTouchstart : undefined }\n >\n <input\n id={ id.value }\n name={ props.name || id.value }\n disabled={ !!props.disabled }\n readonly={ !!props.readonly }\n tabindex=\"-1\"\n value={ model.value }\n />\n\n <VSliderTrack\n ref={ trackContainerRef }\n start={ 0 }\n stop={ trackStop.value }\n >\n {{ 'tick-label': slots['tick-label'] }}\n </VSliderTrack>\n\n <VSliderThumb\n ref={ thumbContainerRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused.value }\n noKeyboard={ noKeyboard.value }\n min={ min.value }\n max={ max.value }\n modelValue={ model.value }\n onUpdate:modelValue={ v => (model.value = v) }\n position={ trackStop.value }\n elevation={ props.elevation }\n onFocus={ focus }\n onBlur={ blur }\n ripple={ props.ripple }\n name={ props.name }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n </div>\n ),\n }}\n </VInput>\n )\n })\n\n return forwardRefs({\n focus: () => thumbContainerRef.value?.$el.focus(),\n }, inputRef)\n },\n})\n\nexport type VSlider = InstanceType<typeof VSlider>\n"],"mappings":"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","ignoreList":[]}
|
@@ -15,6 +15,7 @@ export declare const makeVSliderThumbProps: <Defaults extends {
|
|
15
15
|
position?: unknown;
|
16
16
|
ripple?: unknown;
|
17
17
|
name?: unknown;
|
18
|
+
noKeyboard?: unknown;
|
18
19
|
} = {}>(defaults?: Defaults | undefined) => {
|
19
20
|
class: unknown extends Defaults["class"] ? PropType<any> : {
|
20
21
|
type: PropType<unknown extends Defaults["class"] ? any : any>;
|
@@ -100,6 +101,10 @@ export declare const makeVSliderThumbProps: <Defaults extends {
|
|
100
101
|
type: PropType<unknown extends Defaults["name"] ? string : string | Defaults["name"]>;
|
101
102
|
default: unknown extends Defaults["name"] ? string : string | Defaults["name"];
|
102
103
|
};
|
104
|
+
noKeyboard: unknown extends Defaults["noKeyboard"] ? BooleanConstructor : {
|
105
|
+
type: PropType<unknown extends Defaults["noKeyboard"] ? boolean : boolean | Defaults["noKeyboard"]>;
|
106
|
+
default: unknown extends Defaults["noKeyboard"] ? boolean : boolean | Defaults["noKeyboard"];
|
107
|
+
};
|
103
108
|
};
|
104
109
|
export declare const VSliderThumb: {
|
105
110
|
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
@@ -113,6 +118,7 @@ export declare const VSliderThumb: {
|
|
113
118
|
class?: string;
|
114
119
|
keys?: string[];
|
115
120
|
} | undefined;
|
121
|
+
noKeyboard: boolean;
|
116
122
|
} & {
|
117
123
|
name?: string | undefined;
|
118
124
|
class?: any;
|
@@ -144,6 +150,7 @@ export declare const VSliderThumb: {
|
|
144
150
|
class?: string;
|
145
151
|
keys?: string[];
|
146
152
|
} | undefined;
|
153
|
+
noKeyboard: boolean;
|
147
154
|
}, true, {}, import("vue").SlotsType<Partial<{
|
148
155
|
'thumb-label': (arg: {
|
149
156
|
modelValue: number;
|
@@ -166,6 +173,7 @@ export declare const VSliderThumb: {
|
|
166
173
|
class?: string;
|
167
174
|
keys?: string[];
|
168
175
|
} | undefined;
|
176
|
+
noKeyboard: boolean;
|
169
177
|
} & {
|
170
178
|
name?: string | undefined;
|
171
179
|
class?: any;
|
@@ -195,6 +203,7 @@ export declare const VSliderThumb: {
|
|
195
203
|
class?: string;
|
196
204
|
keys?: string[];
|
197
205
|
} | undefined;
|
206
|
+
noKeyboard: boolean;
|
198
207
|
}>;
|
199
208
|
__isFragment?: never;
|
200
209
|
__isTeleport?: never;
|
@@ -210,6 +219,7 @@ export declare const VSliderThumb: {
|
|
210
219
|
class?: string;
|
211
220
|
keys?: string[];
|
212
221
|
} | undefined;
|
222
|
+
noKeyboard: boolean;
|
213
223
|
} & {
|
214
224
|
name?: string | undefined;
|
215
225
|
class?: any;
|
@@ -241,6 +251,7 @@ export declare const VSliderThumb: {
|
|
241
251
|
class?: string;
|
242
252
|
keys?: string[];
|
243
253
|
} | undefined;
|
254
|
+
noKeyboard: boolean;
|
244
255
|
}, {}, string, import("vue").SlotsType<Partial<{
|
245
256
|
'thumb-label': (arg: {
|
246
257
|
modelValue: number;
|
@@ -273,6 +284,7 @@ export declare const VSliderThumb: {
|
|
273
284
|
default: boolean;
|
274
285
|
};
|
275
286
|
name: StringConstructor;
|
287
|
+
noKeyboard: BooleanConstructor;
|
276
288
|
}, import("vue").ExtractPropTypes<{
|
277
289
|
class: PropType<import("../../composables/component.js").ClassValue>;
|
278
290
|
style: {
|
@@ -301,5 +313,6 @@ export declare const VSliderThumb: {
|
|
301
313
|
default: boolean;
|
302
314
|
};
|
303
315
|
name: StringConstructor;
|
316
|
+
noKeyboard: BooleanConstructor;
|
304
317
|
}>>;
|
305
318
|
export type VSliderThumb = InstanceType<typeof VSliderThumb>;
|
@@ -35,6 +35,7 @@ export const makeVSliderThumbProps = propsFactory({
|
|
35
35
|
default: true
|
36
36
|
},
|
37
37
|
name: String,
|
38
|
+
noKeyboard: Boolean,
|
38
39
|
...makeComponentProps()
|
39
40
|
}, 'VSliderThumb');
|
40
41
|
export const VSliderThumb = genericComponent()({
|
@@ -97,6 +98,7 @@ export const VSliderThumb = genericComponent()({
|
|
97
98
|
if (step.value) return [1, 2, 3];else return [1, 5, 10];
|
98
99
|
});
|
99
100
|
function parseKeydown(e, value) {
|
101
|
+
if (props.noKeyboard) return;
|
100
102
|
if (!relevantKeys.includes(e.key)) return;
|
101
103
|
e.preventDefault();
|
102
104
|
const _step = step.value || 0.1;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VSliderThumb.js","names":["VSliderSymbol","VScaleTransition","useTextColor","makeComponentProps","useElevation","useRtl","vRipple","computed","inject","convertToUnit","genericComponent","keyValues","propsFactory","useRender","makeVSliderThumbProps","focused","Boolean","max","type","Number","required","min","modelValue","position","ripple","Object","default","name","String","VSliderThumb","directives","props","emits","v","setup","_ref","slots","emit","slider","isRtl","rtlClasses","Error","thumbColor","step","disabled","thumbSize","thumbLabel","direction","isReversed","vertical","readonly","elevation","mousePressed","decimals","indexFromEnd","elevationProps","value","undefined","elevationClasses","textColorClasses","textColorStyles","pageup","pagedown","end","home","left","right","down","up","relevantKeys","multipliers","parseKeydown","e","includes","key","preventDefault","_step","steps","increase","multiplier","shiftKey","ctrlKey","isInteger","Math","onKeydown","newValue","positionPercentage","_createElementVNode","_normalizeClass","class","_normalizeStyle","style","_withDirectives","circle","center","_createVNode","toFixed","_vShow"],"sources":["../../../src/components/VSlider/VSliderThumb.tsx"],"sourcesContent":["// Styles\nimport './VSliderThumb.sass'\n\n// Components\nimport { VSliderSymbol } from './slider'\nimport { VScaleTransition } from '../transitions'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useElevation } from '@/composables/elevation'\nimport { useRtl } from '@/composables/locale'\n\n// Directives\nimport vRipple from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { convertToUnit, genericComponent, keyValues, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type VSliderThumbSlots = {\n 'thumb-label': { modelValue: number }\n}\n\nexport const makeVSliderThumbProps = propsFactory({\n focused: Boolean,\n max: {\n type: Number,\n required: true,\n },\n min: {\n type: Number,\n required: true,\n },\n modelValue: {\n type: Number,\n required: true,\n },\n position: {\n type: Number,\n required: true,\n },\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n name: String,\n\n ...makeComponentProps(),\n}, 'VSliderThumb')\n\nexport const VSliderThumb = genericComponent<VSliderThumbSlots>()({\n name: 'VSliderThumb',\n\n directives: { vRipple },\n\n props: makeVSliderThumbProps(),\n\n emits: {\n 'update:modelValue': (v: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const slider = inject(VSliderSymbol)\n const { isRtl, rtlClasses } = useRtl()\n if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider')\n\n const {\n min,\n max,\n thumbColor,\n step,\n disabled,\n thumbSize,\n thumbLabel,\n direction,\n isReversed,\n vertical,\n readonly,\n elevation,\n mousePressed,\n decimals,\n indexFromEnd,\n } = slider\n\n const elevationProps = computed(() => !disabled.value ? elevation.value : undefined)\n const { elevationClasses } = useElevation(elevationProps)\n const { textColorClasses, textColorStyles } = useTextColor(thumbColor)\n\n const { pageup, pagedown, end, home, left, right, down, up } = keyValues\n const relevantKeys = [pageup, pagedown, end, home, left, right, down, up]\n\n const multipliers = computed(() => {\n if (step.value) return [1, 2, 3]\n else return [1, 5, 10]\n })\n\n function parseKeydown (e: KeyboardEvent, value: number) {\n if (!relevantKeys.includes(e.key)) return\n\n e.preventDefault()\n\n const _step = step.value || 0.1\n const steps = (max.value - min.value) / _step\n if ([left, right, down, up].includes(e.key)) {\n const increase = vertical.value\n ? [isRtl.value ? left : right, isReversed.value ? down : up]\n : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up]\n const direction = increase.includes(e.key) ? 1 : -1\n const multiplier = e.shiftKey ? 2 : (e.ctrlKey ? 1 : 0)\n\n if (direction === -1 && value === max.value && !multiplier && !Number.isInteger(steps)) {\n value = value - (steps % 1) * _step\n } else {\n value = value + (direction * _step * multipliers.value[multiplier])\n }\n } else if (e.key === home) {\n value = min.value\n } else if (e.key === end) {\n value = max.value\n } else {\n const direction = e.key === pagedown ? 1 : -1\n value = value - (direction * _step * (steps > 100 ? steps / 10 : 10))\n }\n\n return Math.max(props.min, Math.min(props.max, value))\n }\n\n function onKeydown (e: KeyboardEvent) {\n const newValue = parseKeydown(e, props.modelValue)\n\n newValue != null && emit('update:modelValue', newValue)\n }\n\n useRender(() => {\n const positionPercentage = convertToUnit(indexFromEnd.value ? 100 - props.position : props.position, '%')\n\n return (\n <div\n class={[\n 'v-slider-thumb',\n {\n 'v-slider-thumb--focused': props.focused,\n 'v-slider-thumb--pressed': props.focused && mousePressed.value,\n },\n props.class,\n rtlClasses.value,\n ]}\n style={[\n {\n '--v-slider-thumb-position': positionPercentage,\n '--v-slider-thumb-size': convertToUnit(thumbSize.value),\n },\n props.style,\n ]}\n role=\"slider\"\n tabindex={ disabled.value ? -1 : 0 }\n aria-label={ props.name }\n aria-valuemin={ min.value }\n aria-valuemax={ max.value }\n aria-valuenow={ props.modelValue }\n aria-readonly={ !!readonly.value }\n aria-orientation={ direction.value }\n onKeydown={ !readonly.value ? onKeydown : undefined }\n >\n <div\n class={[\n 'v-slider-thumb__surface',\n textColorClasses.value,\n elevationClasses.value,\n ]}\n style={{\n ...textColorStyles.value,\n }}\n />\n <div\n class={[\n 'v-slider-thumb__ripple',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n v-ripple={[props.ripple, null, ['circle', 'center']]}\n />\n <VScaleTransition origin=\"bottom center\">\n <div\n class=\"v-slider-thumb__label-container\"\n v-show={ (thumbLabel.value && props.focused) || thumbLabel.value === 'always' }\n >\n <div\n class={[\n 'v-slider-thumb__label',\n textColorClasses.value,\n ]}\n >\n <div>\n { slots['thumb-label']?.({ modelValue: props.modelValue }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1) }\n </div>\n </div>\n </div>\n </VScaleTransition>\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VSliderThumb = InstanceType<typeof VSliderThumb>\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"VSliderThumb.js","names":["VSliderSymbol","VScaleTransition","useTextColor","makeComponentProps","useElevation","useRtl","vRipple","computed","inject","convertToUnit","genericComponent","keyValues","propsFactory","useRender","makeVSliderThumbProps","focused","Boolean","max","type","Number","required","min","modelValue","position","ripple","Object","default","name","String","noKeyboard","VSliderThumb","directives","props","emits","v","setup","_ref","slots","emit","slider","isRtl","rtlClasses","Error","thumbColor","step","disabled","thumbSize","thumbLabel","direction","isReversed","vertical","readonly","elevation","mousePressed","decimals","indexFromEnd","elevationProps","value","undefined","elevationClasses","textColorClasses","textColorStyles","pageup","pagedown","end","home","left","right","down","up","relevantKeys","multipliers","parseKeydown","e","includes","key","preventDefault","_step","steps","increase","multiplier","shiftKey","ctrlKey","isInteger","Math","onKeydown","newValue","positionPercentage","_createElementVNode","_normalizeClass","class","_normalizeStyle","style","_withDirectives","circle","center","_createVNode","toFixed","_vShow"],"sources":["../../../src/components/VSlider/VSliderThumb.tsx"],"sourcesContent":["// Styles\nimport './VSliderThumb.sass'\n\n// Components\nimport { VSliderSymbol } from './slider'\nimport { VScaleTransition } from '../transitions'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useElevation } from '@/composables/elevation'\nimport { useRtl } from '@/composables/locale'\n\n// Directives\nimport vRipple from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { convertToUnit, genericComponent, keyValues, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type VSliderThumbSlots = {\n 'thumb-label': { modelValue: number }\n}\n\nexport const makeVSliderThumbProps = propsFactory({\n focused: Boolean,\n max: {\n type: Number,\n required: true,\n },\n min: {\n type: Number,\n required: true,\n },\n modelValue: {\n type: Number,\n required: true,\n },\n position: {\n type: Number,\n required: true,\n },\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n name: String,\n noKeyboard: Boolean,\n\n ...makeComponentProps(),\n}, 'VSliderThumb')\n\nexport const VSliderThumb = genericComponent<VSliderThumbSlots>()({\n name: 'VSliderThumb',\n\n directives: { vRipple },\n\n props: makeVSliderThumbProps(),\n\n emits: {\n 'update:modelValue': (v: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const slider = inject(VSliderSymbol)\n const { isRtl, rtlClasses } = useRtl()\n if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider')\n\n const {\n min,\n max,\n thumbColor,\n step,\n disabled,\n thumbSize,\n thumbLabel,\n direction,\n isReversed,\n vertical,\n readonly,\n elevation,\n mousePressed,\n decimals,\n indexFromEnd,\n } = slider\n\n const elevationProps = computed(() => !disabled.value ? elevation.value : undefined)\n const { elevationClasses } = useElevation(elevationProps)\n const { textColorClasses, textColorStyles } = useTextColor(thumbColor)\n\n const { pageup, pagedown, end, home, left, right, down, up } = keyValues\n const relevantKeys = [pageup, pagedown, end, home, left, right, down, up]\n\n const multipliers = computed(() => {\n if (step.value) return [1, 2, 3]\n else return [1, 5, 10]\n })\n\n function parseKeydown (e: KeyboardEvent, value: number) {\n if (props.noKeyboard) return\n if (!relevantKeys.includes(e.key)) return\n\n e.preventDefault()\n\n const _step = step.value || 0.1\n const steps = (max.value - min.value) / _step\n if ([left, right, down, up].includes(e.key)) {\n const increase = vertical.value\n ? [isRtl.value ? left : right, isReversed.value ? down : up]\n : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up]\n const direction = increase.includes(e.key) ? 1 : -1\n const multiplier = e.shiftKey ? 2 : (e.ctrlKey ? 1 : 0)\n\n if (direction === -1 && value === max.value && !multiplier && !Number.isInteger(steps)) {\n value = value - (steps % 1) * _step\n } else {\n value = value + (direction * _step * multipliers.value[multiplier])\n }\n } else if (e.key === home) {\n value = min.value\n } else if (e.key === end) {\n value = max.value\n } else {\n const direction = e.key === pagedown ? 1 : -1\n value = value - (direction * _step * (steps > 100 ? steps / 10 : 10))\n }\n\n return Math.max(props.min, Math.min(props.max, value))\n }\n\n function onKeydown (e: KeyboardEvent) {\n const newValue = parseKeydown(e, props.modelValue)\n\n newValue != null && emit('update:modelValue', newValue)\n }\n\n useRender(() => {\n const positionPercentage = convertToUnit(indexFromEnd.value ? 100 - props.position : props.position, '%')\n\n return (\n <div\n class={[\n 'v-slider-thumb',\n {\n 'v-slider-thumb--focused': props.focused,\n 'v-slider-thumb--pressed': props.focused && mousePressed.value,\n },\n props.class,\n rtlClasses.value,\n ]}\n style={[\n {\n '--v-slider-thumb-position': positionPercentage,\n '--v-slider-thumb-size': convertToUnit(thumbSize.value),\n },\n props.style,\n ]}\n role=\"slider\"\n tabindex={ disabled.value ? -1 : 0 }\n aria-label={ props.name }\n aria-valuemin={ min.value }\n aria-valuemax={ max.value }\n aria-valuenow={ props.modelValue }\n aria-readonly={ !!readonly.value }\n aria-orientation={ direction.value }\n onKeydown={ !readonly.value ? onKeydown : undefined }\n >\n <div\n class={[\n 'v-slider-thumb__surface',\n textColorClasses.value,\n elevationClasses.value,\n ]}\n style={{\n ...textColorStyles.value,\n }}\n />\n <div\n class={[\n 'v-slider-thumb__ripple',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n v-ripple={[props.ripple, null, ['circle', 'center']]}\n />\n <VScaleTransition origin=\"bottom center\">\n <div\n class=\"v-slider-thumb__label-container\"\n v-show={ (thumbLabel.value && props.focused) || thumbLabel.value === 'always' }\n >\n <div\n class={[\n 'v-slider-thumb__label',\n textColorClasses.value,\n ]}\n >\n <div>\n { slots['thumb-label']?.({ modelValue: props.modelValue }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1) }\n </div>\n </div>\n </div>\n </VScaleTransition>\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VSliderThumb = InstanceType<typeof VSliderThumb>\n"],"mappings":"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","ignoreList":[]}
|
@@ -15,6 +15,7 @@ type SliderProvide = {
|
|
15
15
|
min: Ref<number>;
|
16
16
|
max: Ref<number>;
|
17
17
|
mousePressed: Ref<boolean>;
|
18
|
+
noKeyboard: Ref<boolean>;
|
18
19
|
numTicks: Ref<number>;
|
19
20
|
onSliderMousedown: (e: MouseEvent) => void;
|
20
21
|
onSliderTouchstart: (e: TouchEvent) => void;
|
@@ -66,6 +67,7 @@ export declare const makeSliderProps: <Defaults extends {
|
|
66
67
|
trackSize?: unknown;
|
67
68
|
direction?: unknown;
|
68
69
|
reverse?: unknown;
|
70
|
+
noKeyboard?: unknown;
|
69
71
|
} = {}>(defaults?: Defaults | undefined) => {
|
70
72
|
ripple: unknown extends Defaults["ripple"] ? {
|
71
73
|
type: BooleanConstructor;
|
@@ -255,6 +257,10 @@ export declare const makeSliderProps: <Defaults extends {
|
|
255
257
|
type: PropType<unknown extends Defaults["reverse"] ? boolean : boolean | Defaults["reverse"]>;
|
256
258
|
default: unknown extends Defaults["reverse"] ? boolean : boolean | Defaults["reverse"];
|
257
259
|
};
|
260
|
+
noKeyboard: unknown extends Defaults["noKeyboard"] ? BooleanConstructor : {
|
261
|
+
type: PropType<unknown extends Defaults["noKeyboard"] ? boolean : boolean | Defaults["noKeyboard"]>;
|
262
|
+
default: unknown extends Defaults["noKeyboard"] ? boolean : boolean | Defaults["noKeyboard"];
|
263
|
+
};
|
258
264
|
};
|
259
265
|
type SliderProps = ExtractPropTypes<ReturnType<typeof makeSliderProps>>;
|
260
266
|
type SliderData = {
|
@@ -72,6 +72,7 @@ export const makeSliderProps = propsFactory({
|
|
72
72
|
validator: v => ['vertical', 'horizontal'].includes(v)
|
73
73
|
},
|
74
74
|
reverse: Boolean,
|
75
|
+
noKeyboard: Boolean,
|
75
76
|
...makeRoundedProps(),
|
76
77
|
...makeElevationProps({
|
77
78
|
elevation: 2
|
@@ -275,6 +276,7 @@ export const useSlider = _ref => {
|
|
275
276
|
min,
|
276
277
|
max,
|
277
278
|
mousePressed,
|
279
|
+
noKeyboard: toRef(() => props.noKeyboard),
|
278
280
|
numTicks,
|
279
281
|
onSliderMousedown,
|
280
282
|
onSliderTouchstart,
|