@vonage/vivid 5.3.0 → 5.4.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 (157) hide show
  1. package/accordion-item/definition.js +1 -1
  2. package/alert/definition.cjs +1 -1
  3. package/alert/definition.js +2 -2
  4. package/badge/definition.js +1 -1
  5. package/banner/definition.js +1 -1
  6. package/bundled/calendar-picker.template.cjs +7 -7
  7. package/bundled/calendar-picker.template.js +101 -101
  8. package/bundled/definition11.cjs +13 -13
  9. package/bundled/definition11.js +202 -50
  10. package/bundled/definition19.cjs +24 -25
  11. package/bundled/definition19.js +152 -164
  12. package/bundled/definition6.cjs +3 -3
  13. package/bundled/definition6.js +19 -19
  14. package/bundled/definition9.cjs +5 -5
  15. package/bundled/definition9.js +394 -392
  16. package/bundled/listbox.cjs +1 -1
  17. package/bundled/listbox.js +82 -102
  18. package/bundled/localized.cjs +1 -1
  19. package/bundled/localized.js +18 -14
  20. package/bundled/vivid-element.cjs +5 -1
  21. package/bundled/vivid-element.js +401 -358
  22. package/calendar/index.cjs +1 -1
  23. package/calendar/index.js +14 -14
  24. package/card/definition.cjs +1 -1
  25. package/card/definition.js +1 -1
  26. package/color-picker/definition.cjs +1 -1
  27. package/color-picker/definition.js +1 -1
  28. package/combobox/definition.cjs +7 -27
  29. package/combobox/definition.js +8 -28
  30. package/combobox/index.cjs +6 -6
  31. package/combobox/index.js +57 -71
  32. package/custom-elements.json +305 -2
  33. package/date-picker/definition.cjs +1 -1
  34. package/date-picker/definition.js +1 -1
  35. package/date-range-picker/definition.cjs +1 -1
  36. package/date-range-picker/definition.js +1 -1
  37. package/date-time-picker/definition.cjs +1 -1
  38. package/date-time-picker/definition.js +1 -1
  39. package/dialog/definition.cjs +2 -2
  40. package/dialog/definition.js +2 -2
  41. package/dialog/index.cjs +7 -7
  42. package/dialog/index.js +6 -6
  43. package/elevation/definition.cjs +1 -1
  44. package/elevation/definition.js +1 -1
  45. package/fab/definition.js +1 -1
  46. package/header/definition.cjs +1 -1
  47. package/header/definition.js +1 -1
  48. package/index.cjs +3 -4
  49. package/index.js +2 -3
  50. package/lib/accordion/accordion.d.ts +1 -1
  51. package/lib/accordion/definition.d.ts +1 -1
  52. package/lib/audio-player/audio-player.d.ts +1 -1
  53. package/lib/combobox/combobox.d.ts +1 -0
  54. package/lib/combobox/combobox.options.d.ts +1 -1
  55. package/lib/divider/divider.d.ts +1 -1
  56. package/lib/menu-item/menu-item-role.d.ts +1 -1
  57. package/lib/popup/popup.d.ts +1 -1
  58. package/lib/searchable-select/locale.d.ts +4 -0
  59. package/lib/searchable-select/searchable-select.d.ts +3 -0
  60. package/lib/select/select.d.ts +3 -1
  61. package/lib/slider/slider.d.ts +1 -1
  62. package/lib/tabs/tabs.d.ts +2 -2
  63. package/lib/text-area/text-area.d.ts +1 -1
  64. package/lib/text-field/text-field.d.ts +1 -1
  65. package/locales/de-DE.cjs +4 -0
  66. package/locales/de-DE.js +4 -0
  67. package/locales/en-GB.cjs +4 -0
  68. package/locales/en-GB.js +4 -0
  69. package/locales/en-US.cjs +4 -0
  70. package/locales/en-US.js +4 -0
  71. package/locales/ja-JP.cjs +4 -0
  72. package/locales/ja-JP.js +4 -0
  73. package/locales/zh-CN.cjs +4 -0
  74. package/locales/zh-CN.js +4 -0
  75. package/menu/definition.cjs +4 -4
  76. package/menu/definition.js +4 -4
  77. package/nav-disclosure/definition.js +1 -1
  78. package/nav-item/definition.js +1 -1
  79. package/note/definition.js +1 -1
  80. package/number-field/definition.js +1 -1
  81. package/option/definition.cjs +6 -77
  82. package/option/definition.js +3 -78
  83. package/package.json +31 -5
  84. package/popup/definition.cjs +2 -2
  85. package/popup/definition.js +2 -2
  86. package/range-slider/definition.cjs +1 -1
  87. package/range-slider/definition.js +1 -1
  88. package/rich-text-editor/definition.cjs +2 -3
  89. package/rich-text-editor/definition.js +1 -2
  90. package/rich-text-editor/index.cjs +27 -27
  91. package/rich-text-editor/index.js +1208 -1198
  92. package/searchable-select/definition.cjs +103 -11
  93. package/searchable-select/definition.js +103 -11
  94. package/searchable-select/index.cjs +81 -69
  95. package/searchable-select/index.js +359 -273
  96. package/select/definition.cjs +24 -41
  97. package/select/definition.js +24 -41
  98. package/selectable-box/definition.cjs +1 -1
  99. package/selectable-box/definition.js +1 -1
  100. package/selectable-box/index.cjs +1 -1
  101. package/selectable-box/index.js +1 -1
  102. package/shared/aria/aria-mixin.d.ts +1 -1
  103. package/shared/foundation/listbox/listbox.d.ts +4 -0
  104. package/simple-color-picker/definition.cjs +1 -1
  105. package/simple-color-picker/definition.js +1 -1
  106. package/slider/definition.cjs +1 -1
  107. package/slider/definition.js +1 -1
  108. package/split-button/definition.js +1 -1
  109. package/styles/core/all.css +1 -1
  110. package/styles/core/theme.css +1 -1
  111. package/styles/core/typography.css +1 -1
  112. package/styles/tokens/theme-dark.css +4 -4
  113. package/styles/tokens/theme-light.css +4 -4
  114. package/styles/tokens/vivid-2-compat.css +1 -1
  115. package/tab/definition.js +1 -1
  116. package/tag/definition.js +1 -1
  117. package/text-field/definition.js +1 -1
  118. package/time-picker/definition.cjs +1 -1
  119. package/time-picker/definition.js +1 -1
  120. package/toggletip/definition.cjs +1 -1
  121. package/toggletip/definition.js +1 -1
  122. package/tooltip/definition.cjs +1 -1
  123. package/tooltip/definition.js +1 -1
  124. package/tree-item/definition.cjs +1 -1
  125. package/tree-item/definition.js +1 -1
  126. package/tree-view/definition.cjs +1 -1
  127. package/tree-view/definition.js +1 -1
  128. package/unbundled/affix.js +1 -1
  129. package/unbundled/calendar-picker.template.cjs +1 -1
  130. package/unbundled/calendar-picker.template.js +1 -1
  131. package/unbundled/definition.js +1 -1
  132. package/unbundled/definition2.js +1 -1
  133. package/unbundled/definition3.cjs +222 -141
  134. package/unbundled/definition3.js +220 -139
  135. package/unbundled/definition4.cjs +145 -235
  136. package/unbundled/definition4.js +143 -233
  137. package/unbundled/definition5.cjs +269 -27
  138. package/unbundled/definition5.js +267 -26
  139. package/unbundled/definition6.cjs +56 -0
  140. package/unbundled/definition6.js +52 -0
  141. package/unbundled/listbox.cjs +41 -63
  142. package/unbundled/listbox.js +39 -61
  143. package/unbundled/picker-field.template.cjs +1 -1
  144. package/unbundled/picker-field.template.js +1 -1
  145. package/unbundled/slider.template.cjs +1 -1
  146. package/unbundled/slider.template.js +1 -1
  147. package/unbundled/vivid-element.cjs +1 -1
  148. package/unbundled/vivid-element.js +1 -1
  149. package/video-player/definition.cjs +56 -16
  150. package/video-player/definition.js +56 -16
  151. package/video-player/index.cjs +36 -36
  152. package/video-player/index.js +2461 -2445
  153. package/vivid.api.json +285 -38
  154. package/bundled/option.cjs +0 -1
  155. package/bundled/option.js +0 -158
  156. package/unbundled/option.cjs +0 -217
  157. package/unbundled/option.js +0 -214
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const vividElement = require('../unbundled/vivid-element.cjs');
6
- const treeItem_definition = require('../unbundled/definition3.cjs');
6
+ const treeItem_definition = require('../unbundled/definition4.cjs');
7
7
  const fastElement = require('@microsoft/fast-element');
8
8
  const fastWebUtilities = require('@microsoft/fast-web-utilities');
9
9
  const hostSemantics = require('../unbundled/host-semantics.cjs');
@@ -1,5 +1,5 @@
1
1
  import { V as VividElement, d as defineVividComponent, c as createRegisterFunction } from '../unbundled/vivid-element.js';
2
- import { T as TreeItem, i as isTreeItemElement, t as treeItemDefinition } from '../unbundled/definition3.js';
2
+ import { T as TreeItem, i as isTreeItemElement, t as treeItemDefinition } from '../unbundled/definition4.js';
3
3
  import { Updates, attr, observable, ref, slotted, html } from '@microsoft/fast-element';
4
4
  import { keyEnter, keyArrowUp, keyArrowDown, keyArrowRight, keyArrowLeft, keyEnd, keyHome, isHTMLElement, classNames } from '@microsoft/fast-web-utilities';
5
5
  import { H as HostSemantics, a as applyHostSemantics } from '../unbundled/host-semantics.js';
@@ -69,4 +69,4 @@ const affixIconTemplateFactory = (context) => {
69
69
  };
70
70
  };
71
71
 
72
- export { AffixIconWithTrailing as A, IconWrapper as I, affixIconTemplateFactory as a, AffixIcon as b, IconAriaHidden as c };
72
+ export { AffixIcon as A, IconWrapper as I, affixIconTemplateFactory as a, AffixIconWithTrailing as b, IconAriaHidden as c };
@@ -457,7 +457,7 @@ const CalendarPicker = (Base) => {
457
457
  _onMonthKeydown(month, event) {
458
458
  let newMonth = null;
459
459
  if (event.key === "ArrowUp") {
460
- newMonth = addMonths(month, -4);
460
+ newMonth = addMonths(month, -MonthsPerRow);
461
461
  } else if (event.key === "ArrowDown") {
462
462
  newMonth = addMonths(month, MonthsPerRow);
463
463
  } else if (event.key === "ArrowLeft") {
@@ -455,7 +455,7 @@ const CalendarPicker = (Base) => {
455
455
  _onMonthKeydown(month, event) {
456
456
  let newMonth = null;
457
457
  if (event.key === "ArrowUp") {
458
- newMonth = addMonths(month, -4);
458
+ newMonth = addMonths(month, -MonthsPerRow);
459
459
  } else if (event.key === "ArrowDown") {
460
460
  newMonth = addMonths(month, MonthsPerRow);
461
461
  } else if (event.key === "ArrowLeft") {
@@ -3,7 +3,7 @@ import { VwcProgressRingElement as ProgressRing, progressRingDefinition } from '
3
3
  import { d as defineVividComponent, c as createRegisterFunction } from './vivid-element.js';
4
4
  import { attr, html, when, ref } from '@microsoft/fast-element';
5
5
  import { V as VividFoundationButton } from './button.js';
6
- import { A as AffixIconWithTrailing, a as affixIconTemplateFactory, I as IconWrapper } from './affix.js';
6
+ import { b as AffixIconWithTrailing, a as affixIconTemplateFactory, I as IconWrapper } from './affix.js';
7
7
  import { L as Localized } from './localized.js';
8
8
  import { L as Linkable } from './linkable.js';
9
9
  import { classNames } from '@microsoft/fast-web-utilities';
@@ -3,7 +3,7 @@ import { V as VividElement, r as replaces, d as defineVividComponent, c as creat
3
3
  import { Updates, attr, observable, slotted, when, html, elements } from '@microsoft/fast-element';
4
4
  import { keySpace, keyEnter, classNames } from '@microsoft/fast-web-utilities';
5
5
  import { a as keyArrowLeft, k as keyArrowRight } from './key-codes.js';
6
- import { b as AffixIcon, a as affixIconTemplateFactory } from './affix.js';
6
+ import { A as AffixIcon, a as affixIconTemplateFactory } from './affix.js';
7
7
  import { H as HostSemantics, a as applyHostSemantics } from './host-semantics.js';
8
8
 
9
9
  const styles = ":host(:focus-visible){outline:none}:host([disabled]){pointer-events:none}.base{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}@media (hover: hover){.base:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}}.base.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base.disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:active:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base.active:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base.selected:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}@media (hover: hover){.base.selected:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}}.base.selected.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.base.connotation-cta{--_connotation-color-primary: var(--vvd-menu-item-cta-primary, var(--vvd-color-cta-500));--_connotation-color-primary-text: var(--vvd-menu-item-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-menu-item-cta-primary-increment, var(--vvd-color-cta-600));--_connotation-color-firm: var(--vvd-menu-item-cta-firm, var(--vvd-color-cta-600));--_connotation-color-faint: var(--vvd-menu-item-cta-faint, var(--vvd-color-cta-50));--_connotation-color-soft: var(--vvd-menu-item-cta-soft, var(--vvd-color-cta-100));--_connotation-color-pale: var(--vvd-menu-item-cta-pale, var(--vvd-color-cta-300));--_connotation-color-dim: var(--vvd-menu-item-cta-dim, var(--vvd-color-cta-200))}.base:not(.connotation-cta){--_connotation-color-primary: var(--vvd-menu-item-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-menu-item-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-menu-item-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-firm: var(--vvd-menu-item-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-menu-item-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-menu-item-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-pale: var(--vvd-menu-item-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-dim: var(--vvd-menu-item-accent-dim, var(--vvd-color-neutral-200))}.base{--_menu-item-padding-inline: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*.4) }.base{display:flex;box-sizing:border-box;align-items:center;border-radius:8px;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);inline-size:100%}.base:not(.two-lines){gap:12px;min-block-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)));padding-block:8px;padding-inline:var(--_menu-item-padding-inline)}.base.two-lines{gap:16px;min-block-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)) + 1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)));padding-block:12px;padding-inline:var(--_menu-item-padding-inline)}@supports (user-select: none){.base{user-select:none}}.base:not(.disabled){cursor:pointer}:host(:not([role=presentation]):focus-visible) .base{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}.icon{flex-shrink:0;font-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2))/2);line-height:1}.action,.decorative{display:flex;place-content:center}.action{color:var(--_appearance-color-text)}.base.trailing .action,.base.has-meta .action{order:2}:host(:not([check-appearance],[checked],[disabled])) .action{color:var(--vvd-color-neutral-500)}.base:not(.disabled) .decorative{color:var(--vvd-color-neutral-600)}.base.disabled .decorative{color:var(--vvd-color-neutral-200)}.base.has-meta .decorative{order:1}.chevron{order:3}.text{display:flex;overflow:hidden;flex-direction:column;gap:4px;margin-inline-end:auto}.text-primary,.text-secondary{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;font:var(--vvd-typography-base)}.text-primary{font:var(--vvd-typography-base);-webkit-line-clamp:var(--text-primary-line-clamp, 1)}.base:not(.disabled) .text-primary{color:var(--vvd-color-canvas-text)}.base.disabled .text-primary{color:var(--_appearance-color-text)}.base.two-lines .text-primary{font:var(--vvd-typography-base-bold)}.text-secondary{color:var(--vvd-color-neutral-800);font:var(--vvd-typography-base-condensed);-webkit-line-clamp:var(--text-secondary-line-clamp, 1)}.base.two-lines .text-secondary{color:var(--vvd-color-neutral-600)}.base.disabled .text-secondary{color:var(--_appearance-color-text)}.base.selected:not(.disabled) .text-secondary{color:var(--vvd-color-neutral-800)}:host([internal-part]) .text-primary{font:var(--_text-primary-custom-size, var--vvd-typography-base)}";
@@ -2,207 +2,288 @@
2
2
 
3
3
  const icon_definition = require('../icon/definition.cjs');
4
4
  const vividElement = require('./vivid-element.cjs');
5
- const fastWebUtilities = require('@microsoft/fast-web-utilities');
6
5
  const fastElement = require('@microsoft/fast-element');
6
+ const fastWebUtilities = require('@microsoft/fast-web-utilities');
7
7
  const affix = require('./affix.cjs');
8
8
  const hostSemantics = require('./host-semantics.cjs');
9
9
 
10
- const styles = ":host(:focus-visible){outline:none}:host([disabled]){cursor:not-allowed}.control{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control.disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}@media (hover: hover){.control:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}}.control.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.control:active:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.control.active:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.control.selected:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary);--_appearance-color-outline: transparent}@media (hover: hover){.control.selected:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary-increment);--_appearance-color-outline: transparent}}.control.selected.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary-increment);--_appearance-color-outline: transparent}.control{--_connotation-color-primary: var(--vvd-tree-item-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-tree-item-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-tree-item-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-faint: var(--vvd-tree-item-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-tree-item-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-tree-item-accent-firm, var(--vvd-color-canvas-text))}.control{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;border-radius:8px;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:12px;hyphens:auto;inline-size:100%;min-block-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)));padding-inline:16px;text-decoration:none;vertical-align:middle;word-break:break-word}@supports (user-select: none){.control{user-select:none}}.control:not(.disabled){cursor:pointer}.control.disabled{pointer-events:none}:host(:focus-visible) .control{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))}:host(:focus-visible) .control:not(.selected){--focus-stroke-gap-color: transparent}.control .text{font:var(--vvd-typography-base)}.expandCollapseButton{display:flex;align-items:center;border-radius:8px;font-size:20px}.expandCollapseButton .expandCollapseIcon{margin:4px}@media (hover: hover){.expandCollapseButton:hover{background-color:var(--vvd-color-neutral-100)}.selected .expandCollapseButton:hover{background-color:var(--vvd-color-neutral-700)}}.items{display:flex;flex-direction:column;gap:4px;margin-block-start:4px;padding-inline-start:48px}slot[name=icon]{font-size:20px;line-height:1}.control:not(.disabled,.selected) slot[name=icon]{color:var(--vvd-color-neutral-600)}";
11
-
12
10
  var __defProp = Object.defineProperty;
11
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
13
12
  var __decorateClass = (decorators, target, key, kind) => {
14
- var result = void 0 ;
13
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
15
14
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
16
15
  if (decorator = decorators[i])
17
- result = (decorator(target, key, result) ) || result;
18
- if (result) __defProp(target, key, result);
16
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
17
+ if (kind && result) __defProp(target, key, result);
19
18
  return result;
20
19
  };
21
- function isTreeItemElement(el) {
22
- return fastWebUtilities.isHTMLElement(el) && (el.getAttribute("role") === "treeitem" || el instanceof TreeItem);
20
+ function isListboxOption(el) {
21
+ return fastWebUtilities.isHTMLElement(el) && (el.getAttribute("role") === "option" || el instanceof HTMLOptionElement || el instanceof ListboxOption);
23
22
  }
24
- class TreeItem extends hostSemantics.HostSemantics(affix.AffixIcon(vividElement.VividElement)) {
25
- constructor() {
26
- super(...arguments);
27
- this.expanded = false;
28
- this.selected = false;
29
- this.disabled = false;
30
- this.focusable = false;
31
- /**
32
- * Whether the tree is nested
33
- *
34
- * @public
35
- */
36
- this.isNestedItem = () => {
37
- return isTreeItemElement(this.parentElement);
38
- };
23
+ class ListboxOption extends hostSemantics.HostSemantics(
24
+ affix.AffixIconWithTrailing(vividElement.VividElement)
25
+ ) {
26
+ constructor(text, value, defaultSelected, selected) {
27
+ super();
28
+ this.defaultSelected = false;
39
29
  /**
40
- * Handle expand button click
41
- *
30
+ * Tracks whether the "selected" property has been changed.
42
31
  * @internal
43
32
  */
44
- this.handleExpandCollapseButtonClick = (e) => {
45
- if (!this.disabled && !e.defaultPrevented) {
46
- this.expanded = !this.expanded;
33
+ this.dirtySelected = false;
34
+ // eslint-disable-next-line @repo/repo/no-attribute-default-value
35
+ this.value = "";
36
+ this._highlighted = false;
37
+ this._displayCheckmark = false;
38
+ this._vvdSearchText = "";
39
+ this._isNotMatching = false;
40
+ if (text) {
41
+ this.text = text;
42
+ }
43
+ if (value) {
44
+ this.value = value;
45
+ }
46
+ if (defaultSelected) {
47
+ this.defaultSelected = defaultSelected;
48
+ }
49
+ if (selected) {
50
+ this.selected = selected;
51
+ }
52
+ this.proxy = new Option(
53
+ this.text,
54
+ this.value,
55
+ this.defaultSelected,
56
+ this.selected
57
+ );
58
+ this.proxy.disabled = this.disabled;
59
+ }
60
+ defaultSelectedChanged() {
61
+ if (!this.dirtySelected) {
62
+ this.selected = this.defaultSelected;
63
+ if (this.proxy instanceof HTMLOptionElement) {
64
+ this.proxy.selected = this.defaultSelected;
47
65
  }
48
- };
49
- /**
50
- * Handle focus events
51
- *
52
- * @internal
53
- */
54
- this.handleFocus = (_e) => {
55
- this.setAttribute("tabindex", "0");
56
- };
57
- /**
58
- * Handle blur events
59
- *
60
- * @internal
61
- */
62
- this.handleBlur = (_e) => {
63
- this.setAttribute("tabindex", "-1");
64
- };
66
+ }
67
+ if (this.proxy instanceof HTMLOptionElement) {
68
+ this.proxy.defaultSelected = this.defaultSelected;
69
+ }
65
70
  }
66
- expandedChanged() {
67
- if (this.$fastController.isConnected) {
68
- this.$emit("expanded-change", this);
71
+ disabledChanged() {
72
+ if (this.proxy instanceof HTMLOptionElement) {
73
+ this.proxy.disabled = this.disabled;
69
74
  }
70
75
  }
76
+ /**
77
+ * @deprecated Use `defaultSelected` instead.
78
+ */
79
+ get selectedAttribute() {
80
+ return this.defaultSelected;
81
+ }
82
+ set selectedAttribute(value) {
83
+ this.defaultSelected = value;
84
+ }
71
85
  selectedChanged() {
72
- if (this.$fastController.isConnected) {
73
- this.$emit("selected-change", this);
86
+ if (!this.dirtySelected) {
87
+ this.dirtySelected = true;
88
+ }
89
+ if (this.proxy instanceof HTMLOptionElement) {
90
+ this.proxy.selected = this.selected;
74
91
  }
75
92
  }
76
- itemsChanged() {
77
- if (this.$fastController.isConnected) {
78
- this.items.forEach((node) => {
79
- if (isTreeItemElement(node)) {
80
- node.nested = true;
81
- }
82
- });
93
+ valueChanged() {
94
+ if (typeof this.value !== "string") {
95
+ this.value = "";
96
+ return;
97
+ }
98
+ if (this.proxy instanceof HTMLOptionElement) {
99
+ this.proxy.value = this.value;
83
100
  }
84
101
  }
102
+ get label() {
103
+ return this._label ?? this.text;
104
+ }
105
+ set label(value) {
106
+ this._label = value;
107
+ }
108
+ set text(value) {
109
+ this._text = value;
110
+ }
111
+ get text() {
112
+ return this._text ?? "";
113
+ }
85
114
  /**
86
- * Places document focus on a tree item
87
- *
88
- * @public
89
- * @param el - the element to focus
115
+ * Provides an accessible name for use by parent components.
116
+ * Note: Does not implement full accessible name computation, e.g. slotted content is missed.
117
+ * @internal
90
118
  */
91
- static focusItem(el) {
92
- el.focusable = true;
93
- el.focus();
119
+ _getAccessibleName() {
120
+ return this.ariaLabel || `${this.text}${this.textSecondary ? ` ${this.textSecondary}` : ""}`;
121
+ }
122
+ get form() {
123
+ return null;
124
+ }
125
+ get _hasMatchedText() {
126
+ return Boolean(this.matchedText ?? this._vvdSearchText);
127
+ }
128
+ get _matchedRange() {
129
+ const matchedText = this.matchedText ?? this._vvdSearchText;
130
+ if (matchedText) {
131
+ const matchIndex = this.text.toLowerCase().indexOf(matchedText.toLowerCase());
132
+ return matchIndex === -1 ? { from: 0, to: 0 } : {
133
+ from: matchIndex,
134
+ to: matchIndex + matchedText.length
135
+ };
136
+ }
137
+ return { from: 0, to: 0 };
94
138
  }
95
139
  /**
96
- * Gets number of children
97
- *
98
140
  * @internal
99
141
  */
100
- childItemLength() {
101
- const treeChildren = this.childItems.filter(
102
- (item) => {
103
- return isTreeItemElement(item);
104
- }
105
- );
106
- return treeChildren.length;
142
+ connectedCallback() {
143
+ super.connectedCallback();
144
+ if (!this.dirtySelected) {
145
+ this.selected = this.defaultSelected;
146
+ this.dirtySelected = false;
147
+ }
107
148
  }
108
149
  }
109
150
  __decorateClass([
110
- fastElement.attr
111
- ], TreeItem.prototype, "text");
151
+ fastElement.attr({
152
+ converter: {
153
+ fromView: (value) => {
154
+ if (value === true || value === "true") {
155
+ return true;
156
+ }
157
+ if (value === false || value === "false") {
158
+ return false;
159
+ }
160
+ return void 0;
161
+ },
162
+ toView: (value) => value
163
+ }
164
+ })
165
+ ], ListboxOption.prototype, "checked", 2);
166
+ __decorateClass([
167
+ fastElement.attr({ attribute: "selected", mode: "boolean" })
168
+ ], ListboxOption.prototype, "defaultSelected", 2);
169
+ // @ts-expect-error Type is incorrectly non-optional
112
170
  __decorateClass([
113
171
  fastElement.attr({ mode: "boolean" })
114
- ], TreeItem.prototype, "expanded");
172
+ ], ListboxOption.prototype, "disabled", 2);
173
+ __decorateClass([
174
+ fastElement.attr({ attribute: "current-selected", mode: "boolean" })
175
+ ], ListboxOption.prototype, "selected", 2);
176
+ __decorateClass([
177
+ fastElement.attr({ attribute: "value" })
178
+ ], ListboxOption.prototype, "value", 2);
115
179
  __decorateClass([
116
180
  fastElement.attr({
117
- mode: "boolean"
181
+ attribute: "label"
118
182
  })
119
- ], TreeItem.prototype, "selected");
183
+ ], ListboxOption.prototype, "_label", 2);
120
184
  __decorateClass([
121
- fastElement.attr({ mode: "boolean" })
122
- ], TreeItem.prototype, "disabled");
185
+ fastElement.attr({
186
+ attribute: "text"
187
+ })
188
+ ], ListboxOption.prototype, "_text", 2);
123
189
  __decorateClass([
124
- fastElement.observable
125
- ], TreeItem.prototype, "focusable");
126
- // @ts-expect-error Type is incorrectly non-optional
190
+ fastElement.attr({ attribute: "text-secondary" })
191
+ ], ListboxOption.prototype, "textSecondary", 2);
127
192
  __decorateClass([
128
193
  fastElement.observable
129
- ], TreeItem.prototype, "childItems");
194
+ ], ListboxOption.prototype, "_highlighted", 2);
130
195
  __decorateClass([
131
196
  fastElement.observable
132
- ], TreeItem.prototype, "items");
133
- // @ts-expect-error Type is incorrectly non-optional
197
+ ], ListboxOption.prototype, "_displayCheckmark", 2);
198
+ __decorateClass([
199
+ fastElement.attr({ attribute: "matched-text" })
200
+ ], ListboxOption.prototype, "matchedText", 2);
134
201
  __decorateClass([
135
202
  fastElement.observable
136
- ], TreeItem.prototype, "nested");
137
- // @ts-expect-error Type is incorrectly non-optional
203
+ ], ListboxOption.prototype, "_vvdSearchText", 2);
204
+ __decorateClass([
205
+ fastElement.volatile
206
+ ], ListboxOption.prototype, "_hasMatchedText", 1);
138
207
  __decorateClass([
139
208
  fastElement.observable
140
- ], TreeItem.prototype, "renderCollapsedChildren");
209
+ ], ListboxOption.prototype, "_isNotMatching", 2);
210
+ __decorateClass([
211
+ fastElement.volatile
212
+ ], ListboxOption.prototype, "_matchedRange", 1);
213
+ __decorateClass([
214
+ fastElement.attr({ attribute: "tag-connotation" })
215
+ ], ListboxOption.prototype, "tagConnotation", 2);
141
216
 
142
- const getClasses = ({ disabled, selected }) => fastWebUtilities.classNames(
143
- "control",
144
- ["disabled", disabled],
145
- ["selected", Boolean(selected)]
217
+ const getClasses = (x) => fastWebUtilities.classNames(
218
+ "base",
219
+ ["disabled", x.disabled],
220
+ ["selected", Boolean(x.selected)],
221
+ ["hover", Boolean(x._highlighted)],
222
+ ["active", Boolean(x.checked)],
223
+ ["icon", Boolean(x.icon)],
224
+ ["two-lines", Boolean(x.text?.length) && Boolean(x.textSecondary?.length)]
146
225
  );
147
- const expandCollapseButton = (context) => {
226
+ function text() {
227
+ return fastElement.html`${fastElement.when(
228
+ (x) => x.text || x.textSecondary,
229
+ fastElement.html`<span class="text">
230
+ ${fastElement.when(
231
+ (x) => x.text,
232
+ fastElement.html`<span class="text-primary">
233
+ ${fastElement.when(
234
+ (x) => x._hasMatchedText,
235
+ fastElement.html`${(x) => x.text.slice(0, x._matchedRange.from)}<span class="match"
236
+ >${(x) => x.text.slice(x._matchedRange.from, x._matchedRange.to)}</span
237
+ >`
238
+ )}${(x) => x.text.slice(x._matchedRange.to)}
239
+ </span>`
240
+ )}
241
+ ${fastElement.when(
242
+ (x) => x.textSecondary,
243
+ fastElement.html`<span class="text-secondary">${(x) => x.textSecondary}</span>`
244
+ )}
245
+ </span>`
246
+ )}`;
247
+ }
248
+ const ListboxOptionTemplate = (context) => {
249
+ const affixIconTemplate = affix.affixIconTemplateFactory(context);
148
250
  const iconTag = context.tagFor(icon_definition.VwcIconElement);
149
251
  return fastElement.html`
150
- <div aria-hidden="true"
151
- class="expandCollapseButton"
152
- @click="${(x, c) => x.handleExpandCollapseButtonClick(c.event)}"
153
- ${fastElement.ref("expandCollapseButton")}
154
- >
155
- <${iconTag} class="expandCollapseIcon" name="${(x) => x.expanded ? "chevron-down-line" : "chevron-right-line"}"></${iconTag}>
156
- </div>`;
157
- };
158
- const TreeItemTemplate = (context) => {
159
- const affixIconTemplate = affix.affixIconTemplateFactory(context);
160
- const treeItemTagName = context.tagFor(TreeItem, true);
161
- return fastElement.html` <template
162
- slot="${(x) => x.isNestedItem() ? "item" : void 0}"
163
- tabindex="-1"
164
- ${hostSemantics.applyHostSemantics({
165
- role: "treeitem",
166
- ariaExpanded: (x) => x.childItems && x.childItems.length > 0 ? x.expanded : void 0,
252
+ <template
253
+ ${hostSemantics.applyHostSemantics({
254
+ role: "option",
255
+ ariaChecked: (x) => x.checked,
167
256
  ariaSelected: (x) => x.selected,
168
257
  ariaDisabled: (x) => x.disabled
169
258
  })}
170
- @focusin="${(x, c) => x.handleFocus(c.event)}"
171
- @focusout="${(x, c) => x.handleBlur(c.event)}"
172
- ${fastElement.children({
173
- property: "childItems",
174
- filter: fastElement.elements(treeItemTagName)
175
- })}
176
- >
177
- <div class="${getClasses}">
178
- ${fastElement.when(
179
- (x) => x.childItems && x.childItems.length > 0,
180
- expandCollapseButton(context)
259
+ style="${(x) => x._isNotMatching ? "display: none" : ""}"
260
+ >
261
+ <div class="${getClasses}">
262
+ ${(x) => affixIconTemplate(x.icon, affix.IconWrapper.Slot)} ${text()}
263
+ <slot name="trailing-meta"></slot>
264
+ ${fastElement.when(
265
+ (x) => x._displayCheckmark && x.selected,
266
+ fastElement.html`<${iconTag} class="checkmark" name="check-line"></${iconTag}>`
181
267
  )}
182
- ${(x) => affixIconTemplate(x.icon, affix.IconWrapper.Slot)}
183
- ${(x) => x.text}
184
- </div>
185
- ${fastElement.when(
186
- (x) => x.childItems && x.childItems.length > 0 && x.expanded,
187
- fastElement.html` <div role="group" class="items">
188
- <slot name="item" ${fastElement.slotted("items")}></slot>
189
- </div>`
190
- )}
191
- </template>`;
268
+ </div>
269
+ </template>
270
+ `;
192
271
  };
193
272
 
194
- const treeItemDefinition = vividElement.defineVividComponent(
195
- "tree-item",
196
- TreeItem,
197
- TreeItemTemplate,
273
+ const styles = ":host([disabled]){cursor:not-allowed}.base{--_connotation-color-primary: var(--vvd-option-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-option-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-option-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-firm: var(--vvd-option-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-option-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-option-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-pale: var(--vvd-option-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-dim: var(--vvd-option-accent-dim, var(--vvd-color-neutral-200))}.base{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}@media (hover: hover){.base:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}}.base.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base.disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:active:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base.active:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base.selected:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}@media (hover: hover){.base.selected:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}}.base.selected.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.base{display:flex;box-sizing:border-box;align-items:center;border-radius:8px;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_option-appearance-color-text, var(--_appearance-color-text));font:var(--vvd-typography-base);gap:var(--_option-gap);hyphens:auto;inline-size:100%;min-block-size:var(--_option-min-block-size);padding-inline:var(--_option-padding-inline);vertical-align:middle;word-break:break-word}.base{--_option-min-block-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;--_option-padding-inline: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*.4) ;--_option-icon-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/2) }.base:not(.two-lines){--_option-gap: calc( calc(1px*(36 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) / 3);padding-block:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2))/4)}.base.two-lines{gap:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2))*.4);padding-block:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))/2)}@supports (user-select: none){.base{user-select:none}}.base:not(.disabled){cursor:pointer}.base.disabled{pointer-events:none}:host([scale=condensed]) .base{--_option-min-block-size: calc(1px*(32 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;--_option-padding-inline: calc(1px*(24 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/2) ;--_option-icon-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*.4) }:host([scale=condensed]) .base:not(.two-lines){--_option-gap: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/5) ;padding-block:calc(calc(1px*(36 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 6)}:host([scale=condensed]) .base.two-lines{gap:calc(calc(1px*(36 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 3);padding-block:calc(1px*(32 + 4*clamp(-1,var(--vvd-size-density, 0),2))/4)}.base.active{--focus-stroke-color: var(--vvd-color-cta-500);--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))}.base.hidden{display:none}.text{display:flex;flex-direction:column;font:var(--vvd-typography-base);gap:4px;margin-inline-end:auto}.text-primary,.text-secondary{display:block;font:var(--vvd-typography-base)}.text-primary{font:var(--vvd-typography-base)}.base:not(.disabled) .text-primary{color:var(--vvd-color-canvas-text)}.base.disabled .text-primary{color:var(--_appearance-color-text)}.base.two-lines .text-primary{font:var(--vvd-typography-base-bold)}.text-secondary{color:var(--vvd-color-neutral-800);font:var(--vvd-typography-base-condensed)}.base.two-lines .text-secondary{color:var(--vvd-color-neutral-600)}.base.disabled .text-secondary{color:var(--_appearance-color-text)}.base.selected:not(.disabled) .text-secondary{color:var(--vvd-color-neutral-800)}.match{color:var(--vvd-color-cta-600);font:var(--vvd-typography-base-bold)}slot[name=icon]{font-size:var(--_option-icon-size);line-height:1}.base:not(.disabled,.selected) slot[name=icon]{color:var(--vvd-color-neutral-600)}.checkmark{font-size:var(--_option-icon-size)}";
274
+
275
+ const listboxOptionDefinition = vividElement.defineVividComponent(
276
+ "option",
277
+ ListboxOption,
278
+ ListboxOptionTemplate,
198
279
  [icon_definition.iconDefinition],
199
280
  {
200
281
  styles
201
282
  }
202
283
  );
203
- const registerTreeItem = vividElement.createRegisterFunction(treeItemDefinition);
284
+ const registerOption = vividElement.createRegisterFunction(listboxOptionDefinition);
204
285
 
205
- exports.TreeItem = TreeItem;
206
- exports.isTreeItemElement = isTreeItemElement;
207
- exports.registerTreeItem = registerTreeItem;
208
- exports.treeItemDefinition = treeItemDefinition;
286
+ exports.ListboxOption = ListboxOption;
287
+ exports.isListboxOption = isListboxOption;
288
+ exports.listboxOptionDefinition = listboxOptionDefinition;
289
+ exports.registerOption = registerOption;