@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.
Files changed (36) hide show
  1. package/README.md +3 -0
  2. package/dist/index.js +323 -174
  3. package/dist/nile-slider/nile-slider.cjs.js +1 -1
  4. package/dist/nile-slider/nile-slider.cjs.js.map +1 -1
  5. package/dist/nile-slider/nile-slider.css.cjs.js +1 -1
  6. package/dist/nile-slider/nile-slider.css.cjs.js.map +1 -1
  7. package/dist/nile-slider/nile-slider.css.esm.js +162 -41
  8. package/dist/nile-slider/nile-slider.esm.js +5 -3
  9. package/dist/nile-slider/nile-slider.template.cjs.js +1 -1
  10. package/dist/nile-slider/nile-slider.template.cjs.js.map +1 -1
  11. package/dist/nile-slider/nile-slider.template.esm.js +49 -23
  12. package/dist/nile-slider/utils/nile-slider.utils.cjs.js +1 -1
  13. package/dist/nile-slider/utils/nile-slider.utils.cjs.js.map +1 -1
  14. package/dist/nile-slider/utils/nile-slider.utils.esm.js +1 -1
  15. package/dist/src/nile-slider/nile-slider.css.js +160 -39
  16. package/dist/src/nile-slider/nile-slider.css.js.map +1 -1
  17. package/dist/src/nile-slider/nile-slider.d.ts +5 -1
  18. package/dist/src/nile-slider/nile-slider.js +23 -1
  19. package/dist/src/nile-slider/nile-slider.js.map +1 -1
  20. package/dist/src/nile-slider/nile-slider.template.d.ts +2 -0
  21. package/dist/src/nile-slider/nile-slider.template.js +38 -1
  22. package/dist/src/nile-slider/nile-slider.template.js.map +1 -1
  23. package/dist/src/nile-slider/types/nile-slider.types.d.ts +1 -0
  24. package/dist/src/nile-slider/types/nile-slider.types.js.map +1 -1
  25. package/dist/src/nile-slider/utils/nile-slider.utils.js +4 -0
  26. package/dist/src/nile-slider/utils/nile-slider.utils.js.map +1 -1
  27. package/dist/src/version.js +1 -1
  28. package/dist/src/version.js.map +1 -1
  29. package/dist/tsconfig.tsbuildinfo +1 -1
  30. package/package.json +1 -1
  31. package/src/nile-slider/nile-slider.css.ts +160 -39
  32. package/src/nile-slider/nile-slider.template.ts +45 -2
  33. package/src/nile-slider/nile-slider.ts +11 -3
  34. package/src/nile-slider/types/nile-slider.types.ts +2 -0
  35. package/src/nile-slider/utils/nile-slider.utils.ts +2 -0
  36. package/vscode-html-custom-data.json +38 -9
@@ -1,8 +1,9 @@
1
- import{html as a}from"lit";import{classMap as e}from"lit/directives/class-map.js";const i=e=>a`
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=${e.rangeOneValue}
5
- placement=${e.tooltipPosition}
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=${e.minValue}
14
- aria-valuemax=${e.maxValue}
15
- aria-valuenow=${e.rangeOneValue}
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=${e.rangeTwoValue}
21
- placement=${e.tooltipPosition}
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=${e.minValue}
30
- aria-valuemax=${e.maxValue}
31
- aria-valuenow=${e.rangeTwoValue}
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
- `,t=i=>a`
38
+ `,n=e=>a`
37
39
  <div>
38
40
  <nile-tooltip
39
- content=${i.value}
40
- placement=${i.tooltipPosition}
41
+ content=${e.value}
42
+ placement=${e.tooltipPosition}
43
+ ?disabled=${i(e)}
41
44
  >
42
45
  <div
43
- class=${e({"range-button":!0,"range-button-active":"one"===i.activeThumb})}
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=${i.minValue}
48
- aria-valuemax=${i.maxValue}
49
- aria-valuenow=${i.value}
50
- aria-label=${i.ariaLabel||"Slider value"}
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=e=>a`
57
+ `,s=l=>a`
55
58
  <div part="label-container" class="label-container">
56
- <span id="label-start">${e.labelStart}</span>
57
- <span id="label-end">${e.labelEnd}</span>
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
- `;export{l,i as r,t as s};
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: 10px;
21
- height: 100px;
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
- gap: var(--nile-spacing-sm);
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: 4px;
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
- .range-button {
79
- height: 12px;
80
- width: 12px;
81
- background-color: var(--nile-colors-primary-600);
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
- box-shadow: rgba(0, 82, 145, 0.1) 0px 1px 2px 0px, rgba(0, 94, 166, 0.15) 0px 0px 0px 2px;
89
- transition: box-shadow var(--nile-transition-duration-default) ease;
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:hover, .range-button-two:hover {
93
- cursor: pointer;
94
- background-color: var(--nile-colors-primary-700);
150
+ .range-button-two {
151
+ left: 100%;
95
152
  }
96
153
 
97
- .range-button:active, .range-button-two:active {
98
- transition: box-shadow var(--nile-transition-duration-default) ease;
99
- background-color: var(--nile-colors-primary-700);
100
- box-shadow: rgba(0, 82, 145, 0.1) 0px 1px 2px 0px, rgba(0, 94, 166, 0.15) 0px 0px 0px 4px;
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
- .range-button-two {
104
- height: 12px;
105
- width: 12px;
106
- background-color: var(--nile-colors-primary-600);
107
- position: absolute;
108
- top: 50%;
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
- border-radius: var(--nile-radius-radius-3xl);
111
- left: 100%;
112
- z-index: 100;
113
- box-shadow: rgba(0, 82, 145, 0.1) 0px 1px 2px 0px, rgba(0, 94, 166, 0.15) 0px 0px 0px 2px;
114
- transition: box-shadow var(--nile-transition-duration-default) ease;
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyGxB,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 .container {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 10px;\n height: 100px;\n }\n\n .align-item-center {\n align-items: center;\n }\n\n slot.span {\n font-size: var(--nile-font-size-micro);\n margin-top: 14px;\n }\n\n .range-container {\n display: flex;\n flex-direction: column;\n gap: var(--nile-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);\n padding: var(--nile-spacing-none);\n font-size: var(--nile-font-size-micro);\n }\n\n .range {\n position: relative;\n width: 228px;\n height: 4px;\n background-color: var(--nile-colors-neutral-400);\n user-select: none;\n border-radius: var(--nile-radius-radius-3xl);\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);\n top: 0px;\n left: 0px;\n z-index: 98;\n border-radius: var(--nile-radius-radius-3xl);\n }\n\n .range-button {\n height: 12px;\n width: 12px;\n background-color: var(--nile-colors-primary-600);\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n border-radius: var(--nile-radius-radius-3xl);\n left: 0;\n z-index: 100;\n box-shadow: rgba(0, 82, 145, 0.1) 0px 1px 2px 0px, rgba(0, 94, 166, 0.15) 0px 0px 0px 2px;\n transition: box-shadow var(--nile-transition-duration-default) ease;\n }\n\n .range-button:hover, .range-button-two:hover {\n cursor: pointer;\n background-color: var(--nile-colors-primary-700);\n }\n\n .range-button:active, .range-button-two:active {\n transition: box-shadow var(--nile-transition-duration-default) ease;\n background-color: var(--nile-colors-primary-700);\n box-shadow: rgba(0, 82, 145, 0.1) 0px 1px 2px 0px, rgba(0, 94, 166, 0.15) 0px 0px 0px 4px;\n }\n\n .range-button-two {\n height: 12px;\n width: 12px;\n background-color: var(--nile-colors-primary-600);\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n border-radius: var(--nile-radius-radius-3xl);\n left: 100%;\n z-index: 100;\n box-shadow: rgba(0, 82, 145, 0.1) 0px 1px 2px 0px, rgba(0, 94, 166, 0.15) 0px 0px 0px 2px;\n transition: box-shadow var(--nile-transition-duration-default) ease;\n }\n`;\n\nexport default [styles];\n"]}
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);