@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,139 +1,212 @@
1
1
  import { o as defineVividComponent, s as createRegisterFunction, t as VividElement } from "./vivid-element.js";
2
+ import { r as Icon, t as iconDefinition } from "./definition2.js";
2
3
  import { t as __decorate } from "./decorate.js";
3
- import { t as Localized } from "./localized.js";
4
- import { t as handleEscapeKeyAndStopPropogation } from "./dialog.js";
5
- import { i as Popup, t as popupDefinition } from "./definition10.js";
6
- import { n as anchorSlotTemplateFactory, t as Anchored } from "./anchored.js";
7
- import { Updates, attr, html, when } from "@microsoft/fast-element";
8
- import { classNames } from "@microsoft/fast-web-utilities";
9
- //#region src/lib/toggletip/toggletip.scss?inline
10
- 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}";
11
- //#endregion
12
- //#region src/lib/toggletip/toggletip.ts
4
+ import { a as affixIconTemplateFactory, i as IconWrapper, n as AffixIconWithTrailing } from "./affix.js";
5
+ import { n as applyHostSemantics, t as HostSemantics } from "./host-semantics.js";
6
+ import { attr, html, observable, volatile, when } from "@microsoft/fast-element";
7
+ import { classNames, isHTMLElement } from "@microsoft/fast-web-utilities";
8
+ //#region src/lib/option/option.ts
9
+ /**
10
+ * Determines if the element is a {@link (ListboxOption:class)}
11
+ *
12
+ * @param element - the element to test.
13
+ * @public
14
+ */
15
+ function isListboxOption(el) {
16
+ return isHTMLElement(el) && (el.getAttribute("role") === "option" || el instanceof HTMLOptionElement || el instanceof ListboxOption);
17
+ }
13
18
  /**
19
+ * An Option Custom HTML Element.
20
+ * Implements {@link https://www.w3.org/TR/wai-aria-1.1/#option | ARIA option }.
21
+ *
14
22
  * @public
15
- * @component toggletip
16
- * @slot - The content to display in the toggletip.
17
- * @slot anchor - Used to set the anchor element for the toggletip.
18
- * @slot action-items - The content to display in the toggletip action items.
19
- * @testSelector byHeadline byHeadline
20
- * @testQuery open open true
21
- * @testQuery closed open false
23
+ * @component option
24
+ * @slot icon - The preferred way to add an icon to the component.
25
+ * @slot tag-icon - Icon to be displayed in the tag when selected inside of Searchable Select.
26
+ * @slot trailing-meta - For additional elements at the end of the Option.
27
+ * @testAction click click #locator
22
28
  */
23
- var Toggletip = class extends Localized(Anchored(VividElement)) {
24
- constructor(..._args) {
25
- super(..._args);
26
- this.alternate = false;
27
- this.placement = "right";
28
- this.open = false;
29
- }
30
- #originalAriaLabel = null;
29
+ var ListboxOption = class extends HostSemantics(AffixIconWithTrailing(VividElement)) {
30
+ defaultSelectedChanged() {
31
+ if (!this.dirtySelected) {
32
+ this.selected = this.defaultSelected;
33
+ if (this.proxy instanceof HTMLOptionElement) this.proxy.selected = this.defaultSelected;
34
+ }
35
+ if (this.proxy instanceof HTMLOptionElement) this.proxy.defaultSelected = this.defaultSelected;
36
+ }
37
+ disabledChanged() {
38
+ /* v8 ignore if -- @preserve */
39
+ if (this.proxy instanceof HTMLOptionElement) this.proxy.disabled = this.disabled;
40
+ }
41
+ /**
42
+ * @deprecated Use `defaultSelected` instead.
43
+ */
44
+ get selectedAttribute() {
45
+ return this.defaultSelected;
46
+ }
47
+ set selectedAttribute(value) {
48
+ this.defaultSelected = value;
49
+ }
50
+ selectedChanged() {
51
+ if (!this.dirtySelected) this.dirtySelected = true;
52
+ if (this.proxy instanceof HTMLOptionElement) this.proxy.selected = this.selected;
53
+ }
54
+ valueChanged() {
55
+ if (typeof this.value !== "string") {
56
+ this.value = "";
57
+ return;
58
+ }
59
+ if (this.proxy instanceof HTMLOptionElement) this.proxy.value = this.value;
60
+ }
61
+ get label() {
62
+ return this._label ?? this.text;
63
+ }
64
+ set label(value) {
65
+ this._label = value;
66
+ }
67
+ set text(value) {
68
+ this._text = value;
69
+ }
70
+ get text() {
71
+ return this._text ?? "";
72
+ }
31
73
  /**
74
+ * Provides an accessible name for use by parent components.
75
+ * Note: Does not implement full accessible name computation, e.g. slotted content is missed.
32
76
  * @internal
33
77
  */
34
- openChanged(oldValue, newValue) {
35
- if (oldValue === void 0) return;
36
- if (newValue) this.setAttribute("role", "status");
37
- else this.removeAttribute("role");
38
- this.#updateListeners();
39
- if (this._anchorEl) this.#updateAnchor(this._anchorEl);
78
+ _getAccessibleName() {
79
+ return this.ariaLabel || `${this.text}${this.textSecondary ? ` ${this.textSecondary}` : ""}`;
40
80
  }
41
- connectedCallback() {
42
- super.connectedCallback();
43
- this.#updateListeners();
81
+ get form() {
82
+ return null;
44
83
  }
45
- disconnectedCallback() {
46
- super.disconnectedCallback();
47
- this.#updateListeners();
84
+ /** @internal */
85
+ get _hasMatchedText() {
86
+ return Boolean(this.matchedText ?? this._vvdSearchText);
48
87
  }
49
88
  /**
89
+ * From is inclusive, to is exclusive.
50
90
  * @internal
51
91
  */
52
- _anchorElChanged(oldValue, newValue) {
53
- if (oldValue) this.#cleanupAnchor(oldValue);
54
- if (newValue) this.#setupAnchor(newValue);
55
- }
56
- #setupAnchor(a) {
57
- a.addEventListener("click", this.#openIfClosed, true);
58
- this.#originalAriaLabel = a.ariaLabel;
59
- a.ariaLabel = `${this.locale.toggletip.anchorLabel(a.ariaLabel || "")}`;
60
- this.#updateAnchor(a);
61
- }
62
- #updateAnchor(a) {
63
- a.setAttribute("aria-expanded", this.open.toString());
64
- a.setAttribute("data-expanded", this.open.toString());
65
- }
66
- #cleanupAnchor(a) {
67
- a.removeEventListener("click", this.#openIfClosed, true);
68
- a.removeAttribute("aria-expanded");
69
- a.removeAttribute("data-expanded");
70
- /* v8 ignore else -- @preserve */
71
- if (a.ariaLabel) a.ariaLabel = this.#originalAriaLabel;
72
- }
73
- #openIfClosed = () => {
74
- if (!this.open) Updates.enqueue(() => this.open = true);
75
- };
76
- #updateListeners() {
77
- document.removeEventListener("click", this.#closeOnClickOutside);
78
- document.removeEventListener("keydown", this.#closeOnEscape);
79
- if (this.open && this.isConnected) {
80
- document.addEventListener("click", this.#closeOnClickOutside);
81
- document.addEventListener("keydown", this.#closeOnEscape);
92
+ get _matchedRange() {
93
+ const matchedText = this.matchedText ?? this._vvdSearchText;
94
+ if (matchedText) {
95
+ const matchIndex = this.text.toLowerCase().indexOf(matchedText.toLowerCase());
96
+ return matchIndex === -1 ? {
97
+ from: 0,
98
+ to: 0
99
+ } : {
100
+ from: matchIndex,
101
+ to: matchIndex + matchedText.length
102
+ };
103
+ }
104
+ return {
105
+ from: 0,
106
+ to: 0
107
+ };
108
+ }
109
+ constructor(text, value, defaultSelected, selected) {
110
+ super();
111
+ this.defaultSelected = false;
112
+ this.dirtySelected = false;
113
+ this.value = "";
114
+ this._highlighted = false;
115
+ this._displayCheckmark = false;
116
+ this._vvdSearchText = "";
117
+ this._isNotMatching = false;
118
+ if (text) this.text = text;
119
+ if (value) this.value = value;
120
+ if (defaultSelected) this.defaultSelected = defaultSelected;
121
+ if (selected) this.selected = selected;
122
+ this.proxy = new Option(this.text, this.value, this.defaultSelected, this.selected);
123
+ this.proxy.disabled = this.disabled;
124
+ }
125
+ /**
126
+ * @internal
127
+ */
128
+ connectedCallback() {
129
+ super.connectedCallback();
130
+ if (!this.dirtySelected) {
131
+ this.selected = this.defaultSelected;
132
+ this.dirtySelected = false;
82
133
  }
83
134
  }
84
- #closeOnClickOutside = (e) => {
85
- const clickedOutside = !this.contains(e.target);
86
- const clickedOnAnchor = this._anchorEl?.contains(e.target);
87
- if (clickedOutside || clickedOnAnchor) this.open = false;
88
- };
89
- #closeOnEscape = (e) => {
90
- /* v8 ignore else -- @preserve */
91
- if (e.key === "Escape") this.open = false;
92
- };
93
135
  };
94
- __decorate([attr], Toggletip.prototype, "headline", void 0);
95
- __decorate([attr({ mode: "boolean" })], Toggletip.prototype, "alternate", void 0);
96
- __decorate([attr({ mode: "fromView" })], Toggletip.prototype, "placement", void 0);
97
- __decorate([attr({ mode: "boolean" })], Toggletip.prototype, "open", void 0);
136
+ __decorate([attr({ converter: {
137
+ fromView: (value) => {
138
+ if (value === true || value === "true") return true;
139
+ if (value === false || value === "false") return false;
140
+ },
141
+ toView: (value) => value
142
+ } })], ListboxOption.prototype, "checked", void 0);
143
+ __decorate([attr({
144
+ attribute: "selected",
145
+ mode: "boolean"
146
+ })], ListboxOption.prototype, "defaultSelected", void 0);
147
+ __decorate([attr({ mode: "boolean" })], ListboxOption.prototype, "disabled", void 0);
148
+ __decorate([attr({
149
+ attribute: "current-selected",
150
+ mode: "boolean"
151
+ })], ListboxOption.prototype, "selected", void 0);
152
+ __decorate([attr({ attribute: "value" })], ListboxOption.prototype, "value", void 0);
153
+ __decorate([attr({ attribute: "label" })], ListboxOption.prototype, "_label", void 0);
154
+ __decorate([attr({ attribute: "text" })], ListboxOption.prototype, "_text", void 0);
155
+ __decorate([attr({ attribute: "text-secondary" })], ListboxOption.prototype, "textSecondary", void 0);
156
+ __decorate([observable], ListboxOption.prototype, "_highlighted", void 0);
157
+ __decorate([observable], ListboxOption.prototype, "_displayCheckmark", void 0);
158
+ __decorate([attr({ attribute: "matched-text" })], ListboxOption.prototype, "matchedText", void 0);
159
+ __decorate([observable], ListboxOption.prototype, "_vvdSearchText", void 0);
160
+ __decorate([volatile], ListboxOption.prototype, "_hasMatchedText", null);
161
+ __decorate([observable], ListboxOption.prototype, "_isNotMatching", void 0);
162
+ __decorate([volatile], ListboxOption.prototype, "_matchedRange", null);
163
+ __decorate([attr], ListboxOption.prototype, "connotation", void 0);
164
+ __decorate([attr({ attribute: "tag-connotation" })], ListboxOption.prototype, "tagConnotation", void 0);
98
165
  //#endregion
99
- //#region src/lib/toggletip/toggletip.template.ts
100
- var getClasses = (_) => classNames("control");
101
- var ToggletipTemplate = (context) => {
102
- const popup = context.tagFor(Popup);
166
+ //#region src/lib/option/option.template.ts
167
+ var getClasses = (x) => 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)]);
168
+ function text() {
169
+ return html`${when((x) => x.text || x.textSecondary, html`<span class="text">
170
+ ${when((x) => x.text, html`<span class="text-primary">
171
+ ${when((x) => x._hasMatchedText, html`${(x) => x.text.slice(0, x._matchedRange.from)}<span class="match"
172
+ >${(x) => x.text.slice(x._matchedRange.from, x._matchedRange.to)}</span
173
+ >`)}${(x) => x.text.slice(x._matchedRange.to)}
174
+ </span>`)}
175
+ ${when((x) => x.textSecondary, html`<span class="text-secondary">${(x) => x.textSecondary}</span>`)}
176
+ </span>`)}`;
177
+ }
178
+ var ListboxOptionTemplate = (context) => {
179
+ const affixIconTemplate = affixIconTemplateFactory(context);
180
+ const iconTag = context.tagFor(Icon);
103
181
  return html`
104
- ${anchorSlotTemplateFactory()}
105
- <${popup}
106
- @keydown="${(x, { event }) => {
107
- if (x.open && handleEscapeKeyAndStopPropogation(event)) return false;
108
- return true;
109
- }}"
110
- class="${getClasses}"
111
- arrow
112
- :anchor="${(x) => x._anchorEl}"
113
- :open="${(x) => x.open}"
114
- ?alternate="${(x) => !x.alternate}"
115
- placement="${(x) => x.placement}"
116
- exportparts="vvd-theme-alternate"
182
+ <template
183
+ ${applyHostSemantics({
184
+ role: "option",
185
+ ariaChecked: (x) => x.checked,
186
+ ariaSelected: (x) => x.selected,
187
+ ariaDisabled: (x) => x.disabled
188
+ })}
189
+ style="${(x) => x._isNotMatching ? "display: none" : ""}"
117
190
  >
118
- <div class="content-wrapper">
119
- ${when((x) => x.headline, html`<h2 class="headline">${(x) => x.headline}</h2>`)}
120
- <slot></slot>
121
- <div class="action-items"><slot name="action-items"></slot></div>
191
+ <div class="${getClasses}">
192
+ ${(x) => affixIconTemplate(x.icon, IconWrapper.Slot)} ${text()}
193
+ <slot name="trailing-meta"></slot>
194
+ ${when((x) => x._displayCheckmark && x.selected, html`<${iconTag} class="checkmark" name="check-line"></${iconTag}>`)}
122
195
  </div>
123
- </${popup}>
196
+ </template>
124
197
  `;
125
198
  };
126
199
  //#endregion
127
- //#region src/lib/toggletip/definition.ts
200
+ //#region src/lib/option/definition.ts
128
201
  /**
129
202
  * @internal
130
203
  */
131
- var toggletipDefinition = defineVividComponent("toggletip", Toggletip, ToggletipTemplate, [popupDefinition], { styles: toggletip_default });
204
+ var listboxOptionDefinition = defineVividComponent("option", ListboxOption, ListboxOptionTemplate, [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)}" });
132
205
  /**
133
- * Registers the toggletip element with the design system.
206
+ * Registers the listbox-option elements with the design system.
134
207
  *
135
208
  * @param prefix - the prefix to use for the component name
136
209
  */
137
- var registerToggletip = createRegisterFunction(toggletipDefinition);
210
+ var registerOption = createRegisterFunction(listboxOptionDefinition);
138
211
  //#endregion
139
- export { toggletipDefinition as n, Toggletip as r, registerToggletip as t };
212
+ export { isListboxOption as i, registerOption as n, ListboxOption as r, listboxOptionDefinition as t };