@umbraco-ui/uui-range-slider 1.2.1 → 1.3.0-rc.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/lib/UUIRangeSliderEvent.d.ts +1 -0
- package/lib/index.js +57 -6
- package/package.json +4 -4
|
@@ -3,4 +3,5 @@ import { UUIRangeSliderElement } from './uui-range-slider.element';
|
|
|
3
3
|
export declare class UUIRangeSliderEvent extends UUIEvent<{}, UUIRangeSliderElement> {
|
|
4
4
|
static readonly INPUT = "input";
|
|
5
5
|
static readonly CHANGE = "change";
|
|
6
|
+
constructor(evName: string, eventInit?: any | null);
|
|
6
7
|
}
|
package/lib/index.js
CHANGED
|
@@ -5,7 +5,26 @@ import { LitElement, html, svg, nothing, css } from 'lit';
|
|
|
5
5
|
import { property, state, query } from 'lit/decorators.js';
|
|
6
6
|
import { UUIEvent } from '@umbraco-ui/uui-base/lib/events';
|
|
7
7
|
|
|
8
|
+
var __defProp$1 = Object.defineProperty;
|
|
9
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
10
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
12
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
13
|
+
var __spreadValues = (a, b) => {
|
|
14
|
+
for (var prop in b || (b = {}))
|
|
15
|
+
if (__hasOwnProp.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
if (__getOwnPropSymbols)
|
|
18
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
19
|
+
if (__propIsEnum.call(b, prop))
|
|
20
|
+
__defNormalProp(a, prop, b[prop]);
|
|
21
|
+
}
|
|
22
|
+
return a;
|
|
23
|
+
};
|
|
8
24
|
class UUIRangeSliderEvent extends UUIEvent {
|
|
25
|
+
constructor(evName, eventInit = {}) {
|
|
26
|
+
super(evName, __spreadValues(__spreadValues({}, { bubbles: true }), eventInit));
|
|
27
|
+
}
|
|
9
28
|
}
|
|
10
29
|
UUIRangeSliderEvent.INPUT = "input";
|
|
11
30
|
UUIRangeSliderEvent.CHANGE = "change";
|
|
@@ -38,6 +57,7 @@ var _setValue, setValue_fn;
|
|
|
38
57
|
const TRACK_PADDING = 12;
|
|
39
58
|
const STEP_MIN_WIDTH = 24;
|
|
40
59
|
let UUIRangeSliderElement = class extends FormControlMixin(LitElement) {
|
|
60
|
+
/** Constructor */
|
|
41
61
|
constructor() {
|
|
42
62
|
super();
|
|
43
63
|
__privateAdd(this, _setValue);
|
|
@@ -53,6 +73,7 @@ let UUIRangeSliderElement = class extends FormControlMixin(LitElement) {
|
|
|
53
73
|
this._startPos = 0;
|
|
54
74
|
this._startLow = 0;
|
|
55
75
|
this._startHigh = 0;
|
|
76
|
+
/** Mouse events */
|
|
56
77
|
this._onMouseDown = (e) => {
|
|
57
78
|
e.preventDefault();
|
|
58
79
|
if (this.disabled)
|
|
@@ -85,6 +106,7 @@ let UUIRangeSliderElement = class extends FormControlMixin(LitElement) {
|
|
|
85
106
|
window.removeEventListener("mouseup", this._onMouseUp);
|
|
86
107
|
window.removeEventListener("mousemove", this._onMouseMove);
|
|
87
108
|
};
|
|
109
|
+
/** Touch / mobile events */
|
|
88
110
|
this._onTouchStart = (e) => {
|
|
89
111
|
e.preventDefault();
|
|
90
112
|
if (this.disabled)
|
|
@@ -204,6 +226,7 @@ let UUIRangeSliderElement = class extends FormControlMixin(LitElement) {
|
|
|
204
226
|
this.submit();
|
|
205
227
|
}
|
|
206
228
|
}
|
|
229
|
+
/** Thumb position */
|
|
207
230
|
_sliderLowThumbPosition() {
|
|
208
231
|
const ratio = (this.valueLow - this.min) / (this.max - this.min);
|
|
209
232
|
const valueLowPercent = `${Math.floor(ratio * 1e5) / 1e3}%`;
|
|
@@ -214,12 +237,14 @@ let UUIRangeSliderElement = class extends FormControlMixin(LitElement) {
|
|
|
214
237
|
const valueHighPercent = `${Math.floor(ratio * 1e5) / 1e3}%`;
|
|
215
238
|
return valueHighPercent;
|
|
216
239
|
}
|
|
240
|
+
/** Coloring of the line between thumbs */
|
|
217
241
|
_fillColor() {
|
|
218
242
|
const percentStart = (this.valueLow - this.min) / (this.max - this.min) * 100;
|
|
219
243
|
const percentEnd = (this.valueHigh - this.min) / (this.max - this.min) * 100;
|
|
220
244
|
this._innerColor.style.left = `${percentStart}%`;
|
|
221
245
|
this._innerColor.style.right = `${100 - percentEnd}%`;
|
|
222
246
|
}
|
|
247
|
+
/** Moving thumb */
|
|
223
248
|
_moveThumb(pageX) {
|
|
224
249
|
const value = this._getValue(pageX);
|
|
225
250
|
if (value >= this.valueHigh)
|
|
@@ -230,11 +255,13 @@ let UUIRangeSliderElement = class extends FormControlMixin(LitElement) {
|
|
|
230
255
|
this._validateValueBasedOnCurrentThumb(value)
|
|
231
256
|
);
|
|
232
257
|
}
|
|
258
|
+
/** */
|
|
233
259
|
_stop() {
|
|
234
260
|
this._grabbingBoth = false;
|
|
235
261
|
this.pristine = false;
|
|
236
262
|
this.dispatchEvent(new UUIRangeSliderEvent(UUIRangeSliderEvent.CHANGE));
|
|
237
263
|
}
|
|
264
|
+
/** The latest thumb in use */
|
|
238
265
|
_setThumb(target) {
|
|
239
266
|
this._currentThumbFocus = target === this._thumbLow ? "low" : "high";
|
|
240
267
|
this._currentThumbFocus === "low" ? this._currentInputFocus = this._inputLow : this._currentInputFocus = this._inputHigh;
|
|
@@ -243,6 +270,7 @@ let UUIRangeSliderElement = class extends FormControlMixin(LitElement) {
|
|
|
243
270
|
_setValueBasedOnCurrentThumb(val) {
|
|
244
271
|
this._currentThumbFocus === "low" ? this.valueLow = val : this.valueHigh = val;
|
|
245
272
|
}
|
|
273
|
+
/** Get the value depends on where clicked/touched */
|
|
246
274
|
_getValue(pageX) {
|
|
247
275
|
const mouseXPosition = pageX - this._innerTrack.getBoundingClientRect().left;
|
|
248
276
|
const clickPercent = mouseXPosition / (this._trackWidth - TRACK_PADDING * 2);
|
|
@@ -286,6 +314,7 @@ let UUIRangeSliderElement = class extends FormControlMixin(LitElement) {
|
|
|
286
314
|
newHigh = this.maxGap ? this._validateHighByMaxGap(newHigh) : newHigh;
|
|
287
315
|
return newHigh;
|
|
288
316
|
}
|
|
317
|
+
/** Methods when moving both thumbs */
|
|
289
318
|
_saveStartPoint(pageX, lowVal, highVal) {
|
|
290
319
|
this._startPos = pageX;
|
|
291
320
|
this._startLow = lowVal;
|
|
@@ -310,6 +339,7 @@ let UUIRangeSliderElement = class extends FormControlMixin(LitElement) {
|
|
|
310
339
|
const validatedHigh = high < this.max ? high : this.max;
|
|
311
340
|
return { low: validatedLow, high: validatedHigh };
|
|
312
341
|
}
|
|
342
|
+
/** CHANGE AND INPUT EVENT LISTENERS */
|
|
313
343
|
_onChange(e) {
|
|
314
344
|
e.stopPropagation();
|
|
315
345
|
this.pristine = false;
|
|
@@ -345,6 +375,7 @@ let UUIRangeSliderElement = class extends FormControlMixin(LitElement) {
|
|
|
345
375
|
this._trackWidth = this._outerTrack.offsetWidth;
|
|
346
376
|
this._fillColor();
|
|
347
377
|
}
|
|
378
|
+
/** RENDER */
|
|
348
379
|
render() {
|
|
349
380
|
return html`
|
|
350
381
|
<div id="range-slider">
|
|
@@ -397,6 +428,7 @@ let UUIRangeSliderElement = class extends FormControlMixin(LitElement) {
|
|
|
397
428
|
<div class="value value-max">${this.valueHigh}</div>
|
|
398
429
|
</div>`;
|
|
399
430
|
}
|
|
431
|
+
/** RENDER STEPS & STEP VALUES */
|
|
400
432
|
renderStepsOutput() {
|
|
401
433
|
return html`<div class="svg-wrapper">
|
|
402
434
|
<svg height="100%" width="100%">
|
|
@@ -532,8 +564,14 @@ UUIRangeSliderElement.styles = [
|
|
|
532
564
|
transition: background-color 320ms ease-out;
|
|
533
565
|
}
|
|
534
566
|
|
|
535
|
-
|
|
536
|
-
|
|
567
|
+
:host(:not([disabled]))
|
|
568
|
+
#range-slider
|
|
569
|
+
#inner-track
|
|
570
|
+
.color:has(.color-target:hover),
|
|
571
|
+
:host(:not([disabled]))
|
|
572
|
+
#range-slider
|
|
573
|
+
#inner-track
|
|
574
|
+
.color:has(.color-target:active) {
|
|
537
575
|
background-color: var(--uui-color-focus,#3879ff);
|
|
538
576
|
}
|
|
539
577
|
|
|
@@ -651,10 +689,23 @@ UUIRangeSliderElement.styles = [
|
|
|
651
689
|
var(--uui-color-focus,#3879ff);
|
|
652
690
|
}
|
|
653
691
|
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
692
|
+
:host(:not([disabled]))
|
|
693
|
+
#range-slider
|
|
694
|
+
#inner-track
|
|
695
|
+
.color:has(.color-target:hover)
|
|
696
|
+
~ #low-thumb,
|
|
697
|
+
:host(:not([disabled]))
|
|
698
|
+
#range-slider
|
|
699
|
+
#inner-track
|
|
700
|
+
.color:has(.color-target:active)
|
|
701
|
+
~ #low-thumb,
|
|
702
|
+
:host(:not([disabled]))
|
|
703
|
+
#range-slider
|
|
704
|
+
#inner-track
|
|
705
|
+
.color:has(.color-target:hover)
|
|
706
|
+
~ #high-thumb,
|
|
707
|
+
:host(:not([disabled]))
|
|
708
|
+
#range-slider
|
|
658
709
|
#inner-track
|
|
659
710
|
.color:has(.color-target:active)
|
|
660
711
|
~ #high-thumb {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umbraco-ui/uui-range-slider",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0-rc.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Umbraco",
|
|
@@ -30,16 +30,16 @@
|
|
|
30
30
|
"custom-elements.json"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@umbraco-ui/uui-base": "1.
|
|
33
|
+
"@umbraco-ui/uui-base": "1.3.0-rc.1"
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
36
36
|
"build": "npm run analyze && tsc --build --force && rollup -c rollup.config.js",
|
|
37
|
-
"clean": "tsc --build --clean && rimraf dist lib/*.js lib/**/*.js custom-elements.json",
|
|
37
|
+
"clean": "tsc --build --clean && rimraf -g dist lib/*.js lib/**/*.js *.tgz lib/**/*.d.ts custom-elements.json",
|
|
38
38
|
"analyze": "web-component-analyzer **/*.element.ts --outFile custom-elements.json"
|
|
39
39
|
},
|
|
40
40
|
"publishConfig": {
|
|
41
41
|
"access": "public"
|
|
42
42
|
},
|
|
43
43
|
"homepage": "https://uui.umbraco.com/?path=/story/uui-range-slider",
|
|
44
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "0c517175884931aa0bc0d8f05974852a7704626e"
|
|
45
45
|
}
|