@vuu-ui/vuu-ui-controls 0.13.33 → 0.13.35
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/cjs/time-input/MaskedInput.js +139 -196
- package/cjs/time-input/MaskedInput.js.map +1 -1
- package/cjs/time-input/TimeInput.css.js +1 -1
- package/cjs/time-input/TimeInput.js +5 -3
- package/cjs/time-input/TimeInput.js.map +1 -1
- package/cjs/time-input/useTimeInput.js +60 -79
- package/cjs/time-input/useTimeInput.js.map +1 -1
- package/cjs/vuu-time-picker/VuuTimePicker.js +6 -10
- package/cjs/vuu-time-picker/VuuTimePicker.js.map +1 -1
- package/esm/time-input/MaskedInput.js +140 -197
- package/esm/time-input/MaskedInput.js.map +1 -1
- package/esm/time-input/TimeInput.css.js +1 -1
- package/esm/time-input/TimeInput.js +5 -3
- package/esm/time-input/TimeInput.js.map +1 -1
- package/esm/time-input/useTimeInput.js +61 -80
- package/esm/time-input/useTimeInput.js.map +1 -1
- package/esm/vuu-time-picker/VuuTimePicker.js +6 -10
- package/esm/vuu-time-picker/VuuTimePicker.js.map +1 -1
- package/package.json +10 -10
- package/types/time-input/MaskedInput.d.ts +22 -14
- package/types/time-input/useTimeInput.d.ts +8 -11
- package/types/vuu-time-picker/VuuTimePicker.d.ts +4 -4
|
@@ -12,66 +12,36 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
|
|
|
12
12
|
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
13
13
|
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
14
14
|
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
15
|
-
var _input,
|
|
15
|
+
var _controlled, _input, _isFocused, _isIncrementalChange, _selectionStart, _selectionEnd, _value, _unitSelected, _halfUnitSelected;
|
|
16
16
|
const NullSelection = { end: null, start: null };
|
|
17
17
|
const FullSelection = { end: 0, start: 8 };
|
|
18
18
|
const CursorAtEnd = { end: 8, start: 8 };
|
|
19
|
-
const incrementTime = (value, unit) => {
|
|
20
|
-
if (value === "hh" || value == "mm" || value === "ss") {
|
|
21
|
-
return "00";
|
|
22
|
-
} else if (/\d\d/.test(value)) {
|
|
23
|
-
const num = parseInt(value);
|
|
24
|
-
if (unit === "hours" && num < 23) {
|
|
25
|
-
return `${num + 1}`.padStart(2, "0").slice(-2);
|
|
26
|
-
} else if (unit === "hours" && num === 23) {
|
|
27
|
-
return "00";
|
|
28
|
-
} else if (num < 59) {
|
|
29
|
-
return `${num + 1}`.padStart(2, "0").slice(-2);
|
|
30
|
-
} else if (num === 59) {
|
|
31
|
-
return "00";
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return value;
|
|
35
|
-
};
|
|
36
|
-
const decrementTime = (value, unit) => {
|
|
37
|
-
if (value === "hh" || value == "mm" || value === "ss") {
|
|
38
|
-
return "00";
|
|
39
|
-
} else if (/\d\d/.test(value)) {
|
|
40
|
-
const num = parseInt(value);
|
|
41
|
-
if (unit === "hours" && num > 0) {
|
|
42
|
-
return `${num - 1}`.padStart(2, "0").slice(-2);
|
|
43
|
-
} else if (unit === "hours" && num === 0) {
|
|
44
|
-
return "23";
|
|
45
|
-
} else if (num > 0) {
|
|
46
|
-
return `${num - 1}`.padStart(2, "0").slice(-2);
|
|
47
|
-
} else if (num === 0) {
|
|
48
|
-
return "59";
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return value;
|
|
52
|
-
};
|
|
53
19
|
class MaskedInput extends vuuUtils.EventEmitter {
|
|
54
|
-
constructor(
|
|
20
|
+
constructor(defaultValue, inputEl = null) {
|
|
55
21
|
super();
|
|
56
|
-
__privateAdd(this,
|
|
57
|
-
__privateAdd(this,
|
|
22
|
+
__privateAdd(this, _controlled, false);
|
|
23
|
+
__privateAdd(this, _input, null);
|
|
24
|
+
__privateAdd(this, _isFocused, false);
|
|
25
|
+
__privateAdd(this, _isIncrementalChange, false);
|
|
58
26
|
__privateAdd(this, _selectionStart, -1);
|
|
59
27
|
__privateAdd(this, _selectionEnd, -1);
|
|
60
|
-
__privateAdd(this, _showTemplateWhileEditing, true);
|
|
61
28
|
__privateAdd(this, _value);
|
|
62
29
|
__privateAdd(this, _unitSelected);
|
|
63
30
|
__privateAdd(this, _halfUnitSelected);
|
|
31
|
+
/**
|
|
32
|
+
* The change event is fired programatically. This will only be handled
|
|
33
|
+
* by a native event handler ( not a React handler). We handle this event
|
|
34
|
+
* and convert to a React (Synthetic) event.
|
|
35
|
+
*/
|
|
36
|
+
__publicField(this, "emitSyntheticChangeEvent", (e) => {
|
|
37
|
+
const syntheticEvent = vuuUtils.createSyntheticEvent(
|
|
38
|
+
e
|
|
39
|
+
);
|
|
40
|
+
this.emit("change", syntheticEvent);
|
|
41
|
+
});
|
|
64
42
|
__publicField(this, "focus", () => {
|
|
65
|
-
console.log("maskefinput focus");
|
|
66
43
|
if (__privateGet(this, _input)) {
|
|
67
|
-
|
|
68
|
-
if (__privateGet(this, _showTemplateWhileEditing)) {
|
|
69
|
-
this.value = __privateGet(this, _input).value = __privateGet(this, _pattern);
|
|
70
|
-
} else {
|
|
71
|
-
this.value = __privateGet(this, _input).value = "00:00:00";
|
|
72
|
-
this.emit("change", this.value);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
44
|
+
__privateSet(this, _isFocused, true);
|
|
75
45
|
requestAnimationFrame(() => {
|
|
76
46
|
this.select("hours");
|
|
77
47
|
setTimeout(() => {
|
|
@@ -83,19 +53,22 @@ class MaskedInput extends vuuUtils.EventEmitter {
|
|
|
83
53
|
}
|
|
84
54
|
});
|
|
85
55
|
__publicField(this, "blur", () => {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
this.emit("change", this.value);
|
|
89
|
-
} else {
|
|
90
|
-
this.removeSelection();
|
|
91
|
-
}
|
|
56
|
+
this.removeSelection();
|
|
57
|
+
__privateSet(this, _isFocused, false);
|
|
92
58
|
});
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
59
|
+
if (inputEl) {
|
|
60
|
+
this.input = inputEl;
|
|
61
|
+
}
|
|
62
|
+
__privateSet(this, _value, defaultValue ?? vuuUtils.zeroTime);
|
|
96
63
|
}
|
|
97
64
|
set input(el) {
|
|
65
|
+
if (__privateGet(this, _input)) {
|
|
66
|
+
throw Error(
|
|
67
|
+
"MaskedInput cannot be reused, create a new instance for a new input"
|
|
68
|
+
);
|
|
69
|
+
}
|
|
98
70
|
__privateSet(this, _input, el);
|
|
71
|
+
el.addEventListener("change", this.emitSyntheticChangeEvent);
|
|
99
72
|
}
|
|
100
73
|
get cursorPos() {
|
|
101
74
|
return this.selectionStart;
|
|
@@ -107,6 +80,9 @@ class MaskedInput extends vuuUtils.EventEmitter {
|
|
|
107
80
|
__privateGet(this, _input).setSelectionRange(value, value);
|
|
108
81
|
}
|
|
109
82
|
}
|
|
83
|
+
get isFocused() {
|
|
84
|
+
return __privateGet(this, _isFocused);
|
|
85
|
+
}
|
|
110
86
|
get selectionStart() {
|
|
111
87
|
return __privateGet(this, _selectionStart);
|
|
112
88
|
}
|
|
@@ -119,63 +95,75 @@ class MaskedInput extends vuuUtils.EventEmitter {
|
|
|
119
95
|
set selectionEnd(value) {
|
|
120
96
|
__privateSet(this, _selectionEnd, value);
|
|
121
97
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
if (__privateGet(this, _input)) {
|
|
127
|
-
const newValue = `${value}:${this.minutes}:${this.seconds}`;
|
|
128
|
-
__privateSet(this, _value, newValue);
|
|
129
|
-
__privateGet(this, _input).value = __privateGet(this, _value);
|
|
130
|
-
this.emit("change", newValue);
|
|
98
|
+
setValue(value) {
|
|
99
|
+
if (!__privateGet(this, _controlled)) {
|
|
100
|
+
__privateSet(this, _isIncrementalChange, false);
|
|
101
|
+
__privateSet(this, _value, value);
|
|
131
102
|
}
|
|
132
|
-
}
|
|
133
|
-
get minutes() {
|
|
134
|
-
return __privateGet(this, _value).slice(3, 5);
|
|
135
|
-
}
|
|
136
|
-
set minutes(value) {
|
|
137
103
|
if (__privateGet(this, _input)) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
104
|
+
__privateGet(this, _input).value = value;
|
|
105
|
+
__privateGet(this, _input).dispatchEvent(
|
|
106
|
+
new Event("change", {
|
|
107
|
+
bubbles: true,
|
|
108
|
+
composed: true
|
|
109
|
+
})
|
|
110
|
+
);
|
|
142
111
|
}
|
|
143
112
|
}
|
|
144
|
-
|
|
145
|
-
|
|
113
|
+
setUnitValue(unit, value) {
|
|
114
|
+
const newTimeString = vuuUtils.updateTimeString(__privateGet(this, _value), unit, value);
|
|
115
|
+
this.setValue(newTimeString);
|
|
146
116
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
117
|
+
getUnitValue(unit) {
|
|
118
|
+
switch (unit) {
|
|
119
|
+
case "hours":
|
|
120
|
+
return __privateGet(this, _value).slice(0, 2);
|
|
121
|
+
case "minutes":
|
|
122
|
+
return __privateGet(this, _value).slice(3, 5);
|
|
123
|
+
case "seconds":
|
|
124
|
+
return __privateGet(this, _value).slice(6, 8);
|
|
125
|
+
default:
|
|
126
|
+
throw Error(`[MaskedInout] invalue unit ${unit}`);
|
|
153
127
|
}
|
|
154
128
|
}
|
|
155
129
|
get value() {
|
|
156
130
|
return __privateGet(this, _value);
|
|
157
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Setting the value this way invokes 'controlled' mode
|
|
134
|
+
*/
|
|
158
135
|
set value(value) {
|
|
136
|
+
__privateSet(this, _controlled, true);
|
|
159
137
|
__privateSet(this, _value, value);
|
|
138
|
+
if (this.isFocused) {
|
|
139
|
+
const isIncremental = __privateGet(this, _isIncrementalChange);
|
|
140
|
+
__privateSet(this, _isIncrementalChange, false);
|
|
141
|
+
requestAnimationFrame(() => {
|
|
142
|
+
if (isIncremental) {
|
|
143
|
+
this.restoreSelection();
|
|
144
|
+
} else {
|
|
145
|
+
this.advanceSelection();
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
160
149
|
}
|
|
161
150
|
clear(unit) {
|
|
162
151
|
if (__privateGet(this, _input)) {
|
|
163
|
-
|
|
164
|
-
const pattern = __privateGet(this, _showTemplateWhileEditing) ? __privateGet(this, _pattern) : "00:00:00";
|
|
152
|
+
let newValue = __privateGet(this, _value);
|
|
165
153
|
if (unit === "hours") {
|
|
166
|
-
|
|
154
|
+
newValue = vuuUtils.zeroTimeUnit.concat(__privateGet(this, _value).slice(2));
|
|
167
155
|
} else if (unit === "minutes") {
|
|
168
|
-
|
|
156
|
+
newValue = __privateGet(this, _value).slice(0, 3).concat(vuuUtils.zeroTimeUnit).concat(__privateGet(this, _value).slice(5));
|
|
169
157
|
} else if (unit === "seconds") {
|
|
170
|
-
|
|
158
|
+
newValue = __privateGet(this, _value).slice(0, 6).concat(vuuUtils.zeroTimeUnit);
|
|
159
|
+
}
|
|
160
|
+
if (newValue !== __privateGet(this, _value)) {
|
|
161
|
+
this.setValue(newValue);
|
|
171
162
|
}
|
|
172
|
-
__privateGet(this, _input).value = this.value;
|
|
173
|
-
this.emit("change", this.value);
|
|
174
163
|
}
|
|
175
164
|
}
|
|
176
165
|
select(unit, halfUnit = false) {
|
|
177
166
|
if (__privateGet(this, _input)) {
|
|
178
|
-
console.log(`select ${unit}`);
|
|
179
167
|
const offset = halfUnit ? 1 : 0;
|
|
180
168
|
if (unit === "hours") {
|
|
181
169
|
this.selectionStart = __privateGet(this, _input).selectionStart = 0 + offset;
|
|
@@ -202,8 +190,25 @@ class MaskedInput extends vuuUtils.EventEmitter {
|
|
|
202
190
|
__privateSet(this, _unitSelected, void 0);
|
|
203
191
|
__privateSet(this, _halfUnitSelected, void 0);
|
|
204
192
|
}
|
|
193
|
+
restoreSelection() {
|
|
194
|
+
if (__privateGet(this, _unitSelected)) {
|
|
195
|
+
this.select(__privateGet(this, _unitSelected));
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
advanceSelection() {
|
|
199
|
+
if (__privateGet(this, _unitSelected)) {
|
|
200
|
+
this.select(__privateGet(this, _unitSelected), true);
|
|
201
|
+
} else if (__privateGet(this, _halfUnitSelected) === "hours") {
|
|
202
|
+
this.select("minutes");
|
|
203
|
+
} else if (__privateGet(this, _halfUnitSelected) === "minutes") {
|
|
204
|
+
this.select("seconds");
|
|
205
|
+
} else if (__privateGet(this, _halfUnitSelected) === "seconds") {
|
|
206
|
+
this.select("seconds");
|
|
207
|
+
} else {
|
|
208
|
+
throw Error("unreachable code, in theory");
|
|
209
|
+
}
|
|
210
|
+
}
|
|
205
211
|
moveFocus(direction) {
|
|
206
|
-
console.log(`move focus ${direction} selected ${__privateGet(this, _unitSelected)}`);
|
|
207
212
|
if (direction === "right") {
|
|
208
213
|
if (__privateGet(this, _unitSelected) === "hours" || __privateGet(this, _halfUnitSelected) === "hours") {
|
|
209
214
|
this.select("minutes");
|
|
@@ -217,9 +222,7 @@ class MaskedInput extends vuuUtils.EventEmitter {
|
|
|
217
222
|
this.select("hours");
|
|
218
223
|
} else {
|
|
219
224
|
const selection = this.getSelection();
|
|
220
|
-
console.log({ selection });
|
|
221
225
|
if (selection === CursorAtEnd) {
|
|
222
|
-
console.log("cursor at end");
|
|
223
226
|
this.select("seconds");
|
|
224
227
|
}
|
|
225
228
|
}
|
|
@@ -230,80 +233,42 @@ class MaskedInput extends vuuUtils.EventEmitter {
|
|
|
230
233
|
__privateSet(this, _unitSelected, void 0);
|
|
231
234
|
__privateSet(this, _value, value);
|
|
232
235
|
}
|
|
236
|
+
getUnitAtCursorPos(cursorPos = this.cursorPos) {
|
|
237
|
+
if (cursorPos >= 0 && cursorPos < 3) {
|
|
238
|
+
return "hours";
|
|
239
|
+
} else if (cursorPos < 6) {
|
|
240
|
+
return "minutes";
|
|
241
|
+
} else if (cursorPos <= 8) {
|
|
242
|
+
return "seconds";
|
|
243
|
+
} else {
|
|
244
|
+
throw Error(
|
|
245
|
+
`[MaskedInput] getUnitAtCursorPos invalid cursor position ${cursorPos}`
|
|
246
|
+
);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
233
249
|
incrementValue() {
|
|
234
|
-
const { cursorPos } = this;
|
|
235
250
|
if (__privateGet(this, _input)) {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
}
|
|
243
|
-
} else if (cursorPos >= 3 && cursorPos < 6) {
|
|
244
|
-
const value = this.minutes;
|
|
245
|
-
const nextValue = incrementTime(value, "hours");
|
|
246
|
-
if (nextValue !== value) {
|
|
247
|
-
this.minutes = nextValue;
|
|
248
|
-
this.select("minutes");
|
|
249
|
-
}
|
|
250
|
-
} else if (cursorPos >= 5 && cursorPos <= 8) {
|
|
251
|
-
const value = this.seconds;
|
|
252
|
-
const nextValue = incrementTime(value, "seconds");
|
|
253
|
-
if (nextValue !== value) {
|
|
254
|
-
this.seconds = nextValue;
|
|
255
|
-
this.select("seconds");
|
|
256
|
-
}
|
|
257
|
-
}
|
|
251
|
+
__privateSet(this, _isIncrementalChange, true);
|
|
252
|
+
const unit = this.getUnitAtCursorPos();
|
|
253
|
+
const unitValue = this.getUnitValue(unit);
|
|
254
|
+
const newUnitValue = vuuUtils.incrementTimeUnitValue(unit, unitValue);
|
|
255
|
+
this.setUnitValue(unit, newUnitValue);
|
|
256
|
+
this.select(unit);
|
|
258
257
|
}
|
|
259
258
|
}
|
|
260
259
|
decrementValue() {
|
|
261
|
-
const { cursorPos } = this;
|
|
262
260
|
if (__privateGet(this, _input)) {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
}
|
|
270
|
-
} else if (__privateGet(this, _unitSelected)) {
|
|
271
|
-
const value = this[__privateGet(this, _unitSelected)];
|
|
272
|
-
const nextValue = decrementTime(value, __privateGet(this, _unitSelected));
|
|
273
|
-
if (nextValue !== value) {
|
|
274
|
-
this[__privateGet(this, _unitSelected)] = nextValue;
|
|
275
|
-
this.select(__privateGet(this, _unitSelected));
|
|
276
|
-
}
|
|
277
|
-
} else {
|
|
278
|
-
if (cursorPos >= 0 && cursorPos <= 2) {
|
|
279
|
-
const value = this.hours;
|
|
280
|
-
const nextValue = decrementTime(value, "hours");
|
|
281
|
-
if (nextValue !== value) {
|
|
282
|
-
this.hours = nextValue;
|
|
283
|
-
this.select("hours");
|
|
284
|
-
}
|
|
285
|
-
} else if (cursorPos >= 3 && cursorPos < 6) {
|
|
286
|
-
const value = this.minutes;
|
|
287
|
-
const nextValue = decrementTime(value, "hours");
|
|
288
|
-
if (nextValue !== value) {
|
|
289
|
-
this.minutes = nextValue;
|
|
290
|
-
this.select("minutes");
|
|
291
|
-
}
|
|
292
|
-
} else if (cursorPos >= 5 && cursorPos <= 8) {
|
|
293
|
-
const value = this.seconds;
|
|
294
|
-
const nextValue = decrementTime(value, "seconds");
|
|
295
|
-
if (nextValue !== value) {
|
|
296
|
-
this.seconds = nextValue;
|
|
297
|
-
this.select("seconds");
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
}
|
|
261
|
+
__privateSet(this, _isIncrementalChange, true);
|
|
262
|
+
const unit = this.getUnitAtCursorPos();
|
|
263
|
+
const unitValue = this.getUnitValue(unit);
|
|
264
|
+
const newUnitValue = vuuUtils.decrementTimeUnitValue(unit, unitValue);
|
|
265
|
+
this.setUnitValue(unit, newUnitValue);
|
|
266
|
+
this.select(unit);
|
|
301
267
|
}
|
|
302
268
|
}
|
|
303
269
|
backspace() {
|
|
304
270
|
if (__privateGet(this, _input)) {
|
|
305
|
-
const { cursorPos
|
|
306
|
-
const pattern = __privateGet(this, _showTemplateWhileEditing) ? __privateGet(this, _pattern) : "00:00:00";
|
|
271
|
+
const { cursorPos } = this;
|
|
307
272
|
if (__privateGet(this, _unitSelected) === "seconds") {
|
|
308
273
|
this.clear("seconds");
|
|
309
274
|
this.select("minutes");
|
|
@@ -314,14 +279,12 @@ class MaskedInput extends vuuUtils.EventEmitter {
|
|
|
314
279
|
this.clear("hours");
|
|
315
280
|
this.select("hours");
|
|
316
281
|
} else {
|
|
317
|
-
console.log("NEVER HAPPENS");
|
|
318
282
|
if (cursorPos > 0) {
|
|
319
283
|
const offset = this.selectionStart === 6 || this.selectionStart === 3 ? 2 : 1;
|
|
320
|
-
|
|
284
|
+
const newValue = __privateGet(this, _value).slice(0, cursorPos - offset).concat(vuuUtils.zeroTime.slice(cursorPos - offset, cursorPos)).concat(__privateGet(this, _value).slice(cursorPos));
|
|
321
285
|
this.selectionStart -= offset;
|
|
322
286
|
this.selectionEnd -= offset;
|
|
323
|
-
|
|
324
|
-
this.emit("change", this.value);
|
|
287
|
+
this.setValue(newValue);
|
|
325
288
|
requestAnimationFrame(() => {
|
|
326
289
|
__privateGet(this, _input)?.setSelectionRange(
|
|
327
290
|
__privateGet(this, _selectionStart),
|
|
@@ -336,44 +299,22 @@ class MaskedInput extends vuuUtils.EventEmitter {
|
|
|
336
299
|
if (__privateGet(this, _input)) {
|
|
337
300
|
const { cursorPos } = this;
|
|
338
301
|
if (cursorPos < 8) {
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
if (
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
this.select("seconds");
|
|
347
|
-
} else if (__privateGet(this, _halfUnitSelected) === "seconds") {
|
|
348
|
-
this.select("seconds");
|
|
302
|
+
const newValue = __privateGet(this, _value).split("").toSpliced(cursorPos, 1, key).join("");
|
|
303
|
+
this.setValue(newValue);
|
|
304
|
+
if (!vuuUtils.isValidTimeString(newValue)) {
|
|
305
|
+
if (__privateGet(this, _unitSelected)) {
|
|
306
|
+
this.select(__privateGet(this, _unitSelected));
|
|
307
|
+
__privateGet(this, _input).classList.add("invalid");
|
|
308
|
+
}
|
|
349
309
|
} else {
|
|
350
|
-
|
|
351
|
-
if (this
|
|
352
|
-
this.
|
|
353
|
-
this.selectionEnd += 2;
|
|
354
|
-
} else {
|
|
355
|
-
this.selectionStart += 1;
|
|
356
|
-
this.selectionEnd += 1;
|
|
310
|
+
__privateGet(this, _input).classList.remove("invalid");
|
|
311
|
+
if (!__privateGet(this, _controlled)) {
|
|
312
|
+
this.advanceSelection();
|
|
357
313
|
}
|
|
358
|
-
requestAnimationFrame(() => {
|
|
359
|
-
__privateGet(this, _input)?.setSelectionRange(
|
|
360
|
-
__privateGet(this, _selectionStart),
|
|
361
|
-
this.selectionEnd
|
|
362
|
-
);
|
|
363
|
-
});
|
|
364
314
|
}
|
|
365
315
|
}
|
|
366
316
|
}
|
|
367
317
|
}
|
|
368
|
-
getUnitAtCursorPos(cursorPos) {
|
|
369
|
-
if (cursorPos < 3) {
|
|
370
|
-
return "hours";
|
|
371
|
-
} else if (cursorPos < 6) {
|
|
372
|
-
return "minutes";
|
|
373
|
-
} else {
|
|
374
|
-
return "seconds";
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
318
|
getSelection() {
|
|
378
319
|
if (__privateGet(this, _input)) {
|
|
379
320
|
const { selectionEnd, selectionStart } = __privateGet(this, _input);
|
|
@@ -395,6 +336,7 @@ class MaskedInput extends vuuUtils.EventEmitter {
|
|
|
395
336
|
}
|
|
396
337
|
click() {
|
|
397
338
|
if (__privateGet(this, _input)) {
|
|
339
|
+
__privateSet(this, _isFocused, true);
|
|
398
340
|
const selection = this.getSelection();
|
|
399
341
|
if (selection === NullSelection) {
|
|
400
342
|
this.select("hours");
|
|
@@ -419,11 +361,12 @@ class MaskedInput extends vuuUtils.EventEmitter {
|
|
|
419
361
|
}
|
|
420
362
|
}
|
|
421
363
|
}
|
|
364
|
+
_controlled = new WeakMap();
|
|
422
365
|
_input = new WeakMap();
|
|
423
|
-
|
|
366
|
+
_isFocused = new WeakMap();
|
|
367
|
+
_isIncrementalChange = new WeakMap();
|
|
424
368
|
_selectionStart = new WeakMap();
|
|
425
369
|
_selectionEnd = new WeakMap();
|
|
426
|
-
_showTemplateWhileEditing = new WeakMap();
|
|
427
370
|
_value = new WeakMap();
|
|
428
371
|
_unitSelected = new WeakMap();
|
|
429
372
|
_halfUnitSelected = new WeakMap();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MaskedInput.js","sources":["../../../../packages/vuu-ui-controls/src/time-input/MaskedInput.ts"],"sourcesContent":["import { EventEmitter, TimeString } from \"@vuu-ui/vuu-utils\";\n\ntype TimeUnit = \"hours\" | \"minutes\" | \"seconds\";\nexport type Digit = \"0\" | \"1\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"7\" | \"8\" | \"9\";\n\ntype NullSelection = {\n end: null;\n start: null;\n};\ntype Selection =\n | {\n end: number;\n start: number;\n }\n | NullSelection;\n\nconst NullSelection: NullSelection = { end: null, start: null };\nconst FullSelection: Selection = { end: 0, start: 8 };\nconst CursorAtEnd: Selection = { end: 8, start: 8 };\n\nconst incrementTime = (value: string, unit: TimeUnit) => {\n if (value === \"hh\" || value == \"mm\" || value === \"ss\") {\n return \"00\";\n } else if (/\\d\\d/.test(value)) {\n const num = parseInt(value);\n if (unit === \"hours\" && num < 23) {\n return `${num + 1}`.padStart(2, \"0\").slice(-2);\n } else if (unit === \"hours\" && num === 23) {\n return \"00\";\n } else if (num < 59) {\n return `${num + 1}`.padStart(2, \"0\").slice(-2);\n } else if (num === 59) {\n return \"00\";\n }\n }\n return value;\n};\n\nconst decrementTime = (value: string, unit: TimeUnit) => {\n if (value === \"hh\" || value == \"mm\" || value === \"ss\") {\n return \"00\";\n } else if (/\\d\\d/.test(value)) {\n const num = parseInt(value);\n if (unit === \"hours\" && num > 0) {\n return `${num - 1}`.padStart(2, \"0\").slice(-2);\n } else if (unit === \"hours\" && num === 0) {\n return \"23\";\n } else if (num > 0) {\n return `${num - 1}`.padStart(2, \"0\").slice(-2);\n } else if (num === 0) {\n return \"59\";\n }\n }\n return value;\n};\n\nexport type MaskedInputEvents = {\n change: (value: TimeString) => void;\n};\n\nexport class MaskedInput extends EventEmitter<MaskedInputEvents> {\n #input: HTMLInputElement | null;\n #pattern = \"hh:mm:ss\";\n #selectionStart = -1;\n #selectionEnd = -1;\n #showTemplateWhileEditing = true;\n #value;\n #unitSelected?: TimeUnit;\n #halfUnitSelected?: TimeUnit;\n\n constructor(\n value = \"\",\n inputEl: HTMLInputElement | null = null,\n showTemplateWhileEditing = true,\n ) {\n super();\n this.#input = inputEl;\n this.#showTemplateWhileEditing = showTemplateWhileEditing;\n this.#value = value;\n }\n\n set input(el: HTMLInputElement) {\n this.#input = el;\n }\n\n get cursorPos() {\n return this.selectionStart;\n }\n set cursorPos(value: number) {\n this.selectionStart = value;\n this.selectionEnd = value;\n if (this.#input) {\n this.#input.setSelectionRange(value, value);\n }\n }\n\n get selectionStart() {\n return this.#selectionStart;\n }\n set selectionStart(value: number) {\n this.#selectionStart = value;\n }\n\n get selectionEnd() {\n return this.#selectionEnd;\n }\n set selectionEnd(value: number) {\n this.#selectionEnd = value;\n }\n\n get hours() {\n return this.#value.slice(0, 2);\n }\n\n set hours(value: string) {\n if (this.#input) {\n const newValue = `${value}:${this.minutes}:${this.seconds}`;\n this.#value = newValue;\n this.#input.value = this.#value;\n this.emit(\"change\", newValue as TimeString);\n }\n }\n\n get minutes() {\n return this.#value.slice(3, 5);\n }\n\n set minutes(value: string) {\n if (this.#input) {\n const newValue = `${this.hours}:${value}:${this.seconds}`;\n this.#value = newValue;\n this.#input.value = this.#value;\n this.emit(\"change\", newValue as TimeString);\n }\n }\n\n get seconds() {\n return this.#value.slice(6, 8);\n }\n\n set seconds(value: string) {\n if (this.#input) {\n const newValue = `${this.hours}:${this.minutes}:${value}`;\n this.#value = newValue;\n this.#input.value = this.#value;\n this.emit(\"change\", newValue as TimeString);\n }\n }\n\n get value() {\n return this.#value;\n }\n\n set value(value: string) {\n this.#value = value;\n }\n\n clear(unit: TimeUnit) {\n if (this.#input) {\n const { value } = this;\n const pattern = this.#showTemplateWhileEditing\n ? this.#pattern\n : \"00:00:00\";\n\n if (unit === \"hours\") {\n this.value = pattern.slice(0, 2).concat(value.slice(2));\n } else if (unit === \"minutes\") {\n this.value = value\n .slice(0, 3)\n .concat(pattern.slice(3, 5))\n .concat(value.slice(5));\n } else if (unit === \"seconds\") {\n this.value = value.slice(0, 6).concat(pattern.slice(6));\n }\n this.#input.value = this.value;\n this.emit(\"change\", this.value as TimeString);\n }\n }\n\n select(unit: TimeUnit, halfUnit = false) {\n if (this.#input) {\n console.log(`select ${unit}`);\n const offset = halfUnit ? 1 : 0;\n if (unit === \"hours\") {\n this.selectionStart = this.#input.selectionStart = 0 + offset;\n this.selectionEnd = this.#input.selectionEnd = 2;\n } else if (unit === \"minutes\") {\n this.selectionStart = this.#input.selectionStart = 3 + offset;\n this.selectionEnd = this.#input.selectionEnd = 5;\n } else if (unit === \"seconds\") {\n this.selectionStart = this.#input.selectionStart = 6 + offset;\n this.selectionEnd = this.#input.selectionEnd = 8;\n }\n this.#input.setSelectionRange(this.selectionStart, this.selectionEnd);\n if (halfUnit) {\n this.#halfUnitSelected = unit;\n this.#unitSelected = undefined;\n } else {\n this.#halfUnitSelected = undefined;\n this.#unitSelected = unit;\n }\n }\n }\n\n removeSelection() {\n this.#selectionStart = this.selectionEnd = 8;\n this.#unitSelected = undefined;\n this.#halfUnitSelected = undefined;\n }\n\n moveFocus(direction: \"left\" | \"right\") {\n console.log(`move focus ${direction} selected ${this.#unitSelected}`);\n if (direction === \"right\") {\n if (\n this.#unitSelected === \"hours\" ||\n this.#halfUnitSelected === \"hours\"\n ) {\n this.select(\"minutes\");\n } else if (\n this.#unitSelected === \"minutes\" ||\n this.#halfUnitSelected === \"minutes\"\n ) {\n this.select(\"seconds\");\n }\n } else {\n if (\n this.#unitSelected === \"seconds\" ||\n this.#halfUnitSelected === \"seconds\"\n ) {\n this.select(\"minutes\");\n } else if (\n this.#unitSelected === \"minutes\" ||\n this.#halfUnitSelected === \"minutes\"\n ) {\n this.select(\"hours\");\n } else {\n const selection = this.getSelection();\n console.log({ selection });\n if (selection === CursorAtEnd) {\n console.log(\"cursor at end\");\n this.select(\"seconds\");\n }\n }\n }\n }\n\n pasteValue(value: TimeString) {\n this.#halfUnitSelected = undefined;\n this.#unitSelected = undefined;\n this.#value = value;\n }\n\n incrementValue() {\n const { cursorPos } = this;\n if (this.#input) {\n if (cursorPos >= 0 && cursorPos <= 2) {\n const value = this.hours;\n const nextValue = incrementTime(value, \"hours\");\n if (nextValue !== value) {\n this.hours = nextValue;\n this.select(\"hours\");\n }\n } else if (cursorPos >= 3 && cursorPos < 6) {\n const value = this.minutes;\n const nextValue = incrementTime(value, \"hours\");\n if (nextValue !== value) {\n this.minutes = nextValue;\n this.select(\"minutes\");\n }\n } else if (cursorPos >= 5 && cursorPos <= 8) {\n const value = this.seconds;\n const nextValue = incrementTime(value, \"seconds\");\n if (nextValue !== value) {\n this.seconds = nextValue;\n this.select(\"seconds\");\n }\n }\n }\n }\n\n decrementValue() {\n const { cursorPos } = this;\n if (this.#input) {\n if (this.#unitSelected === \"hours\") {\n const value = this.hours;\n const nextValue = decrementTime(value, \"hours\");\n if (nextValue !== value) {\n this.hours = nextValue;\n this.select(\"hours\");\n }\n } else if (this.#unitSelected) {\n const value = this[this.#unitSelected];\n const nextValue = decrementTime(value, this.#unitSelected);\n if (nextValue !== value) {\n this[this.#unitSelected] = nextValue;\n this.select(this.#unitSelected);\n }\n } else {\n if (cursorPos >= 0 && cursorPos <= 2) {\n const value = this.hours;\n const nextValue = decrementTime(value, \"hours\");\n if (nextValue !== value) {\n this.hours = nextValue;\n this.select(\"hours\");\n }\n } else if (cursorPos >= 3 && cursorPos < 6) {\n const value = this.minutes;\n const nextValue = decrementTime(value, \"hours\");\n if (nextValue !== value) {\n this.minutes = nextValue;\n this.select(\"minutes\");\n }\n } else if (cursorPos >= 5 && cursorPos <= 8) {\n const value = this.seconds;\n const nextValue = decrementTime(value, \"seconds\");\n if (nextValue !== value) {\n this.seconds = nextValue;\n this.select(\"seconds\");\n }\n }\n }\n }\n }\n\n backspace() {\n if (this.#input) {\n const { cursorPos, value } = this;\n const pattern = this.#showTemplateWhileEditing\n ? this.#pattern\n : \"00:00:00\";\n\n if (this.#unitSelected === \"seconds\") {\n this.clear(\"seconds\");\n this.select(\"minutes\");\n } else if (this.#unitSelected === \"minutes\") {\n this.clear(\"minutes\");\n this.select(\"hours\");\n } else if (this.#unitSelected === \"hours\") {\n this.clear(\"hours\");\n this.select(\"hours\");\n } else {\n console.log(\"NEVER HAPPENS\");\n if (cursorPos > 0) {\n // console.log(`Backspace val = ${this.#value} cursorPos ${cursorPos}`);\n const offset =\n this.selectionStart === 6 || this.selectionStart === 3 ? 2 : 1;\n this.value = value\n .slice(0, cursorPos - offset)\n .concat(pattern.slice(cursorPos - offset, cursorPos))\n .concat(value.slice(cursorPos));\n this.selectionStart -= offset;\n this.selectionEnd -= offset;\n this.#input.value = this.value;\n this.emit(\"change\", this.value as TimeString);\n\n requestAnimationFrame(() => {\n this.#input?.setSelectionRange(\n this.#selectionStart,\n this.selectionEnd,\n );\n });\n }\n }\n }\n }\n\n update(key: Digit) {\n if (this.#input) {\n const { cursorPos } = this;\n if (cursorPos < 8) {\n this.value = this.value.split(\"\").toSpliced(cursorPos, 1, key).join(\"\");\n this.#input.value = this.value;\n if (this.#unitSelected) {\n this.select(this.#unitSelected, true);\n } else if (this.#halfUnitSelected === \"hours\") {\n this.select(\"minutes\");\n } else if (this.#halfUnitSelected === \"minutes\") {\n this.select(\"seconds\");\n } else if (this.#halfUnitSelected === \"seconds\") {\n this.select(\"seconds\");\n } else {\n console.log(\"NEVER HAPPENS\");\n if (this.selectionStart === 1 || this.selectionStart === 4) {\n this.selectionStart += 2;\n this.selectionEnd += 2;\n } else {\n this.selectionStart += 1;\n this.selectionEnd += 1;\n }\n requestAnimationFrame(() => {\n this.#input?.setSelectionRange(\n this.#selectionStart,\n this.selectionEnd,\n );\n });\n }\n }\n }\n }\n\n getUnitAtCursorPos(cursorPos: number): TimeUnit {\n if (cursorPos < 3) {\n return \"hours\";\n } else if (cursorPos < 6) {\n return \"minutes\";\n } else {\n return \"seconds\";\n }\n }\n\n private getSelection(): Selection {\n if (this.#input) {\n const { selectionEnd, selectionStart } = this.#input;\n if (selectionEnd === null || selectionStart === null) {\n return NullSelection;\n } else if (selectionStart === 0 && selectionEnd === 8) {\n return FullSelection;\n } else if (selectionStart === 8 && selectionEnd === 8) {\n return CursorAtEnd;\n } else {\n return {\n end: selectionEnd,\n start: selectionStart,\n };\n }\n } else {\n throw Error(`[MasketInput] selection referenced, but no input`);\n }\n }\n\n click() {\n if (this.#input) {\n const selection = this.getSelection();\n if (selection === NullSelection) {\n this.select(\"hours\");\n } else if (selection === FullSelection) {\n // do nothing\n } else {\n const cursorPos = this.#input.selectionStart ?? 0;\n this.select(this.getUnitAtCursorPos(cursorPos));\n }\n }\n }\n doubleClick() {\n if (this.#input) {\n // if (this.value !== this.#pattern) {\n const { selectionStart, selectionEnd } = this.#input;\n if (selectionStart === null || selectionEnd === null) {\n // do nothing\n // } else if (selectionStart === selectionEnd) {\n } else {\n if (selectionStart < 3) {\n this.select(\"hours\");\n } else if (selectionStart < 6) {\n this.select(\"minutes\");\n } else if (selectionStart <= 8) {\n this.select(\"seconds\");\n }\n }\n }\n // }\n }\n\n focus = () => {\n console.log(\"maskefinput focus\");\n if (this.#input) {\n if (this.value === \"\") {\n if (this.#showTemplateWhileEditing) {\n this.value = this.#input.value = this.#pattern;\n } else {\n this.value = this.#input.value = \"00:00:00\";\n this.emit(\"change\", this.value as TimeString);\n }\n }\n requestAnimationFrame(() => {\n this.select(\"hours\");\n setTimeout(() => {\n if (this.#input?.selectionStart !== 0) {\n this.select(\"hours\");\n }\n }, 200);\n });\n }\n };\n\n blur = () => {\n if (this.#input && this.#input.value === this.#pattern) {\n this.value = this.#input.value = \"\";\n this.emit(\"change\", this.value as TimeString);\n } else {\n this.removeSelection();\n }\n };\n}\n"],"names":["EventEmitter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MaskedInput.js","sources":["../../../../packages/vuu-ui-controls/src/time-input/MaskedInput.ts"],"sourcesContent":["import {\n createSyntheticEvent,\n decrementTimeUnitValue,\n EventEmitter,\n Hours,\n incrementTimeUnitValue,\n isValidTimeString,\n Minutes,\n Seconds,\n TimeString,\n TimeUnit,\n TimeUnitValue,\n updateTimeString,\n zeroTime,\n zeroTimeUnit,\n} from \"@vuu-ui/vuu-utils\";\nimport { ChangeEventHandler } from \"react\";\n\nexport type Digit = \"0\" | \"1\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"7\" | \"8\" | \"9\";\n\ntype NullSelection = {\n end: null;\n start: null;\n};\ntype Selection =\n | {\n end: number;\n start: number;\n }\n | NullSelection;\n\nconst NullSelection: NullSelection = { end: null, start: null };\nconst FullSelection: Selection = { end: 0, start: 8 };\nconst CursorAtEnd: Selection = { end: 8, start: 8 };\n\nexport type MaskedInputEvents = {\n change: ChangeEventHandler<HTMLInputElement>;\n};\n\nexport class MaskedInput extends EventEmitter<MaskedInputEvents> {\n #controlled = false;\n #input: HTMLInputElement | null = null;\n #isFocused = false;\n #isIncrementalChange = false;\n #selectionStart = -1;\n #selectionEnd = -1;\n #value;\n #unitSelected?: TimeUnit;\n #halfUnitSelected?: TimeUnit;\n\n constructor(\n defaultValue: TimeString | undefined,\n inputEl: HTMLInputElement | null = null,\n ) {\n super();\n if (inputEl) {\n this.input = inputEl;\n }\n this.#value = defaultValue ?? zeroTime;\n }\n\n set input(el: HTMLInputElement) {\n if (this.#input) {\n throw Error(\n \"MaskedInput cannot be reused, create a new instance for a new input\",\n );\n }\n this.#input = el;\n el.addEventListener(\"change\", this.emitSyntheticChangeEvent);\n }\n\n /**\n * The change event is fired programatically. This will only be handled\n * by a native event handler ( not a React handler). We handle this event\n * and convert to a React (Synthetic) event.\n */\n private emitSyntheticChangeEvent = (e: Event) => {\n const syntheticEvent = createSyntheticEvent(\n e,\n ) as React.ChangeEvent<HTMLInputElement>;\n\n this.emit(\"change\", syntheticEvent);\n };\n\n get cursorPos() {\n return this.selectionStart;\n }\n set cursorPos(value: number) {\n this.selectionStart = value;\n this.selectionEnd = value;\n if (this.#input) {\n this.#input.setSelectionRange(value, value);\n }\n }\n\n get isFocused() {\n return this.#isFocused;\n }\n\n get selectionStart() {\n return this.#selectionStart;\n }\n set selectionStart(value: number) {\n this.#selectionStart = value;\n }\n\n get selectionEnd() {\n return this.#selectionEnd;\n }\n set selectionEnd(value: number) {\n this.#selectionEnd = value;\n }\n\n private setValue(value: TimeString) {\n if (!this.#controlled) {\n this.#isIncrementalChange = false;\n this.#value = value;\n }\n\n if (this.#input) {\n // HM this updateds the input value, even if we are controlled.\n // Thats not right, but if we don't update it, the event will\n // not carry thwe right value. I don;t thibnk we can simulate\n // the correct behaviour\n this.#input.value = value;\n // this triggers the native change event, which we convert\n // // to synthetic event and emit in input setter above\n this.#input.dispatchEvent(\n new Event(\"change\", {\n bubbles: true,\n composed: true,\n }),\n );\n }\n }\n\n private setUnitValue(unit: TimeUnit, value: Hours | Minutes | Seconds) {\n const newTimeString = updateTimeString(this.#value, unit, value);\n this.setValue(newTimeString);\n }\n\n private getUnitValue<T extends TimeUnit>(unit: T): TimeUnitValue<T> {\n switch (unit) {\n case \"hours\":\n return this.#value.slice(0, 2) as TimeUnitValue<T>;\n case \"minutes\":\n return this.#value.slice(3, 5) as TimeUnitValue<T>;\n case \"seconds\":\n return this.#value.slice(6, 8) as TimeUnitValue<T>;\n default:\n throw Error(`[MaskedInout] invalue unit ${unit}`);\n }\n }\n\n get value() {\n return this.#value;\n }\n\n /**\n * Setting the value this way invokes 'controlled' mode\n */\n set value(value: TimeString) {\n this.#controlled = true;\n this.#value = value;\n if (this.isFocused) {\n const isIncremental = this.#isIncrementalChange;\n this.#isIncrementalChange = false;\n\n requestAnimationFrame(() => {\n if (isIncremental) {\n this.restoreSelection();\n } else {\n this.advanceSelection();\n }\n });\n }\n }\n\n clear(unit: TimeUnit) {\n if (this.#input) {\n let newValue = this.#value;\n if (unit === \"hours\") {\n newValue = zeroTimeUnit.concat(this.#value.slice(2)) as TimeString;\n } else if (unit === \"minutes\") {\n newValue = this.#value\n .slice(0, 3)\n .concat(zeroTimeUnit)\n .concat(this.#value.slice(5)) as TimeString;\n } else if (unit === \"seconds\") {\n newValue = this.#value.slice(0, 6).concat(zeroTimeUnit) as TimeString;\n }\n if (newValue !== this.#value) {\n this.setValue(newValue);\n }\n }\n }\n\n select(unit: TimeUnit, halfUnit = false) {\n if (this.#input) {\n const offset = halfUnit ? 1 : 0;\n if (unit === \"hours\") {\n this.selectionStart = this.#input.selectionStart = 0 + offset;\n this.selectionEnd = this.#input.selectionEnd = 2;\n } else if (unit === \"minutes\") {\n this.selectionStart = this.#input.selectionStart = 3 + offset;\n this.selectionEnd = this.#input.selectionEnd = 5;\n } else if (unit === \"seconds\") {\n this.selectionStart = this.#input.selectionStart = 6 + offset;\n this.selectionEnd = this.#input.selectionEnd = 8;\n }\n this.#input.setSelectionRange(this.selectionStart, this.selectionEnd);\n if (halfUnit) {\n this.#halfUnitSelected = unit;\n this.#unitSelected = undefined;\n } else {\n this.#halfUnitSelected = undefined;\n this.#unitSelected = unit;\n }\n }\n }\n\n removeSelection() {\n this.#selectionStart = this.selectionEnd = 8;\n this.#unitSelected = undefined;\n this.#halfUnitSelected = undefined;\n }\n\n restoreSelection() {\n if (this.#unitSelected) {\n this.select(this.#unitSelected);\n }\n }\n\n advanceSelection() {\n if (this.#unitSelected) {\n this.select(this.#unitSelected, true);\n } else if (this.#halfUnitSelected === \"hours\") {\n this.select(\"minutes\");\n } else if (this.#halfUnitSelected === \"minutes\") {\n this.select(\"seconds\");\n } else if (this.#halfUnitSelected === \"seconds\") {\n this.select(\"seconds\");\n } else {\n throw Error(\"unreachable code, in theory\");\n }\n }\n\n moveFocus(direction: \"left\" | \"right\") {\n if (direction === \"right\") {\n if (\n this.#unitSelected === \"hours\" ||\n this.#halfUnitSelected === \"hours\"\n ) {\n this.select(\"minutes\");\n } else if (\n this.#unitSelected === \"minutes\" ||\n this.#halfUnitSelected === \"minutes\"\n ) {\n this.select(\"seconds\");\n }\n } else {\n if (\n this.#unitSelected === \"seconds\" ||\n this.#halfUnitSelected === \"seconds\"\n ) {\n this.select(\"minutes\");\n } else if (\n this.#unitSelected === \"minutes\" ||\n this.#halfUnitSelected === \"minutes\"\n ) {\n this.select(\"hours\");\n } else {\n const selection = this.getSelection();\n if (selection === CursorAtEnd) {\n this.select(\"seconds\");\n }\n }\n }\n }\n\n pasteValue(value: TimeString) {\n this.#halfUnitSelected = undefined;\n this.#unitSelected = undefined;\n this.#value = value;\n }\n\n private getUnitAtCursorPos(cursorPos = this.cursorPos): TimeUnit {\n if (cursorPos >= 0 && cursorPos < 3) {\n return \"hours\";\n } else if (cursorPos < 6) {\n return \"minutes\";\n } else if (cursorPos <= 8) {\n return \"seconds\";\n } else {\n throw Error(\n `[MaskedInput] getUnitAtCursorPos invalid cursor position ${cursorPos}`,\n );\n }\n }\n\n incrementValue() {\n if (this.#input) {\n this.#isIncrementalChange = true;\n const unit = this.getUnitAtCursorPos();\n const unitValue = this.getUnitValue(unit);\n const newUnitValue = incrementTimeUnitValue(unit, unitValue);\n this.setUnitValue(unit, newUnitValue);\n this.select(unit);\n }\n }\n\n decrementValue() {\n if (this.#input) {\n this.#isIncrementalChange = true;\n const unit = this.getUnitAtCursorPos();\n const unitValue = this.getUnitValue(unit);\n const newUnitValue = decrementTimeUnitValue(unit, unitValue);\n this.setUnitValue(unit, newUnitValue);\n this.select(unit);\n }\n }\n\n backspace() {\n if (this.#input) {\n const { cursorPos } = this;\n\n if (this.#unitSelected === \"seconds\") {\n this.clear(\"seconds\");\n this.select(\"minutes\");\n } else if (this.#unitSelected === \"minutes\") {\n this.clear(\"minutes\");\n this.select(\"hours\");\n } else if (this.#unitSelected === \"hours\") {\n this.clear(\"hours\");\n this.select(\"hours\");\n } else {\n if (cursorPos > 0) {\n const offset =\n this.selectionStart === 6 || this.selectionStart === 3 ? 2 : 1;\n const newValue = this.#value\n .slice(0, cursorPos - offset)\n .concat(zeroTime.slice(cursorPos - offset, cursorPos))\n .concat(this.#value.slice(cursorPos)) as TimeString;\n this.selectionStart -= offset;\n this.selectionEnd -= offset;\n this.setValue(newValue);\n\n requestAnimationFrame(() => {\n this.#input?.setSelectionRange(\n this.#selectionStart,\n this.selectionEnd,\n );\n });\n }\n }\n }\n }\n\n update(key: Digit) {\n if (this.#input) {\n const { cursorPos } = this;\n if (cursorPos < 8) {\n const newValue = this.#value\n .split(\"\")\n .toSpliced(cursorPos, 1, key)\n .join(\"\") as TimeString;\n\n this.setValue(newValue);\n\n if (!isValidTimeString(newValue)) {\n if (this.#unitSelected) {\n this.select(this.#unitSelected);\n this.#input.classList.add(\"invalid\");\n }\n } else {\n this.#input.classList.remove(\"invalid\");\n\n if (!this.#controlled) {\n this.advanceSelection();\n }\n }\n }\n }\n }\n\n private getSelection(): Selection {\n if (this.#input) {\n const { selectionEnd, selectionStart } = this.#input;\n if (selectionEnd === null || selectionStart === null) {\n return NullSelection;\n } else if (selectionStart === 0 && selectionEnd === 8) {\n return FullSelection;\n } else if (selectionStart === 8 && selectionEnd === 8) {\n return CursorAtEnd;\n } else {\n return {\n end: selectionEnd,\n start: selectionStart,\n };\n }\n } else {\n throw Error(`[MasketInput] selection referenced, but no input`);\n }\n }\n\n click() {\n if (this.#input) {\n this.#isFocused = true;\n const selection = this.getSelection();\n if (selection === NullSelection) {\n this.select(\"hours\");\n } else if (selection === FullSelection) {\n // do nothing\n } else {\n const cursorPos = this.#input.selectionStart ?? 0;\n this.select(this.getUnitAtCursorPos(cursorPos));\n }\n }\n }\n doubleClick() {\n if (this.#input) {\n const { selectionStart, selectionEnd } = this.#input;\n if (selectionStart === null || selectionEnd === null) {\n // do nothing\n } else {\n if (selectionStart < 3) {\n this.select(\"hours\");\n } else if (selectionStart < 6) {\n this.select(\"minutes\");\n } else if (selectionStart <= 8) {\n this.select(\"seconds\");\n }\n }\n }\n // }\n }\n\n focus = () => {\n if (this.#input) {\n this.#isFocused = true;\n\n requestAnimationFrame(() => {\n this.select(\"hours\");\n setTimeout(() => {\n if (this.#input?.selectionStart !== 0) {\n this.select(\"hours\");\n }\n }, 200);\n });\n }\n };\n\n blur = () => {\n this.removeSelection();\n this.#isFocused = false;\n };\n}\n"],"names":["EventEmitter","createSyntheticEvent","zeroTime","updateTimeString","zeroTimeUnit","incrementTimeUnitValue","decrementTimeUnitValue","isValidTimeString"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var timeInputCss = ".vuuTimeInput {\n width: 80px;\n\n &:focus::-webkit-input-placeholder {\n color: transparent;\n }\n}\n";
|
|
3
|
+
var timeInputCss = ".salt-density-high .vuuTimeInput {\n --time-input-width: 60px;\n}\n.salt-density-medium .vuuTimeInput {\n --time-input-width: 70px;\n}\n.salt-density-low .vuuTimeInput {\n --time-input-width: 80px;\n}\n.salt-density-touch .vuuTimeInput {\n --time-input-width: 90px;\n}\n\n.vuuTimeInput {\n border-width: 1px;\n font-family: var(--salt-typography-fontFamily);\n width: var(--vuuTimeInput-width, var(--time-input-width));\n\n &:focus::-webkit-input-placeholder {\n color: transparent;\n }\n\n}\n\n.invalid {\n border-color: red;\n}\n\n";
|
|
4
4
|
|
|
5
5
|
module.exports = timeInputCss;
|
|
6
6
|
//# sourceMappingURL=TimeInput.css.js.map
|
|
@@ -17,7 +17,7 @@ const TimeInput = React.forwardRef(
|
|
|
17
17
|
onChange,
|
|
18
18
|
onCommit,
|
|
19
19
|
placeholder = "hh:mm:ss",
|
|
20
|
-
|
|
20
|
+
value,
|
|
21
21
|
...htmlAttributes
|
|
22
22
|
}, ref) {
|
|
23
23
|
const targetWindow = window.useWindow();
|
|
@@ -31,7 +31,7 @@ const TimeInput = React.forwardRef(
|
|
|
31
31
|
defaultValue,
|
|
32
32
|
onChange,
|
|
33
33
|
onCommit,
|
|
34
|
-
|
|
34
|
+
value
|
|
35
35
|
});
|
|
36
36
|
return /* @__PURE__ */ React.createElement(
|
|
37
37
|
"input",
|
|
@@ -43,8 +43,10 @@ const TimeInput = React.forwardRef(
|
|
|
43
43
|
defaultValue,
|
|
44
44
|
key: defaultValue,
|
|
45
45
|
placeholder,
|
|
46
|
+
readOnly: true,
|
|
46
47
|
ref: core.useForkRef(ref, inputRef),
|
|
47
|
-
spellCheck: "false"
|
|
48
|
+
spellCheck: "false",
|
|
49
|
+
value
|
|
48
50
|
}
|
|
49
51
|
);
|
|
50
52
|
}
|