@aquera/nile-elements 1.8.0 → 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 (80) hide show
  1. package/README.md +6 -0
  2. package/dist/index-6faafdf4.cjs.js +2 -0
  3. package/dist/index-6faafdf4.cjs.js.map +1 -0
  4. package/dist/index-9931b440.esm.js +1 -0
  5. package/dist/index.cjs.js +1 -1
  6. package/dist/index.esm.js +1 -1
  7. package/dist/index.js +375 -226
  8. package/dist/nile-combobox/index.cjs.js +1 -1
  9. package/dist/nile-combobox/index.esm.js +1 -1
  10. package/dist/nile-combobox/nile-combobox.cjs.js +1 -1
  11. package/dist/nile-combobox/nile-combobox.esm.js +1 -1
  12. package/dist/nile-context-menu/nile-context-menu.cjs.js +1 -1
  13. package/dist/nile-context-menu/nile-context-menu.cjs.js.map +1 -1
  14. package/dist/nile-context-menu/nile-context-menu.esm.js +2 -2
  15. package/dist/nile-context-menu-item/nile-context-menu-item.cjs.js +1 -1
  16. package/dist/nile-context-menu-item/nile-context-menu-item.cjs.js.map +1 -1
  17. package/dist/nile-context-menu-item/nile-context-menu-item.esm.js +3 -3
  18. package/dist/nile-context-submenu/nile-context-submenu.cjs.js +1 -1
  19. package/dist/nile-context-submenu/nile-context-submenu.cjs.js.map +1 -1
  20. package/dist/nile-context-submenu/nile-context-submenu.esm.js +2 -2
  21. package/dist/nile-detail/index.cjs.js +1 -1
  22. package/dist/nile-detail/index.esm.js +1 -1
  23. package/dist/nile-detail/nile-detail.cjs.js +1 -1
  24. package/dist/nile-detail/nile-detail.esm.js +1 -1
  25. package/dist/nile-floating-panel/nile-floating-panel.cjs.js +1 -1
  26. package/dist/nile-floating-panel/nile-floating-panel.cjs.js.map +1 -1
  27. package/dist/nile-floating-panel/nile-floating-panel.esm.js +1 -1
  28. package/dist/nile-slider/nile-slider.cjs.js +1 -1
  29. package/dist/nile-slider/nile-slider.cjs.js.map +1 -1
  30. package/dist/nile-slider/nile-slider.css.cjs.js +1 -1
  31. package/dist/nile-slider/nile-slider.css.cjs.js.map +1 -1
  32. package/dist/nile-slider/nile-slider.css.esm.js +162 -41
  33. package/dist/nile-slider/nile-slider.esm.js +5 -3
  34. package/dist/nile-slider/nile-slider.template.cjs.js +1 -1
  35. package/dist/nile-slider/nile-slider.template.cjs.js.map +1 -1
  36. package/dist/nile-slider/nile-slider.template.esm.js +49 -23
  37. package/dist/nile-slider/utils/nile-slider.utils.cjs.js +1 -1
  38. package/dist/nile-slider/utils/nile-slider.utils.cjs.js.map +1 -1
  39. package/dist/nile-slider/utils/nile-slider.utils.esm.js +1 -1
  40. package/dist/src/nile-context-menu/nile-context-menu.d.ts +10 -1
  41. package/dist/src/nile-context-menu/nile-context-menu.js +85 -5
  42. package/dist/src/nile-context-menu/nile-context-menu.js.map +1 -1
  43. package/dist/src/nile-context-menu-item/nile-context-menu-item.d.ts +1 -0
  44. package/dist/src/nile-context-menu-item/nile-context-menu-item.js +5 -1
  45. package/dist/src/nile-context-menu-item/nile-context-menu-item.js.map +1 -1
  46. package/dist/src/nile-context-submenu/nile-context-submenu.d.ts +9 -0
  47. package/dist/src/nile-context-submenu/nile-context-submenu.js +100 -16
  48. package/dist/src/nile-context-submenu/nile-context-submenu.js.map +1 -1
  49. package/dist/src/nile-floating-panel/nile-floating-panel.d.ts +2 -0
  50. package/dist/src/nile-floating-panel/nile-floating-panel.js +4 -0
  51. package/dist/src/nile-floating-panel/nile-floating-panel.js.map +1 -1
  52. package/dist/src/nile-slider/nile-slider.css.js +160 -39
  53. package/dist/src/nile-slider/nile-slider.css.js.map +1 -1
  54. package/dist/src/nile-slider/nile-slider.d.ts +5 -1
  55. package/dist/src/nile-slider/nile-slider.js +23 -1
  56. package/dist/src/nile-slider/nile-slider.js.map +1 -1
  57. package/dist/src/nile-slider/nile-slider.template.d.ts +2 -0
  58. package/dist/src/nile-slider/nile-slider.template.js +38 -1
  59. package/dist/src/nile-slider/nile-slider.template.js.map +1 -1
  60. package/dist/src/nile-slider/types/nile-slider.types.d.ts +1 -0
  61. package/dist/src/nile-slider/types/nile-slider.types.js.map +1 -1
  62. package/dist/src/nile-slider/utils/nile-slider.utils.js +4 -0
  63. package/dist/src/nile-slider/utils/nile-slider.utils.js.map +1 -1
  64. package/dist/src/version.js +1 -1
  65. package/dist/src/version.js.map +1 -1
  66. package/dist/tsconfig.tsbuildinfo +1 -1
  67. package/package.json +1 -1
  68. package/src/nile-context-menu/nile-context-menu.ts +86 -8
  69. package/src/nile-context-menu-item/nile-context-menu-item.ts +3 -1
  70. package/src/nile-context-submenu/nile-context-submenu.ts +97 -12
  71. package/src/nile-floating-panel/nile-floating-panel.ts +5 -0
  72. package/src/nile-slider/nile-slider.css.ts +160 -39
  73. package/src/nile-slider/nile-slider.template.ts +45 -2
  74. package/src/nile-slider/nile-slider.ts +11 -3
  75. package/src/nile-slider/types/nile-slider.types.ts +2 -0
  76. package/src/nile-slider/utils/nile-slider.utils.ts +2 -0
  77. package/vscode-html-custom-data.json +51 -12
  78. package/dist/index-644974d4.esm.js +0 -1
  79. package/dist/index-dd2af8ec.cjs.js +0 -2
  80. package/dist/index-dd2af8ec.cjs.js.map +0 -1
@@ -14,12 +14,31 @@ export const styles = css`
14
14
  display: block;
15
15
  }
16
16
 
17
+ /* Field header */
18
+
19
+ .field-header {
20
+ display: flex;
21
+ justify-content: space-between;
22
+ align-items: center;
23
+ gap: var(--nile-spacing-md, var(--ng-spacing-md));
24
+ margin-bottom: var(--nile-spacing-sm, var(--ng-spacing-sm));
25
+ }
26
+
27
+ .field-label {
28
+ font-family: var(--nile-font-family-serif, var(--ng-font-family-body));
29
+ font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));
30
+ font-weight: var(--nile-font-weight-medium, var(--ng-font-weight-medium));
31
+ color: var(--nile-colors-dark-900, var(--ng-colors-text-secondary-700));
32
+ }
33
+
34
+ /* Layout */
35
+
17
36
  .container {
18
37
  display: flex;
19
38
  justify-content: center;
20
39
  align-items: center;
21
- gap: 10px;
22
- height: 100px;
40
+ gap: var(--nile-spacing-md, var(--ng-spacing-md));
41
+ min-height: var(--nile-spacing-5xl, var(--ng-spacing-5xl));
23
42
  }
24
43
 
25
44
  .align-item-center {
@@ -27,14 +46,14 @@ export const styles = css`
27
46
  }
28
47
 
29
48
  slot.span {
30
- font-size: var(--nile-font-size-micro);
31
- margin-top: 14px;
49
+ font-size: var(--nile-font-size-micro, var(--ng-font-size-text-xs));
32
50
  }
33
51
 
34
52
  .range-container {
35
53
  display: flex;
36
54
  flex-direction: column;
37
- gap: var(--nile-spacing-sm);
55
+ flex: 1 1 auto;
56
+ gap: var(--nile-spacing-sm, var(--ng-spacing-sm));
38
57
  }
39
58
 
40
59
  .column-reverse {
@@ -47,18 +66,21 @@ export const styles = css`
47
66
  }
48
67
 
49
68
  .label-container span {
50
- margin: var(--nile-spacing-none);
51
- padding: var(--nile-spacing-none);
52
- font-size: var(--nile-font-size-micro);
69
+ margin: var(--nile-spacing-none, var(--ng-spacing-none));
70
+ padding: var(--nile-spacing-none, var(--ng-spacing-none));
71
+ font-size: var(--nile-font-size-micro, var(--ng-font-size-text-xs));
72
+ color: var(--nile-colors-dark-500, var(--ng-colors-text-tertiary-600));
53
73
  }
54
74
 
75
+ /* track & fill */
76
+
55
77
  .range {
56
78
  position: relative;
57
- width: 228px;
58
- height: 4px;
59
- background-color: var(--nile-colors-neutral-400);
79
+ width: var(--nile-slider-width, 228px);
80
+ height: var(--nile-spacing-xs, var(--ng-spacing-sm));
81
+ background-color: var(--nile-colors-neutral-400, var(--ng-colors-bg-quaternary));
60
82
  user-select: none;
61
- border-radius: var(--nile-radius-radius-3xl);
83
+ border-radius: var(--nile-radius-radius-3xl, var(--ng-radius-full));
62
84
  }
63
85
 
64
86
  .range:hover {
@@ -69,50 +91,149 @@ export const styles = css`
69
91
  position: absolute;
70
92
  height: 100%;
71
93
  width: 0%;
72
- background-color: var(--nile-colors-primary-600);
94
+ background-color: var(--nile-colors-primary-600, var(--ng-colors-bg-brand-solid));
73
95
  top: 0px;
74
96
  left: 0px;
75
97
  z-index: 98;
76
- border-radius: var(--nile-radius-radius-3xl);
98
+ border-radius: var(--nile-radius-radius-3xl, var(--ng-radius-full));
99
+ }
100
+
101
+ /* ------------------------------------------------------------------ */
102
+ /* Inline value label (valueLabel="bottom") */
103
+ /* ------------------------------------------------------------------ */
104
+
105
+ .value-label {
106
+ position: absolute;
107
+ /* Start at the track bottom, then push down past the handle and the
108
+ largest (pressed, 8px) ring */
109
+ top: 100%;
110
+ margin-top: var(--nile-spacing-xl, var(--ng-spacing-xl));
111
+ transform: translateX(-50%);
112
+ font-family: var(--nile-font-family-serif, var(--ng-font-family-body));
113
+ font-size: var(--nile-font-size-micro, var(--ng-font-size-text-xs));
114
+ font-variant-numeric: tabular-nums;
115
+ color: var(--nile-colors-dark-500, var(--ng-colors-text-quaternary-500));
116
+ white-space: nowrap;
117
+ pointer-events: none;
118
+ user-select: none;
119
+ -webkit-user-select: none;
77
120
  }
78
121
 
79
- .range-button {
80
- height: 12px;
81
- width: 12px;
82
- background-color: var(--nile-colors-primary-600);
122
+ /* Reserve room below the track for the inline value label */
123
+ :host([valuelabel='bottom']) .container {
124
+ padding-bottom: var(--nile-spacing-2xl, var(--ng-spacing-2xl));
125
+ }
126
+
127
+ /* Handles */
128
+
129
+ .range-button,
130
+ .range-button-two {
131
+ height: var(--nile-spacing-lg, var(--ng-spacing-2xl));
132
+ width: var(--nile-spacing-lg, var(--ng-spacing-2xl));
133
+ box-sizing: border-box;
134
+ /* Enterprise: solid brand dot - NextGen: white fill + brand border */
135
+ background-color: var(--nile-colors-primary-600, var(--ng-colors-bg-primary));
136
+ border: var(--nile-spacing-xxs, var(--ng-spacing-xxs)) solid
137
+ var(--nile-colors-primary-600, var(--ng-colors-border-brand-alt));
83
138
  position: absolute;
84
139
  top: 50%;
85
140
  transform: translate(-50%, -50%);
86
- border-radius: var(--nile-radius-radius-3xl);
141
+ border-radius: var(--nile-radius-radius-3xl, var(--ng-radius-full));
87
142
  left: 0;
88
143
  z-index: 100;
89
- box-shadow: rgba(0, 82, 145, 0.1) 0px 1px 2px 0px, rgba(0, 94, 166, 0.15) 0px 0px 0px 2px;
90
- transition: box-shadow var(--nile-transition-duration-default) ease;
144
+ cursor: grab;
145
+ transition:
146
+ box-shadow var(--nile-transition-duration-short, 120ms) ease,
147
+ background-color var(--nile-transition-duration-short, 120ms) ease,
148
+ transform var(--nile-transition-duration-shorter, 80ms) ease;
91
149
  }
92
150
 
93
- .range-button:hover, .range-button-two:hover {
94
- cursor: pointer;
95
- background-color: var(--nile-colors-primary-700);
151
+ .range-button-two {
152
+ left: 100%;
96
153
  }
97
154
 
98
- .range-button:active, .range-button-two:active {
99
- transition: box-shadow var(--nile-transition-duration-default) ease;
100
- background-color: var(--nile-colors-primary-700);
101
- box-shadow: rgba(0, 82, 145, 0.1) 0px 1px 2px 0px, rgba(0, 94, 166, 0.15) 0px 0px 0px 4px;
155
+ /* Hover: ring (Enterprise 2px - NextGen 6px) */
156
+ .range-button:hover,
157
+ .range-button-two:hover {
158
+ cursor: grab;
159
+ box-shadow: 0 0 0 var(--nile-spacing-xxs, var(--ng-spacing-sm))
160
+ var(--nile-colors-primary-100, var(--ng-colors-bg-brand-secondary));
102
161
  }
103
162
 
104
- .range-button-two {
105
- height: 12px;
106
- width: 12px;
107
- background-color: var(--nile-colors-primary-600);
108
- position: absolute;
109
- top: 50%;
163
+ /* Focused: theme focus ring */
164
+ .range-button:focus-visible,
165
+ .range-button-two:focus-visible {
166
+ outline: none;
167
+ box-shadow: var(--nile-focus-ring,
168
+ var(--ng-focus-ring,
169
+ 0 0 0 var(--nile-spacing-xs) var(--nile-colors-primary-100)));
170
+ }
171
+
172
+ /* Pressed: ring (Enterprise 4px - NextGen 8px) + 1.1x scale */
173
+ .range-button:active,
174
+ .range-button-two:active {
175
+ cursor: grabbing;
176
+ transform: translate(-50%, -50%) scale(1.1);
177
+ box-shadow: 0 0 0 var(--nile-spacing-xs, var(--ng-spacing-md))
178
+ var(--nile-colors-primary-100, var(--ng-colors-bg-brand-secondary));
179
+ }
180
+
181
+ /* Error state */
182
+ :host([error]) .range-completed {
183
+ background-color: var(--nile-colors-red-700, var(--ng-colors-bg-error-solid));
184
+ }
185
+
186
+ :host([error]) .range-button,
187
+ :host([error]) .range-button-two {
188
+ background-color: var(--nile-colors-red-700, var(--ng-colors-bg-primary));
189
+ border-color: var(--nile-colors-red-700, var(--ng-colors-border-error));
190
+ }
191
+
192
+ :host([error]) .range-button:hover,
193
+ :host([error]) .range-button-two:hover {
194
+ box-shadow: 0 0 0 var(--nile-spacing-xxs, var(--ng-spacing-sm))
195
+ var(--nile-colors-red-100, var(--ng-colors-bg-error-secondary, var(--ng-color-error-100)));
196
+ }
197
+
198
+ :host([error]) .range-button:focus-visible,
199
+ :host([error]) .range-button-two:focus-visible {
200
+ box-shadow: var(--nile-focus-ring-error,
201
+ var(--ng-focus-ring-error,
202
+ 0 0 0 var(--nile-spacing-xs) var(--nile-colors-red-100)));
203
+ }
204
+
205
+ /* Disabled state */
206
+ :host([disabled]) .range,
207
+ :host([disabled]) .range:hover {
208
+ cursor: not-allowed;
209
+ background-color: var(--nile-colors-neutral-100, var(--ng-colors-bg-disabled));
210
+ }
211
+
212
+ :host([disabled]) .range-completed {
213
+ background-color: var(--nile-colors-neutral-500, var(--ng-colors-fg-disabled));
214
+ }
215
+
216
+ :host([disabled]) .range-button,
217
+ :host([disabled]) .range-button-two {
218
+ background-color: var(--nile-colors-neutral-500, var(--ng-colors-bg-primary));
219
+ border-color: var(--nile-colors-neutral-500, var(--ng-colors-border-disabled));
220
+ cursor: not-allowed;
221
+ }
222
+
223
+ :host([disabled]) .range-button:hover,
224
+ :host([disabled]) .range-button-two:hover,
225
+ :host([disabled]) .range-button:active,
226
+ :host([disabled]) .range-button-two:active {
227
+ box-shadow: none;
110
228
  transform: translate(-50%, -50%);
111
- border-radius: var(--nile-radius-radius-3xl);
112
- left: 100%;
113
- z-index: 100;
114
- box-shadow: rgba(0, 82, 145, 0.1) 0px 1px 2px 0px, rgba(0, 94, 166, 0.15) 0px 0px 0px 2px;
115
- transition: box-shadow var(--nile-transition-duration-default) ease;
229
+ }
230
+
231
+ :host([disabled]) .field-label,
232
+ :host([disabled]) .value-label,
233
+ :host([disabled]) .label-container span {
234
+ color: var(--nile-colors-neutral-500, var(--ng-colors-fg-disabled));
235
+ user-select: none;
236
+ -webkit-user-select: none;
116
237
  }
117
238
  `;
118
239
 
@@ -1,6 +1,10 @@
1
1
  import { TemplateResult, html } from 'lit';
2
2
  import NileSlider from './nile-slider';
3
3
  import { classMap } from 'lit/directives/class-map.js';
4
+ import { valueToPercent } from './utils/nile-slider.utils';
5
+
6
+ const tooltipDisabled = (nileSlider: NileSlider): boolean =>
7
+ nileSlider.disabled || nileSlider.valueLabel !== 'tooltip';
4
8
 
5
9
  export const rangeSlider = (nileSlider: NileSlider): TemplateResult => {
6
10
  return html`
@@ -8,6 +12,7 @@ export const rangeSlider = (nileSlider: NileSlider): TemplateResult => {
8
12
  <nile-tooltip
9
13
  content=${nileSlider.rangeOneValue}
10
14
  placement=${nileSlider.tooltipPosition}
15
+ ?disabled=${tooltipDisabled(nileSlider)}
11
16
  >
12
17
  <div
13
18
  id="range-one"
@@ -24,6 +29,7 @@ export const rangeSlider = (nileSlider: NileSlider): TemplateResult => {
24
29
  <nile-tooltip
25
30
  content=${nileSlider.rangeTwoValue}
26
31
  placement=${nileSlider.tooltipPosition}
32
+ ?disabled=${tooltipDisabled(nileSlider)}
27
33
  >
28
34
  <div
29
35
  id="range-two"
@@ -47,6 +53,7 @@ export const singleSlider = (nileSlider: NileSlider): TemplateResult => {
47
53
  <nile-tooltip
48
54
  content=${nileSlider.value}
49
55
  placement=${nileSlider.tooltipPosition}
56
+ ?disabled=${tooltipDisabled(nileSlider)}
50
57
  >
51
58
  <div
52
59
  class=${classMap({
@@ -59,7 +66,7 @@ export const singleSlider = (nileSlider: NileSlider): TemplateResult => {
59
66
  aria-valuemin=${nileSlider.minValue}
60
67
  aria-valuemax=${nileSlider.maxValue}
61
68
  aria-valuenow=${nileSlider.value}
62
- aria-label=${nileSlider.ariaLabel || "Slider value"}
69
+ aria-label=${nileSlider.ariaLabel || nileSlider.label || "Slider value"}
63
70
  ></div>
64
71
  </nile-tooltip>
65
72
  </div>
@@ -74,4 +81,40 @@ export const lableContaier = (nileSlider: NileSlider): TemplateResult => {
74
81
  <span id="label-end">${nileSlider.labelEnd}</span>
75
82
  </div>
76
83
  `;
77
- };
84
+ };
85
+
86
+
87
+ export const fieldHeader = (nileSlider: NileSlider): TemplateResult => {
88
+ return html`
89
+ <div part="field-header" class="field-header">
90
+ <label id="field-label" part="field-label" class="field-label">
91
+ ${nileSlider.label}
92
+ </label>
93
+ </div>
94
+ `;
95
+ };
96
+
97
+
98
+ export const bottomValueLabels = (nileSlider: NileSlider): TemplateResult => {
99
+ if (!nileSlider.rangeSlider) {
100
+ return html`
101
+ <span
102
+ part="value-label"
103
+ class="value-label"
104
+ style="left: ${valueToPercent(nileSlider.value, nileSlider)}%"
105
+ >${nileSlider.value}</span>
106
+ `;
107
+ }
108
+ return html`
109
+ <span
110
+ part="value-label"
111
+ class="value-label"
112
+ style="left: ${valueToPercent(nileSlider.rangeOneValue, nileSlider)}%"
113
+ >${nileSlider.rangeOneValue}</span>
114
+ <span
115
+ part="value-label"
116
+ class="value-label"
117
+ style="left: ${valueToPercent(nileSlider.rangeTwoValue, nileSlider)}%"
118
+ >${nileSlider.rangeTwoValue}</span>
119
+ `;
120
+ };
@@ -10,9 +10,9 @@ import NileElement from '../internal/nile-element';
10
10
  import { classMap } from 'lit/directives/class-map.js';
11
11
  import { html, CSSResultArray, TemplateResult } from 'lit';
12
12
  import { customElement, property } from 'lit/decorators.js';
13
- import { TooltipPosition } from './types/nile-slider.types';
13
+ import { TooltipPosition, ValueLabelMode } from './types/nile-slider.types';
14
14
  import { NileSliderEvents } from './types/nile-slider.enums';
15
- import { rangeSlider, singleSlider, lableContaier } from './nile-slider.template';
15
+ import { rangeSlider, singleSlider, lableContaier, fieldHeader, bottomValueLabels } from './nile-slider.template';
16
16
  import {
17
17
  handleSingleSlider,
18
18
  handleRangeOne,
@@ -46,6 +46,10 @@ export class NileSlider extends NileElement {
46
46
  @property({ type: Boolean}) rangeSlider: boolean = false;
47
47
  @property({ type: String }) labelPosition: string = "top";
48
48
  @property({ type: String }) tooltipPosition: TooltipPosition = "top";
49
+ @property({ type: String }) label = "";
50
+ @property({ type: Boolean, reflect: true }) disabled = false;
51
+ @property({ type: Boolean, reflect: true }) error = false;
52
+ @property({ type: String, reflect: true }) valueLabel: ValueLabelMode = 'tooltip';
49
53
 
50
54
  public buttonOne!: HTMLElement;
51
55
  public buttonTwo!: HTMLElement;
@@ -88,7 +92,7 @@ export class NileSlider extends NileElement {
88
92
  }
89
93
 
90
94
  checkValueValidity(value: number, min: number, max: number): number {
91
- if(max - min <= 1) {
95
+ if(max - min <= 1) {
92
96
  return Math.max(min, Math.min(value, max));
93
97
  }
94
98
  return Math.floor(Math.max(min, Math.min(value, max)));
@@ -109,6 +113,7 @@ export class NileSlider extends NileElement {
109
113
  }
110
114
 
111
115
  public onMouseMove = (e: MouseEvent): void => {
116
+ if (this.disabled) return;
112
117
  const rect = this.range.getBoundingClientRect();
113
118
 
114
119
  if (!this.rangeSlider) {
@@ -143,6 +148,7 @@ export class NileSlider extends NileElement {
143
148
  };
144
149
 
145
150
  public onMouseDown = (e: MouseEvent): void => {
151
+ if (this.disabled) return;
146
152
  const rect = this.range.getBoundingClientRect();
147
153
  const clickX = e.clientX - rect.left;
148
154
  const percent = (clickX / rect.width) * 100;
@@ -166,6 +172,7 @@ export class NileSlider extends NileElement {
166
172
  const ariaLabelledby = hasLabels ? 'label-start label-end' : undefined;
167
173
 
168
174
  return html`
175
+ ${this.label ? fieldHeader(this) : html``}
169
176
  <div
170
177
  part="base"
171
178
  class=${classMap({
@@ -192,6 +199,7 @@ export class NileSlider extends NileElement {
192
199
  >
193
200
  <span class="range-completed" part="range-completed"></span>
194
201
  ${this.rangeSlider ? rangeSlider(this) : singleSlider(this)}
202
+ ${this.valueLabel === 'bottom' ? bottomValueLabels(this) : html``}
195
203
  </div>
196
204
  </div>
197
205
 
@@ -1,3 +1,5 @@
1
+ export type ValueLabelMode = 'tooltip' | 'bottom' | 'none';
2
+
1
3
  export type TooltipPosition =
2
4
  | 'top'
3
5
  | 'top-start'
@@ -80,11 +80,13 @@ export const getHtmlElements = (nileSlider: NileSlider) => {
80
80
  nileSlider.range.addEventListener('mousedown', nileSlider.onMouseDown);
81
81
 
82
82
  nileSlider.buttonOne?.addEventListener('mousedown', () => {
83
+ if (nileSlider.disabled) return;
83
84
  nileSlider.activeThumb = 'one';
84
85
  addMoveListeners(nileSlider);
85
86
  });
86
87
 
87
88
  nileSlider.buttonTwo?.addEventListener('mousedown', () => {
89
+ if (nileSlider.disabled) return;
88
90
  nileSlider.activeThumb = 'two';
89
91
  addMoveListeners(nileSlider);
90
92
  });