@vonage/vivid 5.16.0 → 5.17.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 (317) hide show
  1. package/accordion/index.cjs +1 -1
  2. package/accordion/index.js +1 -1
  3. package/accordion-item/index.cjs +1 -1
  4. package/accordion-item/index.js +1 -1
  5. package/action-group/index.cjs +3 -3
  6. package/action-group/index.js +5 -5
  7. package/alert/index.cjs +3 -3
  8. package/alert/index.js +17 -17
  9. package/audio-player/index.cjs +16 -16
  10. package/audio-player/index.js +27 -27
  11. package/avatar/index.cjs +2 -2
  12. package/avatar/index.js +6 -6
  13. package/badge/index.cjs +2 -2
  14. package/badge/index.js +6 -6
  15. package/banner/index.cjs +3 -3
  16. package/banner/index.js +15 -15
  17. package/bundled/base-color-picker.cjs +2 -2
  18. package/bundled/base-color-picker.js +5 -5
  19. package/bundled/button.cjs +1 -1
  20. package/bundled/button.js +2 -2
  21. package/bundled/calendar-picker.template.cjs +2 -2
  22. package/bundled/calendar-picker.template.js +498 -498
  23. package/bundled/definition10.cjs +18 -30
  24. package/bundled/definition10.js +53 -155
  25. package/bundled/definition11.cjs +10 -19
  26. package/bundled/definition11.js +25 -74
  27. package/bundled/definition12.cjs +72 -18
  28. package/bundled/definition12.js +171 -107
  29. package/bundled/definition13.cjs +18 -17
  30. package/bundled/definition13.js +45 -65
  31. package/bundled/definition14.cjs +5 -10
  32. package/bundled/definition14.js +9 -27
  33. package/bundled/definition15.cjs +17 -71
  34. package/bundled/definition15.js +64 -181
  35. package/bundled/definition16.cjs +12 -4
  36. package/bundled/definition16.js +79 -14
  37. package/bundled/definition17.cjs +19 -13
  38. package/bundled/definition17.js +119 -70
  39. package/bundled/definition18.cjs +87 -12
  40. package/bundled/definition18.js +409 -52
  41. package/bundled/definition19.cjs +5 -87
  42. package/bundled/definition19.js +14 -422
  43. package/bundled/definition2.cjs +3 -3
  44. package/bundled/definition2.js +27 -27
  45. package/bundled/definition20.cjs +30 -5
  46. package/bundled/definition20.js +159 -9
  47. package/bundled/definition21.cjs +28 -19
  48. package/bundled/definition21.js +164 -47
  49. package/bundled/definition22.cjs +38 -23
  50. package/bundled/definition22.js +64 -82
  51. package/bundled/definition3.cjs +1 -1
  52. package/bundled/definition3.js +15 -15
  53. package/bundled/definition4.cjs +23 -38
  54. package/bundled/definition4.js +82 -64
  55. package/bundled/definition5.cjs +2 -2
  56. package/bundled/definition5.js +5 -5
  57. package/bundled/definition6.cjs +2 -2
  58. package/bundled/definition6.js +24 -24
  59. package/bundled/definition9.cjs +12 -30
  60. package/bundled/definition9.js +55 -148
  61. package/bundled/divider.cjs +1 -1
  62. package/bundled/divider.js +5 -5
  63. package/bundled/listbox.cjs +1 -1
  64. package/bundled/listbox.js +1 -1
  65. package/bundled/mixins.cjs +4 -4
  66. package/bundled/mixins.js +43 -43
  67. package/bundled/picker-field.template.cjs +7 -7
  68. package/bundled/picker-field.template.js +14 -14
  69. package/bundled/slider.template.cjs +7 -7
  70. package/bundled/slider.template.js +12 -12
  71. package/bundled/slottable-request.cjs +1 -1
  72. package/bundled/slottable-request.js +8 -38
  73. package/bundled/time-selection-picker.template.cjs +4 -4
  74. package/bundled/time-selection-picker.template.js +35 -35
  75. package/bundled/vivid-element.cjs +1 -1
  76. package/bundled/vivid-element.js +1 -1
  77. package/calendar/index.cjs +11 -11
  78. package/calendar/index.js +30 -237
  79. package/calendar-event/index.cjs +3 -3
  80. package/calendar-event/index.js +4 -4
  81. package/card/index.cjs +14 -11
  82. package/card/index.js +16 -13
  83. package/checkbox/index.cjs +1 -1
  84. package/checkbox/index.js +1 -1
  85. package/color-picker/definition.cjs +1 -1
  86. package/color-picker/definition.js +1 -1
  87. package/color-picker/index.cjs +6 -6
  88. package/color-picker/index.js +24 -24
  89. package/combobox/definition.cjs +1 -1
  90. package/combobox/definition.js +1 -1
  91. package/combobox/index.cjs +9 -8
  92. package/combobox/index.js +32 -28
  93. package/contextual-help/definition.cjs +1 -1
  94. package/contextual-help/definition.js +1 -1
  95. package/contextual-help/index.cjs +1 -1
  96. package/contextual-help/index.js +1 -1
  97. package/custom-elements.json +1027 -615
  98. package/data-grid/definition.js +1 -1
  99. package/data-grid/index.cjs +17 -17
  100. package/data-grid/index.js +261 -264
  101. package/date-picker/index.cjs +1 -1
  102. package/date-picker/index.js +12 -12
  103. package/date-range-picker/index.cjs +1 -1
  104. package/date-range-picker/index.js +7 -7
  105. package/date-time-picker/index.cjs +4 -4
  106. package/date-time-picker/index.js +24 -24
  107. package/dial-pad/index.cjs +3 -2
  108. package/dial-pad/index.js +6 -5
  109. package/dialog/index.cjs +4 -4
  110. package/dialog/index.js +5 -5
  111. package/divider/index.cjs +1 -1
  112. package/divider/index.js +1 -1
  113. package/fab/index.cjs +3 -3
  114. package/fab/index.js +8 -8
  115. package/file-picker/index.cjs +16 -13
  116. package/file-picker/index.js +31 -28
  117. package/header/index.cjs +4 -4
  118. package/header/index.js +5 -5
  119. package/index.cjs +24 -21
  120. package/index.js +11 -11
  121. package/lib/combobox/combobox.d.ts +0 -3
  122. package/lib/date-time-picker/date-time-picker.d.ts +0 -4
  123. package/lib/dial-pad/dial-pad.d.ts +6 -2
  124. package/lib/dialog/dialog.d.ts +0 -1
  125. package/lib/menu/menu.d.ts +0 -1
  126. package/lib/option/option.d.ts +0 -1
  127. package/lib/rich-text-editor/rte/exports.d.ts +1 -0
  128. package/lib/rich-text-editor/rte/features/alignment.d.ts +1 -1
  129. package/lib/rich-text-editor/rte/features/character-count.d.ts +21 -0
  130. package/lib/rich-text-editor/rte/features/font-size-picker.d.ts +1 -1
  131. package/lib/rich-text-editor/rte/features/internal/basic-text-blocks.d.ts +1 -1
  132. package/lib/rich-text-editor/rte/features/keyboard-shortcuts.d.ts +1 -1
  133. package/lib/rich-text-editor/rte/features/text-color-picker.d.ts +1 -1
  134. package/lib/rich-text-editor/rte/public-interface.d.ts +6 -0
  135. package/lib/searchable-select/option-tag.d.ts +0 -1
  136. package/lib/table/definition.d.ts +2 -1
  137. package/lib/table/table-header-cell.d.ts +3 -0
  138. package/lib/table/table-sorting-button.d.ts +415 -0
  139. package/lib/table/table-sorting-button.template.d.ts +3 -0
  140. package/locales/de-DE.cjs +4 -178
  141. package/locales/de-DE.js +2 -179
  142. package/locales/en-GB.cjs +4 -9
  143. package/locales/en-GB.js +2 -10
  144. package/locales/en-US.cjs +268 -2
  145. package/locales/en-US.js +265 -1
  146. package/locales/ja-JP.cjs +4 -171
  147. package/locales/ja-JP.js +2 -172
  148. package/locales/zh-CN.cjs +4 -172
  149. package/locales/zh-CN.js +2 -173
  150. package/menu/index.cjs +1 -1
  151. package/menu/index.js +1 -1
  152. package/menu-item/index.cjs +1 -1
  153. package/menu-item/index.js +1 -1
  154. package/nav-disclosure/index.cjs +3 -3
  155. package/nav-disclosure/index.js +8 -8
  156. package/nav-item/index.cjs +1 -1
  157. package/nav-item/index.js +7 -7
  158. package/note/index.cjs +2 -2
  159. package/note/index.js +6 -6
  160. package/number-field/index.cjs +4 -4
  161. package/number-field/index.js +31 -31
  162. package/option/definition.cjs +1 -1
  163. package/option/definition.js +1 -1
  164. package/option/index.cjs +1 -1
  165. package/option/index.js +1 -1
  166. package/package.json +7 -8
  167. package/pagination/index.cjs +3 -3
  168. package/pagination/index.js +15 -15
  169. package/popover/index.cjs +4 -4
  170. package/popover/index.js +5 -5
  171. package/progress/index.cjs +2 -2
  172. package/progress/index.js +5 -5
  173. package/radio/index.cjs +1 -1
  174. package/radio/index.js +1 -1
  175. package/radio-group/index.cjs +4 -4
  176. package/radio-group/index.js +10 -10
  177. package/range-slider/index.cjs +4 -4
  178. package/range-slider/index.js +17 -17
  179. package/rich-text-editor/definition.cjs +1 -0
  180. package/rich-text-editor/definition.js +2 -2
  181. package/rich-text-editor/index.cjs +13 -13
  182. package/rich-text-editor/index.js +1886 -1829
  183. package/rich-text-view/index.cjs +1 -1
  184. package/rich-text-view/index.js +8 -8
  185. package/searchable-select/index.cjs +12 -12
  186. package/searchable-select/index.js +25 -25
  187. package/select/index.cjs +1 -1
  188. package/select/index.js +1 -1
  189. package/selectable-box/index.cjs +7 -7
  190. package/selectable-box/index.js +11 -11
  191. package/shared/foundation/test-utilities/fixture.d.ts +1 -1
  192. package/shared/patterns/linkable.d.ts +1 -1
  193. package/simple-color-picker/index.cjs +3 -3
  194. package/simple-color-picker/index.js +10 -10
  195. package/split-button/index.cjs +5 -5
  196. package/split-button/index.js +10 -10
  197. package/status/index.cjs +2 -2
  198. package/status/index.js +12 -12
  199. package/switch/index.cjs +3 -3
  200. package/switch/index.js +5 -5
  201. package/tab/index.cjs +1 -1
  202. package/tab/index.js +1 -1
  203. package/tab-panel/index.cjs +1 -1
  204. package/tab-panel/index.js +1 -1
  205. package/table/definition.cjs +17 -14
  206. package/table/definition.js +3 -2
  207. package/table/index.cjs +19 -10
  208. package/table/index.js +69 -21
  209. package/tabs/index.cjs +2 -2
  210. package/tabs/index.js +4 -4
  211. package/tag/index.cjs +7 -7
  212. package/tag/index.js +9 -9
  213. package/tag-group/index.cjs +3 -3
  214. package/tag-group/index.js +5 -5
  215. package/text-area/index.cjs +2 -2
  216. package/text-area/index.js +12 -12
  217. package/text-field/definition.cjs +1 -1
  218. package/text-field/definition.js +1 -1
  219. package/text-field/index.cjs +1 -1
  220. package/text-field/index.js +1 -1
  221. package/time-picker/index.cjs +1 -1
  222. package/time-picker/index.js +1 -1
  223. package/toggletip/definition.cjs +1 -1
  224. package/toggletip/definition.js +1 -1
  225. package/toggletip/index.cjs +1 -1
  226. package/toggletip/index.js +1 -1
  227. package/tooltip/definition.cjs +1 -1
  228. package/tooltip/definition.js +1 -1
  229. package/tooltip/index.cjs +1 -1
  230. package/tooltip/index.js +1 -1
  231. package/tree-item/index.cjs +1 -1
  232. package/tree-item/index.js +1 -1
  233. package/tree-view/index.cjs +3 -3
  234. package/tree-view/index.js +17 -17
  235. package/unbundled/button.cjs +2 -2
  236. package/unbundled/button.js +2 -2
  237. package/unbundled/calendar-picker.template.cjs +4347 -9
  238. package/unbundled/calendar-picker.template.js +4345 -7
  239. package/unbundled/chunk.cjs +0 -22
  240. package/unbundled/definition13.cjs +1 -8
  241. package/unbundled/definition13.js +1 -8
  242. package/unbundled/definition14.cjs +2 -2
  243. package/unbundled/definition14.js +2 -2
  244. package/unbundled/definition2.cjs +1 -1
  245. package/unbundled/definition2.js +1 -1
  246. package/unbundled/definition21.cjs +1 -2
  247. package/unbundled/definition21.js +1 -2
  248. package/unbundled/definition22.cjs +7 -2
  249. package/unbundled/definition22.js +7 -2
  250. package/unbundled/definition24.cjs +98 -979
  251. package/unbundled/definition24.js +93 -974
  252. package/unbundled/definition25.cjs +37 -322
  253. package/unbundled/definition25.js +33 -318
  254. package/unbundled/definition26.cjs +317 -91
  255. package/unbundled/definition26.js +313 -87
  256. package/unbundled/definition27.cjs +94 -192
  257. package/unbundled/definition27.js +91 -183
  258. package/unbundled/definition28.cjs +387 -395
  259. package/unbundled/definition28.js +387 -395
  260. package/unbundled/definition29.cjs +189 -110
  261. package/unbundled/definition29.js +180 -107
  262. package/unbundled/definition30.cjs +520 -36
  263. package/unbundled/definition30.js +519 -35
  264. package/unbundled/definition32.cjs +477 -477
  265. package/unbundled/definition32.js +475 -475
  266. package/unbundled/definition33.cjs +87 -2
  267. package/unbundled/definition33.js +77 -4
  268. package/unbundled/definition35.cjs +2 -2
  269. package/unbundled/definition35.js +2 -2
  270. package/unbundled/definition36.cjs +1 -1
  271. package/unbundled/definition36.js +1 -1
  272. package/unbundled/definition37.cjs +6 -2
  273. package/unbundled/definition37.js +6 -2
  274. package/unbundled/definition38.cjs +7 -5
  275. package/unbundled/definition38.js +7 -5
  276. package/unbundled/definition39.cjs +1 -0
  277. package/unbundled/definition39.js +1 -0
  278. package/unbundled/definition42.cjs +22 -11
  279. package/unbundled/definition42.js +22 -11
  280. package/unbundled/definition49.cjs +3 -3
  281. package/unbundled/definition49.js +3 -3
  282. package/unbundled/definition56.cjs +437 -9506
  283. package/unbundled/definition56.js +340 -9415
  284. package/unbundled/definition57.cjs +5 -5
  285. package/unbundled/definition57.js +5 -5
  286. package/unbundled/definition58.cjs +4 -3
  287. package/unbundled/definition58.js +2 -1
  288. package/unbundled/definition59.cjs +4 -3
  289. package/unbundled/definition59.js +4 -3
  290. package/unbundled/definition62.cjs +2 -2
  291. package/unbundled/definition62.js +2 -2
  292. package/unbundled/definition64.cjs +1 -1
  293. package/unbundled/definition64.js +1 -1
  294. package/unbundled/definition71.cjs +2 -2
  295. package/unbundled/definition71.js +2 -2
  296. package/unbundled/definition72.cjs +1 -2
  297. package/unbundled/definition72.js +1 -2
  298. package/unbundled/definition75.cjs +3 -51711
  299. package/unbundled/definition75.js +1 -51711
  300. package/unbundled/listbox.cjs +1 -1
  301. package/unbundled/listbox.js +1 -1
  302. package/unbundled/localized.cjs +2 -2
  303. package/unbundled/localized.js +1 -1
  304. package/unbundled/picker-field.template.cjs +1 -1
  305. package/unbundled/picker-field.template.js +1 -1
  306. package/unbundled/slottable-request.cjs +2 -3168
  307. package/unbundled/slottable-request.js +3 -3097
  308. package/unbundled/time-selection-picker.template.cjs +1 -1
  309. package/unbundled/time-selection-picker.template.js +1 -1
  310. package/unbundled/vivid-element.cjs +1 -1
  311. package/unbundled/vivid-element.js +1 -1
  312. package/video-player/index.cjs +3 -3
  313. package/video-player/index.js +9 -9
  314. package/vivid.api.json +220 -282
  315. package/unbundled/chunk.js +0 -33
  316. package/unbundled/en-US.cjs +0 -447
  317. package/unbundled/en-US.js +0 -443
@@ -1,157 +1,236 @@
1
1
  require("./chunk.cjs");
2
2
  const require_vivid_element = require("./vivid-element.cjs");
3
+ const require_definition = require("./definition2.cjs");
3
4
  const require_decorate = require("./decorate.cjs");
4
- const require_localized = require("./localized.cjs");
5
- const require_dialog = require("./dialog.cjs");
6
- const require_definition = require("./definition10.cjs");
7
- const require_anchored = require("./anchored.cjs");
5
+ const require_affix = require("./affix.cjs");
6
+ const require_host_semantics = require("./host-semantics.cjs");
8
7
  let _microsoft_fast_element = require("@microsoft/fast-element");
9
8
  let _microsoft_fast_web_utilities = require("@microsoft/fast-web-utilities");
10
- //#region src/lib/toggletip/toggletip.scss?inline
11
- var toggletip_default = ":host :host{display:var(--_popup-display,inline)}:host :host([slotted-anchor]){--_popup-display:contents}.content-wrapper{width:var(--toggletip-inline-size,auto);max-inline-size:var(--toggletip-max-inline-size,30ch);padding:16px}.headline{font:var(--vvd-typography-base-bold);margin:0}.action-items{justify-content:flex-end;gap:10px;display:flex}::slotted([slot=action-items]){margin-block-start:16px}";
12
- //#endregion
13
- //#region src/lib/toggletip/toggletip.ts
9
+ //#region src/lib/option/option.ts
14
10
  /**
11
+ * Determines if the element is a {@link (ListboxOption:class)}
12
+ *
13
+ * @param element - the element to test.
15
14
  * @public
16
- * @component toggletip
17
- * @slot - The content to display in the toggletip.
18
- * @slot anchor - Used to set the anchor element for the toggletip.
19
- * @slot action-items - The content to display in the toggletip action items.
20
- * @testSelector byHeadline byHeadline
21
- * @testQuery open open true
22
- * @testQuery closed open false
23
15
  */
24
- var Toggletip = class extends require_localized.Localized(require_anchored.Anchored(require_vivid_element.VividElement)) {
25
- constructor(..._args) {
26
- super(..._args);
27
- this.alternate = false;
28
- this.placement = "right";
29
- this.open = false;
30
- }
31
- #originalAriaLabel = null;
16
+ function isListboxOption(el) {
17
+ return (0, _microsoft_fast_web_utilities.isHTMLElement)(el) && (el.getAttribute("role") === "option" || el instanceof HTMLOptionElement || el instanceof ListboxOption);
18
+ }
19
+ /**
20
+ * An Option Custom HTML Element.
21
+ * Implements {@link https://www.w3.org/TR/wai-aria-1.1/#option | ARIA option }.
22
+ *
23
+ * @public
24
+ * @component option
25
+ * @slot icon - The preferred way to add an icon to the component.
26
+ * @slot tag-icon - Icon to be displayed in the tag when selected inside of Searchable Select.
27
+ * @slot trailing-meta - For additional elements at the end of the Option.
28
+ * @testAction click click #locator
29
+ */
30
+ var ListboxOption = class extends require_host_semantics.HostSemantics(require_affix.AffixIconWithTrailing(require_vivid_element.VividElement)) {
31
+ defaultSelectedChanged() {
32
+ if (!this.dirtySelected) {
33
+ this.selected = this.defaultSelected;
34
+ if (this.proxy instanceof HTMLOptionElement) this.proxy.selected = this.defaultSelected;
35
+ }
36
+ if (this.proxy instanceof HTMLOptionElement) this.proxy.defaultSelected = this.defaultSelected;
37
+ }
38
+ disabledChanged() {
39
+ /* v8 ignore if -- @preserve */
40
+ if (this.proxy instanceof HTMLOptionElement) this.proxy.disabled = this.disabled;
41
+ }
42
+ /**
43
+ * @deprecated Use `defaultSelected` instead.
44
+ */
45
+ get selectedAttribute() {
46
+ return this.defaultSelected;
47
+ }
48
+ set selectedAttribute(value) {
49
+ this.defaultSelected = value;
50
+ }
51
+ selectedChanged() {
52
+ if (!this.dirtySelected) this.dirtySelected = true;
53
+ if (this.proxy instanceof HTMLOptionElement) this.proxy.selected = this.selected;
54
+ }
55
+ valueChanged() {
56
+ if (typeof this.value !== "string") {
57
+ this.value = "";
58
+ return;
59
+ }
60
+ if (this.proxy instanceof HTMLOptionElement) this.proxy.value = this.value;
61
+ }
62
+ get label() {
63
+ return this._label ?? this.text;
64
+ }
65
+ set label(value) {
66
+ this._label = value;
67
+ }
68
+ set text(value) {
69
+ this._text = value;
70
+ }
71
+ get text() {
72
+ return this._text ?? "";
73
+ }
32
74
  /**
75
+ * Provides an accessible name for use by parent components.
76
+ * Note: Does not implement full accessible name computation, e.g. slotted content is missed.
33
77
  * @internal
34
78
  */
35
- openChanged(oldValue, newValue) {
36
- if (oldValue === void 0) return;
37
- if (newValue) this.setAttribute("role", "status");
38
- else this.removeAttribute("role");
39
- this.#updateListeners();
40
- if (this._anchorEl) this.#updateAnchor(this._anchorEl);
79
+ _getAccessibleName() {
80
+ return this.ariaLabel || `${this.text}${this.textSecondary ? ` ${this.textSecondary}` : ""}`;
41
81
  }
42
- connectedCallback() {
43
- super.connectedCallback();
44
- this.#updateListeners();
82
+ get form() {
83
+ return null;
45
84
  }
46
- disconnectedCallback() {
47
- super.disconnectedCallback();
48
- this.#updateListeners();
85
+ /** @internal */
86
+ get _hasMatchedText() {
87
+ return Boolean(this.matchedText ?? this._vvdSearchText);
49
88
  }
50
89
  /**
90
+ * From is inclusive, to is exclusive.
51
91
  * @internal
52
92
  */
53
- _anchorElChanged(oldValue, newValue) {
54
- if (oldValue) this.#cleanupAnchor(oldValue);
55
- if (newValue) this.#setupAnchor(newValue);
56
- }
57
- #setupAnchor(a) {
58
- a.addEventListener("click", this.#openIfClosed, true);
59
- this.#originalAriaLabel = a.ariaLabel;
60
- a.ariaLabel = `${this.locale.toggletip.anchorLabel(a.ariaLabel || "")}`;
61
- this.#updateAnchor(a);
62
- }
63
- #updateAnchor(a) {
64
- a.setAttribute("aria-expanded", this.open.toString());
65
- a.setAttribute("data-expanded", this.open.toString());
66
- }
67
- #cleanupAnchor(a) {
68
- a.removeEventListener("click", this.#openIfClosed, true);
69
- a.removeAttribute("aria-expanded");
70
- a.removeAttribute("data-expanded");
71
- /* v8 ignore else -- @preserve */
72
- if (a.ariaLabel) a.ariaLabel = this.#originalAriaLabel;
73
- }
74
- #openIfClosed = () => {
75
- if (!this.open) _microsoft_fast_element.Updates.enqueue(() => this.open = true);
76
- };
77
- #updateListeners() {
78
- document.removeEventListener("click", this.#closeOnClickOutside);
79
- document.removeEventListener("keydown", this.#closeOnEscape);
80
- if (this.open && this.isConnected) {
81
- document.addEventListener("click", this.#closeOnClickOutside);
82
- document.addEventListener("keydown", this.#closeOnEscape);
93
+ get _matchedRange() {
94
+ const matchedText = this.matchedText ?? this._vvdSearchText;
95
+ if (matchedText) {
96
+ const matchIndex = this.text.toLowerCase().indexOf(matchedText.toLowerCase());
97
+ return matchIndex === -1 ? {
98
+ from: 0,
99
+ to: 0
100
+ } : {
101
+ from: matchIndex,
102
+ to: matchIndex + matchedText.length
103
+ };
104
+ }
105
+ return {
106
+ from: 0,
107
+ to: 0
108
+ };
109
+ }
110
+ constructor(text, value, defaultSelected, selected) {
111
+ super();
112
+ this.defaultSelected = false;
113
+ this.dirtySelected = false;
114
+ this.value = "";
115
+ this._highlighted = false;
116
+ this._displayCheckmark = false;
117
+ this._vvdSearchText = "";
118
+ this._isNotMatching = false;
119
+ if (text) this.text = text;
120
+ if (value) this.value = value;
121
+ if (defaultSelected) this.defaultSelected = defaultSelected;
122
+ if (selected) this.selected = selected;
123
+ this.proxy = new Option(this.text, this.value, this.defaultSelected, this.selected);
124
+ this.proxy.disabled = this.disabled;
125
+ }
126
+ /**
127
+ * @internal
128
+ */
129
+ connectedCallback() {
130
+ super.connectedCallback();
131
+ if (!this.dirtySelected) {
132
+ this.selected = this.defaultSelected;
133
+ this.dirtySelected = false;
83
134
  }
84
135
  }
85
- #closeOnClickOutside = (e) => {
86
- const clickedOutside = !this.contains(e.target);
87
- const clickedOnAnchor = this._anchorEl?.contains(e.target);
88
- if (clickedOutside || clickedOnAnchor) this.open = false;
89
- };
90
- #closeOnEscape = (e) => {
91
- /* v8 ignore else -- @preserve */
92
- if (e.key === "Escape") this.open = false;
93
- };
94
136
  };
95
- require_decorate.__decorate([_microsoft_fast_element.attr], Toggletip.prototype, "headline", void 0);
96
- require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], Toggletip.prototype, "alternate", void 0);
97
- require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "fromView" })], Toggletip.prototype, "placement", void 0);
98
- require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], Toggletip.prototype, "open", void 0);
137
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ converter: {
138
+ fromView: (value) => {
139
+ if (value === true || value === "true") return true;
140
+ if (value === false || value === "false") return false;
141
+ },
142
+ toView: (value) => value
143
+ } })], ListboxOption.prototype, "checked", void 0);
144
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({
145
+ attribute: "selected",
146
+ mode: "boolean"
147
+ })], ListboxOption.prototype, "defaultSelected", void 0);
148
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], ListboxOption.prototype, "disabled", void 0);
149
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({
150
+ attribute: "current-selected",
151
+ mode: "boolean"
152
+ })], ListboxOption.prototype, "selected", void 0);
153
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "value" })], ListboxOption.prototype, "value", void 0);
154
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "label" })], ListboxOption.prototype, "_label", void 0);
155
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "text" })], ListboxOption.prototype, "_text", void 0);
156
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "text-secondary" })], ListboxOption.prototype, "textSecondary", void 0);
157
+ require_decorate.__decorate([_microsoft_fast_element.observable], ListboxOption.prototype, "_highlighted", void 0);
158
+ require_decorate.__decorate([_microsoft_fast_element.observable], ListboxOption.prototype, "_displayCheckmark", void 0);
159
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "matched-text" })], ListboxOption.prototype, "matchedText", void 0);
160
+ require_decorate.__decorate([_microsoft_fast_element.observable], ListboxOption.prototype, "_vvdSearchText", void 0);
161
+ require_decorate.__decorate([_microsoft_fast_element.volatile], ListboxOption.prototype, "_hasMatchedText", null);
162
+ require_decorate.__decorate([_microsoft_fast_element.observable], ListboxOption.prototype, "_isNotMatching", void 0);
163
+ require_decorate.__decorate([_microsoft_fast_element.volatile], ListboxOption.prototype, "_matchedRange", null);
164
+ require_decorate.__decorate([_microsoft_fast_element.attr], ListboxOption.prototype, "connotation", void 0);
165
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "tag-connotation" })], ListboxOption.prototype, "tagConnotation", void 0);
99
166
  //#endregion
100
- //#region src/lib/toggletip/toggletip.template.ts
101
- var getClasses = (_) => (0, _microsoft_fast_web_utilities.classNames)("control");
102
- var ToggletipTemplate = (context) => {
103
- const popup = context.tagFor(require_definition.Popup);
167
+ //#region src/lib/option/option.template.ts
168
+ var getClasses = (x) => (0, _microsoft_fast_web_utilities.classNames)("base", [`connotation-${x.connotation}`, Boolean(x.connotation)], ["disabled", x.disabled], ["selected", Boolean(x.selected)], ["hover", Boolean(x._highlighted)], ["active", Boolean(x.checked)], ["icon", Boolean(x.icon)], ["two-lines", Boolean(x.text?.length) && Boolean(x.textSecondary?.length)]);
169
+ function text() {
170
+ return _microsoft_fast_element.html`${(0, _microsoft_fast_element.when)((x) => x.text || x.textSecondary, _microsoft_fast_element.html`<span class="text">
171
+ ${(0, _microsoft_fast_element.when)((x) => x.text, _microsoft_fast_element.html`<span class="text-primary">
172
+ ${(0, _microsoft_fast_element.when)((x) => x._hasMatchedText, _microsoft_fast_element.html`${(x) => x.text.slice(0, x._matchedRange.from)}<span class="match"
173
+ >${(x) => x.text.slice(x._matchedRange.from, x._matchedRange.to)}</span
174
+ >`)}${(x) => x.text.slice(x._matchedRange.to)}
175
+ </span>`)}
176
+ ${(0, _microsoft_fast_element.when)((x) => x.textSecondary, _microsoft_fast_element.html`<span class="text-secondary">${(x) => x.textSecondary}</span>`)}
177
+ </span>`)}`;
178
+ }
179
+ var ListboxOptionTemplate = (context) => {
180
+ const affixIconTemplate = require_affix.affixIconTemplateFactory(context);
181
+ const iconTag = context.tagFor(require_definition.Icon);
104
182
  return _microsoft_fast_element.html`
105
- ${require_anchored.anchorSlotTemplateFactory()}
106
- <${popup}
107
- @keydown="${(x, { event }) => {
108
- if (x.open && require_dialog.handleEscapeKeyAndStopPropogation(event)) return false;
109
- return true;
110
- }}"
111
- class="${getClasses}"
112
- arrow
113
- :anchor="${(x) => x._anchorEl}"
114
- :open="${(x) => x.open}"
115
- ?alternate="${(x) => !x.alternate}"
116
- placement="${(x) => x.placement}"
117
- exportparts="vvd-theme-alternate"
183
+ <template
184
+ ${require_host_semantics.applyHostSemantics({
185
+ role: "option",
186
+ ariaChecked: (x) => x.checked,
187
+ ariaSelected: (x) => x.selected,
188
+ ariaDisabled: (x) => x.disabled
189
+ })}
190
+ style="${(x) => x._isNotMatching ? "display: none" : ""}"
118
191
  >
119
- <div class="content-wrapper">
120
- ${(0, _microsoft_fast_element.when)((x) => x.headline, _microsoft_fast_element.html`<h2 class="headline">${(x) => x.headline}</h2>`)}
121
- <slot></slot>
122
- <div class="action-items"><slot name="action-items"></slot></div>
192
+ <div class="${getClasses}">
193
+ ${(x) => affixIconTemplate(x.icon, require_affix.IconWrapper.Slot)} ${text()}
194
+ <slot name="trailing-meta"></slot>
195
+ ${(0, _microsoft_fast_element.when)((x) => x._displayCheckmark && x.selected, _microsoft_fast_element.html`<${iconTag} class="checkmark" name="check-line"></${iconTag}>`)}
123
196
  </div>
124
- </${popup}>
197
+ </template>
125
198
  `;
126
199
  };
127
200
  //#endregion
128
- //#region src/lib/toggletip/definition.ts
201
+ //#region src/lib/option/definition.ts
129
202
  /**
130
203
  * @internal
131
204
  */
132
- var toggletipDefinition = require_vivid_element.defineVividComponent("toggletip", Toggletip, ToggletipTemplate, [require_definition.popupDefinition], { styles: toggletip_default });
205
+ var listboxOptionDefinition = require_vivid_element.defineVividComponent("option", ListboxOption, ListboxOptionTemplate, [require_definition.iconDefinition], { styles: ":host([disabled]){cursor:not-allowed}.base.connotation-cta{--_connotation-color-primary:var(--vvd-option-cta-primary,var(--vvd-color-cta-500));--_connotation-color-primary-text:var(--vvd-option-cta-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-option-cta-primary-increment,var(--vvd-color-cta-600));--_connotation-color-firm:var(--vvd-option-cta-firm,var(--vvd-color-cta-600));--_connotation-color-faint:var(--vvd-option-cta-faint,var(--vvd-color-cta-50));--_connotation-color-soft:var(--vvd-option-cta-soft,var(--vvd-color-cta-100));--_connotation-color-pale:var(--vvd-option-cta-pale,var(--vvd-color-cta-300));--_connotation-color-dim:var(--vvd-option-cta-dim,var(--vvd-color-cta-200))}.base:not(.connotation-cta){--_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,.base.disabled{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:transparent}.base:active:where(:not(.disabled,:disabled)),.base.active:where(:not(.disabled,:disabled)),.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{box-sizing:border-box;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);align-items:center;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;--_option-min-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2)));--_option-padding-inline:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) / 2.5);--_option-icon-size:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) / 2);border-radius:8px;display:flex}.base:not(.two-lines){--_option-gap:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 4)) / 3);padding-block:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) / 4)}.base.two-lines{gap:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) / 2.5);padding-block:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16)) / 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 * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 8));--_option-padding-inline:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16)) / 2);--_option-icon-size:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) / 2.5)}:host([scale=condensed]) .base:not(.two-lines){--_option-gap:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) / 5);padding-block:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 4)) / 6)}:host([scale=condensed]) .base.two-lines{gap:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 4)) / 3);padding-block:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 8)) / 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(--focus-stroke-color,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{font:var(--vvd-typography-base);flex-direction:column;gap:4px;margin-inline-end:auto;display:flex}.text-primary,.text-secondary{font:var(--vvd-typography-base);display:block}.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)}" });
133
206
  /**
134
- * Registers the toggletip element with the design system.
207
+ * Registers the listbox-option elements with the design system.
135
208
  *
136
209
  * @param prefix - the prefix to use for the component name
137
210
  */
138
- var registerToggletip = require_vivid_element.createRegisterFunction(toggletipDefinition);
211
+ var registerOption = require_vivid_element.createRegisterFunction(listboxOptionDefinition);
139
212
  //#endregion
140
- Object.defineProperty(exports, "Toggletip", {
213
+ Object.defineProperty(exports, "ListboxOption", {
214
+ enumerable: true,
215
+ get: function() {
216
+ return ListboxOption;
217
+ }
218
+ });
219
+ Object.defineProperty(exports, "isListboxOption", {
141
220
  enumerable: true,
142
221
  get: function() {
143
- return Toggletip;
222
+ return isListboxOption;
144
223
  }
145
224
  });
146
- Object.defineProperty(exports, "registerToggletip", {
225
+ Object.defineProperty(exports, "listboxOptionDefinition", {
147
226
  enumerable: true,
148
227
  get: function() {
149
- return registerToggletip;
228
+ return listboxOptionDefinition;
150
229
  }
151
230
  });
152
- Object.defineProperty(exports, "toggletipDefinition", {
231
+ Object.defineProperty(exports, "registerOption", {
153
232
  enumerable: true,
154
233
  get: function() {
155
- return toggletipDefinition;
234
+ return registerOption;
156
235
  }
157
236
  });