@v-c/input-number 1.0.6 → 1.0.7
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/InputNumber.js +39 -2
- package/package.json +3 -3
package/dist/InputNumber.js
CHANGED
|
@@ -12,6 +12,20 @@ import omit from "@v-c/util/dist/omit";
|
|
|
12
12
|
function _isSlot(s) {
|
|
13
13
|
return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
|
|
14
14
|
}
|
|
15
|
+
/** Accumulated wheel distance that adds up to a single step. */
|
|
16
|
+
var WHEEL_STEP_DISTANCE = 100;
|
|
17
|
+
var WHEEL_LINE_HEIGHT = 40;
|
|
18
|
+
var WHEEL_PAGE_HEIGHT = 800;
|
|
19
|
+
/** Idle gap after which a new wheel gesture starts from scratch. */
|
|
20
|
+
var WHEEL_DELTA_RESET_INTERVAL = 200;
|
|
21
|
+
/** Normalize `deltaY` to pixels — browsers may report it in lines or pages. */
|
|
22
|
+
function getWheelDeltaY(event) {
|
|
23
|
+
switch (event.deltaMode) {
|
|
24
|
+
case 1: return event.deltaY * WHEEL_LINE_HEIGHT;
|
|
25
|
+
case 2: return event.deltaY * WHEEL_PAGE_HEIGHT;
|
|
26
|
+
default: return event.deltaY;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
15
29
|
var defaults = {
|
|
16
30
|
prefixCls: "vc-input-number",
|
|
17
31
|
step: 1,
|
|
@@ -227,20 +241,43 @@ var InputNumber = /* @__PURE__ */ defineComponent((props, { attrs, slots, expose
|
|
|
227
241
|
shiftKeyRef.value = false;
|
|
228
242
|
props.onKeyUp?.(event);
|
|
229
243
|
};
|
|
244
|
+
let wheelDelta = 0;
|
|
245
|
+
let wheelTimestamp = 0;
|
|
246
|
+
const resetWheel = () => {
|
|
247
|
+
wheelDelta = 0;
|
|
248
|
+
wheelTimestamp = 0;
|
|
249
|
+
};
|
|
250
|
+
const onInternalWheel = (event) => {
|
|
251
|
+
const delta = getWheelDeltaY(event);
|
|
252
|
+
if (!delta) return;
|
|
253
|
+
const eventTimestamp = event.timeStamp || Date.now();
|
|
254
|
+
if (eventTimestamp - wheelTimestamp > WHEEL_DELTA_RESET_INTERVAL) wheelDelta = 0;
|
|
255
|
+
wheelTimestamp = eventTimestamp;
|
|
256
|
+
if (wheelDelta && Math.sign(wheelDelta) !== Math.sign(delta)) wheelDelta = 0;
|
|
257
|
+
wheelDelta += delta;
|
|
258
|
+
if (Math.abs(wheelDelta) >= WHEEL_STEP_DISTANCE) {
|
|
259
|
+
onInternalStep(wheelDelta < 0, "wheel");
|
|
260
|
+
wheelDelta -= Math.sign(wheelDelta) * WHEEL_STEP_DISTANCE;
|
|
261
|
+
}
|
|
262
|
+
};
|
|
230
263
|
watchEffect((onCleanup) => {
|
|
231
264
|
if (props.changeOnWheel && focus.value && inputRef.value) {
|
|
232
265
|
const onWheel = (event) => {
|
|
233
|
-
|
|
266
|
+
onInternalWheel(event);
|
|
234
267
|
event.preventDefault();
|
|
235
268
|
};
|
|
236
269
|
inputRef.value.addEventListener("wheel", onWheel, { passive: false });
|
|
237
|
-
onCleanup(() =>
|
|
270
|
+
onCleanup(() => {
|
|
271
|
+
inputRef.value?.removeEventListener("wheel", onWheel);
|
|
272
|
+
resetWheel();
|
|
273
|
+
});
|
|
238
274
|
}
|
|
239
275
|
});
|
|
240
276
|
const onBlur = (e) => {
|
|
241
277
|
if (props.changeOnBlur ?? true) flushInputValue(false);
|
|
242
278
|
focus.value = false;
|
|
243
279
|
userTypingRef.value = false;
|
|
280
|
+
resetWheel();
|
|
244
281
|
props.onBlur?.(e);
|
|
245
282
|
};
|
|
246
283
|
const onFocus = (e) => {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@v-c/input-number",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.7",
|
|
5
5
|
"description": "",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://github.com/antdv-next/vue-components/tree/next/packages/input-number",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@v-c/input": "^1.1.1",
|
|
34
|
-
"@v-c/
|
|
35
|
-
"@v-c/
|
|
34
|
+
"@v-c/mini-decimal": "^1.0.1",
|
|
35
|
+
"@v-c/util": "^1.1.0"
|
|
36
36
|
},
|
|
37
37
|
"scripts": {
|
|
38
38
|
"build": "vite build",
|