@aurodesignsystem-dev/auro-formkit 0.0.0-pr741.0 → 0.0.0-pr750.1

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 (92) hide show
  1. package/components/bibtemplate/dist/index.js +1 -1
  2. package/components/bibtemplate/dist/registered.js +1 -1
  3. package/components/checkbox/demo/api.html +16 -10
  4. package/components/checkbox/demo/api.min.js +11 -11
  5. package/components/checkbox/demo/index.html +16 -10
  6. package/components/checkbox/demo/index.min.js +11 -11
  7. package/components/checkbox/demo/readme.html +16 -9
  8. package/components/checkbox/dist/index.js +11 -11
  9. package/components/checkbox/dist/registered.js +11 -11
  10. package/components/combobox/demo/api.html +16 -10
  11. package/components/combobox/demo/api.md +12 -6
  12. package/components/combobox/demo/api.min.js +411 -103
  13. package/components/combobox/demo/index.html +16 -10
  14. package/components/combobox/demo/index.min.js +411 -103
  15. package/components/combobox/demo/readme.html +16 -9
  16. package/components/combobox/dist/index.js +374 -91
  17. package/components/combobox/dist/registered.js +374 -91
  18. package/components/counter/demo/api.html +16 -10
  19. package/components/counter/demo/api.md +140 -7
  20. package/components/counter/demo/api.min.js +1145 -987
  21. package/components/counter/demo/index.html +16 -10
  22. package/components/counter/demo/index.md +82 -0
  23. package/components/counter/demo/index.min.js +1145 -987
  24. package/components/counter/demo/readme.html +16 -9
  25. package/components/counter/dist/auro-counter-group.d.ts +64 -23
  26. package/components/counter/dist/auro-counter.d.ts +10 -0
  27. package/components/counter/dist/index.js +1145 -987
  28. package/components/counter/dist/registered.js +1145 -987
  29. package/components/datepicker/demo/api.html +16 -10
  30. package/components/datepicker/demo/api.min.js +374 -91
  31. package/components/datepicker/demo/index.html +16 -10
  32. package/components/datepicker/demo/index.min.js +374 -91
  33. package/components/datepicker/demo/readme.html +16 -9
  34. package/components/datepicker/dist/auro-datepicker.d.ts +6 -0
  35. package/components/datepicker/dist/index.js +374 -91
  36. package/components/datepicker/dist/registered.js +374 -91
  37. package/components/dropdown/demo/api.html +16 -10
  38. package/components/dropdown/demo/api.md +77 -267
  39. package/components/dropdown/demo/api.min.js +331 -64
  40. package/components/dropdown/demo/index.html +16 -10
  41. package/components/dropdown/demo/index.md +45 -363
  42. package/components/dropdown/demo/index.min.js +331 -64
  43. package/components/dropdown/demo/readme.html +16 -9
  44. package/components/dropdown/dist/auro-dropdown.d.ts +35 -67
  45. package/components/dropdown/dist/index.js +331 -64
  46. package/components/dropdown/dist/registered.js +331 -64
  47. package/components/form/demo/api.html +16 -9
  48. package/components/form/demo/autocomplete.html +19 -3
  49. package/components/form/demo/index.html +16 -9
  50. package/components/form/demo/readme.html +16 -9
  51. package/components/form/demo/working.html +19 -13
  52. package/components/helptext/dist/index.js +1 -1
  53. package/components/helptext/dist/registered.js +1 -1
  54. package/components/input/demo/api.html +16 -10
  55. package/components/input/demo/api.md +1 -1
  56. package/components/input/demo/api.min.js +14 -14
  57. package/components/input/demo/index.html +16 -10
  58. package/components/input/demo/index.min.js +14 -14
  59. package/components/input/demo/readme.html +16 -9
  60. package/components/input/dist/base-input.d.ts +1 -1
  61. package/components/input/dist/index.js +14 -14
  62. package/components/input/dist/registered.js +14 -14
  63. package/components/menu/demo/api.html +16 -32
  64. package/components/menu/demo/api.md +1 -1
  65. package/components/menu/demo/api.min.js +37 -12
  66. package/components/menu/demo/index.html +16 -10
  67. package/components/menu/demo/index.min.js +37 -12
  68. package/components/menu/demo/readme.html +16 -9
  69. package/components/menu/dist/auro-menu.d.ts +13 -2
  70. package/components/menu/dist/index.js +37 -12
  71. package/components/menu/dist/registered.js +37 -12
  72. package/components/radio/demo/api.html +16 -10
  73. package/components/radio/demo/api.md +0 -1
  74. package/components/radio/demo/api.min.js +61 -76
  75. package/components/radio/demo/index.html +16 -10
  76. package/components/radio/demo/index.min.js +61 -76
  77. package/components/radio/demo/readme.html +16 -9
  78. package/components/radio/dist/auro-radio.d.ts +8 -11
  79. package/components/radio/dist/index.js +61 -76
  80. package/components/radio/dist/registered.js +61 -76
  81. package/components/select/demo/api.html +16 -10
  82. package/components/select/demo/api.js +0 -2
  83. package/components/select/demo/api.md +53 -51
  84. package/components/select/demo/api.min.js +491 -326
  85. package/components/select/demo/index.html +16 -11
  86. package/components/select/demo/index.md +6 -158
  87. package/components/select/demo/index.min.js +491 -314
  88. package/components/select/demo/readme.html +16 -9
  89. package/components/select/dist/auro-select.d.ts +33 -8
  90. package/components/select/dist/index.js +454 -302
  91. package/components/select/dist/registered.js +454 -302
  92. package/package.json +26 -25
@@ -146,6 +146,7 @@ let AuroLibraryRuntimeUtils$1 = class AuroLibraryRuntimeUtils {
146
146
  }
147
147
  };
148
148
 
149
+ /* eslint-disable max-lines */
149
150
  // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
150
151
  // See LICENSE in the project root for license information.
151
152
 
@@ -180,8 +181,8 @@ class AuroRadio extends i$2 {
180
181
  this.required = false;
181
182
  this.error = false;
182
183
  this.onDark = false;
183
- this.tabIndex = -1;
184
184
  this.touched = false;
185
+ this.role = 'radio';
185
186
 
186
187
  /**
187
188
  * @private
@@ -223,10 +224,6 @@ class AuroRadio extends i$2 {
223
224
  label: { type: String },
224
225
  name: { type: String },
225
226
  value: { type: String },
226
- tabIndex: {
227
- type: Number,
228
- reflect: true
229
- },
230
227
 
231
228
  /**
232
229
  * Whether or not the radio button has been touched by the user.
@@ -246,6 +243,15 @@ class AuroRadio extends i$2 {
246
243
  type: String,
247
244
  reflect: false,
248
245
  attribute: false
246
+ },
247
+
248
+ /**
249
+ * Do not add to api doc since changing of this can easily break a11y.
250
+ * @private
251
+ */
252
+ role: {
253
+ type: String,
254
+ reflect: true
249
255
  }
250
256
  };
251
257
  }
@@ -271,7 +277,6 @@ class AuroRadio extends i$2 {
271
277
  handleChange(event) {
272
278
  this.checked = event.target.checked;
273
279
  const customEvent = new CustomEvent(event.type, event);
274
-
275
280
  this.dispatchEvent(customEvent);
276
281
  }
277
282
 
@@ -330,7 +335,27 @@ class AuroRadio extends i$2 {
330
335
  }
331
336
 
332
337
  updated(changedProperties) {
338
+ if (changedProperties.has('error') || changedProperties.has('validity')) {
339
+ this.setAttribute('aria-invalid', this.error || this.validity !== 'valid' ? 'true' : 'false');
340
+ }
341
+
342
+ if (changedProperties.has('required')) {
343
+ this.setAttribute('aria-required', this.isRequired(this.required));
344
+ }
345
+
346
+ if (changedProperties.has('disabled')) {
347
+ if (this.disabled) {
348
+ this.setAttribute('aria-disabled', '');
349
+ } else {
350
+ this.removeAttribute('aria-disabled');
351
+ }
352
+ }
353
+
333
354
  if (changedProperties.has('checked')) {
355
+ this.setAttribute('aria-checked', this.checked ? 'true' : 'false');
356
+ // eslint-disable-next-line no-magic-numbers
357
+ this.setAttribute('tabindex', this.checked ? 0 : -1);
358
+
334
359
  this.dispatchEvent(new CustomEvent('resetRadio', {
335
360
  bubbles: true,
336
361
  composed: true
@@ -345,20 +370,6 @@ class AuroRadio extends i$2 {
345
370
  }
346
371
  }
347
372
 
348
- /**
349
- * Method for handling content when it is invalid accessibility wise.
350
- * @private
351
- * @param {Boolean} error - The element's error attribute.
352
- * @returns {void}
353
- */
354
- invalid(error) {
355
- if (error) {
356
- return 'true';
357
- }
358
-
359
- return 'false';
360
- }
361
-
362
373
  /**
363
374
  * Method for handling passing the required status to aria.
364
375
  * @private
@@ -377,6 +388,7 @@ class AuroRadio extends i$2 {
377
388
  // Add the tag name as an attribute if it is different than the component name
378
389
  this.runtimeUtils.handleComponentTagRename(this, 'auro-radio');
379
390
 
391
+ this.addEventListener('focus', this.handleFocus);
380
392
  this.addEventListener('blur', this.handleBlur);
381
393
 
382
394
  this.input = this.shadowRoot.querySelector('input');
@@ -401,27 +413,21 @@ class AuroRadio extends i$2 {
401
413
  return x`
402
414
  <div class="ods-inputGroup rdoGroup" part="radio">
403
415
  <input
404
- class="util_displayHiddenVisually ods-inputOption rdo--input"
416
+ class="util_displayHidden ods-inputOption rdo--input"
405
417
  part="radio-input"
406
- @focus="${this.handleFocus}"
407
418
  @input="${this.handleInput}"
408
419
  @change="${this.handleChange}"
409
420
  ?disabled="${this.disabled}"
410
- aria-invalid="${this.invalid(this.error)}"
411
- aria-required="${this.isRequired(this.required)}"
412
421
  .checked="${this.checked}"
413
422
  id="${this.inputId}"
414
423
  name="${o$1(this.name)}"
415
424
  type="radio"
416
425
  .value="${this.value}"
426
+ aria-hidden="true"
417
427
  tabindex="-1"
418
428
  />
419
429
 
420
- <label
421
- for="${this.inputId}"
422
- class="${e(labelClasses)}"
423
- part="radio-label"
424
- >
430
+ <label for="${this.inputId}" class="${e(labelClasses)}" part="radio-label">
425
431
  <slot>${this.label}</slot>
426
432
  </label>
427
433
  </div>
@@ -437,7 +443,7 @@ class AuroRadio extends i$2 {
437
443
  */
438
444
  const a=Symbol.for(""),o=t=>{if(t?.r===a)return t?._$litStatic$},s=t=>({_$litStatic$:t,r:a}),i=(t,...r)=>({_$litStatic$:r.reduce(((r,e,a)=>r+(t=>{if(void 0!==t._$litStatic$)return t._$litStatic$;throw Error(`Value passed to 'literal' function must be a 'literal' result: ${t}. Use 'unsafeStatic' to pass non-literal values, but\n take care to ensure page security.`)})(e)+t[a+1]),t[0]),r:a}),l=new Map,n=t=>(r,...e)=>{const a=e.length;let s,i;const n=[],u=[];let c,$=0,f=false;for(;$<a;){for(c=r[$];$<a&&void 0!==(i=e[$],s=o(i));)c+=s+r[++$],f=true;$!==a&&u.push(i),n.push(c),$++;}if($===a&&n.push(r[a]),f){const t=n.join("$$lit$$");void 0===(r=l.get(t))&&(n.raw=n,l.set(t,r=n)),e=u;}return t(r,...e)},u=n(x);
439
445
 
440
- var styleCss$1 = i$5`:host{display:block;padding-bottom:var(--ds-size-150, 0.75rem)}fieldset{all:unset}.displayFlex legend+slot{display:flex;white-space:nowrap}legend{margin-bottom:var(--ds-size-150, 0.75rem)}`;
446
+ var styleCss$1 = i$5`:host{display:block;padding-bottom:var(--ds-size-150, 0.75rem)}fieldset{all:unset}.displayFlex legend+slot{display:flex;white-space:nowrap}legend{margin-bottom:var(--ds-size-150, 0.75rem)}[auro-helptext]{margin-top:var(--ds-size-150, 0.75rem)}`;
441
447
 
442
448
  var colorCss$1 = i$5`:host legend{color:var(--ds-auro-radio-group-label-color)}:host([disabled]){--ds-auro-radio-group-label-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host([onDark]){--ds-auro-radio-group-label-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([onDark][disabled]){--ds-auro-radio-group-label-color: var(--ds-basic-color-texticon-inverse-disabled, #7e8894)}`;
443
449
 
@@ -917,19 +923,19 @@ class AuroFormValidation {
917
923
  {
918
924
  check: (e) => e.value?.length > 0 && e.value?.length < e.minLength,
919
925
  validity: 'tooShort',
920
- message: e => e.setCustomValidityTooShort || e.setCustomValidity || ''
926
+ message: e => e.getAttribute('setCustomValidityTooShort') || e.setCustomValidity || ''
921
927
  },
922
928
  {
923
929
  check: (e) => e.value?.length > e.maxLength,
924
930
  validity: 'tooLong',
925
- message: e => e.setCustomValidityTooLong || e.setCustomValidity || ''
931
+ message: e => e.getAttribute('setCustomValidityTooLong') || e.setCustomValidity || ''
926
932
  }
927
933
  ],
928
934
  pattern: [
929
935
  {
930
936
  check: (e) => e.pattern && !new RegExp(`^${e.pattern}$`, 'u').test(e.value),
931
937
  validity: 'patternMismatch',
932
- message: e => e.setCustomValidityPatternMismatch || e.setCustomValidity || ''
938
+ message: e => e.getAttribute('setCustomValidityPatternMismatch') || e.setCustomValidity || ''
933
939
  }
934
940
  ]
935
941
  },
@@ -1124,10 +1130,10 @@ class AuroFormValidation {
1124
1130
  if (!hasValue && elem.required && elem.touched) {
1125
1131
  elem.validity = 'valueMissing';
1126
1132
  elem.errorMessage = elem.setCustomValidityValueMissing || elem.setCustomValidity || '';
1127
- } else if (this.runtimeUtils.elementMatch(elem, 'auro-input')) {
1133
+ } else if (hasValue && this.runtimeUtils.elementMatch(elem, 'auro-input')) {
1128
1134
  this.validateType(elem);
1129
1135
  this.validateElementAttributes(elem);
1130
- } else if (this.runtimeUtils.elementMatch(elem, 'auro-counter') || this.runtimeUtils.elementMatch(elem, 'auro-counter-group')) {
1136
+ } else if (hasValue && (this.runtimeUtils.elementMatch(elem, 'auro-counter') || this.runtimeUtils.elementMatch(elem, 'auro-counter-group'))) {
1131
1137
  this.validateElementAttributes(elem);
1132
1138
  }
1133
1139
  }
@@ -1260,7 +1266,7 @@ class AuroDependencyVersioning {
1260
1266
 
1261
1267
  var colorCss = i$5`:host([error]){--ds-auro-helptext-color: var(--ds-basic-color-status-error, #e31f26)}:host([onDark]){--ds-auro-helptext-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db)}:host([onDark][error]){--ds-auro-helptext-color: var(--ds-basic-color-status-error-subtle, #fbc6c6)}.helptext-wrapper{color:var(--ds-auro-helptext-color)}`;
1262
1268
 
1263
- var styleCss = i$5`.helptext-wrapper{display:none;font-size:12px;font-weight:450;letter-spacing:0;line-height:16px}:host([large]) .helptext-wrapper{font-size:16px;font-weight:450;letter-spacing:0;line-height:24px}.helptext-wrapper[visible]{display:block}::slotted(*:not(:empty)){margin-top:var(--ds-size-50, 0.25rem);margin-bottom:0}::slotted(p){margin-block:0}`;
1269
+ var styleCss = i$5`:host{position:relative;display:block}.helptext-wrapper{display:none;font-size:12px;font-weight:450;letter-spacing:0;line-height:16px}:host([large]) .helptext-wrapper{font-size:16px;font-weight:450;letter-spacing:0;line-height:24px}.helptext-wrapper[visible]{display:block}::slotted(*:not(:empty)){margin-top:var(--ds-size-50, 0.25rem);margin-bottom:0}::slotted(p){margin-block:0}`;
1264
1270
 
1265
1271
  var tokensCss = i$5`:host{--ds-auro-helptext-color: var(--ds-basic-color-texticon-muted, #676767)}`;
1266
1272
 
@@ -1741,15 +1747,6 @@ class AuroRadioGroup extends i$2 {
1741
1747
  if (this.items.length === 0) {
1742
1748
  this.handleItems();
1743
1749
  }
1744
-
1745
- // handle tab index
1746
- this.items.forEach((item) => {
1747
- item.tabIndex = -1;
1748
- });
1749
-
1750
- if (!this.disabled) {
1751
- this.items[this.index].tabIndex = 0;
1752
- }
1753
1750
  }
1754
1751
 
1755
1752
  /**
@@ -1793,10 +1790,7 @@ class AuroRadioGroup extends i$2 {
1793
1790
  const nextEnabledIndex = this.items.findIndex((item) => !item.hasAttribute('disabled'));
1794
1791
 
1795
1792
  this.index = index >= 0 ? index : nextEnabledIndex;
1796
-
1797
- if (this.index >= 0) {
1798
- this.items[this.index].tabIndex = 0;
1799
- }
1793
+ this.items[this.index].setAttribute('tabindex', 0);
1800
1794
  }
1801
1795
  }
1802
1796
 
@@ -1810,20 +1804,10 @@ class AuroRadioGroup extends i$2 {
1810
1804
  this.index = this.items.indexOf(event.target);
1811
1805
 
1812
1806
  this.items.forEach((item) => {
1813
- if (item === event.target) {
1814
- item.tabIndex = 0;
1815
- if (event.target.value) {
1816
- this.value = event.target.value;
1817
- }
1818
- } else {
1819
- const sdInput = item.shadowRoot.querySelector('input');
1820
-
1821
- sdInput.checked = false;
1822
- item.checked = false;
1823
- item.tabIndex = -1;
1824
- }
1807
+ item.checked = item === event.target;
1825
1808
  });
1826
1809
 
1810
+ this.value = event.target.value;
1827
1811
  this.optionSelected = event.target;
1828
1812
 
1829
1813
  this.validation.validate(this);
@@ -1836,7 +1820,7 @@ class AuroRadioGroup extends i$2 {
1836
1820
  * @returns {void}
1837
1821
  */
1838
1822
  selectItem(index) {
1839
- const sdItem = this.items[index].shadowRoot.querySelector('input');
1823
+ const sdItem = this.items[index];
1840
1824
 
1841
1825
  sdItem.click();
1842
1826
  sdItem.focus();
@@ -1855,17 +1839,18 @@ class AuroRadioGroup extends i$2 {
1855
1839
 
1856
1840
  for (currIndex; currIndex < this.items.length; moveDirection === "Down" ? currIndex += 1 : currIndex -= 1) {
1857
1841
  currIndex = currIndex === -1 ? this.items.length - 1 : currIndex;
1858
- const sdItem = this.items[currIndex].shadowRoot.querySelector('input');
1859
-
1860
- if (this.disabled || this.items.every((item) => item.disabled === true)) {
1861
- sdItem.focus();
1862
- break;
1863
- }
1864
- if (!sdItem.disabled) {
1865
- sdItem.click();
1866
- sdItem.focus();
1867
- this.index = currIndex;
1868
- break;
1842
+ const sdItem = this.items[currIndex];
1843
+ if (sdItem) {
1844
+ if (this.disabled || this.items.every((item) => item.disabled === true)) {
1845
+ sdItem.focus();
1846
+ break;
1847
+ }
1848
+ if (!sdItem.disabled) {
1849
+ sdItem.click();
1850
+ sdItem.focus();
1851
+ this.index = currIndex;
1852
+ break;
1853
+ }
1869
1854
  }
1870
1855
  }
1871
1856
  }
@@ -1908,7 +1893,7 @@ class AuroRadioGroup extends i$2 {
1908
1893
  };
1909
1894
 
1910
1895
  return u`
1911
- <fieldset class="${e(groupClasses)}" part="radio-group">
1896
+ <fieldset class="${e(groupClasses)}" part="radio-group" role="radiogroup">
1912
1897
  <legend>
1913
1898
  <slot name="legend"></slot>
1914
1899
  ${this.required ? undefined : u`<slot name="optionalLabel"> (optional)</slot>`}
@@ -1918,11 +1903,11 @@ class AuroRadioGroup extends i$2 {
1918
1903
 
1919
1904
  ${!this.validity || this.validity === undefined || this.validity === 'valid'
1920
1905
  ? u`
1921
- <${this.helpTextTag} large ?onDark="${this.onDark}" part="helpText">
1906
+ <${this.helpTextTag} ?onDark="${this.onDark}" part="helpText">
1922
1907
  <slot name="helpText"></slot>
1923
1908
  </${this.helpTextTag}>`
1924
1909
  : u`
1925
- <${this.helpTextTag} large ?onDark="${this.onDark}" role="alert" error aria-live="assertive" part="helpText">
1910
+ <${this.helpTextTag} ?onDark="${this.onDark}" role="alert" error aria-live="assertive" part="helpText">
1926
1911
  ${this.errorMessage}
1927
1912
  </${this.helpTextTag}>`
1928
1913
  }
@@ -16,18 +16,24 @@
16
16
  <head>
17
17
  <meta charset="UTF-8" />
18
18
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
19
- <title>Auro Web Component Generator | auro-radio custom element</title>
20
- <link
21
- rel="stylesheet"
22
- type="text/css"
23
- href="https://cdn.jsdelivr.net/npm/prismjs@1.24.1/themes/prism.css"
24
- />
25
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@aurodesignsystem/design-tokens@latest/dist/auro-classic/CSSCustomProperties.css">
26
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@aurodesignsystem/design-tokens@latest/dist/alaska/CSSCustomProperties--alaska.css">
19
+ <title>Auro Web Component Demo | auro-radio</title>
20
+
21
+ <!-- Prism.js Stylesheet -->
22
+ <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/prismjs@1.24.1/themes/prism.css"/>
23
+
24
+ <!-- Legacy reference is still needed to support auro-radio's use of legacy token values at this time -->
25
+ <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@aurodesignsystem/design-tokens@latest/dist/legacy/auro-classic/CSSCustomProperties.css"/>
26
+
27
+ <!-- Design Token Alaska Theme -->
28
+ <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@aurodesignsystem/design-tokens@latest/dist/themes/alaska/CSSCustomProperties--alaska.min.css"/>
29
+
30
+ <!-- Webcore Stylesheet Alaska Theme -->
31
+ <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@aurodesignsystem/webcorestylesheets@latest/dist/bundled/themes/alaska.global.min.css" />
32
+
33
+ <!-- Demo Specific Styles -->
27
34
  <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@aurodesignsystem/webcorestylesheets@latest/dist/demoWrapper.css" />
28
35
  <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@aurodesignsystem/webcorestylesheets@latest/dist/elementDemoStyles.css" />
29
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@aurodesignsystem/webcorestylesheets@latest/dist/bundled/essentials-as.css" />
30
- </head>
36
+ </head>
31
37
  <body class="auro-markdown">
32
38
  <main></main>
33
39
 
@@ -121,6 +121,7 @@ let AuroLibraryRuntimeUtils$1 = class AuroLibraryRuntimeUtils {
121
121
  }
122
122
  };
123
123
 
124
+ /* eslint-disable max-lines */
124
125
  // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
125
126
  // See LICENSE in the project root for license information.
126
127
 
@@ -155,8 +156,8 @@ class AuroRadio extends i$2 {
155
156
  this.required = false;
156
157
  this.error = false;
157
158
  this.onDark = false;
158
- this.tabIndex = -1;
159
159
  this.touched = false;
160
+ this.role = 'radio';
160
161
 
161
162
  /**
162
163
  * @private
@@ -198,10 +199,6 @@ class AuroRadio extends i$2 {
198
199
  label: { type: String },
199
200
  name: { type: String },
200
201
  value: { type: String },
201
- tabIndex: {
202
- type: Number,
203
- reflect: true
204
- },
205
202
 
206
203
  /**
207
204
  * Whether or not the radio button has been touched by the user.
@@ -221,6 +218,15 @@ class AuroRadio extends i$2 {
221
218
  type: String,
222
219
  reflect: false,
223
220
  attribute: false
221
+ },
222
+
223
+ /**
224
+ * Do not add to api doc since changing of this can easily break a11y.
225
+ * @private
226
+ */
227
+ role: {
228
+ type: String,
229
+ reflect: true
224
230
  }
225
231
  };
226
232
  }
@@ -246,7 +252,6 @@ class AuroRadio extends i$2 {
246
252
  handleChange(event) {
247
253
  this.checked = event.target.checked;
248
254
  const customEvent = new CustomEvent(event.type, event);
249
-
250
255
  this.dispatchEvent(customEvent);
251
256
  }
252
257
 
@@ -305,7 +310,27 @@ class AuroRadio extends i$2 {
305
310
  }
306
311
 
307
312
  updated(changedProperties) {
313
+ if (changedProperties.has('error') || changedProperties.has('validity')) {
314
+ this.setAttribute('aria-invalid', this.error || this.validity !== 'valid' ? 'true' : 'false');
315
+ }
316
+
317
+ if (changedProperties.has('required')) {
318
+ this.setAttribute('aria-required', this.isRequired(this.required));
319
+ }
320
+
321
+ if (changedProperties.has('disabled')) {
322
+ if (this.disabled) {
323
+ this.setAttribute('aria-disabled', '');
324
+ } else {
325
+ this.removeAttribute('aria-disabled');
326
+ }
327
+ }
328
+
308
329
  if (changedProperties.has('checked')) {
330
+ this.setAttribute('aria-checked', this.checked ? 'true' : 'false');
331
+ // eslint-disable-next-line no-magic-numbers
332
+ this.setAttribute('tabindex', this.checked ? 0 : -1);
333
+
309
334
  this.dispatchEvent(new CustomEvent('resetRadio', {
310
335
  bubbles: true,
311
336
  composed: true
@@ -320,20 +345,6 @@ class AuroRadio extends i$2 {
320
345
  }
321
346
  }
322
347
 
323
- /**
324
- * Method for handling content when it is invalid accessibility wise.
325
- * @private
326
- * @param {Boolean} error - The element's error attribute.
327
- * @returns {void}
328
- */
329
- invalid(error) {
330
- if (error) {
331
- return 'true';
332
- }
333
-
334
- return 'false';
335
- }
336
-
337
348
  /**
338
349
  * Method for handling passing the required status to aria.
339
350
  * @private
@@ -352,6 +363,7 @@ class AuroRadio extends i$2 {
352
363
  // Add the tag name as an attribute if it is different than the component name
353
364
  this.runtimeUtils.handleComponentTagRename(this, 'auro-radio');
354
365
 
366
+ this.addEventListener('focus', this.handleFocus);
355
367
  this.addEventListener('blur', this.handleBlur);
356
368
 
357
369
  this.input = this.shadowRoot.querySelector('input');
@@ -376,27 +388,21 @@ class AuroRadio extends i$2 {
376
388
  return x`
377
389
  <div class="ods-inputGroup rdoGroup" part="radio">
378
390
  <input
379
- class="util_displayHiddenVisually ods-inputOption rdo--input"
391
+ class="util_displayHidden ods-inputOption rdo--input"
380
392
  part="radio-input"
381
- @focus="${this.handleFocus}"
382
393
  @input="${this.handleInput}"
383
394
  @change="${this.handleChange}"
384
395
  ?disabled="${this.disabled}"
385
- aria-invalid="${this.invalid(this.error)}"
386
- aria-required="${this.isRequired(this.required)}"
387
396
  .checked="${this.checked}"
388
397
  id="${this.inputId}"
389
398
  name="${o$1(this.name)}"
390
399
  type="radio"
391
400
  .value="${this.value}"
401
+ aria-hidden="true"
392
402
  tabindex="-1"
393
403
  />
394
404
 
395
- <label
396
- for="${this.inputId}"
397
- class="${e(labelClasses)}"
398
- part="radio-label"
399
- >
405
+ <label for="${this.inputId}" class="${e(labelClasses)}" part="radio-label">
400
406
  <slot>${this.label}</slot>
401
407
  </label>
402
408
  </div>
@@ -412,7 +418,7 @@ class AuroRadio extends i$2 {
412
418
  */
413
419
  const a=Symbol.for(""),o=t=>{if(t?.r===a)return t?._$litStatic$},s=t=>({_$litStatic$:t,r:a}),i=(t,...r)=>({_$litStatic$:r.reduce(((r,e,a)=>r+(t=>{if(void 0!==t._$litStatic$)return t._$litStatic$;throw Error(`Value passed to 'literal' function must be a 'literal' result: ${t}. Use 'unsafeStatic' to pass non-literal values, but\n take care to ensure page security.`)})(e)+t[a+1]),t[0]),r:a}),l=new Map,n=t=>(r,...e)=>{const a=e.length;let s,i;const n=[],u=[];let c,$=0,f=false;for(;$<a;){for(c=r[$];$<a&&void 0!==(i=e[$],s=o(i));)c+=s+r[++$],f=true;$!==a&&u.push(i),n.push(c),$++;}if($===a&&n.push(r[a]),f){const t=n.join("$$lit$$");void 0===(r=l.get(t))&&(n.raw=n,l.set(t,r=n)),e=u;}return t(r,...e)},u=n(x);
414
420
 
415
- var styleCss$1 = i$5`:host{display:block;padding-bottom:var(--ds-size-150, 0.75rem)}fieldset{all:unset}.displayFlex legend+slot{display:flex;white-space:nowrap}legend{margin-bottom:var(--ds-size-150, 0.75rem)}`;
421
+ var styleCss$1 = i$5`:host{display:block;padding-bottom:var(--ds-size-150, 0.75rem)}fieldset{all:unset}.displayFlex legend+slot{display:flex;white-space:nowrap}legend{margin-bottom:var(--ds-size-150, 0.75rem)}[auro-helptext]{margin-top:var(--ds-size-150, 0.75rem)}`;
416
422
 
417
423
  var colorCss$1 = i$5`:host legend{color:var(--ds-auro-radio-group-label-color)}:host([disabled]){--ds-auro-radio-group-label-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host([onDark]){--ds-auro-radio-group-label-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([onDark][disabled]){--ds-auro-radio-group-label-color: var(--ds-basic-color-texticon-inverse-disabled, #7e8894)}`;
418
424
 
@@ -892,19 +898,19 @@ class AuroFormValidation {
892
898
  {
893
899
  check: (e) => e.value?.length > 0 && e.value?.length < e.minLength,
894
900
  validity: 'tooShort',
895
- message: e => e.setCustomValidityTooShort || e.setCustomValidity || ''
901
+ message: e => e.getAttribute('setCustomValidityTooShort') || e.setCustomValidity || ''
896
902
  },
897
903
  {
898
904
  check: (e) => e.value?.length > e.maxLength,
899
905
  validity: 'tooLong',
900
- message: e => e.setCustomValidityTooLong || e.setCustomValidity || ''
906
+ message: e => e.getAttribute('setCustomValidityTooLong') || e.setCustomValidity || ''
901
907
  }
902
908
  ],
903
909
  pattern: [
904
910
  {
905
911
  check: (e) => e.pattern && !new RegExp(`^${e.pattern}$`, 'u').test(e.value),
906
912
  validity: 'patternMismatch',
907
- message: e => e.setCustomValidityPatternMismatch || e.setCustomValidity || ''
913
+ message: e => e.getAttribute('setCustomValidityPatternMismatch') || e.setCustomValidity || ''
908
914
  }
909
915
  ]
910
916
  },
@@ -1099,10 +1105,10 @@ class AuroFormValidation {
1099
1105
  if (!hasValue && elem.required && elem.touched) {
1100
1106
  elem.validity = 'valueMissing';
1101
1107
  elem.errorMessage = elem.setCustomValidityValueMissing || elem.setCustomValidity || '';
1102
- } else if (this.runtimeUtils.elementMatch(elem, 'auro-input')) {
1108
+ } else if (hasValue && this.runtimeUtils.elementMatch(elem, 'auro-input')) {
1103
1109
  this.validateType(elem);
1104
1110
  this.validateElementAttributes(elem);
1105
- } else if (this.runtimeUtils.elementMatch(elem, 'auro-counter') || this.runtimeUtils.elementMatch(elem, 'auro-counter-group')) {
1111
+ } else if (hasValue && (this.runtimeUtils.elementMatch(elem, 'auro-counter') || this.runtimeUtils.elementMatch(elem, 'auro-counter-group'))) {
1106
1112
  this.validateElementAttributes(elem);
1107
1113
  }
1108
1114
  }
@@ -1235,7 +1241,7 @@ class AuroDependencyVersioning {
1235
1241
 
1236
1242
  var colorCss = i$5`:host([error]){--ds-auro-helptext-color: var(--ds-basic-color-status-error, #e31f26)}:host([onDark]){--ds-auro-helptext-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db)}:host([onDark][error]){--ds-auro-helptext-color: var(--ds-basic-color-status-error-subtle, #fbc6c6)}.helptext-wrapper{color:var(--ds-auro-helptext-color)}`;
1237
1243
 
1238
- var styleCss = i$5`.helptext-wrapper{display:none;font-size:12px;font-weight:450;letter-spacing:0;line-height:16px}:host([large]) .helptext-wrapper{font-size:16px;font-weight:450;letter-spacing:0;line-height:24px}.helptext-wrapper[visible]{display:block}::slotted(*:not(:empty)){margin-top:var(--ds-size-50, 0.25rem);margin-bottom:0}::slotted(p){margin-block:0}`;
1244
+ var styleCss = i$5`:host{position:relative;display:block}.helptext-wrapper{display:none;font-size:12px;font-weight:450;letter-spacing:0;line-height:16px}:host([large]) .helptext-wrapper{font-size:16px;font-weight:450;letter-spacing:0;line-height:24px}.helptext-wrapper[visible]{display:block}::slotted(*:not(:empty)){margin-top:var(--ds-size-50, 0.25rem);margin-bottom:0}::slotted(p){margin-block:0}`;
1239
1245
 
1240
1246
  var tokensCss = i$5`:host{--ds-auro-helptext-color: var(--ds-basic-color-texticon-muted, #676767)}`;
1241
1247
 
@@ -1716,15 +1722,6 @@ class AuroRadioGroup extends i$2 {
1716
1722
  if (this.items.length === 0) {
1717
1723
  this.handleItems();
1718
1724
  }
1719
-
1720
- // handle tab index
1721
- this.items.forEach((item) => {
1722
- item.tabIndex = -1;
1723
- });
1724
-
1725
- if (!this.disabled) {
1726
- this.items[this.index].tabIndex = 0;
1727
- }
1728
1725
  }
1729
1726
 
1730
1727
  /**
@@ -1768,10 +1765,7 @@ class AuroRadioGroup extends i$2 {
1768
1765
  const nextEnabledIndex = this.items.findIndex((item) => !item.hasAttribute('disabled'));
1769
1766
 
1770
1767
  this.index = index >= 0 ? index : nextEnabledIndex;
1771
-
1772
- if (this.index >= 0) {
1773
- this.items[this.index].tabIndex = 0;
1774
- }
1768
+ this.items[this.index].setAttribute('tabindex', 0);
1775
1769
  }
1776
1770
  }
1777
1771
 
@@ -1785,20 +1779,10 @@ class AuroRadioGroup extends i$2 {
1785
1779
  this.index = this.items.indexOf(event.target);
1786
1780
 
1787
1781
  this.items.forEach((item) => {
1788
- if (item === event.target) {
1789
- item.tabIndex = 0;
1790
- if (event.target.value) {
1791
- this.value = event.target.value;
1792
- }
1793
- } else {
1794
- const sdInput = item.shadowRoot.querySelector('input');
1795
-
1796
- sdInput.checked = false;
1797
- item.checked = false;
1798
- item.tabIndex = -1;
1799
- }
1782
+ item.checked = item === event.target;
1800
1783
  });
1801
1784
 
1785
+ this.value = event.target.value;
1802
1786
  this.optionSelected = event.target;
1803
1787
 
1804
1788
  this.validation.validate(this);
@@ -1811,7 +1795,7 @@ class AuroRadioGroup extends i$2 {
1811
1795
  * @returns {void}
1812
1796
  */
1813
1797
  selectItem(index) {
1814
- const sdItem = this.items[index].shadowRoot.querySelector('input');
1798
+ const sdItem = this.items[index];
1815
1799
 
1816
1800
  sdItem.click();
1817
1801
  sdItem.focus();
@@ -1830,17 +1814,18 @@ class AuroRadioGroup extends i$2 {
1830
1814
 
1831
1815
  for (currIndex; currIndex < this.items.length; moveDirection === "Down" ? currIndex += 1 : currIndex -= 1) {
1832
1816
  currIndex = currIndex === -1 ? this.items.length - 1 : currIndex;
1833
- const sdItem = this.items[currIndex].shadowRoot.querySelector('input');
1834
-
1835
- if (this.disabled || this.items.every((item) => item.disabled === true)) {
1836
- sdItem.focus();
1837
- break;
1838
- }
1839
- if (!sdItem.disabled) {
1840
- sdItem.click();
1841
- sdItem.focus();
1842
- this.index = currIndex;
1843
- break;
1817
+ const sdItem = this.items[currIndex];
1818
+ if (sdItem) {
1819
+ if (this.disabled || this.items.every((item) => item.disabled === true)) {
1820
+ sdItem.focus();
1821
+ break;
1822
+ }
1823
+ if (!sdItem.disabled) {
1824
+ sdItem.click();
1825
+ sdItem.focus();
1826
+ this.index = currIndex;
1827
+ break;
1828
+ }
1844
1829
  }
1845
1830
  }
1846
1831
  }
@@ -1883,7 +1868,7 @@ class AuroRadioGroup extends i$2 {
1883
1868
  };
1884
1869
 
1885
1870
  return u`
1886
- <fieldset class="${e(groupClasses)}" part="radio-group">
1871
+ <fieldset class="${e(groupClasses)}" part="radio-group" role="radiogroup">
1887
1872
  <legend>
1888
1873
  <slot name="legend"></slot>
1889
1874
  ${this.required ? undefined : u`<slot name="optionalLabel"> (optional)</slot>`}
@@ -1893,11 +1878,11 @@ class AuroRadioGroup extends i$2 {
1893
1878
 
1894
1879
  ${!this.validity || this.validity === undefined || this.validity === 'valid'
1895
1880
  ? u`
1896
- <${this.helpTextTag} large ?onDark="${this.onDark}" part="helpText">
1881
+ <${this.helpTextTag} ?onDark="${this.onDark}" part="helpText">
1897
1882
  <slot name="helpText"></slot>
1898
1883
  </${this.helpTextTag}>`
1899
1884
  : u`
1900
- <${this.helpTextTag} large ?onDark="${this.onDark}" role="alert" error aria-live="assertive" part="helpText">
1885
+ <${this.helpTextTag} ?onDark="${this.onDark}" role="alert" error aria-live="assertive" part="helpText">
1901
1886
  ${this.errorMessage}
1902
1887
  </${this.helpTextTag}>`
1903
1888
  }