@rogieking/figui3 1.0.16 → 1.0.18
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/example.html +56 -30
- package/fig.css +4 -3
- package/fig.js +33 -6
- package/package.json +1 -1
package/example.html
CHANGED
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
<fig-button variant="secondary">Secondary</fig-button>
|
|
34
34
|
<fig-button variant="ghost">Ghost</fig-button>
|
|
35
35
|
<fig-button variant="ghost"
|
|
36
|
+
type="toggle"
|
|
36
37
|
icon="true">
|
|
37
38
|
<svg class="svg"
|
|
38
39
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -48,7 +49,8 @@
|
|
|
48
49
|
</svg>
|
|
49
50
|
</fig-button>
|
|
50
51
|
<fig-tooltip text="Toggle off/on">
|
|
51
|
-
<fig-button variant="
|
|
52
|
+
<fig-button variant="ghost"
|
|
53
|
+
type="toggle"
|
|
52
54
|
icon="true"
|
|
53
55
|
selected="true">
|
|
54
56
|
<svg width="24"
|
|
@@ -122,35 +124,59 @@
|
|
|
122
124
|
<fig-input-text value=""
|
|
123
125
|
placeholder="Field placeholder"></fig-input-text>
|
|
124
126
|
</fig-field>
|
|
125
|
-
<fig-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
<fig-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
<
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
</
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
127
|
+
<fig-field>
|
|
128
|
+
<label>Default slider</label>
|
|
129
|
+
<fig-slider></fig-slider>
|
|
130
|
+
</fig-field>
|
|
131
|
+
|
|
132
|
+
<fig-field>
|
|
133
|
+
<label>Number slider (with number input)</label>
|
|
134
|
+
<fig-slider text="true"
|
|
135
|
+
value="50"></fig-slider>
|
|
136
|
+
</fig-field>
|
|
137
|
+
|
|
138
|
+
<fig-field>
|
|
139
|
+
<label>Opacity slider</label>
|
|
140
|
+
<fig-slider type="opacity"
|
|
141
|
+
value="0.75"
|
|
142
|
+
color="#ff0000"
|
|
143
|
+
text="true"></fig-slider>
|
|
144
|
+
</fig-field>
|
|
145
|
+
|
|
146
|
+
<fig-field>
|
|
147
|
+
<label>Hue slider</label>
|
|
148
|
+
<fig-slider type="hue"
|
|
149
|
+
value="55"></fig-slider>
|
|
150
|
+
</fig-field>
|
|
151
|
+
|
|
152
|
+
<fig-field>
|
|
153
|
+
<label>Stepper slider</label>
|
|
154
|
+
<fig-slider value="50"
|
|
155
|
+
step="25">
|
|
156
|
+
<datalist id="markers">
|
|
157
|
+
<option value="0"></option>
|
|
158
|
+
<option value="25"></option>
|
|
159
|
+
<option value="50"></option>
|
|
160
|
+
<option value="75"></option>
|
|
161
|
+
<option value="100"></option>
|
|
162
|
+
</datalist>
|
|
163
|
+
</fig-slider>
|
|
164
|
+
</fig-field>
|
|
165
|
+
|
|
166
|
+
<fig-field>
|
|
167
|
+
<label>Delta slider</label>
|
|
168
|
+
<fig-slider type="delta"
|
|
169
|
+
value=".25"
|
|
170
|
+
default="0"
|
|
171
|
+
step="0.25"
|
|
172
|
+
max="5"
|
|
173
|
+
min="-5">
|
|
174
|
+
<datalist id="markers">
|
|
175
|
+
<option value="0"></option>
|
|
176
|
+
</datalist>
|
|
177
|
+
</fig-slider>
|
|
178
|
+
</fig-field>
|
|
179
|
+
|
|
154
180
|
<fig-spinner></fig-spinner>
|
|
155
181
|
</fig-content>
|
|
156
182
|
|
package/fig.css
CHANGED
|
@@ -1229,6 +1229,9 @@ fig-slider {
|
|
|
1229
1229
|
--width: calc(var(--slider-percent) - var(--start-percent));
|
|
1230
1230
|
--abs-width: max(var(--width) + var(--slider-height)/2, -1*var(--width) + var(--slider-height)/2);
|
|
1231
1231
|
width: var(--abs-width);
|
|
1232
|
+
--delta: calc(var(--slider-complete) - var(--default));
|
|
1233
|
+
--abs-delta: max(var(--delta), -1*var(--delta));
|
|
1234
|
+
opacity: calc(var(--abs-delta) * 100);
|
|
1232
1235
|
}
|
|
1233
1236
|
|
|
1234
1237
|
&::after {
|
|
@@ -1285,7 +1288,6 @@ fig-slider {
|
|
|
1285
1288
|
aspect-ratio: 1;
|
|
1286
1289
|
border: none;
|
|
1287
1290
|
position: relative;
|
|
1288
|
-
z-index: 1;
|
|
1289
1291
|
box-shadow: var(--slider-handle-shadow);
|
|
1290
1292
|
}
|
|
1291
1293
|
|
|
@@ -1347,7 +1349,6 @@ fig-slider {
|
|
|
1347
1349
|
aspect-ratio: 1;
|
|
1348
1350
|
border: none;
|
|
1349
1351
|
position: relative;
|
|
1350
|
-
z-index: 1;
|
|
1351
1352
|
box-shadow: var(--slider-handle-shadow);
|
|
1352
1353
|
}
|
|
1353
1354
|
|
|
@@ -1400,7 +1401,7 @@ fig-slider {
|
|
|
1400
1401
|
width: var(--slider-tick-size);
|
|
1401
1402
|
height: var(--slider-tick-size);
|
|
1402
1403
|
aspect-ratio: 1;
|
|
1403
|
-
margin: 0;
|
|
1404
|
+
margin: 0 auto;
|
|
1404
1405
|
padding: 0;
|
|
1405
1406
|
border: 0;
|
|
1406
1407
|
border-radius: 100%;
|
package/fig.js
CHANGED
|
@@ -8,6 +8,8 @@ function supportsPopover() {
|
|
|
8
8
|
|
|
9
9
|
/* Button */
|
|
10
10
|
class FigButton extends HTMLElement {
|
|
11
|
+
#type
|
|
12
|
+
#selected
|
|
11
13
|
constructor() {
|
|
12
14
|
super()
|
|
13
15
|
this.attachShadow({ mode: 'open' })
|
|
@@ -34,7 +36,30 @@ class FigButton extends HTMLElement {
|
|
|
34
36
|
<slot></slot>
|
|
35
37
|
</button>
|
|
36
38
|
`;
|
|
39
|
+
this.#selected = this.hasAttribute("selected") && this.getAttribute("selected") !== "false"
|
|
40
|
+
this.#type = this.getAttribute("type")
|
|
37
41
|
this.button = this.shadowRoot.querySelector('button')
|
|
42
|
+
this.addEventListener("click", this.handleClick.bind(this))
|
|
43
|
+
}
|
|
44
|
+
get type() {
|
|
45
|
+
return this.#type
|
|
46
|
+
}
|
|
47
|
+
set type(value) {
|
|
48
|
+
this.#type = value
|
|
49
|
+
this.setAttribute("type", value)
|
|
50
|
+
}
|
|
51
|
+
get selected() {
|
|
52
|
+
return this.#selected
|
|
53
|
+
}
|
|
54
|
+
set selected(value) {
|
|
55
|
+
this.#selected = value
|
|
56
|
+
this.setAttribute("selected", value)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
handleClick() {
|
|
60
|
+
if (this.#type === "toggle") {
|
|
61
|
+
this.selected = !this.#selected
|
|
62
|
+
}
|
|
38
63
|
}
|
|
39
64
|
static get observedAttributes() {
|
|
40
65
|
return ['disabled'];
|
|
@@ -549,12 +574,6 @@ class FigSlider extends HTMLElement {
|
|
|
549
574
|
this.input.addEventListener("input", this.handleInput.bind(this))
|
|
550
575
|
this.handleInput()
|
|
551
576
|
|
|
552
|
-
this.datalist = this.querySelector('datalist')
|
|
553
|
-
if (this.datalist) {
|
|
554
|
-
this.datalist.setAttribute("id", this.datalist.getAttribute("id") || uniqueId())
|
|
555
|
-
this.input.setAttribute('list', this.datalist.getAttribute("id"))
|
|
556
|
-
}
|
|
557
|
-
|
|
558
577
|
if (this.textInput) {
|
|
559
578
|
this.textInput.addEventListener("input", this.handleTextInput.bind(this))
|
|
560
579
|
}
|
|
@@ -562,6 +581,14 @@ class FigSlider extends HTMLElement {
|
|
|
562
581
|
if (this.default) {
|
|
563
582
|
this.style.setProperty("--default", this.calculateNormal(this.default))
|
|
564
583
|
}
|
|
584
|
+
//child nodes hack
|
|
585
|
+
requestAnimationFrame(() => {
|
|
586
|
+
this.datalist = this.querySelector('datalist')
|
|
587
|
+
if (this.datalist) {
|
|
588
|
+
this.datalist.setAttribute("id", this.datalist.getAttribute("id") || uniqueId())
|
|
589
|
+
this.input.setAttribute('list', this.datalist.getAttribute("id"))
|
|
590
|
+
}
|
|
591
|
+
})
|
|
565
592
|
}
|
|
566
593
|
static get observedAttributes() {
|
|
567
594
|
return ['value', 'step', 'min', 'max', 'type', 'disabled']
|
package/package.json
CHANGED