Skip to content

Commit 7ec3e29

Browse files
committed
Merge remote-tracking branch 'origin/dev'
2 parents 6227013 + b217788 commit 7ec3e29

File tree

6 files changed

+56
-37
lines changed

6 files changed

+56
-37
lines changed

src/components/DropZone/DropZone.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ Labelled(
5353
:disabled="disabled",
5454
:multiple="allowMultiple || false",
5555
:openFileDialog="openFileDialog",
56-
@change="handleDrop",
56+
@input="handleDrop",
5757
@focus="handleFocus",
5858
@blur="handleBlur",
5959
@file-dialog-close="onFileDialogClose",
@@ -63,7 +63,7 @@ Labelled(
6363
</template>
6464

6565
<script setup lang="ts">
66-
import { computed, inject, onBeforeUnmount, onMounted, provide, reactive, ref, useAttrs, useSlots, watch } from 'vue';
66+
import { computed, inject, onBeforeUnmount, onMounted, provide, reactive, ref, useAttrs, useSlots } from 'vue';
6767
import debounce from 'lodash/debounce';
6868
import UploadMajor from '@icons/UploadMajor.svg';
6969
import CircleAlertMajor from '@icons/CircleAlertMajor.svg';

src/components/DropZone/DropZoneInput.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const props = defineProps<DropZoneInputProps>();
2828
const emits = defineEmits<{
2929
(e: 'focus'): void;
3030
(e: 'blur'): void;
31-
(e: 'change', event: Event): void;
31+
(e: 'input', event: Event): void;
3232
(e: 'file-dialog-close'): void;
3333
}>();
3434
@@ -61,7 +61,7 @@ const handleChange = (event: Event) => {
6161
if (!files) {
6262
return;
6363
}
64-
emits('change', event);
64+
emits('input', event);
6565
};
6666
6767
const handleFocus = () => {

src/components/DropZone/utils.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ export function fileAccepted(file: File, accept: string | undefined) {
66

77
export function getDataTransferFiles(event: DragEvent | Event) {
88
if (isDragEvent(event) && event.dataTransfer) {
9-
console.log('drag');
109
const dt = event.dataTransfer;
1110

1211
if (dt.files && dt.files.length) {

src/components/RangeSlider/RangeSlider.vue

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,26 @@
11
<template lang="pug">
2-
component(
3-
:is="isDualThumb ? DualThumb : SingleThumb",
4-
v-model="modelValue",
2+
DualThumb(
3+
v-if="isDualThumb",
4+
v-model="dualValue",
55
v-bind="sharedProps",
6-
@change="handleChange",
6+
@input="handleChange",
7+
@focus="emits('focus')",
8+
@blur="emits('blur')",
9+
)
10+
template(#label, v-if="slots.label || label")
11+
slot(v-if="slots.label", name="label")
12+
template(v-else) {{ label }}
13+
template(#help-text, v-if="slots['help-text']")
14+
slot(name="help-text")
15+
template(#prefix, v-if="slots.prefix")
16+
slot(name="prefix")
17+
template(#suffix, v-if="slots.suffix")
18+
slot(name="suffix")
19+
SingleThumb(
20+
v-else,
21+
v-model="singleValue",
22+
v-bind="sharedProps",
23+
@input="handleChange",
724
@focus="emits('focus')",
825
@blur="emits('blur')",
926
)
@@ -68,6 +85,14 @@ const id = useUniqueId('RangeSlider');
6885
6986
const isDualThumb = computed(() => Array.isArray(props.modelValue));
7087
88+
const singleValue = computed<number>(() => isDualThumb.value ? props.modelValue[0] : props.modelValue);
89+
90+
const dualValue = computed<[number, number]>(() => {
91+
return isDualThumb.value
92+
? props.modelValue as [number, number]
93+
: [props.modelValue as number, (props.modelValue as number) + 1];
94+
});
95+
7196
const sharedProps = computed(() => {
7297
const { label, modelValue, ...rest } = props;
7398
return {
@@ -76,9 +101,9 @@ const sharedProps = computed(() => {
76101
};
77102
});
78103
79-
const handleChange = (value: RangeSliderValue) => {
80-
emits('change', value, id);
81-
emits('update:modelValue', value, id);
104+
const handleChange = (value: RangeSliderValue, thumbId: string) => {
105+
emits('change', value, thumbId);
106+
emits('update:modelValue', value, thumbId);
82107
};
83108
</script>
84109
<style lang="scss">

src/components/RangeSlider/components/DualThumb/DualThumb.vue

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -128,14 +128,9 @@ interface KeyHandlers {
128128
[key: string]: () => void;
129129
}
130130
131-
enum Control {
132-
Lower,
133-
Upper,
134-
}
135-
136131
const props = defineProps<DualThumbProps>();
137132
const emits = defineEmits<{
138-
(e: 'change', value: DualValue, id: string): void;
133+
(e: 'input', value: DualValue, id: string): void;
139134
(e: 'update:modelValue', value: DualValue, id: string): void;
140135
(e: 'focus'): void;
141136
(e: 'blur'): void;
@@ -262,7 +257,7 @@ const handleMouseMoveThumbLower = (event: MouseEvent) => {
262257
const valueUpper = value.value[1];
263258
setValue(
264259
[actualXPosition(event.clientX), valueUpper],
265-
Control.Upper,
260+
'Upper',
266261
);
267262
};
268263
@@ -279,7 +274,7 @@ const handleTouchMoveThumbLower = (event: TouchEvent) => {
279274
const valueUpper = value.value[1];
280275
setValue(
281276
[actualXPosition(event.touches[0].clientX), valueUpper],
282-
Control.Upper,
277+
'Upper',
283278
);
284279
};
285280
@@ -295,7 +290,7 @@ const handleMouseMoveThumbUpper = (event: MouseEvent) => {
295290
const valueLower = value.value[0];
296291
setValue(
297292
[valueLower, actualXPosition(event.clientX)],
298-
Control.Lower,
293+
'Lower',
299294
);
300295
};
301296
@@ -313,7 +308,7 @@ const handleTouchMoveThumbUpper = (event: TouchEvent) => {
313308
const valueLower = value.value[0];
314309
setValue(
315310
[valueLower, actualXPosition(event.touches[0].clientX)],
316-
Control.Lower,
311+
'Lower',
317312
);
318313
};
319314
@@ -362,37 +357,37 @@ const handleKeypressUpper = (event: KeyboardEvent) => {
362357
const incrementValueLower = () => {
363358
setValue(
364359
[value.value[0] + props.step, value.value[1]],
365-
Control.Upper,
360+
'Upper',
366361
);
367362
};
368363
369364
const decrementValueLower = () => {
370365
setValue(
371366
[value.value[0] - props.step, value.value[1]],
372-
Control.Upper,
367+
'Upper',
373368
);
374369
};
375370
376371
const incrementValueUpper = () => {
377372
setValue(
378373
[value.value[0], value.value[1] + props.step],
379-
Control.Lower,
374+
'Lower',
380375
);
381376
};
382377
383378
const decrementValueUpper = () => {
384379
setValue(
385380
[value.value[0], value.value[1] - props.step],
386-
Control.Lower,
381+
'Lower',
387382
);
388383
};
389384
390385
const dispatchValue = () => {
391-
emits('change', value.value, props.id);
386+
emits('input', value.value, props.id);
392387
emits('update:modelValue', value.value, props.id);
393388
};
394389
395-
const setValue = (dirtyValue: DualValue, control: Control) => {
390+
const setValue = (dirtyValue: DualValue, control: 'Upper' | 'Lower') => {
396391
const sanitizedValue = sanitizeValue(dirtyValue, props.min, props.max, props.step, control);
397392
if (!isEqual(sanitizedValue, value)) {
398393
value.value = sanitizedValue;
@@ -411,14 +406,14 @@ const handleMouseDownTrack = (event: MouseEvent) => {
411406
const distanceFromUpperThumb = Math.abs(value.value[1] - clickXPosition);
412407
413408
if (distanceFromLowerThumb <= distanceFromUpperThumb) {
414-
setValue([clickXPosition, value.value[1]], Control.Upper);
409+
setValue([clickXPosition, value.value[1]], 'Upper');
415410
registerMouseMoveHandler(handleMouseMoveThumbLower);
416411
417412
if (thumbLower.value) {
418413
thumbLower.value.focus();
419414
}
420415
} else {
421-
setValue([value.value[0], clickXPosition], Control.Lower);
416+
setValue([value.value[0], clickXPosition], 'Lower');
422417
registerMouseMoveHandler(handleMouseMoveThumbUpper);
423418
424419
if (thumbUpper.value) {
@@ -438,14 +433,14 @@ const handleTouchStartTrack = (event: TouchEvent) => {
438433
const distanceFromUpperThumb = Math.abs(value.value[1] - clickXPosition);
439434
440435
if (distanceFromLowerThumb <= distanceFromUpperThumb) {
441-
setValue([clickXPosition, value.value[1]], Control.Upper);
436+
setValue([clickXPosition, value.value[1]], 'Upper');
442437
registerTouchMoveHandler(handleTouchMoveThumbLower);
443438
444439
if (thumbLower.value) {
445440
thumbLower.value.focus();
446441
}
447442
} else {
448-
setValue([value.value[0], clickXPosition], Control.Lower);
443+
setValue([value.value[0], clickXPosition], 'Lower');
449444
registerTouchMoveHandler(handleTouchMoveThumbUpper);
450445
451446
if (thumbUpper.value) {
@@ -495,16 +490,16 @@ function sanitizeValue(
495490
min: number,
496491
max: number,
497492
step: number,
498-
control = Control.Upper,
493+
control = 'Upper',
499494
): DualValue {
500495
let upperValue = inBoundsUpper(roundedToStep(mainValue[1]));
501496
let lowerValue = inBoundsLower(roundedToStep(mainValue[0]));
502497
const maxLowerValue = upperValue - step;
503498
const minUpperValue = lowerValue + step;
504499
505-
if (control === Control.Upper && lowerValue > maxLowerValue) {
500+
if (control === 'Upper' && lowerValue > maxLowerValue) {
506501
lowerValue = maxLowerValue;
507-
} else if (control === Control.Lower && upperValue < minUpperValue) {
502+
} else if (control === 'Lower' && upperValue < minUpperValue) {
508503
upperValue = minUpperValue;
509504
}
510505

src/components/RangeSlider/components/SingleThumb/SingleThumb.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ const props = defineProps<SingleThumbProps>();
8989
const slots = useSlots();
9090
9191
const emits = defineEmits<{
92-
(e: 'change', value: number, id: string): void;
92+
(e: 'input', value: number, id: string): void;
9393
(e: 'update:modelValue', value: number, id: string): void;
9494
(e: 'focus'): void;
9595
(e: 'blur'): void;
@@ -128,7 +128,7 @@ const className = computed(() => classNames(
128128
129129
const handleChange = (event: Event) => {
130130
emits('update:modelValue', parseFloat((event.target as HTMLInputElement).value), props.id);
131-
emits('change', parseFloat((event.target as HTMLInputElement).value), props.id);
131+
emits('input', parseFloat((event.target as HTMLInputElement).value), props.id);
132132
}
133133
</script>
134134

0 commit comments

Comments
 (0)