@aurodesignsystem-dev/auro-formkit 0.0.0-pr1504.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 +2 -2
- package/components/checkbox/demo/getting-started.min.js +2 -2
- package/components/checkbox/demo/index.min.js +2 -2
- package/components/checkbox/dist/index.js +2 -2
- package/components/checkbox/dist/registered.js +2 -2
- package/components/combobox/demo/customize.md +7 -3
- package/components/combobox/demo/customize.min.js +1435 -1666
- package/components/combobox/demo/getting-started.min.js +1435 -1666
- package/components/combobox/demo/index.min.js +1435 -1666
- package/components/combobox/dist/auro-combobox.d.ts +14 -0
- package/components/combobox/dist/index.js +489 -145
- package/components/combobox/dist/registered.js +489 -145
- package/components/counter/demo/customize.min.js +3 -3
- package/components/counter/demo/index.min.js +3 -3
- package/components/counter/dist/index.js +3 -3
- package/components/counter/dist/registered.js +3 -3
- package/components/datepicker/demo/customize.min.js +140 -61
- package/components/datepicker/demo/index.min.js +140 -61
- package/components/datepicker/dist/index.js +140 -61
- package/components/datepicker/dist/registered.js +140 -61
- 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 +2336 -2269
- package/components/form/demo/getting-started.min.js +2336 -2269
- package/components/form/demo/index.min.js +2336 -2269
- package/components/form/demo/registerDemoDeps.min.js +2334 -2267
- package/components/input/demo/customize.min.js +138 -57
- package/components/input/demo/getting-started.min.js +138 -57
- package/components/input/demo/index.min.js +138 -57
- package/components/input/dist/base-input.d.ts +16 -0
- package/components/input/dist/index.js +138 -57
- package/components/input/dist/registered.js +138 -57
- package/components/menu/demo/api.md +41 -45
- package/components/menu/demo/customize.md +0 -28
- package/components/menu/demo/index.min.js +779 -1354
- package/components/menu/dist/auro-menu.d.ts +95 -110
- package/components/menu/dist/auro-menuoption.d.ts +32 -138
- package/components/menu/dist/index.js +753 -1308
- package/components/menu/dist/registered.js +765 -1308
- package/components/radio/demo/customize.min.js +2 -2
- package/components/radio/demo/getting-started.min.js +2 -2
- package/components/radio/demo/index.min.js +2 -2
- package/components/radio/dist/index.js +2 -2
- package/components/radio/dist/registered.js +2 -2
- package/components/select/demo/api.md +1 -0
- package/components/select/demo/customize.md +78 -3
- package/components/select/demo/customize.min.js +1140 -1577
- package/components/select/demo/getting-started.min.js +1140 -1577
- package/components/select/demo/index.min.js +1140 -1577
- 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 +177 -39
- package/components/select/dist/registered.js +177 -39
- package/components/select/dist/selectUtils.d.ts +24 -0
- package/custom-elements.json +503 -1037
- package/package.json +1 -1
- package/components/menu/dist/auro-menu.context.d.ts +0 -238
|
@@ -4490,7 +4490,7 @@ class AuroFormValidation {
|
|
|
4490
4490
|
} else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
|
|
4491
4491
|
const input = elem.renderRoot.querySelector('input');
|
|
4492
4492
|
|
|
4493
|
-
if (input.validationMessage.length > 0) {
|
|
4493
|
+
if (input && input.validationMessage.length > 0) {
|
|
4494
4494
|
elem.errorMessage = input.validationMessage;
|
|
4495
4495
|
}
|
|
4496
4496
|
} else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
|
|
@@ -11034,7 +11034,7 @@ class BaseInput extends AuroElement {
|
|
|
11034
11034
|
* @returns {Date|undefined}
|
|
11035
11035
|
*/
|
|
11036
11036
|
get valueObject() {
|
|
11037
|
-
return this._valueObject;
|
|
11037
|
+
return this._valueObject || this._computeDateObjectFallback(this.value);
|
|
11038
11038
|
}
|
|
11039
11039
|
|
|
11040
11040
|
/**
|
|
@@ -11042,7 +11042,7 @@ class BaseInput extends AuroElement {
|
|
|
11042
11042
|
* @returns {Date|undefined}
|
|
11043
11043
|
*/
|
|
11044
11044
|
get minObject() {
|
|
11045
|
-
return this._minObject;
|
|
11045
|
+
return this._minObject || this._computeDateObjectFallback(this.min);
|
|
11046
11046
|
}
|
|
11047
11047
|
|
|
11048
11048
|
/**
|
|
@@ -11050,7 +11050,31 @@ class BaseInput extends AuroElement {
|
|
|
11050
11050
|
* @returns {Date|undefined}
|
|
11051
11051
|
*/
|
|
11052
11052
|
get maxObject() {
|
|
11053
|
-
return this._maxObject;
|
|
11053
|
+
return this._maxObject || this._computeDateObjectFallback(this.max);
|
|
11054
|
+
}
|
|
11055
|
+
|
|
11056
|
+
/**
|
|
11057
|
+
* Parses a date string into a Date object when the corresponding `_*Object`
|
|
11058
|
+
* field hasn't been synced yet by `updated()`. Returns undefined when the
|
|
11059
|
+
* input type/format isn't a full date or the string is not a valid date.
|
|
11060
|
+
*
|
|
11061
|
+
* Why this exists: a parent (datepicker) can call `inputN.validate()` from
|
|
11062
|
+
* inside its own `updated()` before this input's `updated()` has run
|
|
11063
|
+
* `syncDateValues()` — so `_valueObject`/`_maxObject` are still `undefined`
|
|
11064
|
+
* and range checks would otherwise silently no-op (flipping the result to
|
|
11065
|
+
* `valid` or `patternMismatch`).
|
|
11066
|
+
* @private
|
|
11067
|
+
* @param {string|undefined} dateStr - ISO date string from `value`/`min`/`max`.
|
|
11068
|
+
* @returns {Date|undefined}
|
|
11069
|
+
*/
|
|
11070
|
+
_computeDateObjectFallback(dateStr) {
|
|
11071
|
+
if (!dateStr || !this.util || !this.util.isFullDateFormat(this.type, this.format)) {
|
|
11072
|
+
return undefined;
|
|
11073
|
+
}
|
|
11074
|
+
if (!dateFormatter.isValidDate(dateStr)) {
|
|
11075
|
+
return undefined;
|
|
11076
|
+
}
|
|
11077
|
+
return dateFormatter.stringToDateInstance(dateStr);
|
|
11054
11078
|
}
|
|
11055
11079
|
|
|
11056
11080
|
/**
|
|
@@ -11075,8 +11099,30 @@ class BaseInput extends AuroElement {
|
|
|
11075
11099
|
connectedCallback() {
|
|
11076
11100
|
super.connectedCallback();
|
|
11077
11101
|
|
|
11102
|
+
// Mark for query selectors when registered under a versioned tag (e.g. inside
|
|
11103
|
+
// a datepicker/combobox). Must run before parent components call validate() on
|
|
11104
|
+
// their inner inputs — the validation framework matches via tag-or-attribute,
|
|
11105
|
+
// and parents trigger validation during their own updated() cycle, which can
|
|
11106
|
+
// precede this input's firstUpdated().
|
|
11107
|
+
if (this.tagName.toLowerCase() !== 'auro-input' && !this.hasAttribute('auro-input')) {
|
|
11108
|
+
this.setAttribute('auro-input', '');
|
|
11109
|
+
}
|
|
11110
|
+
|
|
11078
11111
|
this.locale = this.domHandler.getLocale(this);
|
|
11079
11112
|
notifyOnLangChange(this);
|
|
11113
|
+
|
|
11114
|
+
// Pre-compute lengthForType and date-object fields so a parent (e.g. datepicker)
|
|
11115
|
+
// calling our validate() synchronously during its own updated() cycle sees
|
|
11116
|
+
// populated values. Without this, range validation silently no-ops because
|
|
11117
|
+
// `max.length === lengthForType` fails when lengthForType is still undefined.
|
|
11118
|
+
// Rebuild util here (constructor seeded with en-US default) so configureDataForType's
|
|
11119
|
+
// locale-derived format lookup uses the actual locale just resolved above.
|
|
11120
|
+
this.util = new AuroInputUtilities({
|
|
11121
|
+
locale: this.locale,
|
|
11122
|
+
format: this.format
|
|
11123
|
+
});
|
|
11124
|
+
this.configureDataForType();
|
|
11125
|
+
this.syncDateValues();
|
|
11080
11126
|
}
|
|
11081
11127
|
|
|
11082
11128
|
disconnectedCallback() {
|
|
@@ -11096,10 +11142,6 @@ class BaseInput extends AuroElement {
|
|
|
11096
11142
|
this.wrapperElement.addEventListener('click', this.handleClick);
|
|
11097
11143
|
}
|
|
11098
11144
|
|
|
11099
|
-
// add attribute for query selectors when auro-input is registered under a custom name
|
|
11100
|
-
if (this.tagName.toLowerCase() !== 'auro-input') {
|
|
11101
|
-
this.setAttribute('auro-input', true);
|
|
11102
|
-
}
|
|
11103
11145
|
this.inputId = this.id ? `${this.id}-input` : window.crypto.randomUUID();
|
|
11104
11146
|
|
|
11105
11147
|
// use validity message override if declared when initializing the component
|
|
@@ -11146,6 +11188,12 @@ class BaseInput extends AuroElement {
|
|
|
11146
11188
|
return;
|
|
11147
11189
|
}
|
|
11148
11190
|
|
|
11191
|
+
// While configureAutoFormatting is running, imask's internal updateControl
|
|
11192
|
+
// writes el.value to align display with the masked value. A synthetic input
|
|
11193
|
+
// event from that write would re-enter handleInput → processCreditCard mid-setup
|
|
11194
|
+
// and clobber a Lit value that was just pushed by the parent combobox.
|
|
11195
|
+
if (component._configuringMask) return;
|
|
11196
|
+
|
|
11149
11197
|
// If all guard clauses are passed, dispatch the event
|
|
11150
11198
|
const inputEvent = new InputEvent('input', {
|
|
11151
11199
|
bubbles: true,
|
|
@@ -11264,7 +11312,16 @@ class BaseInput extends AuroElement {
|
|
|
11264
11312
|
|
|
11265
11313
|
if (formattedValue !== this.inputElement.value) {
|
|
11266
11314
|
this.skipNextProgrammaticInputEvent = true;
|
|
11267
|
-
if (
|
|
11315
|
+
if (this.maskInstance && this.type !== 'date') {
|
|
11316
|
+
// Route through the mask so its _value and el.value stay in lock-step
|
|
11317
|
+
// (set value calls updateControl which writes el.value = displayValue).
|
|
11318
|
+
// Writing el.value directly leaves the mask thinking displayValue is
|
|
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.
|
|
11323
|
+
this.maskInstance.value = formattedValue || '';
|
|
11324
|
+
} else if (formattedValue) {
|
|
11268
11325
|
this.inputElement.value = formattedValue;
|
|
11269
11326
|
} else {
|
|
11270
11327
|
this.inputElement.value = '';
|
|
@@ -11373,58 +11430,82 @@ class BaseInput extends AuroElement {
|
|
|
11373
11430
|
* @returns {void}
|
|
11374
11431
|
*/
|
|
11375
11432
|
configureAutoFormatting() {
|
|
11376
|
-
|
|
11377
|
-
|
|
11378
|
-
|
|
11379
|
-
|
|
11380
|
-
|
|
11381
|
-
this.
|
|
11382
|
-
|
|
11383
|
-
|
|
11384
|
-
|
|
11385
|
-
|
|
11386
|
-
|
|
11387
|
-
// Stash and clear any existing value before IMask init.
|
|
11388
|
-
// IMask's constructor processes the current input value which requires
|
|
11389
|
-
// selection state — clearing first avoids that scenario entirely.
|
|
11390
|
-
// When the format changes (e.g. locale switch) and we have a valid ISO
|
|
11391
|
-
// model value, compute the display string for the NEW format instead of
|
|
11392
|
-
// re-using the old display string, which may be invalid in the new mask.
|
|
11393
|
-
let existingValue = this.inputElement.value;
|
|
11394
|
-
if (
|
|
11395
|
-
this.util.isFullDateFormat(this.type, this.format) &&
|
|
11396
|
-
this.value &&
|
|
11397
|
-
dateFormatter.isValidDate(this.value) &&
|
|
11398
|
-
this.valueObject instanceof Date &&
|
|
11399
|
-
!Number.isNaN(this.valueObject.getTime()) &&
|
|
11400
|
-
typeof maskOptions.format === 'function'
|
|
11401
|
-
) {
|
|
11402
|
-
existingValue = maskOptions.format(this.valueObject);
|
|
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.
|
|
11437
|
+
if (this._configuringMask) return;
|
|
11438
|
+
this._configuringMask = true;
|
|
11439
|
+
try {
|
|
11440
|
+
// Destroy any prior mask so IMask can attach fresh under the new format.
|
|
11441
|
+
if (this.maskInstance) {
|
|
11442
|
+
this.maskInstance.destroy();
|
|
11403
11443
|
}
|
|
11404
11444
|
|
|
11405
|
-
this.
|
|
11406
|
-
this.inputElement.value = '';
|
|
11407
|
-
|
|
11408
|
-
this.maskInstance = IMask(this.inputElement, maskOptions);
|
|
11445
|
+
this.util.updateFormat(this.format);
|
|
11409
11446
|
|
|
11410
|
-
this.
|
|
11411
|
-
|
|
11412
|
-
|
|
11413
|
-
|
|
11447
|
+
const maskOptions = this.util.getMaskOptions(this.type, this.format);
|
|
11448
|
+
|
|
11449
|
+
if (this.inputElement && maskOptions.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.
|
|
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.
|
|
11460
|
+
if (
|
|
11461
|
+
this.util.isFullDateFormat(this.type, this.format) &&
|
|
11462
|
+
this.value &&
|
|
11463
|
+
dateFormatter.isValidDate(this.value) &&
|
|
11464
|
+
this.valueObject instanceof Date &&
|
|
11465
|
+
!Number.isNaN(this.valueObject.getTime()) &&
|
|
11466
|
+
typeof maskOptions.format === 'function'
|
|
11467
|
+
) {
|
|
11468
|
+
existingValue = maskOptions.format(this.valueObject);
|
|
11414
11469
|
}
|
|
11415
|
-
});
|
|
11416
11470
|
|
|
11417
|
-
|
|
11418
|
-
|
|
11419
|
-
|
|
11420
|
-
|
|
11421
|
-
|
|
11422
|
-
|
|
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.
|
|
11474
|
+
this.skipNextProgrammaticInputEvent = true;
|
|
11475
|
+
this.inputElement.value = '';
|
|
11476
|
+
|
|
11477
|
+
this.maskInstance = IMask(this.inputElement, maskOptions);
|
|
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.
|
|
11482
|
+
this.maskInstance.on('accept', () => {
|
|
11483
|
+
if (this._configuringMask) return;
|
|
11484
|
+
this.value = this.util.toModelValue(this.maskInstance.value, this.format);
|
|
11485
|
+
if (this.type === "date") {
|
|
11486
|
+
this._rawMaskValue = this.maskInstance.value;
|
|
11487
|
+
}
|
|
11488
|
+
});
|
|
11423
11489
|
|
|
11424
|
-
|
|
11425
|
-
|
|
11426
|
-
this.maskInstance.
|
|
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'.
|
|
11492
|
+
this.maskInstance.on('complete', () => {
|
|
11493
|
+
if (this._configuringMask) return;
|
|
11494
|
+
this.value = this.util.toModelValue(this.maskInstance.value, this.format);
|
|
11495
|
+
if (this.type === "date") {
|
|
11496
|
+
this._rawMaskValue = this.maskInstance.value;
|
|
11497
|
+
}
|
|
11498
|
+
});
|
|
11499
|
+
|
|
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.
|
|
11503
|
+
if (existingValue) {
|
|
11504
|
+
this.maskInstance.value = existingValue;
|
|
11505
|
+
}
|
|
11427
11506
|
}
|
|
11507
|
+
} finally {
|
|
11508
|
+
this._configuringMask = false;
|
|
11428
11509
|
}
|
|
11429
11510
|
}
|
|
11430
11511
|
|
|
@@ -11711,10 +11792,10 @@ class BaseInput extends AuroElement {
|
|
|
11711
11792
|
},
|
|
11712
11793
|
{
|
|
11713
11794
|
name: 'Diners club',
|
|
11714
|
-
regex: /^(?<num>36|38)\d{0}/u,
|
|
11795
|
+
regex: /^(?<num>30[0-5]|36|38)\d{0}/u,
|
|
11715
11796
|
formatLength: 16,
|
|
11716
11797
|
errorMessage: CreditCardValidationMessage,
|
|
11717
|
-
cardIcon: '
|
|
11798
|
+
cardIcon: 'cc-dinersclub',
|
|
11718
11799
|
maskFormat: "0000 000000 0000"
|
|
11719
11800
|
},
|
|
11720
11801
|
{
|
|
@@ -12124,7 +12205,7 @@ class AuroHelpText extends LitElement {
|
|
|
12124
12205
|
}
|
|
12125
12206
|
}
|
|
12126
12207
|
|
|
12127
|
-
var formkitVersion = '
|
|
12208
|
+
var formkitVersion = '202606190840';
|
|
12128
12209
|
|
|
12129
12210
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
12130
12211
|
// See LICENSE in the project root for license information.
|
|
@@ -7,32 +7,32 @@ The `auro-menu` element provides users a way to select from a list of options.
|
|
|
7
7
|
|
|
8
8
|
## Properties
|
|
9
9
|
|
|
10
|
-
| Property
|
|
11
|
-
|
|
12
|
-
| `
|
|
13
|
-
| `
|
|
14
|
-
| `
|
|
15
|
-
| `
|
|
16
|
-
| `
|
|
17
|
-
| `
|
|
18
|
-
| `
|
|
19
|
-
| `
|
|
20
|
-
| `
|
|
21
|
-
| `
|
|
22
|
-
| `
|
|
23
|
-
| `
|
|
24
|
-
| `
|
|
25
|
-
| `
|
|
26
|
-
| `
|
|
27
|
-
| `selectedOptions` | | readonly | `HTMLElement[]` | | Gets the currently selected options. |
|
|
28
|
-
| `value` | `value` | | `string` | | The value of the selected option. In multi-select mode, this is a JSON stringified array of selected option values. |
|
|
10
|
+
| Property | Attribute | Modifiers | Type | Default | Description |
|
|
11
|
+
|-------------------------|------------------|-----------|-----------------------|-------------|--------------------------------------------------|
|
|
12
|
+
| `currentLabel` | | readonly | `string` | | |
|
|
13
|
+
| `disabled` | `disabled` | | `boolean` | | When true, the entire menu and all options are disabled. |
|
|
14
|
+
| `hasLoadingPlaceholder` | | readonly | `boolean` | | Getter for loading placeholder state. |
|
|
15
|
+
| `index` | | | `number` | | |
|
|
16
|
+
| `layout` | | | `string` | | |
|
|
17
|
+
| `loading` | `loading` | | `boolean` | false | When true, displays a loading state using the loadingIcon and loadingText slots if provided. |
|
|
18
|
+
| `matchWord` | `matchword` | | `string` | "undefined" | Specifies a string used to highlight matched string parts in options. |
|
|
19
|
+
| `multiSelect` | `multiselect` | | `boolean` | false | When true, the selected option can be multiple options. |
|
|
20
|
+
| `noCheckmark` | `nocheckmark` | | `boolean` | false | When true, selected option will not show the checkmark. |
|
|
21
|
+
| `optionActive` | `optionactive` | | `object` | "undefined" | Specifies the current active menuOption. |
|
|
22
|
+
| `optionSelected` | `optionSelected` | | `object` | "undefined" | An array of currently selected menu options, type `HTMLElement` by default. In multi-select mode, `optionSelected` is an array of HTML elements. |
|
|
23
|
+
| `options` | | readonly | `HTMLElement[]` | | |
|
|
24
|
+
| `selectedOption` | | readonly | `HTMLElement \| null` | | Gets the first selected option, or null if none. |
|
|
25
|
+
| `selectedOptions` | | readonly | `HTMLElement[]` | | Gets the currently selected options as an array. |
|
|
26
|
+
| `value` | `value` | | `string` | "undefined" | The value of the selected option. In multi-select mode, this is a JSON stringified array of selected option values. |
|
|
29
27
|
|
|
30
28
|
## Methods
|
|
31
29
|
|
|
32
|
-
| Method | Type
|
|
33
|
-
|
|
34
|
-
| `
|
|
35
|
-
| `
|
|
30
|
+
| Method | Type | Description |
|
|
31
|
+
|----------------------|--------------------------------------------------|--------------------------------------------------|
|
|
32
|
+
| `navigateOptions` | `(direction: string): void` | Navigates through options using keyboard.<br /><br />**direction**: 'up' or 'down'. |
|
|
33
|
+
| `reset` | `(): void` | Resets the menu to its initial state.<br />This is the only way to return value to undefined. |
|
|
34
|
+
| `selectByValue` | `(value: string \| string[] \| null \| undefined): void` | Selects options by value.<br /><br />**value**: The value(s) to select. |
|
|
35
|
+
| `updateActiveOption` | `(indexOrOption: number \| HTMLElement): void` | Updates the active option state and dispatches events.<br />Accepts either a numeric index or an HTMLElement option.<br /><br />**indexOrOption**: Index of the option or the option element to make active. |
|
|
36
36
|
|
|
37
37
|
## Events
|
|
38
38
|
|
|
@@ -40,9 +40,8 @@ The `auro-menu` element provides users a way to select from a list of options.
|
|
|
40
40
|
|-------------------------------|--------------------------------------------------|--------------------------------------------------|
|
|
41
41
|
| `auroMenu-activatedOption` | `CustomEvent<Element>` | Notifies that a menuoption has been made `active`. |
|
|
42
42
|
| `auroMenu-customEventFired` | `CustomEvent<any>` | Notifies that a custom event has been fired. |
|
|
43
|
-
| `auroMenu-deselectPrevented` | `CustomEvent<{ values: HTMLElement[] }>` | Notifies that deselection was prevented and includes the affected options in `detail.values`. |
|
|
44
43
|
| `auroMenu-loadingChange` | `CustomEvent<{ loading: boolean; hasLoadingPlaceholder: boolean; }>` | Notifies when the loading attribute is changed. |
|
|
45
|
-
| `auroMenu-optionsChange` | `CustomEvent<{ options:
|
|
44
|
+
| `auroMenu-optionsChange` | `CustomEvent<{ options: Element[] \| undefined; }>` | |
|
|
46
45
|
| `auroMenu-selectValueFailure` | `CustomEvent<any>` | Notifies that an attempt to select a menuoption by matching a value has failed. |
|
|
47
46
|
| `auroMenu-selectValueReset` | `CustomEvent<any>` | Notifies that the component value has been reset. |
|
|
48
47
|
| `auroMenu-selectedOption` | `CustomEvent<any>` | Notifies that a new menuoption selection has been made. |
|
|
@@ -61,34 +60,31 @@ The `auro-menuoption` element provides users a way to define a menu option.
|
|
|
61
60
|
|
|
62
61
|
## Properties
|
|
63
62
|
|
|
64
|
-
| Property | Attribute
|
|
65
|
-
|
|
66
|
-
| `disabled` | `disabled`
|
|
67
|
-
| `iconTag` |
|
|
68
|
-
| `isActive` |
|
|
69
|
-
| `
|
|
70
|
-
| `
|
|
71
|
-
| `
|
|
72
|
-
| `
|
|
73
|
-
| `
|
|
74
|
-
| `value` | `value` | | `string` | | Specifies the value to be sent to a server. |
|
|
63
|
+
| Property | Attribute | Modifiers | Type | Default | Description |
|
|
64
|
+
|---------------|---------------|-----------|-----------|---------|--------------------------------------------------|
|
|
65
|
+
| `disabled` | `disabled` | | `boolean` | false | |
|
|
66
|
+
| `iconTag` | | | | | |
|
|
67
|
+
| `isActive` | | readonly | `boolean` | | Returns whether the menu option is currently active and selectable. |
|
|
68
|
+
| `layout` | | | `string` | | |
|
|
69
|
+
| `noCheckmark` | `noCheckmark` | | `boolean` | false | |
|
|
70
|
+
| `noMatch` | `nomatch` | | `boolean` | false | When true, marks this option as the "no matching results" placeholder shown by combobox<br />when the user's input does not match any available options. |
|
|
71
|
+
| `selected` | `selected` | | `boolean` | false | |
|
|
72
|
+
| `value` | `value` | | `string` | | |
|
|
75
73
|
|
|
76
74
|
## Methods
|
|
77
75
|
|
|
78
|
-
| Method
|
|
79
|
-
|
|
80
|
-
| `attachTo`
|
|
81
|
-
| `
|
|
82
|
-
| `
|
|
83
|
-
| `
|
|
84
|
-
| `setSelected` | `(isSelected: boolean): void` | Sets the selected state of the menu option.<br />This function updates whether the option is currently selected.<br /><br />**isSelected**: Whether the option should be marked as selected. |
|
|
85
|
-
| `updateActive` | `(isActive: boolean): void` | Updates the active state and visual highlighting of the menu option.<br />This function toggles the option's active status and applies or removes the active CSS class.<br /><br />**isActive**: Whether the option should be marked as active. |
|
|
76
|
+
| Method | Type |
|
|
77
|
+
|--------------------|-----------------------|
|
|
78
|
+
| `attachTo` | `(): void` |
|
|
79
|
+
| `handleMenuChange` | `(): void` |
|
|
80
|
+
| `setSelected` | `(value: any): void` |
|
|
81
|
+
| `updateActive` | `(active: any): void` |
|
|
86
82
|
|
|
87
83
|
## Events
|
|
88
84
|
|
|
89
85
|
| Event | Type | Description |
|
|
90
86
|
|----------------------------|---------------------|--------------------------------------------------|
|
|
91
|
-
| `auroMenuOption-click` | `CustomEvent<this>` |
|
|
87
|
+
| `auroMenuOption-click` | `CustomEvent<this>` | Notifies that this option has been clicked. |
|
|
92
88
|
| `auroMenuOption-mouseover` | `CustomEvent<this>` | Notifies that this option has been hovered over. |
|
|
93
89
|
|
|
94
90
|
## Slots
|
|
@@ -18,7 +18,6 @@
|
|
|
18
18
|
<auro-anchorlink fluid href="#presetValue" class="level2 body-xs">Preset Value</auro-anchorlink>
|
|
19
19
|
<auro-anchorlink fluid href="#presetValueMultiselect" class="level2 body-xs">Preset Value (Multi)</auro-anchorlink>
|
|
20
20
|
<auro-anchorlink fluid href="#preselect" class="level2 body-xs">Pre-Selected</auro-anchorlink>
|
|
21
|
-
<auro-anchorlink fluid href="#allowDeselect" class="level2 body-xs">Allow Deselect</auro-anchorlink>
|
|
22
21
|
</auro-nav>
|
|
23
22
|
</nav>
|
|
24
23
|
<div class="mainContent">
|
|
@@ -604,33 +603,6 @@
|
|
|
604
603
|
</auro-menu></code></pre>
|
|
605
604
|
<!-- AURO-GENERATED-CONTENT:END -->
|
|
606
605
|
</auro-accordion>
|
|
607
|
-
<auro-header level="3" id="allowDeselect">Allow Deselect</auro-header>
|
|
608
|
-
<p>Use the <code>allowDeselect</code> attribute to allow users to click a selected option again to deselect it in single-select mode. In multi-select mode, deselection is always available regardless of this attribute.</p>
|
|
609
|
-
<div class="exampleWrapper">
|
|
610
|
-
<!-- AURO-GENERATED-CONTENT:START (FILE:src=./../apiExamples/allow-deselect.html) -->
|
|
611
|
-
<!-- The below content is automatically added from ./../apiExamples/allow-deselect.html -->
|
|
612
|
-
<auro-menu allowDeselect>
|
|
613
|
-
<auro-menuoption value="stops">Stops</auro-menuoption>
|
|
614
|
-
<auro-menuoption value="price">Price</auro-menuoption>
|
|
615
|
-
<auro-menuoption value="duration">Duration</auro-menuoption>
|
|
616
|
-
<auro-menuoption value="departure">Departure</auro-menuoption>
|
|
617
|
-
<auro-menuoption value="arrival">Arrival</auro-menuoption>
|
|
618
|
-
</auro-menu>
|
|
619
|
-
<!-- AURO-GENERATED-CONTENT:END -->
|
|
620
|
-
</div>
|
|
621
|
-
<auro-accordion alignRight>
|
|
622
|
-
<span slot="trigger">See code</span>
|
|
623
|
-
<!-- AURO-GENERATED-CONTENT:START (CODE:src=./../apiExamples/allow-deselect.html) -->
|
|
624
|
-
<!-- The below code snippet is automatically added from ./../apiExamples/allow-deselect.html -->
|
|
625
|
-
<pre class="language-html"><code class="language-html"><auro-menu allowDeselect>
|
|
626
|
-
<auro-menuoption value="stops">Stops</auro-menuoption>
|
|
627
|
-
<auro-menuoption value="price">Price</auro-menuoption>
|
|
628
|
-
<auro-menuoption value="duration">Duration</auro-menuoption>
|
|
629
|
-
<auro-menuoption value="departure">Departure</auro-menuoption>
|
|
630
|
-
<auro-menuoption value="arrival">Arrival</auro-menuoption>
|
|
631
|
-
</auro-menu></code></pre>
|
|
632
|
-
<!-- AURO-GENERATED-CONTENT:END -->
|
|
633
|
-
</auro-accordion>
|
|
634
606
|
</section>
|
|
635
607
|
</div>
|
|
636
608
|
</div>
|