@vonage/vivid 5.1.0 → 5.2.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/audio-player/definition.cjs +37 -4
- package/audio-player/definition.js +37 -4
- package/audio-player/index.cjs +25 -25
- package/audio-player/index.js +86 -62
- package/bundled/definition13.cjs +2 -2
- package/bundled/definition13.js +4 -4
- package/bundled/definition19.cjs +18 -15
- package/bundled/definition19.js +85 -77
- package/bundled/definition6.cjs +6 -6
- package/bundled/definition6.js +34 -31
- package/bundled/localized.cjs +1 -1
- package/bundled/localized.js +2 -1
- package/bundled/picker-field.template.cjs +18 -13
- package/bundled/picker-field.template.js +44 -36
- package/bundled/text-field.cjs +1 -1
- package/bundled/text-field.js +1 -1
- package/bundled/vivid-element.cjs +1 -1
- package/bundled/vivid-element.js +1 -1
- package/bundled/with-contextual-help.cjs +1 -1
- package/bundled/with-contextual-help.js +17 -7
- package/combobox/definition.cjs +12 -5
- package/combobox/definition.js +12 -5
- package/combobox/index.cjs +15 -11
- package/combobox/index.js +83 -76
- package/custom-elements.json +95 -3
- package/dial-pad/definition.cjs +51 -1
- package/dial-pad/definition.js +52 -2
- package/dial-pad/index.cjs +21 -18
- package/dial-pad/index.js +123 -92
- package/file-picker/definition.cjs +14 -5
- package/file-picker/definition.js +15 -6
- package/file-picker/index.cjs +12 -9
- package/file-picker/index.js +102 -92
- package/lib/audio-player/audio-player.d.ts +4 -0
- package/lib/combobox/combobox.d.ts +483 -66
- package/lib/date-picker/date-picker.d.ts +839 -827
- package/lib/date-range-picker/date-range-picker.d.ts +580 -574
- package/lib/date-time-picker/date-time-picker.d.ts +863 -851
- package/lib/dial-pad/dial-pad.template.d.ts +1 -1
- package/lib/dial-pad/locale.d.ts +1 -0
- package/lib/file-picker/file-picker.d.ts +483 -66
- package/lib/menu/menu.d.ts +1 -0
- package/lib/number-field/number-field.d.ts +1 -0
- package/lib/searchable-select/searchable-select.d.ts +505 -88
- package/lib/select/select.d.ts +470 -53
- package/lib/text-area/text-area.d.ts +1 -0
- package/lib/text-field/text-field.d.ts +1 -0
- package/lib/time-picker/time-picker.d.ts +551 -545
- package/locales/de-DE.cjs +2 -1
- package/locales/de-DE.js +2 -1
- package/locales/en-GB.cjs +2 -1
- package/locales/en-GB.js +2 -1
- package/locales/en-US.cjs +2 -1
- package/locales/en-US.js +2 -1
- package/locales/ja-JP.cjs +2 -1
- package/locales/ja-JP.js +2 -1
- package/locales/zh-CN.cjs +2 -1
- package/locales/zh-CN.js +2 -1
- package/menu/definition.cjs +6 -2
- package/menu/definition.js +7 -3
- package/number-field/definition.cjs +2 -2
- package/number-field/definition.js +3 -3
- package/number-field/index.cjs +9 -9
- package/number-field/index.js +28 -27
- package/package.json +1 -1
- package/searchable-select/definition.cjs +27 -18
- package/searchable-select/definition.js +28 -19
- package/searchable-select/index.cjs +28 -25
- package/searchable-select/index.js +150 -141
- package/select/definition.cjs +14 -6
- package/select/definition.js +14 -6
- package/shared/patterns/form-elements/index.d.ts +1 -0
- package/shared/patterns/form-elements/with-contextual-help.d.ts +1 -0
- package/shared/picker-field/mixins/calendar-picker.d.ts +442 -439
- package/shared/picker-field/mixins/calendar-picker.template.d.ts +442 -439
- package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +584 -578
- package/shared/picker-field/mixins/single-date-picker.d.ts +696 -687
- package/shared/picker-field/mixins/single-value-picker.d.ts +441 -438
- package/shared/picker-field/mixins/time-selection-picker.d.ts +562 -556
- package/shared/picker-field/mixins/time-selection-picker.template.d.ts +551 -545
- package/shared/picker-field/picker-field.d.ts +483 -66
- package/styles/core/all.css +1 -1
- package/styles/core/theme.css +1 -1
- package/styles/core/typography.css +1 -1
- package/styles/tokens/theme-dark.css +4 -4
- package/styles/tokens/theme-light.css +4 -4
- package/styles/tokens/vivid-2-compat.css +1 -1
- package/text-area/definition.cjs +1 -1
- package/text-area/definition.js +1 -1
- package/text-area/index.cjs +1 -1
- package/text-area/index.js +1 -1
- package/text-field/definition.cjs +1 -1
- package/text-field/definition.js +1 -1
- package/unbundled/picker-field.template.cjs +11 -3
- package/unbundled/picker-field.template.js +11 -3
- package/unbundled/text-field.cjs +1 -1
- package/unbundled/text-field.js +1 -1
- package/unbundled/vivid-element.cjs +1 -1
- package/unbundled/vivid-element.js +1 -1
- package/unbundled/with-contextual-help.cjs +11 -0
- package/unbundled/with-contextual-help.js +11 -0
- package/vivid.api.json +30 -0
package/package.json
CHANGED
|
@@ -12,6 +12,7 @@ const fastElement = require('@microsoft/fast-element');
|
|
|
12
12
|
const scrollIntoView = require('../unbundled/scrollIntoView.cjs');
|
|
13
13
|
const delegatesAria = require('../unbundled/delegates-aria.cjs');
|
|
14
14
|
const formAssociated = require('../unbundled/form-associated.cjs');
|
|
15
|
+
const withContextualHelp = require('../unbundled/with-contextual-help.cjs');
|
|
15
16
|
const withErrorText = require('../unbundled/with-error-text.cjs');
|
|
16
17
|
const withSuccessText = require('../unbundled/with-success-text.cjs');
|
|
17
18
|
const formElement = require('../unbundled/form-element.cjs');
|
|
@@ -20,7 +21,7 @@ const localized = require('../unbundled/localized.cjs');
|
|
|
20
21
|
const fastWebUtilities = require('@microsoft/fast-web-utilities');
|
|
21
22
|
const option = require('../unbundled/option.cjs');
|
|
22
23
|
|
|
23
|
-
const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([data-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:not(.disabled) .chevron{cursor:pointer}.disabled .chevron{color:var(--_low-ink-color);cursor:not-allowed}:host(:focus-visible){outline:none}:host{display:inline-block;inline-size:300px;--_low-ink-color: var(--vvd-color-neutral-600)}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.control-wrapper{display:flex;flex-direction:column;gap:4px}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.selection-count{color:var(--_low-ink-color);font:var(--vvd-typography-base)}.fieldset{--_connotation-color-primary: var(--vvd-searchable-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-searchable-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-searchable-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-searchable-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-searchable-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-searchable-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-searchable-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-searchable-select-accent-fierce, var(--vvd-color-neutral-700))}.fieldset{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-500)}.fieldset.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}@media (hover: hover){.fieldset:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-700)}.fieldset:hover:where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}}.fieldset.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-700)}.fieldset.hover:where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.fieldset:disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset:disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset.disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset.disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset.readonly:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.fieldset.readonly:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset.error:where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.fieldset.error:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.fieldset.success:where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.fieldset.success:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.fieldset{display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-block:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}@supports selector(:has(*)){.fieldset:not(.has-highlighted-option):has(input:focus){box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}}@supports not selector(:has(*)){.fieldset:not(.has-highlighted-option):focus-within{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}}:host(:not([shape=pill])) .fieldset{border-radius:8px}:host([shape=pill]) .fieldset{border-radius:24px}.popup-wrapper{position:relative}.content-area{display:flex;overflow:hidden;flex:1;flex-direction:column;gap:8px;min-block-size:24px}.tag-row{display:flex;gap:8px;inline-size:100%}.tag-row.contains-only-input:not(:focus-within){display:contents}.tag-wrapper{overflow:hidden}.tag{max-inline-size:100%}input{box-sizing:border-box;flex:1;border:none;background:none;block-size:24px;font:var(--vvd-typography-base);max-inline-size:100%;min-inline-size:min(100px,40%);outline:none}.contains-only-input input:not(:focus){position:absolute;block-size:0;inline-size:0;min-inline-size:0;opacity:0;pointer-events:none}.listbox{display:flex;flex-direction:column;padding:4px;gap:2px;max-block-size:var(--searchable-select-height, 408px);overflow-y:auto}.empty-message{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-300);font:var(--vvd-typography-base);min-block-size:40px;text-align:center}::part(popup-base){inline-size:max-content;min-inline-size:var(--_searchable-select-fixed-width, 100%)}slot[name=icon]{font-size:20px}.visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}::slotted([data-vvd-component=option][data-highlighted]){border-radius:8px;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}";
|
|
24
|
+
const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([data-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:not(.disabled) .chevron{cursor:pointer}.disabled .chevron{color:var(--_low-ink-color);cursor:not-allowed}:host(:focus-visible){outline:none}:host{display:inline-block;inline-size:300px;--_low-ink-color: var(--vvd-color-neutral-600)}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.control-wrapper{display:flex;flex-direction:column;gap:4px}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.selection-count{color:var(--_low-ink-color);font:var(--vvd-typography-base)}.fieldset{--_connotation-color-primary: var(--vvd-searchable-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-searchable-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-searchable-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-searchable-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-searchable-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-searchable-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-searchable-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-searchable-select-accent-fierce, var(--vvd-color-neutral-700))}.fieldset{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-500)}.fieldset.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}@media (hover: hover){.fieldset:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-700)}.fieldset:hover:where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}}.fieldset.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-700)}.fieldset.hover:where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.fieldset:disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset:disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset.disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset.disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset.readonly:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.fieldset.readonly:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset.error:where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.fieldset.error:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.fieldset.success:where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.fieldset.success:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.fieldset{display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-block:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}@supports selector(:has(*)){.fieldset:not(.has-highlighted-option):has(input:focus){box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}}@supports not selector(:has(*)){.fieldset:not(.has-highlighted-option):focus-within{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}}:host(:not([shape=pill])) .fieldset{border-radius:8px}:host([shape=pill]) .fieldset{border-radius:24px}.popup-wrapper{position:relative}.content-area{display:flex;overflow:hidden;flex:1;flex-direction:column;gap:8px;min-block-size:24px}.tag-row{display:flex;gap:8px;inline-size:100%}.tag-row.contains-only-input:not(:focus-within){display:contents}.tag-wrapper{overflow:hidden}.tag{max-inline-size:100%}input{box-sizing:border-box;flex:1;border:none;background:none;block-size:24px;font:var(--vvd-typography-base);max-inline-size:100%;min-inline-size:min(100px,40%);outline:none}.contains-only-input input:not(:focus){position:absolute;block-size:0;inline-size:0;min-inline-size:0;opacity:0;pointer-events:none}.listbox{display:flex;flex-direction:column;padding:4px;gap:2px;max-block-size:var(--searchable-select-height, 408px);overflow-y:auto}.empty-message{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-300);font:var(--vvd-typography-base);min-block-size:40px;text-align:center}::part(popup-base){inline-size:max-content;min-inline-size:var(--_searchable-select-fixed-width, 100%)}slot[name=icon]{font-size:20px}.visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}::slotted([data-vvd-component=option][data-highlighted]){border-radius:8px;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}.label-wrapper{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:var(--label-wrapper-gap, 8px)}.label-wrapper[hidden]{display:none}.label-wrapper .label{flex:1 1 auto}.label-wrapper slot[name=contextual-help]::slotted([data-vvd-component=contextual-help]){margin-inline-start:auto}";
|
|
24
25
|
|
|
25
26
|
const optionTagStyles = ".base.connotation-cta{--_connotation-color-contrast: var(--vvd-option-tag-cta-contrast, var(--vvd-color-cta-800))}.base:not(.connotation-cta){--_connotation-color-contrast: var(--vvd-option-tag-accent-contrast, var(--vvd-color-neutral-800))}.base{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;background-color:var(--fill-color);block-size:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 1px var(--outline-color);color:var(--text-color);column-gap:8px;font:var(--vvd-typography-base-bold);max-inline-size:100%;padding-inline:8px;user-select:none;vertical-align:middle}.base:not(.disabled){--text-color: var(--_connotation-color-contrast);--fill-color: var(--_connotation-color-soft);--outline-color: transparent}@supports (background-color: color-mix(in srgb,black 50%,white)){.base:not(.disabled){--fill-color: color-mix( in srgb, var(--_connotation-color-contrast), transparent 87.5% )}}.base.disabled{--text-color: var(--vvd-color-neutral-300);--fill-color: var(--vvd-color-neutral-200);--outline-color: transparent}@supports (background-color: color-mix(in srgb,black 50%,white)){.base.disabled{--fill-color: color-mix( in srgb, var(--vvd-color-neutral-800), transparent 87.5% )}}.base:not(.shape-pill){border-radius:4px}.base.shape-pill{border-radius:16px}.label{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis;white-space:nowrap}slot[name=icon]{font-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5);line-height:1}.icon-placeholder{inline-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5)}.remove-button{display:flex;align-items:center;border-radius:inherit;cursor:pointer;outline:none}.disabled .remove-button{pointer-events:none}.remove-button:focus-visible:before{--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));position:absolute;z-index:1;display:block;border-radius:inherit;content:\"\";inset:0;pointer-events:none}";
|
|
26
27
|
|
|
@@ -37,12 +38,14 @@ const TagGapPx = 8;
|
|
|
37
38
|
const InputMinWidthPx = 100;
|
|
38
39
|
const PageSize = 10;
|
|
39
40
|
const isFormAssociatedTryingToSetFormValue = (value) => typeof value === "string";
|
|
40
|
-
class SearchableSelect extends
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
class SearchableSelect extends withContextualHelp.WithContextualHelp(
|
|
42
|
+
mixins.WithFeedback(
|
|
43
|
+
withErrorText.WithErrorText(
|
|
44
|
+
withSuccessText.WithSuccessText(
|
|
45
|
+
formElement.FormElement(
|
|
46
|
+
delegatesAria.DelegatesAria(
|
|
47
|
+
affix.AffixIconWithTrailing(localized.Localized(formAssociated.FormAssociated(vividElement.VividElement)))
|
|
48
|
+
)
|
|
46
49
|
)
|
|
47
50
|
)
|
|
48
51
|
)
|
|
@@ -758,6 +761,12 @@ class SearchableSelect extends mixins.WithFeedback(
|
|
|
758
761
|
}
|
|
759
762
|
}
|
|
760
763
|
}
|
|
764
|
+
/**
|
|
765
|
+
* @internal
|
|
766
|
+
*/
|
|
767
|
+
get _hasSelectionCount() {
|
|
768
|
+
return this.multiple && this.maxSelected && this.maxSelected >= 1;
|
|
769
|
+
}
|
|
761
770
|
#determineInitialValues() {
|
|
762
771
|
return this.initialValues.length ? this.initialValues : this.initialValue ? [this.initialValue] : [];
|
|
763
772
|
}
|
|
@@ -837,7 +846,7 @@ class SearchableSelect extends mixins.WithFeedback(
|
|
|
837
846
|
*/
|
|
838
847
|
_onMouseDown(event) {
|
|
839
848
|
const originalTarget = event.composedPath()[0];
|
|
840
|
-
if (!event.defaultPrevented && originalTarget !== this._input) {
|
|
849
|
+
if (!event.defaultPrevented && originalTarget !== this._input && !this._isFromContextualHelp(event)) {
|
|
841
850
|
this._input.focus();
|
|
842
851
|
return false;
|
|
843
852
|
}
|
|
@@ -1142,18 +1151,18 @@ function setFixedDropdownVarWidth(x) {
|
|
|
1142
1151
|
function renderControl(context) {
|
|
1143
1152
|
const popupTag = context.tagFor(popup_definition.Popup);
|
|
1144
1153
|
return fastElement.html`
|
|
1145
|
-
|
|
1146
|
-
|
|
1154
|
+
<div class="label-wrapper" ?hidden=${(x) => !x.label && !x._hasContextualHelp && !x._hasSelectionCount}>
|
|
1155
|
+
${fastElement.when(
|
|
1156
|
+
(x) => x.label || x._hasSelectionCount,
|
|
1147
1157
|
fastElement.html`
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
)}
|
|
1154
|
-
</div>
|
|
1155
|
-
`
|
|
1158
|
+
<div>
|
|
1159
|
+
${fastElement.when((x) => x.label, renderLabel())}
|
|
1160
|
+
${fastElement.when((x) => x._hasSelectionCount, renderSelectionCount())}
|
|
1161
|
+
</div>
|
|
1162
|
+
`
|
|
1156
1163
|
)}
|
|
1164
|
+
<slot name="contextual-help" ${fastElement.slotted("_contextualHelpSlottedContent")}></slot>
|
|
1165
|
+
</div>
|
|
1157
1166
|
<span aria-live="assertive" aria-relevant="text" class="visually-hidden">
|
|
1158
1167
|
${(x) => x._changeDescription}
|
|
1159
1168
|
</span>
|
|
@@ -4,10 +4,11 @@ import { VwcIconElement as Icon, iconDefinition } from '../icon/definition.js';
|
|
|
4
4
|
import { VwcProgressRingElement as ProgressRing, progressRingDefinition } from '../progress-ring/definition.js';
|
|
5
5
|
import { V as VividElement, c as createRegisterFunction, d as defineVividComponent } from '../unbundled/vivid-element.js';
|
|
6
6
|
import { a as WithFeedback, f as feedbackMessageDefinition } from '../unbundled/mixins.js';
|
|
7
|
-
import { Observable, DOM, attr, nullableNumberConverter, observable, html, when,
|
|
7
|
+
import { Observable, DOM, attr, nullableNumberConverter, observable, html, when, slotted, ref, repeat } from '@microsoft/fast-element';
|
|
8
8
|
import { s as scrollIntoView } from '../unbundled/scrollIntoView.js';
|
|
9
9
|
import { D as DelegatesAria, d as delegateAria } from '../unbundled/delegates-aria.js';
|
|
10
10
|
import { F as FormAssociated } from '../unbundled/form-associated.js';
|
|
11
|
+
import { W as WithContextualHelp } from '../unbundled/with-contextual-help.js';
|
|
11
12
|
import { W as WithErrorText } from '../unbundled/with-error-text.js';
|
|
12
13
|
import { W as WithSuccessText } from '../unbundled/with-success-text.js';
|
|
13
14
|
import { F as FormElement } from '../unbundled/form-element.js';
|
|
@@ -16,7 +17,7 @@ import { L as Localized } from '../unbundled/localized.js';
|
|
|
16
17
|
import { classNames } from '@microsoft/fast-web-utilities';
|
|
17
18
|
import { i as isListboxOption } from '../unbundled/option.js';
|
|
18
19
|
|
|
19
|
-
const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([data-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:not(.disabled) .chevron{cursor:pointer}.disabled .chevron{color:var(--_low-ink-color);cursor:not-allowed}:host(:focus-visible){outline:none}:host{display:inline-block;inline-size:300px;--_low-ink-color: var(--vvd-color-neutral-600)}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.control-wrapper{display:flex;flex-direction:column;gap:4px}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.selection-count{color:var(--_low-ink-color);font:var(--vvd-typography-base)}.fieldset{--_connotation-color-primary: var(--vvd-searchable-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-searchable-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-searchable-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-searchable-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-searchable-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-searchable-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-searchable-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-searchable-select-accent-fierce, var(--vvd-color-neutral-700))}.fieldset{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-500)}.fieldset.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}@media (hover: hover){.fieldset:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-700)}.fieldset:hover:where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}}.fieldset.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-700)}.fieldset.hover:where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.fieldset:disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset:disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset.disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset.disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset.readonly:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.fieldset.readonly:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset.error:where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.fieldset.error:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.fieldset.success:where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.fieldset.success:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.fieldset{display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-block:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}@supports selector(:has(*)){.fieldset:not(.has-highlighted-option):has(input:focus){box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}}@supports not selector(:has(*)){.fieldset:not(.has-highlighted-option):focus-within{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}}:host(:not([shape=pill])) .fieldset{border-radius:8px}:host([shape=pill]) .fieldset{border-radius:24px}.popup-wrapper{position:relative}.content-area{display:flex;overflow:hidden;flex:1;flex-direction:column;gap:8px;min-block-size:24px}.tag-row{display:flex;gap:8px;inline-size:100%}.tag-row.contains-only-input:not(:focus-within){display:contents}.tag-wrapper{overflow:hidden}.tag{max-inline-size:100%}input{box-sizing:border-box;flex:1;border:none;background:none;block-size:24px;font:var(--vvd-typography-base);max-inline-size:100%;min-inline-size:min(100px,40%);outline:none}.contains-only-input input:not(:focus){position:absolute;block-size:0;inline-size:0;min-inline-size:0;opacity:0;pointer-events:none}.listbox{display:flex;flex-direction:column;padding:4px;gap:2px;max-block-size:var(--searchable-select-height, 408px);overflow-y:auto}.empty-message{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-300);font:var(--vvd-typography-base);min-block-size:40px;text-align:center}::part(popup-base){inline-size:max-content;min-inline-size:var(--_searchable-select-fixed-width, 100%)}slot[name=icon]{font-size:20px}.visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}::slotted([data-vvd-component=option][data-highlighted]){border-radius:8px;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}";
|
|
20
|
+
const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([data-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:not(.disabled) .chevron{cursor:pointer}.disabled .chevron{color:var(--_low-ink-color);cursor:not-allowed}:host(:focus-visible){outline:none}:host{display:inline-block;inline-size:300px;--_low-ink-color: var(--vvd-color-neutral-600)}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.control-wrapper{display:flex;flex-direction:column;gap:4px}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.selection-count{color:var(--_low-ink-color);font:var(--vvd-typography-base)}.fieldset{--_connotation-color-primary: var(--vvd-searchable-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-searchable-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-searchable-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-searchable-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-searchable-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-searchable-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-searchable-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-searchable-select-accent-fierce, var(--vvd-color-neutral-700))}.fieldset{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-500)}.fieldset.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}@media (hover: hover){.fieldset:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-700)}.fieldset:hover:where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}}.fieldset.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-700)}.fieldset.hover:where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.fieldset:disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset:disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset.disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset.disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset.readonly:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.fieldset.readonly:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset.error:where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.fieldset.error:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.fieldset.success:where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.fieldset.success:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.fieldset{display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-block:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}@supports selector(:has(*)){.fieldset:not(.has-highlighted-option):has(input:focus){box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}}@supports not selector(:has(*)){.fieldset:not(.has-highlighted-option):focus-within{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}}:host(:not([shape=pill])) .fieldset{border-radius:8px}:host([shape=pill]) .fieldset{border-radius:24px}.popup-wrapper{position:relative}.content-area{display:flex;overflow:hidden;flex:1;flex-direction:column;gap:8px;min-block-size:24px}.tag-row{display:flex;gap:8px;inline-size:100%}.tag-row.contains-only-input:not(:focus-within){display:contents}.tag-wrapper{overflow:hidden}.tag{max-inline-size:100%}input{box-sizing:border-box;flex:1;border:none;background:none;block-size:24px;font:var(--vvd-typography-base);max-inline-size:100%;min-inline-size:min(100px,40%);outline:none}.contains-only-input input:not(:focus){position:absolute;block-size:0;inline-size:0;min-inline-size:0;opacity:0;pointer-events:none}.listbox{display:flex;flex-direction:column;padding:4px;gap:2px;max-block-size:var(--searchable-select-height, 408px);overflow-y:auto}.empty-message{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-300);font:var(--vvd-typography-base);min-block-size:40px;text-align:center}::part(popup-base){inline-size:max-content;min-inline-size:var(--_searchable-select-fixed-width, 100%)}slot[name=icon]{font-size:20px}.visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}::slotted([data-vvd-component=option][data-highlighted]){border-radius:8px;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}.label-wrapper{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:var(--label-wrapper-gap, 8px)}.label-wrapper[hidden]{display:none}.label-wrapper .label{flex:1 1 auto}.label-wrapper slot[name=contextual-help]::slotted([data-vvd-component=contextual-help]){margin-inline-start:auto}";
|
|
20
21
|
|
|
21
22
|
const optionTagStyles = ".base.connotation-cta{--_connotation-color-contrast: var(--vvd-option-tag-cta-contrast, var(--vvd-color-cta-800))}.base:not(.connotation-cta){--_connotation-color-contrast: var(--vvd-option-tag-accent-contrast, var(--vvd-color-neutral-800))}.base{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;background-color:var(--fill-color);block-size:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 1px var(--outline-color);color:var(--text-color);column-gap:8px;font:var(--vvd-typography-base-bold);max-inline-size:100%;padding-inline:8px;user-select:none;vertical-align:middle}.base:not(.disabled){--text-color: var(--_connotation-color-contrast);--fill-color: var(--_connotation-color-soft);--outline-color: transparent}@supports (background-color: color-mix(in srgb,black 50%,white)){.base:not(.disabled){--fill-color: color-mix( in srgb, var(--_connotation-color-contrast), transparent 87.5% )}}.base.disabled{--text-color: var(--vvd-color-neutral-300);--fill-color: var(--vvd-color-neutral-200);--outline-color: transparent}@supports (background-color: color-mix(in srgb,black 50%,white)){.base.disabled{--fill-color: color-mix( in srgb, var(--vvd-color-neutral-800), transparent 87.5% )}}.base:not(.shape-pill){border-radius:4px}.base.shape-pill{border-radius:16px}.label{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis;white-space:nowrap}slot[name=icon]{font-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5);line-height:1}.icon-placeholder{inline-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5)}.remove-button{display:flex;align-items:center;border-radius:inherit;cursor:pointer;outline:none}.disabled .remove-button{pointer-events:none}.remove-button:focus-visible:before{--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));position:absolute;z-index:1;display:block;border-radius:inherit;content:\"\";inset:0;pointer-events:none}";
|
|
22
23
|
|
|
@@ -33,12 +34,14 @@ const TagGapPx = 8;
|
|
|
33
34
|
const InputMinWidthPx = 100;
|
|
34
35
|
const PageSize = 10;
|
|
35
36
|
const isFormAssociatedTryingToSetFormValue = (value) => typeof value === "string";
|
|
36
|
-
class SearchableSelect extends
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
class SearchableSelect extends WithContextualHelp(
|
|
38
|
+
WithFeedback(
|
|
39
|
+
WithErrorText(
|
|
40
|
+
WithSuccessText(
|
|
41
|
+
FormElement(
|
|
42
|
+
DelegatesAria(
|
|
43
|
+
AffixIconWithTrailing(Localized(FormAssociated(VividElement)))
|
|
44
|
+
)
|
|
42
45
|
)
|
|
43
46
|
)
|
|
44
47
|
)
|
|
@@ -754,6 +757,12 @@ class SearchableSelect extends WithFeedback(
|
|
|
754
757
|
}
|
|
755
758
|
}
|
|
756
759
|
}
|
|
760
|
+
/**
|
|
761
|
+
* @internal
|
|
762
|
+
*/
|
|
763
|
+
get _hasSelectionCount() {
|
|
764
|
+
return this.multiple && this.maxSelected && this.maxSelected >= 1;
|
|
765
|
+
}
|
|
757
766
|
#determineInitialValues() {
|
|
758
767
|
return this.initialValues.length ? this.initialValues : this.initialValue ? [this.initialValue] : [];
|
|
759
768
|
}
|
|
@@ -833,7 +842,7 @@ class SearchableSelect extends WithFeedback(
|
|
|
833
842
|
*/
|
|
834
843
|
_onMouseDown(event) {
|
|
835
844
|
const originalTarget = event.composedPath()[0];
|
|
836
|
-
if (!event.defaultPrevented && originalTarget !== this._input) {
|
|
845
|
+
if (!event.defaultPrevented && originalTarget !== this._input && !this._isFromContextualHelp(event)) {
|
|
837
846
|
this._input.focus();
|
|
838
847
|
return false;
|
|
839
848
|
}
|
|
@@ -1138,18 +1147,18 @@ function setFixedDropdownVarWidth(x) {
|
|
|
1138
1147
|
function renderControl(context) {
|
|
1139
1148
|
const popupTag = context.tagFor(Popup);
|
|
1140
1149
|
return html`
|
|
1141
|
-
|
|
1142
|
-
|
|
1150
|
+
<div class="label-wrapper" ?hidden=${(x) => !x.label && !x._hasContextualHelp && !x._hasSelectionCount}>
|
|
1151
|
+
${when(
|
|
1152
|
+
(x) => x.label || x._hasSelectionCount,
|
|
1143
1153
|
html`
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
)}
|
|
1150
|
-
</div>
|
|
1151
|
-
`
|
|
1154
|
+
<div>
|
|
1155
|
+
${when((x) => x.label, renderLabel())}
|
|
1156
|
+
${when((x) => x._hasSelectionCount, renderSelectionCount())}
|
|
1157
|
+
</div>
|
|
1158
|
+
`
|
|
1152
1159
|
)}
|
|
1160
|
+
<slot name="contextual-help" ${slotted("_contextualHelpSlottedContent")}></slot>
|
|
1161
|
+
</div>
|
|
1153
1162
|
<span aria-live="assertive" aria-relevant="text" class="visually-hidden">
|
|
1154
1163
|
${(x) => x._changeDescription}
|
|
1155
1164
|
</span>
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
"use strict";const x=require("../bundled/definition3.cjs"),C=require("../bundled/definition9.cjs"),y=require("../bundled/definition2.cjs"),I=require("../bundled/definition15.cjs"),s=require("../bundled/vivid-element.cjs"),F=require("../bundled/mixins.cjs"),V=require("../bundled/scrollIntoView.cjs"),D=require("../bundled/delegates-aria.cjs"),z=require("../bundled/form-associated.cjs"),E=require("../bundled/with-error-text.cjs"),q=require("../bundled/with-success-text.cjs"),P=require("../bundled/form-element.cjs"),w=require("../bundled/affix.cjs"),R=require("../bundled/localized.cjs"),L=require("../bundled/option.cjs"),u=require("../bundled/when.cjs"),_=require("../bundled/ref.cjs"),M=require("../bundled/slotted.cjs"),$=require("../bundled/class-names.cjs"),m=require("../bundled/repeat.cjs"),A=".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([data-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:not(.disabled) .chevron{cursor:pointer}.disabled .chevron{color:var(--_low-ink-color);cursor:not-allowed}:host(:focus-visible){outline:none}:host{display:inline-block;inline-size:300px;--_low-ink-color: var(--vvd-color-neutral-600)}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.control-wrapper{display:flex;flex-direction:column;gap:4px}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.selection-count{color:var(--_low-ink-color);font:var(--vvd-typography-base)}.fieldset{--_connotation-color-primary: var(--vvd-searchable-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-searchable-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-searchable-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-searchable-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-searchable-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-searchable-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-searchable-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-searchable-select-accent-fierce, var(--vvd-color-neutral-700))}.fieldset{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-500)}.fieldset.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}@media (hover: hover){.fieldset:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-700)}.fieldset:hover:where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}}.fieldset.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-700)}.fieldset.hover:where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.fieldset:disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset:disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset.disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset.disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset.readonly:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.fieldset.readonly:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset.error:where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.fieldset.error:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.fieldset.success:where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.fieldset.success:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.fieldset{display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-block:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}@supports selector(:has(*)){.fieldset:not(.has-highlighted-option):has(input:focus){box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}}@supports not selector(:has(*)){.fieldset:not(.has-highlighted-option):focus-within{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}}:host(:not([shape=pill])) .fieldset{border-radius:8px}:host([shape=pill]) .fieldset{border-radius:24px}.popup-wrapper{position:relative}.content-area{display:flex;overflow:hidden;flex:1;flex-direction:column;gap:8px;min-block-size:24px}.tag-row{display:flex;gap:8px;inline-size:100%}.tag-row.contains-only-input:not(:focus-within){display:contents}.tag-wrapper{overflow:hidden}.tag{max-inline-size:100%}input{box-sizing:border-box;flex:1;border:none;background:none;block-size:24px;font:var(--vvd-typography-base);max-inline-size:100%;min-inline-size:min(100px,40%);outline:none}.contains-only-input input:not(:focus){position:absolute;block-size:0;inline-size:0;min-inline-size:0;opacity:0;pointer-events:none}.listbox{display:flex;flex-direction:column;padding:4px;gap:2px;max-block-size:var(--searchable-select-height, 408px);overflow-y:auto}.empty-message{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-300);font:var(--vvd-typography-base);min-block-size:40px;text-align:center}::part(popup-base){inline-size:max-content;min-inline-size:var(--_searchable-select-fixed-width, 100%)}slot[name=icon]{font-size:20px}.visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}::slotted([data-vvd-component=option][data-highlighted]){border-radius:8px;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}",B='.base.connotation-cta{--_connotation-color-contrast: var(--vvd-option-tag-cta-contrast, var(--vvd-color-cta-800))}.base:not(.connotation-cta){--_connotation-color-contrast: var(--vvd-option-tag-accent-contrast, var(--vvd-color-neutral-800))}.base{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;background-color:var(--fill-color);block-size:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 1px var(--outline-color);color:var(--text-color);column-gap:8px;font:var(--vvd-typography-base-bold);max-inline-size:100%;padding-inline:8px;user-select:none;vertical-align:middle}.base:not(.disabled){--text-color: var(--_connotation-color-contrast);--fill-color: var(--_connotation-color-soft);--outline-color: transparent}@supports (background-color: color-mix(in srgb,black 50%,white)){.base:not(.disabled){--fill-color: color-mix( in srgb, var(--_connotation-color-contrast), transparent 87.5% )}}.base.disabled{--text-color: var(--vvd-color-neutral-300);--fill-color: var(--vvd-color-neutral-200);--outline-color: transparent}@supports (background-color: color-mix(in srgb,black 50%,white)){.base.disabled{--fill-color: color-mix( in srgb, var(--vvd-color-neutral-800), transparent 87.5% )}}.base:not(.shape-pill){border-radius:4px}.base.shape-pill{border-radius:16px}.label{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis;white-space:nowrap}slot[name=icon]{font-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5);line-height:1}.icon-placeholder{inline-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5)}.remove-button{display:flex;align-items:center;border-radius:inherit;cursor:pointer;outline:none}.disabled .remove-button{pointer-events:none}.remove-button:focus-visible:before{--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));position:absolute;z-index:1;display:block;border-radius:inherit;content:"";inset:0;pointer-events:none}';var N=Object.defineProperty,c=(l,t,e,a)=>{for(var i=void 0,n=l.length-1,v;n>=0;n--)(v=l[n])&&(i=v(t,e,i)||i);return i&&N(t,e,i),i};const g=8,W=100,O=10,K=l=>typeof l=="string";class r extends F.WithFeedback(E.WithErrorText(q.WithSuccessText(P.FormElement(D.DelegatesAria(w.AffixIconWithTrailing(R.Localized(z.FormAssociated(s.VividElement)))))))){constructor(){super(...arguments),this.fixedDropdown=!1,this.open=!1,this.multiple=!1,this.externalTags=!1,this.maxLines=null,this.values=[],this.initialValues=[],this._currentSearchText=null,this._areOptionsInitialized=!1,this.#s={handleChange:(t,e)=>{t.selected&&!this.values.includes(t.value)?this.values=[...this.values,t.value]:!t.selected&&this.values.includes(t.value)&&(this.values=this.values.filter(a=>a!==t.value))}},this.#t=new Map,this._filteredOptions=[],this._filteredEnabledOptions=[],this.loading=!1,this._highlightedOptionIndex=null,this._numElidedTags=0,this._tagRows=[],this._lastTagRow=[],this.clearable=!1,this.maxSelected=null,this._slottedDisabledOptions=[],this.proxy=document.createElement("input"),this.setFormValue=(t,e)=>{K(t)||super.setFormValue(t,e)},this._changeDescription="",this.#d=new ResizeObserver(()=>{this.#u()})}openChanged(){this.open||this.#e(null)}valuesChanged(){if(this._areOptionsInitialized){if(!this.multiple&&this.values.length>1){this.values=[this.values[0]];return}if(this.values.some(t=>!this.#h(t))){this.values=this.values.filter(t=>this.#h(t));return}this.value=this.values.length?this.values[0]:"",this.#c(),this.#_(),this.$fastController.isConnected&&this.#u(),this.#g()}}#a(t){this.values=t,this.$emit("change",void 0,{bubbles:!1}),this.$emit("input",void 0,{bubbles:!1})}#b(t){const e=new Set(this.values),a=new Set(t);this.values=[...this.values].filter(i=>a.has(i)).concat([...t].filter(i=>!e.has(i)))}initialValuesChanged(){this.dirtyValue||(this.values=this.initialValues,this.dirtyValue=!1)}#h(t){return this._slottedOptions.some(e=>e.value===t)}valueChanged(t,e){if(super.valueChanged(t,e),!this._areOptionsInitialized)return;const a=this._slottedOptions.some(i=>i.value===e);this.values[0]!==e&&(this.values=a?[e]:[])}get selectedIndex(){return this.values.length?this._slottedOptions.findIndex(t=>t.value===this.values[0]):-1}set selectedIndex(t){this.value=this._slottedOptions[t]?.value??""}get options(){return[...this._slottedOptions]}get selectedOptions(){return this._slottedOptions.filter(t=>this.values.includes(t.value))}_currentSearchTextChanged(){this.#o(),this.$emit("search-text-change",void 0,{bubbles:!1,composed:!1})}get searchText(){return this._currentSearchText??""}get _inputValue(){return this._currentSearchText??(!this.multiple&&this.value!==""?this.#k(this.value)??"":"")}_onInputInput(t){this._currentSearchText=t.target.value}_onInputFocus(t){this.#o()}_onInputBlur(t){this.open=!1,this._currentSearchText=null,this._changeDescription=""}_onInputKeydown(t){if(t.ctrlKey||t.shiftKey)return!0;switch(t.key){case"Enter":return this.#x(),this._inputValue===""&&(this.open=!this.open),!1;case"Escape":this.open=!1;break;case"Home":if(!this.open){this.open=!0;break}return this.#w(),!1;case"End":if(!this.open){this.open=!0;break}return this.#y(),!1;case"PageUp":if(!this.open){this.open=!0;break}return this.#$(),!1;case"PageDown":if(!this.open){this.open=!0;break}return this.#T(),!1;case"ArrowUp":if(!this.open){this.open=!0;break}return this.#O(),!1;case"ArrowDown":if(!this.open){this.open=!0;break}return this.#S(),!1;case"ArrowLeft":return this.multiple&&this._inputValue===""&&this.values.length&&!this.externalTags?(this.#i(this.#r(this.values.length)),!1):!0;case"Backspace":return this.multiple&&this._inputValue===""&&this.values.length?(this._onTagRemoved(this.values[this.values.length-1]),!1):!0;default:return this.open||(this.open=!0),!0}return!0}_slottedOptionsChanged(t,e){const a=!!this.querySelectorAll(":not([slot])").length;if(!e.length&&a)return;if(this._areOptionsInitialized=!0,t){this._slottedDisabledOptions=[];for(const n of t)s.Observable.getNotifier(n).unsubscribe(this.#s,"selected")}if(e)for(const n of e)n._displayCheckmark=!0,s.Observable.getNotifier(n).subscribe(this.#s,"selected");const i=[];for(const n of this._slottedOptions)(n.selected||n.value===this.value||this.values.includes(n.value))&&i.push(n.value),n.disabled&&this._slottedDisabledOptions.push(n);this.#b(i),this.#o(),this.#c()}#s;#_(){for(const t of this._slottedOptions)t.selected=this.values.includes(t.value),this.#m(t)}#p(t){const e=t.value;let a,i=!1;const n=!this.values.includes(e);this.multiple?(n?a=[...this.values,e]:a=this.values.filter(p=>p!==e),i=!0):(n?(a=[e],i=!0):a=[],this.open=!1),this.#a(a);const v=n?this.locale.searchableSelect.optionSelectedMessage(t._getAccessibleName()):this.locale.searchableSelect.optionDeselectedMessage(t._getAccessibleName()),h=this.multiple&&this.maxSelected&&this.maxSelected>=1?this.locale.searchableSelect.maxSelectedMessage(this.values.length,this.maxSelected):"";this._changeDescription=`${v} ${h}`,i&&(this._currentSearchText=null)}#t;#l(t){return t.querySelector('[slot="tag-icon"]')}_tagIconSlotName(t){return`_tag-icon-${this.values.indexOf(t)}`}#m(t){if(t.selected&&this.#l(t)){let e=this.#t.get(t);e||(e=this.#l(t).cloneNode(!0),this.#t.set(t,e)),e.slot=this._tagIconSlotName(t.value),this.appendChild(e)}else{const e=this.#t.get(t);e&&(e.remove(),this.#t.delete(t))}}optionFilterChanged(){this.#o()}loadingChanged(t,e){this._changeDescription=this.locale.searchableSelect.loadingOptionsMessage,t&&!e&&(this._changeDescription="")}#o(){const t=[],e=this.optionFilter??((a,i)=>a.text.toLowerCase().includes(i.toLowerCase()));for(const a of this._slottedOptions??[]){a._vvdSearchText=this.searchText;const i=!this.searchText||e(a,this.searchText);a._isNotMatching=!i,!a.hidden&&i&&t.push(a)}this.#e(null),this._filteredOptions=t,this._filteredEnabledOptions=t.filter(a=>!a.disabled)}#e(t){if(typeof this._highlightedOptionIndex=="number"){const e=this._filteredEnabledOptions[this._highlightedOptionIndex];e._highlighted=!1,e.removeAttribute("data-highlighted")}if(typeof t=="number"&&(this._filteredEnabledOptions.length?t=Math.max(0,Math.min(this._filteredEnabledOptions.length-1,t)):t=null),this._highlightedOptionIndex=t,typeof this._highlightedOptionIndex=="number"){const e=this._filteredEnabledOptions[this._highlightedOptionIndex];e._highlighted=!0,e.setAttribute("data-highlighted",""),V.scrollIntoView(e,this._listbox,"nearest"),this._changeDescription=this.locale.searchableSelect.optionFocusedMessage(e._getAccessibleName(),this._highlightedOptionIndex+1,this._filteredEnabledOptions.length,e.selected)}}#x(){this._highlightedOptionIndex!==null&&this.#p(this._filteredEnabledOptions[this._highlightedOptionIndex])}#w(){this.#e(0)}#y(){this.#e(this._filteredEnabledOptions.length-1)}#$(){this.#e((this._highlightedOptionIndex??this._filteredEnabledOptions.length)-O)}#T(){this.#e((this._highlightedOptionIndex??-1)+O)}#O(){this.#e((this._highlightedOptionIndex??this._filteredEnabledOptions.length)-1)}#S(){this.#e((this._highlightedOptionIndex??-1)+1)}_tagLabelForValue(t){return this._slottedOptions.find(a=>a.value===t).label}_tagConnotationForValue(t){return this._slottedOptions.find(a=>a.value===t).tagConnotation}_isTagDisabled(t){const e=this._slottedOptions.find(a=>a.value===t);return this.disabled||e.disabled}#k(t){return this._slottedOptions?.find(a=>a.value===t)?.label}#n(t,e,a){const i=document.createElement(this._optionTagTagName);i.label=t,i.removable=e,i.style.cssText="position: absolute; visibility: hidden;",i.hasIconPlaceholder=a,this.shadowRoot.appendChild(i);const n=i.getBoundingClientRect().width;return i.remove(),n}#u(){if(!this.multiple){this._numElidedTags=0,this._tagRows=[],this._lastTagRow=[];return}if(this.externalTags){this._numElidedTags=this.values.length,this._tagRows=[],this._lastTagRow=[];return}const t=this._contentArea.getBoundingClientRect().width,e=[[]];let a=0,i=W,n;for(n=this.values.length-1;n>=0;n--){const h=this.maxLines&&a===this.maxLines-1,p=this.#n(this._tagLabelForValue(this.values[n]),!0,this.#l(this.selectedOptions[n])!==null),o={value:this.values[n],width:p};let d=0;if(h){const T=n;T&&(d=g+this.#n(T.toString(),!1,!1))}if(i+g+p+d>t){if(h)if(n===this.values.length-1)e[a].unshift(o),i+=g+p;else break;else e.push([]),a++,e[a].unshift(o),i=p;continue}e[a].unshift(o),i+=g+p}this._numElidedTags=n+1,e.reverse();for(let h=0;h<e.length-1;h++){let p=e[h].map(o=>o.width).reduce((o,d)=>o+d,0)+(e[h].length-1)*g;for(h===0&&this._numElidedTags&&(p+=g+this.#n(this._numElidedTags.toString(),!1,!1));e[h+1].length&&p+g+e[h+1][0].width<=t;){const o=e[h+1].shift();e[h].push(o),p+=g+o.width}}const v=e.map(h=>h.map(p=>p.value));this._tagRows=v.slice(0,-1),this._lastTagRow=v.slice(-1)[0]}_onTagRemoved(t){this.#a(this.values.filter(e=>e!==t)),this.#o()}_onTagKeydown(t){const e=parseInt(t.target.dataset.index);switch(t.key){case"Backspace":case"Delete":case"Enter":case" ":{this._onTagRemoved(this.values[e]),s.DOM.processUpdates(),this.#i(this.#C(e));break}case"ArrowLeft":this.#i(this.#r(e)??e);break;case"ArrowRight":this.#i(this.#v(e));break}return!0}#i(t){t===null?this._input.focus():this.shadowRoot.querySelector(`[data-index="${t}"]`)?.focus()}#r(t){if(!this.values.length)return null;for(let e=t-1;e>=0;e--)if(!this._isTagDisabled(this.values[e]))return e;return null}#v(t){if(!this.values.length)return null;for(let e=t+1;e<this.values.length;e++)if(!this._isTagDisabled(this.values[e]))return e;return null}#C(t){return this.#v(t-1)??this.#r(t)}_onListboxClick(t){if(this.disabled)return;const e=t.target.closest("option,[role=option],[data-vvd-component=option]");e&&!e.disabled&&this.#p(e)}get _shouldShowClearButton(){return this.clearable&&this.values.length>0}_onClearButtonClick(){this.#a(this.selectedOptions.filter(t=>t.disabled).map(t=>t.value))}maxSelectedChanged(){this.#c()}#c(){if(!this.multiple||!this._slottedOptions||typeof this.maxSelected!="number"||this.maxSelected<=0)return;const t=this._slottedOptions.filter(e=>!this._slottedDisabledOptions.includes(e));if(this.values.length>=this.maxSelected){const e=t.filter(a=>!this.selectedOptions.includes(a));for(const a of e)a.disabled=!0}else for(const e of t)e.disabled=!1}#f(){return this.initialValues.length?this.initialValues:this.initialValue?[this.initialValue]:[]}nameChanged(t,e){super.nameChanged(t,e),this.#g()}#g(){if(!this.name)this.setFormValue(null);else{const t=new FormData;for(const e of this.values)t.append(this.name,e);this.setFormValue(t)}}formResetCallback(){super.formResetCallback(),this.#a(this.#f())}#d;_onFieldsetClick(t){this.disabled||t.defaultPrevented||(this._input.focus(),this.open=!0)}_onChevronClick(){return this.open?(this.open=!1,!1):!0}connectedCallback(){super.connectedCallback(),this.values.length||(this.values=this.#f()),this.#d.observe(this._contentArea)}disconnectedCallback(){super.disconnectedCallback(),this.#d.disconnect()}validate(){super.validate(this._input??void 0)}focus(t){this._input?.focus(t)}_onMouseDown(t){const e=t.composedPath()[0];return!t.defaultPrevented&&e!==this._input?(this._input.focus(),!1):!0}}c([s.attr],r.prototype,"appearance");c([s.attr],r.prototype,"shape");c([s.attr({mode:"boolean",attribute:"fixed-dropdown"})],r.prototype,"fixedDropdown");c([s.attr],r.prototype,"placeholder");c([s.attr({mode:"boolean"})],r.prototype,"open");c([s.attr({mode:"boolean"})],r.prototype,"multiple");c([s.attr({attribute:"external-tags",mode:"boolean"})],r.prototype,"externalTags");c([s.attr({attribute:"max-lines",converter:s.nullableNumberConverter})],r.prototype,"maxLines");c([s.observable],r.prototype,"values");c([s.observable],r.prototype,"initialValues");c([s.observable],r.prototype,"_input");c([s.observable],r.prototype,"_currentSearchText");c([s.observable],r.prototype,"_slottedOptions");c([s.observable],r.prototype,"optionFilter");c([s.observable],r.prototype,"_filteredOptions");c([s.observable],r.prototype,"_filteredEnabledOptions");c([s.attr({mode:"boolean"})],r.prototype,"loading");c([s.observable],r.prototype,"_highlightedOptionIndex");c([s.observable],r.prototype,"_contentArea");c([s.observable],r.prototype,"_numElidedTags");c([s.observable],r.prototype,"_tagRows");c([s.observable],r.prototype,"_lastTagRow");c([s.observable],r.prototype,"_listbox");c([s.attr({mode:"boolean"})],r.prototype,"clearable");c([s.attr({attribute:"max-selected",converter:s.nullableNumberConverter})],r.prototype,"maxSelected");c([s.observable],r.prototype,"_slottedDisabledOptions");c([s.observable],r.prototype,"_changeDescription");c([s.observable],r.prototype,"_anchor");var H=Object.defineProperty,b=(l,t,e,a)=>{for(var i=void 0,n=l.length-1,v;n>=0;n--)(v=l[n])&&(i=v(t,e,i)||i);return i&&H(t,e,i),i};class f extends R.Localized(s.VividElement){constructor(){super(...arguments),this.removable=!1,this.disabled=!1,this.hasIconPlaceholder=!1}_onClickRemove(){this.$emit("remove",void 0,{bubbles:!1})}}b([s.attr],f.prototype,"shape");b([s.observable],f.prototype,"connotation");b([s.attr],f.prototype,"label");b([s.attr({mode:"boolean"})],f.prototype,"removable");b([s.attr({mode:"boolean"})],f.prototype,"disabled");b([s.observable],f.prototype,"hasIconPlaceholder");const j=l=>$.classNames(["disabled",l.disabled],[`appearance-${l.appearance}`,!!l.appearance],[`shape-${l.shape}`,!!l.shape],["error",!!l.errorValidationMessage],["success",!!l.successText],["has-highlighted-option",l._highlightedOptionIndex!==null]);function U(){return s.html`
|
|
1
|
+
"use strict";const x=require("../bundled/definition3.cjs"),I=require("../bundled/definition9.cjs"),y=require("../bundled/definition2.cjs"),F=require("../bundled/definition15.cjs"),s=require("../bundled/vivid-element.cjs"),D=require("../bundled/mixins.cjs"),z=require("../bundled/scrollIntoView.cjs"),R=require("../bundled/delegates-aria.cjs"),E=require("../bundled/form-associated.cjs"),q=require("../bundled/with-contextual-help.cjs"),P=require("../bundled/with-error-text.cjs"),L=require("../bundled/with-success-text.cjs"),M=require("../bundled/form-element.cjs"),w=require("../bundled/affix.cjs"),V=require("../bundled/localized.cjs"),A=require("../bundled/option.cjs"),u=require("../bundled/when.cjs"),O=require("../bundled/slotted.cjs"),_=require("../bundled/ref.cjs"),$=require("../bundled/class-names.cjs"),m=require("../bundled/repeat.cjs"),B=".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([data-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:not(.disabled) .chevron{cursor:pointer}.disabled .chevron{color:var(--_low-ink-color);cursor:not-allowed}:host(:focus-visible){outline:none}:host{display:inline-block;inline-size:300px;--_low-ink-color: var(--vvd-color-neutral-600)}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.control-wrapper{display:flex;flex-direction:column;gap:4px}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.selection-count{color:var(--_low-ink-color);font:var(--vvd-typography-base)}.fieldset{--_connotation-color-primary: var(--vvd-searchable-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-searchable-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-searchable-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-searchable-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-searchable-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-searchable-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-searchable-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-searchable-select-accent-fierce, var(--vvd-color-neutral-700))}.fieldset{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-500)}.fieldset.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}@media (hover: hover){.fieldset:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-700)}.fieldset:hover:where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}}.fieldset.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-700)}.fieldset.hover:where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.fieldset:disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset:disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset.disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset.disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset.readonly:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.fieldset.readonly:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset.error:where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.fieldset.error:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.fieldset.success:where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.fieldset.success:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.fieldset{display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-block:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}@supports selector(:has(*)){.fieldset:not(.has-highlighted-option):has(input:focus){box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}}@supports not selector(:has(*)){.fieldset:not(.has-highlighted-option):focus-within{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}}:host(:not([shape=pill])) .fieldset{border-radius:8px}:host([shape=pill]) .fieldset{border-radius:24px}.popup-wrapper{position:relative}.content-area{display:flex;overflow:hidden;flex:1;flex-direction:column;gap:8px;min-block-size:24px}.tag-row{display:flex;gap:8px;inline-size:100%}.tag-row.contains-only-input:not(:focus-within){display:contents}.tag-wrapper{overflow:hidden}.tag{max-inline-size:100%}input{box-sizing:border-box;flex:1;border:none;background:none;block-size:24px;font:var(--vvd-typography-base);max-inline-size:100%;min-inline-size:min(100px,40%);outline:none}.contains-only-input input:not(:focus){position:absolute;block-size:0;inline-size:0;min-inline-size:0;opacity:0;pointer-events:none}.listbox{display:flex;flex-direction:column;padding:4px;gap:2px;max-block-size:var(--searchable-select-height, 408px);overflow-y:auto}.empty-message{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-300);font:var(--vvd-typography-base);min-block-size:40px;text-align:center}::part(popup-base){inline-size:max-content;min-inline-size:var(--_searchable-select-fixed-width, 100%)}slot[name=icon]{font-size:20px}.visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}::slotted([data-vvd-component=option][data-highlighted]){border-radius:8px;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}.label-wrapper{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:var(--label-wrapper-gap, 8px)}.label-wrapper[hidden]{display:none}.label-wrapper .label{flex:1 1 auto}.label-wrapper slot[name=contextual-help]::slotted([data-vvd-component=contextual-help]){margin-inline-start:auto}",N='.base.connotation-cta{--_connotation-color-contrast: var(--vvd-option-tag-cta-contrast, var(--vvd-color-cta-800))}.base:not(.connotation-cta){--_connotation-color-contrast: var(--vvd-option-tag-accent-contrast, var(--vvd-color-neutral-800))}.base{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;background-color:var(--fill-color);block-size:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 1px var(--outline-color);color:var(--text-color);column-gap:8px;font:var(--vvd-typography-base-bold);max-inline-size:100%;padding-inline:8px;user-select:none;vertical-align:middle}.base:not(.disabled){--text-color: var(--_connotation-color-contrast);--fill-color: var(--_connotation-color-soft);--outline-color: transparent}@supports (background-color: color-mix(in srgb,black 50%,white)){.base:not(.disabled){--fill-color: color-mix( in srgb, var(--_connotation-color-contrast), transparent 87.5% )}}.base.disabled{--text-color: var(--vvd-color-neutral-300);--fill-color: var(--vvd-color-neutral-200);--outline-color: transparent}@supports (background-color: color-mix(in srgb,black 50%,white)){.base.disabled{--fill-color: color-mix( in srgb, var(--vvd-color-neutral-800), transparent 87.5% )}}.base:not(.shape-pill){border-radius:4px}.base.shape-pill{border-radius:16px}.label{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis;white-space:nowrap}slot[name=icon]{font-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5);line-height:1}.icon-placeholder{inline-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5)}.remove-button{display:flex;align-items:center;border-radius:inherit;cursor:pointer;outline:none}.disabled .remove-button{pointer-events:none}.remove-button:focus-visible:before{--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));position:absolute;z-index:1;display:block;border-radius:inherit;content:"";inset:0;pointer-events:none}';var W=Object.defineProperty,c=(l,t,e,a)=>{for(var i=void 0,n=l.length-1,v;n>=0;n--)(v=l[n])&&(i=v(t,e,i)||i);return i&&W(t,e,i),i};const g=8,H=100,S=10,K=l=>typeof l=="string";class r extends q.WithContextualHelp(D.WithFeedback(P.WithErrorText(L.WithSuccessText(M.FormElement(R.DelegatesAria(w.AffixIconWithTrailing(V.Localized(E.FormAssociated(s.VividElement))))))))){constructor(){super(...arguments),this.fixedDropdown=!1,this.open=!1,this.multiple=!1,this.externalTags=!1,this.maxLines=null,this.values=[],this.initialValues=[],this._currentSearchText=null,this._areOptionsInitialized=!1,this.#s={handleChange:(t,e)=>{t.selected&&!this.values.includes(t.value)?this.values=[...this.values,t.value]:!t.selected&&this.values.includes(t.value)&&(this.values=this.values.filter(a=>a!==t.value))}},this.#t=new Map,this._filteredOptions=[],this._filteredEnabledOptions=[],this.loading=!1,this._highlightedOptionIndex=null,this._numElidedTags=0,this._tagRows=[],this._lastTagRow=[],this.clearable=!1,this.maxSelected=null,this._slottedDisabledOptions=[],this.proxy=document.createElement("input"),this.setFormValue=(t,e)=>{K(t)||super.setFormValue(t,e)},this._changeDescription="",this.#d=new ResizeObserver(()=>{this.#u()})}openChanged(){this.open||this.#e(null)}valuesChanged(){if(this._areOptionsInitialized){if(!this.multiple&&this.values.length>1){this.values=[this.values[0]];return}if(this.values.some(t=>!this.#p(t))){this.values=this.values.filter(t=>this.#p(t));return}this.value=this.values.length?this.values[0]:"",this.#c(),this.#_(),this.$fastController.isConnected&&this.#u(),this.#g()}}#a(t){this.values=t,this.$emit("change",void 0,{bubbles:!1}),this.$emit("input",void 0,{bubbles:!1})}#b(t){const e=new Set(this.values),a=new Set(t);this.values=[...this.values].filter(i=>a.has(i)).concat([...t].filter(i=>!e.has(i)))}initialValuesChanged(){this.dirtyValue||(this.values=this.initialValues,this.dirtyValue=!1)}#p(t){return this._slottedOptions.some(e=>e.value===t)}valueChanged(t,e){if(super.valueChanged(t,e),!this._areOptionsInitialized)return;const a=this._slottedOptions.some(i=>i.value===e);this.values[0]!==e&&(this.values=a?[e]:[])}get selectedIndex(){return this.values.length?this._slottedOptions.findIndex(t=>t.value===this.values[0]):-1}set selectedIndex(t){this.value=this._slottedOptions[t]?.value??""}get options(){return[...this._slottedOptions]}get selectedOptions(){return this._slottedOptions.filter(t=>this.values.includes(t.value))}_currentSearchTextChanged(){this.#o(),this.$emit("search-text-change",void 0,{bubbles:!1,composed:!1})}get searchText(){return this._currentSearchText??""}get _inputValue(){return this._currentSearchText??(!this.multiple&&this.value!==""?this.#k(this.value)??"":"")}_onInputInput(t){this._currentSearchText=t.target.value}_onInputFocus(t){this.#o()}_onInputBlur(t){this.open=!1,this._currentSearchText=null,this._changeDescription=""}_onInputKeydown(t){if(t.ctrlKey||t.shiftKey)return!0;switch(t.key){case"Enter":return this.#x(),this._inputValue===""&&(this.open=!this.open),!1;case"Escape":this.open=!1;break;case"Home":if(!this.open){this.open=!0;break}return this.#w(),!1;case"End":if(!this.open){this.open=!0;break}return this.#y(),!1;case"PageUp":if(!this.open){this.open=!0;break}return this.#$(),!1;case"PageDown":if(!this.open){this.open=!0;break}return this.#T(),!1;case"ArrowUp":if(!this.open){this.open=!0;break}return this.#O(),!1;case"ArrowDown":if(!this.open){this.open=!0;break}return this.#S(),!1;case"ArrowLeft":return this.multiple&&this._inputValue===""&&this.values.length&&!this.externalTags?(this.#i(this.#r(this.values.length)),!1):!0;case"Backspace":return this.multiple&&this._inputValue===""&&this.values.length?(this._onTagRemoved(this.values[this.values.length-1]),!1):!0;default:return this.open||(this.open=!0),!0}return!0}_slottedOptionsChanged(t,e){const a=!!this.querySelectorAll(":not([slot])").length;if(!e.length&&a)return;if(this._areOptionsInitialized=!0,t){this._slottedDisabledOptions=[];for(const n of t)s.Observable.getNotifier(n).unsubscribe(this.#s,"selected")}if(e)for(const n of e)n._displayCheckmark=!0,s.Observable.getNotifier(n).subscribe(this.#s,"selected");const i=[];for(const n of this._slottedOptions)(n.selected||n.value===this.value||this.values.includes(n.value))&&i.push(n.value),n.disabled&&this._slottedDisabledOptions.push(n);this.#b(i),this.#o(),this.#c()}#s;#_(){for(const t of this._slottedOptions)t.selected=this.values.includes(t.value),this.#m(t)}#h(t){const e=t.value;let a,i=!1;const n=!this.values.includes(e);this.multiple?(n?a=[...this.values,e]:a=this.values.filter(h=>h!==e),i=!0):(n?(a=[e],i=!0):a=[],this.open=!1),this.#a(a);const v=n?this.locale.searchableSelect.optionSelectedMessage(t._getAccessibleName()):this.locale.searchableSelect.optionDeselectedMessage(t._getAccessibleName()),p=this.multiple&&this.maxSelected&&this.maxSelected>=1?this.locale.searchableSelect.maxSelectedMessage(this.values.length,this.maxSelected):"";this._changeDescription=`${v} ${p}`,i&&(this._currentSearchText=null)}#t;#l(t){return t.querySelector('[slot="tag-icon"]')}_tagIconSlotName(t){return`_tag-icon-${this.values.indexOf(t)}`}#m(t){if(t.selected&&this.#l(t)){let e=this.#t.get(t);e||(e=this.#l(t).cloneNode(!0),this.#t.set(t,e)),e.slot=this._tagIconSlotName(t.value),this.appendChild(e)}else{const e=this.#t.get(t);e&&(e.remove(),this.#t.delete(t))}}optionFilterChanged(){this.#o()}loadingChanged(t,e){this._changeDescription=this.locale.searchableSelect.loadingOptionsMessage,t&&!e&&(this._changeDescription="")}#o(){const t=[],e=this.optionFilter??((a,i)=>a.text.toLowerCase().includes(i.toLowerCase()));for(const a of this._slottedOptions??[]){a._vvdSearchText=this.searchText;const i=!this.searchText||e(a,this.searchText);a._isNotMatching=!i,!a.hidden&&i&&t.push(a)}this.#e(null),this._filteredOptions=t,this._filteredEnabledOptions=t.filter(a=>!a.disabled)}#e(t){if(typeof this._highlightedOptionIndex=="number"){const e=this._filteredEnabledOptions[this._highlightedOptionIndex];e._highlighted=!1,e.removeAttribute("data-highlighted")}if(typeof t=="number"&&(this._filteredEnabledOptions.length?t=Math.max(0,Math.min(this._filteredEnabledOptions.length-1,t)):t=null),this._highlightedOptionIndex=t,typeof this._highlightedOptionIndex=="number"){const e=this._filteredEnabledOptions[this._highlightedOptionIndex];e._highlighted=!0,e.setAttribute("data-highlighted",""),z.scrollIntoView(e,this._listbox,"nearest"),this._changeDescription=this.locale.searchableSelect.optionFocusedMessage(e._getAccessibleName(),this._highlightedOptionIndex+1,this._filteredEnabledOptions.length,e.selected)}}#x(){this._highlightedOptionIndex!==null&&this.#h(this._filteredEnabledOptions[this._highlightedOptionIndex])}#w(){this.#e(0)}#y(){this.#e(this._filteredEnabledOptions.length-1)}#$(){this.#e((this._highlightedOptionIndex??this._filteredEnabledOptions.length)-S)}#T(){this.#e((this._highlightedOptionIndex??-1)+S)}#O(){this.#e((this._highlightedOptionIndex??this._filteredEnabledOptions.length)-1)}#S(){this.#e((this._highlightedOptionIndex??-1)+1)}_tagLabelForValue(t){return this._slottedOptions.find(a=>a.value===t).label}_tagConnotationForValue(t){return this._slottedOptions.find(a=>a.value===t).tagConnotation}_isTagDisabled(t){const e=this._slottedOptions.find(a=>a.value===t);return this.disabled||e.disabled}#k(t){return this._slottedOptions?.find(a=>a.value===t)?.label}#n(t,e,a){const i=document.createElement(this._optionTagTagName);i.label=t,i.removable=e,i.style.cssText="position: absolute; visibility: hidden;",i.hasIconPlaceholder=a,this.shadowRoot.appendChild(i);const n=i.getBoundingClientRect().width;return i.remove(),n}#u(){if(!this.multiple){this._numElidedTags=0,this._tagRows=[],this._lastTagRow=[];return}if(this.externalTags){this._numElidedTags=this.values.length,this._tagRows=[],this._lastTagRow=[];return}const t=this._contentArea.getBoundingClientRect().width,e=[[]];let a=0,i=H,n;for(n=this.values.length-1;n>=0;n--){const p=this.maxLines&&a===this.maxLines-1,h=this.#n(this._tagLabelForValue(this.values[n]),!0,this.#l(this.selectedOptions[n])!==null),o={value:this.values[n],width:h};let d=0;if(p){const T=n;T&&(d=g+this.#n(T.toString(),!1,!1))}if(i+g+h+d>t){if(p)if(n===this.values.length-1)e[a].unshift(o),i+=g+h;else break;else e.push([]),a++,e[a].unshift(o),i=h;continue}e[a].unshift(o),i+=g+h}this._numElidedTags=n+1,e.reverse();for(let p=0;p<e.length-1;p++){let h=e[p].map(o=>o.width).reduce((o,d)=>o+d,0)+(e[p].length-1)*g;for(p===0&&this._numElidedTags&&(h+=g+this.#n(this._numElidedTags.toString(),!1,!1));e[p+1].length&&h+g+e[p+1][0].width<=t;){const o=e[p+1].shift();e[p].push(o),h+=g+o.width}}const v=e.map(p=>p.map(h=>h.value));this._tagRows=v.slice(0,-1),this._lastTagRow=v.slice(-1)[0]}_onTagRemoved(t){this.#a(this.values.filter(e=>e!==t)),this.#o()}_onTagKeydown(t){const e=parseInt(t.target.dataset.index);switch(t.key){case"Backspace":case"Delete":case"Enter":case" ":{this._onTagRemoved(this.values[e]),s.DOM.processUpdates(),this.#i(this.#C(e));break}case"ArrowLeft":this.#i(this.#r(e)??e);break;case"ArrowRight":this.#i(this.#v(e));break}return!0}#i(t){t===null?this._input.focus():this.shadowRoot.querySelector(`[data-index="${t}"]`)?.focus()}#r(t){if(!this.values.length)return null;for(let e=t-1;e>=0;e--)if(!this._isTagDisabled(this.values[e]))return e;return null}#v(t){if(!this.values.length)return null;for(let e=t+1;e<this.values.length;e++)if(!this._isTagDisabled(this.values[e]))return e;return null}#C(t){return this.#v(t-1)??this.#r(t)}_onListboxClick(t){if(this.disabled)return;const e=t.target.closest("option,[role=option],[data-vvd-component=option]");e&&!e.disabled&&this.#h(e)}get _shouldShowClearButton(){return this.clearable&&this.values.length>0}_onClearButtonClick(){this.#a(this.selectedOptions.filter(t=>t.disabled).map(t=>t.value))}maxSelectedChanged(){this.#c()}#c(){if(!this.multiple||!this._slottedOptions||typeof this.maxSelected!="number"||this.maxSelected<=0)return;const t=this._slottedOptions.filter(e=>!this._slottedDisabledOptions.includes(e));if(this.values.length>=this.maxSelected){const e=t.filter(a=>!this.selectedOptions.includes(a));for(const a of e)a.disabled=!0}else for(const e of t)e.disabled=!1}get _hasSelectionCount(){return this.multiple&&this.maxSelected&&this.maxSelected>=1}#f(){return this.initialValues.length?this.initialValues:this.initialValue?[this.initialValue]:[]}nameChanged(t,e){super.nameChanged(t,e),this.#g()}#g(){if(!this.name)this.setFormValue(null);else{const t=new FormData;for(const e of this.values)t.append(this.name,e);this.setFormValue(t)}}formResetCallback(){super.formResetCallback(),this.#a(this.#f())}#d;_onFieldsetClick(t){this.disabled||t.defaultPrevented||(this._input.focus(),this.open=!0)}_onChevronClick(){return this.open?(this.open=!1,!1):!0}connectedCallback(){super.connectedCallback(),this.values.length||(this.values=this.#f()),this.#d.observe(this._contentArea)}disconnectedCallback(){super.disconnectedCallback(),this.#d.disconnect()}validate(){super.validate(this._input??void 0)}focus(t){this._input?.focus(t)}_onMouseDown(t){const e=t.composedPath()[0];return!t.defaultPrevented&&e!==this._input&&!this._isFromContextualHelp(t)?(this._input.focus(),!1):!0}}c([s.attr],r.prototype,"appearance");c([s.attr],r.prototype,"shape");c([s.attr({mode:"boolean",attribute:"fixed-dropdown"})],r.prototype,"fixedDropdown");c([s.attr],r.prototype,"placeholder");c([s.attr({mode:"boolean"})],r.prototype,"open");c([s.attr({mode:"boolean"})],r.prototype,"multiple");c([s.attr({attribute:"external-tags",mode:"boolean"})],r.prototype,"externalTags");c([s.attr({attribute:"max-lines",converter:s.nullableNumberConverter})],r.prototype,"maxLines");c([s.observable],r.prototype,"values");c([s.observable],r.prototype,"initialValues");c([s.observable],r.prototype,"_input");c([s.observable],r.prototype,"_currentSearchText");c([s.observable],r.prototype,"_slottedOptions");c([s.observable],r.prototype,"optionFilter");c([s.observable],r.prototype,"_filteredOptions");c([s.observable],r.prototype,"_filteredEnabledOptions");c([s.attr({mode:"boolean"})],r.prototype,"loading");c([s.observable],r.prototype,"_highlightedOptionIndex");c([s.observable],r.prototype,"_contentArea");c([s.observable],r.prototype,"_numElidedTags");c([s.observable],r.prototype,"_tagRows");c([s.observable],r.prototype,"_lastTagRow");c([s.observable],r.prototype,"_listbox");c([s.attr({mode:"boolean"})],r.prototype,"clearable");c([s.attr({attribute:"max-selected",converter:s.nullableNumberConverter})],r.prototype,"maxSelected");c([s.observable],r.prototype,"_slottedDisabledOptions");c([s.observable],r.prototype,"_changeDescription");c([s.observable],r.prototype,"_anchor");var j=Object.defineProperty,b=(l,t,e,a)=>{for(var i=void 0,n=l.length-1,v;n>=0;n--)(v=l[n])&&(i=v(t,e,i)||i);return i&&j(t,e,i),i};class f extends V.Localized(s.VividElement){constructor(){super(...arguments),this.removable=!1,this.disabled=!1,this.hasIconPlaceholder=!1}_onClickRemove(){this.$emit("remove",void 0,{bubbles:!1})}}b([s.attr],f.prototype,"shape");b([s.observable],f.prototype,"connotation");b([s.attr],f.prototype,"label");b([s.attr({mode:"boolean"})],f.prototype,"removable");b([s.attr({mode:"boolean"})],f.prototype,"disabled");b([s.observable],f.prototype,"hasIconPlaceholder");const U=l=>$.classNames(["disabled",l.disabled],[`appearance-${l.appearance}`,!!l.appearance],[`shape-${l.shape}`,!!l.shape],["error",!!l.errorValidationMessage],["success",!!l.successText],["has-highlighted-option",l._highlightedOptionIndex!==null]);function G(){return s.html`
|
|
2
2
|
<label for="control" class="label" id="label"> ${l=>l.label} </label>
|
|
3
|
-
`}function
|
|
3
|
+
`}function J(){return s.html`
|
|
4
4
|
<span
|
|
5
5
|
id="selection-count"
|
|
6
6
|
class="selection-count"
|
|
7
7
|
aria-label="${l=>l.locale.searchableSelect.maxSelectedMessage(l.values.length,l.maxSelected)}"
|
|
8
8
|
>(${l=>`${l.values.length}/${l.maxSelected}`})</span
|
|
9
9
|
>
|
|
10
|
-
`}const
|
|
10
|
+
`}const k=(l,t)=>{const e=l.tagFor(f);return s.html`
|
|
11
11
|
<div class="tag-wrapper">
|
|
12
12
|
<${e}
|
|
13
13
|
class="tag"
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
<slot slot="icon" name="${(a,i)=>t(i)._tagIconSlotName(a)}"></slot>
|
|
25
25
|
</${e}>
|
|
26
26
|
</div>
|
|
27
|
-
`},
|
|
27
|
+
`},C=(l,t)=>{const e=l.tagFor(f);return s.html`
|
|
28
28
|
<${e}
|
|
29
29
|
class="tag"
|
|
30
30
|
tabindex="-1"
|
|
@@ -33,9 +33,9 @@
|
|
|
33
33
|
?disabled="${(a,i)=>t(a,i).disabled}"
|
|
34
34
|
@mousedown="${()=>!1}">
|
|
35
35
|
</${e}>
|
|
36
|
-
`};function
|
|
36
|
+
`};function Q(l){const t=l.tagFor(x.Button),e=l.tagFor(F.ProgressRing),a=w.affixIconTemplateFactory(l),i=x.chevronTemplateFactory(l),n=k(l,o=>o.parent),v=k(l,o=>o.parentContext.parent),p=C(l,(o,d)=>o),h=C(l,(o,d)=>d.parent);return s.html`
|
|
37
37
|
<div
|
|
38
|
-
class="fieldset ${
|
|
38
|
+
class="fieldset ${U}"
|
|
39
39
|
@click="${(o,d)=>o._onFieldsetClick(d.event)}"
|
|
40
40
|
${_.ref("_anchor")}
|
|
41
41
|
>
|
|
@@ -43,14 +43,14 @@
|
|
|
43
43
|
<div class="content-area" ${_.ref("_contentArea")}>
|
|
44
44
|
${m.repeat(o=>o._tagRows,s.html`
|
|
45
45
|
<div class="tag-row">
|
|
46
|
-
${u.when((o,d)=>d.isFirst&&d.parent._numElidedTags,
|
|
46
|
+
${u.when((o,d)=>d.isFirst&&d.parent._numElidedTags,h)}
|
|
47
47
|
${m.repeat(o=>o,v)}
|
|
48
48
|
</div>
|
|
49
49
|
`,{positioning:!0})}
|
|
50
50
|
<div
|
|
51
51
|
class="tag-row ${o=>$.classNames(["contains-only-input",o._tagRows.length>0&&o._lastTagRow.length===0])}"
|
|
52
52
|
>
|
|
53
|
-
${u.when(o=>o._tagRows.length===0&&o._numElidedTags,
|
|
53
|
+
${u.when(o=>o._tagRows.length===0&&o._numElidedTags,p)}
|
|
54
54
|
${m.repeat(o=>o._lastTagRow,n)}
|
|
55
55
|
<input
|
|
56
56
|
id="control"
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
autocomplete="off"
|
|
59
59
|
aria-controls="listbox"
|
|
60
60
|
aria-describedby="${o=>o._feedbackDescribedBy} ${o=>o.multiple&&o.maxSelected&&o.maxSelected>=1?"selection-count":null}"
|
|
61
|
-
${
|
|
61
|
+
${R.delegateAria({role:"combobox",ariaAutoComplete:"list",ariaHasPopup:"listbox",ariaExpanded:o=>o.open})}
|
|
62
62
|
placeholder="${o=>o.multiple&&o.values.length?"":o.placeholder}"
|
|
63
63
|
type="text"
|
|
64
64
|
?disabled="${o=>o.disabled}"
|
|
@@ -89,25 +89,28 @@
|
|
|
89
89
|
${u.when(o=>!o.loading,i)}
|
|
90
90
|
</div>
|
|
91
91
|
</div>
|
|
92
|
-
`}function
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
92
|
+
`}function X(l){return l.open&&l.fixedDropdown?`--_searchable-select-fixed-width: ${Math.round(l.getBoundingClientRect().width)}px`:null}function Y(l){const t=l.tagFor(I.Popup);return s.html`
|
|
93
|
+
<div class="label-wrapper" ?hidden=${e=>!e.label&&!e._hasContextualHelp&&!e._hasSelectionCount}>
|
|
94
|
+
${u.when(e=>e.label||e._hasSelectionCount,s.html`
|
|
95
|
+
<div>
|
|
96
|
+
${u.when(e=>e.label,G())}
|
|
97
|
+
${u.when(e=>e._hasSelectionCount,J())}
|
|
98
|
+
</div>
|
|
99
|
+
`)}
|
|
100
|
+
<slot name="contextual-help" ${O.slotted("_contextualHelpSlottedContent")}></slot>
|
|
101
|
+
</div>
|
|
99
102
|
<span aria-live="assertive" aria-relevant="text" class="visually-hidden">
|
|
100
103
|
${e=>e._changeDescription}
|
|
101
104
|
</span>
|
|
102
105
|
<div>
|
|
103
|
-
${
|
|
106
|
+
${Q(l)}
|
|
104
107
|
<div class="popup-wrapper">
|
|
105
108
|
<${t}
|
|
106
109
|
:anchor="${e=>e._anchor}"
|
|
107
110
|
:open="${e=>e.open}"
|
|
108
111
|
class="popup"
|
|
109
112
|
placement="bottom-start"
|
|
110
|
-
style="${
|
|
113
|
+
style="${X}"
|
|
111
114
|
strategy="${e=>e.fixedDropdown?"fixed":"absolute"}">
|
|
112
115
|
<div
|
|
113
116
|
class="listbox"
|
|
@@ -119,7 +122,7 @@
|
|
|
119
122
|
@mousedown="${()=>!1}"
|
|
120
123
|
>
|
|
121
124
|
<slot
|
|
122
|
-
${
|
|
125
|
+
${O.slotted({filter:A.isListboxOption,flatten:!0,property:"_slottedOptions"})}>
|
|
123
126
|
</slot>
|
|
124
127
|
${u.when(e=>e._filteredOptions.length===0,s.html`<div class="empty-message">
|
|
125
128
|
${u.when(e=>e.loading,s.html`<slot name="loading-options">
|
|
@@ -136,16 +139,16 @@
|
|
|
136
139
|
</${t}>
|
|
137
140
|
</div>
|
|
138
141
|
</div>
|
|
139
|
-
`}const
|
|
142
|
+
`}const Z=l=>{const t=l.tagFor(f);return s.html`
|
|
140
143
|
<template
|
|
141
144
|
:_optionTagTagName="${()=>t}"
|
|
142
145
|
@mousedown="${(e,a)=>e._onMouseDown(a.event)}"
|
|
143
146
|
>
|
|
144
147
|
<div class="control-wrapper">
|
|
145
|
-
${
|
|
148
|
+
${Y(l)} ${e=>e._getFeedbackTemplate(l)}
|
|
146
149
|
</div>
|
|
147
150
|
</template>
|
|
148
|
-
`},
|
|
151
|
+
`},ee=({shape:l,connotation:t,disabled:e,removable:a})=>$.classNames("base",["disabled",e],["removable",a],[`shape-${l}`,!!l],[`connotation-${t}`,!!t]);function te(l){return s.html`
|
|
149
152
|
<span
|
|
150
153
|
class="remove-button"
|
|
151
154
|
aria-label="${t=>t.locale.searchableSelect.removeTagButtonLabel(t.label)}"
|
|
@@ -155,10 +158,10 @@
|
|
|
155
158
|
>
|
|
156
159
|
<${l} name="close-line"></${l}>
|
|
157
160
|
</span>
|
|
158
|
-
`}const
|
|
161
|
+
`}const oe=l=>{const t=l.tagFor(y.Icon);return s.html`<span class="${ee}" aria-disabled="${e=>e.disabled}">
|
|
159
162
|
<slot name="icon" aria-hidden="true">
|
|
160
163
|
${u.when(e=>e.hasIconPlaceholder,s.html`<div class="icon-placeholder"></div>`)}
|
|
161
164
|
</slot>
|
|
162
165
|
${u.when(e=>e.label,e=>s.html`<span class="label">${e.label}</span>`)}
|
|
163
|
-
${u.when(e=>e.removable,
|
|
164
|
-
</span>`},
|
|
166
|
+
${u.when(e=>e.removable,te(t))}
|
|
167
|
+
</span>`},ae=s.defineVividComponent("option-tag",f,oe,[y.iconDefinition],{styles:[N],shadowOptions:{delegatesFocus:!0}}),ie=s.defineVividComponent("searchable-select",r,Z,[x.buttonDefinition,I.popupDefinition,y.iconDefinition,ae,F.progressRingDefinition,D.feedbackMessageDefinition],{styles:B}),se=s.createRegisterFunction(ie);se();
|