@aurodesignsystem-dev/auro-formkit 0.0.0-pr1576.8 → 0.0.0-pr1577.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.md +0 -40
- package/components/combobox/demo/customize.min.js +65 -368
- package/components/combobox/demo/getting-started.min.js +65 -368
- package/components/combobox/demo/index.min.js +65 -368
- package/components/combobox/dist/index.js +38 -56
- package/components/combobox/dist/registered.js +38 -56
- package/components/counter/demo/customize.min.js +11 -2
- package/components/counter/demo/index.min.js +11 -2
- package/components/counter/dist/index.js +11 -2
- package/components/counter/dist/registered.js +11 -2
- package/components/datepicker/demo/customize.min.js +12 -3
- package/components/datepicker/demo/index.min.js +12 -3
- package/components/datepicker/dist/index.js +12 -3
- package/components/datepicker/dist/registered.js +12 -3
- package/components/dropdown/demo/customize.min.js +10 -1
- package/components/dropdown/demo/getting-started.min.js +10 -1
- package/components/dropdown/demo/index.min.js +10 -1
- package/components/dropdown/dist/index.js +10 -1
- package/components/dropdown/dist/registered.js +10 -1
- package/components/form/demo/customize.min.js +102 -378
- package/components/form/demo/getting-started.min.js +102 -378
- package/components/form/demo/index.min.js +102 -378
- package/components/form/demo/registerDemoDeps.min.js +102 -378
- package/components/input/demo/customize.min.js +1 -1
- package/components/input/demo/getting-started.min.js +1 -1
- package/components/input/demo/index.min.js +1 -1
- package/components/input/dist/index.js +1 -1
- package/components/input/dist/registered.js +1 -1
- package/components/menu/demo/customize.md +0 -50
- package/components/menu/demo/index.min.js +27 -312
- package/components/menu/dist/auro-menu-utils.d.ts +0 -30
- package/components/menu/dist/auro-menu.d.ts +0 -23
- package/components/menu/dist/index.js +27 -312
- package/components/menu/dist/registered.js +27 -312
- 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/customize.md +0 -72
- package/components/select/demo/customize.min.js +38 -314
- package/components/select/demo/getting-started.min.js +38 -314
- package/components/select/demo/index.min.js +38 -314
- package/components/select/dist/index.js +11 -2
- package/components/select/dist/registered.js +11 -2
- package/custom-elements.json +0 -103
- package/package.json +1 -1
|
@@ -4836,7 +4836,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$2 {
|
|
|
4836
4836
|
}
|
|
4837
4837
|
};
|
|
4838
4838
|
|
|
4839
|
-
var formkitVersion$1 = '
|
|
4839
|
+
var formkitVersion$1 = '202608041712';
|
|
4840
4840
|
|
|
4841
4841
|
class AuroElement extends i$2 {
|
|
4842
4842
|
static get properties() {
|
|
@@ -5538,6 +5538,15 @@ class AuroDropdown extends AuroElement {
|
|
|
5538
5538
|
|
|
5539
5539
|
connectedCallback() {
|
|
5540
5540
|
super.connectedCallback();
|
|
5541
|
+
// Re-register trigger event listeners removed by floater.disconnect() in
|
|
5542
|
+
// disconnectedCallback(). Fires when a parent element (e.g. auro-drawer)
|
|
5543
|
+
// moves this element to a new DOM location. firstUpdated() won't re-run,
|
|
5544
|
+
// so without this the trigger click/keydown handlers are permanently gone.
|
|
5545
|
+
// Guard on floater.element so this is a no-op on the initial connect
|
|
5546
|
+
// (before firstUpdated() has called configure()).
|
|
5547
|
+
if (this.floater?.element) {
|
|
5548
|
+
this.floater.configure(this, 'auroDropdown', !this.disableKeyboardHandling);
|
|
5549
|
+
}
|
|
5541
5550
|
}
|
|
5542
5551
|
|
|
5543
5552
|
disconnectedCallback() {
|
|
@@ -6938,7 +6947,7 @@ class AuroHelpText extends i$2 {
|
|
|
6938
6947
|
}
|
|
6939
6948
|
}
|
|
6940
6949
|
|
|
6941
|
-
var formkitVersion = '
|
|
6950
|
+
var formkitVersion = '202608041712';
|
|
6942
6951
|
|
|
6943
6952
|
var styleCss$2 = i$5`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.body-default{font-size:var(--wcss-body-default-font-size, 1rem);font-weight:var(--wcss-body-default-weight, );line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-default-emphasized{font-size:var(--wcss-body-default-emphasized-font-size, 1rem);font-weight:var(--wcss-body-default-emphasized-weight, );line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);font-weight:var(--wcss-body-lg-weight, );line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg,.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg-emphasized{font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);font-weight:var(--wcss-body-lg-emphasized-weight, );line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, 0.875rem);font-weight:var(--wcss-body-sm-weight, );line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-sm-emphasized{font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);font-weight:var(--wcss-body-sm-emphasized-weight, );line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-size:var(--wcss-body-xs-font-size, 0.75rem);font-weight:var(--wcss-body-xs-weight, );line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs,.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs-emphasized{font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);font-weight:var(--wcss-body-xs-emphasized-weight, );line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-size:var(--wcss-body-2xs-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-weight, );line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs,.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-2xs-emphasized{font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-emphasized-weight, );line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 300);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 300);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}[auro-dropdown]{--ds-auro-dropdown-trigger-border-color: var(--ds-auro-select-border-color);--ds-auro-dropdown-trigger-background-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-container-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-outline-color: var(--ds-auro-select-outline-color)}:host{display:inline-block;text-align:left;vertical-align:top}:host([layout*=emphasized]) [auro-dropdown],:host([layout*=snowflake]) [auro-dropdown]{--ds-auro-select-border-color: transparent}:host([layout*=emphasized]) .mainContent,:host([layout*=snowflake]) .mainContent{text-align:center}.mainContent{position:relative;display:flex;overflow:hidden;flex:1;flex-direction:column;align-items:center;justify-content:center}.valueContainer{max-width:100%}.accents{display:flex;flex-direction:row;align-items:center;justify-content:center}::slotted([slot=typeIcon]){margin-right:var(--ds-size-100, 0.5rem)}.displayValue{display:block}.displayValue:not(.force){display:none}.displayValue:not(.force).hasContent:is(.withValue):not(.hasFocus){display:block}.triggerContent{display:flex;width:100%;box-sizing:border-box;align-items:center;justify-content:center}:host([layout*=emphasized]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-200, 1rem)}:host([layout*=snowflake]) label{padding-block:var(--ds-size-25, 0.125rem)}:host([layout*=classic]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem)}:host([layout*=classic]) .mainContent{align-items:start}:host([layout*=classic]) label{overflow:hidden;cursor:text;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) .value{overflow:hidden;height:auto;text-overflow:ellipsis;white-space:nowrap}label{color:var(--ds-auro-select-label-text-color)}:host(:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]:is([validity]:not([validity=valid]))) [auro-dropdown],:host([appearance=inverse]:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-select-outline-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}#slotHolder{display:none}:host([fluid]){width:100%}:host([disabled]){pointer-events:none;user-select:none}:host([disabled]:not([ondark])) [auro-dropdown],:host([disabled]:not([appearance=inverse])) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([layout*=classic])[disabled][ondark]) [auro-dropdown],:host(:not([layout*=classic])[disabled][appearance=inverse]) [auro-dropdown]{--ds-auro-select-border-color: transparent}`;
|
|
6944
6953
|
|
|
@@ -8769,116 +8778,6 @@ function isSelectableByValue(option) {
|
|
|
8769
8778
|
!option.hasAttribute('static');
|
|
8770
8779
|
}
|
|
8771
8780
|
|
|
8772
|
-
/* eslint-disable no-underscore-dangle */
|
|
8773
|
-
/**
|
|
8774
|
-
* Resolves the single selected option for a given `value`, preferring the
|
|
8775
|
-
* option tracked by `selectedKey` (a user-initiated selection) over a
|
|
8776
|
-
* first-by-value match. When multiple options share the same `value`, matching
|
|
8777
|
-
* by `value` alone cannot distinguish which one the user picked; the key
|
|
8778
|
-
* disambiguates it.
|
|
8779
|
-
*
|
|
8780
|
-
* The key is trusted only when it still resolves to an option whose `value`
|
|
8781
|
-
* matches the requested `value`. If the key is stale (option removed) or the
|
|
8782
|
-
* value was changed programmatically, resolution falls back to value matching —
|
|
8783
|
-
* preserving backward-compatible behavior for preselection and `selectByValue`.
|
|
8784
|
-
* @private
|
|
8785
|
-
* @param {Array<HTMLElement>} items - The menu's flat option list.
|
|
8786
|
-
* @param {string} value - The value to resolve.
|
|
8787
|
-
* @param {string|undefined} selectedKey - The `_optionKey` of the user-selected option, if any.
|
|
8788
|
-
* @returns {HTMLElement|undefined} The resolved option, or undefined when none match.
|
|
8789
|
-
*/
|
|
8790
|
-
function resolveSelectedOption(items, value, selectedKey) {
|
|
8791
|
-
if (!items) {
|
|
8792
|
-
return undefined;
|
|
8793
|
-
}
|
|
8794
|
-
|
|
8795
|
-
if (selectedKey !== undefined) {
|
|
8796
|
-
const keyed = items.find((item) => item._optionKey === selectedKey);
|
|
8797
|
-
if (keyed && isSelectableByValue(keyed) && keyed.value === value) {
|
|
8798
|
-
return keyed;
|
|
8799
|
-
}
|
|
8800
|
-
// Key exists but the option is gone or its value no longer matches — fall
|
|
8801
|
-
// through to value-based matching.
|
|
8802
|
-
}
|
|
8803
|
-
|
|
8804
|
-
return items.find((item) => isSelectableByValue(item) && item.value === value);
|
|
8805
|
-
}
|
|
8806
|
-
|
|
8807
|
-
/**
|
|
8808
|
-
* Resolves the selected options for a multi-select `value` array, preferring
|
|
8809
|
-
* options tracked by `selectedKeys` (user-initiated selections) and falling
|
|
8810
|
-
* back to value matching for any values not resolved by key. The result is
|
|
8811
|
-
* always sorted into DOM order regardless of selection sequence.
|
|
8812
|
-
* @private
|
|
8813
|
-
* @param {Array<HTMLElement>} items - The menu's flat option list.
|
|
8814
|
-
* @param {Array<string>} valueArray - The selected values.
|
|
8815
|
-
* @param {Array<string>|undefined} selectedKeys - The `_optionKey`s of the user-selected options, if any.
|
|
8816
|
-
* @returns {Array<HTMLElement>} The resolved options in DOM order.
|
|
8817
|
-
*/
|
|
8818
|
-
function resolveSelectedOptions(items, valueArray, selectedKeys) {
|
|
8819
|
-
if (!items) {
|
|
8820
|
-
return [];
|
|
8821
|
-
}
|
|
8822
|
-
|
|
8823
|
-
const resolved = [];
|
|
8824
|
-
// Mirror `resolved` as a Set for O(1) membership checks below, matching the
|
|
8825
|
-
// indexMap optimization used for the sort rather than scanning `resolved`
|
|
8826
|
-
// on every candidate.
|
|
8827
|
-
const resolvedSet = new Set();
|
|
8828
|
-
|
|
8829
|
-
// Track how many of each value are still available to resolve. A value that
|
|
8830
|
-
// appears N times in `valueArray` may be satisfied at most N times total across
|
|
8831
|
-
// the key pass and the value fallback below — matching by count, not presence,
|
|
8832
|
-
// on BOTH passes. This stops a duplicate value from being over-resolved: e.g.
|
|
8833
|
-
// two keyed options that both carry `SEA` cannot both match a single requested
|
|
8834
|
-
// `SEA` (which happens when `value` is set directly without clearing
|
|
8835
|
-
// `_selectedKey`, so more keys survive than the value set now asks for).
|
|
8836
|
-
const remaining = new Map();
|
|
8837
|
-
valueArray.forEach((val) => remaining.set(val, (remaining.get(val) || 0) + 1));
|
|
8838
|
-
|
|
8839
|
-
// Resolve by key first: trust a key only when its option is still selectable
|
|
8840
|
-
// and there is still an unmatched occurrence of its value in the request set.
|
|
8841
|
-
if (Array.isArray(selectedKeys)) {
|
|
8842
|
-
selectedKeys.forEach((key) => {
|
|
8843
|
-
const keyed = items.find((item) => item._optionKey === key);
|
|
8844
|
-
if (keyed && isSelectableByValue(keyed) && (remaining.get(keyed.value) || 0) > 0 && !resolvedSet.has(keyed)) {
|
|
8845
|
-
resolved.push(keyed);
|
|
8846
|
-
resolvedSet.add(keyed);
|
|
8847
|
-
remaining.set(keyed.value, remaining.get(keyed.value) - 1);
|
|
8848
|
-
}
|
|
8849
|
-
});
|
|
8850
|
-
}
|
|
8851
|
-
|
|
8852
|
-
// Fall back to value matching for the occurrences not resolved by key. Iterate
|
|
8853
|
-
// the leftover per-value counts so a value that appears twice but was only
|
|
8854
|
-
// resolved once by key still matches its remaining occurrence(s).
|
|
8855
|
-
remaining.forEach((count, val) => {
|
|
8856
|
-
for (let occurrence = 0; occurrence < count; occurrence += 1) {
|
|
8857
|
-
const option = items.find((item) => isSelectableByValue(item) && item.value === val && !resolvedSet.has(item));
|
|
8858
|
-
if (option) {
|
|
8859
|
-
resolved.push(option);
|
|
8860
|
-
resolvedSet.add(option);
|
|
8861
|
-
}
|
|
8862
|
-
}
|
|
8863
|
-
});
|
|
8864
|
-
|
|
8865
|
-
// Always return in DOM order so display is consistent regardless of the order
|
|
8866
|
-
// keys/values were selected. Every resolved option came from `items`, so an
|
|
8867
|
-
// O(1) index lookup mirrors `_sortSelectedByDomOrder` and avoids the O(n)
|
|
8868
|
-
// `items.indexOf` per comparison for large combobox option sets. Any element
|
|
8869
|
-
// not in `items` (a stale snapshot from a future caller) sorts to the END via
|
|
8870
|
-
// `?? items.length`, matching `_sortSelectedByDomOrder` and avoiding NaN
|
|
8871
|
-
// comparisons.
|
|
8872
|
-
const indexMap = new Map(items.map((item, index) => [
|
|
8873
|
-
item,
|
|
8874
|
-
index
|
|
8875
|
-
]));
|
|
8876
|
-
resolved.sort((optionA, optionB) => (indexMap.get(optionA) ?? items.length) - (indexMap.get(optionB) ?? items.length));
|
|
8877
|
-
|
|
8878
|
-
return resolved;
|
|
8879
|
-
}
|
|
8880
|
-
/* eslint-enable no-underscore-dangle */
|
|
8881
|
-
|
|
8882
8781
|
/**
|
|
8883
8782
|
* Helper method to dispatch custom events.
|
|
8884
8783
|
* @param {HTMLElement} element - Element to dispatch event from.
|
|
@@ -8904,14 +8803,6 @@ function dispatchMenuEvent(element, eventName, detail = null) {
|
|
|
8904
8803
|
// See LICENSE in the project root for license information.
|
|
8905
8804
|
|
|
8906
8805
|
|
|
8907
|
-
/**
|
|
8908
|
-
* Monotonically increasing counter used to give each menu instance a unique
|
|
8909
|
-
* `_menuInstanceId` prefix. Auto-generating the id (rather than using a random
|
|
8910
|
-
* string) keeps option keys deterministic and collision-free across menus.
|
|
8911
|
-
* @private
|
|
8912
|
-
*/
|
|
8913
|
-
let menuInstanceIdCounter = 0;
|
|
8914
|
-
|
|
8915
8806
|
|
|
8916
8807
|
/**
|
|
8917
8808
|
* The `auro-menu` element provides users a way to select from a list of options.
|
|
@@ -8983,8 +8874,9 @@ class AuroMenu extends AuroElement$1 {
|
|
|
8983
8874
|
|
|
8984
8875
|
// Instance properties (non-reactive)
|
|
8985
8876
|
|
|
8986
|
-
|
|
8987
|
-
|
|
8877
|
+
/**
|
|
8878
|
+
* @private
|
|
8879
|
+
*/
|
|
8988
8880
|
Object.assign(this, {
|
|
8989
8881
|
// Root-level menu (true) or a nested submenu (false)
|
|
8990
8882
|
rootMenu: true,
|
|
@@ -8994,21 +8886,6 @@ class AuroMenu extends AuroElement$1 {
|
|
|
8994
8886
|
nestingSpacer: '<span class="nestingSpacer"></span>',
|
|
8995
8887
|
// Loading indicator for slot elements
|
|
8996
8888
|
loadingSlots: null,
|
|
8997
|
-
// Unique id for this menu instance; prefixes every auto-generated option
|
|
8998
|
-
// key so keys never collide across menus in the same document.
|
|
8999
|
-
_menuInstanceId: `menu-${menuInstanceIdCounter}`,
|
|
9000
|
-
// Monotonically increasing counter for option key generation. Never
|
|
9001
|
-
// resets, so a key is never reused within this instance's lifetime.
|
|
9002
|
-
_optionKeyCounter: 0,
|
|
9003
|
-
// Key(s) of the option(s) the user has actively selected. A single string
|
|
9004
|
-
// in single-select, an array in multi-select, undefined when nothing is
|
|
9005
|
-
// user-selected. Used to disambiguate options that share a `value`.
|
|
9006
|
-
_selectedKey: undefined,
|
|
9007
|
-
// True only for the one updated() cycle following a user selection, so
|
|
9008
|
-
// reconciliation trusts `_selectedKey`. A `value` change from a consumer's
|
|
9009
|
-
// direct property assignment leaves this false, dropping the stale key so
|
|
9010
|
-
// reconciliation falls back to first-by-value (see updated()).
|
|
9011
|
-
_valueChangeFromSelection: false,
|
|
9012
8889
|
});
|
|
9013
8890
|
}
|
|
9014
8891
|
|
|
@@ -9228,13 +9105,6 @@ class AuroMenu extends AuroElement$1 {
|
|
|
9228
9105
|
return;
|
|
9229
9106
|
}
|
|
9230
9107
|
|
|
9231
|
-
// A programmatic value set carries no positional intent, so drop any
|
|
9232
|
-
// `_selectedKey` left over from a prior user click. This makes reconciliation
|
|
9233
|
-
// in updated() fall back to first-by-value (single) / value-in-DOM-order
|
|
9234
|
-
// (multi), matching the documented contract for programmatic selection even
|
|
9235
|
-
// when a stale key would still resolve to a duplicate-value option.
|
|
9236
|
-
this._selectedKey = undefined;
|
|
9237
|
-
|
|
9238
9108
|
// `value` is a String property; stringify arrays so attribute reflection and `formattedValue` parsing stay correct.
|
|
9239
9109
|
this.value = Array.isArray(value) ? JSON.stringify(value) : value;
|
|
9240
9110
|
}
|
|
@@ -9282,17 +9152,6 @@ class AuroMenu extends AuroElement$1 {
|
|
|
9282
9152
|
updated(changedProperties) {
|
|
9283
9153
|
super.updated(changedProperties);
|
|
9284
9154
|
|
|
9285
|
-
// Consume the selection-driven flag for THIS cycle up front. Clearing it
|
|
9286
|
-
// unconditionally — not only inside the `value` branch below — prevents it
|
|
9287
|
-
// from lingering `true` when a selection produces a serialized `value`
|
|
9288
|
-
// byte-identical to the current one, in which case Lit schedules no
|
|
9289
|
-
// `value`-change cycle to consume it. A lingering flag would misclassify a
|
|
9290
|
-
// later consumer's programmatic `value` set as selection-driven and keep a
|
|
9291
|
-
// stale `_selectedKey`. The reconcile path below re-sets the instance flag
|
|
9292
|
-
// after this point, so its intentional cross-cycle hand-off still works.
|
|
9293
|
-
const valueChangeFromSelection = this._valueChangeFromSelection;
|
|
9294
|
-
this._valueChangeFromSelection = false;
|
|
9295
|
-
|
|
9296
9155
|
// Single source of truth for 'auroMenu-selectedOption'. Selection handlers
|
|
9297
9156
|
// mutate optionSelected and let Lit's update cycle dispatch here; the prior
|
|
9298
9157
|
// .value comparison missed multi-select array changes and combined with the
|
|
@@ -9316,17 +9175,6 @@ class AuroMenu extends AuroElement$1 {
|
|
|
9316
9175
|
this.initItems();
|
|
9317
9176
|
}
|
|
9318
9177
|
|
|
9319
|
-
// Distinguish a selection-driven `value` change (a user click, which set
|
|
9320
|
-
// the flag in handleSelectState / _sortSelectedByDomOrder) from a
|
|
9321
|
-
// programmatic assignment by a consumer. A programmatic set carries no
|
|
9322
|
-
// positional intent, so drop any leftover `_selectedKey` and let
|
|
9323
|
-
// reconciliation fall back to first-by-value (single) / value-in-DOM-order
|
|
9324
|
-
// (multi) — the same contract selectByValue() guarantees, even when a
|
|
9325
|
-
// stale key would otherwise still resolve to a duplicate-value option.
|
|
9326
|
-
if (!valueChangeFromSelection) {
|
|
9327
|
-
this._selectedKey = undefined;
|
|
9328
|
-
}
|
|
9329
|
-
|
|
9330
9178
|
// Set when reconciliation reassigns `value` below. That reassignment schedules a
|
|
9331
9179
|
// second updated() cycle, so the `event`-attribute dispatch is deferred to that
|
|
9332
9180
|
// cycle to avoid firing option custom events twice on the same selection.
|
|
@@ -9344,55 +9192,19 @@ class AuroMenu extends AuroElement$1 {
|
|
|
9344
9192
|
// Defensive default: `formattedValue` can be undefined for unexpected value types,
|
|
9345
9193
|
// and calling `.includes` on undefined would throw during reconciliation.
|
|
9346
9194
|
const valueArray = this.formattedValue || [];
|
|
9347
|
-
|
|
9348
|
-
// value matching for any values not resolved by key — so pre-selection
|
|
9349
|
-
// and programmatic value sets keep working. Result is DOM-ordered.
|
|
9350
|
-
const matchingOptions = resolveSelectedOptions(this.items, valueArray, this._selectedKey);
|
|
9195
|
+
const matchingOptions = this.items ? this.items.filter((item) => isSelectableByValue(item) && valueArray.includes(item.value)) : [];
|
|
9351
9196
|
newSelected = matchingOptions.length > 0 ? matchingOptions : undefined;
|
|
9352
9197
|
|
|
9353
|
-
// Reconcile `value` with the selectable set.
|
|
9354
|
-
//
|
|
9355
|
-
//
|
|
9356
|
-
//
|
|
9357
|
-
//
|
|
9358
|
-
|
|
9359
|
-
|
|
9360
|
-
|
|
9361
|
-
|
|
9362
|
-
|
|
9363
|
-
// resurface on the next select/deselect.
|
|
9364
|
-
const selectableByValue = new Map();
|
|
9365
|
-
const loadedValues = new Set();
|
|
9366
|
-
if (this.items) {
|
|
9367
|
-
this.items.forEach((item) => {
|
|
9368
|
-
loadedValues.add(item.value);
|
|
9369
|
-
if (isSelectableByValue(item)) {
|
|
9370
|
-
selectableByValue.set(item.value, (selectableByValue.get(item.value) || 0) + 1);
|
|
9371
|
-
}
|
|
9372
|
-
});
|
|
9373
|
-
}
|
|
9374
|
-
|
|
9375
|
-
const reconciled = valueArray.filter((val) => {
|
|
9376
|
-
// Not loaded yet (async preselection) — keep for a later cycle.
|
|
9377
|
-
if (!loadedValues.has(val)) {
|
|
9378
|
-
return true;
|
|
9379
|
-
}
|
|
9380
|
-
// Consume one selectable option per occurrence; drop once exhausted.
|
|
9381
|
-
const remaining = selectableByValue.get(val) || 0;
|
|
9382
|
-
if (remaining > 0) {
|
|
9383
|
-
selectableByValue.set(val, remaining - 1);
|
|
9384
|
-
return true;
|
|
9385
|
-
}
|
|
9386
|
-
return false;
|
|
9387
|
-
});
|
|
9388
|
-
|
|
9389
|
-
if (reconciled.length !== valueArray.length) {
|
|
9390
|
-
// This is an internal correction, not a consumer's programmatic set,
|
|
9391
|
-
// so preserve the selection-driven flag through the re-entrant
|
|
9392
|
-
// updated() cycle it schedules. Otherwise that cycle would treat the
|
|
9393
|
-
// reassignment as programmatic and drop `_selectedKey` mid-cascade,
|
|
9394
|
-
// flipping resolution and looping.
|
|
9395
|
-
this._valueChangeFromSelection = true;
|
|
9198
|
+
// Reconcile `value` with the selectable set. Drop only entries whose option is
|
|
9199
|
+
// loaded but non-selectable (disabled/static) — leaving them would desync `value`
|
|
9200
|
+
// from `optionSelected`, and the toggle handlers rebuild `value` from `formattedValue`,
|
|
9201
|
+
// so the rejected entry would resurface on the next select/deselect. Entries with no
|
|
9202
|
+
// matching item yet are preserved so async preselection still works once options render.
|
|
9203
|
+
const rejectedValues = this.items
|
|
9204
|
+
? this.items.filter((item) => !isSelectableByValue(item) && valueArray.includes(item.value)).map((item) => item.value)
|
|
9205
|
+
: [];
|
|
9206
|
+
if (rejectedValues.length > 0) {
|
|
9207
|
+
const reconciled = valueArray.filter((val) => !rejectedValues.includes(val));
|
|
9396
9208
|
this.value = serializeMultiSelectValue(reconciled);
|
|
9397
9209
|
valueReconciled = true;
|
|
9398
9210
|
}
|
|
@@ -9404,11 +9216,7 @@ class AuroMenu extends AuroElement$1 {
|
|
|
9404
9216
|
// `hidden` is intentionally NOT excluded: the combobox toggles
|
|
9405
9217
|
// `hidden` as its type-ahead filter, so a filtered-out option is
|
|
9406
9218
|
// still a valid programmatic selection.
|
|
9407
|
-
|
|
9408
|
-
// `_selectedKey`) so a click on the second of two options sharing a
|
|
9409
|
-
// `value` resolves back to that exact element instead of the first
|
|
9410
|
-
// value match. Falls back to first-by-value for programmatic sets.
|
|
9411
|
-
const matchingOption = resolveSelectedOption(this.items, this.value, this._selectedKey);
|
|
9219
|
+
const matchingOption = this.items ? this.items.find((item) => isSelectableByValue(item) && item.value === this.value) : undefined;
|
|
9412
9220
|
|
|
9413
9221
|
if (matchingOption) {
|
|
9414
9222
|
newSelected = matchingOption;
|
|
@@ -9636,14 +9444,6 @@ class AuroMenu extends AuroElement$1 {
|
|
|
9636
9444
|
}
|
|
9637
9445
|
});
|
|
9638
9446
|
|
|
9639
|
-
// Assign private keys once items are populated. Only the root menu assigns
|
|
9640
|
-
// keys: its `items` is a deep query that already includes nested submenu
|
|
9641
|
-
// options, so a single pass keys the entire tree. Nested menus skip this
|
|
9642
|
-
// and inherit keys from the root.
|
|
9643
|
-
if (this.rootMenu) {
|
|
9644
|
-
this._assignOptionKeys();
|
|
9645
|
-
}
|
|
9646
|
-
|
|
9647
9447
|
if (this.noCheckmark) {
|
|
9648
9448
|
this.updateItemsState(new Map([
|
|
9649
9449
|
[
|
|
@@ -9660,31 +9460,6 @@ class AuroMenu extends AuroElement$1 {
|
|
|
9660
9460
|
}));
|
|
9661
9461
|
}
|
|
9662
9462
|
|
|
9663
|
-
/**
|
|
9664
|
-
* Assigns a private, auto-generated unique key (`_optionKey`) to each menu
|
|
9665
|
-
* option that does not already have one. Keys are internal state on the
|
|
9666
|
-
* element instance — never reflected as an attribute or exposed publicly —
|
|
9667
|
-
* and let selection tracking distinguish options that share the same `value`.
|
|
9668
|
-
*
|
|
9669
|
-
* The `_optionKey === undefined` guard makes this idempotent: options keep the
|
|
9670
|
-
* key they were first assigned across re-renders and slot changes, and if a
|
|
9671
|
-
* nested menu's lifecycle runs a pass before the root, options simply wait for
|
|
9672
|
-
* the root to key them (or keep whatever key they already hold).
|
|
9673
|
-
* @private
|
|
9674
|
-
*/
|
|
9675
|
-
_assignOptionKeys() {
|
|
9676
|
-
if (!this.items) {
|
|
9677
|
-
return;
|
|
9678
|
-
}
|
|
9679
|
-
|
|
9680
|
-
this.items.forEach((option) => {
|
|
9681
|
-
if (option._optionKey === undefined) {
|
|
9682
|
-
this._optionKeyCounter += 1;
|
|
9683
|
-
option._optionKey = `${this._menuInstanceId}-${this._optionKeyCounter}`;
|
|
9684
|
-
}
|
|
9685
|
-
});
|
|
9686
|
-
}
|
|
9687
|
-
|
|
9688
9463
|
// Logic Methods
|
|
9689
9464
|
|
|
9690
9465
|
/**
|
|
@@ -9694,28 +9469,24 @@ class AuroMenu extends AuroElement$1 {
|
|
|
9694
9469
|
*/
|
|
9695
9470
|
handleSelectState(option) {
|
|
9696
9471
|
if (this.multiSelect) {
|
|
9472
|
+
const currentValue = this.formattedValue || [];
|
|
9697
9473
|
const currentSelected = this.optionSelected || [];
|
|
9698
9474
|
|
|
9475
|
+
if (!currentValue.includes(option.value)) {
|
|
9476
|
+
this.value = serializeMultiSelectValue([
|
|
9477
|
+
...currentValue,
|
|
9478
|
+
option.value
|
|
9479
|
+
]);
|
|
9480
|
+
}
|
|
9699
9481
|
if (!currentSelected.includes(option)) {
|
|
9700
9482
|
this.optionSelected = [
|
|
9701
9483
|
...currentSelected,
|
|
9702
9484
|
option
|
|
9703
9485
|
];
|
|
9704
9486
|
}
|
|
9705
|
-
|
|
9706
|
-
// Re-sort by DOM order and rebuild `_selectedKey`/`value` from the
|
|
9707
|
-
// selected set so display order stays consistent with the menu, not with
|
|
9708
|
-
// click order.
|
|
9709
|
-
this._sortSelectedByDomOrder();
|
|
9710
9487
|
} else {
|
|
9711
9488
|
this.value = option.value;
|
|
9712
9489
|
this.optionSelected = option;
|
|
9713
|
-
// Track the specific option the user selected so the value→option
|
|
9714
|
-
// reconciliation in updated() resolves back to this exact element even
|
|
9715
|
-
// when another option shares the same `value`.
|
|
9716
|
-
this._selectedKey = option._optionKey;
|
|
9717
|
-
// Mark this `value` change as selection-driven so updated() trusts the key.
|
|
9718
|
-
this._valueChangeFromSelection = true;
|
|
9719
9490
|
}
|
|
9720
9491
|
|
|
9721
9492
|
this._index = this.items.indexOf(option);
|
|
@@ -9728,22 +9499,18 @@ class AuroMenu extends AuroElement$1 {
|
|
|
9728
9499
|
*/
|
|
9729
9500
|
handleDeselectState(option) {
|
|
9730
9501
|
if (this.multiSelect) {
|
|
9731
|
-
// Remove this
|
|
9732
|
-
|
|
9733
|
-
|
|
9734
|
-
|
|
9502
|
+
// Remove this option from array; an empty result collapses `value` to undefined.
|
|
9503
|
+
const newFormattedValue = (this.formattedValue || []).filter((val) => val !== option.value);
|
|
9504
|
+
this.value = serializeMultiSelectValue(newFormattedValue);
|
|
9505
|
+
|
|
9506
|
+
this.optionSelected = this.optionSelected.filter((val) => val !== option);
|
|
9735
9507
|
if (this.optionSelected.length === 0) {
|
|
9736
9508
|
this.optionSelected = undefined;
|
|
9737
|
-
this._selectedKey = undefined;
|
|
9738
|
-
this.value = undefined;
|
|
9739
|
-
} else {
|
|
9740
|
-
this._sortSelectedByDomOrder();
|
|
9741
9509
|
}
|
|
9742
9510
|
} else {
|
|
9743
9511
|
// For single-select: Back to undefined when deselected
|
|
9744
9512
|
this.value = undefined;
|
|
9745
9513
|
this.optionSelected = undefined;
|
|
9746
|
-
this._selectedKey = undefined;
|
|
9747
9514
|
}
|
|
9748
9515
|
|
|
9749
9516
|
// Update the index tracking
|
|
@@ -9767,38 +9534,9 @@ class AuroMenu extends AuroElement$1 {
|
|
|
9767
9534
|
clearSelection() {
|
|
9768
9535
|
this.optionSelected = undefined;
|
|
9769
9536
|
this.value = undefined;
|
|
9770
|
-
this._selectedKey = undefined;
|
|
9771
9537
|
this._index = -1;
|
|
9772
9538
|
}
|
|
9773
9539
|
|
|
9774
|
-
/**
|
|
9775
|
-
* Re-sorts the multi-select selection into DOM order and rebuilds the derived
|
|
9776
|
-
* `_selectedKey` and `value` from `optionSelected`. Selection is always stored
|
|
9777
|
-
* and serialized in the order options appear in the menu, never in click
|
|
9778
|
-
* order — so selecting C then A yields `[A, C]`.
|
|
9779
|
-
* @private
|
|
9780
|
-
*/
|
|
9781
|
-
_sortSelectedByDomOrder() {
|
|
9782
|
-
if (!this.multiSelect || !Array.isArray(this.optionSelected) || !this.items) {
|
|
9783
|
-
return;
|
|
9784
|
-
}
|
|
9785
|
-
|
|
9786
|
-
const indexMap = new Map(this.items.map((item, index) => [
|
|
9787
|
-
item,
|
|
9788
|
-
index
|
|
9789
|
-
]));
|
|
9790
|
-
|
|
9791
|
-
// Sort any element no longer in `items` (a stale selection left over from a
|
|
9792
|
-
// dynamic rebuild that the consumer has not cleared) to the END rather than
|
|
9793
|
-
// the front, so it never displaces a live option to the head of the
|
|
9794
|
-
// serialized order. Value reconciliation drops it on the next updated() cycle.
|
|
9795
|
-
this.optionSelected.sort((optionA, optionB) => (indexMap.get(optionA) ?? this.items.length) - (indexMap.get(optionB) ?? this.items.length));
|
|
9796
|
-
this._selectedKey = this.optionSelected.map((option) => option._optionKey);
|
|
9797
|
-
this.value = serializeMultiSelectValue(this.optionSelected.map((option) => option.value));
|
|
9798
|
-
// Mark this `value` change as selection-driven so updated() trusts the keys.
|
|
9799
|
-
this._valueChangeFromSelection = true;
|
|
9800
|
-
}
|
|
9801
|
-
|
|
9802
9540
|
/**
|
|
9803
9541
|
* Resets the menu to its initial state.
|
|
9804
9542
|
* This is the only way to return value to undefined.
|
|
@@ -9808,7 +9546,6 @@ class AuroMenu extends AuroElement$1 {
|
|
|
9808
9546
|
// Reset to undefined - initial state
|
|
9809
9547
|
this.value = undefined;
|
|
9810
9548
|
this.optionSelected = undefined;
|
|
9811
|
-
this._selectedKey = undefined;
|
|
9812
9549
|
this._index = -1;
|
|
9813
9550
|
|
|
9814
9551
|
// Clear active option state so a follow-up open/navigation starts fresh
|
|
@@ -9870,19 +9607,6 @@ class AuroMenu extends AuroElement$1 {
|
|
|
9870
9607
|
this.initItems();
|
|
9871
9608
|
}
|
|
9872
9609
|
|
|
9873
|
-
// Recover `_index` from the highlighted option when it has been reset to -1.
|
|
9874
|
-
// In multi-select, deselecting the last remaining option collapses the value
|
|
9875
|
-
// to undefined, and the updated() reconciliation resets `_index = -1` even
|
|
9876
|
-
// though `optionActive` still points at the highlighted option. Without this,
|
|
9877
|
-
// reading `items[-1]` returns undefined and the re-select no-ops until the
|
|
9878
|
-
// highlight is moved away and back. Mirrors auro-combobox's reconcileMenuIndex.
|
|
9879
|
-
if (this._index < 0 && this.optionActive && this.items) {
|
|
9880
|
-
const activeIndex = this.items.indexOf(this.optionActive);
|
|
9881
|
-
if (activeIndex >= 0) {
|
|
9882
|
-
this._index = activeIndex;
|
|
9883
|
-
}
|
|
9884
|
-
}
|
|
9885
|
-
|
|
9886
9610
|
// Get currently selected menu option based on index
|
|
9887
9611
|
const option = this.items ? this.items[this._index] : undefined;
|
|
9888
9612
|
|
|
@@ -4769,7 +4769,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
|
|
|
4769
4769
|
}
|
|
4770
4770
|
};
|
|
4771
4771
|
|
|
4772
|
-
var formkitVersion$1 = '
|
|
4772
|
+
var formkitVersion$1 = '202608041712';
|
|
4773
4773
|
|
|
4774
4774
|
class AuroElement extends LitElement {
|
|
4775
4775
|
static get properties() {
|
|
@@ -5471,6 +5471,15 @@ class AuroDropdown extends AuroElement {
|
|
|
5471
5471
|
|
|
5472
5472
|
connectedCallback() {
|
|
5473
5473
|
super.connectedCallback();
|
|
5474
|
+
// Re-register trigger event listeners removed by floater.disconnect() in
|
|
5475
|
+
// disconnectedCallback(). Fires when a parent element (e.g. auro-drawer)
|
|
5476
|
+
// moves this element to a new DOM location. firstUpdated() won't re-run,
|
|
5477
|
+
// so without this the trigger click/keydown handlers are permanently gone.
|
|
5478
|
+
// Guard on floater.element so this is a no-op on the initial connect
|
|
5479
|
+
// (before firstUpdated() has called configure()).
|
|
5480
|
+
if (this.floater?.element) {
|
|
5481
|
+
this.floater.configure(this, 'auroDropdown', !this.disableKeyboardHandling);
|
|
5482
|
+
}
|
|
5474
5483
|
}
|
|
5475
5484
|
|
|
5476
5485
|
disconnectedCallback() {
|
|
@@ -6871,7 +6880,7 @@ class AuroHelpText extends LitElement {
|
|
|
6871
6880
|
}
|
|
6872
6881
|
}
|
|
6873
6882
|
|
|
6874
|
-
var formkitVersion = '
|
|
6883
|
+
var formkitVersion = '202608041712';
|
|
6875
6884
|
|
|
6876
6885
|
var styleCss = css`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.body-default{font-size:var(--wcss-body-default-font-size, 1rem);font-weight:var(--wcss-body-default-weight, );line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-default-emphasized{font-size:var(--wcss-body-default-emphasized-font-size, 1rem);font-weight:var(--wcss-body-default-emphasized-weight, );line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);font-weight:var(--wcss-body-lg-weight, );line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg,.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg-emphasized{font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);font-weight:var(--wcss-body-lg-emphasized-weight, );line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, 0.875rem);font-weight:var(--wcss-body-sm-weight, );line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-sm-emphasized{font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);font-weight:var(--wcss-body-sm-emphasized-weight, );line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-size:var(--wcss-body-xs-font-size, 0.75rem);font-weight:var(--wcss-body-xs-weight, );line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs,.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs-emphasized{font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);font-weight:var(--wcss-body-xs-emphasized-weight, );line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-size:var(--wcss-body-2xs-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-weight, );line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs,.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-2xs-emphasized{font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-emphasized-weight, );line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 300);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 300);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}[auro-dropdown]{--ds-auro-dropdown-trigger-border-color: var(--ds-auro-select-border-color);--ds-auro-dropdown-trigger-background-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-container-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-outline-color: var(--ds-auro-select-outline-color)}:host{display:inline-block;text-align:left;vertical-align:top}:host([layout*=emphasized]) [auro-dropdown],:host([layout*=snowflake]) [auro-dropdown]{--ds-auro-select-border-color: transparent}:host([layout*=emphasized]) .mainContent,:host([layout*=snowflake]) .mainContent{text-align:center}.mainContent{position:relative;display:flex;overflow:hidden;flex:1;flex-direction:column;align-items:center;justify-content:center}.valueContainer{max-width:100%}.accents{display:flex;flex-direction:row;align-items:center;justify-content:center}::slotted([slot=typeIcon]){margin-right:var(--ds-size-100, 0.5rem)}.displayValue{display:block}.displayValue:not(.force){display:none}.displayValue:not(.force).hasContent:is(.withValue):not(.hasFocus){display:block}.triggerContent{display:flex;width:100%;box-sizing:border-box;align-items:center;justify-content:center}:host([layout*=emphasized]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-200, 1rem)}:host([layout*=snowflake]) label{padding-block:var(--ds-size-25, 0.125rem)}:host([layout*=classic]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem)}:host([layout*=classic]) .mainContent{align-items:start}:host([layout*=classic]) label{overflow:hidden;cursor:text;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) .value{overflow:hidden;height:auto;text-overflow:ellipsis;white-space:nowrap}label{color:var(--ds-auro-select-label-text-color)}:host(:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]:is([validity]:not([validity=valid]))) [auro-dropdown],:host([appearance=inverse]:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-select-outline-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}#slotHolder{display:none}:host([fluid]){width:100%}:host([disabled]){pointer-events:none;user-select:none}:host([disabled]:not([ondark])) [auro-dropdown],:host([disabled]:not([appearance=inverse])) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([layout*=classic])[disabled][ondark]) [auro-dropdown],:host(:not([layout*=classic])[disabled][appearance=inverse]) [auro-dropdown]{--ds-auro-select-border-color: transparent}`;
|
|
6877
6886
|
|