@rogieking/figui3 1.0.17 → 1.0.19

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 (4) hide show
  1. package/example.html +55 -30
  2. package/fig.css +4 -3
  3. package/fig.js +11 -8
  4. 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"
@@ -49,8 +50,8 @@
49
50
  </fig-button>
50
51
  <fig-tooltip text="Toggle off/on">
51
52
  <fig-button variant="ghost"
52
- icon="true"
53
53
  type="toggle"
54
+ icon="true"
54
55
  selected="true">
55
56
  <svg width="24"
56
57
  height="24"
@@ -123,35 +124,59 @@
123
124
  <fig-input-text value=""
124
125
  placeholder="Field placeholder"></fig-input-text>
125
126
  </fig-field>
126
- <fig-slider></fig-slider>
127
- <br />
128
- <fig-slider text="true"
129
- value="50"></fig-slider>
130
- <br />
131
- <fig-slider type="opacity"
132
- value="0.75"
133
- color="#ff0000"></fig-slider>
134
- <br />
135
- <fig-slider type="hue"
136
- value="55"></fig-slider>
137
- <br />
138
- <fig-slider value="50"
139
- step="25">
140
- <datalist id="markers">
141
- <option value="0"></option>
142
- <option value="25"></option>
143
- <option value="50"></option>
144
- <option value="75"></option>
145
- <option value="100"></option>
146
- </datalist>
147
- </fig-slider>
148
- <br />
149
- <fig-slider type="delta"
150
- value="2"
151
- default="0"
152
- max="5"
153
- min="-5"></fig-slider>
154
- <br />
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
+
155
180
  <fig-spinner></fig-spinner>
156
181
  </fig-content>
157
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
@@ -18,6 +18,7 @@ class FigButton extends HTMLElement {
18
18
  this.render()
19
19
  }
20
20
  render() {
21
+ this.#type = this.getAttribute("type")
21
22
  this.shadowRoot.innerHTML = `
22
23
  <style>
23
24
  button, button:hover, button:active {
@@ -32,12 +33,11 @@ class FigButton extends HTMLElement {
32
33
  background: transparent;
33
34
  }
34
35
  </style>
35
- <button>
36
+ <button type="${this.#type}">
36
37
  <slot></slot>
37
38
  </button>
38
39
  `;
39
40
  this.#selected = this.hasAttribute("selected") && this.getAttribute("selected") !== "false"
40
- this.#type = this.getAttribute("type")
41
41
  this.button = this.shadowRoot.querySelector('button')
42
42
  this.addEventListener("click", this.handleClick.bind(this))
43
43
  }
@@ -46,6 +46,7 @@ class FigButton extends HTMLElement {
46
46
  }
47
47
  set type(value) {
48
48
  this.#type = value
49
+ this.button.type = value
49
50
  this.setAttribute("type", value)
50
51
  }
51
52
  get selected() {
@@ -574,12 +575,6 @@ class FigSlider extends HTMLElement {
574
575
  this.input.addEventListener("input", this.handleInput.bind(this))
575
576
  this.handleInput()
576
577
 
577
- this.datalist = this.querySelector('datalist')
578
- if (this.datalist) {
579
- this.datalist.setAttribute("id", this.datalist.getAttribute("id") || uniqueId())
580
- this.input.setAttribute('list', this.datalist.getAttribute("id"))
581
- }
582
-
583
578
  if (this.textInput) {
584
579
  this.textInput.addEventListener("input", this.handleTextInput.bind(this))
585
580
  }
@@ -587,6 +582,14 @@ class FigSlider extends HTMLElement {
587
582
  if (this.default) {
588
583
  this.style.setProperty("--default", this.calculateNormal(this.default))
589
584
  }
585
+ //child nodes hack
586
+ requestAnimationFrame(() => {
587
+ this.datalist = this.querySelector('datalist')
588
+ if (this.datalist) {
589
+ this.datalist.setAttribute("id", this.datalist.getAttribute("id") || uniqueId())
590
+ this.input.setAttribute('list', this.datalist.getAttribute("id"))
591
+ }
592
+ })
590
593
  }
591
594
  static get observedAttributes() {
592
595
  return ['value', 'step', 'min', 'max', 'type', 'disabled']
package/package.json CHANGED
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "name": "@rogieking/figui3",
3
- "version": "1.0.17"
3
+ "version": "1.0.19"
4
4
  }