@decidables/decidables-elements 0.3.4 → 0.4.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decidables/decidables-elements",
3
- "version": "0.3.4",
3
+ "version": "0.4.0",
4
4
  "description": "decidables-elements: Basic UI Web Components for the decidables project",
5
5
  "keywords": [
6
6
  "web component",
@@ -44,12 +44,12 @@
44
44
  "build": "gulp build"
45
45
  },
46
46
  "devDependencies": {
47
- "@web/test-runner": "^0.15.1",
47
+ "@web/test-runner": "^0.17.1",
48
48
  "gulp": "^4.0.2"
49
49
  },
50
50
  "dependencies": {
51
- "d3": "^7.8.2",
52
- "lit": "^2.7.0"
51
+ "d3": "^7.8.5",
52
+ "lit": "^2.8.0"
53
53
  },
54
- "gitHead": "6d3c14bd3e0aa1ed9d50a685fb9dccec24633a05"
54
+ "gitHead": "0c1c25702476045288038e7cacaaa70245b84cd1"
55
55
  }
@@ -124,6 +124,59 @@ export default class DecidablesElement extends LitElement {
124
124
  return `${umbraS} ${umbraC}, ${penumbraS} ${penumbraC}, ${ambientS} ${ambientC}`;
125
125
  }
126
126
 
127
+ static get svgDefs() {
128
+ const shadows = DecidablesElement.shadows; /* eslint-disable-line prefer-destructuring */
129
+
130
+ const filters = shadows.elevations.map((z) => {
131
+ return `
132
+ <filter id=${`shadow-${z}`} filterUnits="userSpaceOnUse" x="-100%" y="-100%" width="200%" height="200%">
133
+ <feComponentTransfer in="SourceAlpha" result="solid">
134
+ <feFuncA type="table" tableValues="0 1 1"/>
135
+ </feComponentTransfer>
136
+ <feOffset in="solid" result="offU" dx=${shadows.mapUmbra[z].y / 2} dy=${shadows.mapUmbra[z].y} />
137
+ <feOffset in="solid" result="offP" dx=${shadows.mapPenumbra[z].y / 2} dy=${shadows.mapPenumbra[z].y} />
138
+ <feOffset in="solid" result="offA" dx=${shadows.mapAmbient[z].y / 2} dy=${shadows.mapAmbient[z].y} />
139
+ ${(shadows.mapUmbra[z].s === 0)
140
+ ? ''
141
+ : `<feMorphology in="offU" result="spreadU" operator=${(shadows.mapUmbra[z].s > 0) ? 'dilate' : 'erode'} radius=${Math.abs(shadows.mapUmbra[z].s)} />`
142
+ }
143
+ ${(shadows.mapPenumbra[z].s === 0)
144
+ ? ''
145
+ : `<feMorphology in="offP" result="spreadP" operator=${(shadows.mapPenumbra[z].s > 0) ? 'dilate' : 'erode'} radius=${Math.abs(shadows.mapPenumbra[z].s)} />`
146
+ }
147
+ ${(shadows.mapAmbient[z].s === 0)
148
+ ? ''
149
+ : `<feMorphology in="offA" result="spreadA" operator=${(shadows.mapAmbient[z].s > 0) ? 'dilate' : 'erode'} radius=${Math.abs(shadows.mapAmbient[z].s)} />`
150
+ }
151
+ <feGaussianBlur in=${(shadows.mapUmbra[z].s === 0) ? 'offU' : 'spreadU'} result="blurU" stdDeviation=${shadows.mapUmbra[z].b / 2} />
152
+ <feGaussianBlur in=${(shadows.mapPenumbra[z].s === 0) ? 'offP' : 'spreadP'} result="blurP" stdDeviation=${shadows.mapPenumbra[z].b / 2} />
153
+ <feGaussianBlur in=${(shadows.mapAmbient[z].s === 0) ? 'offA' : 'spreadA'} result="blurA" stdDeviation=${shadows.mapAmbient[z].b / 2} />
154
+ <feFlood in="SourceGraphic" result="opU" flood-color=${shadows.baselineColor} flood-opacity=${shadows.opacityUmbra + shadows.opacityBoost} />
155
+ <feFlood in="SourceGraphic" result="opP" flood-color=${shadows.baselineColor} flood-opacity=${shadows.opacityPenumbra + shadows.opacityBoost} />
156
+ <feFlood in="SourceGraphic" result="opA" flood-color=${shadows.baselineColor} flood-opacity=${shadows.opacityAmbient + shadows.opacityBoost} />
157
+ <feComposite in="opU" in2="blurU" result="shU" operator="in" />
158
+ <feComposite in="opP" in2="blurP" result="shP" operator="in" />
159
+ <feComposite in="opA" in2="blurA" result="shA" operator="in" />
160
+ <feMorphology in="solid" result="smaller" operator="erode" radius="1" />
161
+ <feComposite in="shU" in2="smaller" result="finalU" operator="out" />
162
+ <feComposite in="shP" in2="smaller" result="finalP" operator="out" />
163
+ <feComposite in="shA" in2="smaller" result="finalA" operator="out" />
164
+ <feMerge>
165
+ <feMergeNode in="finalU" />
166
+ <feMergeNode in="finalP" />
167
+ <feMergeNode in="finalA" />
168
+ <feMergeNode in="SourceGraphic" />
169
+ </feMerge>
170
+ </filter>`;
171
+ });
172
+
173
+ return `
174
+ <defs>
175
+ ${filters}
176
+ </defs>
177
+ `;
178
+ }
179
+
127
180
  static get svgFilters() {
128
181
  const shadows = DecidablesElement.shadows; /* eslint-disable-line prefer-destructuring */
129
182
 
@@ -131,7 +184,7 @@ export default class DecidablesElement extends LitElement {
131
184
  return svg`
132
185
  <filter id=${`shadow-${z}`} x="-250%" y="-250%" width="600%" height="600%">
133
186
  <feComponentTransfer in="SourceAlpha" result="solid">
134
- <feFuncA type="table" tableValues="0 1 1"/>
187
+ <feFuncA type="table" tableValues="0 1 1"/>
135
188
  </feComponentTransfer>
136
189
  <feOffset in="solid" result="offU" dx=${shadows.mapUmbra[z].y / 2} dy=${shadows.mapUmbra[z].y} />
137
190
  <feOffset in="solid" result="offP" dx=${shadows.mapPenumbra[z].y / 2} dy=${shadows.mapPenumbra[z].y} />
package/src/index.js CHANGED
@@ -1,5 +1,8 @@
1
1
 
2
+ // Base class for Decidables Web Components
2
3
  export {default as DecidablesElement} from './decidables-element';
4
+
5
+ // UI Elements
3
6
  export {default as DecidablesButton} from './button';
4
7
  export {default as DecidablesSlider} from './slider';
5
8
  export {default as DecidablesSpinner} from './spinner';
@@ -7,5 +10,9 @@ export {default as DecidablesSwitch} from './switch';
7
10
  export {default as DecidablesToggle} from './toggle';
8
11
  export {default as DecidablesToggleOption} from './toggle-option';
9
12
 
13
+ // Property Converters
10
14
  export {default as DecidablesConverterArray} from './converter-array';
11
15
  export {default as DecidablesConverterSet} from './converter-set';
16
+
17
+ // Mixins
18
+ export {default as DecidablesMixinResizeable} from './mixin-resizeable';
@@ -0,0 +1,51 @@
1
+
2
+ export default function DecidablesMixinResizeable(superClass) {
3
+ return class extends superClass {
4
+ static get properties() {
5
+ return {
6
+ width: {
7
+ attribute: false,
8
+ type: Number,
9
+ reflect: false,
10
+ },
11
+ height: {
12
+ attribute: false,
13
+ type: Number,
14
+ reflect: false,
15
+ },
16
+ rem: {
17
+ attribute: false,
18
+ type: Number,
19
+ reflect: false,
20
+ },
21
+ };
22
+ }
23
+
24
+ constructor() {
25
+ super();
26
+
27
+ this.width = NaN;
28
+ this.height = NaN;
29
+ this.rem = NaN;
30
+ }
31
+
32
+ getDimensions() {
33
+ this.width = parseFloat(this.getComputedStyleValue('width'), 10);
34
+ this.height = parseFloat(this.getComputedStyleValue('height'), 10);
35
+ this.rem = parseFloat(getComputedStyle(document.documentElement).getPropertyValue('font-size'), 10);
36
+ }
37
+
38
+ connectedCallback() {
39
+ super.connectedCallback();
40
+
41
+ this.resizeObserver = new ResizeObserver(this.getDimensions.bind(this));
42
+ this.resizeObserver.observe(this);
43
+ }
44
+
45
+ disconnectedCallback() {
46
+ this.resizeObserver.unobserve(this);
47
+
48
+ super.disconnectedCallback();
49
+ }
50
+ };
51
+ }
package/src/spinner.js CHANGED
@@ -59,6 +59,9 @@ export default class DecidablesSpinner extends DecidablesElement {
59
59
  ---decidables-spinner-input-width: var(--decidables-spinner-input-width, 4rem);
60
60
  ---decidables-spinner-prefix: var(--decidables-spinner-prefix, "");
61
61
 
62
+ ---decidables-spinner-postfix: var(--decidables-spinner-postfix, "");
63
+ ---decidables-spinner-postfix-padding: var(--decidables-spinner-postfix-padding, 0);
64
+
62
65
  display: block;
63
66
  }
64
67
 
@@ -86,8 +89,20 @@ export default class DecidablesSpinner extends DecidablesElement {
86
89
  content: var(---decidables-spinner-prefix);
87
90
  }
88
91
 
92
+ label::after {
93
+ position: absolute;
94
+ right: 0.25rem;
95
+ bottom: 1px;
96
+
97
+ font-size: var(---decidables-spinner-font-size);
98
+ line-height: normal;
99
+
100
+ content: var(---decidables-spinner-postfix);
101
+ }
102
+
89
103
  input[type=number] {
90
104
  width: var(---decidables-spinner-input-width);
105
+ padding-right: var(---decidables-spinner-postfix-padding);
91
106
 
92
107
  font-family: var(---font-family-base);
93
108
  font-size: var(---decidables-spinner-font-size);