@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.
- package/components/checkbox/demo/customize.min.js +1 -1
- package/components/checkbox/demo/getting-started.min.js +1 -1
- package/components/checkbox/demo/index.min.js +1 -1
- package/components/checkbox/dist/index.js +1 -1
- package/components/checkbox/dist/registered.js +1 -1
- package/components/combobox/demo/customize.min.js +120 -139
- package/components/combobox/demo/getting-started.min.js +120 -139
- package/components/combobox/demo/index.min.js +120 -139
- package/components/combobox/dist/auro-combobox.d.ts +9 -0
- package/components/combobox/dist/index.js +120 -139
- package/components/combobox/dist/registered.js +120 -139
- package/components/counter/demo/customize.min.js +2 -2
- package/components/counter/demo/index.min.js +2 -2
- package/components/counter/dist/index.js +2 -2
- package/components/counter/dist/registered.js +2 -2
- package/components/datepicker/demo/api.md +0 -2
- package/components/datepicker/demo/customize.md +33 -195
- package/components/datepicker/demo/customize.min.js +37 -43
- package/components/datepicker/demo/index.min.js +36 -35
- package/components/datepicker/dist/index.js +36 -35
- package/components/datepicker/dist/registered.js +36 -35
- package/components/datepicker/dist/src/auro-datepicker.d.ts +0 -2
- package/components/dropdown/demo/customize.min.js +1 -1
- package/components/dropdown/demo/getting-started.min.js +1 -1
- package/components/dropdown/demo/index.min.js +1 -1
- package/components/dropdown/dist/index.js +1 -1
- package/components/dropdown/dist/registered.js +1 -1
- package/components/form/demo/customize.min.js +325 -230
- package/components/form/demo/getting-started.min.js +325 -230
- package/components/form/demo/index.min.js +325 -230
- package/components/form/demo/registerDemoDeps.min.js +325 -230
- package/components/input/demo/customize.md +55 -56
- package/components/input/demo/customize.min.js +32 -26
- package/components/input/demo/getting-started.min.js +32 -26
- package/components/input/demo/index.md +2 -2
- package/components/input/demo/index.min.js +32 -26
- package/components/input/dist/index.js +32 -26
- package/components/input/dist/registered.js +32 -26
- package/components/radio/demo/customize.min.js +1 -1
- package/components/radio/demo/getting-started.min.js +1 -1
- package/components/radio/demo/index.min.js +1 -1
- package/components/radio/dist/index.js +1 -1
- package/components/radio/dist/registered.js +1 -1
- package/components/select/demo/api.md +1 -0
- package/components/select/demo/customize.md +71 -0
- package/components/select/demo/customize.min.js +133 -26
- package/components/select/demo/getting-started.min.js +133 -26
- package/components/select/demo/index.min.js +133 -26
- package/components/select/demo/keyboard-behavior.md +18 -0
- package/components/select/dist/auro-select.d.ts +38 -2
- package/components/select/dist/index.js +133 -26
- package/components/select/dist/registered.js +133 -26
- package/components/select/dist/selectUtils.d.ts +12 -0
- package/custom-elements.json +114 -10
- 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
|
|
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.
|
|
11323
|
-
//
|
|
11324
|
-
//
|
|
11325
|
-
//
|
|
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
|
-
//
|
|
11437
|
-
//
|
|
11438
|
-
//
|
|
11439
|
-
//
|
|
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
|
-
//
|
|
11455
|
-
//
|
|
11456
|
-
//
|
|
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
|
-
//
|
|
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 = '
|
|
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
|
|
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.
|
|
11323
|
-
//
|
|
11324
|
-
//
|
|
11325
|
-
//
|
|
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
|
-
//
|
|
11437
|
-
//
|
|
11438
|
-
//
|
|
11439
|
-
//
|
|
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
|
-
//
|
|
11455
|
-
//
|
|
11456
|
-
//
|
|
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
|
-
//
|
|
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 = '
|
|
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 = '
|
|
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 = '
|
|
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 = '
|
|
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 = '
|
|
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 = '
|
|
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
|
</form></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><select></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><auro-select></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"><auro-select>
|
|
797
|
+
<span slot="ariaLabel.bib.close">Close Popup</span>
|
|
798
|
+
<span slot="bib.fullscreen.headline">Airport</span>
|
|
799
|
+
<span slot="label">Destination airport</span>
|
|
800
|
+
<auro-menu>
|
|
801
|
+
<auro-menuoption value="ANC">Anchorage</auro-menuoption>
|
|
802
|
+
<auro-menuoption value="ATL">Atlanta</auro-menuoption>
|
|
803
|
+
<auro-menuoption value="AUS">Austin</auro-menuoption>
|
|
804
|
+
<auro-menuoption value="BOS">Boston</auro-menuoption>
|
|
805
|
+
<auro-menuoption value="DEN">Denver</auro-menuoption>
|
|
806
|
+
<auro-menuoption value="DFW" disabled>Dallas/Fort Worth</auro-menuoption>
|
|
807
|
+
<auro-menuoption value="DTW">Detroit</auro-menuoption>
|
|
808
|
+
<auro-menuoption value="HNL">Honolulu</auro-menuoption>
|
|
809
|
+
<auro-menuoption value="LAX">Los Angeles</auro-menuoption>
|
|
810
|
+
<auro-menuoption value="MIA">Miami</auro-menuoption>
|
|
811
|
+
<auro-menuoption value="ORD">Chicago</auro-menuoption>
|
|
812
|
+
<auro-menuoption value="PDX">Portland</auro-menuoption>
|
|
813
|
+
<auro-menuoption value="PHX">Phoenix</auro-menuoption>
|
|
814
|
+
<auro-menuoption value="SAN">San Diego</auro-menuoption>
|
|
815
|
+
<auro-menuoption value="SEA">Seattle</auro-menuoption>
|
|
816
|
+
<auro-menuoption value="SFO">San Francisco</auro-menuoption>
|
|
817
|
+
<auro-menuoption value="SJC" disabled>San Jose</auro-menuoption>
|
|
818
|
+
<auro-menuoption value="SLC">Salt Lake City</auro-menuoption>
|
|
819
|
+
</auro-menu>
|
|
820
|
+
</auro-select></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>
|