@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.
Files changed (102) hide show
  1. package/audio-player/definition.cjs +37 -4
  2. package/audio-player/definition.js +37 -4
  3. package/audio-player/index.cjs +25 -25
  4. package/audio-player/index.js +86 -62
  5. package/bundled/definition13.cjs +2 -2
  6. package/bundled/definition13.js +4 -4
  7. package/bundled/definition19.cjs +18 -15
  8. package/bundled/definition19.js +85 -77
  9. package/bundled/definition6.cjs +6 -6
  10. package/bundled/definition6.js +34 -31
  11. package/bundled/localized.cjs +1 -1
  12. package/bundled/localized.js +2 -1
  13. package/bundled/picker-field.template.cjs +18 -13
  14. package/bundled/picker-field.template.js +44 -36
  15. package/bundled/text-field.cjs +1 -1
  16. package/bundled/text-field.js +1 -1
  17. package/bundled/vivid-element.cjs +1 -1
  18. package/bundled/vivid-element.js +1 -1
  19. package/bundled/with-contextual-help.cjs +1 -1
  20. package/bundled/with-contextual-help.js +17 -7
  21. package/combobox/definition.cjs +12 -5
  22. package/combobox/definition.js +12 -5
  23. package/combobox/index.cjs +15 -11
  24. package/combobox/index.js +83 -76
  25. package/custom-elements.json +95 -3
  26. package/dial-pad/definition.cjs +51 -1
  27. package/dial-pad/definition.js +52 -2
  28. package/dial-pad/index.cjs +21 -18
  29. package/dial-pad/index.js +123 -92
  30. package/file-picker/definition.cjs +14 -5
  31. package/file-picker/definition.js +15 -6
  32. package/file-picker/index.cjs +12 -9
  33. package/file-picker/index.js +102 -92
  34. package/lib/audio-player/audio-player.d.ts +4 -0
  35. package/lib/combobox/combobox.d.ts +483 -66
  36. package/lib/date-picker/date-picker.d.ts +839 -827
  37. package/lib/date-range-picker/date-range-picker.d.ts +580 -574
  38. package/lib/date-time-picker/date-time-picker.d.ts +863 -851
  39. package/lib/dial-pad/dial-pad.template.d.ts +1 -1
  40. package/lib/dial-pad/locale.d.ts +1 -0
  41. package/lib/file-picker/file-picker.d.ts +483 -66
  42. package/lib/menu/menu.d.ts +1 -0
  43. package/lib/number-field/number-field.d.ts +1 -0
  44. package/lib/searchable-select/searchable-select.d.ts +505 -88
  45. package/lib/select/select.d.ts +470 -53
  46. package/lib/text-area/text-area.d.ts +1 -0
  47. package/lib/text-field/text-field.d.ts +1 -0
  48. package/lib/time-picker/time-picker.d.ts +551 -545
  49. package/locales/de-DE.cjs +2 -1
  50. package/locales/de-DE.js +2 -1
  51. package/locales/en-GB.cjs +2 -1
  52. package/locales/en-GB.js +2 -1
  53. package/locales/en-US.cjs +2 -1
  54. package/locales/en-US.js +2 -1
  55. package/locales/ja-JP.cjs +2 -1
  56. package/locales/ja-JP.js +2 -1
  57. package/locales/zh-CN.cjs +2 -1
  58. package/locales/zh-CN.js +2 -1
  59. package/menu/definition.cjs +6 -2
  60. package/menu/definition.js +7 -3
  61. package/number-field/definition.cjs +2 -2
  62. package/number-field/definition.js +3 -3
  63. package/number-field/index.cjs +9 -9
  64. package/number-field/index.js +28 -27
  65. package/package.json +1 -1
  66. package/searchable-select/definition.cjs +27 -18
  67. package/searchable-select/definition.js +28 -19
  68. package/searchable-select/index.cjs +28 -25
  69. package/searchable-select/index.js +150 -141
  70. package/select/definition.cjs +14 -6
  71. package/select/definition.js +14 -6
  72. package/shared/patterns/form-elements/index.d.ts +1 -0
  73. package/shared/patterns/form-elements/with-contextual-help.d.ts +1 -0
  74. package/shared/picker-field/mixins/calendar-picker.d.ts +442 -439
  75. package/shared/picker-field/mixins/calendar-picker.template.d.ts +442 -439
  76. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +584 -578
  77. package/shared/picker-field/mixins/single-date-picker.d.ts +696 -687
  78. package/shared/picker-field/mixins/single-value-picker.d.ts +441 -438
  79. package/shared/picker-field/mixins/time-selection-picker.d.ts +562 -556
  80. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +551 -545
  81. package/shared/picker-field/picker-field.d.ts +483 -66
  82. package/styles/core/all.css +1 -1
  83. package/styles/core/theme.css +1 -1
  84. package/styles/core/typography.css +1 -1
  85. package/styles/tokens/theme-dark.css +4 -4
  86. package/styles/tokens/theme-light.css +4 -4
  87. package/styles/tokens/vivid-2-compat.css +1 -1
  88. package/text-area/definition.cjs +1 -1
  89. package/text-area/definition.js +1 -1
  90. package/text-area/index.cjs +1 -1
  91. package/text-area/index.js +1 -1
  92. package/text-field/definition.cjs +1 -1
  93. package/text-field/definition.js +1 -1
  94. package/unbundled/picker-field.template.cjs +11 -3
  95. package/unbundled/picker-field.template.js +11 -3
  96. package/unbundled/text-field.cjs +1 -1
  97. package/unbundled/text-field.js +1 -1
  98. package/unbundled/vivid-element.cjs +1 -1
  99. package/unbundled/vivid-element.js +1 -1
  100. package/unbundled/with-contextual-help.cjs +11 -0
  101. package/unbundled/with-contextual-help.js +11 -0
  102. package/vivid.api.json +30 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vonage/vivid",
3
- "version": "5.1.0",
3
+ "version": "5.2.0",
4
4
  "type": "module",
5
5
  "module": "./index.js",
6
6
  "main": "./index.cjs",
@@ -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 mixins.WithFeedback(
41
- withErrorText.WithErrorText(
42
- withSuccessText.WithSuccessText(
43
- formElement.FormElement(
44
- delegatesAria.DelegatesAria(
45
- affix.AffixIconWithTrailing(localized.Localized(formAssociated.FormAssociated(vividElement.VividElement)))
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
- ${fastElement.when(
1146
- (x) => x.label || x.multiple && x.maxSelected && x.maxSelected >= 1,
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
- <div>
1149
- ${fastElement.when((x) => x.label, renderLabel())}
1150
- ${fastElement.when(
1151
- (x) => x.multiple && x.maxSelected && x.maxSelected >= 1,
1152
- renderSelectionCount()
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, ref, slotted, repeat } from '@microsoft/fast-element';
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 WithFeedback(
37
- WithErrorText(
38
- WithSuccessText(
39
- FormElement(
40
- DelegatesAria(
41
- AffixIconWithTrailing(Localized(FormAssociated(VividElement)))
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
- ${when(
1142
- (x) => x.label || x.multiple && x.maxSelected && x.maxSelected >= 1,
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
- <div>
1145
- ${when((x) => x.label, renderLabel())}
1146
- ${when(
1147
- (x) => x.multiple && x.maxSelected && x.maxSelected >= 1,
1148
- renderSelectionCount()
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 G(){return s.html`
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 S=(l,t)=>{const e=l.tagFor(f);return s.html`
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
- `},k=(l,t)=>{const e=l.tagFor(f);return s.html`
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 J(l){const t=l.tagFor(x.Button),e=l.tagFor(I.ProgressRing),a=w.affixIconTemplateFactory(l),i=x.chevronTemplateFactory(l),n=S(l,o=>o.parent),v=S(l,o=>o.parentContext.parent),h=k(l,(o,d)=>o),p=k(l,(o,d)=>d.parent);return s.html`
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 ${j}"
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,p)}
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,h)}
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
- ${D.delegateAria({role:"combobox",ariaAutoComplete:"list",ariaHasPopup:"listbox",ariaExpanded:o=>o.open})}
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 Q(l){return l.open&&l.fixedDropdown?`--_searchable-select-fixed-width: ${Math.round(l.getBoundingClientRect().width)}px`:null}function X(l){const t=l.tagFor(C.Popup);return s.html`
93
- ${u.when(e=>e.label||e.multiple&&e.maxSelected&&e.maxSelected>=1,s.html`
94
- <div>
95
- ${u.when(e=>e.label,U())}
96
- ${u.when(e=>e.multiple&&e.maxSelected&&e.maxSelected>=1,G())}
97
- </div>
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
- ${J(l)}
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="${Q}"
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
- ${M.slotted({filter:L.isListboxOption,flatten:!0,property:"_slottedOptions"})}>
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 Y=l=>{const t=l.tagFor(f);return s.html`
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
- ${X(l)} ${e=>e._getFeedbackTemplate(l)}
148
+ ${Y(l)} ${e=>e._getFeedbackTemplate(l)}
146
149
  </div>
147
150
  </template>
148
- `},Z=({shape:l,connotation:t,disabled:e,removable:a})=>$.classNames("base",["disabled",e],["removable",a],[`shape-${l}`,!!l],[`connotation-${t}`,!!t]);function ee(l){return s.html`
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 te=l=>{const t=l.tagFor(y.Icon);return s.html`<span class="${Z}" aria-disabled="${e=>e.disabled}">
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,ee(t))}
164
- </span>`},oe=s.defineVividComponent("option-tag",f,te,[y.iconDefinition],{styles:[B],shadowOptions:{delegatesFocus:!0}}),ae=s.defineVividComponent("searchable-select",r,Y,[x.buttonDefinition,C.popupDefinition,y.iconDefinition,oe,I.progressRingDefinition,F.feedbackMessageDefinition],{styles:A}),ie=s.createRegisterFunction(ae);ie();
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();