vuetify 3.5.11 → 3.5.12
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/dist/_component-variables-labs.sass +2 -1
- package/dist/json/attributes.json +243 -19
- package/dist/json/importMap-labs.json +22 -10
- package/dist/json/importMap.json +124 -124
- package/dist/json/tags.json +71 -0
- package/dist/json/web-types.json +747 -38
- package/dist/vuetify-labs.css +2339 -2089
- package/dist/vuetify-labs.d.ts +1117 -154
- package/dist/vuetify-labs.esm.js +675 -25
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +675 -25
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +1661 -1652
- package/dist/vuetify.d.ts +321 -192
- package/dist/vuetify.esm.js +33 -19
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +33 -19
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +93 -92
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAvatar/VAvatar.css +6 -0
- package/lib/components/VAvatar/VAvatar.sass +6 -0
- package/lib/components/VAvatar/_variables.scss +2 -0
- package/lib/components/VCheckbox/index.d.mts +54 -18
- package/lib/components/VChip/VChip.css +5 -2
- package/lib/components/VChip/VChip.sass +3 -0
- package/lib/components/VChip/_variables.scss +2 -2
- package/lib/components/VDivider/VDivider.css +1 -1
- package/lib/components/VDivider/VDivider.sass +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.css +3 -3
- package/lib/components/VExpansionPanel/VExpansionPanel.sass +2 -2
- package/lib/components/VField/VField.css +1 -1
- package/lib/components/VField/_variables.scss +1 -1
- package/lib/components/VFileInput/index.d.mts +12 -12
- package/lib/components/VForm/index.d.mts +42 -42
- package/lib/components/VInput/index.d.mts +6 -6
- package/lib/components/VRadio/index.d.mts +27 -9
- package/lib/components/VRadioGroup/index.d.mts +27 -9
- package/lib/components/VSelectionControl/VSelectionControl.mjs +1 -0
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSelectionControl/index.d.mts +27 -9
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +1 -1
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
- package/lib/components/VSelectionControlGroup/index.d.mts +27 -9
- package/lib/components/VSwitch/index.d.mts +27 -9
- package/lib/components/VTextField/index.d.mts +12 -12
- package/lib/components/VTextarea/index.d.mts +12 -12
- package/lib/components/VValidation/index.d.mts +6 -6
- package/lib/components/index.d.mts +279 -153
- package/lib/composables/form.mjs.map +1 -1
- package/lib/composables/router.mjs +16 -8
- package/lib/composables/router.mjs.map +1 -1
- package/lib/composables/transition.mjs +5 -2
- package/lib/composables/transition.mjs.map +1 -1
- package/lib/composables/validation.mjs +5 -4
- package/lib/composables/validation.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +42 -39
- package/lib/labs/VNumberInput/VNumberInput.mjs +4 -4
- package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
- package/lib/labs/VTimePicker/SelectingTimes.mjs.map +1 -0
- package/lib/labs/VTimePicker/VTimePicker.css +8 -0
- package/lib/labs/VTimePicker/VTimePicker.mjs +265 -0
- package/lib/labs/VTimePicker/VTimePicker.mjs.map +1 -0
- package/lib/labs/VTimePicker/VTimePicker.sass +10 -0
- package/lib/labs/VTimePicker/VTimePickerClock.css +130 -0
- package/lib/labs/VTimePicker/VTimePickerClock.mjs +244 -0
- package/lib/labs/VTimePicker/VTimePickerClock.mjs.map +1 -0
- package/lib/{components → labs}/VTimePicker/VTimePickerClock.sass +22 -39
- package/lib/labs/VTimePicker/VTimePickerControls.css +104 -0
- package/lib/labs/VTimePicker/VTimePickerControls.mjs +125 -0
- package/lib/labs/VTimePicker/VTimePickerControls.mjs.map +1 -0
- package/lib/labs/VTimePicker/VTimePickerControls.sass +102 -0
- package/lib/labs/VTimePicker/_variables.scss +34 -0
- package/lib/labs/VTimePicker/index.d.mts +848 -0
- package/lib/labs/VTimePicker/index.mjs +4 -0
- package/lib/labs/VTimePicker/index.mjs.map +1 -0
- package/lib/labs/components.d.mts +835 -1
- package/lib/labs/components.mjs +1 -0
- package/lib/labs/components.mjs.map +1 -1
- package/lib/locale/af.mjs +2 -1
- package/lib/locale/af.mjs.map +1 -1
- package/lib/locale/ar.mjs +2 -1
- package/lib/locale/ar.mjs.map +1 -1
- package/lib/locale/az.mjs +2 -1
- package/lib/locale/az.mjs.map +1 -1
- package/lib/locale/bg.mjs +2 -1
- package/lib/locale/bg.mjs.map +1 -1
- package/lib/locale/ca.mjs +2 -1
- package/lib/locale/ca.mjs.map +1 -1
- package/lib/locale/ckb.mjs +2 -1
- package/lib/locale/ckb.mjs.map +1 -1
- package/lib/locale/cs.mjs +2 -1
- package/lib/locale/cs.mjs.map +1 -1
- package/lib/locale/da.mjs +2 -1
- package/lib/locale/da.mjs.map +1 -1
- package/lib/locale/de.mjs +2 -1
- package/lib/locale/de.mjs.map +1 -1
- package/lib/locale/el.mjs +2 -1
- package/lib/locale/el.mjs.map +1 -1
- package/lib/locale/en.mjs +2 -1
- package/lib/locale/en.mjs.map +1 -1
- package/lib/locale/es.mjs +2 -1
- package/lib/locale/es.mjs.map +1 -1
- package/lib/locale/et.mjs +2 -1
- package/lib/locale/et.mjs.map +1 -1
- package/lib/locale/fa.mjs +2 -1
- package/lib/locale/fa.mjs.map +1 -1
- package/lib/locale/fi.mjs +2 -1
- package/lib/locale/fi.mjs.map +1 -1
- package/lib/locale/fr.mjs +2 -1
- package/lib/locale/fr.mjs.map +1 -1
- package/lib/locale/he.mjs +2 -1
- package/lib/locale/he.mjs.map +1 -1
- package/lib/locale/hr.mjs +2 -1
- package/lib/locale/hr.mjs.map +1 -1
- package/lib/locale/hu.mjs +2 -1
- package/lib/locale/hu.mjs.map +1 -1
- package/lib/locale/id.mjs +2 -1
- package/lib/locale/id.mjs.map +1 -1
- package/lib/locale/index.d.mts +43 -0
- package/lib/locale/it.mjs +2 -1
- package/lib/locale/it.mjs.map +1 -1
- package/lib/locale/ja.mjs +2 -1
- package/lib/locale/ja.mjs.map +1 -1
- package/lib/locale/km.mjs +2 -1
- package/lib/locale/km.mjs.map +1 -1
- package/lib/locale/ko.mjs +2 -1
- package/lib/locale/ko.mjs.map +1 -1
- package/lib/locale/lt.mjs +2 -1
- package/lib/locale/lt.mjs.map +1 -1
- package/lib/locale/lv.mjs +2 -1
- package/lib/locale/lv.mjs.map +1 -1
- package/lib/locale/nl.mjs +2 -1
- package/lib/locale/nl.mjs.map +1 -1
- package/lib/locale/no.mjs +2 -1
- package/lib/locale/no.mjs.map +1 -1
- package/lib/locale/pl.mjs +2 -1
- package/lib/locale/pl.mjs.map +1 -1
- package/lib/locale/pt.mjs +2 -1
- package/lib/locale/pt.mjs.map +1 -1
- package/lib/locale/ro.mjs +2 -1
- package/lib/locale/ro.mjs.map +1 -1
- package/lib/locale/ru.mjs +2 -1
- package/lib/locale/ru.mjs.map +1 -1
- package/lib/locale/sk.mjs +2 -1
- package/lib/locale/sk.mjs.map +1 -1
- package/lib/locale/sl.mjs +2 -1
- package/lib/locale/sl.mjs.map +1 -1
- package/lib/locale/sr-Cyrl.mjs +2 -1
- package/lib/locale/sr-Cyrl.mjs.map +1 -1
- package/lib/locale/sr-Latn.mjs +2 -1
- package/lib/locale/sr-Latn.mjs.map +1 -1
- package/lib/locale/sv.mjs +2 -1
- package/lib/locale/sv.mjs.map +1 -1
- package/lib/locale/th.mjs +2 -1
- package/lib/locale/th.mjs.map +1 -1
- package/lib/locale/tr.mjs +2 -1
- package/lib/locale/tr.mjs.map +1 -1
- package/lib/locale/uk.mjs +2 -1
- package/lib/locale/uk.mjs.map +1 -1
- package/lib/locale/vi.mjs +2 -1
- package/lib/locale/vi.mjs.map +1 -1
- package/lib/locale/zh-Hans.mjs +2 -1
- package/lib/locale/zh-Hans.mjs.map +1 -1
- package/lib/locale/zh-Hant.mjs +2 -1
- package/lib/locale/zh-Hant.mjs.map +1 -1
- package/package.json +4 -4
- package/lib/components/VTimePicker/SelectingTimes.mjs.map +0 -1
- package/lib/components/VTimePicker/VTimePicker.mjs +0 -288
- package/lib/components/VTimePicker/VTimePicker.mjs.map +0 -1
- package/lib/components/VTimePicker/VTimePickerClock.mjs +0 -251
- package/lib/components/VTimePicker/VTimePickerClock.mjs.map +0 -1
- package/lib/components/VTimePicker/VTimePickerTitle.mjs +0 -64
- package/lib/components/VTimePicker/VTimePickerTitle.mjs.map +0 -1
- package/lib/components/VTimePicker/VTimePickerTitle.sass +0 -61
- package/lib/components/VTimePicker/_variables.scss +0 -32
- package/lib/components/VTimePicker/index.mjs +0 -12
- package/lib/components/VTimePicker/index.mjs.map +0 -1
- /package/lib/{components → labs}/VTimePicker/SelectingTimes.mjs +0 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { createVNode as _createVNode } from "vue";
|
|
2
|
+
// StylesthisValue
|
|
3
|
+
// Styles
|
|
4
|
+
import "./VTimePickerClock.css";
|
|
5
|
+
|
|
6
|
+
// Composables
|
|
7
|
+
import { useBackgroundColor, useTextColor } from "../../composables/color.mjs"; // Utilities
|
|
8
|
+
import { computed, ref, toRef, watch } from 'vue';
|
|
9
|
+
import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
|
|
10
|
+
export const makeVTimePickerClockProps = propsFactory({
|
|
11
|
+
allowedValues: Function,
|
|
12
|
+
ampm: Boolean,
|
|
13
|
+
color: String,
|
|
14
|
+
disabled: Boolean,
|
|
15
|
+
displayedValue: {
|
|
16
|
+
default: null
|
|
17
|
+
},
|
|
18
|
+
double: Boolean,
|
|
19
|
+
format: {
|
|
20
|
+
type: Function,
|
|
21
|
+
default: val => val
|
|
22
|
+
},
|
|
23
|
+
max: {
|
|
24
|
+
type: Number,
|
|
25
|
+
required: true
|
|
26
|
+
},
|
|
27
|
+
min: {
|
|
28
|
+
type: Number,
|
|
29
|
+
required: true
|
|
30
|
+
},
|
|
31
|
+
scrollable: Boolean,
|
|
32
|
+
readonly: Boolean,
|
|
33
|
+
rotate: {
|
|
34
|
+
type: Number,
|
|
35
|
+
default: 0
|
|
36
|
+
},
|
|
37
|
+
step: {
|
|
38
|
+
type: Number,
|
|
39
|
+
default: 1
|
|
40
|
+
},
|
|
41
|
+
modelValue: {
|
|
42
|
+
type: Number
|
|
43
|
+
}
|
|
44
|
+
}, 'VTimePickerClock');
|
|
45
|
+
export const VTimePickerClock = genericComponent()({
|
|
46
|
+
name: 'VTimePickerClock',
|
|
47
|
+
props: makeVTimePickerClockProps(),
|
|
48
|
+
emits: {
|
|
49
|
+
change: val => val,
|
|
50
|
+
input: val => val
|
|
51
|
+
},
|
|
52
|
+
setup(props, _ref) {
|
|
53
|
+
let {
|
|
54
|
+
emit
|
|
55
|
+
} = _ref;
|
|
56
|
+
const clockRef = ref(null);
|
|
57
|
+
const innerClockRef = ref(null);
|
|
58
|
+
const inputValue = ref(undefined);
|
|
59
|
+
const isDragging = ref(false);
|
|
60
|
+
const valueOnMouseDown = ref(null);
|
|
61
|
+
const valueOnMouseUp = ref(null);
|
|
62
|
+
const {
|
|
63
|
+
textColorClasses,
|
|
64
|
+
textColorStyles
|
|
65
|
+
} = useTextColor(toRef(props, 'color'));
|
|
66
|
+
const {
|
|
67
|
+
backgroundColorClasses,
|
|
68
|
+
backgroundColorStyles
|
|
69
|
+
} = useBackgroundColor(toRef(props, 'color'));
|
|
70
|
+
const count = computed(() => props.max - props.min + 1);
|
|
71
|
+
const roundCount = computed(() => props.double ? count.value / 2 : count.value);
|
|
72
|
+
const degreesPerUnit = computed(() => 360 / roundCount.value);
|
|
73
|
+
const degrees = computed(() => degreesPerUnit.value * Math.PI / 180);
|
|
74
|
+
const displayedValue = computed(() => props.modelValue == null ? props.min : props.modelValue);
|
|
75
|
+
const innerRadiusScale = computed(() => 0.62);
|
|
76
|
+
const genChildren = computed(() => {
|
|
77
|
+
const children = [];
|
|
78
|
+
for (let value = props.min; value <= props.max; value = value + props.step) {
|
|
79
|
+
children.push(value);
|
|
80
|
+
}
|
|
81
|
+
return children;
|
|
82
|
+
});
|
|
83
|
+
watch(() => props.modelValue, val => {
|
|
84
|
+
inputValue.value = val;
|
|
85
|
+
});
|
|
86
|
+
function update(value) {
|
|
87
|
+
if (inputValue.value !== value) {
|
|
88
|
+
inputValue.value = value;
|
|
89
|
+
}
|
|
90
|
+
emit('input', value);
|
|
91
|
+
}
|
|
92
|
+
function isAllowed(value) {
|
|
93
|
+
return !props.allowedValues || props.allowedValues(value);
|
|
94
|
+
}
|
|
95
|
+
function wheel(e) {
|
|
96
|
+
e.preventDefault();
|
|
97
|
+
const delta = Math.sign(-e.deltaY || 1);
|
|
98
|
+
let value = displayedValue.value;
|
|
99
|
+
do {
|
|
100
|
+
value = value + delta;
|
|
101
|
+
value = (value - props.min + count.value) % count.value + props.min;
|
|
102
|
+
} while (!isAllowed(value) && value !== displayedValue.value);
|
|
103
|
+
if (value !== props.displayedValue) {
|
|
104
|
+
update(value);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function isInner(value) {
|
|
108
|
+
return props.double && value - props.min >= roundCount.value;
|
|
109
|
+
}
|
|
110
|
+
function handScale(value) {
|
|
111
|
+
return isInner(value) ? innerRadiusScale.value : 1;
|
|
112
|
+
}
|
|
113
|
+
function getPosition(value) {
|
|
114
|
+
const rotateRadians = props.rotate * Math.PI / 180;
|
|
115
|
+
return {
|
|
116
|
+
x: Math.sin((value - props.min) * degrees.value + rotateRadians) * handScale(value),
|
|
117
|
+
y: -Math.cos((value - props.min) * degrees.value + rotateRadians) * handScale(value)
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
function angleToValue(angle, insideClick) {
|
|
121
|
+
const value = (Math.round(angle / degreesPerUnit.value) + (insideClick ? roundCount.value : 0)) % count.value + props.min;
|
|
122
|
+
|
|
123
|
+
// Necessary to fix edge case when selecting left part of the value(s) at 12 o'clock
|
|
124
|
+
if (angle < 360 - degreesPerUnit.value / 2) return value;
|
|
125
|
+
return insideClick ? props.max - roundCount.value + 1 : props.min;
|
|
126
|
+
}
|
|
127
|
+
function getTransform(i) {
|
|
128
|
+
const {
|
|
129
|
+
x,
|
|
130
|
+
y
|
|
131
|
+
} = getPosition(i);
|
|
132
|
+
return {
|
|
133
|
+
left: `${50 + x * 50}%`,
|
|
134
|
+
top: `${50 + y * 50}%`
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
function euclidean(p0, p1) {
|
|
138
|
+
const dx = p1.x - p0.x;
|
|
139
|
+
const dy = p1.y - p0.y;
|
|
140
|
+
return Math.sqrt(dx * dx + dy * dy);
|
|
141
|
+
}
|
|
142
|
+
function angle(center, p1) {
|
|
143
|
+
const value = 2 * Math.atan2(p1.y - center.y - euclidean(center, p1), p1.x - center.x);
|
|
144
|
+
return Math.abs(value * 180 / Math.PI);
|
|
145
|
+
}
|
|
146
|
+
function setMouseDownValue(value) {
|
|
147
|
+
if (valueOnMouseDown.value === null) {
|
|
148
|
+
valueOnMouseDown.value = value;
|
|
149
|
+
}
|
|
150
|
+
valueOnMouseUp.value = value;
|
|
151
|
+
update(value);
|
|
152
|
+
}
|
|
153
|
+
function onDragMove(e) {
|
|
154
|
+
e.preventDefault();
|
|
155
|
+
if (!isDragging.value && e.type !== 'click' || !clockRef.value) return;
|
|
156
|
+
const {
|
|
157
|
+
width,
|
|
158
|
+
top,
|
|
159
|
+
left
|
|
160
|
+
} = clockRef.value?.getBoundingClientRect();
|
|
161
|
+
const {
|
|
162
|
+
width: innerWidth
|
|
163
|
+
} = innerClockRef.value?.getBoundingClientRect() ?? {
|
|
164
|
+
width: 0
|
|
165
|
+
};
|
|
166
|
+
const {
|
|
167
|
+
clientX,
|
|
168
|
+
clientY
|
|
169
|
+
} = 'touches' in e ? e.touches[0] : e;
|
|
170
|
+
const center = {
|
|
171
|
+
x: width / 2,
|
|
172
|
+
y: -width / 2
|
|
173
|
+
};
|
|
174
|
+
const coords = {
|
|
175
|
+
x: clientX - left,
|
|
176
|
+
y: top - clientY
|
|
177
|
+
};
|
|
178
|
+
const handAngle = Math.round(angle(center, coords) - props.rotate + 360) % 360;
|
|
179
|
+
const insideClick = props.double && euclidean(center, coords) < (innerWidth + innerWidth * innerRadiusScale.value) / 4;
|
|
180
|
+
const checksCount = Math.ceil(15 / degreesPerUnit.value);
|
|
181
|
+
let value;
|
|
182
|
+
for (let i = 0; i < checksCount; i++) {
|
|
183
|
+
value = angleToValue(handAngle + i * degreesPerUnit.value, insideClick);
|
|
184
|
+
if (isAllowed(value)) return setMouseDownValue(value);
|
|
185
|
+
value = angleToValue(handAngle - i * degreesPerUnit.value, insideClick);
|
|
186
|
+
if (isAllowed(value)) return setMouseDownValue(value);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
function onMouseDown(e) {
|
|
190
|
+
e.preventDefault();
|
|
191
|
+
valueOnMouseDown.value = null;
|
|
192
|
+
valueOnMouseUp.value = null;
|
|
193
|
+
isDragging.value = true;
|
|
194
|
+
onDragMove(e);
|
|
195
|
+
}
|
|
196
|
+
function onMouseUp(e) {
|
|
197
|
+
e.stopPropagation();
|
|
198
|
+
isDragging.value = false;
|
|
199
|
+
if (valueOnMouseUp.value !== null && isAllowed(valueOnMouseUp.value)) {
|
|
200
|
+
emit('change', valueOnMouseUp.value);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
useRender(() => {
|
|
204
|
+
return _createVNode("div", {
|
|
205
|
+
"class": [{
|
|
206
|
+
'v-time-picker-clock': true,
|
|
207
|
+
'v-time-picker-clock--indeterminate': props.modelValue == null,
|
|
208
|
+
'v-time-picker-clock--readonly': props.readonly
|
|
209
|
+
}],
|
|
210
|
+
"onMousedown": onMouseDown,
|
|
211
|
+
"onMouseup": onMouseUp,
|
|
212
|
+
"onMouseleave": e => isDragging.value && onMouseUp(e),
|
|
213
|
+
"onTouchstart": onMouseDown,
|
|
214
|
+
"onTouchend": onMouseUp,
|
|
215
|
+
"onMousemove": onDragMove,
|
|
216
|
+
"onTouchmove": onDragMove,
|
|
217
|
+
"onWheel": e => props.scrollable && wheel(e),
|
|
218
|
+
"ref": clockRef
|
|
219
|
+
}, [_createVNode("div", {
|
|
220
|
+
"class": "v-time-picker-clock__inner",
|
|
221
|
+
"ref": innerClockRef
|
|
222
|
+
}, [_createVNode("div", {
|
|
223
|
+
"class": [{
|
|
224
|
+
'v-time-picker-clock__hand': true,
|
|
225
|
+
'v-time-picker-clock__hand--inner': isInner(props.modelValue)
|
|
226
|
+
}, textColorClasses.value],
|
|
227
|
+
"style": [{
|
|
228
|
+
transform: `rotate(${props.rotate + degreesPerUnit.value * (displayedValue.value - props.min)}deg) scaleY(${handScale(displayedValue.value)})`
|
|
229
|
+
}, textColorStyles.value]
|
|
230
|
+
}, null), genChildren.value.map(value => {
|
|
231
|
+
const isActive = value === displayedValue.value;
|
|
232
|
+
return _createVNode("div", {
|
|
233
|
+
"class": [{
|
|
234
|
+
'v-time-picker-clock__item': true,
|
|
235
|
+
'v-time-picker-clock__item--active': isActive,
|
|
236
|
+
'v-time-picker-clock__item--disabled': props.disabled || !isAllowed(value)
|
|
237
|
+
}, isActive && backgroundColorClasses.value],
|
|
238
|
+
"style": [getTransform(value), isActive && backgroundColorStyles.value]
|
|
239
|
+
}, [_createVNode("span", null, [props.format(value)])]);
|
|
240
|
+
})])]);
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
//# sourceMappingURL=VTimePickerClock.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VTimePickerClock.mjs","names":["useBackgroundColor","useTextColor","computed","ref","toRef","watch","genericComponent","propsFactory","useRender","makeVTimePickerClockProps","allowedValues","Function","ampm","Boolean","color","String","disabled","displayedValue","default","double","format","type","val","max","Number","required","min","scrollable","readonly","rotate","step","modelValue","VTimePickerClock","name","props","emits","change","input","setup","_ref","emit","clockRef","innerClockRef","inputValue","undefined","isDragging","valueOnMouseDown","valueOnMouseUp","textColorClasses","textColorStyles","backgroundColorClasses","backgroundColorStyles","count","roundCount","value","degreesPerUnit","degrees","Math","PI","innerRadiusScale","genChildren","children","push","update","isAllowed","wheel","e","preventDefault","delta","sign","deltaY","isInner","handScale","getPosition","rotateRadians","x","sin","y","cos","angleToValue","angle","insideClick","round","getTransform","i","left","top","euclidean","p0","p1","dx","dy","sqrt","center","atan2","abs","setMouseDownValue","onDragMove","width","getBoundingClientRect","innerWidth","clientX","clientY","touches","coords","handAngle","checksCount","ceil","onMouseDown","onMouseUp","stopPropagation","_createVNode","transform","map","isActive"],"sources":["../../../src/labs/VTimePicker/VTimePickerClock.tsx"],"sourcesContent":["// StylesthisValue\n// Styles\nimport './VTimePickerClock.sass'\n\n// Composables\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref, toRef, watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\ninterface Point {\n x: number\n y: number\n}\n\nexport const makeVTimePickerClockProps = propsFactory({\n allowedValues: Function as PropType<(value: number) => boolean>,\n ampm: Boolean,\n color: String,\n disabled: Boolean,\n displayedValue: {\n default: null,\n },\n double: Boolean,\n format: {\n type: Function,\n default: (val: string | number) => val,\n },\n max: {\n type: Number,\n required: true,\n },\n min: {\n type: Number,\n required: true,\n },\n scrollable: Boolean,\n readonly: Boolean,\n rotate: {\n type: Number,\n default: 0,\n },\n step: {\n type: Number,\n default: 1,\n },\n modelValue: {\n type: Number,\n },\n}, 'VTimePickerClock')\n\nexport const VTimePickerClock = genericComponent()({\n name: 'VTimePickerClock',\n\n props: makeVTimePickerClockProps(),\n\n emits: {\n change: (val: number) => val,\n input: (val: number) => val,\n },\n\n setup (props, { emit }) {\n const clockRef = ref<HTMLElement | null>(null)\n const innerClockRef = ref<HTMLElement | null>(null)\n const inputValue = ref<number | undefined>(undefined)\n const isDragging = ref(false)\n const valueOnMouseDown = ref(null as number | null)\n const valueOnMouseUp = ref(null as number | null)\n\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n\n const count = computed(() => props.max - props.min + 1)\n const roundCount = computed(() => props.double ? (count.value / 2) : count.value)\n const degreesPerUnit = computed(() => 360 / roundCount.value)\n const degrees = computed(() => degreesPerUnit.value * Math.PI / 180)\n const displayedValue = computed(() => props.modelValue == null ? props.min : props.modelValue)\n const innerRadiusScale = computed(() => 0.62)\n\n const genChildren = computed(() => {\n const children = []\n for (let value = props.min; value <= props.max; value = value + props.step) {\n children.push(value)\n }\n return children\n })\n\n watch(() => props.modelValue, val => {\n inputValue.value = val\n })\n\n function update (value: number) {\n if (inputValue.value !== value) {\n inputValue.value = value\n }\n emit('input', value)\n }\n\n function isAllowed (value: number) {\n return !props.allowedValues || props.allowedValues(value)\n }\n\n function wheel (e: WheelEvent) {\n e.preventDefault()\n\n const delta = Math.sign(-e.deltaY || 1)\n let value = displayedValue.value\n do {\n value = value + delta\n value = (value - props.min + count.value) % count.value + props.min\n } while (!isAllowed(value) && value !== displayedValue.value)\n\n if (value !== props.displayedValue) {\n update(value)\n }\n }\n\n function isInner (value: number) {\n return props.double && (value - props.min >= roundCount.value)\n }\n\n function handScale (value: number) {\n return isInner(value) ? innerRadiusScale.value : 1\n }\n\n function getPosition (value: number) {\n const rotateRadians = props.rotate * Math.PI / 180\n return {\n x: Math.sin((value - props.min) * degrees.value + rotateRadians) * handScale(value),\n y: -Math.cos((value - props.min) * degrees.value + rotateRadians) * handScale(value),\n }\n }\n\n function angleToValue (angle: number, insideClick: boolean): number {\n const value = (\n Math.round(angle / degreesPerUnit.value) +\n (insideClick ? roundCount.value : 0)\n ) % count.value + props.min\n\n // Necessary to fix edge case when selecting left part of the value(s) at 12 o'clock\n if (angle < (360 - degreesPerUnit.value / 2)) return value\n\n return insideClick ? props.max - roundCount.value + 1 : props.min\n }\n\n function getTransform (i: number) {\n const { x, y } = getPosition(i)\n return {\n left: `${50 + x * 50}%`,\n top: `${50 + y * 50}%`,\n }\n }\n\n function euclidean (p0: Point, p1: Point) {\n const dx = p1.x - p0.x\n const dy = p1.y - p0.y\n\n return Math.sqrt(dx * dx + dy * dy)\n }\n\n function angle (center: Point, p1: Point) {\n const value = 2 * Math.atan2(p1.y - center.y - euclidean(center, p1), p1.x - center.x)\n return Math.abs(value * 180 / Math.PI)\n }\n\n function setMouseDownValue (value: number) {\n if (valueOnMouseDown.value === null) {\n valueOnMouseDown.value = value\n }\n\n valueOnMouseUp.value = value\n update(value)\n }\n\n function onDragMove (e: MouseEvent | TouchEvent) {\n e.preventDefault()\n if ((!isDragging.value && e.type !== 'click') || !clockRef.value) return\n const { width, top, left } = clockRef.value?.getBoundingClientRect()\n const { width: innerWidth }: DOMRect = innerClockRef.value?.getBoundingClientRect() ?? { width: 0 } as DOMRect\n const { clientX, clientY } = 'touches' in e ? e.touches[0] : e\n const center = { x: width / 2, y: -width / 2 }\n const coords = { x: clientX - left, y: top - clientY }\n const handAngle = Math.round(angle(center, coords) - props.rotate + 360) % 360\n const insideClick = props.double && euclidean(center, coords) < (innerWidth as number + innerWidth * innerRadiusScale.value) / 4\n const checksCount = Math.ceil(15 / degreesPerUnit.value)\n let value\n\n for (let i = 0; i < checksCount; i++) {\n value = angleToValue(handAngle + i * degreesPerUnit.value, insideClick)\n if (isAllowed(value)) return setMouseDownValue(value)\n\n value = angleToValue(handAngle - i * degreesPerUnit.value, insideClick)\n if (isAllowed(value)) return setMouseDownValue(value)\n }\n }\n\n function onMouseDown (e: MouseEvent | TouchEvent) {\n e.preventDefault()\n\n valueOnMouseDown.value = null\n valueOnMouseUp.value = null\n isDragging.value = true\n onDragMove(e)\n }\n\n function onMouseUp (e: MouseEvent | TouchEvent) {\n e.stopPropagation()\n\n isDragging.value = false\n if (valueOnMouseUp.value !== null && isAllowed(valueOnMouseUp.value)) {\n emit('change', valueOnMouseUp.value)\n }\n }\n\n useRender(() => {\n return (\n <div\n class={[\n {\n 'v-time-picker-clock': true,\n 'v-time-picker-clock--indeterminate': props.modelValue == null,\n 'v-time-picker-clock--readonly': props.readonly,\n },\n ]}\n onMousedown={ onMouseDown }\n onMouseup={ onMouseUp }\n onMouseleave={ (e: MouseEvent) => (isDragging.value && onMouseUp(e)) }\n onTouchstart={ onMouseDown }\n onTouchend={ onMouseUp }\n onMousemove={ onDragMove }\n onTouchmove={ onDragMove }\n onWheel={ (e: WheelEvent) => (props.scrollable && wheel(e)) }\n ref={ clockRef }\n >\n <div class=\"v-time-picker-clock__inner\" ref={ innerClockRef }>\n <div\n class={[\n {\n 'v-time-picker-clock__hand': true,\n 'v-time-picker-clock__hand--inner': isInner(props.modelValue as number),\n },\n textColorClasses.value,\n ]}\n style={[\n {\n transform: `rotate(${props.rotate + degreesPerUnit.value * (displayedValue.value - props.min)}deg) scaleY(${handScale(displayedValue.value)})`,\n },\n textColorStyles.value,\n ]}\n />\n\n {\n genChildren.value.map(value => {\n const isActive = value === displayedValue.value\n\n return (\n <div\n class={[\n {\n 'v-time-picker-clock__item': true,\n 'v-time-picker-clock__item--active': isActive,\n 'v-time-picker-clock__item--disabled': props.disabled || !isAllowed(value),\n },\n isActive && backgroundColorClasses.value,\n ]}\n style={[\n getTransform(value),\n isActive && backgroundColorStyles.value,\n ]}\n >\n <span>{ props.format(value) }</span>\n </div>\n )\n })\n }\n </div>\n </div>\n )\n })\n },\n})\n\nexport type VTimePickerClock = InstanceType<typeof VTimePickerClock>\n"],"mappings":"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"}
|
|
@@ -1,32 +1,27 @@
|
|
|
1
1
|
@import './_variables.scss'
|
|
2
2
|
|
|
3
3
|
// Theme
|
|
4
|
-
|
|
5
|
-
background:
|
|
6
|
-
|
|
7
|
-
.v-time-picker-clock__item--disabled
|
|
8
|
-
color: map-deep-get($material, 'buttons', 'disabled')
|
|
4
|
+
.v-time-picker-clock
|
|
5
|
+
background: rgb(var(--v-theme-background))
|
|
6
|
+
color: rgb(var(--v-theme-on-background))
|
|
9
7
|
|
|
10
|
-
&.v-time-picker-clock__item--active
|
|
11
|
-
color: map-deep-get($material-dark, 'buttons', 'disabled')
|
|
12
8
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
background-color: map-deep-get($material, 'picker', 'indeterminateTime')
|
|
9
|
+
&:after
|
|
10
|
+
color: rgb(var(--v-theme-primary))
|
|
16
11
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
.v-time-picker-clock__item--active
|
|
21
|
-
background-color: map-deep-get($material, 'picker', 'indeterminateTime')
|
|
12
|
+
.v-time-picker-clock__item--active
|
|
13
|
+
background-color: rgb(var(--v-theme-surface-variant))
|
|
14
|
+
color: rgb(var(--v-theme-on-surface-variant))
|
|
22
15
|
|
|
23
16
|
.v-time-picker-clock
|
|
24
|
-
|
|
17
|
+
margin: 0 auto
|
|
18
|
+
background: rgb(var(--v-theme-surface-light))
|
|
19
|
+
border-radius: 50%
|
|
25
20
|
position: relative
|
|
26
|
-
transition:
|
|
21
|
+
transition: none
|
|
27
22
|
user-select: none
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
height: 256px
|
|
24
|
+
width: 256px
|
|
30
25
|
flex: 1 0 auto
|
|
31
26
|
|
|
32
27
|
&__container
|
|
@@ -36,20 +31,8 @@
|
|
|
36
31
|
justify-content: center
|
|
37
32
|
padding: $time-picker-clock-padding
|
|
38
33
|
|
|
39
|
-
&__ampm
|
|
40
|
-
display: flex
|
|
41
|
-
flex-direction: row
|
|
42
|
-
justify-content: space-between
|
|
43
|
-
align-items: flex-end
|
|
44
|
-
position: absolute
|
|
45
|
-
width: 100%
|
|
46
|
-
height: 100%
|
|
47
|
-
top: 0
|
|
48
|
-
left: 0
|
|
49
|
-
margin: 0
|
|
50
|
-
padding: $time-picker-ampm-padding
|
|
51
|
-
|
|
52
34
|
&__hand
|
|
35
|
+
background-color: currentColor
|
|
53
36
|
height: $time-picker-clock-hand-height
|
|
54
37
|
width: $time-picker-clock-hand-width
|
|
55
38
|
bottom: 50%
|
|
@@ -81,14 +64,18 @@
|
|
|
81
64
|
top: 100%
|
|
82
65
|
left: 50%
|
|
83
66
|
border-radius: 100%
|
|
84
|
-
|
|
85
|
-
border-color: inherit
|
|
86
|
-
background-color: inherit
|
|
67
|
+
background-color: currentColor
|
|
87
68
|
transform: translate(-50%, -50%)
|
|
88
69
|
|
|
89
70
|
&--inner:after
|
|
90
71
|
height: $time-picker-clock-inner-hand-height
|
|
91
72
|
|
|
73
|
+
&--readonly
|
|
74
|
+
pointer-events: none
|
|
75
|
+
|
|
76
|
+
.v-time-picker-clock__item--disabled
|
|
77
|
+
opacity: var(--v-disabled-opacity)
|
|
78
|
+
|
|
92
79
|
.v-picker--full-width
|
|
93
80
|
.v-time-picker-clock__container
|
|
94
81
|
max-width: $time-picker-clock-max-width
|
|
@@ -132,7 +119,6 @@
|
|
|
132
119
|
width: $time-picker-indicator-size
|
|
133
120
|
|
|
134
121
|
&--active
|
|
135
|
-
color: map-get($shades, 'white')
|
|
136
122
|
cursor: default
|
|
137
123
|
z-index: 2
|
|
138
124
|
|
|
@@ -143,6 +129,3 @@
|
|
|
143
129
|
.v-time-picker-clock
|
|
144
130
|
&__container
|
|
145
131
|
flex-direction: row
|
|
146
|
-
|
|
147
|
-
&__ampm
|
|
148
|
-
flex-direction: column
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
.v-time-picker-controls {
|
|
2
|
+
display: flex;
|
|
3
|
+
align-items: center;
|
|
4
|
+
justify-content: center;
|
|
5
|
+
font-size: 0.875rem;
|
|
6
|
+
padding-top: 4px;
|
|
7
|
+
padding-bottom: 4px;
|
|
8
|
+
margin-bottom: 36px;
|
|
9
|
+
}
|
|
10
|
+
.v-time-picker-controls__text {
|
|
11
|
+
padding-bottom: 12px;
|
|
12
|
+
}
|
|
13
|
+
.v-time-picker-controls__time {
|
|
14
|
+
display: flex;
|
|
15
|
+
white-space: nowrap;
|
|
16
|
+
direction: ltr;
|
|
17
|
+
justify-content: center;
|
|
18
|
+
}
|
|
19
|
+
.v-time-picker-controls__time__btn.v-btn--density-default.v-btn {
|
|
20
|
+
width: 96px;
|
|
21
|
+
height: 80px;
|
|
22
|
+
font-size: 56px;
|
|
23
|
+
}
|
|
24
|
+
.v-time-picker-controls__time__btn.v-btn--density-default.v-btn__active {
|
|
25
|
+
background: rgb(var(--v-theme-primary));
|
|
26
|
+
}
|
|
27
|
+
.v-time-picker-controls__time__btn.v-btn--density-default.v-btn.v-time-picker-controls__time--with-ampm__btn {
|
|
28
|
+
width: 96px;
|
|
29
|
+
height: 80px;
|
|
30
|
+
}
|
|
31
|
+
.v-time-picker-controls__time__btn.v-btn--density-default.v-btn.v-time-picker-controls__time--with-seconds__btn {
|
|
32
|
+
width: 64px;
|
|
33
|
+
height: 80px;
|
|
34
|
+
font-size: 40px;
|
|
35
|
+
}
|
|
36
|
+
.v-time-picker-controls__time__separator {
|
|
37
|
+
font-size: 56px;
|
|
38
|
+
height: 80px;
|
|
39
|
+
width: 24px;
|
|
40
|
+
text-align: center;
|
|
41
|
+
}
|
|
42
|
+
.v-time-picker-controls__time__separator.v-time-picker-controls--with-seconds__time__separator {
|
|
43
|
+
height: 80px;
|
|
44
|
+
font-size: 56px;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.v-time-picker-controls__ampm {
|
|
48
|
+
margin-left: 12px;
|
|
49
|
+
align-self: flex-end;
|
|
50
|
+
display: flex;
|
|
51
|
+
flex-direction: column;
|
|
52
|
+
font-size: 18px;
|
|
53
|
+
text-transform: uppercase;
|
|
54
|
+
}
|
|
55
|
+
.v-time-picker-controls__ampm--readonly {
|
|
56
|
+
pointer-events: none;
|
|
57
|
+
}
|
|
58
|
+
.v-time-picker-controls__ampm--readonly .v-picker__title__btn.v-picker__title__btn--active {
|
|
59
|
+
opacity: 0.6;
|
|
60
|
+
}
|
|
61
|
+
.v-time-picker-controls__ampm__btn.v-btn.v-btn--density-default {
|
|
62
|
+
font-size: 18px;
|
|
63
|
+
padding: 0 8px;
|
|
64
|
+
min-width: 52px;
|
|
65
|
+
height: 40px;
|
|
66
|
+
}
|
|
67
|
+
.v-time-picker-controls__ampm__btn.v-btn.v-btn--density-default.v-time-picker-controls__ampm__am {
|
|
68
|
+
border-radius: 4px 4px 0 0;
|
|
69
|
+
border: 1px solid;
|
|
70
|
+
}
|
|
71
|
+
.v-time-picker-controls__ampm__btn.v-btn.v-btn--density-default.v-time-picker-controls__ampm__pm {
|
|
72
|
+
border-radius: 0 0 4px 4px;
|
|
73
|
+
border: 1px solid;
|
|
74
|
+
border-top: none;
|
|
75
|
+
}
|
|
76
|
+
.v-time-picker-controls__ampm__btn.v-btn.v-btn--density-default__active {
|
|
77
|
+
background: rgb(var(--v-theme-primary));
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.v-picker__title--landscape .v-time-picker-controls {
|
|
81
|
+
flex-direction: column;
|
|
82
|
+
justify-content: center;
|
|
83
|
+
height: 100%;
|
|
84
|
+
}
|
|
85
|
+
.v-picker__title--landscape .v-time-picker-controls__time {
|
|
86
|
+
text-align: right;
|
|
87
|
+
}
|
|
88
|
+
.v-picker__title--landscape .v-time-picker-controls__time .v-picker__title__btn,
|
|
89
|
+
.v-picker__title--landscape .v-time-picker-controls__time span {
|
|
90
|
+
height: 55px;
|
|
91
|
+
font-size: 55px;
|
|
92
|
+
}
|
|
93
|
+
.v-picker__title--landscape .v-time-picker-controls__ampm {
|
|
94
|
+
margin: 16px 0 0;
|
|
95
|
+
align-self: initial;
|
|
96
|
+
text-align: center;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.v-picker--time .v-picker__title--landscape {
|
|
100
|
+
padding: 0;
|
|
101
|
+
}
|
|
102
|
+
.v-picker--time .v-picker__title--landscape .v-time-picker-controls__time {
|
|
103
|
+
text-align: center;
|
|
104
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { createTextVNode as _createTextVNode, createVNode as _createVNode } from "vue";
|
|
2
|
+
// Styles
|
|
3
|
+
import "./VTimePickerControls.css";
|
|
4
|
+
|
|
5
|
+
// Components
|
|
6
|
+
import { VBtn } from "../../components/VBtn/index.mjs";
|
|
7
|
+
import { pad } from "../../components/VDatePicker/util/index.mjs"; // Composables
|
|
8
|
+
import { useLocale } from "../../composables/locale.mjs"; // Utilities
|
|
9
|
+
import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
|
|
10
|
+
import { SelectingTimes } from "./SelectingTimes.mjs";
|
|
11
|
+
export const makeVTimePickerControlsProps = propsFactory({
|
|
12
|
+
ampm: Boolean,
|
|
13
|
+
ampmReadonly: Boolean,
|
|
14
|
+
color: String,
|
|
15
|
+
disabled: Boolean,
|
|
16
|
+
hour: Number,
|
|
17
|
+
minute: Number,
|
|
18
|
+
second: Number,
|
|
19
|
+
period: String,
|
|
20
|
+
readonly: Boolean,
|
|
21
|
+
useSeconds: Boolean,
|
|
22
|
+
selecting: Number,
|
|
23
|
+
value: Number
|
|
24
|
+
}, 'VTimePickerControls');
|
|
25
|
+
export const VTimePickerControls = genericComponent()({
|
|
26
|
+
name: 'VTimePickerControls',
|
|
27
|
+
props: makeVTimePickerControlsProps(),
|
|
28
|
+
emits: {
|
|
29
|
+
'update:period': data => data,
|
|
30
|
+
'update:selecting': data => data
|
|
31
|
+
},
|
|
32
|
+
setup(props, _ref) {
|
|
33
|
+
let {
|
|
34
|
+
emit,
|
|
35
|
+
slots
|
|
36
|
+
} = _ref;
|
|
37
|
+
const {
|
|
38
|
+
t
|
|
39
|
+
} = useLocale();
|
|
40
|
+
useRender(() => {
|
|
41
|
+
let hour = props.hour;
|
|
42
|
+
if (props.ampm) {
|
|
43
|
+
hour = hour ? (hour - 1) % 12 + 1 : 12;
|
|
44
|
+
}
|
|
45
|
+
return _createVNode("div", {
|
|
46
|
+
"class": "v-time-picker-controls"
|
|
47
|
+
}, [_createVNode("div", {
|
|
48
|
+
"class": {
|
|
49
|
+
'v-time-picker-controls__time': true,
|
|
50
|
+
'v-time-picker-controls__time--with-seconds': props.useSeconds
|
|
51
|
+
}
|
|
52
|
+
}, [_createVNode(VBtn, {
|
|
53
|
+
"active": props.selecting === 1,
|
|
54
|
+
"color": props.selecting === 1 ? props.color : undefined,
|
|
55
|
+
"variant": "tonal",
|
|
56
|
+
"class": {
|
|
57
|
+
'v-time-picker-controls__time__btn': true,
|
|
58
|
+
'v-time-picker-controls__time--with-ampm__btn': props.ampm,
|
|
59
|
+
'v-time-picker-controls__time--with-seconds__btn': props.useSeconds
|
|
60
|
+
},
|
|
61
|
+
"text": props.hour == null ? '--' : pad(`${hour}`),
|
|
62
|
+
"onClick": () => emit('update:selecting', SelectingTimes.Hour)
|
|
63
|
+
}, null), _createVNode("span", {
|
|
64
|
+
"class": ['v-time-picker-controls__time__separator', {
|
|
65
|
+
'v-time-picker-controls--with-seconds__time__separator': props.useSeconds
|
|
66
|
+
}]
|
|
67
|
+
}, [_createTextVNode(":")]), _createVNode(VBtn, {
|
|
68
|
+
"active": props.selecting === 2,
|
|
69
|
+
"color": props.selecting === 2 ? props.color : undefined,
|
|
70
|
+
"class": {
|
|
71
|
+
'v-time-picker-controls__time__btn': true,
|
|
72
|
+
'v-time-picker-controls__time__btn__active': props.selecting === 2,
|
|
73
|
+
'v-time-picker-controls__time--with-ampm__btn': props.ampm,
|
|
74
|
+
'v-time-picker-controls__time--with-seconds__btn': props.useSeconds
|
|
75
|
+
},
|
|
76
|
+
"variant": "tonal",
|
|
77
|
+
"text": props.minute == null ? '--' : pad(props.minute),
|
|
78
|
+
"onClick": () => emit('update:selecting', SelectingTimes.Minute)
|
|
79
|
+
}, null), props.useSeconds && _createVNode("span", {
|
|
80
|
+
"class": ['v-time-picker-controls__time__separator', {
|
|
81
|
+
'v-time-picker-controls--with-seconds__time__separator': props.useSeconds
|
|
82
|
+
}],
|
|
83
|
+
"key": "secondsDivider"
|
|
84
|
+
}, [_createTextVNode(":")]), props.useSeconds && _createVNode(VBtn, {
|
|
85
|
+
"key": "secondsVal",
|
|
86
|
+
"variant": "tonal",
|
|
87
|
+
"onClick": () => emit('update:selecting', SelectingTimes.Second),
|
|
88
|
+
"class": {
|
|
89
|
+
'v-time-picker-controls__time__btn': true,
|
|
90
|
+
'v-time-picker-controls__time__btn__active': props.selecting === 3,
|
|
91
|
+
'v-time-picker-controls__time--with-seconds__btn': props.useSeconds
|
|
92
|
+
},
|
|
93
|
+
"text": props.second == null ? '--' : pad(props.second)
|
|
94
|
+
}, null), props.ampm && _createVNode("div", {
|
|
95
|
+
"class": ['v-time-picker-controls__ampm', {
|
|
96
|
+
'v-time-picker-controls__ampm--readonly': props.ampmReadonly
|
|
97
|
+
}]
|
|
98
|
+
}, [_createVNode(VBtn, {
|
|
99
|
+
"active": props.period === 'am',
|
|
100
|
+
"color": props.period === 'am' ? props.color : undefined,
|
|
101
|
+
"class": {
|
|
102
|
+
'v-time-picker-controls__ampm__am': true,
|
|
103
|
+
'v-time-picker-controls__ampm__btn': true,
|
|
104
|
+
'v-time-picker-controls__ampm__btn__active': props.period === 'am'
|
|
105
|
+
},
|
|
106
|
+
"text": t('$vuetify.timePicker.am'),
|
|
107
|
+
"variant": "tonal",
|
|
108
|
+
"onClick": () => props.period !== 'am' ? emit('update:period', 'am') : null
|
|
109
|
+
}, null), _createVNode(VBtn, {
|
|
110
|
+
"active": props.period === 'pm',
|
|
111
|
+
"color": props.period === 'pm' ? props.color : undefined,
|
|
112
|
+
"class": {
|
|
113
|
+
'v-time-picker-controls__ampm__pm': true,
|
|
114
|
+
'v-time-picker-controls__ampm__btn': true,
|
|
115
|
+
'v-time-picker-controls__ampm__btn__active': props.period === 'pm'
|
|
116
|
+
},
|
|
117
|
+
"text": t('$vuetify.timePicker.pm'),
|
|
118
|
+
"variant": "tonal",
|
|
119
|
+
"onClick": () => props.period !== 'pm' ? emit('update:period', 'pm') : null
|
|
120
|
+
}, null)])])]);
|
|
121
|
+
});
|
|
122
|
+
return {};
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
//# sourceMappingURL=VTimePickerControls.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VTimePickerControls.mjs","names":["VBtn","pad","useLocale","genericComponent","propsFactory","useRender","SelectingTimes","makeVTimePickerControlsProps","ampm","Boolean","ampmReadonly","color","String","disabled","hour","Number","minute","second","period","readonly","useSeconds","selecting","value","VTimePickerControls","name","props","emits","data","setup","_ref","emit","slots","t","_createVNode","undefined","onClick","Hour","_createTextVNode","Minute","Second"],"sources":["../../../src/labs/VTimePicker/VTimePickerControls.tsx"],"sourcesContent":["// Styles\nimport './VTimePickerControls.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { pad } from '@/components/VDatePicker/util'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport { SelectingTimes } from './SelectingTimes'\ntype Period = 'am' | 'pm'\n\nexport const makeVTimePickerControlsProps = propsFactory({\n ampm: Boolean,\n ampmReadonly: Boolean,\n color: String,\n disabled: Boolean,\n hour: Number,\n minute: Number,\n second: Number,\n period: String,\n readonly: Boolean,\n useSeconds: Boolean,\n selecting: Number,\n value: Number,\n}, 'VTimePickerControls')\n\nexport const VTimePickerControls = genericComponent()({\n name: 'VTimePickerControls',\n\n props: makeVTimePickerControlsProps(),\n\n emits: {\n 'update:period': (data: Period) => data,\n 'update:selecting': (data: 1 | 2 | 3) => data,\n },\n\n setup (props, { emit, slots }) {\n const { t } = useLocale()\n\n useRender(() => {\n let hour = props.hour\n if (props.ampm) {\n hour = hour ? ((hour - 1) % 12 + 1) : 12\n }\n return (\n <div class=\"v-time-picker-controls\">\n <div\n class={{\n 'v-time-picker-controls__time': true,\n 'v-time-picker-controls__time--with-seconds': props.useSeconds,\n }}\n >\n <VBtn\n active={ props.selecting === 1 }\n color={ props.selecting === 1 ? props.color : undefined }\n variant=\"tonal\"\n class={{\n 'v-time-picker-controls__time__btn': true,\n 'v-time-picker-controls__time--with-ampm__btn': props.ampm,\n 'v-time-picker-controls__time--with-seconds__btn': props.useSeconds,\n }}\n text={ props.hour == null ? '--' : pad(`${hour}`) }\n onClick={ () => emit('update:selecting', SelectingTimes.Hour) }\n />\n\n <span\n class={[\n 'v-time-picker-controls__time__separator',\n { 'v-time-picker-controls--with-seconds__time__separator': props.useSeconds },\n ]}\n >:</span>\n\n <VBtn\n active={ props.selecting === 2 }\n color={ props.selecting === 2 ? props.color : undefined }\n class={{\n 'v-time-picker-controls__time__btn': true,\n 'v-time-picker-controls__time__btn__active': props.selecting === 2,\n 'v-time-picker-controls__time--with-ampm__btn': props.ampm,\n 'v-time-picker-controls__time--with-seconds__btn': props.useSeconds,\n }}\n variant=\"tonal\"\n text={ props.minute == null ? '--' : pad(props.minute) }\n onClick={ () => emit('update:selecting', SelectingTimes.Minute) }\n />\n\n {\n props.useSeconds && (\n <span\n class={[\n 'v-time-picker-controls__time__separator',\n { 'v-time-picker-controls--with-seconds__time__separator': props.useSeconds },\n ]}\n key=\"secondsDivider\"\n >:</span>\n )\n }\n\n {\n props.useSeconds && (\n <VBtn\n key=\"secondsVal\"\n variant=\"tonal\"\n onClick={ () => emit('update:selecting', SelectingTimes.Second) }\n class={{\n 'v-time-picker-controls__time__btn': true,\n 'v-time-picker-controls__time__btn__active': props.selecting === 3,\n 'v-time-picker-controls__time--with-seconds__btn': props.useSeconds,\n }}\n text={ props.second == null ? '--' : pad(props.second) }\n />\n )\n }\n\n {\n props.ampm && (\n <div\n class={['v-time-picker-controls__ampm', {\n 'v-time-picker-controls__ampm--readonly': props.ampmReadonly,\n }]}\n >\n <VBtn\n active={ props.period === 'am' }\n color={ props.period === 'am' ? props.color : undefined }\n class={{\n 'v-time-picker-controls__ampm__am': true,\n 'v-time-picker-controls__ampm__btn': true,\n 'v-time-picker-controls__ampm__btn__active': props.period === 'am',\n }}\n text={ t('$vuetify.timePicker.am') }\n variant=\"tonal\"\n onClick={ () => props.period !== 'am' ? emit('update:period', 'am') : null }\n />\n\n <VBtn\n active={ props.period === 'pm' }\n color={ props.period === 'pm' ? props.color : undefined }\n class={{\n 'v-time-picker-controls__ampm__pm': true,\n 'v-time-picker-controls__ampm__btn': true,\n 'v-time-picker-controls__ampm__btn__active': props.period === 'pm',\n }}\n text={ t('$vuetify.timePicker.pm') }\n variant=\"tonal\"\n onClick={ () => props.period !== 'pm' ? emit('update:period', 'pm') : null }\n />\n </div>\n )\n }\n </div>\n </div>\n )\n })\n\n return {}\n },\n\n})\n\nexport type VTimePickerControls = InstanceType<typeof VTimePickerControls>\n"],"mappings":"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"}
|