@geoffcox/sterling-svelte 2.0.8 → 2.0.10
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/Slider.svelte +51 -25
- package/dist/Slider.types.d.ts +1 -0
- package/package.json +2 -2
package/dist/Slider.svelte
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
max = 100,
|
|
13
13
|
onChange,
|
|
14
14
|
precision = 0,
|
|
15
|
+
reverse,
|
|
15
16
|
step = 1,
|
|
16
17
|
value = $bindable(0),
|
|
17
18
|
vertical,
|
|
@@ -87,9 +88,17 @@
|
|
|
87
88
|
if (!disabled) {
|
|
88
89
|
event.currentTarget.setPointerCapture(event.pointerId);
|
|
89
90
|
if (vertical) {
|
|
90
|
-
|
|
91
|
+
if (reverse) {
|
|
92
|
+
setValueByOffset(event.y - sliderRef.getBoundingClientRect().top);
|
|
93
|
+
} else {
|
|
94
|
+
setValueByOffset(sliderRef.getBoundingClientRect().bottom - event.y);
|
|
95
|
+
}
|
|
91
96
|
} else {
|
|
92
|
-
|
|
97
|
+
if (reverse) {
|
|
98
|
+
setValueByOffset(sliderRef.getBoundingClientRect().right - event.x);
|
|
99
|
+
} else {
|
|
100
|
+
setValueByOffset(event.x - sliderRef.getBoundingClientRect().left);
|
|
101
|
+
}
|
|
93
102
|
}
|
|
94
103
|
event.preventDefault();
|
|
95
104
|
focus();
|
|
@@ -101,9 +110,17 @@
|
|
|
101
110
|
const onPointerMove: PointerEventHandler<HTMLDivElement> = (event) => {
|
|
102
111
|
if (!disabled && event.currentTarget.hasPointerCapture(event.pointerId)) {
|
|
103
112
|
if (vertical) {
|
|
104
|
-
|
|
113
|
+
if (reverse) {
|
|
114
|
+
setValueByOffset(event.y - sliderRef.getBoundingClientRect().top);
|
|
115
|
+
} else {
|
|
116
|
+
setValueByOffset(sliderRef.getBoundingClientRect().bottom - event.y);
|
|
117
|
+
}
|
|
105
118
|
} else {
|
|
106
|
-
|
|
119
|
+
if (reverse) {
|
|
120
|
+
setValueByOffset(sliderRef.getBoundingClientRect().right - event.x);
|
|
121
|
+
} else {
|
|
122
|
+
setValueByOffset(event.x - sliderRef.getBoundingClientRect().left);
|
|
123
|
+
}
|
|
107
124
|
}
|
|
108
125
|
event.preventDefault();
|
|
109
126
|
}
|
|
@@ -122,19 +139,32 @@
|
|
|
122
139
|
|
|
123
140
|
const onKeyDown: KeyboardEventHandler<HTMLDivElement> = (event) => {
|
|
124
141
|
if (!disabled && !event.ctrlKey && !event.shiftKey && !event.altKey) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
142
|
+
let change = 0;
|
|
143
|
+
|
|
144
|
+
if (vertical) {
|
|
145
|
+
switch (event.code) {
|
|
146
|
+
case 'ArrowDown':
|
|
147
|
+
change = reverse ? step : -step;
|
|
148
|
+
break;
|
|
149
|
+
case 'ArrowUp':
|
|
150
|
+
change = reverse ? -step : step;
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
} else {
|
|
154
|
+
switch (event.code) {
|
|
155
|
+
case 'ArrowLeft':
|
|
156
|
+
change = reverse ? step : -step;
|
|
157
|
+
break;
|
|
158
|
+
case 'ArrowRight':
|
|
159
|
+
change = reverse ? -step : step;
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (change !== 0) {
|
|
165
|
+
setValue(value + change);
|
|
166
|
+
event.preventDefault();
|
|
167
|
+
event.stopPropagation();
|
|
138
168
|
}
|
|
139
169
|
}
|
|
140
170
|
rest?.onkeydown?.(event);
|
|
@@ -149,6 +179,7 @@
|
|
|
149
179
|
class={['sterling-slider', _class]}
|
|
150
180
|
class:disabled
|
|
151
181
|
class:horizontal={!vertical}
|
|
182
|
+
class:reverse
|
|
152
183
|
class:vertical
|
|
153
184
|
role="slider"
|
|
154
185
|
tabindex={!disabled ? 0 : undefined}
|
|
@@ -163,15 +194,10 @@
|
|
|
163
194
|
bind:this={sliderRef}
|
|
164
195
|
bind:clientWidth={sliderWidth}
|
|
165
196
|
bind:clientHeight={sliderHeight}
|
|
197
|
+
style={`--valueOffset: ${valueOffset}px`}
|
|
166
198
|
>
|
|
167
199
|
<div class="track"></div>
|
|
168
|
-
<div
|
|
169
|
-
|
|
170
|
-
style={vertical ? `height: ${valueOffset}px` : `width: ${valueOffset}px`}
|
|
171
|
-
></div>
|
|
172
|
-
<div
|
|
173
|
-
class="thumb"
|
|
174
|
-
style={vertical ? `bottom: ${valueOffset}px` : `left: ${valueOffset}px`}
|
|
175
|
-
></div>
|
|
200
|
+
<div class="fill"></div>
|
|
201
|
+
<div class="thumb"></div>
|
|
176
202
|
</div>
|
|
177
203
|
</div>
|
package/dist/Slider.types.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geoffcox/sterling-svelte",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.10",
|
|
4
4
|
"author": "Geoff Cox",
|
|
5
5
|
"description": "A modern, accessible, and lightweight component library for Svelte.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"@eslint/js": "^9.18.0",
|
|
75
75
|
"@fontsource/atkinson-hyperlegible": "^5.1.1",
|
|
76
76
|
"@fontsource/source-code-pro": "^4.5.14",
|
|
77
|
-
"@geoffcox/sterling-svelte-themes": "^2.0.
|
|
77
|
+
"@geoffcox/sterling-svelte-themes": "^2.0.3",
|
|
78
78
|
"@sveltejs/adapter-static": "^3.0.8",
|
|
79
79
|
"@sveltejs/kit": "^2.16.0",
|
|
80
80
|
"@sveltejs/package": "^2.0.0",
|