Skip to content

Commit 9467149

Browse files
committed
feat: render-top-on-active render-bottom-on-active
1 parent 2811182 commit 9467149

File tree

3 files changed

+14
-6
lines changed

3 files changed

+14
-6
lines changed

playground/src/App.vue

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ function handleAddData(value: number) {
4848
/>
4949
</div>
5050
<div>
51-
<div class="flex items-center gap2">
51+
<div class="flex flex-wrap items-center gap2">
5252
<h2 class="type-title m0">
5353
number[]
5454
</h2>
@@ -67,7 +67,7 @@ function handleAddData(value: number) {
6767
/>
6868
</div>
6969
<div>
70-
<div class="flex items-center gap2">
70+
<div class="flex flex-wrap items-center gap2">
7171
<h2 class="type-title m0">
7272
number[]
7373
</h2>
@@ -95,13 +95,14 @@ function handleAddData(value: number) {
9595
/>
9696
</div>
9797
<div>
98-
<div class="flex items-center gap2">
98+
<div class="flex flex-wrap items-center gap2">
9999
<h2 class="type-title m0">
100100
RangeData[]
101101
</h2>
102102
<span class="tag">addable</span>
103-
<span class="tag">limit</span>
103+
<span class="tag">limit:5</span>
104104
<span class="tag">thumb-type:rect</span>
105+
<span class="tag">render-bottom-on-active</span>
105106
</div>
106107
<div class="flex items-baseline">
107108
<span class="label">modelValue</span>
@@ -113,6 +114,7 @@ function handleAddData(value: number) {
113114
addable
114115
size="large"
115116
thumb-type="rect"
117+
render-bottom-on-active
116118
:limit="5"
117119
:render-top="(data) => h('div', data.data)"
118120
:render-bottom="(data) => h('div', data.value)"

src/Range.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ const props = withDefaults(defineProps<{
2020
thumbType?: 'circle' | 'square' | 'rect'
2121
thumbSize?: 'small' | 'medium' | 'large'
2222
renderTop?: RangeRenderFn<T>
23+
renderTopOnActive?: boolean
2324
renderBottom?: RangeRenderFn<T>
25+
renderBottomOnActive?: boolean
2426
}>(), {
2527
modelValue: () => [],
2628
min: 0,
@@ -228,7 +230,9 @@ provide(RangeContainerRefKey, containerRef)
228230
:disabled="model[index].disabled"
229231
:data="model[index]"
230232
:render-top="model[index].renderTop || renderTop"
233+
:render-top-on-active="renderTopOnActive"
231234
:render-bottom="model[index].renderBottom || renderBottom"
235+
:render-bottom-on-active="renderBottomOnActive"
232236
:addable="addable"
233237
:thumb-type="thumbType"
234238
:thumb-size="thumbSize"

src/RangeThumb.vue

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ const props = defineProps<{
1313
thumbType?: 'circle' | 'square' | 'rect'
1414
thumbSize?: 'small' | 'medium' | 'large'
1515
renderTop?: RangeRenderFn<T>
16+
renderTopOnActive?: boolean
1617
renderBottom?: RangeRenderFn<T>
18+
renderBottomOnActive?: boolean
1719
}>()
1820
1921
const emits = defineEmits<{
@@ -93,10 +95,10 @@ function onPointerDown(e: PointerEvent) {
9395
@mousedown.prevent="() => {}"
9496
@touchstart.prevent.passive="() => {}"
9597
>
96-
<div class="m-range-thumb-top-container">
98+
<div v-if="!renderTopOnActive || active" class="m-range-thumb-top-container">
9799
<Render :render="() => renderTop?.(data)" />
98100
</div>
99-
<div class="m-range-thumb-bottom-container">
101+
<div v-if="!renderBottomOnActive || active" class="m-range-thumb-bottom-container">
100102
<Render :render="() => renderBottom?.(data)" />
101103
</div>
102104
</div>

0 commit comments

Comments
 (0)