@aquera/nile-elements 1.8.1 → 1.8.2
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/README.md +3 -0
- package/dist/index.js +323 -174
- package/dist/nile-slider/nile-slider.cjs.js +1 -1
- package/dist/nile-slider/nile-slider.cjs.js.map +1 -1
- package/dist/nile-slider/nile-slider.css.cjs.js +1 -1
- package/dist/nile-slider/nile-slider.css.cjs.js.map +1 -1
- package/dist/nile-slider/nile-slider.css.esm.js +162 -41
- package/dist/nile-slider/nile-slider.esm.js +5 -3
- package/dist/nile-slider/nile-slider.template.cjs.js +1 -1
- package/dist/nile-slider/nile-slider.template.cjs.js.map +1 -1
- package/dist/nile-slider/nile-slider.template.esm.js +49 -23
- package/dist/nile-slider/utils/nile-slider.utils.cjs.js +1 -1
- package/dist/nile-slider/utils/nile-slider.utils.cjs.js.map +1 -1
- package/dist/nile-slider/utils/nile-slider.utils.esm.js +1 -1
- package/dist/src/nile-slider/nile-slider.css.js +160 -39
- package/dist/src/nile-slider/nile-slider.css.js.map +1 -1
- package/dist/src/nile-slider/nile-slider.d.ts +5 -1
- package/dist/src/nile-slider/nile-slider.js +23 -1
- package/dist/src/nile-slider/nile-slider.js.map +1 -1
- package/dist/src/nile-slider/nile-slider.template.d.ts +2 -0
- package/dist/src/nile-slider/nile-slider.template.js +38 -1
- package/dist/src/nile-slider/nile-slider.template.js.map +1 -1
- package/dist/src/nile-slider/types/nile-slider.types.d.ts +1 -0
- package/dist/src/nile-slider/types/nile-slider.types.js.map +1 -1
- package/dist/src/nile-slider/utils/nile-slider.utils.js +4 -0
- package/dist/src/nile-slider/utils/nile-slider.utils.js.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/nile-slider/nile-slider.css.ts +160 -39
- package/src/nile-slider/nile-slider.template.ts +45 -2
- package/src/nile-slider/nile-slider.ts +11 -3
- package/src/nile-slider/types/nile-slider.types.ts +2 -0
- package/src/nile-slider/utils/nile-slider.utils.ts +2 -0
- package/vscode-html-custom-data.json +38 -9
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import{html as a}from"lit";import{classMap as
|
|
1
|
+
import{html as a}from"lit";import{classMap as l}from"lit/directives/class-map.js";import{v as e}from"./utils/nile-slider.utils.esm.js";const i=a=>a.disabled||"tooltip"!==a.valueLabel,t=l=>a`
|
|
2
2
|
<div>
|
|
3
3
|
<nile-tooltip
|
|
4
|
-
content=${
|
|
5
|
-
placement=${
|
|
4
|
+
content=${l.rangeOneValue}
|
|
5
|
+
placement=${l.tooltipPosition}
|
|
6
|
+
?disabled=${i(l)}
|
|
6
7
|
>
|
|
7
8
|
<div
|
|
8
9
|
id="range-one"
|
|
@@ -10,15 +11,16 @@ import{html as a}from"lit";import{classMap as e}from"lit/directives/class-map.js
|
|
|
10
11
|
part="range-button"
|
|
11
12
|
role="slider"
|
|
12
13
|
tabindex="0"
|
|
13
|
-
aria-valuemin=${
|
|
14
|
-
aria-valuemax=${
|
|
15
|
-
aria-valuenow=${
|
|
14
|
+
aria-valuemin=${l.minValue}
|
|
15
|
+
aria-valuemax=${l.maxValue}
|
|
16
|
+
aria-valuenow=${l.rangeOneValue}
|
|
16
17
|
aria-label="Minimum value"
|
|
17
18
|
></div>
|
|
18
19
|
</nile-tooltip>
|
|
19
20
|
<nile-tooltip
|
|
20
|
-
content=${
|
|
21
|
-
placement=${
|
|
21
|
+
content=${l.rangeTwoValue}
|
|
22
|
+
placement=${l.tooltipPosition}
|
|
23
|
+
?disabled=${i(l)}
|
|
22
24
|
>
|
|
23
25
|
<div
|
|
24
26
|
id="range-two"
|
|
@@ -26,34 +28,58 @@ import{html as a}from"lit";import{classMap as e}from"lit/directives/class-map.js
|
|
|
26
28
|
part="range-button-two"
|
|
27
29
|
role="slider"
|
|
28
30
|
tabindex="0"
|
|
29
|
-
aria-valuemin=${
|
|
30
|
-
aria-valuemax=${
|
|
31
|
-
aria-valuenow=${
|
|
31
|
+
aria-valuemin=${l.minValue}
|
|
32
|
+
aria-valuemax=${l.maxValue}
|
|
33
|
+
aria-valuenow=${l.rangeTwoValue}
|
|
32
34
|
aria-label="Maximum value"
|
|
33
35
|
></div>
|
|
34
36
|
</nile-tooltip>
|
|
35
37
|
</div>
|
|
36
|
-
`,
|
|
38
|
+
`,n=e=>a`
|
|
37
39
|
<div>
|
|
38
40
|
<nile-tooltip
|
|
39
|
-
content=${
|
|
40
|
-
placement=${
|
|
41
|
+
content=${e.value}
|
|
42
|
+
placement=${e.tooltipPosition}
|
|
43
|
+
?disabled=${i(e)}
|
|
41
44
|
>
|
|
42
45
|
<div
|
|
43
|
-
class=${
|
|
46
|
+
class=${l({"range-button":!0,"range-button-active":"one"===e.activeThumb})}
|
|
44
47
|
part="range-button"
|
|
45
48
|
role="slider"
|
|
46
49
|
tabindex="0"
|
|
47
|
-
aria-valuemin=${
|
|
48
|
-
aria-valuemax=${
|
|
49
|
-
aria-valuenow=${
|
|
50
|
-
aria-label=${
|
|
50
|
+
aria-valuemin=${e.minValue}
|
|
51
|
+
aria-valuemax=${e.maxValue}
|
|
52
|
+
aria-valuenow=${e.value}
|
|
53
|
+
aria-label=${e.ariaLabel||e.label||"Slider value"}
|
|
51
54
|
></div>
|
|
52
55
|
</nile-tooltip>
|
|
53
56
|
</div>
|
|
54
|
-
`,l
|
|
57
|
+
`,s=l=>a`
|
|
55
58
|
<div part="label-container" class="label-container">
|
|
56
|
-
<span id="label-start">${
|
|
57
|
-
<span id="label-end">${
|
|
59
|
+
<span id="label-start">${l.labelStart}</span>
|
|
60
|
+
<span id="label-end">${l.labelEnd}</span>
|
|
61
|
+
</div>
|
|
62
|
+
`,r=l=>a`
|
|
63
|
+
<div part="field-header" class="field-header">
|
|
64
|
+
<label id="field-label" part="field-label" class="field-label">
|
|
65
|
+
${l.label}
|
|
66
|
+
</label>
|
|
58
67
|
</div>
|
|
59
|
-
|
|
68
|
+
`,o=l=>l.rangeSlider?a`
|
|
69
|
+
<span
|
|
70
|
+
part="value-label"
|
|
71
|
+
class="value-label"
|
|
72
|
+
style="left: ${e(l.rangeOneValue,l)}%"
|
|
73
|
+
>${l.rangeOneValue}</span>
|
|
74
|
+
<span
|
|
75
|
+
part="value-label"
|
|
76
|
+
class="value-label"
|
|
77
|
+
style="left: ${e(l.rangeTwoValue,l)}%"
|
|
78
|
+
>${l.rangeTwoValue}</span>
|
|
79
|
+
`:a`
|
|
80
|
+
<span
|
|
81
|
+
part="value-label"
|
|
82
|
+
class="value-label"
|
|
83
|
+
style="left: ${e(l.value,l)}%"
|
|
84
|
+
>${l.value}</span>
|
|
85
|
+
`;export{o as b,r as f,s as l,t as r,n as s};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
System.register([],function(_export,_context){"use strict";var t,a,n,o,e,s,u,h,c,l;return{setters:[],execute:function execute(){t=function t(_t,a){return Math.max(0,Math.min(a,_t.width))/_t.width*100;},a=function a(t,_a){var n=_a.minValue+t/100*(_a.maxValue-_a.minValue);return _a.maxValue-_a.minValue<1?parseFloat(n.toFixed(2)):Math.floor(n);},_export("v",n=function n(t,a){return(t-a.minValue)/(a.maxValue-a.minValue)*100;}),_export("h",o=function o(n,_o,e){var s=n.clientX-_o.left,u=t(_o,s);e.value=a(u,e),e.emit("nile-change",{value:e.value}),e.buttonOne.style.left="".concat(u,"%"),e.completed.style.width="".concat(u,"%");}),_export("a",e=function e(n,o,_e){var s=n.clientX-o.left,u=t(o,s);_e.rangeOneValue=a(u,_e),_e.rangeOneValue=Math.min(_e.rangeOneValue,_e.rangeTwoValue),_e.emit("nile-button-first-change",{value:_e.rangeOneValue}),_e.rangeTwoValue>_e.rangeOneValue&&(_e.buttonOne.style.left="".concat(u,"%"));}),_export("b",s=function s(n,o,e){var s=n.clientX-o.left,u=t(o,s);e.rangeTwoValue=a(u,e),e.rangeTwoValue=Math.max(e.rangeTwoValue,e.rangeOneValue),e.emit("nile-button-last-change",{value:e.rangeTwoValue}),e.rangeTwoValue>e.rangeOneValue&&(e.buttonTwo.style.left="".concat(u,"%"));}),_export("g",u=function u(t){var _t$buttonOne,_t$buttonTwo;t.range=t.renderRoot.querySelector(".range"),t.buttonOne=t.renderRoot.querySelector(".range-button"),t.buttonTwo=t.renderRoot.querySelector(".range-button-two"),t.completed=t.renderRoot.querySelector(".range-completed"),t.range.addEventListener("mousedown",t.onMouseDown),(_t$buttonOne=t.buttonOne)!==null&&_t$buttonOne!==void 0&&_t$buttonOne.addEventListener("mousedown",function(){t.activeThumb="one",h(t);}),(_t$buttonTwo=t.buttonTwo)===null||_t$buttonTwo===void 0?void 0:_t$buttonTwo.addEventListener("mousedown",function(){t.activeThumb="two",h(t);});}),_export("c",h=function h(t){window.addEventListener("mousemove",t.onMouseMove),window.addEventListener("mouseup",t.onMouseUp);}),_export("r",c=function c(t){window.removeEventListener("mousemove",t.onMouseMove),window.removeEventListener("mouseup",t.onMouseUp);}),_export("d",l=function l(t,a){if(Math.abs(t-a.rangeOneValue)<=Math.abs(t-a.rangeTwoValue)){var _n=Math.min(t,a.rangeTwoValue);a.rangeOneValue=a.checkValueValidity(_n,a.minValue,a.maxValue);}else{var _n2=Math.max(t,a.rangeOneValue);a.rangeTwoValue=a.checkValueValidity(_n2,a.minValue,a.maxValue);}var o=n(a.rangeOneValue,a),e=n(a.rangeTwoValue,a);a.buttonOne.style.left="".concat(o,"%"),a.buttonTwo.style.left="".concat(e,"%");var s=Math.min(o,e),u=Math.abs(e-o);a.completed.style.left="".concat(s,"%"),a.completed.style.width="".concat(u,"%"),a.emit("nile-button-first-change",{value:a.rangeOneValue}),a.emit("nile-button-last-change",{value:a.rangeTwoValue});});}};});
|
|
1
|
+
System.register([],function(_export,_context){"use strict";var t,a,n,o,e,s,u,h,c,l;return{setters:[],execute:function execute(){t=function t(_t,a){return Math.max(0,Math.min(a,_t.width))/_t.width*100;},a=function a(t,_a){var n=_a.minValue+t/100*(_a.maxValue-_a.minValue);return _a.maxValue-_a.minValue<1?parseFloat(n.toFixed(2)):Math.floor(n);},_export("v",n=function n(t,a){return(t-a.minValue)/(a.maxValue-a.minValue)*100;}),_export("h",o=function o(n,_o,e){var s=n.clientX-_o.left,u=t(_o,s);e.value=a(u,e),e.emit("nile-change",{value:e.value}),e.buttonOne.style.left="".concat(u,"%"),e.completed.style.width="".concat(u,"%");}),_export("a",e=function e(n,o,_e){var s=n.clientX-o.left,u=t(o,s);_e.rangeOneValue=a(u,_e),_e.rangeOneValue=Math.min(_e.rangeOneValue,_e.rangeTwoValue),_e.emit("nile-button-first-change",{value:_e.rangeOneValue}),_e.rangeTwoValue>_e.rangeOneValue&&(_e.buttonOne.style.left="".concat(u,"%"));}),_export("b",s=function s(n,o,e){var s=n.clientX-o.left,u=t(o,s);e.rangeTwoValue=a(u,e),e.rangeTwoValue=Math.max(e.rangeTwoValue,e.rangeOneValue),e.emit("nile-button-last-change",{value:e.rangeTwoValue}),e.rangeTwoValue>e.rangeOneValue&&(e.buttonTwo.style.left="".concat(u,"%"));}),_export("g",u=function u(t){var _t$buttonOne,_t$buttonTwo;t.range=t.renderRoot.querySelector(".range"),t.buttonOne=t.renderRoot.querySelector(".range-button"),t.buttonTwo=t.renderRoot.querySelector(".range-button-two"),t.completed=t.renderRoot.querySelector(".range-completed"),t.range.addEventListener("mousedown",t.onMouseDown),(_t$buttonOne=t.buttonOne)!==null&&_t$buttonOne!==void 0&&_t$buttonOne.addEventListener("mousedown",function(){t.disabled||(t.activeThumb="one",h(t));}),(_t$buttonTwo=t.buttonTwo)===null||_t$buttonTwo===void 0?void 0:_t$buttonTwo.addEventListener("mousedown",function(){t.disabled||(t.activeThumb="two",h(t));});}),_export("c",h=function h(t){window.addEventListener("mousemove",t.onMouseMove),window.addEventListener("mouseup",t.onMouseUp);}),_export("r",c=function c(t){window.removeEventListener("mousemove",t.onMouseMove),window.removeEventListener("mouseup",t.onMouseUp);}),_export("d",l=function l(t,a){if(Math.abs(t-a.rangeOneValue)<=Math.abs(t-a.rangeTwoValue)){var _n=Math.min(t,a.rangeTwoValue);a.rangeOneValue=a.checkValueValidity(_n,a.minValue,a.maxValue);}else{var _n2=Math.max(t,a.rangeOneValue);a.rangeTwoValue=a.checkValueValidity(_n2,a.minValue,a.maxValue);}var o=n(a.rangeOneValue,a),e=n(a.rangeTwoValue,a);a.buttonOne.style.left="".concat(o,"%"),a.buttonTwo.style.left="".concat(e,"%");var s=Math.min(o,e),u=Math.abs(e-o);a.completed.style.left="".concat(s,"%"),a.completed.style.width="".concat(u,"%"),a.emit("nile-button-first-change",{value:a.rangeOneValue}),a.emit("nile-button-last-change",{value:a.rangeTwoValue});});}};});
|
|
2
2
|
//# sourceMappingURL=nile-slider.utils.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nile-slider.utils.cjs.js","sources":["../../../../src/nile-slider/utils/nile-slider.utils.ts"],"sourcesContent":["import NileSlider from '../nile-slider';\nimport { NileSliderEvents } from '../types/nile-slider.enums';\n\nexport const getClampedPercent = (\n rect: DOMRect,\n x: number,\n): number => {\n const clampedX = Math.max(0, Math.min(x, rect.width)); \n const percent = (clampedX / rect.width) * 100;\n return percent;\n};\n\nexport const percentToValue = (percent: number, nileSlider: NileSlider): number => {\n const value = nileSlider.minValue + (percent / 100) * (nileSlider.maxValue - nileSlider.minValue);\n if(nileSlider.maxValue - nileSlider.minValue < 1) {\n return parseFloat(value.toFixed(2));\n } else {\n return Math.floor(value);\n }\n};\n\nexport const valueToPercent = (value: number, nileSlider: NileSlider): number => {\n return ((value - nileSlider.minValue) / (nileSlider.maxValue - nileSlider.minValue)) * 100;\n};\n\nexport const handleSingleSlider = (\n e: MouseEvent,\n rect: DOMRect,\n nileSlider: NileSlider\n): void => {\n const x = e.clientX - rect.left;\n const percent = getClampedPercent(rect, x);\n nileSlider.value = percentToValue(percent, nileSlider);\n nileSlider.emit(NileSliderEvents.NILE_CHANGE, { value: nileSlider.value });\n nileSlider.buttonOne.style.left = `${percent}%`;\n nileSlider.completed.style.width = `${percent}%`;\n};\n\nexport const handleRangeOne = (\n e: MouseEvent,\n rect: DOMRect,\n nileSlider: NileSlider\n): void => {\n const x = e.clientX - rect.left;\n const percent = getClampedPercent(rect, x);\n nileSlider.rangeOneValue = percentToValue(percent, nileSlider);\n nileSlider.rangeOneValue = Math.min(nileSlider.rangeOneValue, nileSlider.rangeTwoValue);\n nileSlider.emit(NileSliderEvents.NILE_BUTTON_FIRST_CHANGE, {\n value: nileSlider.rangeOneValue,\n });\n if (nileSlider.rangeTwoValue > nileSlider.rangeOneValue) {\n nileSlider.buttonOne.style.left = `${percent}%`;\n }\n};\n\nexport const handleRangeTwo = (\n e: MouseEvent,\n rect: DOMRect,\n nileSlider: NileSlider\n): void => {\n const x = e.clientX - rect.left;\n const percent = getClampedPercent(rect, x);\n nileSlider.rangeTwoValue = percentToValue(percent, nileSlider);\n nileSlider.rangeTwoValue = Math.max(nileSlider.rangeTwoValue, nileSlider.rangeOneValue);\n nileSlider.emit(NileSliderEvents.NILE_BUTTON_LAST_CHANGE, {\n value: nileSlider.rangeTwoValue,\n });\n\n if (nileSlider.rangeTwoValue > nileSlider.rangeOneValue) {\n nileSlider.buttonTwo.style.left = `${percent}%`;\n }\n};\n\nexport const getHtmlElements = (nileSlider: NileSlider) => {\n nileSlider.range = nileSlider.renderRoot.querySelector('.range') as HTMLElement;\n nileSlider.buttonOne = nileSlider.renderRoot.querySelector('.range-button') as HTMLElement;\n nileSlider.buttonTwo = nileSlider.renderRoot.querySelector('.range-button-two') as HTMLElement;\n nileSlider.completed = nileSlider.renderRoot.querySelector('.range-completed') as HTMLElement;\n\n nileSlider.range.addEventListener('mousedown', nileSlider.onMouseDown);\n\n nileSlider.buttonOne?.addEventListener('mousedown', () => {\n nileSlider.activeThumb = 'one';\n addMoveListeners(nileSlider);\n });\n\n nileSlider.buttonTwo?.addEventListener('mousedown', () => {\n nileSlider.activeThumb = 'two';\n addMoveListeners(nileSlider);\n });\n};\n\nexport const addMoveListeners = (nileSlider: NileSlider): void => {\n window.addEventListener('mousemove', nileSlider.onMouseMove);\n window.addEventListener('mouseup', nileSlider.onMouseUp);\n};\n\nexport const removeMoveListeners = (nileSlider: NileSlider): void => {\n window.removeEventListener('mousemove', nileSlider.onMouseMove);\n window.removeEventListener('mouseup', nileSlider.onMouseUp);\n};\n\nexport const handleTwoThumbClick = (\n value: number,\n nileSlider: NileSlider\n): void => {\n const distToOne = Math.abs(value - nileSlider.rangeOneValue);\n const distToTwo = Math.abs(value - nileSlider.rangeTwoValue);\n\n if (distToOne <= distToTwo) {\n const clamped = Math.min(value, nileSlider.rangeTwoValue);\n nileSlider.rangeOneValue = nileSlider.checkValueValidity(clamped, nileSlider.minValue, nileSlider.maxValue);\n } else {\n const clamped = Math.max(value, nileSlider.rangeOneValue);\n nileSlider.rangeTwoValue = nileSlider.checkValueValidity(clamped, nileSlider.minValue, nileSlider.maxValue);\n } \n\n const percentOne = valueToPercent(nileSlider.rangeOneValue, nileSlider);\n const percentTwo = valueToPercent(nileSlider.rangeTwoValue, nileSlider);\n\n nileSlider.buttonOne.style.left = `${percentOne}%`;\n nileSlider.buttonTwo.style.left = `${percentTwo}%`;\n\n const left = Math.min(percentOne, percentTwo);\n const width = Math.abs(percentTwo - percentOne);\n\n nileSlider.completed.style.left = `${left}%`;\n nileSlider.completed.style.width = `${width}%`;\n\n nileSlider.emit(NileSliderEvents.NILE_BUTTON_FIRST_CHANGE, {\n value: nileSlider.rangeOneValue,\n });\n nileSlider.emit(NileSliderEvents.NILE_BUTTON_LAST_CHANGE, {\n value: nileSlider.rangeTwoValue,\n });\n};\n"],"names":["getClampedPercent","rect","x","Math","max","min","width","percentToValue","percent","nileSlider","value","minValue","maxValue","parseFloat","toFixed","floor","_export","valueToPercent","handleSingleSlider","e","clientX","left","emit","buttonOne","style","completed","concat","handleRangeOne","rangeOneValue","rangeTwoValue","handleRangeTwo","buttonTwo","getHtmlElements","range","renderRoot","querySelector","addEventListener","onMouseDown","activeThumb","addMoveListeners","window","onMouseMove","onMouseUp","removeMoveListeners","removeEventListener","handleTwoThumbClick","abs","clamped","checkValueValidity","percentOne","percentTwo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nile-slider.utils.cjs.js","sources":["../../../../src/nile-slider/utils/nile-slider.utils.ts"],"sourcesContent":["import NileSlider from '../nile-slider';\nimport { NileSliderEvents } from '../types/nile-slider.enums';\n\nexport const getClampedPercent = (\n rect: DOMRect,\n x: number,\n): number => {\n const clampedX = Math.max(0, Math.min(x, rect.width)); \n const percent = (clampedX / rect.width) * 100;\n return percent;\n};\n\nexport const percentToValue = (percent: number, nileSlider: NileSlider): number => {\n const value = nileSlider.minValue + (percent / 100) * (nileSlider.maxValue - nileSlider.minValue);\n if(nileSlider.maxValue - nileSlider.minValue < 1) {\n return parseFloat(value.toFixed(2));\n } else {\n return Math.floor(value);\n }\n};\n\nexport const valueToPercent = (value: number, nileSlider: NileSlider): number => {\n return ((value - nileSlider.minValue) / (nileSlider.maxValue - nileSlider.minValue)) * 100;\n};\n\nexport const handleSingleSlider = (\n e: MouseEvent,\n rect: DOMRect,\n nileSlider: NileSlider\n): void => {\n const x = e.clientX - rect.left;\n const percent = getClampedPercent(rect, x);\n nileSlider.value = percentToValue(percent, nileSlider);\n nileSlider.emit(NileSliderEvents.NILE_CHANGE, { value: nileSlider.value });\n nileSlider.buttonOne.style.left = `${percent}%`;\n nileSlider.completed.style.width = `${percent}%`;\n};\n\nexport const handleRangeOne = (\n e: MouseEvent,\n rect: DOMRect,\n nileSlider: NileSlider\n): void => {\n const x = e.clientX - rect.left;\n const percent = getClampedPercent(rect, x);\n nileSlider.rangeOneValue = percentToValue(percent, nileSlider);\n nileSlider.rangeOneValue = Math.min(nileSlider.rangeOneValue, nileSlider.rangeTwoValue);\n nileSlider.emit(NileSliderEvents.NILE_BUTTON_FIRST_CHANGE, {\n value: nileSlider.rangeOneValue,\n });\n if (nileSlider.rangeTwoValue > nileSlider.rangeOneValue) {\n nileSlider.buttonOne.style.left = `${percent}%`;\n }\n};\n\nexport const handleRangeTwo = (\n e: MouseEvent,\n rect: DOMRect,\n nileSlider: NileSlider\n): void => {\n const x = e.clientX - rect.left;\n const percent = getClampedPercent(rect, x);\n nileSlider.rangeTwoValue = percentToValue(percent, nileSlider);\n nileSlider.rangeTwoValue = Math.max(nileSlider.rangeTwoValue, nileSlider.rangeOneValue);\n nileSlider.emit(NileSliderEvents.NILE_BUTTON_LAST_CHANGE, {\n value: nileSlider.rangeTwoValue,\n });\n\n if (nileSlider.rangeTwoValue > nileSlider.rangeOneValue) {\n nileSlider.buttonTwo.style.left = `${percent}%`;\n }\n};\n\nexport const getHtmlElements = (nileSlider: NileSlider) => {\n nileSlider.range = nileSlider.renderRoot.querySelector('.range') as HTMLElement;\n nileSlider.buttonOne = nileSlider.renderRoot.querySelector('.range-button') as HTMLElement;\n nileSlider.buttonTwo = nileSlider.renderRoot.querySelector('.range-button-two') as HTMLElement;\n nileSlider.completed = nileSlider.renderRoot.querySelector('.range-completed') as HTMLElement;\n\n nileSlider.range.addEventListener('mousedown', nileSlider.onMouseDown);\n\n nileSlider.buttonOne?.addEventListener('mousedown', () => {\n if (nileSlider.disabled) return;\n nileSlider.activeThumb = 'one';\n addMoveListeners(nileSlider);\n });\n\n nileSlider.buttonTwo?.addEventListener('mousedown', () => {\n if (nileSlider.disabled) return;\n nileSlider.activeThumb = 'two';\n addMoveListeners(nileSlider);\n });\n};\n\nexport const addMoveListeners = (nileSlider: NileSlider): void => {\n window.addEventListener('mousemove', nileSlider.onMouseMove);\n window.addEventListener('mouseup', nileSlider.onMouseUp);\n};\n\nexport const removeMoveListeners = (nileSlider: NileSlider): void => {\n window.removeEventListener('mousemove', nileSlider.onMouseMove);\n window.removeEventListener('mouseup', nileSlider.onMouseUp);\n};\n\nexport const handleTwoThumbClick = (\n value: number,\n nileSlider: NileSlider\n): void => {\n const distToOne = Math.abs(value - nileSlider.rangeOneValue);\n const distToTwo = Math.abs(value - nileSlider.rangeTwoValue);\n\n if (distToOne <= distToTwo) {\n const clamped = Math.min(value, nileSlider.rangeTwoValue);\n nileSlider.rangeOneValue = nileSlider.checkValueValidity(clamped, nileSlider.minValue, nileSlider.maxValue);\n } else {\n const clamped = Math.max(value, nileSlider.rangeOneValue);\n nileSlider.rangeTwoValue = nileSlider.checkValueValidity(clamped, nileSlider.minValue, nileSlider.maxValue);\n } \n\n const percentOne = valueToPercent(nileSlider.rangeOneValue, nileSlider);\n const percentTwo = valueToPercent(nileSlider.rangeTwoValue, nileSlider);\n\n nileSlider.buttonOne.style.left = `${percentOne}%`;\n nileSlider.buttonTwo.style.left = `${percentTwo}%`;\n\n const left = Math.min(percentOne, percentTwo);\n const width = Math.abs(percentTwo - percentOne);\n\n nileSlider.completed.style.left = `${left}%`;\n nileSlider.completed.style.width = `${width}%`;\n\n nileSlider.emit(NileSliderEvents.NILE_BUTTON_FIRST_CHANGE, {\n value: nileSlider.rangeOneValue,\n });\n nileSlider.emit(NileSliderEvents.NILE_BUTTON_LAST_CHANGE, {\n value: nileSlider.rangeTwoValue,\n });\n};\n"],"names":["getClampedPercent","rect","x","Math","max","min","width","percentToValue","percent","nileSlider","value","minValue","maxValue","parseFloat","toFixed","floor","_export","valueToPercent","n","handleSingleSlider","e","clientX","left","emit","buttonOne","style","completed","handleRangeOne","rangeOneValue","rangeTwoValue","handleRangeTwo","s","buttonTwo","concat","getHtmlElements","range","renderRoot","querySelector","addEventListener","onMouseDown","disabled","activeThumb","addMoveListeners","window","onMouseMove","onMouseUp","removeMoveListeners","removeEventListener","handleTwoThumbClick","l","abs","clamped","checkValueValidity","percentOne","percentTwo"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const t=(t,a)=>Math.max(0,Math.min(a,t.width))/t.width*100,a=(t,a)=>{const n=a.minValue+t/100*(a.maxValue-a.minValue);return a.maxValue-a.minValue<1?parseFloat(n.toFixed(2)):Math.floor(n)},n=(t,a)=>(t-a.minValue)/(a.maxValue-a.minValue)*100,o=(n,o,e)=>{const s=n.clientX-o.left,u=t(o,s);e.value=a(u,e),e.emit("nile-change",{value:e.value}),e.buttonOne.style.left=`${u}%`,e.completed.style.width=`${u}%`},e=(n,o,e)=>{const s=n.clientX-o.left,u=t(o,s);e.rangeOneValue=a(u,e),e.rangeOneValue=Math.min(e.rangeOneValue,e.rangeTwoValue),e.emit("nile-button-first-change",{value:e.rangeOneValue}),e.rangeTwoValue>e.rangeOneValue&&(e.buttonOne.style.left=`${u}%`)},s=(n,o,e)=>{const s=n.clientX-o.left,u=t(o,s);e.rangeTwoValue=a(u,e),e.rangeTwoValue=Math.max(e.rangeTwoValue,e.rangeOneValue),e.emit("nile-button-last-change",{value:e.rangeTwoValue}),e.rangeTwoValue>e.rangeOneValue&&(e.buttonTwo.style.left=`${u}%`)},u=t=>{t.range=t.renderRoot.querySelector(".range"),t.buttonOne=t.renderRoot.querySelector(".range-button"),t.buttonTwo=t.renderRoot.querySelector(".range-button-two"),t.completed=t.renderRoot.querySelector(".range-completed"),t.range.addEventListener("mousedown",t.onMouseDown),t.buttonOne?.addEventListener("mousedown",(()=>{t.activeThumb="one",h(t)})),t.buttonTwo?.addEventListener("mousedown",(()=>{t.activeThumb="two",h(t)}))},h=t=>{window.addEventListener("mousemove",t.onMouseMove),window.addEventListener("mouseup",t.onMouseUp)},c=t=>{window.removeEventListener("mousemove",t.onMouseMove),window.removeEventListener("mouseup",t.onMouseUp)},l=(t,a)=>{if(Math.abs(t-a.rangeOneValue)<=Math.abs(t-a.rangeTwoValue)){const n=Math.min(t,a.rangeTwoValue);a.rangeOneValue=a.checkValueValidity(n,a.minValue,a.maxValue)}else{const n=Math.max(t,a.rangeOneValue);a.rangeTwoValue=a.checkValueValidity(n,a.minValue,a.maxValue)}const o=n(a.rangeOneValue,a),e=n(a.rangeTwoValue,a);a.buttonOne.style.left=`${o}%`,a.buttonTwo.style.left=`${e}%`;const s=Math.min(o,e),u=Math.abs(e-o);a.completed.style.left=`${s}%`,a.completed.style.width=`${u}%`,a.emit("nile-button-first-change",{value:a.rangeOneValue}),a.emit("nile-button-last-change",{value:a.rangeTwoValue})};export{e as a,s as b,h as c,l as d,u as g,o as h,c as r,n as v};
|
|
1
|
+
const t=(t,a)=>Math.max(0,Math.min(a,t.width))/t.width*100,a=(t,a)=>{const n=a.minValue+t/100*(a.maxValue-a.minValue);return a.maxValue-a.minValue<1?parseFloat(n.toFixed(2)):Math.floor(n)},n=(t,a)=>(t-a.minValue)/(a.maxValue-a.minValue)*100,o=(n,o,e)=>{const s=n.clientX-o.left,u=t(o,s);e.value=a(u,e),e.emit("nile-change",{value:e.value}),e.buttonOne.style.left=`${u}%`,e.completed.style.width=`${u}%`},e=(n,o,e)=>{const s=n.clientX-o.left,u=t(o,s);e.rangeOneValue=a(u,e),e.rangeOneValue=Math.min(e.rangeOneValue,e.rangeTwoValue),e.emit("nile-button-first-change",{value:e.rangeOneValue}),e.rangeTwoValue>e.rangeOneValue&&(e.buttonOne.style.left=`${u}%`)},s=(n,o,e)=>{const s=n.clientX-o.left,u=t(o,s);e.rangeTwoValue=a(u,e),e.rangeTwoValue=Math.max(e.rangeTwoValue,e.rangeOneValue),e.emit("nile-button-last-change",{value:e.rangeTwoValue}),e.rangeTwoValue>e.rangeOneValue&&(e.buttonTwo.style.left=`${u}%`)},u=t=>{t.range=t.renderRoot.querySelector(".range"),t.buttonOne=t.renderRoot.querySelector(".range-button"),t.buttonTwo=t.renderRoot.querySelector(".range-button-two"),t.completed=t.renderRoot.querySelector(".range-completed"),t.range.addEventListener("mousedown",t.onMouseDown),t.buttonOne?.addEventListener("mousedown",(()=>{t.disabled||(t.activeThumb="one",h(t))})),t.buttonTwo?.addEventListener("mousedown",(()=>{t.disabled||(t.activeThumb="two",h(t))}))},h=t=>{window.addEventListener("mousemove",t.onMouseMove),window.addEventListener("mouseup",t.onMouseUp)},c=t=>{window.removeEventListener("mousemove",t.onMouseMove),window.removeEventListener("mouseup",t.onMouseUp)},l=(t,a)=>{if(Math.abs(t-a.rangeOneValue)<=Math.abs(t-a.rangeTwoValue)){const n=Math.min(t,a.rangeTwoValue);a.rangeOneValue=a.checkValueValidity(n,a.minValue,a.maxValue)}else{const n=Math.max(t,a.rangeOneValue);a.rangeTwoValue=a.checkValueValidity(n,a.minValue,a.maxValue)}const o=n(a.rangeOneValue,a),e=n(a.rangeTwoValue,a);a.buttonOne.style.left=`${o}%`,a.buttonTwo.style.left=`${e}%`;const s=Math.min(o,e),u=Math.abs(e-o);a.completed.style.left=`${s}%`,a.completed.style.width=`${u}%`,a.emit("nile-button-first-change",{value:a.rangeOneValue}),a.emit("nile-button-last-change",{value:a.rangeTwoValue})};export{e as a,s as b,h as c,l as d,u as g,o as h,c as r,n as v};
|
|
@@ -13,12 +13,31 @@ export const styles = css `
|
|
|
13
13
|
display: block;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
/* Field header */
|
|
17
|
+
|
|
18
|
+
.field-header {
|
|
19
|
+
display: flex;
|
|
20
|
+
justify-content: space-between;
|
|
21
|
+
align-items: center;
|
|
22
|
+
gap: var(--nile-spacing-md, var(--ng-spacing-md));
|
|
23
|
+
margin-bottom: var(--nile-spacing-sm, var(--ng-spacing-sm));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.field-label {
|
|
27
|
+
font-family: var(--nile-font-family-serif, var(--ng-font-family-body));
|
|
28
|
+
font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));
|
|
29
|
+
font-weight: var(--nile-font-weight-medium, var(--ng-font-weight-medium));
|
|
30
|
+
color: var(--nile-colors-dark-900, var(--ng-colors-text-secondary-700));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* Layout */
|
|
34
|
+
|
|
16
35
|
.container {
|
|
17
36
|
display: flex;
|
|
18
37
|
justify-content: center;
|
|
19
38
|
align-items: center;
|
|
20
|
-
gap:
|
|
21
|
-
height:
|
|
39
|
+
gap: var(--nile-spacing-md, var(--ng-spacing-md));
|
|
40
|
+
min-height: var(--nile-spacing-5xl, var(--ng-spacing-5xl));
|
|
22
41
|
}
|
|
23
42
|
|
|
24
43
|
.align-item-center {
|
|
@@ -26,14 +45,14 @@ export const styles = css `
|
|
|
26
45
|
}
|
|
27
46
|
|
|
28
47
|
slot.span {
|
|
29
|
-
font-size: var(--nile-font-size-micro);
|
|
30
|
-
margin-top: 14px;
|
|
48
|
+
font-size: var(--nile-font-size-micro, var(--ng-font-size-text-xs));
|
|
31
49
|
}
|
|
32
50
|
|
|
33
51
|
.range-container {
|
|
34
52
|
display: flex;
|
|
35
53
|
flex-direction: column;
|
|
36
|
-
|
|
54
|
+
flex: 1 1 auto;
|
|
55
|
+
gap: var(--nile-spacing-sm, var(--ng-spacing-sm));
|
|
37
56
|
}
|
|
38
57
|
|
|
39
58
|
.column-reverse {
|
|
@@ -46,18 +65,21 @@ export const styles = css `
|
|
|
46
65
|
}
|
|
47
66
|
|
|
48
67
|
.label-container span {
|
|
49
|
-
margin: var(--nile-spacing-none);
|
|
50
|
-
padding: var(--nile-spacing-none);
|
|
51
|
-
font-size: var(--nile-font-size-micro);
|
|
68
|
+
margin: var(--nile-spacing-none, var(--ng-spacing-none));
|
|
69
|
+
padding: var(--nile-spacing-none, var(--ng-spacing-none));
|
|
70
|
+
font-size: var(--nile-font-size-micro, var(--ng-font-size-text-xs));
|
|
71
|
+
color: var(--nile-colors-dark-500, var(--ng-colors-text-tertiary-600));
|
|
52
72
|
}
|
|
53
73
|
|
|
74
|
+
/* track & fill */
|
|
75
|
+
|
|
54
76
|
.range {
|
|
55
77
|
position: relative;
|
|
56
|
-
width: 228px;
|
|
57
|
-
height:
|
|
58
|
-
background-color: var(--nile-colors-neutral-400);
|
|
78
|
+
width: var(--nile-slider-width, 228px);
|
|
79
|
+
height: var(--nile-spacing-xs, var(--ng-spacing-sm));
|
|
80
|
+
background-color: var(--nile-colors-neutral-400, var(--ng-colors-bg-quaternary));
|
|
59
81
|
user-select: none;
|
|
60
|
-
border-radius: var(--nile-radius-radius-3xl);
|
|
82
|
+
border-radius: var(--nile-radius-radius-3xl, var(--ng-radius-full));
|
|
61
83
|
}
|
|
62
84
|
|
|
63
85
|
.range:hover {
|
|
@@ -68,50 +90,149 @@ export const styles = css `
|
|
|
68
90
|
position: absolute;
|
|
69
91
|
height: 100%;
|
|
70
92
|
width: 0%;
|
|
71
|
-
background-color: var(--nile-colors-primary-600);
|
|
93
|
+
background-color: var(--nile-colors-primary-600, var(--ng-colors-bg-brand-solid));
|
|
72
94
|
top: 0px;
|
|
73
95
|
left: 0px;
|
|
74
96
|
z-index: 98;
|
|
75
|
-
border-radius: var(--nile-radius-radius-3xl);
|
|
97
|
+
border-radius: var(--nile-radius-radius-3xl, var(--ng-radius-full));
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/* ------------------------------------------------------------------ */
|
|
101
|
+
/* Inline value label (valueLabel="bottom") */
|
|
102
|
+
/* ------------------------------------------------------------------ */
|
|
103
|
+
|
|
104
|
+
.value-label {
|
|
105
|
+
position: absolute;
|
|
106
|
+
/* Start at the track bottom, then push down past the handle and the
|
|
107
|
+
largest (pressed, 8px) ring */
|
|
108
|
+
top: 100%;
|
|
109
|
+
margin-top: var(--nile-spacing-xl, var(--ng-spacing-xl));
|
|
110
|
+
transform: translateX(-50%);
|
|
111
|
+
font-family: var(--nile-font-family-serif, var(--ng-font-family-body));
|
|
112
|
+
font-size: var(--nile-font-size-micro, var(--ng-font-size-text-xs));
|
|
113
|
+
font-variant-numeric: tabular-nums;
|
|
114
|
+
color: var(--nile-colors-dark-500, var(--ng-colors-text-quaternary-500));
|
|
115
|
+
white-space: nowrap;
|
|
116
|
+
pointer-events: none;
|
|
117
|
+
user-select: none;
|
|
118
|
+
-webkit-user-select: none;
|
|
76
119
|
}
|
|
77
120
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
121
|
+
/* Reserve room below the track for the inline value label */
|
|
122
|
+
:host([valuelabel='bottom']) .container {
|
|
123
|
+
padding-bottom: var(--nile-spacing-2xl, var(--ng-spacing-2xl));
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/* Handles */
|
|
127
|
+
|
|
128
|
+
.range-button,
|
|
129
|
+
.range-button-two {
|
|
130
|
+
height: var(--nile-spacing-lg, var(--ng-spacing-2xl));
|
|
131
|
+
width: var(--nile-spacing-lg, var(--ng-spacing-2xl));
|
|
132
|
+
box-sizing: border-box;
|
|
133
|
+
/* Enterprise: solid brand dot - NextGen: white fill + brand border */
|
|
134
|
+
background-color: var(--nile-colors-primary-600, var(--ng-colors-bg-primary));
|
|
135
|
+
border: var(--nile-spacing-xxs, var(--ng-spacing-xxs)) solid
|
|
136
|
+
var(--nile-colors-primary-600, var(--ng-colors-border-brand-alt));
|
|
82
137
|
position: absolute;
|
|
83
138
|
top: 50%;
|
|
84
139
|
transform: translate(-50%, -50%);
|
|
85
|
-
border-radius: var(--nile-radius-radius-3xl);
|
|
140
|
+
border-radius: var(--nile-radius-radius-3xl, var(--ng-radius-full));
|
|
86
141
|
left: 0;
|
|
87
142
|
z-index: 100;
|
|
88
|
-
|
|
89
|
-
transition:
|
|
143
|
+
cursor: grab;
|
|
144
|
+
transition:
|
|
145
|
+
box-shadow var(--nile-transition-duration-short, 120ms) ease,
|
|
146
|
+
background-color var(--nile-transition-duration-short, 120ms) ease,
|
|
147
|
+
transform var(--nile-transition-duration-shorter, 80ms) ease;
|
|
90
148
|
}
|
|
91
149
|
|
|
92
|
-
.range-button
|
|
93
|
-
|
|
94
|
-
background-color: var(--nile-colors-primary-700);
|
|
150
|
+
.range-button-two {
|
|
151
|
+
left: 100%;
|
|
95
152
|
}
|
|
96
153
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
154
|
+
/* Hover: ring (Enterprise 2px - NextGen 6px) */
|
|
155
|
+
.range-button:hover,
|
|
156
|
+
.range-button-two:hover {
|
|
157
|
+
cursor: grab;
|
|
158
|
+
box-shadow: 0 0 0 var(--nile-spacing-xxs, var(--ng-spacing-sm))
|
|
159
|
+
var(--nile-colors-primary-100, var(--ng-colors-bg-brand-secondary));
|
|
101
160
|
}
|
|
102
161
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
162
|
+
/* Focused: theme focus ring */
|
|
163
|
+
.range-button:focus-visible,
|
|
164
|
+
.range-button-two:focus-visible {
|
|
165
|
+
outline: none;
|
|
166
|
+
box-shadow: var(--nile-focus-ring,
|
|
167
|
+
var(--ng-focus-ring,
|
|
168
|
+
0 0 0 var(--nile-spacing-xs) var(--nile-colors-primary-100)));
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/* Pressed: ring (Enterprise 4px - NextGen 8px) + 1.1x scale */
|
|
172
|
+
.range-button:active,
|
|
173
|
+
.range-button-two:active {
|
|
174
|
+
cursor: grabbing;
|
|
175
|
+
transform: translate(-50%, -50%) scale(1.1);
|
|
176
|
+
box-shadow: 0 0 0 var(--nile-spacing-xs, var(--ng-spacing-md))
|
|
177
|
+
var(--nile-colors-primary-100, var(--ng-colors-bg-brand-secondary));
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/* Error state */
|
|
181
|
+
:host([error]) .range-completed {
|
|
182
|
+
background-color: var(--nile-colors-red-700, var(--ng-colors-bg-error-solid));
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
:host([error]) .range-button,
|
|
186
|
+
:host([error]) .range-button-two {
|
|
187
|
+
background-color: var(--nile-colors-red-700, var(--ng-colors-bg-primary));
|
|
188
|
+
border-color: var(--nile-colors-red-700, var(--ng-colors-border-error));
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
:host([error]) .range-button:hover,
|
|
192
|
+
:host([error]) .range-button-two:hover {
|
|
193
|
+
box-shadow: 0 0 0 var(--nile-spacing-xxs, var(--ng-spacing-sm))
|
|
194
|
+
var(--nile-colors-red-100, var(--ng-colors-bg-error-secondary, var(--ng-color-error-100)));
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
:host([error]) .range-button:focus-visible,
|
|
198
|
+
:host([error]) .range-button-two:focus-visible {
|
|
199
|
+
box-shadow: var(--nile-focus-ring-error,
|
|
200
|
+
var(--ng-focus-ring-error,
|
|
201
|
+
0 0 0 var(--nile-spacing-xs) var(--nile-colors-red-100)));
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/* Disabled state */
|
|
205
|
+
:host([disabled]) .range,
|
|
206
|
+
:host([disabled]) .range:hover {
|
|
207
|
+
cursor: not-allowed;
|
|
208
|
+
background-color: var(--nile-colors-neutral-100, var(--ng-colors-bg-disabled));
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
:host([disabled]) .range-completed {
|
|
212
|
+
background-color: var(--nile-colors-neutral-500, var(--ng-colors-fg-disabled));
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
:host([disabled]) .range-button,
|
|
216
|
+
:host([disabled]) .range-button-two {
|
|
217
|
+
background-color: var(--nile-colors-neutral-500, var(--ng-colors-bg-primary));
|
|
218
|
+
border-color: var(--nile-colors-neutral-500, var(--ng-colors-border-disabled));
|
|
219
|
+
cursor: not-allowed;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
:host([disabled]) .range-button:hover,
|
|
223
|
+
:host([disabled]) .range-button-two:hover,
|
|
224
|
+
:host([disabled]) .range-button:active,
|
|
225
|
+
:host([disabled]) .range-button-two:active {
|
|
226
|
+
box-shadow: none;
|
|
109
227
|
transform: translate(-50%, -50%);
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
:host([disabled]) .field-label,
|
|
231
|
+
:host([disabled]) .value-label,
|
|
232
|
+
:host([disabled]) .label-container span {
|
|
233
|
+
color: var(--nile-colors-neutral-500, var(--ng-colors-fg-disabled));
|
|
234
|
+
user-select: none;
|
|
235
|
+
-webkit-user-select: none;
|
|
115
236
|
}
|
|
116
237
|
`;
|
|
117
238
|
export default [styles];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nile-slider.css.js","sourceRoot":"","sources":["../../../src/nile-slider/nile-slider.css.ts"],"names":[],"mappings":"AAAA;;;;;EAKE;AACF,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;EAEE;AACF,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"nile-slider.css.js","sourceRoot":"","sources":["../../../src/nile-slider/nile-slider.css.ts"],"names":[],"mappings":"AAAA;;;;;EAKE;AACF,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;EAEE;AACF,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkOxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n* Copyright Aquera Inc 2025\n*\n* This source code is licensed under the BSD-3-Clause license found in the\n* LICENSE file in the root directory of this source tree.\n*/\nimport { css } from 'lit';\n\n/**\n* Slider CSS\n*/\nexport const styles = css`\n :host {\n display: block;\n }\n\n /* Field header */\n\n .field-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--nile-spacing-md, var(--ng-spacing-md));\n margin-bottom: var(--nile-spacing-sm, var(--ng-spacing-sm));\n }\n\n .field-label {\n font-family: var(--nile-font-family-serif, var(--ng-font-family-body));\n font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));\n font-weight: var(--nile-font-weight-medium, var(--ng-font-weight-medium));\n color: var(--nile-colors-dark-900, var(--ng-colors-text-secondary-700));\n }\n\n /* Layout */\n\n .container {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: var(--nile-spacing-md, var(--ng-spacing-md));\n min-height: var(--nile-spacing-5xl, var(--ng-spacing-5xl));\n }\n\n .align-item-center {\n align-items: center;\n }\n\n slot.span {\n font-size: var(--nile-font-size-micro, var(--ng-font-size-text-xs));\n }\n\n .range-container {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n gap: var(--nile-spacing-sm, var(--ng-spacing-sm));\n }\n\n .column-reverse {\n flex-direction: column-reverse;\n }\n\n .label-container {\n display: flex;\n justify-content: space-between;\n }\n\n .label-container span {\n margin: var(--nile-spacing-none, var(--ng-spacing-none));\n padding: var(--nile-spacing-none, var(--ng-spacing-none));\n font-size: var(--nile-font-size-micro, var(--ng-font-size-text-xs));\n color: var(--nile-colors-dark-500, var(--ng-colors-text-tertiary-600));\n }\n\n /* track & fill */\n\n .range {\n position: relative;\n width: var(--nile-slider-width, 228px);\n height: var(--nile-spacing-xs, var(--ng-spacing-sm));\n background-color: var(--nile-colors-neutral-400, var(--ng-colors-bg-quaternary));\n user-select: none;\n border-radius: var(--nile-radius-radius-3xl, var(--ng-radius-full));\n }\n\n .range:hover {\n cursor: pointer;\n }\n\n .range-completed {\n position: absolute;\n height: 100%;\n width: 0%;\n background-color: var(--nile-colors-primary-600, var(--ng-colors-bg-brand-solid));\n top: 0px;\n left: 0px;\n z-index: 98;\n border-radius: var(--nile-radius-radius-3xl, var(--ng-radius-full));\n }\n\n /* ------------------------------------------------------------------ */\n /* Inline value label (valueLabel=\"bottom\") */\n /* ------------------------------------------------------------------ */\n\n .value-label {\n position: absolute;\n /* Start at the track bottom, then push down past the handle and the\n largest (pressed, 8px) ring */\n top: 100%;\n margin-top: var(--nile-spacing-xl, var(--ng-spacing-xl));\n transform: translateX(-50%);\n font-family: var(--nile-font-family-serif, var(--ng-font-family-body));\n font-size: var(--nile-font-size-micro, var(--ng-font-size-text-xs));\n font-variant-numeric: tabular-nums;\n color: var(--nile-colors-dark-500, var(--ng-colors-text-quaternary-500));\n white-space: nowrap;\n pointer-events: none;\n user-select: none;\n -webkit-user-select: none;\n }\n\n /* Reserve room below the track for the inline value label */\n :host([valuelabel='bottom']) .container {\n padding-bottom: var(--nile-spacing-2xl, var(--ng-spacing-2xl));\n }\n\n /* Handles */\n\n .range-button,\n .range-button-two {\n height: var(--nile-spacing-lg, var(--ng-spacing-2xl));\n width: var(--nile-spacing-lg, var(--ng-spacing-2xl));\n box-sizing: border-box;\n /* Enterprise: solid brand dot - NextGen: white fill + brand border */\n background-color: var(--nile-colors-primary-600, var(--ng-colors-bg-primary));\n border: var(--nile-spacing-xxs, var(--ng-spacing-xxs)) solid\n var(--nile-colors-primary-600, var(--ng-colors-border-brand-alt));\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n border-radius: var(--nile-radius-radius-3xl, var(--ng-radius-full));\n left: 0;\n z-index: 100;\n cursor: grab;\n transition:\n box-shadow var(--nile-transition-duration-short, 120ms) ease,\n background-color var(--nile-transition-duration-short, 120ms) ease,\n transform var(--nile-transition-duration-shorter, 80ms) ease;\n }\n\n .range-button-two {\n left: 100%;\n }\n\n /* Hover: ring (Enterprise 2px - NextGen 6px) */\n .range-button:hover,\n .range-button-two:hover {\n cursor: grab;\n box-shadow: 0 0 0 var(--nile-spacing-xxs, var(--ng-spacing-sm))\n var(--nile-colors-primary-100, var(--ng-colors-bg-brand-secondary));\n }\n\n /* Focused: theme focus ring */\n .range-button:focus-visible,\n .range-button-two:focus-visible {\n outline: none;\n box-shadow: var(--nile-focus-ring,\n var(--ng-focus-ring,\n 0 0 0 var(--nile-spacing-xs) var(--nile-colors-primary-100)));\n }\n\n /* Pressed: ring (Enterprise 4px - NextGen 8px) + 1.1x scale */\n .range-button:active,\n .range-button-two:active {\n cursor: grabbing;\n transform: translate(-50%, -50%) scale(1.1);\n box-shadow: 0 0 0 var(--nile-spacing-xs, var(--ng-spacing-md))\n var(--nile-colors-primary-100, var(--ng-colors-bg-brand-secondary));\n }\n\n /* Error state */\n :host([error]) .range-completed {\n background-color: var(--nile-colors-red-700, var(--ng-colors-bg-error-solid));\n }\n\n :host([error]) .range-button,\n :host([error]) .range-button-two {\n background-color: var(--nile-colors-red-700, var(--ng-colors-bg-primary));\n border-color: var(--nile-colors-red-700, var(--ng-colors-border-error));\n }\n\n :host([error]) .range-button:hover,\n :host([error]) .range-button-two:hover {\n box-shadow: 0 0 0 var(--nile-spacing-xxs, var(--ng-spacing-sm))\n var(--nile-colors-red-100, var(--ng-colors-bg-error-secondary, var(--ng-color-error-100)));\n }\n\n :host([error]) .range-button:focus-visible,\n :host([error]) .range-button-two:focus-visible {\n box-shadow: var(--nile-focus-ring-error,\n var(--ng-focus-ring-error,\n 0 0 0 var(--nile-spacing-xs) var(--nile-colors-red-100)));\n }\n\n /* Disabled state */\n :host([disabled]) .range,\n :host([disabled]) .range:hover {\n cursor: not-allowed;\n background-color: var(--nile-colors-neutral-100, var(--ng-colors-bg-disabled));\n }\n\n :host([disabled]) .range-completed {\n background-color: var(--nile-colors-neutral-500, var(--ng-colors-fg-disabled));\n }\n\n :host([disabled]) .range-button,\n :host([disabled]) .range-button-two {\n background-color: var(--nile-colors-neutral-500, var(--ng-colors-bg-primary));\n border-color: var(--nile-colors-neutral-500, var(--ng-colors-border-disabled));\n cursor: not-allowed;\n }\n\n :host([disabled]) .range-button:hover,\n :host([disabled]) .range-button-two:hover,\n :host([disabled]) .range-button:active,\n :host([disabled]) .range-button-two:active {\n box-shadow: none;\n transform: translate(-50%, -50%);\n }\n\n :host([disabled]) .field-label,\n :host([disabled]) .value-label,\n :host([disabled]) .label-container span {\n color: var(--nile-colors-neutral-500, var(--ng-colors-fg-disabled));\n user-select: none;\n -webkit-user-select: none;\n }\n`;\n\nexport default [styles];\n"]}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import NileElement from '../internal/nile-element';
|
|
8
8
|
import { CSSResultArray, TemplateResult } from 'lit';
|
|
9
|
-
import { TooltipPosition } from './types/nile-slider.types';
|
|
9
|
+
import { TooltipPosition, ValueLabelMode } from './types/nile-slider.types';
|
|
10
10
|
/**
|
|
11
11
|
* Nile slider component.
|
|
12
12
|
*
|
|
@@ -25,6 +25,10 @@ export declare class NileSlider extends NileElement {
|
|
|
25
25
|
rangeSlider: boolean;
|
|
26
26
|
labelPosition: string;
|
|
27
27
|
tooltipPosition: TooltipPosition;
|
|
28
|
+
label: string;
|
|
29
|
+
disabled: boolean;
|
|
30
|
+
error: boolean;
|
|
31
|
+
valueLabel: ValueLabelMode;
|
|
28
32
|
buttonOne: HTMLElement;
|
|
29
33
|
buttonTwo: HTMLElement;
|
|
30
34
|
range: HTMLElement;
|
|
@@ -10,7 +10,7 @@ import NileElement from '../internal/nile-element';
|
|
|
10
10
|
import { classMap } from 'lit/directives/class-map.js';
|
|
11
11
|
import { html } from 'lit';
|
|
12
12
|
import { customElement, property } from 'lit/decorators.js';
|
|
13
|
-
import { rangeSlider, singleSlider, lableContaier } from './nile-slider.template';
|
|
13
|
+
import { rangeSlider, singleSlider, lableContaier, fieldHeader, bottomValueLabels } from './nile-slider.template';
|
|
14
14
|
import { handleSingleSlider, handleRangeOne, handleRangeTwo, getHtmlElements, removeMoveListeners, valueToPercent, handleTwoThumbClick, addMoveListeners } from './utils/nile-slider.utils';
|
|
15
15
|
/**
|
|
16
16
|
* Nile slider component.
|
|
@@ -31,8 +31,14 @@ let NileSlider = class NileSlider extends NileElement {
|
|
|
31
31
|
this.rangeSlider = false;
|
|
32
32
|
this.labelPosition = "top";
|
|
33
33
|
this.tooltipPosition = "top";
|
|
34
|
+
this.label = "";
|
|
35
|
+
this.disabled = false;
|
|
36
|
+
this.error = false;
|
|
37
|
+
this.valueLabel = 'tooltip';
|
|
34
38
|
this.activeThumb = null;
|
|
35
39
|
this.onMouseMove = (e) => {
|
|
40
|
+
if (this.disabled)
|
|
41
|
+
return;
|
|
36
42
|
const rect = this.range.getBoundingClientRect();
|
|
37
43
|
if (!this.rangeSlider) {
|
|
38
44
|
handleSingleSlider(e, rect, this);
|
|
@@ -65,6 +71,8 @@ let NileSlider = class NileSlider extends NileElement {
|
|
|
65
71
|
removeMoveListeners(this);
|
|
66
72
|
};
|
|
67
73
|
this.onMouseDown = (e) => {
|
|
74
|
+
if (this.disabled)
|
|
75
|
+
return;
|
|
68
76
|
const rect = this.range.getBoundingClientRect();
|
|
69
77
|
const clickX = e.clientX - rect.left;
|
|
70
78
|
const percent = (clickX / rect.width) * 100;
|
|
@@ -138,6 +146,7 @@ let NileSlider = class NileSlider extends NileElement {
|
|
|
138
146
|
const hasLabels = this.showLabel;
|
|
139
147
|
const ariaLabelledby = hasLabels ? 'label-start label-end' : undefined;
|
|
140
148
|
return html `
|
|
149
|
+
${this.label ? fieldHeader(this) : html ``}
|
|
141
150
|
<div
|
|
142
151
|
part="base"
|
|
143
152
|
class=${classMap({
|
|
@@ -164,6 +173,7 @@ let NileSlider = class NileSlider extends NileElement {
|
|
|
164
173
|
>
|
|
165
174
|
<span class="range-completed" part="range-completed"></span>
|
|
166
175
|
${this.rangeSlider ? rangeSlider(this) : singleSlider(this)}
|
|
176
|
+
${this.valueLabel === 'bottom' ? bottomValueLabels(this) : html ``}
|
|
167
177
|
</div>
|
|
168
178
|
</div>
|
|
169
179
|
|
|
@@ -209,6 +219,18 @@ __decorate([
|
|
|
209
219
|
__decorate([
|
|
210
220
|
property({ type: String })
|
|
211
221
|
], NileSlider.prototype, "tooltipPosition", void 0);
|
|
222
|
+
__decorate([
|
|
223
|
+
property({ type: String })
|
|
224
|
+
], NileSlider.prototype, "label", void 0);
|
|
225
|
+
__decorate([
|
|
226
|
+
property({ type: Boolean, reflect: true })
|
|
227
|
+
], NileSlider.prototype, "disabled", void 0);
|
|
228
|
+
__decorate([
|
|
229
|
+
property({ type: Boolean, reflect: true })
|
|
230
|
+
], NileSlider.prototype, "error", void 0);
|
|
231
|
+
__decorate([
|
|
232
|
+
property({ type: String, reflect: true })
|
|
233
|
+
], NileSlider.prototype, "valueLabel", void 0);
|
|
212
234
|
NileSlider = __decorate([
|
|
213
235
|
customElement('nile-slider')
|
|
214
236
|
], NileSlider);
|