@geoffcox/sterling-svelte 2.0.8 → 2.0.9

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.
@@ -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
- setValueByOffset(sliderRef.getBoundingClientRect().bottom - event.y);
91
+ if (reverse) {
92
+ setValueByOffset(event.y - sliderRef.getBoundingClientRect().top);
93
+ } else {
94
+ setValueByOffset(sliderRef.getBoundingClientRect().bottom - event.y);
95
+ }
91
96
  } else {
92
- setValueByOffset(event.x - sliderRef.getBoundingClientRect().left);
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
- setValueByOffset(sliderRef.getBoundingClientRect().bottom - event.y);
113
+ if (reverse) {
114
+ setValueByOffset(event.y - sliderRef.getBoundingClientRect().top);
115
+ } else {
116
+ setValueByOffset(sliderRef.getBoundingClientRect().bottom - event.y);
117
+ }
105
118
  } else {
106
- setValueByOffset(event.x - sliderRef.getBoundingClientRect().left);
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
  }
@@ -149,6 +166,7 @@
149
166
  class={['sterling-slider', _class]}
150
167
  class:disabled
151
168
  class:horizontal={!vertical}
169
+ class:reverse
152
170
  class:vertical
153
171
  role="slider"
154
172
  tabindex={!disabled ? 0 : undefined}
@@ -163,15 +181,10 @@
163
181
  bind:this={sliderRef}
164
182
  bind:clientWidth={sliderWidth}
165
183
  bind:clientHeight={sliderHeight}
184
+ style={`--valueOffset: ${valueOffset}px`}
166
185
  >
167
186
  <div class="track"></div>
168
- <div
169
- class="fill"
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>
187
+ <div class="fill"></div>
188
+ <div class="thumb"></div>
176
189
  </div>
177
190
  </div>
@@ -4,6 +4,7 @@ export type SliderProps = HTMLAttributes<HTMLDivElement> & {
4
4
  min?: number;
5
5
  max?: number;
6
6
  precision?: number;
7
+ reverse?: boolean | null;
7
8
  step?: number;
8
9
  value?: number;
9
10
  vertical?: boolean | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geoffcox/sterling-svelte",
3
- "version": "2.0.8",
3
+ "version": "2.0.9",
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.2",
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",