@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.
Files changed (4) hide show
  1. package/example.html +56 -30
  2. package/fig.css +4 -3
  3. package/fig.js +33 -6
  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"
@@ -48,7 +49,8 @@
48
49
  </svg>
49
50
  </fig-button>
50
51
  <fig-tooltip text="Toggle off/on">
51
- <fig-button variant="toggle"
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-slider></fig-slider>
126
- <br />
127
- <fig-slider text="true"
128
- value="50"></fig-slider>
129
- <br />
130
- <fig-slider type="opacity"
131
- value="0.75"
132
- color="#ff0000"></fig-slider>
133
- <br />
134
- <fig-slider type="hue"
135
- value="55"></fig-slider>
136
- <br />
137
- <fig-slider value="50"
138
- step="25">
139
- <datalist id="markers">
140
- <option value="0"></option>
141
- <option value="25"></option>
142
- <option value="50"></option>
143
- <option value="75"></option>
144
- <option value="100"></option>
145
- </datalist>
146
- </fig-slider>
147
- <br />
148
- <fig-slider type="delta"
149
- value="2"
150
- default="0"
151
- max="5"
152
- min="-5"></fig-slider>
153
- <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
+
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
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "name": "@rogieking/figui3",
3
- "version": "1.0.16"
3
+ "version": "1.0.18"
4
4
  }