Skip to content

Commit 9a22df8

Browse files
committed
docs(Slider): improve barrel JSDoc and hoist SFC imports
1 parent 3b1a609 commit 9a22df8

File tree

7 files changed

+71
-38
lines changed

7 files changed

+71
-38
lines changed

packages/0/src/components/Slider/SliderHiddenInput.vue

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@
77
*/
88

99
<script lang="ts">
10+
// Components
11+
import { useSliderRoot } from './SliderRoot.vue'
12+
13+
// Utilities
14+
import { toRef, toValue } from 'vue'
15+
1016
export interface SliderHiddenInputProps {
1117
/** Namespace for context injection from parent Slider.Root */
1218
namespace?: string
@@ -28,12 +34,6 @@
2834
</script>
2935

3036
<script setup lang="ts">
31-
// Components
32-
import { useSliderRoot } from './SliderRoot.vue'
33-
34-
// Utilities
35-
import { toRef, toValue } from 'vue'
36-
3737
defineOptions({ name: 'SliderHiddenInput' })
3838
3939
const {

packages/0/src/components/Slider/SliderRange.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
import { Atom } from '#v0/components/Atom'
1717
import { useSliderRoot } from './SliderRoot.vue'
1818
19+
// Utilities
20+
import { toRef, toValue, useAttrs } from 'vue'
21+
1922
// Types
2023
import type { AtomProps } from '#v0/components/Atom'
2124
@@ -39,9 +42,6 @@
3942
</script>
4043

4144
<script setup lang="ts">
42-
// Utilities
43-
import { toRef, toValue, useAttrs } from 'vue'
44-
4545
defineOptions({ name: 'SliderRange', inheritAttrs: false })
4646
4747
const attrs = useAttrs()

packages/0/src/components/Slider/SliderRoot.vue

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,19 @@
1111
<script lang="ts">
1212
// Components
1313
import { Atom } from '#v0/components/Atom'
14+
import SliderHiddenInput from './SliderHiddenInput.vue'
1415
1516
// Foundational
1617
import { createContext } from '#v0/composables/createContext'
1718
19+
// Composables
20+
import { createSlider } from '#v0/composables/createSlider'
21+
import { useDocumentEventListener } from '#v0/composables/useEventListener'
22+
import { useToggleScope } from '#v0/composables/useToggleScope'
23+
24+
// Utilities
25+
import { shallowRef, toRef, toValue, useAttrs, useId, watch } from 'vue'
26+
1827
// Types
1928
import type { AtomProps } from '#v0/components/Atom'
2029
import type { SliderContext } from '#v0/composables/createSlider'
@@ -90,17 +99,6 @@
9099
</script>
91100

92101
<script setup lang="ts">
93-
// Components
94-
import SliderHiddenInput from './SliderHiddenInput.vue'
95-
96-
// Composables
97-
import { createSlider } from '#v0/composables/createSlider'
98-
import { useDocumentEventListener } from '#v0/composables/useEventListener'
99-
import { useToggleScope } from '#v0/composables/useToggleScope'
100-
101-
// Utilities
102-
import { shallowRef, toRef, toValue, useAttrs, useId, watch } from 'vue'
103-
104102
defineOptions({ name: 'SliderRoot', inheritAttrs: false })
105103
106104
const attrs = useAttrs()

packages/0/src/components/Slider/SliderThumb.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
import { Atom } from '#v0/components/Atom'
1313
import { useSliderRoot } from './SliderRoot.vue'
1414
15+
// Utilities
16+
import { onUnmounted, toRef, toValue, useAttrs } from 'vue'
17+
1518
// Types
1619
import type { AtomProps } from '#v0/components/Atom'
1720
@@ -59,9 +62,6 @@
5962
</script>
6063

6164
<script setup lang="ts">
62-
// Utilities
63-
import { onUnmounted, toRef, toValue, useAttrs } from 'vue'
64-
6565
defineOptions({ name: 'SliderThumb', inheritAttrs: false })
6666
6767
const attrs = useAttrs()

packages/0/src/components/Slider/SliderTrack.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
import { Atom } from '#v0/components/Atom'
1313
import { useSliderRoot } from './SliderRoot.vue'
1414
15+
// Utilities
16+
import { toRef, toValue, useAttrs, useTemplateRef, watchEffect } from 'vue'
17+
1518
// Types
1619
import type { AtomProps } from '#v0/components/Atom'
1720
@@ -31,9 +34,6 @@
3134
</script>
3235

3336
<script setup lang="ts">
34-
// Utilities
35-
import { toRef, toValue, useAttrs, useTemplateRef, watchEffect } from 'vue'
36-
3737
defineOptions({ name: 'SliderTrack', inheritAttrs: false })
3838
3939
const attrs = useAttrs()

packages/0/src/components/Slider/index.test.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@ import { h, nextTick, ref } from 'vue'
66

77
import { Slider } from './index'
88

9-
// ============================================================================
10-
// Test Helpers
11-
// ============================================================================
12-
139
interface MountResult {
1410
wrapper: ReturnType<typeof mount>
1511
thumbProps: (index?: number) => any
@@ -73,10 +69,6 @@ function mountSlider (options: {
7369
}
7470
}
7571

76-
// ============================================================================
77-
// Tests
78-
// ============================================================================
79-
8072
describe('slider', () => {
8173
describe('rendering', () => {
8274
it('should render root with horizontal orientation by default', async () => {

packages/0/src/components/Slider/index.ts

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,35 @@ import Track from './SliderTrack.vue'
2626
* Slider component with sub-components for range input controls.
2727
*
2828
* @see https://0.vuetifyjs.com/components/slider
29+
*
30+
* @example
31+
* ```vue
32+
* <script setup lang="ts">
33+
* import { Slider } from '@vuetify/v0'
34+
* import { ref } from 'vue'
35+
*
36+
* const value = ref([50])
37+
* </script>
38+
*
39+
* <template>
40+
* <Slider.Root v-model="value" :min="0" :max="100">
41+
* <Slider.Track>
42+
* <Slider.Range />
43+
* </Slider.Track>
44+
* <Slider.Thumb />
45+
* </Slider.Root>
46+
* </template>
47+
* ```
2948
*/
3049
export const Slider = {
3150
/**
32-
* Root component for sliders. Creates context and bridges v-model.
51+
* Root component for sliders.
52+
*
53+
* Creates slider context, provides it to child components, and
54+
* bridges v-model. Value is always `number[]`: single thumb = `[50]`,
55+
* range = `[25, 75]`. Configure min, max, step, and orientation via
56+
* props. When `name` prop is provided, automatically renders hidden
57+
* inputs for form submission.
3358
*
3459
* @see https://0.vuetifyjs.com/components/slider
3560
*
@@ -54,7 +79,11 @@ export const Slider = {
5479
*/
5580
Root,
5681
/**
57-
* Track element. Handles click-to-position interaction.
82+
* Track element that contains the Range and handles click-to-position.
83+
*
84+
* On pointerdown, calculates the value from pointer position, snaps
85+
* the nearest thumb to that value, and initiates drag. Must contain
86+
* Slider.Range as a child.
5887
*
5988
* @see https://0.vuetifyjs.com/components/slider#anatomy
6089
*
@@ -69,6 +98,10 @@ export const Slider = {
6998
/**
7099
* Filled region between thumb positions.
71100
*
101+
* For single-thumb sliders, fills from min to the thumb value.
102+
* For range sliders, fills between the lowest and highest thumb
103+
* values. Must be used within a Slider.Track component.
104+
*
72105
* @see https://0.vuetifyjs.com/components/slider#anatomy
73106
*
74107
* @example
@@ -80,7 +113,13 @@ export const Slider = {
80113
*/
81114
Range,
82115
/**
83-
* Draggable thumb control. Auto-registers with parent Root.
116+
* Draggable thumb control with keyboard navigation.
117+
*
118+
* Auto-registers with parent Root to receive its index. Supports
119+
* pointer drag and full keyboard navigation (Arrow, Page, Home/End).
120+
* Provides ARIA slider attributes including per-thumb constrained
121+
* valuemin/valuemax for multi-thumb sliders. Render multiple Thumbs
122+
* for range sliders.
84123
*
85124
* @see https://0.vuetifyjs.com/components/slider#anatomy
86125
*
@@ -91,7 +130,11 @@ export const Slider = {
91130
*/
92131
Thumb,
93132
/**
94-
* Hidden native input for form submission. Auto-rendered by Root when `name` is set.
133+
* Hidden native input for form submission.
134+
*
135+
* Auto-rendered by Root when `name` prop is provided — one input
136+
* per thumb value. Can also be used explicitly for custom form
137+
* integration.
95138
*
96139
* @see https://0.vuetifyjs.com/components/slider#form-integration
97140
* @internal

0 commit comments

Comments
 (0)