@decidables/decidables-elements 0.4.8 → 0.5.0
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/CHANGELOG.md +17 -0
- package/README.md +50 -0
- package/lib/decidablesElements.esm.js +238 -157
- package/lib/decidablesElements.esm.js.map +1 -1
- package/lib/decidablesElements.esm.min.js +84 -39
- package/lib/decidablesElements.esm.min.js.map +1 -1
- package/lib/decidablesElements.umd.js +238 -157
- package/lib/decidablesElements.umd.js.map +1 -1
- package/lib/decidablesElements.umd.min.js +85 -40
- package/lib/decidablesElements.umd.min.js.map +1 -1
- package/package.json +3 -3
- package/src/button.js +5 -2
- package/src/slider.js +126 -19
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decidables/decidables-elements",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "decidables-elements: Basic UI Web Components for the decidables project",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"web component",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"d3": "^7.9.0",
|
|
49
|
-
"lit": "^3.1
|
|
49
|
+
"lit": "^3.2.1"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "0320347d03a20fb478784fe296c82f11018c276b"
|
|
52
52
|
}
|
package/src/button.js
CHANGED
|
@@ -26,6 +26,9 @@ export default class DecidablesButton extends DecidablesElement {
|
|
|
26
26
|
super.styles,
|
|
27
27
|
css`
|
|
28
28
|
:host {
|
|
29
|
+
---decidables-button-background-color-disabled: var(--decidables-button-background-color, var(---color-element-disabled));
|
|
30
|
+
---decidables-button-background-color-enabled: var(--decidables-button-background-color, var(---color-element-enabled));
|
|
31
|
+
|
|
29
32
|
margin: 0.25rem;
|
|
30
33
|
}
|
|
31
34
|
|
|
@@ -45,7 +48,7 @@ export default class DecidablesButton extends DecidablesElement {
|
|
|
45
48
|
}
|
|
46
49
|
|
|
47
50
|
button:disabled {
|
|
48
|
-
background-color: var(
|
|
51
|
+
background-color: var(---decidables-button-background-color-disabled);
|
|
49
52
|
outline: none;
|
|
50
53
|
box-shadow: none;
|
|
51
54
|
}
|
|
@@ -53,7 +56,7 @@ export default class DecidablesButton extends DecidablesElement {
|
|
|
53
56
|
button:enabled {
|
|
54
57
|
cursor: pointer;
|
|
55
58
|
|
|
56
|
-
background-color: var(
|
|
59
|
+
background-color: var(---decidables-button-background-color-enabled);
|
|
57
60
|
outline: none;
|
|
58
61
|
box-shadow: var(---shadow-2);
|
|
59
62
|
}
|
package/src/slider.js
CHANGED
|
@@ -12,6 +12,13 @@ export default class DecidablesSlider extends DecidablesElement {
|
|
|
12
12
|
type: Boolean,
|
|
13
13
|
reflect: true,
|
|
14
14
|
},
|
|
15
|
+
|
|
16
|
+
scale: {
|
|
17
|
+
attribute: 'scale',
|
|
18
|
+
type: Boolean,
|
|
19
|
+
reflect: true,
|
|
20
|
+
},
|
|
21
|
+
|
|
15
22
|
max: {
|
|
16
23
|
attribute: 'max',
|
|
17
24
|
type: Number,
|
|
@@ -32,6 +39,12 @@ export default class DecidablesSlider extends DecidablesElement {
|
|
|
32
39
|
type: Number,
|
|
33
40
|
reflect: true,
|
|
34
41
|
},
|
|
42
|
+
|
|
43
|
+
nonlinear: {
|
|
44
|
+
attribute: false,
|
|
45
|
+
type: Boolean,
|
|
46
|
+
reflect: false,
|
|
47
|
+
},
|
|
35
48
|
};
|
|
36
49
|
}
|
|
37
50
|
|
|
@@ -40,14 +53,36 @@ export default class DecidablesSlider extends DecidablesElement {
|
|
|
40
53
|
|
|
41
54
|
// Attributes
|
|
42
55
|
this.disabled = false;
|
|
56
|
+
|
|
57
|
+
this.scale = false;
|
|
58
|
+
|
|
43
59
|
this.max = undefined;
|
|
44
60
|
this.min = undefined;
|
|
45
61
|
this.step = undefined;
|
|
46
62
|
this.value = undefined;
|
|
63
|
+
|
|
64
|
+
this.nonlinear = false;
|
|
65
|
+
|
|
66
|
+
// Properties
|
|
67
|
+
this.rangeMax = undefined;
|
|
68
|
+
this.rangeMin = undefined;
|
|
69
|
+
this.rangeStep = undefined;
|
|
70
|
+
this.rangeValue = undefined;
|
|
71
|
+
|
|
72
|
+
// Transform
|
|
73
|
+
this.toRange = undefined;
|
|
74
|
+
this.fromRange = undefined;
|
|
47
75
|
}
|
|
48
76
|
|
|
49
|
-
|
|
50
|
-
this.
|
|
77
|
+
nonlinearRange(nonlinear, toRange, fromRange) {
|
|
78
|
+
this.nonlinear = nonlinear;
|
|
79
|
+
|
|
80
|
+
this.toRange = nonlinear ? toRange : undefined;
|
|
81
|
+
this.fromRange = nonlinear ? fromRange : undefined;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
rangeChanged(event) {
|
|
85
|
+
this.value = this.nonlinear ? this.fromRange(event.target.value) : event.target.value;
|
|
51
86
|
this.dispatchEvent(new CustomEvent('change', {
|
|
52
87
|
detail: {
|
|
53
88
|
value: this.value,
|
|
@@ -56,15 +91,46 @@ export default class DecidablesSlider extends DecidablesElement {
|
|
|
56
91
|
}));
|
|
57
92
|
}
|
|
58
93
|
|
|
59
|
-
|
|
94
|
+
rangeInputted(event) {
|
|
95
|
+
this.value = this.nonlinear ? this.fromRange(event.target.value) : event.target.value;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
spinnerInputted(event) {
|
|
60
99
|
this.value = event.target.value;
|
|
61
100
|
}
|
|
62
101
|
|
|
102
|
+
willUpdate() {
|
|
103
|
+
this.rangeMax = (this.max === undefined)
|
|
104
|
+
? undefined
|
|
105
|
+
: this.nonlinear
|
|
106
|
+
? this.toRange(this.max)
|
|
107
|
+
: this.max;
|
|
108
|
+
this.rangeMin = (this.min === undefined)
|
|
109
|
+
? undefined
|
|
110
|
+
: this.nonlinear
|
|
111
|
+
? this.toRange(this.min)
|
|
112
|
+
: this.min;
|
|
113
|
+
this.rangeStep = (this.step === undefined)
|
|
114
|
+
? undefined
|
|
115
|
+
: this.nonlinear
|
|
116
|
+
? 'any'
|
|
117
|
+
: this.step;
|
|
118
|
+
this.rangeValue = (this.value === undefined)
|
|
119
|
+
? undefined
|
|
120
|
+
: this.nonlinear
|
|
121
|
+
? this.toRange(this.value)
|
|
122
|
+
: this.value;
|
|
123
|
+
}
|
|
124
|
+
|
|
63
125
|
static get styles() {
|
|
64
126
|
return [
|
|
65
127
|
super.styles,
|
|
66
128
|
css`
|
|
67
129
|
:host {
|
|
130
|
+
---decidables-slider-background-color: var(--decidables-slider-background-color, var(---color-element-disabled));
|
|
131
|
+
---decidables-slider-color: var(--decidables-slider-color, var(---color-element-enabled));
|
|
132
|
+
---decidables-spinner-background-color: var(--decidables-slider-background-color, none);
|
|
133
|
+
|
|
68
134
|
---shadow-2-rotate: var(--shadow-2-rotate, ${unsafeCSS(this.cssBoxShadow(2, true, false))});
|
|
69
135
|
---shadow-4-rotate: var(--shadow-4-rotate, ${unsafeCSS(this.cssBoxShadow(4, true, false))});
|
|
70
136
|
---shadow-8-rotate: var(--shadow-8-rotate, ${unsafeCSS(this.cssBoxShadow(8, true, false))});
|
|
@@ -82,7 +148,10 @@ export default class DecidablesSlider extends DecidablesElement {
|
|
|
82
148
|
}
|
|
83
149
|
|
|
84
150
|
.range {
|
|
85
|
-
|
|
151
|
+
position: relative;
|
|
152
|
+
display: flex;
|
|
153
|
+
|
|
154
|
+
flex-direction: row;
|
|
86
155
|
|
|
87
156
|
width: 3.5rem;
|
|
88
157
|
height: 4.75rem;
|
|
@@ -93,6 +162,8 @@ export default class DecidablesSlider extends DecidablesElement {
|
|
|
93
162
|
--decidables-spinner-input-width: 3.5rem;
|
|
94
163
|
|
|
95
164
|
margin: 0 0.25rem 0.25rem;
|
|
165
|
+
|
|
166
|
+
background: var(---decidables-spinner-background-color);
|
|
96
167
|
}
|
|
97
168
|
|
|
98
169
|
/* Adapted from http://danielstern.ca/range.css/#/ */
|
|
@@ -131,14 +202,14 @@ export default class DecidablesSlider extends DecidablesElement {
|
|
|
131
202
|
width: 100%;
|
|
132
203
|
height: 4px;
|
|
133
204
|
|
|
134
|
-
background: var(---
|
|
205
|
+
background: var(---decidables-slider-background-color);
|
|
135
206
|
border: 0;
|
|
136
207
|
border-radius: 2px;
|
|
137
208
|
box-shadow: none;
|
|
138
209
|
}
|
|
139
210
|
|
|
140
211
|
input[type=range]:focus::-webkit-slider-runnable-track {
|
|
141
|
-
background: var(---
|
|
212
|
+
background: var(---decidables-slider-background-color);
|
|
142
213
|
}
|
|
143
214
|
|
|
144
215
|
/* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
|
|
@@ -146,7 +217,7 @@ export default class DecidablesSlider extends DecidablesElement {
|
|
|
146
217
|
width: 100%;
|
|
147
218
|
height: 4px;
|
|
148
219
|
|
|
149
|
-
background: var(---
|
|
220
|
+
background: var(---decidables-slider-background-color);
|
|
150
221
|
border: 0;
|
|
151
222
|
border-radius: 2px;
|
|
152
223
|
box-shadow: none;
|
|
@@ -166,7 +237,7 @@ export default class DecidablesSlider extends DecidablesElement {
|
|
|
166
237
|
/* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
|
|
167
238
|
input[type=range]::-ms-fill-lower {
|
|
168
239
|
background: #cccccc;
|
|
169
|
-
/* background: var(---
|
|
240
|
+
/* background: var(---decidables-slider-background-color); */
|
|
170
241
|
border: 0;
|
|
171
242
|
border-radius: 2px;
|
|
172
243
|
box-shadow: none;
|
|
@@ -175,7 +246,7 @@ export default class DecidablesSlider extends DecidablesElement {
|
|
|
175
246
|
/* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
|
|
176
247
|
input[type=range]::-ms-fill-upper {
|
|
177
248
|
background: #cccccc;
|
|
178
|
-
/* background: var(---
|
|
249
|
+
/* background: var(---decidables-slider-background-color); */
|
|
179
250
|
border: 0;
|
|
180
251
|
border-radius: 2px;
|
|
181
252
|
box-shadow: none;
|
|
@@ -183,12 +254,12 @@ export default class DecidablesSlider extends DecidablesElement {
|
|
|
183
254
|
|
|
184
255
|
/* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
|
|
185
256
|
input[type=range]:focus::-ms-fill-lower {
|
|
186
|
-
background: var(---
|
|
257
|
+
background: var(---decidables-slider-background-color);
|
|
187
258
|
}
|
|
188
259
|
|
|
189
260
|
/* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
|
|
190
261
|
input[type=range]:focus::-ms-fill-upper {
|
|
191
|
-
background: var(---
|
|
262
|
+
background: var(---decidables-slider-background-color);
|
|
192
263
|
}
|
|
193
264
|
|
|
194
265
|
/* Thumb */
|
|
@@ -206,12 +277,12 @@ export default class DecidablesSlider extends DecidablesElement {
|
|
|
206
277
|
}
|
|
207
278
|
|
|
208
279
|
input[type=range]:disabled::-webkit-slider-thumb {
|
|
209
|
-
background: var(---
|
|
280
|
+
background: var(---decidables-slider-background-color);
|
|
210
281
|
box-shadow: none;
|
|
211
282
|
}
|
|
212
283
|
|
|
213
284
|
input[type=range]:enabled::-webkit-slider-thumb {
|
|
214
|
-
background: var(---
|
|
285
|
+
background: var(---decidables-slider-color);
|
|
215
286
|
box-shadow: var(---shadow-2-rotate);
|
|
216
287
|
}
|
|
217
288
|
|
|
@@ -242,13 +313,13 @@ export default class DecidablesSlider extends DecidablesElement {
|
|
|
242
313
|
|
|
243
314
|
/* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
|
|
244
315
|
input[type=range]:disabled::-moz-range-thumb {
|
|
245
|
-
background: var(---
|
|
316
|
+
background: var(---decidables-slider-background-color);
|
|
246
317
|
box-shadow: none;
|
|
247
318
|
}
|
|
248
319
|
|
|
249
320
|
/* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
|
|
250
321
|
input[type=range]:enabled::-moz-range-thumb {
|
|
251
|
-
background: var(---
|
|
322
|
+
background: var(---decidables-slider-color);
|
|
252
323
|
box-shadow: var(---shadow-2-rotate);
|
|
253
324
|
}
|
|
254
325
|
|
|
@@ -285,13 +356,13 @@ export default class DecidablesSlider extends DecidablesElement {
|
|
|
285
356
|
|
|
286
357
|
/* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
|
|
287
358
|
input[type=range]:disabled::-ms-thumb {
|
|
288
|
-
background: var(---
|
|
359
|
+
background: var(---decidables-slider-background-color);
|
|
289
360
|
box-shadow: none;
|
|
290
361
|
}
|
|
291
362
|
|
|
292
363
|
/* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
|
|
293
364
|
input[type=range]:enabled::-ms-thumb {
|
|
294
|
-
background: var(---
|
|
365
|
+
background: var(---decidables-slider-color);
|
|
295
366
|
box-shadow: var(---shadow-2-rotate);
|
|
296
367
|
}
|
|
297
368
|
|
|
@@ -313,6 +384,33 @@ export default class DecidablesSlider extends DecidablesElement {
|
|
|
313
384
|
:host(.keyboard) input[type=range]:enabled:focus:active::-ms-thumb {
|
|
314
385
|
box-shadow: var(---shadow-8-rotate);
|
|
315
386
|
}
|
|
387
|
+
|
|
388
|
+
datalist {
|
|
389
|
+
position: absolute;
|
|
390
|
+
left: 2rem;
|
|
391
|
+
z-index: -1;
|
|
392
|
+
display: flex;
|
|
393
|
+
|
|
394
|
+
flex-direction: column;
|
|
395
|
+
|
|
396
|
+
align-items: flex-start;
|
|
397
|
+
justify-content: space-between;
|
|
398
|
+
|
|
399
|
+
height: 4.75rem;
|
|
400
|
+
|
|
401
|
+
font-size: 0.75rem;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
option {
|
|
405
|
+
padding: 0;
|
|
406
|
+
|
|
407
|
+
line-height: 0.8;
|
|
408
|
+
min-block-size: 0;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
option::before {
|
|
412
|
+
content: "– ";
|
|
413
|
+
}
|
|
316
414
|
`,
|
|
317
415
|
];
|
|
318
416
|
}
|
|
@@ -323,9 +421,18 @@ export default class DecidablesSlider extends DecidablesElement {
|
|
|
323
421
|
<slot></slot>
|
|
324
422
|
</label>
|
|
325
423
|
<div class="range">
|
|
326
|
-
<input ?disabled=${this.disabled} type="range" id="slider" min=${ifDefined(this.
|
|
424
|
+
<input ?disabled=${this.disabled} type="range" id="slider" min=${ifDefined(this.rangeMin)} max=${ifDefined(this.rangeMax)} step=${ifDefined(this.rangeStep)} .value=${this.rangeValue} @change=${this.rangeChanged.bind(this)} @input=${this.rangeInputted.bind(this)}>
|
|
425
|
+
${this.scale
|
|
426
|
+
? html`
|
|
427
|
+
<datalist id="ticks">
|
|
428
|
+
<option value=${ifDefined(this.rangeMax)} label=${ifDefined(this.max)}></option>
|
|
429
|
+
<option value=${ifDefined(this.rangeMin)} label=${ifDefined(this.min)}></option>
|
|
430
|
+
</datalist>
|
|
431
|
+
`
|
|
432
|
+
: html``
|
|
433
|
+
}
|
|
327
434
|
</div>
|
|
328
|
-
<decidables-spinner ?disabled=${this.disabled} min=${ifDefined(this.min)} max=${ifDefined(this.max)} step=${ifDefined(this.step)} .value=${this.value} @input=${this.
|
|
435
|
+
<decidables-spinner ?disabled=${this.disabled} min=${ifDefined(this.min)} max=${ifDefined(this.max)} step=${ifDefined(this.step)} .value=${this.value} @input=${this.spinnerInputted.bind(this)}></decidables-spinner>
|
|
329
436
|
`;
|
|
330
437
|
}
|
|
331
438
|
}
|