fluent-svelte-extra 2.2.3 → 2.2.5
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.
|
@@ -4,6 +4,7 @@ import { arrowNavigation, uid } from "../internal";
|
|
|
4
4
|
import MenuFlyoutSurface from "./MenuFlyoutSurface.svelte";
|
|
5
5
|
/** Determines the flyout's visibility. */
|
|
6
6
|
export let open = false;
|
|
7
|
+
export let disabled = false;
|
|
7
8
|
/** Determines if the flyout can be closed using conventional user interaction. */
|
|
8
9
|
export let closable = true;
|
|
9
10
|
/** Controls if the flyout will be closed when clicking a standard variant item. Only applies if `closable` is set to `true`. */
|
|
@@ -41,6 +42,8 @@ function handleEscapeKey({ key }) {
|
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
44
|
function toggleFlyout() {
|
|
45
|
+
if (!open && disabled)
|
|
46
|
+
return;
|
|
44
47
|
previousFocus = document.activeElement;
|
|
45
48
|
open = !open;
|
|
46
49
|
}
|
|
@@ -50,10 +53,10 @@ function closeFlyout() {
|
|
|
50
53
|
previousFocus = null;
|
|
51
54
|
}
|
|
52
55
|
}
|
|
53
|
-
setContext("closeFlyout",
|
|
56
|
+
setContext("closeFlyout", (e) => {
|
|
54
57
|
dispatch("select");
|
|
55
58
|
if (closeOnSelect && closable) {
|
|
56
|
-
|
|
59
|
+
e.stopPropagation();
|
|
57
60
|
open = false;
|
|
58
61
|
previousFocus = null;
|
|
59
62
|
}
|
|
@@ -62,6 +65,7 @@ setContext("closeFlyout", event => {
|
|
|
62
65
|
|
|
63
66
|
<svelte:window on:keydown={handleEscapeKey} />
|
|
64
67
|
|
|
68
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
65
69
|
<div
|
|
66
70
|
class="menu-flyout-wrapper {className}"
|
|
67
71
|
aria-expanded={open}
|
|
@@ -72,6 +76,7 @@ setContext("closeFlyout", event => {
|
|
|
72
76
|
>
|
|
73
77
|
<slot />
|
|
74
78
|
{#if open}
|
|
79
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
75
80
|
<div
|
|
76
81
|
id={menuId}
|
|
77
82
|
class="menu-flyout-anchor placement-{placement} alignment-{alignment}"
|
|
@@ -90,6 +95,7 @@ setContext("closeFlyout", event => {
|
|
|
90
95
|
<slot name="flyout" />
|
|
91
96
|
</MenuFlyoutSurface>
|
|
92
97
|
</div>
|
|
98
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
93
99
|
<div
|
|
94
100
|
class="menu-flyout-backdrop"
|
|
95
101
|
bind:this={backdropElement}
|
|
@@ -3,6 +3,7 @@ declare const __propDef: {
|
|
|
3
3
|
props: {
|
|
4
4
|
[x: string]: any;
|
|
5
5
|
open?: boolean;
|
|
6
|
+
disabled?: boolean;
|
|
6
7
|
closable?: boolean;
|
|
7
8
|
closeOnSelect?: boolean;
|
|
8
9
|
placement?: "top" | "bottom" | "left" | "right";
|
|
@@ -10,10 +11,10 @@ declare const __propDef: {
|
|
|
10
11
|
offset?: number;
|
|
11
12
|
acrylic?: boolean;
|
|
12
13
|
class?: string;
|
|
13
|
-
wrapperElement?: HTMLDivElement;
|
|
14
|
-
anchorElement?: HTMLDivElement;
|
|
14
|
+
wrapperElement?: HTMLDivElement | null;
|
|
15
|
+
anchorElement?: HTMLDivElement | null;
|
|
15
16
|
menuElement?: HTMLUListElement;
|
|
16
|
-
backdropElement?: HTMLDivElement;
|
|
17
|
+
backdropElement?: HTMLDivElement | null;
|
|
17
18
|
};
|
|
18
19
|
events: {
|
|
19
20
|
select: CustomEvent<any>;
|
package/Slider/Slider.scss
CHANGED
|
@@ -60,6 +60,12 @@
|
|
|
60
60
|
transform: translateX(-50%);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
&hover-preview {
|
|
64
|
+
inset-inline-start: var(--slider-hover-position);
|
|
65
|
+
inset-block-end: calc(100% + 8px);
|
|
66
|
+
transform: translateX(-50%);
|
|
67
|
+
}
|
|
68
|
+
|
|
63
69
|
&tick {
|
|
64
70
|
flex-direction: column;
|
|
65
71
|
height: 100%;
|
|
@@ -118,6 +124,12 @@
|
|
|
118
124
|
transform: translateY(50%);
|
|
119
125
|
}
|
|
120
126
|
|
|
127
|
+
&hover-preview {
|
|
128
|
+
inset-block-end: var(--slider-hover-position);
|
|
129
|
+
inset-inline-start: calc(100% + 8px);
|
|
130
|
+
transform: translateY(50%);
|
|
131
|
+
}
|
|
132
|
+
|
|
121
133
|
&tick {
|
|
122
134
|
width: 100%;
|
|
123
135
|
padding: 0 6px;
|
|
@@ -194,6 +206,12 @@
|
|
|
194
206
|
background-color: var(--control-strong-stroke-default);
|
|
195
207
|
}
|
|
196
208
|
|
|
209
|
+
&-hover-preview {
|
|
210
|
+
position: absolute;
|
|
211
|
+
z-index: 30;
|
|
212
|
+
pointer-events: none;
|
|
213
|
+
}
|
|
214
|
+
|
|
197
215
|
&-tick-bar {
|
|
198
216
|
position: absolute;
|
|
199
217
|
z-index: -1;
|
package/Slider/Slider.svelte
CHANGED
|
@@ -51,6 +51,11 @@ export let bufferElement = null;
|
|
|
51
51
|
let dragging = false;
|
|
52
52
|
let holding = false;
|
|
53
53
|
let directionAwareReverse = false;
|
|
54
|
+
let activePointerEvent = null;
|
|
55
|
+
let hoveringRail = false;
|
|
56
|
+
let hoverPreviewValue = min;
|
|
57
|
+
let hoverValuePercentage = 0;
|
|
58
|
+
let hoverPositionPercentage = 0;
|
|
54
59
|
// also adding client height will enable users to create distinct shapes for the thumb
|
|
55
60
|
let thumbClientWidth = 20;
|
|
56
61
|
let thumbClientHeight = 20;
|
|
@@ -69,64 +74,130 @@ const forwardEvents = createEventForwarder(get_current_component(), [
|
|
|
69
74
|
"end",
|
|
70
75
|
"beforeinput"
|
|
71
76
|
]);
|
|
77
|
+
const clamp = (v, minValue, maxValue) => Math.min(maxValue, Math.max(minValue, v));
|
|
72
78
|
// Divides the current value minus the minimum value
|
|
73
79
|
// by the difference between the max and min values,
|
|
74
80
|
// and multiplies by 100 to get a percentage.
|
|
75
|
-
const valueToPercentage =
|
|
76
|
-
|
|
81
|
+
const valueToPercentage = (v) => {
|
|
82
|
+
if (max === min)
|
|
83
|
+
return 0;
|
|
84
|
+
return ((v - min) / (max - min)) * 100;
|
|
85
|
+
};
|
|
86
|
+
const bufferValueToPercentage = (v) => {
|
|
87
|
+
if (max === 0)
|
|
88
|
+
return 0;
|
|
89
|
+
return (v * 100) / max;
|
|
90
|
+
};
|
|
77
91
|
function cancelMove() {
|
|
78
92
|
holding = false;
|
|
79
93
|
dragging = false;
|
|
94
|
+
activePointerEvent = null;
|
|
80
95
|
if (sliderThumbHolding) {
|
|
81
96
|
sliderThumbHolding = false;
|
|
82
97
|
dispatch("userHoldEnd");
|
|
83
98
|
}
|
|
84
99
|
}
|
|
85
|
-
function handleMove() {
|
|
100
|
+
function handleMove(event) {
|
|
101
|
+
activePointerEvent = event;
|
|
86
102
|
if (holding)
|
|
87
103
|
dragging = true;
|
|
104
|
+
if (hoveringRail)
|
|
105
|
+
updateHoverPreview(event);
|
|
88
106
|
}
|
|
89
|
-
function
|
|
107
|
+
function getClientPoint(event) {
|
|
108
|
+
var _a;
|
|
109
|
+
if ("touches" in event) {
|
|
110
|
+
const touch = (_a = event.touches[0]) !== null && _a !== void 0 ? _a : event.changedTouches[0];
|
|
111
|
+
if (!touch)
|
|
112
|
+
return null;
|
|
113
|
+
return {
|
|
114
|
+
x: touch.clientX,
|
|
115
|
+
y: touch.clientY
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
x: event.clientX,
|
|
120
|
+
y: event.clientY
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function percentToStepValue(percent) {
|
|
124
|
+
const safeStep = step > 0 ? step : 1;
|
|
125
|
+
let nextStep = min + Math.round(((max - min) * percent) / safeStep) * safeStep;
|
|
126
|
+
if (nextStep <= min)
|
|
127
|
+
nextStep = min;
|
|
128
|
+
else if (nextStep >= max)
|
|
129
|
+
nextStep = max;
|
|
130
|
+
return nextStep;
|
|
131
|
+
}
|
|
132
|
+
function getPointerData(event) {
|
|
90
133
|
if (disabled || !railElement)
|
|
91
|
-
return;
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
134
|
+
return null;
|
|
135
|
+
const point = getClientPoint(event);
|
|
136
|
+
if (!point)
|
|
137
|
+
return null;
|
|
138
|
+
const rect = railElement.getBoundingClientRect();
|
|
95
139
|
const thumbSize = orientation === "horizontal" ? thumbClientWidth : thumbClientHeight;
|
|
96
|
-
const totalLength = orientation === "horizontal" ? width : height;
|
|
140
|
+
const totalLength = orientation === "horizontal" ? rect.width : rect.height;
|
|
97
141
|
const effectiveLength = totalLength - thumbSize;
|
|
98
|
-
if (effectiveLength <= 0)
|
|
99
|
-
return;
|
|
142
|
+
if (totalLength <= 0 || effectiveLength <= 0)
|
|
143
|
+
return null;
|
|
100
144
|
let distanceFromMin = 0;
|
|
145
|
+
let visualPercent = 0;
|
|
101
146
|
if (orientation === "horizontal") {
|
|
147
|
+
const visualDistance = clamp(point.x - rect.left, 0, rect.width);
|
|
148
|
+
visualPercent = visualDistance / rect.width;
|
|
102
149
|
if (directionAwareReverse) {
|
|
103
|
-
distanceFromMin = right -
|
|
150
|
+
distanceFromMin = rect.right - point.x;
|
|
104
151
|
}
|
|
105
152
|
else {
|
|
106
|
-
distanceFromMin =
|
|
153
|
+
distanceFromMin = point.x - rect.left;
|
|
107
154
|
}
|
|
108
155
|
}
|
|
109
156
|
else {
|
|
157
|
+
const visualDistance = clamp(rect.bottom - point.y, 0, rect.height);
|
|
158
|
+
visualPercent = visualDistance / rect.height;
|
|
110
159
|
if (directionAwareReverse) {
|
|
111
|
-
distanceFromMin =
|
|
160
|
+
distanceFromMin = point.y - rect.top;
|
|
112
161
|
}
|
|
113
162
|
else {
|
|
114
|
-
distanceFromMin = bottom -
|
|
163
|
+
distanceFromMin = rect.bottom - point.y;
|
|
115
164
|
}
|
|
116
165
|
}
|
|
117
166
|
const relativePos = distanceFromMin - thumbSize / 2;
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
value
|
|
167
|
+
const logicalPercent = clamp(relativePos / effectiveLength, 0, 1);
|
|
168
|
+
return {
|
|
169
|
+
value: percentToStepValue(logicalPercent),
|
|
170
|
+
valuePercentage: logicalPercent * 100,
|
|
171
|
+
positionPercentage: visualPercent * 100
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
function calculateValue(event) {
|
|
175
|
+
const pointerData = getPointerData(event);
|
|
176
|
+
if (!pointerData)
|
|
177
|
+
return;
|
|
178
|
+
dispatch("userChange", [value, pointerData.value]);
|
|
179
|
+
value = pointerData.value;
|
|
180
|
+
}
|
|
181
|
+
function updateHoverPreview(event) {
|
|
182
|
+
const pointerData = getPointerData(event);
|
|
183
|
+
if (!pointerData)
|
|
184
|
+
return;
|
|
185
|
+
hoveringRail = true;
|
|
186
|
+
hoverPreviewValue = pointerData.value;
|
|
187
|
+
hoverValuePercentage = pointerData.valuePercentage;
|
|
188
|
+
hoverPositionPercentage = pointerData.positionPercentage;
|
|
189
|
+
dispatch("hoverChange", {
|
|
190
|
+
value: hoverPreviewValue,
|
|
191
|
+
percentage: hoverValuePercentage,
|
|
192
|
+
positionPercentage: hoverPositionPercentage
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
function clearHoverPreview() {
|
|
196
|
+
hoveringRail = false;
|
|
197
|
+
}
|
|
198
|
+
function handleHoverMove(event) {
|
|
199
|
+
activePointerEvent = event;
|
|
200
|
+
updateHoverPreview(event);
|
|
130
201
|
}
|
|
131
202
|
function handleArrowKeys(event) {
|
|
132
203
|
const { key } = event;
|
|
@@ -153,6 +224,8 @@ function handleTouchStart(event) {
|
|
|
153
224
|
if (event.cancelable)
|
|
154
225
|
event.preventDefault();
|
|
155
226
|
holding = true;
|
|
227
|
+
activePointerEvent = event;
|
|
228
|
+
updateHoverPreview(event);
|
|
156
229
|
}
|
|
157
230
|
function linearScale(input, output) {
|
|
158
231
|
return (value) => {
|
|
@@ -188,8 +261,8 @@ $: {
|
|
|
188
261
|
value = min;
|
|
189
262
|
else if (value >= max)
|
|
190
263
|
value = max;
|
|
191
|
-
if (dragging) {
|
|
192
|
-
calculateValue(
|
|
264
|
+
if (dragging && activePointerEvent) {
|
|
265
|
+
calculateValue(activePointerEvent);
|
|
193
266
|
dragging = false;
|
|
194
267
|
}
|
|
195
268
|
}
|
|
@@ -214,17 +287,24 @@ A slider is a control that lets the user select from a range of values by moving
|
|
|
214
287
|
-->
|
|
215
288
|
<div
|
|
216
289
|
use:forwardEvents
|
|
217
|
-
on:mousedown|preventDefault={
|
|
290
|
+
on:mousedown|preventDefault={event => {
|
|
218
291
|
holding = true;
|
|
219
292
|
dragging = true;
|
|
293
|
+
activePointerEvent = event;
|
|
294
|
+
updateHoverPreview(event);
|
|
220
295
|
}}
|
|
296
|
+
on:mousemove={handleHoverMove}
|
|
297
|
+
on:mouseleave={clearHoverPreview}
|
|
221
298
|
on:mouseup|preventDefault={() => {
|
|
222
299
|
dispatch("userUpdate", value);
|
|
223
300
|
}}
|
|
301
|
+
on:touchmove={handleHoverMove}
|
|
224
302
|
on:touchend|preventDefault={() => {
|
|
303
|
+
clearHoverPreview();
|
|
225
304
|
dispatch("userUpdate", value);
|
|
226
305
|
}}
|
|
227
306
|
on:touchcancel|preventDefault={() => {
|
|
307
|
+
clearHoverPreview();
|
|
228
308
|
dispatch("userUpdate", value);
|
|
229
309
|
}}
|
|
230
310
|
on:touchstart={handleTouchStart}
|
|
@@ -301,6 +381,20 @@ A slider is a control that lets the user select from a range of values by moving
|
|
|
301
381
|
{/if}
|
|
302
382
|
</div>
|
|
303
383
|
|
|
384
|
+
{#if hoveringRail && $$slots["hover-preview"] && !disabled}
|
|
385
|
+
<div
|
|
386
|
+
class="slider-hover-preview"
|
|
387
|
+
style="--fds-slider-hover-position: {hoverPositionPercentage}%"
|
|
388
|
+
>
|
|
389
|
+
<slot
|
|
390
|
+
name="hover-preview"
|
|
391
|
+
value={hoverPreviewValue}
|
|
392
|
+
percentage={hoverValuePercentage}
|
|
393
|
+
positionPercentage={hoverPositionPercentage}
|
|
394
|
+
/>
|
|
395
|
+
</div>
|
|
396
|
+
{/if}
|
|
397
|
+
|
|
304
398
|
{#if ticks}
|
|
305
399
|
<div class="slider-tick-bar placement-{tickPlacement}" bind:this={tickBarElement}>
|
|
306
400
|
{#each ticks as tick}
|
|
@@ -315,4 +409,4 @@ A slider is a control that lets the user select from a range of values by moving
|
|
|
315
409
|
<input type="range" hidden {min} {max} {step} {disabled} {value} bind:this={inputElement} />
|
|
316
410
|
</div>
|
|
317
411
|
|
|
318
|
-
<style >.slider{align-items:center;border-radius:var(--fds-control-corner-radius);display:flex;justify-content:center;min-block-size:32px;min-inline-size:32px;position:relative}.slider>:global(*){direction:ltr}.slider:focus-visible{box-shadow:var(--fds-focus-stroke);outline:none}.slider-thumb:active :global(.slider-tooltip),.slider:active :global(.slider-tooltip),.slider:focus-visible :global(.slider-tooltip){opacity:1}.slider.orientation-horizontal{block-size:32px;inline-size:100%}.slider.orientation-horizontal .slider-rail{block-size:4px;inline-size:100%;justify-content:flex-start;position:relative}.slider.orientation-horizontal .slider-track{block-size:100%;inline-size:var(--fds-slider-percentage);position:absolute;z-index:1}.slider.orientation-horizontal .slider-buffer-track{block-size:100%;inline-size:var(--fds-buffer-percentage);position:absolute}.slider.orientation-horizontal .slider-loading-track{width:100%;z-index:1}.slider.orientation-horizontal .slider-thumb{inset-inline-start:calc(var(--fds-slider-percentage) + var(--fds-slider-thumb-offset));transform:translateX(-50%)}.slider.orientation-horizontal .slider-tick{flex-direction:column;height:100%;inset-inline-start:var(--fds-slider-tick-percentage);padding:6px 0}.slider.orientation-horizontal .slider-tick:after,.slider.orientation-horizontal .slider-tick:before{-webkit-border-start:1px solid var(--fds-control-strong-fill-default);border-inline-start:1px solid var(--fds-control-strong-fill-default);height:4px;width:1px}.slider.orientation-horizontal.reverse .slider-rail{justify-content:flex-end}.slider.orientation-horizontal.reverse .slider-thumb{inset-inline-end:calc(var(--fds-slider-percentage) + var(--fds-slider-thumb-offset));inset-inline-start:unset;transform:translateX(50%)}.slider.orientation-horizontal.reverse .slider-tick{inset-inline-end:var(--fds-slider-tick-percentage);inset-inline-start:unset}.slider.orientation-vertical{block-size:100%;inline-size:32px}.slider.orientation-vertical .slider-rail{align-items:flex-end;block-size:100%;inline-size:4px}.slider.orientation-vertical .slider-track{block-size:var(--fds-slider-percentage);inline-size:100%}.slider.orientation-vertical .slider-thumb{inset-block-end:calc(var(--fds-slider-percentage) + var(--fds-slider-thumb-offset));transform:translateY(50%)}.slider.orientation-vertical .slider-tick{inset-block-end:var(--fds-slider-tick-percentage);padding:0 6px;width:100%}.slider.orientation-vertical .slider-tick:after,.slider.orientation-vertical .slider-tick:before{-webkit-border-before:1px solid var(--fds-control-strong-fill-default);border-block-start:1px solid var(--fds-control-strong-fill-default);height:1px;width:4px}.slider.orientation-vertical.reverse .slider-rail{align-items:flex-start}.slider.orientation-vertical.reverse .slider-thumb{inset-block-end:unset;inset-block-start:calc(var(--fds-slider-percentage) + var(--fds-slider-thumb-offset));transform:translateY(-50%)}.slider.orientation-vertical.reverse .slider-tick{inset-block-end:unset;inset-block-start:var(--fds-slider-tick-percentage)}.slider.disabled .slider-rail,.slider.disabled .slider-thumb:before,.slider.disabled .slider-track{background-color:var(--fds-accent-disabled)}.slider.disabled .slider-thumb:before{transform:none}.slider.disabled .slider-tick:after,.slider.disabled .slider-tick:before{border-color:var(--fds-control-fill-disabled)}.slider-rail{align-items:center;background-color:var(--fds-control-strong-fill-default);border-radius:50px;display:flex;overflow:hidden}.slider-track{background-color:var(--fds-accent-default)}.slider-buffer-track{background-color:var(--fds-control-strong-stroke-default)}.slider-tick-bar{height:100%;inset-block-start:0;inset-inline-start:0;position:absolute;width:100%;z-index:-1}.slider-tick-bar.placement-after .slider-tick:before,.slider-tick-bar.placement-before .slider-tick:after{visibility:hidden}.slider-tick{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;position:absolute}.slider-tick:after,.slider-tick:before{content:""}.slider-thumb{align-items:center;background-color:var(--fds-control-solid-fill-default);block-size:20px;box-shadow:0 0 0 1px var(--fds-control-stroke-default);display:flex;inline-size:20px;justify-content:center;z-index:10}.slider-thumb,.slider-thumb:before{border-radius:100%;position:absolute}.slider-thumb:before{background-color:var(--fds-accent-default);block-size:12px;content:"";inline-size:12px;transition:var(--fds-control-fast-duration) var(--fds-control-fast-out-slow-in-easing) transform}.slider-thumb:hover:before{transform:scale(1.167)}.slider-thumb:hover :global(.slider-tooltip){opacity:1;transition-delay:1s}.slider-thumb:active:before{background-color:var(--fds-accent-tertiary);transform:scale(.833)}.slider :global(.slider-tooltip){inset-block-end:calc(100% + 18px);inset-inline-start:50%;max-inline-size:unset;opacity:0;pointer-events:none;position:absolute;transform:translateX(-50%);transition:var(--fds-control-fast-duration) linear opacity;white-space:nowrap;z-index:100}</style>
|
|
412
|
+
<style >.slider{align-items:center;border-radius:var(--fds-control-corner-radius);display:flex;justify-content:center;min-block-size:32px;min-inline-size:32px;position:relative}.slider>:global(*){direction:ltr}.slider:focus-visible{box-shadow:var(--fds-focus-stroke);outline:none}.slider-thumb:active :global(.slider-tooltip),.slider:active :global(.slider-tooltip),.slider:focus-visible :global(.slider-tooltip){opacity:1}.slider.orientation-horizontal{block-size:32px;inline-size:100%}.slider.orientation-horizontal .slider-rail{block-size:4px;inline-size:100%;justify-content:flex-start;position:relative}.slider.orientation-horizontal .slider-track{block-size:100%;inline-size:var(--fds-slider-percentage);position:absolute;z-index:1}.slider.orientation-horizontal .slider-buffer-track{block-size:100%;inline-size:var(--fds-buffer-percentage);position:absolute}.slider.orientation-horizontal .slider-loading-track{width:100%;z-index:1}.slider.orientation-horizontal .slider-thumb{inset-inline-start:calc(var(--fds-slider-percentage) + var(--fds-slider-thumb-offset));transform:translateX(-50%)}.slider.orientation-horizontal .slider-hover-preview{inset-block-end:calc(100% + 8px);inset-inline-start:var(--fds-slider-hover-position);transform:translateX(-50%)}.slider.orientation-horizontal .slider-tick{flex-direction:column;height:100%;inset-inline-start:var(--fds-slider-tick-percentage);padding:6px 0}.slider.orientation-horizontal .slider-tick:after,.slider.orientation-horizontal .slider-tick:before{-webkit-border-start:1px solid var(--fds-control-strong-fill-default);border-inline-start:1px solid var(--fds-control-strong-fill-default);height:4px;width:1px}.slider.orientation-horizontal.reverse .slider-rail{justify-content:flex-end}.slider.orientation-horizontal.reverse .slider-thumb{inset-inline-end:calc(var(--fds-slider-percentage) + var(--fds-slider-thumb-offset));inset-inline-start:unset;transform:translateX(50%)}.slider.orientation-horizontal.reverse .slider-tick{inset-inline-end:var(--fds-slider-tick-percentage);inset-inline-start:unset}.slider.orientation-vertical{block-size:100%;inline-size:32px}.slider.orientation-vertical .slider-rail{align-items:flex-end;block-size:100%;inline-size:4px}.slider.orientation-vertical .slider-track{block-size:var(--fds-slider-percentage);inline-size:100%}.slider.orientation-vertical .slider-thumb{inset-block-end:calc(var(--fds-slider-percentage) + var(--fds-slider-thumb-offset));transform:translateY(50%)}.slider.orientation-vertical .slider-hover-preview{inset-block-end:var(--fds-slider-hover-position);inset-inline-start:calc(100% + 8px);transform:translateY(50%)}.slider.orientation-vertical .slider-tick{inset-block-end:var(--fds-slider-tick-percentage);padding:0 6px;width:100%}.slider.orientation-vertical .slider-tick:after,.slider.orientation-vertical .slider-tick:before{-webkit-border-before:1px solid var(--fds-control-strong-fill-default);border-block-start:1px solid var(--fds-control-strong-fill-default);height:1px;width:4px}.slider.orientation-vertical.reverse .slider-rail{align-items:flex-start}.slider.orientation-vertical.reverse .slider-thumb{inset-block-end:unset;inset-block-start:calc(var(--fds-slider-percentage) + var(--fds-slider-thumb-offset));transform:translateY(-50%)}.slider.orientation-vertical.reverse .slider-tick{inset-block-end:unset;inset-block-start:var(--fds-slider-tick-percentage)}.slider.disabled .slider-rail,.slider.disabled .slider-thumb:before,.slider.disabled .slider-track{background-color:var(--fds-accent-disabled)}.slider.disabled .slider-thumb:before{transform:none}.slider.disabled .slider-tick:after,.slider.disabled .slider-tick:before{border-color:var(--fds-control-fill-disabled)}.slider-rail{align-items:center;background-color:var(--fds-control-strong-fill-default);border-radius:50px;display:flex;overflow:hidden}.slider-track{background-color:var(--fds-accent-default)}.slider-buffer-track{background-color:var(--fds-control-strong-stroke-default)}.slider-hover-preview{pointer-events:none;position:absolute;z-index:30}.slider-tick-bar{height:100%;inset-block-start:0;inset-inline-start:0;position:absolute;width:100%;z-index:-1}.slider-tick-bar.placement-after .slider-tick:before,.slider-tick-bar.placement-before .slider-tick:after{visibility:hidden}.slider-tick{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;position:absolute}.slider-tick:after,.slider-tick:before{content:""}.slider-thumb{align-items:center;background-color:var(--fds-control-solid-fill-default);block-size:20px;box-shadow:0 0 0 1px var(--fds-control-stroke-default);display:flex;inline-size:20px;justify-content:center;z-index:10}.slider-thumb,.slider-thumb:before{border-radius:100%;position:absolute}.slider-thumb:before{background-color:var(--fds-accent-default);block-size:12px;content:"";inline-size:12px;transition:var(--fds-control-fast-duration) var(--fds-control-fast-out-slow-in-easing) transform}.slider-thumb:hover:before{transform:scale(1.167)}.slider-thumb:hover :global(.slider-tooltip){opacity:1;transition-delay:1s}.slider-thumb:active:before{background-color:var(--fds-accent-tertiary);transform:scale(.833)}.slider :global(.slider-tooltip){inset-block-end:calc(100% + 18px);inset-inline-start:50%;max-inline-size:unset;opacity:0;pointer-events:none;position:absolute;transform:translateX(-50%);transition:var(--fds-control-fast-duration) linear opacity;white-space:nowrap;z-index:100}</style>
|
|
@@ -33,6 +33,7 @@ declare const __propDef: {
|
|
|
33
33
|
userHoldStart: CustomEvent<any>;
|
|
34
34
|
userHoldEnd: CustomEvent<any>;
|
|
35
35
|
userChange: CustomEvent<any>;
|
|
36
|
+
hoverChange: CustomEvent<any>;
|
|
36
37
|
change: CustomEvent<any>;
|
|
37
38
|
end: CustomEvent<any>;
|
|
38
39
|
} & {
|
|
@@ -44,6 +45,11 @@ declare const __propDef: {
|
|
|
44
45
|
suffix: string;
|
|
45
46
|
value: number;
|
|
46
47
|
};
|
|
48
|
+
'hover-preview': {
|
|
49
|
+
value: number;
|
|
50
|
+
percentage: number;
|
|
51
|
+
positionPercentage: number;
|
|
52
|
+
};
|
|
47
53
|
};
|
|
48
54
|
};
|
|
49
55
|
export declare type SliderProps = typeof __propDef.props;
|
package/package.json
CHANGED