@marcoschwartz/lite-ui 0.18.0 → 0.18.1
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/index.js +28 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +28 -7
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3095,15 +3095,22 @@ var Slider = ({
|
|
|
3095
3095
|
setInternalValue(newValue);
|
|
3096
3096
|
onChange?.(newValue);
|
|
3097
3097
|
};
|
|
3098
|
-
const
|
|
3098
|
+
const handleRangeStart = (clientX, handle) => {
|
|
3099
3099
|
if (disabled) return;
|
|
3100
|
-
e.preventDefault();
|
|
3101
3100
|
setIsDragging(handle);
|
|
3102
3101
|
};
|
|
3103
|
-
const
|
|
3102
|
+
const handleRangeMouseDown = (e, handle) => {
|
|
3103
|
+
e.preventDefault();
|
|
3104
|
+
handleRangeStart(e.clientX, handle);
|
|
3105
|
+
};
|
|
3106
|
+
const handleRangeTouchStart = (e, handle) => {
|
|
3107
|
+
e.preventDefault();
|
|
3108
|
+
handleRangeStart(e.touches[0].clientX, handle);
|
|
3109
|
+
};
|
|
3110
|
+
const updateRangeValue = (clientX) => {
|
|
3104
3111
|
if (!isDragging || !trackRef.current || disabled) return;
|
|
3105
3112
|
const rect = trackRef.current.getBoundingClientRect();
|
|
3106
|
-
const percentage2 = Math.max(0, Math.min(100, (
|
|
3113
|
+
const percentage2 = Math.max(0, Math.min(100, (clientX - rect.left) / rect.width * 100));
|
|
3107
3114
|
const newValue = Math.round(percentage2 / 100 * (max - min) / step) * step + min;
|
|
3108
3115
|
if (isDragging === "min") {
|
|
3109
3116
|
const newMin = Math.min(newValue, rangeValue[1] - step);
|
|
@@ -3117,16 +3124,28 @@ var Slider = ({
|
|
|
3117
3124
|
onRangeChange?.(newRange);
|
|
3118
3125
|
}
|
|
3119
3126
|
};
|
|
3120
|
-
const
|
|
3127
|
+
const handleRangeMouseMove = (e) => {
|
|
3128
|
+
updateRangeValue(e.clientX);
|
|
3129
|
+
};
|
|
3130
|
+
const handleRangeTouchMove = (e) => {
|
|
3131
|
+
if (e.touches.length > 0) {
|
|
3132
|
+
updateRangeValue(e.touches[0].clientX);
|
|
3133
|
+
}
|
|
3134
|
+
};
|
|
3135
|
+
const handleRangeEnd = () => {
|
|
3121
3136
|
setIsDragging(null);
|
|
3122
3137
|
};
|
|
3123
3138
|
import_react18.default.useEffect(() => {
|
|
3124
3139
|
if (isDragging) {
|
|
3125
3140
|
document.addEventListener("mousemove", handleRangeMouseMove);
|
|
3126
|
-
document.addEventListener("mouseup",
|
|
3141
|
+
document.addEventListener("mouseup", handleRangeEnd);
|
|
3142
|
+
document.addEventListener("touchmove", handleRangeTouchMove);
|
|
3143
|
+
document.addEventListener("touchend", handleRangeEnd);
|
|
3127
3144
|
return () => {
|
|
3128
3145
|
document.removeEventListener("mousemove", handleRangeMouseMove);
|
|
3129
|
-
document.removeEventListener("mouseup",
|
|
3146
|
+
document.removeEventListener("mouseup", handleRangeEnd);
|
|
3147
|
+
document.removeEventListener("touchmove", handleRangeTouchMove);
|
|
3148
|
+
document.removeEventListener("touchend", handleRangeEnd);
|
|
3130
3149
|
};
|
|
3131
3150
|
}
|
|
3132
3151
|
}, [isDragging, rangeValue]);
|
|
@@ -3163,6 +3182,7 @@ var Slider = ({
|
|
|
3163
3182
|
`,
|
|
3164
3183
|
style: { left: `${minPercentage}%` },
|
|
3165
3184
|
onMouseDown: (e) => handleRangeMouseDown(e, "min"),
|
|
3185
|
+
onTouchStart: (e) => handleRangeTouchStart(e, "min"),
|
|
3166
3186
|
role: "slider",
|
|
3167
3187
|
"aria-label": `${label ? label + " " : ""}minimum value`,
|
|
3168
3188
|
"aria-valuemin": min,
|
|
@@ -3179,6 +3199,7 @@ var Slider = ({
|
|
|
3179
3199
|
`,
|
|
3180
3200
|
style: { left: `${maxPercentage}%` },
|
|
3181
3201
|
onMouseDown: (e) => handleRangeMouseDown(e, "max"),
|
|
3202
|
+
onTouchStart: (e) => handleRangeTouchStart(e, "max"),
|
|
3182
3203
|
role: "slider",
|
|
3183
3204
|
"aria-label": `${label ? label + " " : ""}maximum value`,
|
|
3184
3205
|
"aria-valuemin": rangeValue[0],
|