@decidables/accumulable-elements 0.3.7 → 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.
@@ -4574,18 +4574,6 @@ class DecidablesElement extends i {
4574
4574
  getComputedStyleValue(property) {
4575
4575
  return getComputedStyle(this).getPropertyValue(property).trim();
4576
4576
  }
4577
- firstUpdated(changedProperties) {
4578
- super.firstUpdated(changedProperties);
4579
-
4580
- // Use focus highlighting if keyboard is used at all
4581
- select(this.renderRoot.host).classed('keyboard', true).on('mousemove.keyboard touchstart.keyboard', event => {
4582
- const element = event.currentTarget;
4583
- select(element.renderRoot.host).classed('keyboard', false).on('mousemove.keyboard touchstart.keyboard', null);
4584
- }).on('keydown.keyboard', event => {
4585
- const element = event.currentTarget;
4586
- select(element.renderRoot.host).classed('keyboard', true).on('keydown.keyboard mousemove.keyboard touchstart.keyboard', null);
4587
- });
4588
- }
4589
4577
  static get greys() {
4590
4578
  const grey = '#999999';
4591
4579
  const greys = {};
@@ -4721,7 +4709,7 @@ class DecidablesElement extends i {
4721
4709
  };
4722
4710
  /* eslint-enable key-spacing, object-curly-newline */
4723
4711
  }
4724
- static cssBoxShadow(elevation, rotate = false, inverse = false) {
4712
+ static cssBoxShadow(elevation, inverse = false) {
4725
4713
  const umbraO = this.shadows.opacityUmbra + this.shadows.opacityBoost;
4726
4714
  const penumbraO = this.shadows.opacityPenumbra + this.shadows.opacityBoost;
4727
4715
  const ambientO = this.shadows.opacityAmbient + this.shadows.opacityBoost;
@@ -4731,9 +4719,9 @@ class DecidablesElement extends i {
4731
4719
  const umbraM = this.shadows.mapUmbra[elevation];
4732
4720
  const penumbraM = this.shadows.mapPenumbra[elevation];
4733
4721
  const ambientM = this.shadows.mapAmbient[elevation];
4734
- const umbraS = rotate ? `${-umbraM.y}px ${umbraM.y / 2}px ${umbraM.b}px ${umbraM.s}px` : `${umbraM.y / 2}px ${umbraM.y}px ${umbraM.b}px ${umbraM.s}px`;
4735
- const penumbraS = rotate ? `${-penumbraM.y}px ${penumbraM.y / 2}px ${penumbraM.b}px ${penumbraM.s}px` : `${penumbraM.y / 2}px ${penumbraM.y}px ${penumbraM.b}px ${penumbraM.s}px`;
4736
- const ambientS = rotate ? `${-ambientM.y}px ${ambientM.y / 2}px ${ambientM.b}px ${ambientM.s}px` : `${ambientM.y / 2}px ${ambientM.y}px ${ambientM.b}px ${ambientM.s}px`;
4722
+ const umbraS = `${umbraM.y / 2}px ${umbraM.y}px ${umbraM.b}px ${umbraM.s}px`;
4723
+ const penumbraS = `${penumbraM.y / 2}px ${penumbraM.y}px ${penumbraM.b}px ${penumbraM.s}px`;
4724
+ const ambientS = `${ambientM.y / 2}px ${ambientM.y}px ${ambientM.b}px ${ambientM.s}px`;
4737
4725
  return `${umbraS} ${umbraC}, ${penumbraS} ${penumbraC}, ${ambientS} ${ambientC}`;
4738
4726
  }
4739
4727
  static get svgFilters() {
@@ -4869,49 +4857,58 @@ class DecidablesButton extends DecidablesElement {
4869
4857
  button {
4870
4858
  width: 100%;
4871
4859
  height: 100%;
4860
+
4872
4861
  padding: 0.375rem 0.75rem;
4873
4862
 
4874
4863
  font-family: var(---font-family-base);
4875
4864
  font-size: 1.125rem;
4865
+
4876
4866
  line-height: 1.5;
4867
+
4877
4868
  color: var(---color-text-inverse);
4878
4869
 
4870
+ outline: none;
4871
+
4879
4872
  border: 0;
4880
4873
  border-radius: var(---border-radius);
4881
- outline: none;
4882
4874
  }
4883
4875
 
4884
4876
  button:disabled {
4885
- background-color: var(---decidables-button-background-color-disabled);
4886
4877
  outline: none;
4878
+
4879
+ background-color: var(---decidables-button-background-color-disabled);
4887
4880
  box-shadow: none;
4888
4881
  }
4889
4882
 
4890
4883
  button:enabled {
4891
4884
  cursor: pointer;
4885
+ outline: none;
4892
4886
 
4893
4887
  background-color: var(---decidables-button-background-color-enabled);
4894
- outline: none;
4895
4888
  box-shadow: var(---shadow-2);
4896
4889
  }
4897
4890
 
4898
4891
  button:enabled:hover {
4899
4892
  outline: none;
4893
+
4900
4894
  box-shadow: var(---shadow-4);
4901
4895
  }
4902
4896
 
4903
4897
  button:enabled:active {
4904
4898
  outline: none;
4899
+
4905
4900
  box-shadow: var(---shadow-8);
4906
4901
  }
4907
4902
 
4908
- :host(.keyboard) button:enabled:focus {
4903
+ button:enabled:focus-visible {
4909
4904
  outline: none;
4905
+
4910
4906
  box-shadow: var(---shadow-4);
4911
4907
  }
4912
4908
 
4913
- :host(.keyboard) button:enabled:focus:active {
4909
+ button:enabled:focus-visible:active {
4914
4910
  outline: none;
4911
+
4915
4912
  box-shadow: var(---shadow-8);
4916
4913
  }
4917
4914
  `];
@@ -5028,10 +5025,6 @@ class DecidablesSlider extends DecidablesElement {
5028
5025
  ---decidables-slider-color: var(--decidables-slider-color, var(---color-element-enabled));
5029
5026
  ---decidables-spinner-background-color: var(--decidables-slider-background-color, none);
5030
5027
 
5031
- ---shadow-2-rotate: var(--shadow-2-rotate, ${r$2(this.cssBoxShadow(2, true, false))});
5032
- ---shadow-4-rotate: var(--shadow-4-rotate, ${r$2(this.cssBoxShadow(4, true, false))});
5033
- ---shadow-8-rotate: var(--shadow-8-rotate, ${r$2(this.cssBoxShadow(8, true, false))});
5034
-
5035
5028
  display: flex;
5036
5029
 
5037
5030
  flex-direction: column;
@@ -5046,12 +5039,14 @@ class DecidablesSlider extends DecidablesElement {
5046
5039
 
5047
5040
  .range {
5048
5041
  position: relative;
5042
+
5049
5043
  display: flex;
5050
5044
 
5051
5045
  flex-direction: row;
5052
5046
 
5053
5047
  width: 3.5rem;
5054
5048
  height: 4.75rem;
5049
+
5055
5050
  margin: 0 0.25rem 0.25rem;
5056
5051
  }
5057
5052
 
@@ -5063,21 +5058,20 @@ class DecidablesSlider extends DecidablesElement {
5063
5058
  background: var(---decidables-spinner-background-color);
5064
5059
  }
5065
5060
 
5066
- /* Adapted from http://danielstern.ca/range.css/#/ */
5067
5061
  /* Overall */
5068
5062
  input[type=range] {
5069
- width: 4.75rem;
5070
- height: 3.5rem;
5063
+ width: 3.5rem;
5064
+ height: 4.75rem;
5065
+
5071
5066
  padding: 0;
5072
5067
  margin: 0;
5068
+
5069
+ appearance: none;
5073
5070
 
5074
5071
  background-color: unset;
5075
5072
 
5076
- transform: rotate(-90deg);
5077
- transform-origin: 2.375rem 2.375rem;
5078
-
5079
- /* stylelint-disable-next-line property-no-vendor-prefix */
5080
- -webkit-appearance: none;
5073
+ direction: rtl;
5074
+ writing-mode: vertical-lr;
5081
5075
  }
5082
5076
 
5083
5077
  input[type=range]:enabled {
@@ -5088,16 +5082,10 @@ class DecidablesSlider extends DecidablesElement {
5088
5082
  outline: none;
5089
5083
  }
5090
5084
 
5091
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5092
- input[type=range]::-ms-tooltip {
5093
- display: none;
5094
- }
5095
-
5096
5085
  /* Track */
5097
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5098
5086
  input[type=range]::-webkit-slider-runnable-track {
5099
- width: 100%;
5100
- height: 4px;
5087
+ width: 4px;
5088
+ height: 100%;
5101
5089
 
5102
5090
  background: var(---decidables-slider-background-color);
5103
5091
  border: 0;
@@ -5109,10 +5097,9 @@ class DecidablesSlider extends DecidablesElement {
5109
5097
  background: var(---decidables-slider-background-color);
5110
5098
  }
5111
5099
 
5112
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5113
5100
  input[type=range]::-moz-range-track {
5114
- width: 100%;
5115
- height: 4px;
5101
+ width: 4px;
5102
+ height: 100%;
5116
5103
 
5117
5104
  background: var(---decidables-slider-background-color);
5118
5105
  border: 0;
@@ -5120,57 +5107,17 @@ class DecidablesSlider extends DecidablesElement {
5120
5107
  box-shadow: none;
5121
5108
  }
5122
5109
 
5123
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5124
- input[type=range]::-ms-track {
5125
- width: 100%;
5126
- height: 4px;
5127
-
5128
- color: transparent;
5129
-
5130
- background: transparent;
5131
- border-color: transparent;
5132
- }
5133
-
5134
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5135
- input[type=range]::-ms-fill-lower {
5136
- background: #cccccc;
5137
- /* background: var(---decidables-slider-background-color); */
5138
- border: 0;
5139
- border-radius: 2px;
5140
- box-shadow: none;
5141
- }
5142
-
5143
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5144
- input[type=range]::-ms-fill-upper {
5145
- background: #cccccc;
5146
- /* background: var(---decidables-slider-background-color); */
5147
- border: 0;
5148
- border-radius: 2px;
5149
- box-shadow: none;
5150
- }
5151
-
5152
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5153
- input[type=range]:focus::-ms-fill-lower {
5154
- background: var(---decidables-slider-background-color);
5155
- }
5156
-
5157
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5158
- input[type=range]:focus::-ms-fill-upper {
5159
- background: var(---decidables-slider-background-color);
5160
- }
5161
-
5162
5110
  /* Thumb */
5163
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5164
5111
  input[type=range]::-webkit-slider-thumb {
5165
- width: 10px;
5166
- height: 20px;
5167
- margin-top: -8px;
5112
+ width: 20px;
5113
+ height: 10px;
5114
+
5115
+ margin-left: -8px;
5116
+
5117
+ appearance: none;
5168
5118
 
5169
5119
  border: 0;
5170
5120
  border-radius: 4px;
5171
-
5172
- /* stylelint-disable-next-line property-no-vendor-prefix */
5173
- -webkit-appearance: none;
5174
5121
  }
5175
5122
 
5176
5123
  input[type=range]:disabled::-webkit-slider-thumb {
@@ -5180,112 +5127,65 @@ class DecidablesSlider extends DecidablesElement {
5180
5127
 
5181
5128
  input[type=range]:enabled::-webkit-slider-thumb {
5182
5129
  background: var(---decidables-slider-color);
5183
- box-shadow: var(---shadow-2-rotate);
5130
+ box-shadow: var(---shadow-2);
5184
5131
  }
5185
5132
 
5186
5133
  input[type=range]:enabled:hover::-webkit-slider-thumb {
5187
- box-shadow: var(---shadow-4-rotate);
5134
+ box-shadow: var(---shadow-4);
5188
5135
  }
5189
5136
 
5190
5137
  input[type=range]:enabled:active::-webkit-slider-thumb {
5191
- box-shadow: var(---shadow-8-rotate);
5138
+ box-shadow: var(---shadow-8);
5192
5139
  }
5193
5140
 
5194
- :host(.keyboard) input[type=range]:enabled:focus::-webkit-slider-thumb {
5195
- box-shadow: var(---shadow-4-rotate);
5141
+ input[type=range]:enabled:focus-visible::-webkit-slider-thumb {
5142
+ box-shadow: var(---shadow-4);
5196
5143
  }
5197
5144
 
5198
- :host(.keyboard) input[type=range]:focus:active::-webkit-slider-thumb {
5199
- box-shadow: var(---shadow-8-rotate);
5145
+ input[type=range]:enabled:focus-visible:active::-webkit-slider-thumb {
5146
+ box-shadow: var(---shadow-8);
5200
5147
  }
5201
5148
 
5202
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5203
5149
  input[type=range]::-moz-range-thumb {
5204
- width: 10px;
5205
- height: 20px;
5150
+ width: 20px;
5151
+ height: 10px;
5206
5152
 
5207
5153
  border: 0;
5208
5154
  border-radius: 4px;
5209
5155
  }
5210
5156
 
5211
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5212
5157
  input[type=range]:disabled::-moz-range-thumb {
5213
5158
  background: var(---decidables-slider-background-color);
5214
5159
  box-shadow: none;
5215
5160
  }
5216
5161
 
5217
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5218
5162
  input[type=range]:enabled::-moz-range-thumb {
5219
5163
  background: var(---decidables-slider-color);
5220
- box-shadow: var(---shadow-2-rotate);
5164
+ box-shadow: var(---shadow-2);
5221
5165
  }
5222
5166
 
5223
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5224
5167
  input[type=range]:enabled:hover::-moz-range-thumb {
5225
- box-shadow: var(---shadow-4-rotate);
5168
+ box-shadow: var(---shadow-4);
5226
5169
  }
5227
5170
 
5228
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5229
5171
  input[type=range]:enabled:active::-moz-range-thumb {
5230
- box-shadow: var(---shadow-8-rotate);
5231
- }
5232
-
5233
- :host(.keyboard) input[type=range]:enabled:focus::-moz-range-thumb {
5234
- box-shadow: var(---shadow-4-rotate);
5235
- }
5236
-
5237
- :host(.keyboard) input[type=range]:enabled:focus:active::-moz-range-thumb {
5238
- box-shadow: var(---shadow-8-rotate);
5239
- }
5240
-
5241
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5242
- input[type=range]::-ms-thumb {
5243
- width: 10px;
5244
- height: 20px;
5245
- margin-top: 0;
5246
-
5247
- background: #999999;
5248
- /* background: var(---color-element-enabled); */
5249
- border: 0;
5250
- border-radius: 4px;
5251
- box-shadow: var(---shadow-2-rotate);
5252
- }
5253
-
5254
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5255
- input[type=range]:disabled::-ms-thumb {
5256
- background: var(---decidables-slider-background-color);
5257
- box-shadow: none;
5258
- }
5259
-
5260
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5261
- input[type=range]:enabled::-ms-thumb {
5262
- background: var(---decidables-slider-color);
5263
- box-shadow: var(---shadow-2-rotate);
5264
- }
5265
-
5266
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5267
- input[type=range]:enabled:hover::-ms-thumb {
5268
- box-shadow: var(---shadow-4-rotate);
5269
- }
5270
-
5271
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5272
- input[type=range]:enabled:active::-ms-thumb {
5273
- box-shadow: var(---shadow-8-rotate);
5172
+ box-shadow: var(---shadow-8);
5274
5173
  }
5275
5174
 
5276
- /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */
5277
- :host(.keyboard) input[type=range]:enabled:focus::-ms-thumb {
5278
- box-shadow: var(---shadow-4-rotate);
5175
+ input[type=range]:enabled:focus-visible::-moz-range-thumb {
5176
+ box-shadow: var(---shadow-4);
5279
5177
  }
5280
5178
 
5281
- :host(.keyboard) input[type=range]:enabled:focus:active::-ms-thumb {
5282
- box-shadow: var(---shadow-8-rotate);
5179
+ input[type=range]:enabled:focus-visible:active::-moz-range-thumb {
5180
+ box-shadow: var(---shadow-8);
5283
5181
  }
5284
5182
 
5285
- datalist {
5183
+ /* Tick marks */
5184
+ .datalist {
5286
5185
  position: absolute;
5287
5186
  left: 2rem;
5288
5187
  z-index: -1;
5188
+
5289
5189
  display: flex;
5290
5190
 
5291
5191
  flex-direction: column;
@@ -5298,14 +5198,13 @@ class DecidablesSlider extends DecidablesElement {
5298
5198
  font-size: 0.75rem;
5299
5199
  }
5300
5200
 
5301
- option {
5302
- padding: 0;
5303
-
5201
+ .option {
5304
5202
  line-height: 0.8;
5305
- min-block-size: 0;
5203
+
5204
+ white-space: nowrap;
5306
5205
  }
5307
5206
 
5308
- option::before {
5207
+ .option::before {
5309
5208
  content: "– ";
5310
5209
  }
5311
5210
  `];
@@ -5318,10 +5217,10 @@ class DecidablesSlider extends DecidablesElement {
5318
5217
  <div class="range">
5319
5218
  <input ?disabled=${this.disabled} type="range" id="slider" min=${o(this.rangeMin)} max=${o(this.rangeMax)} step=${o(this.rangeStep)} .value=${this.rangeValue} @change=${this.rangeChanged.bind(this)} @input=${this.rangeInputted.bind(this)}>
5320
5219
  ${this.scale ? x$1`
5321
- <datalist id="ticks">
5322
- <option value=${o(this.rangeMax)} label=${o(this.max)}></option>
5323
- <option value=${o(this.rangeMin)} label=${o(this.min)}></option>
5324
- </datalist>
5220
+ <div class="datalist">
5221
+ <div class="option">${o(this.max)}</div>
5222
+ <div class="option">${o(this.min)}</div>
5223
+ </div>
5325
5224
  ` : x$1``}
5326
5225
  </div>
5327
5226
  <decidables-spinner ?disabled=${this.disabled} min=${o(this.min)} max=${o(this.max)} step=${o(this.step)} .value=${this.value} @input=${this.spinnerInputted.bind(this)}></decidables-spinner>
@@ -5381,13 +5280,14 @@ class DecidablesSpinner extends DecidablesElement {
5381
5280
  ---decidables-spinner-prefix: var(--decidables-spinner-prefix, "");
5382
5281
 
5383
5282
  ---decidables-spinner-postfix: var(--decidables-spinner-postfix, "");
5384
- ---decidables-spinner-postfix-padding: var(--decidables-spinner-postfix-padding, 0);
5283
+ ---decidables-spinner-postfix-padding: var(--decidables-spinner-postfix-padding, 0rem);
5385
5284
 
5386
5285
  display: block;
5387
5286
  }
5388
5287
 
5389
5288
  label {
5390
5289
  position: relative;
5290
+
5391
5291
  display: flex;
5392
5292
 
5393
5293
  flex-direction: column;
@@ -5405,6 +5305,7 @@ class DecidablesSpinner extends DecidablesElement {
5405
5305
  left: calc(50% - var(---decidables-spinner-input-width) / 2 + 0.25rem);
5406
5306
 
5407
5307
  font-size: var(---decidables-spinner-font-size);
5308
+
5408
5309
  line-height: normal;
5409
5310
 
5410
5311
  content: var(---decidables-spinner-prefix);
@@ -5416,6 +5317,7 @@ class DecidablesSpinner extends DecidablesElement {
5416
5317
  bottom: 1px;
5417
5318
 
5418
5319
  font-size: var(---decidables-spinner-font-size);
5320
+
5419
5321
  line-height: normal;
5420
5322
 
5421
5323
  content: var(---decidables-spinner-postfix);
@@ -5423,20 +5325,24 @@ class DecidablesSpinner extends DecidablesElement {
5423
5325
 
5424
5326
  input[type=number] {
5425
5327
  width: var(---decidables-spinner-input-width);
5426
- padding-right: var(---decidables-spinner-postfix-padding);
5328
+
5329
+ padding: 1px var(---decidables-spinner-postfix-padding) 1px 2px;
5330
+ margin: 0;
5427
5331
 
5428
5332
  font-family: var(---font-family-base);
5429
5333
  font-size: var(---decidables-spinner-font-size);
5334
+
5430
5335
  color: inherit;
5336
+
5431
5337
  text-align: right;
5432
5338
 
5339
+ appearance: none;
5340
+ outline: none;
5341
+
5433
5342
  background: none;
5434
5343
  border: 0;
5435
5344
  border-radius: 0;
5436
- outline: none;
5437
5345
  box-shadow: var(---shadow-2);
5438
-
5439
- -webkit-appearance: none; /* stylelint-disable-line property-no-vendor-prefix */
5440
5346
  }
5441
5347
 
5442
5348
  input[type=number]:hover {
@@ -5453,20 +5359,54 @@ class DecidablesSpinner extends DecidablesElement {
5453
5359
 
5454
5360
  border: 0;
5455
5361
  box-shadow: none;
5362
+ }
5363
+
5364
+ /* HACK: Manage spinners in Firefox */
5365
+ @supports (-moz-appearance: textfield) {
5366
+ input[type=number] {
5367
+ padding-right: calc(18px + var(---decidables-spinner-postfix-padding));
5368
+
5369
+ appearance: textfield;
5370
+ }
5371
+
5372
+ input[type=number]:hover,
5373
+ input[type=number]:focus,
5374
+ input[type=number]:active {
5375
+ padding-right: var(---decidables-spinner-postfix-padding);
5376
+
5377
+ appearance: none;
5378
+ }
5379
+
5380
+ input[type=number]:disabled {
5381
+ padding-right: calc(18px + var(---decidables-spinner-postfix-padding));
5456
5382
 
5457
- /* HACK: Use correct text color in Safari */
5458
- -webkit-opacity: 1;
5459
- /* HACK: Hide spinners in disabled input for Firefox and Safari */
5460
- -moz-appearance: textfield; /* stylelint-disable-line property-no-vendor-prefix */
5461
- /* HACK: Use correct text color in Safari */
5462
- -webkit-text-fill-color: var(---color-text);
5383
+ appearance: textfield;
5384
+ }
5385
+ }
5386
+
5387
+ /* HACK: Manage spinners in Chrome/Edge/Safari */
5388
+ input[type=number]::-webkit-inner-spin-button {
5389
+ /* Avoid oversized spinners in Safari */
5390
+ font-size: 1.125rem;
5391
+
5392
+ opacity: 0;
5393
+ }
5394
+
5395
+ input[type=number]:hover::-webkit-inner-spin-button,
5396
+ input[type=number]:focus::-webkit-inner-spin-button,
5397
+ input[type=number]:active::-webkit-inner-spin-button {
5398
+ opacity: 1;
5463
5399
  }
5464
5400
 
5465
- /* HACK: Hide spinners in disabled input for Firefox and Safari */
5466
- input[type=number]:disabled::-webkit-outer-spin-button,
5467
5401
  input[type=number]:disabled::-webkit-inner-spin-button {
5468
- margin: 0;
5469
- -webkit-appearance: none; /* stylelint-disable-line property-no-vendor-prefix */
5402
+ opacity: 0;
5403
+ }
5404
+
5405
+ /* HACK: Adjust padding on mobile w/o spinners */
5406
+ @media only screen and (hover: none) and (pointer: coarse) {
5407
+ input[type=number] {
5408
+ padding-right: calc(1.125rem + var(---decidables-spinner-postfix-padding));
5409
+ }
5470
5410
  }
5471
5411
  `];
5472
5412
  }
@@ -5530,13 +5470,16 @@ class DecidablesSwitch extends DecidablesElement {
5530
5470
 
5531
5471
  width: 1px;
5532
5472
  height: 1px;
5473
+
5533
5474
  padding: 0;
5534
5475
  margin: -1px;
5476
+
5535
5477
  overflow: hidden;
5536
5478
 
5537
5479
  white-space: nowrap;
5538
5480
 
5539
5481
  border: 0;
5482
+
5540
5483
  clip-path: inset(100%); /* May cause a performance issue: https://github.com/h5bp/html5-boilerplate/issues/2021 */
5541
5484
  }
5542
5485
 
@@ -5552,6 +5495,7 @@ class DecidablesSwitch extends DecidablesElement {
5552
5495
  position: relative;
5553
5496
 
5554
5497
  min-width: 24px;
5498
+
5555
5499
  padding: 0 0 36px;
5556
5500
  margin: 0.25rem 0.25rem 0;
5557
5501
 
@@ -5563,17 +5507,17 @@ class DecidablesSwitch extends DecidablesElement {
5563
5507
  input[type=checkbox] + label + label::before,
5564
5508
  input[type=checkbox] + label + label::after {
5565
5509
  position: absolute;
5566
-
5567
5510
  left: 50%;
5568
5511
 
5569
5512
  margin: 0;
5570
5513
 
5571
- content: "";
5572
-
5573
5514
  outline: 0;
5574
5515
 
5575
- transition: all var(---transition-duration) ease;
5516
+ content: "";
5517
+
5576
5518
  transform: translate(-50%, 0);
5519
+
5520
+ transition: all var(---transition-duration) ease;
5577
5521
  }
5578
5522
 
5579
5523
  input[type=checkbox] + label + label::before {
@@ -5621,17 +5565,14 @@ class DecidablesSwitch extends DecidablesElement {
5621
5565
  box-shadow: var(---shadow-8);
5622
5566
  }
5623
5567
 
5624
- /* stylelint-disable-next-line selector-max-compound-selectors */
5625
- :host(.keyboard) input[type=checkbox]:enabled:focus + label + label::after {
5568
+ input[type=checkbox]:enabled:focus-visible + label + label::after {
5626
5569
  box-shadow: var(---shadow-4);
5627
5570
  }
5628
5571
 
5629
- /* stylelint-disable selector-max-compound-selectors */
5630
- :host(.keyboard) input[type=checkbox]:enabled:focus + label + label:active::after,
5631
- :host(.keyboard) input[type=checkbox]:enabled:focus:active + label + label::after {
5572
+ input[type=checkbox]:enabled:focus-visible + label + label:active::after,
5573
+ input[type=checkbox]:enabled:focus-visible:active + label + label::after {
5632
5574
  box-shadow: var(---shadow-8);
5633
5575
  }
5634
- /* stylelint-enable selector-max-compound-selectors */
5635
5576
  `];
5636
5577
  }
5637
5578
  render() {
@@ -5751,39 +5692,46 @@ class DecidablesToggleOption extends DecidablesElement {
5751
5692
 
5752
5693
  width: 1px;
5753
5694
  height: 1px;
5695
+
5754
5696
  padding: 0;
5755
5697
  margin: -1px;
5698
+
5756
5699
  overflow: hidden;
5757
5700
 
5758
5701
  white-space: nowrap;
5759
5702
 
5760
5703
  border: 0;
5704
+
5761
5705
  clip-path: inset(100%); /* May cause a performance issue: https://github.com/h5bp/html5-boilerplate/issues/2021 */
5762
5706
  }
5763
5707
 
5764
5708
  input[type=radio] + label {
5765
5709
  width: 100%;
5710
+
5766
5711
  padding: 0.375rem 0.75rem;
5767
5712
 
5768
5713
  font-family: var(---font-family-base);
5769
5714
  font-size: 1.125rem;
5715
+
5770
5716
  line-height: 1.5;
5717
+
5771
5718
  color: var(---color-text-inverse);
5719
+
5772
5720
  text-align: center;
5773
5721
 
5774
5722
  cursor: pointer;
5723
+ outline: none;
5775
5724
 
5776
5725
  background-color: var(---color-element-enabled);
5777
5726
  border: 0;
5778
5727
  border-radius: 0;
5779
- outline: none;
5780
-
5781
5728
  box-shadow: var(---shadow-2);
5782
5729
  }
5783
5730
 
5784
5731
  input[type=radio]:checked + label {
5785
- background-color: var(---color-element-selected);
5786
5732
  outline: none;
5733
+
5734
+ background-color: var(---color-element-selected);
5787
5735
  box-shadow: var(---shadow-2);
5788
5736
  }
5789
5737
 
@@ -5791,6 +5739,7 @@ class DecidablesToggleOption extends DecidablesElement {
5791
5739
  z-index: 1;
5792
5740
 
5793
5741
  outline: none;
5742
+
5794
5743
  box-shadow: var(---shadow-4);
5795
5744
  }
5796
5745
 
@@ -5798,6 +5747,7 @@ class DecidablesToggleOption extends DecidablesElement {
5798
5747
  z-index: 2;
5799
5748
 
5800
5749
  outline: none;
5750
+
5801
5751
  box-shadow: var(---shadow-8);
5802
5752
  }
5803
5753
 
@@ -5811,25 +5761,28 @@ class DecidablesToggleOption extends DecidablesElement {
5811
5761
  border-bottom-left-radius: 0.25rem;
5812
5762
  }
5813
5763
 
5814
- :host(.keyboard) input[type=radio]:focus + label {
5764
+ input[type=radio]:focus-visible + label {
5815
5765
  z-index: 1;
5816
5766
 
5817
5767
  outline: none;
5768
+
5818
5769
  box-shadow: var(---shadow-4);
5819
5770
  }
5820
5771
 
5821
- :host(.keyboard) input[type=radio]:focus:checked + label {
5772
+ input[type=radio]:focus-visible:checked + label {
5822
5773
  z-index: 1;
5823
5774
 
5824
- background-color: var(---color-element-selected);
5825
5775
  outline: none;
5776
+
5777
+ background-color: var(---color-element-selected);
5826
5778
  box-shadow: var(---shadow-4);
5827
5779
  }
5828
5780
 
5829
- :host(.keyboard) input[type=radio]:focus + label:active {
5781
+ input[type=radio]:focus-visible + label:active {
5830
5782
  z-index: 2;
5831
5783
 
5832
5784
  outline: none;
5785
+
5833
5786
  box-shadow: var(---shadow-8);
5834
5787
  }
5835
5788
  `];
@@ -6682,6 +6635,7 @@ class AccumulableResponse extends AccumulableElement {
6682
6635
 
6683
6636
  width: 6rem;
6684
6637
  height: 3.5rem;
6638
+
6685
6639
  padding: 0.375rem 0.75rem;
6686
6640
  margin: 0.25rem;
6687
6641
 
@@ -6710,6 +6664,7 @@ class AccumulableResponse extends AccumulableElement {
6710
6664
 
6711
6665
  .feedback .outcome {
6712
6666
  font-weight: 600;
6667
+
6713
6668
  line-height: 1.15;
6714
6669
  }
6715
6670
 
@@ -6992,6 +6947,7 @@ class AccumulableTable extends AccumulableElement {
6992
6947
  /* Labels */
6993
6948
  .payoff {
6994
6949
  font-weight: 600;
6950
+
6995
6951
  line-height: 0.75rem;
6996
6952
  }
6997
6953
 
@@ -7480,6 +7436,7 @@ class DDMParameters extends AccumulableElement {
7480
7436
 
7481
7437
  decidables-slider {
7482
7438
  line-height: 1;
7439
+
7483
7440
  text-align: center;
7484
7441
  }
7485
7442
 
@@ -7925,8 +7882,9 @@ class DDMModel extends DecidablesMixinResizeable(AccumulableElement) {
7925
7882
  }
7926
7883
 
7927
7884
  .path.highlight .curve {
7928
- filter: url("#shadow-2");
7929
7885
  opacity: 1;
7886
+
7887
+ filter: url("#shadow-2");
7930
7888
  }
7931
7889
 
7932
7890
  .path.correct .curve {
@@ -8002,8 +7960,9 @@ class DDMModel extends DecidablesMixinResizeable(AccumulableElement) {
8002
7960
 
8003
7961
  .boundary.interactive,
8004
7962
  .t0z.interactive {
8005
- filter: url("#shadow-2");
8006
7963
  outline: none;
7964
+
7965
+ filter: url("#shadow-2");
8007
7966
  }
8008
7967
 
8009
7968
  .boundary.interactive:hover,
@@ -8023,8 +7982,8 @@ class DDMModel extends DecidablesMixinResizeable(AccumulableElement) {
8023
7982
  transform: translateY(0);
8024
7983
  }
8025
7984
 
8026
- :host(.keyboard) .boundary.interactive:focus,
8027
- :host(.keyboard) .t0z.interactive:focus {
7985
+ .boundary.interactive:focus-visible,
7986
+ .t0z.interactive:focus-visible {
8028
7987
  filter: url("#shadow-8");
8029
7988
 
8030
7989
  /* HACK: This gets Safari to correctly apply the filter! */
@@ -8043,15 +8002,15 @@ class DDMModel extends DecidablesMixinResizeable(AccumulableElement) {
8043
8002
 
8044
8003
  fill: none;
8045
8004
  stroke: var(---color-element-emphasis);
8046
- stroke-dasharray: 8 4;
8047
8005
  stroke-width: 2;
8006
+ stroke-dasharray: 8 4;
8048
8007
  }
8049
8008
 
8050
8009
  .drift.interactive {
8051
8010
  cursor: ns-resize;
8011
+ outline: none;
8052
8012
 
8053
8013
  filter: url("#shadow-2");
8054
- outline: none;
8055
8014
 
8056
8015
  /* HACK: This gets Safari to correctly apply the filter! */
8057
8016
  fill: #000000;
@@ -8072,7 +8031,7 @@ class DDMModel extends DecidablesMixinResizeable(AccumulableElement) {
8072
8031
  fill: #00ff00;
8073
8032
  }
8074
8033
 
8075
- :host(.keyboard) .drift.interactive:focus {
8034
+ .drift.interactive:focus-visible {
8076
8035
  filter: url("#shadow-8");
8077
8036
 
8078
8037
  /* HACK: This gets Safari to correctly apply the filter! */
@@ -8086,14 +8045,14 @@ class DDMModel extends DecidablesMixinResizeable(AccumulableElement) {
8086
8045
  /* Make larger targets for touch users */
8087
8046
  .interactive .touch {
8088
8047
  stroke: #000000;
8089
- stroke-dasharray: none;
8090
8048
  stroke-opacity: 0;
8049
+ stroke-dasharray: none;
8091
8050
  }
8092
8051
 
8093
8052
  @media (pointer: coarse) {
8094
8053
  .interactive .touch {
8095
- stroke-linecap: round;
8096
8054
  stroke-width: 12;
8055
+ stroke-linecap: round;
8097
8056
  }
8098
8057
  }
8099
8058
 
@@ -8118,6 +8077,7 @@ class DDMModel extends DecidablesMixinResizeable(AccumulableElement) {
8118
8077
 
8119
8078
  .measure.a .label {
8120
8079
  dominant-baseline: auto;
8080
+
8121
8081
  text-anchor: end;
8122
8082
  }
8123
8083
 
@@ -8129,6 +8089,7 @@ class DDMModel extends DecidablesMixinResizeable(AccumulableElement) {
8129
8089
  /* Hack to avoid Safari weirdness */
8130
8090
  .measure.z .label tspan {
8131
8091
  dominant-baseline: hanging;
8092
+
8132
8093
  text-anchor: start;
8133
8094
  }
8134
8095
 
@@ -8138,6 +8099,7 @@ class DDMModel extends DecidablesMixinResizeable(AccumulableElement) {
8138
8099
 
8139
8100
  .measure.v .label {
8140
8101
  dominant-baseline: auto;
8102
+
8141
8103
  text-anchor: start;
8142
8104
  }
8143
8105
 
@@ -8147,6 +8109,7 @@ class DDMModel extends DecidablesMixinResizeable(AccumulableElement) {
8147
8109
 
8148
8110
  .measure.t0 .label {
8149
8111
  dominant-baseline: auto;
8112
+
8150
8113
  text-anchor: middle;
8151
8114
  }
8152
8115
 
@@ -9839,11 +9802,13 @@ class DDMEquation extends AccumulableElement {
9839
9802
 
9840
9803
  .addend {
9841
9804
  position: relative;
9805
+
9842
9806
  display: inline-block;
9843
9807
  }
9844
9808
 
9845
9809
  .comparison {
9846
9810
  position: relative;
9811
+
9847
9812
  display: inline-block;
9848
9813
 
9849
9814
  font-size: 125%;