@aurodesignsystem-dev/auro-formkit 0.0.0-pr1505.0 → 0.0.0-pr1506.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.
Files changed (55) hide show
  1. package/components/checkbox/demo/customize.min.js +1 -1
  2. package/components/checkbox/demo/getting-started.min.js +1 -1
  3. package/components/checkbox/demo/index.min.js +1 -1
  4. package/components/checkbox/dist/index.js +1 -1
  5. package/components/checkbox/dist/registered.js +1 -1
  6. package/components/combobox/demo/customize.min.js +120 -139
  7. package/components/combobox/demo/getting-started.min.js +120 -139
  8. package/components/combobox/demo/index.min.js +120 -139
  9. package/components/combobox/dist/auro-combobox.d.ts +9 -0
  10. package/components/combobox/dist/index.js +120 -139
  11. package/components/combobox/dist/registered.js +120 -139
  12. package/components/counter/demo/customize.min.js +2 -2
  13. package/components/counter/demo/index.min.js +2 -2
  14. package/components/counter/dist/index.js +2 -2
  15. package/components/counter/dist/registered.js +2 -2
  16. package/components/datepicker/demo/api.md +0 -2
  17. package/components/datepicker/demo/customize.md +33 -195
  18. package/components/datepicker/demo/customize.min.js +37 -43
  19. package/components/datepicker/demo/index.min.js +36 -35
  20. package/components/datepicker/dist/index.js +36 -35
  21. package/components/datepicker/dist/registered.js +36 -35
  22. package/components/datepicker/dist/src/auro-datepicker.d.ts +0 -2
  23. package/components/dropdown/demo/customize.min.js +1 -1
  24. package/components/dropdown/demo/getting-started.min.js +1 -1
  25. package/components/dropdown/demo/index.min.js +1 -1
  26. package/components/dropdown/dist/index.js +1 -1
  27. package/components/dropdown/dist/registered.js +1 -1
  28. package/components/form/demo/customize.min.js +325 -230
  29. package/components/form/demo/getting-started.min.js +325 -230
  30. package/components/form/demo/index.min.js +325 -230
  31. package/components/form/demo/registerDemoDeps.min.js +325 -230
  32. package/components/input/demo/customize.md +55 -56
  33. package/components/input/demo/customize.min.js +32 -26
  34. package/components/input/demo/getting-started.min.js +32 -26
  35. package/components/input/demo/index.md +2 -2
  36. package/components/input/demo/index.min.js +32 -26
  37. package/components/input/dist/index.js +32 -26
  38. package/components/input/dist/registered.js +32 -26
  39. package/components/radio/demo/customize.min.js +1 -1
  40. package/components/radio/demo/getting-started.min.js +1 -1
  41. package/components/radio/demo/index.min.js +1 -1
  42. package/components/radio/dist/index.js +1 -1
  43. package/components/radio/dist/registered.js +1 -1
  44. package/components/select/demo/api.md +1 -0
  45. package/components/select/demo/customize.md +71 -0
  46. package/components/select/demo/customize.min.js +133 -26
  47. package/components/select/demo/getting-started.min.js +133 -26
  48. package/components/select/demo/index.min.js +133 -26
  49. package/components/select/demo/keyboard-behavior.md +18 -0
  50. package/components/select/dist/auro-select.d.ts +38 -2
  51. package/components/select/dist/index.js +133 -26
  52. package/components/select/dist/registered.js +133 -26
  53. package/components/select/dist/selectUtils.d.ts +12 -0
  54. package/custom-elements.json +114 -10
  55. package/package.json +1 -1
@@ -10331,6 +10331,7 @@ class AuroInputUtilities {
10331
10331
  const maskOptions = this.getMaskOptions('date', normalizedFormat);
10332
10332
 
10333
10333
  if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
10334
+ console.debug('Invalid date object or mask options for formatting', { valueObject, maskOptions }); // eslint-disable-line no-console
10334
10335
  return undefined;
10335
10336
  }
10336
10337
 
@@ -11141,10 +11142,6 @@ class BaseInput extends AuroElement {
11141
11142
  this.wrapperElement.addEventListener('click', this.handleClick);
11142
11143
  }
11143
11144
 
11144
- // add attribute for query selectors when auro-input is registered under a custom name
11145
- if (this.tagName.toLowerCase() !== 'auro-input' && !this.hasAttribute('auro-input')) {
11146
- this.setAttribute('auro-input', '');
11147
- }
11148
11145
  this.inputId = this.id ? `${this.id}-input` : window.crypto.randomUUID();
11149
11146
 
11150
11147
  // use validity message override if declared when initializing the component
@@ -11315,14 +11312,14 @@ class BaseInput extends AuroElement {
11315
11312
 
11316
11313
  if (formattedValue !== this.inputElement.value) {
11317
11314
  this.skipNextProgrammaticInputEvent = true;
11318
- if (this.maskInstance && this.type === 'credit-card') {
11315
+ if (this.maskInstance && this.type !== 'date') {
11319
11316
  // Route through the mask so its _value and el.value stay in lock-step
11320
11317
  // (set value calls updateControl which writes el.value = displayValue).
11321
11318
  // Writing el.value directly leaves the mask thinking displayValue is
11322
- // stale; _saveSelection on the next focus/click then warns. Scoped to
11323
- // credit-card so date's own formattedValue (raw ISO when calendar-invalid)
11324
- // isn't re-masked through the mm/dd/yyyy mask, which would truncate it
11325
- // and flip validity from patternMismatch to tooShort.
11319
+ // stale; _saveSelection on the next focus/click then warns. Date is
11320
+ // excluded because its formattedValue can be raw ISO when the calendar
11321
+ // is invalid, and re-masking through mm/dd/yyyy would truncate it and
11322
+ // flip validity from patternMismatch to tooShort.
11326
11323
  this.maskInstance.value = formattedValue || '';
11327
11324
  } else if (formattedValue) {
11328
11325
  this.inputElement.value = formattedValue;
@@ -11433,31 +11430,33 @@ class BaseInput extends AuroElement {
11433
11430
  * @returns {void}
11434
11431
  */
11435
11432
  configureAutoFormatting() {
11436
- // Re-entrancy guard. The patched-setter's synthetic input event (suppressed
11437
- // by _configuringMask above) could otherwise trigger handleInput
11438
- // processCreditCard configureAutoFormatting before the outer call's
11439
- // set value has finished its alignCursor pass.
11433
+ // _configuringMask gates two things: external re-entry into this method
11434
+ // while setup is mid-flight (from property changes that call back here),
11435
+ // and the accept/complete listeners below — both need to ignore the mask
11436
+ // events fired by our own value-restore step.
11440
11437
  if (this._configuringMask) return;
11441
11438
  this._configuringMask = true;
11442
11439
  try {
11440
+ // Destroy any prior mask so IMask can attach fresh under the new format.
11443
11441
  if (this.maskInstance) {
11444
11442
  this.maskInstance.destroy();
11445
11443
  }
11446
11444
 
11447
- // Pass new format to util
11448
11445
  this.util.updateFormat(this.format);
11449
11446
 
11450
11447
  const maskOptions = this.util.getMaskOptions(this.type, this.format);
11451
11448
 
11452
11449
  if (this.inputElement && maskOptions.mask) {
11453
-
11454
- // Stash and clear any existing value before IMask init.
11455
- // IMask's constructor processes the current input value which requires
11456
- // selection state clearing first avoids that scenario entirely.
11457
- // When the format changes (e.g. locale switch) and we have a valid ISO
11458
- // model value, compute the display string for the NEW format instead of
11459
- // re-using the old display string, which may be invalid in the new mask.
11450
+ // Capture the current display so it can be re-applied after IMask
11451
+ // attaches. The restore at the bottom goes through maskInstance.value
11452
+ // (not inputElement.value directly) so the mask's internal state and
11453
+ // the input's displayed text stay in lock-step.
11460
11454
  let existingValue = this.inputElement.value;
11455
+
11456
+ // Format-change case (e.g. locale switch): existingValue is the OLD
11457
+ // mask's display string and may not parse under the new mask. When
11458
+ // we have a valid date model, rebuild the display from valueObject
11459
+ // (the canonical source) using the new mask's format function.
11461
11460
  if (
11462
11461
  this.util.isFullDateFormat(this.type, this.format) &&
11463
11462
  this.value &&
@@ -11469,15 +11468,18 @@ class BaseInput extends AuroElement {
11469
11468
  existingValue = maskOptions.format(this.valueObject);
11470
11469
  }
11471
11470
 
11471
+ // Clear before IMask attaches so the constructor seeds an empty
11472
+ // internal value. Otherwise IMask reads the stale unmasked string
11473
+ // and emits a spurious 'accept' before the restore below runs.
11472
11474
  this.skipNextProgrammaticInputEvent = true;
11473
11475
  this.inputElement.value = '';
11474
11476
 
11475
11477
  this.maskInstance = IMask(this.inputElement, maskOptions);
11476
11478
 
11479
+ // Mask fires 'accept' on every value change, including the restore
11480
+ // step below. Skip events fired during configureAutoFormatting so
11481
+ // we don't overwrite a value the parent just pushed.
11477
11482
  this.maskInstance.on('accept', () => {
11478
- // Suppress propagation during configureAutoFormatting's own value-restoration
11479
- // (line below) — the mask emits 'accept' on every value-set, including ours,
11480
- // and we don't want to overwrite a value the parent just pushed.
11481
11483
  if (this._configuringMask) return;
11482
11484
  this.value = this.util.toModelValue(this.maskInstance.value, this.format);
11483
11485
  if (this.type === "date") {
@@ -11485,6 +11487,8 @@ class BaseInput extends AuroElement {
11485
11487
  }
11486
11488
  });
11487
11489
 
11490
+ // Mask fires 'complete' on the restore step below for any value that
11491
+ // happens to be a complete match. Same setup-suppression as 'accept'.
11488
11492
  this.maskInstance.on('complete', () => {
11489
11493
  if (this._configuringMask) return;
11490
11494
  this.value = this.util.toModelValue(this.maskInstance.value, this.format);
@@ -11493,7 +11497,9 @@ class BaseInput extends AuroElement {
11493
11497
  }
11494
11498
  });
11495
11499
 
11496
- // Restore the stashed value through IMask so it's properly masked
11500
+ // Write existingValue through the mask (not the input directly) so
11501
+ // the mask reformats it under the new rules and keeps its internal
11502
+ // _value aligned with the input's displayed text.
11497
11503
  if (existingValue) {
11498
11504
  this.maskInstance.value = existingValue;
11499
11505
  }
@@ -12199,7 +12205,7 @@ class AuroHelpText extends LitElement {
12199
12205
  }
12200
12206
  }
12201
12207
 
12202
- var formkitVersion = '202606171946';
12208
+ var formkitVersion = '202606190840';
12203
12209
 
12204
12210
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12205
12211
  // See LICENSE in the project root for license information.
@@ -10331,6 +10331,7 @@ class AuroInputUtilities {
10331
10331
  const maskOptions = this.getMaskOptions('date', normalizedFormat);
10332
10332
 
10333
10333
  if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
10334
+ console.debug('Invalid date object or mask options for formatting', { valueObject, maskOptions }); // eslint-disable-line no-console
10334
10335
  return undefined;
10335
10336
  }
10336
10337
 
@@ -11141,10 +11142,6 @@ class BaseInput extends AuroElement {
11141
11142
  this.wrapperElement.addEventListener('click', this.handleClick);
11142
11143
  }
11143
11144
 
11144
- // add attribute for query selectors when auro-input is registered under a custom name
11145
- if (this.tagName.toLowerCase() !== 'auro-input' && !this.hasAttribute('auro-input')) {
11146
- this.setAttribute('auro-input', '');
11147
- }
11148
11145
  this.inputId = this.id ? `${this.id}-input` : window.crypto.randomUUID();
11149
11146
 
11150
11147
  // use validity message override if declared when initializing the component
@@ -11315,14 +11312,14 @@ class BaseInput extends AuroElement {
11315
11312
 
11316
11313
  if (formattedValue !== this.inputElement.value) {
11317
11314
  this.skipNextProgrammaticInputEvent = true;
11318
- if (this.maskInstance && this.type === 'credit-card') {
11315
+ if (this.maskInstance && this.type !== 'date') {
11319
11316
  // Route through the mask so its _value and el.value stay in lock-step
11320
11317
  // (set value calls updateControl which writes el.value = displayValue).
11321
11318
  // Writing el.value directly leaves the mask thinking displayValue is
11322
- // stale; _saveSelection on the next focus/click then warns. Scoped to
11323
- // credit-card so date's own formattedValue (raw ISO when calendar-invalid)
11324
- // isn't re-masked through the mm/dd/yyyy mask, which would truncate it
11325
- // and flip validity from patternMismatch to tooShort.
11319
+ // stale; _saveSelection on the next focus/click then warns. Date is
11320
+ // excluded because its formattedValue can be raw ISO when the calendar
11321
+ // is invalid, and re-masking through mm/dd/yyyy would truncate it and
11322
+ // flip validity from patternMismatch to tooShort.
11326
11323
  this.maskInstance.value = formattedValue || '';
11327
11324
  } else if (formattedValue) {
11328
11325
  this.inputElement.value = formattedValue;
@@ -11433,31 +11430,33 @@ class BaseInput extends AuroElement {
11433
11430
  * @returns {void}
11434
11431
  */
11435
11432
  configureAutoFormatting() {
11436
- // Re-entrancy guard. The patched-setter's synthetic input event (suppressed
11437
- // by _configuringMask above) could otherwise trigger handleInput
11438
- // processCreditCard configureAutoFormatting before the outer call's
11439
- // set value has finished its alignCursor pass.
11433
+ // _configuringMask gates two things: external re-entry into this method
11434
+ // while setup is mid-flight (from property changes that call back here),
11435
+ // and the accept/complete listeners below — both need to ignore the mask
11436
+ // events fired by our own value-restore step.
11440
11437
  if (this._configuringMask) return;
11441
11438
  this._configuringMask = true;
11442
11439
  try {
11440
+ // Destroy any prior mask so IMask can attach fresh under the new format.
11443
11441
  if (this.maskInstance) {
11444
11442
  this.maskInstance.destroy();
11445
11443
  }
11446
11444
 
11447
- // Pass new format to util
11448
11445
  this.util.updateFormat(this.format);
11449
11446
 
11450
11447
  const maskOptions = this.util.getMaskOptions(this.type, this.format);
11451
11448
 
11452
11449
  if (this.inputElement && maskOptions.mask) {
11453
-
11454
- // Stash and clear any existing value before IMask init.
11455
- // IMask's constructor processes the current input value which requires
11456
- // selection state clearing first avoids that scenario entirely.
11457
- // When the format changes (e.g. locale switch) and we have a valid ISO
11458
- // model value, compute the display string for the NEW format instead of
11459
- // re-using the old display string, which may be invalid in the new mask.
11450
+ // Capture the current display so it can be re-applied after IMask
11451
+ // attaches. The restore at the bottom goes through maskInstance.value
11452
+ // (not inputElement.value directly) so the mask's internal state and
11453
+ // the input's displayed text stay in lock-step.
11460
11454
  let existingValue = this.inputElement.value;
11455
+
11456
+ // Format-change case (e.g. locale switch): existingValue is the OLD
11457
+ // mask's display string and may not parse under the new mask. When
11458
+ // we have a valid date model, rebuild the display from valueObject
11459
+ // (the canonical source) using the new mask's format function.
11461
11460
  if (
11462
11461
  this.util.isFullDateFormat(this.type, this.format) &&
11463
11462
  this.value &&
@@ -11469,15 +11468,18 @@ class BaseInput extends AuroElement {
11469
11468
  existingValue = maskOptions.format(this.valueObject);
11470
11469
  }
11471
11470
 
11471
+ // Clear before IMask attaches so the constructor seeds an empty
11472
+ // internal value. Otherwise IMask reads the stale unmasked string
11473
+ // and emits a spurious 'accept' before the restore below runs.
11472
11474
  this.skipNextProgrammaticInputEvent = true;
11473
11475
  this.inputElement.value = '';
11474
11476
 
11475
11477
  this.maskInstance = IMask(this.inputElement, maskOptions);
11476
11478
 
11479
+ // Mask fires 'accept' on every value change, including the restore
11480
+ // step below. Skip events fired during configureAutoFormatting so
11481
+ // we don't overwrite a value the parent just pushed.
11477
11482
  this.maskInstance.on('accept', () => {
11478
- // Suppress propagation during configureAutoFormatting's own value-restoration
11479
- // (line below) — the mask emits 'accept' on every value-set, including ours,
11480
- // and we don't want to overwrite a value the parent just pushed.
11481
11483
  if (this._configuringMask) return;
11482
11484
  this.value = this.util.toModelValue(this.maskInstance.value, this.format);
11483
11485
  if (this.type === "date") {
@@ -11485,6 +11487,8 @@ class BaseInput extends AuroElement {
11485
11487
  }
11486
11488
  });
11487
11489
 
11490
+ // Mask fires 'complete' on the restore step below for any value that
11491
+ // happens to be a complete match. Same setup-suppression as 'accept'.
11488
11492
  this.maskInstance.on('complete', () => {
11489
11493
  if (this._configuringMask) return;
11490
11494
  this.value = this.util.toModelValue(this.maskInstance.value, this.format);
@@ -11493,7 +11497,9 @@ class BaseInput extends AuroElement {
11493
11497
  }
11494
11498
  });
11495
11499
 
11496
- // Restore the stashed value through IMask so it's properly masked
11500
+ // Write existingValue through the mask (not the input directly) so
11501
+ // the mask reformats it under the new rules and keeps its internal
11502
+ // _value aligned with the input's displayed text.
11497
11503
  if (existingValue) {
11498
11504
  this.maskInstance.value = existingValue;
11499
11505
  }
@@ -12199,7 +12205,7 @@ class AuroHelpText extends LitElement {
12199
12205
  }
12200
12206
  }
12201
12207
 
12202
- var formkitVersion = '202606171946';
12208
+ var formkitVersion = '202606190840';
12203
12209
 
12204
12210
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12205
12211
  // See LICENSE in the project root for license information.
@@ -1212,7 +1212,7 @@ class AuroHelpText extends i$2 {
1212
1212
  }
1213
1213
  }
1214
1214
 
1215
- var formkitVersion = '202606171946';
1215
+ var formkitVersion = '202606190840';
1216
1216
 
1217
1217
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1218
1218
  // See LICENSE in the project root for license information.
@@ -1212,7 +1212,7 @@ class AuroHelpText extends i$2 {
1212
1212
  }
1213
1213
  }
1214
1214
 
1215
- var formkitVersion = '202606171946';
1215
+ var formkitVersion = '202606190840';
1216
1216
 
1217
1217
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1218
1218
  // See LICENSE in the project root for license information.
@@ -1212,7 +1212,7 @@ class AuroHelpText extends i$2 {
1212
1212
  }
1213
1213
  }
1214
1214
 
1215
- var formkitVersion = '202606171946';
1215
+ var formkitVersion = '202606190840';
1216
1216
 
1217
1217
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1218
1218
  // See LICENSE in the project root for license information.
@@ -1151,7 +1151,7 @@ class AuroHelpText extends LitElement {
1151
1151
  }
1152
1152
  }
1153
1153
 
1154
- var formkitVersion = '202606171946';
1154
+ var formkitVersion = '202606190840';
1155
1155
 
1156
1156
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1157
1157
  // See LICENSE in the project root for license information.
@@ -1151,7 +1151,7 @@ class AuroHelpText extends LitElement {
1151
1151
  }
1152
1152
  }
1153
1153
 
1154
- var formkitVersion = '202606171946';
1154
+ var formkitVersion = '202606190840';
1155
1155
 
1156
1156
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1157
1157
  // See LICENSE in the project root for license information.
@@ -38,6 +38,7 @@ The `auro-select` element is a wrapper for auro-dropdown and auro-menu to create
38
38
  | `shape` | `shape` | `'classic' \| 'pill' \| 'pill-left' \| 'pill-right' \| 'snowflake'` | | Determines the shape of the dropdown bib. |
39
39
  | `shift` | `shift` | `boolean` | false | If set, the dropdown will shift its position to avoid being cut off by the viewport. |
40
40
  | `size` | `size` | `'lg' \| 'xl'` | | Determines the size of the dropdown bib. Only the `emphasized` layout supports size=`xl`, while all other layouts support size=`lg`. |
41
+ | `typeaheadTimeoutMs` | `typeaheadTimeoutMs` | `number` | "500" | Milliseconds of keyboard inactivity before the type-ahead buffer resets.<br />Increase for users who type slowly. |
41
42
  | `validity` | `validity` | `string` | | Specifies the `validityState` this element is in. |
42
43
  | `value` | `value` | `string` | | Value selected for the component. |
43
44
 
@@ -22,6 +22,7 @@
22
22
  <auro-anchorlink fluid href="#cssParts" class="level2 body-xs">CSS Shadow Parts</auro-anchorlink>
23
23
  <auro-anchorlink fluid href="#customBehavior">Behavior</auro-anchorlink>
24
24
  <auro-anchorlink fluid href="#autoComplete" class="level2 body-xs">Autocomplete</auro-anchorlink>
25
+ <auro-anchorlink fluid href="#typeAhead" class="level2 body-xs">Type-Ahead</auro-anchorlink>
25
26
  <auro-anchorlink fluid href="#disableComponent" class="level2 body-xs">Disable Component</auro-anchorlink>
26
27
  <auro-anchorlink fluid href="#disableOptions" class="level2 body-xs">Disable Option(s)</auro-anchorlink>
27
28
  <auro-anchorlink fluid href="#requireSelection" class="level2 body-xs">Require Selection</auro-anchorlink>
@@ -749,6 +750,76 @@
749
750
  &lt;/form&gt;</code></pre>
750
751
  <!-- AURO-GENERATED-CONTENT:END -->
751
752
  </auro-accordion>
753
+ <auro-header level="3" id="typeAhead">Type-Ahead</auro-header>
754
+ <!-- AURO-GENERATED-CONTENT:START (FILE:src=./../docs/partials/customize/typeahead.md) -->
755
+ <!-- The below content is automatically added from ./../docs/partials/customize/typeahead.md -->
756
+ <p>Type-ahead lets a guest jump to an option by typing. As keys are pressed, the active option advances to the first enabled option whose <strong>displayed text</strong> starts with the buffered keystrokes — following the <auro-hyperlink href="https://www.w3.org/WAI/ARIA/apg/patterns/listbox/">WAI-ARIA Listbox pattern</auro-hyperlink>, and mirroring native HTML <code>&lt;select&gt;</code> behavior. Matching uses the rendered text rather than the <code>value</code> attribute.</p>
757
+ <p>The <code>typeaheadTimeoutMs</code> attribute (default <code>500</code>) controls how long the buffer persists between keystrokes. Repeating the same character cycles through every enabled option starting with it; disabled options are skipped.</p>
758
+ <div class="note">
759
+ <strong>Note:</strong> The <kbd>Space</kbd> key is context-sensitive. When the type-ahead buffer is empty it toggles the bib open or closed, matching the rest of <code>&lt;auro-select&gt;</code>. When the buffer is active it extends the buffer instead, so multi-word options such as "San Francisco" can be matched by typing <kbd>s</kbd>, <kbd>a</kbd>, <kbd>n</kbd>, <kbd>Space</kbd>, <kbd>f</kbd>.
760
+ </div>
761
+ <!-- AURO-GENERATED-CONTENT:END -->
762
+ <div class="exampleWrapper">
763
+ <!-- AURO-GENERATED-CONTENT:START (FILE:src=./../apiExamples/typeahead.html) -->
764
+ <!-- The below content is automatically added from ./../apiExamples/typeahead.html -->
765
+ <auro-select>
766
+ <span slot="ariaLabel.bib.close">Close Popup</span>
767
+ <span slot="bib.fullscreen.headline">Airport</span>
768
+ <span slot="label">Destination airport</span>
769
+ <auro-menu>
770
+ <auro-menuoption value="ANC">Anchorage</auro-menuoption>
771
+ <auro-menuoption value="ATL">Atlanta</auro-menuoption>
772
+ <auro-menuoption value="AUS">Austin</auro-menuoption>
773
+ <auro-menuoption value="BOS">Boston</auro-menuoption>
774
+ <auro-menuoption value="DEN">Denver</auro-menuoption>
775
+ <auro-menuoption value="DFW" disabled>Dallas/Fort Worth</auro-menuoption>
776
+ <auro-menuoption value="DTW">Detroit</auro-menuoption>
777
+ <auro-menuoption value="HNL">Honolulu</auro-menuoption>
778
+ <auro-menuoption value="LAX">Los Angeles</auro-menuoption>
779
+ <auro-menuoption value="MIA">Miami</auro-menuoption>
780
+ <auro-menuoption value="ORD">Chicago</auro-menuoption>
781
+ <auro-menuoption value="PDX">Portland</auro-menuoption>
782
+ <auro-menuoption value="PHX">Phoenix</auro-menuoption>
783
+ <auro-menuoption value="SAN">San Diego</auro-menuoption>
784
+ <auro-menuoption value="SEA">Seattle</auro-menuoption>
785
+ <auro-menuoption value="SFO">San Francisco</auro-menuoption>
786
+ <auro-menuoption value="SJC" disabled>San Jose</auro-menuoption>
787
+ <auro-menuoption value="SLC">Salt Lake City</auro-menuoption>
788
+ </auro-menu>
789
+ </auro-select>
790
+ <!-- AURO-GENERATED-CONTENT:END -->
791
+ </div>
792
+ <auro-accordion alignRight>
793
+ <span slot="trigger">See code</span>
794
+ <!-- AURO-GENERATED-CONTENT:START (CODE:src=./../apiExamples/typeahead.html) -->
795
+ <!-- The below code snippet is automatically added from ./../apiExamples/typeahead.html -->
796
+ <pre class="language-html"><code class="language-html">&lt;auro-select&gt;
797
+ &lt;span slot="ariaLabel.bib.close"&gt;Close Popup&lt;/span&gt;
798
+ &lt;span slot="bib.fullscreen.headline"&gt;Airport&lt;/span&gt;
799
+ &lt;span slot="label"&gt;Destination airport&lt;/span&gt;
800
+ &lt;auro-menu&gt;
801
+ &lt;auro-menuoption value="ANC"&gt;Anchorage&lt;/auro-menuoption&gt;
802
+ &lt;auro-menuoption value="ATL"&gt;Atlanta&lt;/auro-menuoption&gt;
803
+ &lt;auro-menuoption value="AUS"&gt;Austin&lt;/auro-menuoption&gt;
804
+ &lt;auro-menuoption value="BOS"&gt;Boston&lt;/auro-menuoption&gt;
805
+ &lt;auro-menuoption value="DEN"&gt;Denver&lt;/auro-menuoption&gt;
806
+ &lt;auro-menuoption value="DFW" disabled&gt;Dallas/Fort Worth&lt;/auro-menuoption&gt;
807
+ &lt;auro-menuoption value="DTW"&gt;Detroit&lt;/auro-menuoption&gt;
808
+ &lt;auro-menuoption value="HNL"&gt;Honolulu&lt;/auro-menuoption&gt;
809
+ &lt;auro-menuoption value="LAX"&gt;Los Angeles&lt;/auro-menuoption&gt;
810
+ &lt;auro-menuoption value="MIA"&gt;Miami&lt;/auro-menuoption&gt;
811
+ &lt;auro-menuoption value="ORD"&gt;Chicago&lt;/auro-menuoption&gt;
812
+ &lt;auro-menuoption value="PDX"&gt;Portland&lt;/auro-menuoption&gt;
813
+ &lt;auro-menuoption value="PHX"&gt;Phoenix&lt;/auro-menuoption&gt;
814
+ &lt;auro-menuoption value="SAN"&gt;San Diego&lt;/auro-menuoption&gt;
815
+ &lt;auro-menuoption value="SEA"&gt;Seattle&lt;/auro-menuoption&gt;
816
+ &lt;auro-menuoption value="SFO"&gt;San Francisco&lt;/auro-menuoption&gt;
817
+ &lt;auro-menuoption value="SJC" disabled&gt;San Jose&lt;/auro-menuoption&gt;
818
+ &lt;auro-menuoption value="SLC"&gt;Salt Lake City&lt;/auro-menuoption&gt;
819
+ &lt;/auro-menu&gt;
820
+ &lt;/auro-select&gt;</code></pre>
821
+ <!-- AURO-GENERATED-CONTENT:END -->
822
+ </auro-accordion>
752
823
  <auro-header level="3" id="disableComponent">Disable Component</auro-header>
753
824
  <p>The entire component may be disabled. When disabled, the component will render to reflect the state, may not receive focus nor react to any key or pointer events.</p>
754
825
  <p>When the component is disabled and part of a form, the components value is still included in the form submission.</p>