@vonage/vivid 5.24.0 → 5.25.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 (331) hide show
  1. package/README.md +1 -1
  2. package/avatar/index.cjs +10 -10
  3. package/avatar/index.js +4 -3
  4. package/breadcrumb-item/index.cjs +9 -5
  5. package/breadcrumb-item/index.js +11 -6
  6. package/bundled/affix.cjs +1 -1
  7. package/bundled/affix.js +1 -1
  8. package/bundled/definition10.cjs +2 -1
  9. package/bundled/definition10.js +3 -2
  10. package/bundled/definition11.cjs +4 -4
  11. package/bundled/definition11.js +4 -3
  12. package/bundled/definition12.cjs +1 -1
  13. package/bundled/definition12.js +1 -0
  14. package/bundled/definition15.cjs +5 -5
  15. package/bundled/definition15.js +4 -3
  16. package/bundled/definition17.cjs +7 -7
  17. package/bundled/definition17.js +22 -109
  18. package/bundled/definition18.cjs +3 -3
  19. package/bundled/definition18.js +9 -31
  20. package/bundled/definition19.cjs +19 -19
  21. package/bundled/definition19.js +3 -2
  22. package/bundled/definition21.cjs +8 -8
  23. package/bundled/definition21.js +5 -4
  24. package/bundled/definition22.cjs +2 -2
  25. package/bundled/definition22.js +2 -2
  26. package/bundled/definition24.cjs +4 -4
  27. package/bundled/definition24.js +4 -3
  28. package/bundled/definition25.cjs +3 -3
  29. package/bundled/definition25.js +32 -28
  30. package/bundled/definition3.cjs +5 -5
  31. package/bundled/definition3.js +10 -40
  32. package/bundled/definition4.cjs +6 -6
  33. package/bundled/definition4.js +4 -3
  34. package/bundled/definition6.cjs +11 -11
  35. package/bundled/definition6.js +4 -3
  36. package/bundled/definition9.cjs +12 -6
  37. package/bundled/definition9.js +66 -43
  38. package/bundled/extractOptions.cjs +1 -1
  39. package/bundled/extractOptions.js +2 -2
  40. package/bundled/icon.cjs +1 -0
  41. package/bundled/icon.js +34 -0
  42. package/bundled/listbox.cjs +1 -1
  43. package/bundled/listbox.js +5 -2
  44. package/bundled/mixins.cjs +8 -8
  45. package/bundled/mixins.js +4 -3
  46. package/bundled/optgroup.cjs +1 -0
  47. package/bundled/optgroup.js +27 -0
  48. package/bundled/option.cjs +1 -0
  49. package/bundled/option.js +93 -0
  50. package/bundled/vivid-element.cjs +1 -1
  51. package/bundled/vivid-element.js +1 -1
  52. package/card/index.cjs +22 -22
  53. package/card/index.js +4 -3
  54. package/color-picker/index.cjs +18 -18
  55. package/color-picker/index.js +4 -3
  56. package/combobox/index.cjs +7 -7
  57. package/combobox/index.js +4 -2
  58. package/custom-elements.json +4159 -3847
  59. package/data-grid/index.cjs +24 -24
  60. package/data-grid/index.js +4 -3
  61. package/dial-pad/index.cjs +21 -21
  62. package/dial-pad/index.js +4 -3
  63. package/dialog/index.cjs +14 -14
  64. package/dialog/index.js +4 -3
  65. package/empty-state/index.cjs +3 -3
  66. package/empty-state/index.js +4 -3
  67. package/file-picker/index.cjs +7 -7
  68. package/file-picker/index.js +4 -3
  69. package/icon/definition.cjs +2 -1
  70. package/icon/definition.js +2 -1
  71. package/index.cjs +148 -141
  72. package/index.js +41 -37
  73. package/lib/accordion-item/accordion-item.d.ts +1 -0
  74. package/lib/combobox/combobox.d.ts +1 -1
  75. package/lib/components.d.ts +1 -0
  76. package/lib/dial-pad/dial-pad.d.ts +0 -1
  77. package/lib/listbox/definition.d.ts +3 -0
  78. package/lib/listbox/index.d.ts +1 -0
  79. package/lib/listbox/listbox.d.ts +1302 -0
  80. package/lib/listbox/listbox.template.d.ts +3 -0
  81. package/lib/listbox/variations.browser-spec.d.ts +1 -0
  82. package/lib/menu/menu.d.ts +0 -1
  83. package/lib/number-field/number-field.d.ts +0 -1
  84. package/lib/rich-text-editor/rte/features/base.d.ts +1 -0
  85. package/lib/rich-text-editor/rte/utils/default-textblock.d.ts +2 -2
  86. package/lib/tag-name-map.d.ts +2 -1
  87. package/lib/text-field/text-field.d.ts +1 -0
  88. package/lib/toggletip/toggletip.d.ts +1 -0
  89. package/lib/tooltip/tooltip.d.ts +1 -0
  90. package/listbox/definition.cjs +5 -0
  91. package/listbox/definition.js +2 -0
  92. package/listbox/index.cjs +11 -0
  93. package/listbox/index.js +540 -0
  94. package/nav/definition.cjs +1 -1
  95. package/nav/definition.js +1 -1
  96. package/nav-disclosure/definition.cjs +1 -1
  97. package/nav-disclosure/definition.js +1 -1
  98. package/nav-disclosure/index.cjs +4 -4
  99. package/nav-disclosure/index.js +4 -3
  100. package/nav-item/definition.cjs +1 -1
  101. package/nav-item/definition.js +1 -1
  102. package/note/definition.cjs +1 -1
  103. package/note/definition.js +1 -1
  104. package/number-field/definition.cjs +1 -1
  105. package/number-field/definition.js +1 -1
  106. package/optgroup/definition.cjs +2 -1
  107. package/optgroup/definition.js +2 -1
  108. package/option/definition.cjs +2 -1
  109. package/option/definition.js +2 -1
  110. package/package.json +8 -7
  111. package/pagination/definition.cjs +1 -1
  112. package/pagination/definition.js +1 -1
  113. package/platform-switch/definition.cjs +1 -1
  114. package/platform-switch/definition.js +1 -1
  115. package/popover/definition.cjs +1 -1
  116. package/popover/definition.js +1 -1
  117. package/popover/index.cjs +5 -5
  118. package/popover/index.js +4 -3
  119. package/progress/definition.cjs +1 -1
  120. package/progress/definition.js +1 -1
  121. package/radio/definition.cjs +1 -1
  122. package/radio/definition.js +1 -1
  123. package/radio-group/definition.cjs +1 -1
  124. package/radio-group/definition.js +1 -1
  125. package/range-slider/definition.cjs +1 -1
  126. package/range-slider/definition.js +1 -1
  127. package/rich-text-editor/definition.cjs +1 -1
  128. package/rich-text-editor/definition.js +1 -1
  129. package/rich-text-editor/index.cjs +13 -13
  130. package/rich-text-editor/index.js +22 -19
  131. package/rich-text-view/definition.cjs +1 -1
  132. package/rich-text-view/definition.js +1 -1
  133. package/searchable-select/definition.cjs +1 -1
  134. package/searchable-select/definition.js +1 -1
  135. package/searchable-select/index.cjs +23 -23
  136. package/searchable-select/index.js +10 -7
  137. package/select/definition.cjs +1 -1
  138. package/select/definition.js +1 -1
  139. package/selectable-box/definition.cjs +1 -1
  140. package/selectable-box/definition.js +1 -1
  141. package/shared/listbox/commands.d.ts +17 -0
  142. package/shared/listbox/move.d.ts +6 -0
  143. package/shared/listbox/options.d.ts +12 -0
  144. package/shared/listbox/selection.d.ts +28 -0
  145. package/shared/listbox/state.d.ts +26 -0
  146. package/shared/listbox/typeahead.d.ts +8 -0
  147. package/shared/listbox/with-options-filter.d.ts +440 -0
  148. package/shared/listbox/with-options.d.ts +862 -0
  149. package/side-drawer/definition.cjs +1 -1
  150. package/side-drawer/definition.js +1 -1
  151. package/simple-color-picker/definition.cjs +1 -1
  152. package/simple-color-picker/definition.js +1 -1
  153. package/simple-color-picker/index.cjs +6 -6
  154. package/simple-color-picker/index.js +4 -3
  155. package/split-button/definition.cjs +1 -1
  156. package/split-button/definition.js +1 -1
  157. package/status/definition.cjs +1 -1
  158. package/status/definition.js +1 -1
  159. package/switch/definition.cjs +1 -1
  160. package/switch/definition.js +1 -1
  161. package/tab/definition.cjs +1 -1
  162. package/tab/definition.js +1 -1
  163. package/tab-panel/definition.cjs +1 -1
  164. package/tab-panel/definition.js +1 -1
  165. package/table/definition.cjs +1 -1
  166. package/table/definition.js +1 -1
  167. package/table/index.cjs +13 -13
  168. package/table/index.js +4 -3
  169. package/tabs/definition.cjs +1 -1
  170. package/tabs/definition.js +1 -1
  171. package/tag/definition.cjs +1 -1
  172. package/tag/definition.js +1 -1
  173. package/tag/index.cjs +11 -11
  174. package/tag/index.js +4 -3
  175. package/tag-group/definition.cjs +1 -1
  176. package/tag-group/definition.js +1 -1
  177. package/text-area/definition.cjs +1 -1
  178. package/text-area/definition.js +1 -1
  179. package/time-picker/definition.cjs +1 -1
  180. package/time-picker/definition.js +1 -1
  181. package/tree-item/definition.cjs +1 -1
  182. package/tree-item/definition.js +1 -1
  183. package/tree-view/definition.cjs +1 -1
  184. package/tree-view/definition.js +1 -1
  185. package/unbundled/affix.cjs +2 -2
  186. package/unbundled/affix.js +1 -1
  187. package/unbundled/base-progress.cjs +1 -1
  188. package/unbundled/base-progress.js +1 -1
  189. package/unbundled/button.cjs +2 -2
  190. package/unbundled/button.js +2 -2
  191. package/unbundled/definition.cjs +2 -65
  192. package/unbundled/definition.js +4 -61
  193. package/unbundled/definition11.cjs +4 -3
  194. package/unbundled/definition11.js +3 -2
  195. package/unbundled/definition12.cjs +3 -2
  196. package/unbundled/definition12.js +3 -2
  197. package/unbundled/definition14.cjs +2 -1
  198. package/unbundled/definition14.js +2 -1
  199. package/unbundled/definition17.cjs +9 -4
  200. package/unbundled/definition17.js +9 -4
  201. package/unbundled/definition2.cjs +7 -2
  202. package/unbundled/definition2.js +8 -3
  203. package/unbundled/definition21.cjs +2 -1
  204. package/unbundled/definition21.js +2 -1
  205. package/unbundled/definition23.cjs +2 -1
  206. package/unbundled/definition23.js +2 -1
  207. package/unbundled/definition24.cjs +6 -4
  208. package/unbundled/definition24.js +6 -4
  209. package/unbundled/definition25.cjs +2 -1
  210. package/unbundled/definition25.js +2 -1
  211. package/unbundled/definition26.cjs +7 -4
  212. package/unbundled/definition26.js +7 -4
  213. package/unbundled/definition27.cjs +39 -5
  214. package/unbundled/definition27.js +40 -6
  215. package/unbundled/definition28.cjs +4 -3
  216. package/unbundled/definition28.js +4 -3
  217. package/unbundled/definition29.cjs +5 -168
  218. package/unbundled/definition29.js +11 -162
  219. package/unbundled/definition30.cjs +2 -63
  220. package/unbundled/definition30.js +5 -54
  221. package/unbundled/definition31.cjs +5 -3
  222. package/unbundled/definition31.js +5 -3
  223. package/unbundled/definition32.cjs +2 -1
  224. package/unbundled/definition32.js +2 -1
  225. package/unbundled/definition35.cjs +2 -1
  226. package/unbundled/definition35.js +2 -1
  227. package/unbundled/definition37.cjs +1 -1
  228. package/unbundled/definition37.js +1 -1
  229. package/unbundled/definition39.cjs +1 -1
  230. package/unbundled/definition39.js +1 -1
  231. package/unbundled/definition40.cjs +4 -2
  232. package/unbundled/definition40.js +4 -2
  233. package/unbundled/definition41.cjs +11 -6
  234. package/unbundled/definition41.js +11 -6
  235. package/unbundled/definition42.cjs +5 -4
  236. package/unbundled/definition42.js +5 -4
  237. package/unbundled/definition44.cjs +3 -2
  238. package/unbundled/definition44.js +3 -2
  239. package/unbundled/definition45.cjs +2 -2
  240. package/unbundled/definition45.js +2 -2
  241. package/unbundled/definition49.cjs +583 -79
  242. package/unbundled/definition49.js +579 -76
  243. package/unbundled/definition50.cjs +71 -33
  244. package/unbundled/definition50.js +67 -29
  245. package/unbundled/definition51.cjs +54 -23
  246. package/unbundled/definition51.js +52 -18
  247. package/unbundled/definition52.cjs +23 -39
  248. package/unbundled/definition52.js +17 -36
  249. package/unbundled/definition53.cjs +29 -314
  250. package/unbundled/definition53.js +27 -312
  251. package/unbundled/definition54.cjs +302 -195
  252. package/unbundled/definition54.js +298 -191
  253. package/unbundled/definition55.cjs +210 -40
  254. package/unbundled/definition55.js +206 -36
  255. package/unbundled/definition56.cjs +42 -266
  256. package/unbundled/definition56.js +38 -262
  257. package/unbundled/definition57.cjs +270 -50
  258. package/unbundled/definition57.js +267 -46
  259. package/unbundled/definition58.cjs +48 -146
  260. package/unbundled/definition58.js +47 -143
  261. package/unbundled/definition59.cjs +127 -225
  262. package/unbundled/definition59.js +122 -223
  263. package/unbundled/definition6.cjs +2 -1
  264. package/unbundled/definition6.js +2 -1
  265. package/unbundled/definition60.cjs +199 -418
  266. package/unbundled/definition60.js +196 -415
  267. package/unbundled/definition61.cjs +442 -3738
  268. package/unbundled/definition61.js +432 -3565
  269. package/unbundled/definition62.cjs +3717 -730
  270. package/unbundled/definition62.js +3544 -720
  271. package/unbundled/definition63.cjs +770 -97
  272. package/unbundled/definition63.js +767 -94
  273. package/unbundled/definition64.cjs +100 -999
  274. package/unbundled/definition64.js +98 -994
  275. package/unbundled/definition65.cjs +991 -93
  276. package/unbundled/definition65.js +985 -90
  277. package/unbundled/definition66.cjs +109 -73
  278. package/unbundled/definition66.js +105 -63
  279. package/unbundled/definition67.cjs +69 -155
  280. package/unbundled/definition67.js +60 -152
  281. package/unbundled/definition68.cjs +155 -119
  282. package/unbundled/definition68.js +151 -115
  283. package/unbundled/definition69.cjs +124 -49
  284. package/unbundled/definition69.js +120 -45
  285. package/unbundled/definition70.cjs +51 -85
  286. package/unbundled/definition70.js +50 -81
  287. package/unbundled/definition71.cjs +91 -19
  288. package/unbundled/definition71.js +86 -14
  289. package/unbundled/definition72.cjs +20 -87
  290. package/unbundled/definition72.js +14 -84
  291. package/unbundled/definition73.cjs +77 -294
  292. package/unbundled/definition73.js +72 -217
  293. package/unbundled/definition74.cjs +289 -311
  294. package/unbundled/definition74.js +219 -306
  295. package/unbundled/definition75.cjs +326 -26
  296. package/unbundled/definition75.js +317 -23
  297. package/unbundled/definition76.cjs +27 -122
  298. package/unbundled/definition76.js +22 -118
  299. package/unbundled/definition77.cjs +105 -232
  300. package/unbundled/definition77.js +101 -228
  301. package/unbundled/definition78.cjs +259 -26
  302. package/unbundled/definition78.js +249 -23
  303. package/unbundled/definition79.cjs +29 -148
  304. package/unbundled/definition79.js +27 -133
  305. package/unbundled/definition80.cjs +118 -173
  306. package/unbundled/definition80.js +109 -169
  307. package/unbundled/definition81.cjs +181 -477
  308. package/unbundled/definition81.js +176 -471
  309. package/unbundled/definition82.cjs +517 -0
  310. package/unbundled/definition82.js +497 -0
  311. package/unbundled/extractOptions.cjs +5 -5
  312. package/unbundled/extractOptions.js +2 -2
  313. package/unbundled/icon.cjs +67 -0
  314. package/unbundled/icon.js +61 -0
  315. package/unbundled/linkable.cjs +1 -1
  316. package/unbundled/linkable.js +1 -1
  317. package/unbundled/listbox.cjs +8 -3
  318. package/unbundled/listbox.js +7 -2
  319. package/unbundled/mixins.cjs +2 -1
  320. package/unbundled/mixins.js +2 -1
  321. package/unbundled/optgroup.cjs +66 -0
  322. package/unbundled/optgroup.js +54 -0
  323. package/unbundled/option.cjs +176 -0
  324. package/unbundled/option.js +164 -0
  325. package/unbundled/time-selection-picker.template.cjs +1 -1
  326. package/unbundled/time-selection-picker.template.js +1 -1
  327. package/unbundled/vivid-element.cjs +1 -1
  328. package/unbundled/vivid-element.js +1 -1
  329. package/video-player/definition.cjs +1 -1
  330. package/video-player/definition.js +1 -1
  331. package/vivid.api.json +336 -193
@@ -1,142 +1,178 @@
1
1
  import { d as createRegisterFunction, t as VividElement, u as defineVividComponent } from "./vivid-element.js";
2
2
  import { t as iconDefinition } from "./definition.js";
3
3
  import { t as __decorate } from "./decorate.js";
4
- import { a as affixIconTemplateFactory, i as IconWrapper, t as AffixIcon } from "./affix.js";
5
- import { n as delegateAria, t as DelegatesAria } from "./delegates-aria.js";
6
- import { t as Localized } from "./localized.js";
7
- import { attr, html, ref } from "@microsoft/fast-element";
4
+ import { t as Icon } from "./icon.js";
5
+ import { t as handleEscapeKeyAndStopPropogation } from "./dialog.js";
6
+ import { i as Popup, t as popupDefinition } from "./definition9.js";
7
+ import { n as anchorSlotTemplateFactory, t as Anchored } from "./anchored.js";
8
+ import { n as tooltipDefinition, r as Tooltip } from "./definition27.js";
9
+ import { t as BaseColorPicker } from "./base-color-picker.js";
10
+ import { Updates, attr, html, nullableNumberConverter, repeat } from "@microsoft/fast-element";
8
11
  import { classNames } from "@microsoft/fast-web-utilities";
9
- //#region src/lib/split-button/split-button.ts
12
+ //#region src/lib/simple-color-picker/simple-color-picker.scss?inline
13
+ var simple_color_picker_default = ".palette{grid-template-columns:repeat(var(--swatches-per-row,7), var(--_color-swatch-size,24px));display:grid}.swatch{background-color:var(--swatch-color);block-size:var(--_color-swatch-size,24px);color:var(--vvd-color-canvas);cursor:pointer;inline-size:var(--_color-swatch-size,24px);border-radius:4px;padding:0;position:relative}.swatch:not(.contrast){border:none}.swatch.contrast{border:1px solid var(--vvd-color-neutral-400);color:var(--vvd-color-canvas-text)}.swatch:focus-visible{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:none;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;--focus-inset:-3px}:host :host{display:var(--_popup-display,inline)}:host :host([slotted-anchor]){--_popup-display:contents}.palette{padding:var(--_color-palette-spacing,16px);gap:var(--_color-palette-gap,12px)}::part(popup-base){block-size:max-content;max-block-size:100vh;inline-size:max-content;max-inline-size:100vw;min-block-size:var(--_color-swatch-size,24px);min-inline-size:var(--_color-swatch-size,24px)}";
14
+ //#endregion
15
+ //#region src/lib/simple-color-picker/simple-color-picker.ts
10
16
  /**
11
17
  * @public
12
- * @component split-button
13
- * @slot - Default slot.
14
- * @slot icon - The preferred way to add an icon to the component.
15
- * @event {CustomEvent<undefined>} action-click - Event emitted when the action button is clicked
16
- * @event {CustomEvent<undefined>} indicator-click - Event emitted when the indicator button is clicked
17
- * @testSelector byLabel byLabel
18
- * @testAction clickAction click #actionButton
19
- * @testAction clickIndicator click #indicatorButton
20
- * @testRef actionButton shadow button.control
21
- * @testRef indicatorButton shadow button.indicator
18
+ * @component simple-color-picker
19
+ * @slot anchor - Slot for attaching the toggle button.
20
+ * @event {CustomEvent<undefined>} change - Fires when the value changes
21
+ * @event {Event} input - Fires when the value of the element changes.
22
+ * @vueModel modelValue value input,@lazy:change `event.currentTarget.value`
22
23
  */
23
- var SplitButton = class extends AffixIcon(Localized(DelegatesAria(VividElement))) {
24
+ var SimpleColorPicker = class extends Anchored(BaseColorPicker(VividElement)) {
24
25
  constructor(..._args) {
25
26
  super(..._args);
26
- this.splitIndicator = "chevron-down-line";
27
- this.disabled = false;
28
- this.indicatorAriaLabel = null;
27
+ this.placement = "top-start";
28
+ this.swatchesPerRow = 7;
29
+ this.#openedByKeyboard = false;
30
+ this.#openPopup = () => {
31
+ if (!this.open) {
32
+ this.#openedByKeyboard = false;
33
+ Updates.enqueue(() => this.open = true);
34
+ }
35
+ };
36
+ this.#handleAnchorKeydown = (event) => {
37
+ /* v8 ignore next -- @preserve */
38
+ if (event.key === "Enter" || event.key === " ") {
39
+ if (!this.open) {
40
+ this.#openedByKeyboard = true;
41
+ Updates.enqueue(() => this.open = true);
42
+ }
43
+ event.preventDefault();
44
+ }
45
+ };
46
+ this._closeOnClickOutside = (e) => {
47
+ const clickedOutside = !this.contains(e.target);
48
+ const clickedOnAnchor = this._anchorEl?.contains(e.target);
49
+ /* v8 ignore else -- @preserve */
50
+ if (clickedOutside || clickedOnAnchor) this.open = false;
51
+ };
52
+ this._closeOnEscape = (e) => {
53
+ /* v8 ignore else -- @preserve */
54
+ if (e.key === "Escape") this.open = false;
55
+ };
29
56
  }
30
- get action() {
31
- return this._action;
57
+ /** @internal */
58
+ openChanged(_oldValue, newValue) {
59
+ this._updateListeners();
60
+ if (this._anchorEl) this.#updateAnchor(this._anchorEl);
61
+ if (newValue && this.isConnected) requestAnimationFrame(() => {
62
+ this._refreshCanvasColor();
63
+ if (this.#openedByKeyboard) {
64
+ const selectedIndex = this.swatches.findIndex((swatch) => swatch.value === this.value);
65
+ const targetIndex = selectedIndex >= 0 ? selectedIndex : 0;
66
+ this._focusSwatchByIndex(targetIndex);
67
+ }
68
+ this.#openedByKeyboard = false;
69
+ });
32
70
  }
33
- get indicator() {
34
- return this._indicator;
71
+ /** @internal */
72
+ _getRowLength() {
73
+ return this.swatchesPerRow;
35
74
  }
36
- /**
37
- * Handles action click events.
38
- * Prevents interaction when disabled or pending.
39
- *
40
- * @internal
41
- */
42
- handleActionClick(event) {
43
- if (this.disabled) {
44
- event.preventDefault();
45
- event.stopImmediatePropagation();
46
- return;
47
- } else this.$emit("action-click", void 0, { bubbles: false });
48
- return true;
75
+ connectedCallback() {
76
+ super.connectedCallback();
77
+ this._updateListeners();
49
78
  }
50
- /**
51
- * Handles indicator click events.
52
- * Prevents interaction when disabled or pending.
53
- *
54
- * @internal
55
- */
56
- handleIndicatorClick(event) {
57
- if (this.disabled) {
58
- event.preventDefault();
59
- event.stopImmediatePropagation();
60
- return;
61
- } else this.$emit("indicator-click", void 0, { bubbles: false });
62
- return true;
79
+ disconnectedCallback() {
80
+ super.disconnectedCallback();
81
+ this._updateListeners();
82
+ }
83
+ /** @internal */
84
+ _updateListeners() {
85
+ document.removeEventListener("click", this._closeOnClickOutside);
86
+ document.removeEventListener("keydown", this._closeOnEscape);
87
+ if (this.open && this.isConnected) {
88
+ document.addEventListener("click", this._closeOnClickOutside);
89
+ document.addEventListener("keydown", this._closeOnEscape);
90
+ }
91
+ }
92
+ /** @internal */
93
+ _getFocusReturnEl() {
94
+ return this._anchorEl ?? null;
95
+ }
96
+ /** @internal */
97
+ _anchorElChanged(oldValue, newValue) {
98
+ if (oldValue) this.#cleanupAnchor(oldValue);
99
+ if (newValue) this.#setupAnchor(newValue);
100
+ }
101
+ /** @internal */
102
+ #updateAnchor(a) {
103
+ a.setAttribute("aria-expanded", this.open.toString());
104
+ a.setAttribute("data-expanded", this.open.toString());
105
+ }
106
+ /** @internal */
107
+ #setupAnchor(a) {
108
+ this.#updateAnchor(a);
109
+ a.addEventListener("click", this.#openPopup, true);
110
+ a.addEventListener("keydown", this.#handleAnchorKeydown);
111
+ a.setAttribute("aria-haspopup", "true");
63
112
  }
113
+ /** @internal */
114
+ #cleanupAnchor(a) {
115
+ a.removeEventListener("click", this.#openPopup, true);
116
+ a.removeEventListener("keydown", this.#handleAnchorKeydown);
117
+ a.removeAttribute("aria-expanded");
118
+ a.removeAttribute("data-expanded");
119
+ a.removeAttribute("aria-haspopup");
120
+ }
121
+ /** @internal */
122
+ #openedByKeyboard;
123
+ /** @internal */
124
+ #openPopup;
125
+ /** @internal */
126
+ #handleAnchorKeydown;
64
127
  };
65
- __decorate([attr], SplitButton.prototype, "connotation", void 0);
66
- __decorate([attr], SplitButton.prototype, "shape", void 0);
67
- __decorate([attr], SplitButton.prototype, "appearance", void 0);
68
- __decorate([attr], SplitButton.prototype, "size", void 0);
69
- __decorate([attr], SplitButton.prototype, "label", void 0);
70
- __decorate([attr({
71
- attribute: "split-indicator",
72
- mode: "fromView"
73
- })], SplitButton.prototype, "splitIndicator", void 0);
128
+ __decorate([attr({ mode: "fromView" })], SimpleColorPicker.prototype, "placement", void 0);
74
129
  __decorate([attr({
75
- attribute: "disabled",
76
- mode: "boolean"
77
- })], SplitButton.prototype, "disabled", void 0);
78
- __decorate([attr({ attribute: "indicator-aria-label" })], SplitButton.prototype, "indicatorAriaLabel", void 0);
130
+ attribute: "swatches-per-row",
131
+ mode: "fromView",
132
+ converter: nullableNumberConverter
133
+ })], SimpleColorPicker.prototype, "swatchesPerRow", void 0);
79
134
  //#endregion
80
- //#region src/lib/split-button/split-button.scss?inline
81
- var split_button_default = ":host{--_vvd-split-button-accent-firm-wrapper:var(--vvd-split-button-accent-firm);--_vvd-split-button-cta-firm-wrapper:var(--vvd-split-button-cta-firm);--_vvd-split-button-success-firm-wrapper:var(--vvd-split-button-success-firm);--_vvd-split-button-alert-firm-wrapper:var(--vvd-split-button-alert-firm);--_vvd-split-button-announcement-firm-wrapper:var(--vvd-split-button-announcement-firm)}:where(.control,.indicator):not(.appearance-filled,.appearance-outlined,.appearance-outlined-light){--vvd-split-button-accent-firm:var(--_vvd-split-button-accent-firm-wrapper,var(--vvd-split-button-accent-primary));--vvd-split-button-cta-firm:var(--_vvd-split-button-cta-firm-wrapper,var(--vvd-split-button-cta-primary));--vvd-split-button-success-firm:var(--_vvd-split-button-success-firm-wrapper,var(--vvd-split-button-success-primary));--vvd-split-button-alert-firm:var(--_vvd-split-button-alert-firm-wrapper,var(--vvd-split-button-alert-primary));--vvd-split-button-announcement-firm:var(--_vvd-split-button-announcement-firm-wrapper,var(--vvd-split-button-announcement-primary))}:host{display:inline-block}.base{inline-size:inherit;justify-content:flex-start;display:inline-flex}.control.connotation-cta,.indicator.connotation-cta{--_connotation-color-primary:var(--vvd-split-button-cta-primary,var(--vvd-color-cta-500));--_connotation-color-primary-text:var(--vvd-split-button-cta-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-split-button-cta-primary-increment,var(--vvd-color-cta-600));--_connotation-color-contrast:var(--vvd-split-button-cta-contrast,var(--vvd-color-cta-800));--_connotation-color-fierce:var(--vvd-split-button-cta-fierce,var(--vvd-color-cta-700));--_connotation-color-firm:var(--vvd-split-button-cta-firm,var(--vvd-color-cta-600));--_connotation-color-soft:var(--vvd-split-button-cta-soft,var(--vvd-color-cta-100));--_connotation-color-faint:var(--vvd-split-button-cta-faint,var(--vvd-color-cta-50));--_connotation-color-fierce-primary:var(--vvd-split-button-cta-fierce-primary,var(--vvd-color-cta-700))}.control.connotation-success,.indicator.connotation-success{--_connotation-color-primary:var(--vvd-split-button-success-primary,var(--vvd-color-success-500));--_connotation-color-primary-text:var(--vvd-split-button-success-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-split-button-success-primary-increment,var(--vvd-color-success-600));--_connotation-color-contrast:var(--vvd-split-button-success-contrast,var(--vvd-color-success-800));--_connotation-color-fierce:var(--vvd-split-button-success-fierce,var(--vvd-color-success-700));--_connotation-color-firm:var(--vvd-split-button-success-firm,var(--vvd-color-success-600));--_connotation-color-soft:var(--vvd-split-button-success-soft,var(--vvd-color-success-100));--_connotation-color-faint:var(--vvd-split-button-success-faint,var(--vvd-color-success-50));--_connotation-color-fierce-primary:var(--vvd-split-button-success-fierce-primary,var(--vvd-color-success-700))}.control.connotation-alert,.indicator.connotation-alert{--_connotation-color-primary:var(--vvd-split-button-alert-primary,var(--vvd-color-alert-500));--_connotation-color-primary-text:var(--vvd-split-button-alert-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-split-button-alert-primary-increment,var(--vvd-color-alert-600));--_connotation-color-contrast:var(--vvd-split-button-alert-contrast,var(--vvd-color-alert-800));--_connotation-color-fierce:var(--vvd-split-button-alert-fierce,var(--vvd-color-alert-700));--_connotation-color-firm:var(--vvd-split-button-alert-firm,var(--vvd-color-alert-600));--_connotation-color-soft:var(--vvd-split-button-alert-soft,var(--vvd-color-alert-100));--_connotation-color-faint:var(--vvd-split-button-alert-faint,var(--vvd-color-alert-50));--_connotation-color-fierce-primary:var(--vvd-split-button-alert-fierce-primary,var(--vvd-color-alert-700))}.control.connotation-announcement,.indicator.connotation-announcement{--_connotation-color-primary:var(--vvd-split-button-announcement-primary,var(--vvd-color-announcement-500));--_connotation-color-primary-text:var(--vvd-split-button-announcement-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-split-button-announcement-primary-increment,var(--vvd-color-announcement-600));--_connotation-color-contrast:var(--vvd-split-button-announcement-contrast,var(--vvd-color-announcement-800));--_connotation-color-fierce:var(--vvd-split-button-announcement-fierce,var(--vvd-color-announcement-700));--_connotation-color-firm:var(--vvd-split-button-announcement-firm,var(--vvd-color-announcement-600));--_connotation-color-soft:var(--vvd-split-button-announcement-soft,var(--vvd-color-announcement-100));--_connotation-color-faint:var(--vvd-split-button-announcement-faint,var(--vvd-color-announcement-50));--_connotation-color-fierce-primary:var(--vvd-split-button-announcement-fierce-primary,var(--vvd-color-announcement-700))}.control:not(.connotation-cta,.connotation-success,.connotation-alert,.connotation-announcement),.indicator:not(.connotation-cta,.connotation-success,.connotation-alert,.connotation-announcement){--_connotation-color-primary:var(--vvd-split-button-accent-primary,var(--vvd-color-canvas-text));--_connotation-color-primary-text:var(--vvd-split-button-accent-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-split-button-accent-primary-increment,var(--vvd-color-neutral-800));--_connotation-color-contrast:var(--vvd-split-button-accent-contrast,var(--vvd-color-neutral-800));--_connotation-color-fierce:var(--vvd-split-button-accent-fierce,var(--vvd-color-neutral-700));--_connotation-color-firm:var(--vvd-split-button-accent-firm,var(--vvd-color-canvas-text));--_connotation-color-soft:var(--vvd-split-button-accent-soft,var(--vvd-color-neutral-100));--_connotation-color-faint:var(--vvd-split-button-accent-faint,var(--vvd-color-neutral-50));--_connotation-color-fierce-primary:var(--vvd-split-button-accent-fierce-primary,var(--vvd-color-canvas-text))}.control.appearance-filled,.indicator.appearance-filled{--_appearance-color-text:var(--_connotation-color-primary-text);--_appearance-color-fill:var(--_connotation-color-primary);--_appearance-color-outline:transparent}.control.appearance-outlined,.indicator.appearance-outlined{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:transparent;--_appearance-color-outline:var(--vvd-color-neutral-300)}.control,.indicator{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:transparent;--_appearance-color-outline:transparent}.control.appearance-outlined-light,.indicator.appearance-outlined-light{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:transparent;--_appearance-color-outline:var(--vvd-color-neutral-300)}@media (hover:hover){.control:hover:where(:not(.disabled,:disabled,.readonly)).appearance-filled,.indicator:hover:where(:not(.disabled,:disabled,.readonly)).appearance-filled{--_appearance-color-text:var(--_connotation-color-primary-text);--_appearance-color-fill:var(--_connotation-color-primary-increment);--_appearance-color-outline:transparent}.control:hover:where(:not(.disabled,:disabled,.readonly)).appearance-outlined,.indicator:hover:where(:not(.disabled,:disabled,.readonly)).appearance-outlined{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:var(--_connotation-color-faint);--_appearance-color-outline:var(--vvd-color-neutral-300)}.control:hover:where(:not(.disabled,:disabled,.readonly)),.indicator: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-outlined-light,.indicator:hover:where(:not(.disabled,:disabled,.readonly)).appearance-outlined-light{--_appearance-color-text:var(--_connotation-color-fierce-primary);--_appearance-color-fill:color-mix(in sRGB, var(--_connotation-color-primary), transparent 90%);--_appearance-color-outline:var(--vvd-color-neutral-300)}}.control.hover:where(:not(.disabled,:disabled,.readonly)).appearance-filled,.indicator.hover:where(:not(.disabled,:disabled,.readonly)).appearance-filled{--_appearance-color-text:var(--_connotation-color-primary-text);--_appearance-color-fill:var(--_connotation-color-primary-increment);--_appearance-color-outline:transparent}.control.hover:where(:not(.disabled,:disabled,.readonly)).appearance-outlined,.indicator.hover:where(:not(.disabled,:disabled,.readonly)).appearance-outlined{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:var(--_connotation-color-faint);--_appearance-color-outline:var(--vvd-color-neutral-300)}.control.hover:where(:not(.disabled,:disabled,.readonly)),.indicator.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-outlined-light,.indicator.hover:where(:not(.disabled,:disabled,.readonly)).appearance-outlined-light{--_appearance-color-text:var(--_connotation-color-fierce-primary);--_appearance-color-fill:color-mix(in sRGB, var(--_connotation-color-primary), transparent 90%);--_appearance-color-outline:var(--vvd-color-neutral-300)}.control:disabled.appearance-filled,.indicator:disabled.appearance-filled{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:var(--vvd-color-neutral-100);--_appearance-color-outline:transparent}.control:disabled.appearance-outlined,.indicator:disabled.appearance-outlined{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:var(--vvd-color-neutral-300)}.control:disabled,.indicator:disabled{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:transparent}.control:disabled.appearance-outlined-light,.indicator:disabled.appearance-outlined-light{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:var(--vvd-color-neutral-300)}.control.disabled.appearance-filled,.indicator.disabled.appearance-filled{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:var(--vvd-color-neutral-100);--_appearance-color-outline:transparent}.control.disabled.appearance-outlined,.indicator.disabled.appearance-outlined{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:var(--vvd-color-neutral-300)}.control.disabled,.indicator.disabled{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:transparent}.control.disabled.appearance-outlined-light,.indicator.disabled.appearance-outlined-light{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:var(--vvd-color-neutral-300)}.control:active:where(:not(.disabled,:disabled)).appearance-filled,.indicator:active:where(:not(.disabled,:disabled)).appearance-filled{--_appearance-color-text:var(--_connotation-color-primary-text);--_appearance-color-fill:var(--_connotation-color-fierce);--_appearance-color-outline:transparent}.control:active:where(:not(.disabled,:disabled)).appearance-outlined,.indicator:active:where(:not(.disabled,:disabled)).appearance-outlined{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:var(--_connotation-color-soft);--_appearance-color-outline:var(--vvd-color-neutral-300)}.control:active:where(:not(.disabled,:disabled)),.indicator: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-outlined-light,.indicator:active:where(:not(.disabled,:disabled)).appearance-outlined-light{--_appearance-color-text:var(--_connotation-color-fierce-primary);--_appearance-color-fill:color-mix(in sRGB, var(--_connotation-color-primary), transparent 80%);--_appearance-color-outline:var(--vvd-color-neutral-300)}.control.active:where(:not(.disabled,:disabled)).appearance-filled,.indicator.active:where(:not(.disabled,:disabled)).appearance-filled{--_appearance-color-text:var(--_connotation-color-primary-text);--_appearance-color-fill:var(--_connotation-color-fierce);--_appearance-color-outline:transparent}.control.active:where(:not(.disabled,:disabled)).appearance-outlined,.indicator.active:where(:not(.disabled,:disabled)).appearance-outlined{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:var(--_connotation-color-soft);--_appearance-color-outline:var(--vvd-color-neutral-300)}.control.active:where(:not(.disabled,:disabled)),.indicator.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-outlined-light,.indicator.active:where(:not(.disabled,:disabled)).appearance-outlined-light{--_appearance-color-text:var(--_connotation-color-fierce-primary);--_appearance-color-fill:color-mix(in sRGB, var(--_connotation-color-primary), transparent 80%);--_appearance-color-outline:var(--vvd-color-neutral-300)}.control,.indicator{box-sizing:border-box;border:1px solid var(--_appearance-color-outline);background-color:var(--_appearance-color-fill);block-size:var(--_split-button-block-size);color:var(--_appearance-color-text);vertical-align:middle;user-select:none;flex-shrink:0;justify-content:center;align-items:center;margin:0;padding:0;display:inline-flex}.control{border-bottom-left-radius:var(--_border-radius);border-top-left-radius:var(--_border-radius);gap:var(--_split-button-icon-gap);border-inline-end:0}.control:not(.appearance-filled){--focus-stroke-gap-color:transparent}.control:focus-visible{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))}.control:not(.disabled){cursor:pointer}.control.disabled{cursor:not-allowed}.control.icon-only{contain:size;place-content:center}@supports (aspect-ratio:1){.control.icon-only{aspect-ratio:1}}@supports not (aspect-ratio:1){.control.icon-only{inline-size:var(--_split-button-block-size)}}.control:not(.icon-only){inline-size:inherit;flex-grow:1}.control.size-super-condensed{--_split-button-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16));font:var(--vvd-typography-base-condensed-bold)}.control.size-super-condensed:not(.icon-only){--_split-button-icon-gap:4px;padding-inline:8px}.control.size-condensed{--_split-button-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 8));font:var(--vvd-typography-base-condensed-bold)}.control.size-condensed:not(.icon-only){--_split-button-icon-gap:8px;padding-inline:12px}.control.size-expanded{--_split-button-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) + 8));font:var(--vvd-typography-base-extended-bold)}.control.size-expanded:not(.icon-only){--_split-button-icon-gap:10px;padding-inline:20px}.control:not(.size-condensed,.size-expanded,.size-super-condensed){--_split-button-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2)));font:var(--vvd-typography-base-bold)}.control:not(.size-condensed,.size-expanded,.size-super-condensed):not(.icon-only){--_split-button-icon-gap:8px;padding-inline:16px}.control:not(.shape-pill){--_border-radius:8px}.control:not(.shape-pill).size-super-condensed,.control:not(.shape-pill).super-condensed{--_border-radius:4px}.control.shape-pill{--_border-radius:24px}.control .text{text-overflow:ellipsis;white-space:nowrap;max-inline-size:100%;overflow:hidden}.indicator{border-bottom-right-radius:var(--_border-radius);border-top-right-radius:var(--_border-radius);inline-size:var(--_split-button-inline-size);isolation:isolate;border-inline-start:0;position:relative}.indicator:not(.appearance-filled){--focus-stroke-gap-color:transparent}.indicator.appearance-outlined,.indicator.appearance-outlined-light{--focus-inset:1px}.indicator:focus-visible{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))}.indicator:not(:disabled){cursor:pointer}.indicator:disabled{cursor:not-allowed}.indicator:before{background-color:var(--_appearance-color-text);content:\"\";opacity:.35;inline-size:1px;position:absolute;inset-inline-start:0}.indicator:not(.appearance-filled,.appearance-outlined,.appearance-outlined-light):before{block-size:50%}.indicator:is(.appearance-filled,.appearance-outlined,.appearance-outlined-light):before{block-size:100%}.indicator.size-super-condensed{--_split-button-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16));--_split-button-inline-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16));font:var(--vvd-typography-base-condensed)}.indicator.size-condensed{--_split-button-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 8));--_split-button-inline-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 12));font:var(--vvd-typography-base-condensed)}.indicator.size-expanded{--_split-button-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) + 8));--_split-button-inline-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2)));font:var(--vvd-typography-base-extended)}.indicator:not(.size-condensed,.size-expanded,.size-super-condensed){--_split-button-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2)));--_split-button-inline-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 8));font:var(--vvd-typography-base-extended)}.indicator:not(.shape-pill){--_border-radius:8px}.indicator:not(.shape-pill).size-super-condensed,.indicator:not(.shape-pill).super-condensed{--_border-radius:4px}.indicator.shape-pill{--_border-radius:24px}.icon{line-height:1}.icon-trailing .icon{order:1}.control>.icon{font-size:calc(var(--_split-button-block-size) / 2)}";
82
- //#endregion
83
- //#region src/lib/split-button/split-button.template.ts
84
- var getClasses = (x) => classNames([`connotation-${x.connotation}`, Boolean(x.connotation)], ["disabled", x.disabled], [`shape-${x.shape}`, Boolean(x.shape)], [`appearance-${x.appearance}`, Boolean(x.appearance)], [`size-${x.size}`, Boolean(x.size)], ["icon-only", !x.label && !!(x.icon || x.iconSlottedContent?.length)]);
85
- function actionButton(context) {
86
- const affixIconTemplate = affixIconTemplateFactory(context);
135
+ //#region src/lib/simple-color-picker/simple-color-picker.template.ts
136
+ var getClasses = (_) => classNames("control");
137
+ var SimpleColorPickerTemplate = (context) => {
138
+ const popupTag = context.tagFor(Popup);
139
+ const iconTag = context.tagFor(Icon);
140
+ const tooltipTag = context.tagFor(Tooltip);
87
141
  return html`
88
- <button
89
- ${ref("_action")}
90
- ${ref("control")}
91
- class="control ${getClasses}"
92
- ${delegateAria({
93
- ariaExpanded: null,
94
- ariaDisabled: (x) => x.disabled
95
- })}
96
- @click="${(x, c) => x.handleActionClick(c.event)}"
97
- >
98
- ${(x) => affixIconTemplate(x.icon, IconWrapper.Slot)}
99
- <span class="text">${(x) => x.label}</span>
100
- </button>
101
- `;
102
- }
103
- function indicatorButton(context) {
104
- const affixIconTemplate = affixIconTemplateFactory(context);
105
- return html`
106
- <button
107
- ${ref("_indicator")}
108
- class="indicator ${getClasses}"
109
- ${delegateAria({
110
- ariaLabel: (x) => x.indicatorAriaLabel || x.locale.splitButton.showMoreActionsLabel,
111
- ariaExpanded: (x) => x.ariaExpanded,
112
- ariaDisabled: (x) => x.disabled
113
- }, { onlySpecified: true })}
114
- @click="${(x, c) => x.handleIndicatorClick(c.event)}"
142
+ ${anchorSlotTemplateFactory()}
143
+ <${popupTag}
144
+ class="${getClasses}"
145
+ :anchor="${(x) => x._anchorEl}"
146
+ :open="${(x) => x.open}"
147
+ placement="${(x) => x.placement}"
148
+ offset="4"
149
+ @keydown="${(x, { event }) => {
150
+ if (x.open && handleEscapeKeyAndStopPropogation(event)) return false;
151
+ return true;
152
+ }}"
115
153
  >
116
- ${(x) => affixIconTemplate(x.splitIndicator)}
117
- </button>
154
+ <div class="palette" role="grid"
155
+ aria-rowcount="${(x) => Math.ceil(x.swatches.length / x._getRowLength())}"
156
+ aria-colcount="${(x) => x._getRowLength()}"
157
+ style="--swatches-per-row: ${(x) => x._getRowLength()};"
158
+ aria-label="${(x) => x.locale.simpleColorPicker.colorPaletteLabel}">
159
+ ${repeat((x) => x.swatches, (x) => x._renderColorSwatch(iconTag, tooltipTag), { positioning: true })}
160
+ </div>
161
+ </${popupTag}>
118
162
  `;
119
- }
120
- var SplitButtonTemplate = (context) => {
121
- return html` <template>
122
- <div class="base" role="group">
123
- ${actionButton(context)} ${indicatorButton(context)}
124
- <slot></slot>
125
- </div>
126
- </template>`;
127
163
  };
128
164
  //#endregion
129
- //#region src/lib/split-button/definition.ts
130
- /** @internal */
131
- var splitButtonDefinition = defineVividComponent("split-button", SplitButton, SplitButtonTemplate, [iconDefinition], {
132
- styles: split_button_default,
133
- shadowOptions: { delegatesFocus: true }
134
- });
165
+ //#region src/lib/simple-color-picker/definition.ts
166
+ var simpleColorPickerDefinition = defineVividComponent("simple-color-picker", SimpleColorPicker, SimpleColorPickerTemplate, [
167
+ popupDefinition,
168
+ iconDefinition,
169
+ tooltipDefinition
170
+ ], { styles: simple_color_picker_default });
135
171
  /**
136
- * Registers the button elements with the design system.
172
+ * Registers the simple-color-picker element with the design system.
137
173
  *
138
174
  * @param prefix - the prefix to use for the component name
139
175
  */
140
- var registerSplitButton = createRegisterFunction(splitButtonDefinition);
176
+ var registerSimpleColorPicker = createRegisterFunction(simpleColorPickerDefinition);
141
177
  //#endregion
142
- export { splitButtonDefinition as n, SplitButton as r, registerSplitButton as t };
178
+ export { simpleColorPickerDefinition as n, SimpleColorPicker as r, registerSimpleColorPicker as t };
@@ -3,83 +3,158 @@ const require_vivid_element = require("./vivid-element.cjs");
3
3
  const require_definition = require("./definition.cjs");
4
4
  const require_decorate = require("./decorate.cjs");
5
5
  const require_affix = require("./affix.cjs");
6
- const require_enums = require("./enums.cjs");
6
+ const require_delegates_aria = require("./delegates-aria.cjs");
7
+ const require_localized = require("./localized.cjs");
7
8
  let _microsoft_fast_element = require("@microsoft/fast-element");
8
9
  let _microsoft_fast_web_utilities = require("@microsoft/fast-web-utilities");
9
- //#region src/lib/status/status.scss?inline
10
- var status_default = ".base.connotation-information{--_connotation-color-intermediate:var(--vvd-status-information-intermediate,var(--vvd-color-information-500));--_connotation-color-faint:var(--vvd-status-information-faint,var(--vvd-color-information-50));--_connotation-color-fierce:var(--vvd-status-information-fierce,var(--vvd-color-information-700))}.base.connotation-warning{--_connotation-color-intermediate:var(--vvd-status-warning-intermediate,var(--vvd-color-warning-300));--_connotation-color-faint:var(--vvd-status-warning-faint,var(--vvd-color-warning-50));--_connotation-color-fierce:var(--vvd-status-warning-fierce,var(--vvd-color-warning-700))}.base.connotation-alert{--_connotation-color-intermediate:var(--vvd-status-alert-intermediate,var(--vvd-color-alert-500));--_connotation-color-faint:var(--vvd-status-alert-faint,var(--vvd-color-alert-50));--_connotation-color-fierce:var(--vvd-status-alert-fierce,var(--vvd-color-alert-700))}.base:not(.connotation-information,.connotation-warning,.connotation-alert){--_connotation-color-intermediate:var(--vvd-status-success-intermediate,var(--vvd-color-success-500));--_connotation-color-faint:var(--vvd-status-success-faint,var(--vvd-color-success-50));--_connotation-color-fierce:var(--vvd-status-success-fierce,var(--vvd-color-success-700))}.base{--_appearance-color-text:var(--_connotation-color-fierce);--_appearance-color-fill:var(--_connotation-color-faint);--_appearance-color-outline:var(--_connotation-color-intermediate);align-items:center;column-gap:8px;display:inline-flex}slot[name=icon],.icon{color:var(--_appearance-color-text);font-size:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 20)) * .8)}.text{text-align:start;flex-direction:column;flex-grow:1;justify-content:center;align-items:flex-start;gap:4px;min-width:0;display:flex}.headline{color:var(--_appearance-color-text);font:var(--vvd-typography-base-condensed-bold)}.description{color:var(--vvd-color-neutral-800);font:var(--vvd-typography-base-condensed)}.description[data-has-description=false]{display:none}";
11
- //#endregion
12
- //#region src/lib/status/status.ts
10
+ //#region src/lib/split-button/split-button.ts
13
11
  /**
14
12
  * @public
15
- * @component status
16
- * @slot - Description text below the title.
17
- * @slot icon - Optional custom icon. When not set, icon is derived from connotation.
13
+ * @component split-button
14
+ * @slot - Holds the menu content opened by the secondary action.
15
+ * @slot icon - The preferred way to add an icon to the component.
16
+ * @event {CustomEvent<undefined>} action-click - Event emitted when the action button is clicked
17
+ * @event {CustomEvent<undefined>} indicator-click - Event emitted when the indicator button is clicked
18
+ * @testSelector byLabel byLabel
19
+ * @testAction clickAction click #actionButton
20
+ * @testAction clickIndicator click #indicatorButton
21
+ * @testRef actionButton shadow button.control
22
+ * @testRef indicatorButton shadow button.indicator
18
23
  */
19
- var Status = class extends require_affix.AffixIcon(require_vivid_element.VividElement) {};
20
- require_decorate.__decorate([_microsoft_fast_element.attr], Status.prototype, "status", void 0);
21
- require_decorate.__decorate([_microsoft_fast_element.attr], Status.prototype, "connotation", void 0);
22
- require_decorate.__decorate([_microsoft_fast_element.observable], Status.prototype, "descriptionSlottedContent", void 0);
23
- //#endregion
24
- //#region src/lib/status/status.template.ts
25
- var DEFAULT_ICON_BY_CONNOTATION = {
26
- [require_enums.Connotation.Success]: "check-circle-solid",
27
- [require_enums.Connotation.Information]: "info-solid",
28
- [require_enums.Connotation.Warning]: "warning-solid",
29
- [require_enums.Connotation.Alert]: "error-solid"
24
+ var SplitButton = class extends require_affix.AffixIcon(require_localized.Localized(require_delegates_aria.DelegatesAria(require_vivid_element.VividElement))) {
25
+ constructor(..._args) {
26
+ super(..._args);
27
+ this.splitIndicator = "chevron-down-line";
28
+ this.disabled = false;
29
+ this.indicatorAriaLabel = null;
30
+ }
31
+ get action() {
32
+ return this._action;
33
+ }
34
+ get indicator() {
35
+ return this._indicator;
36
+ }
37
+ /**
38
+ * Handles action click events.
39
+ * Prevents interaction when disabled or pending.
40
+ *
41
+ * @internal
42
+ */
43
+ handleActionClick(event) {
44
+ if (this.disabled) {
45
+ event.preventDefault();
46
+ event.stopImmediatePropagation();
47
+ return;
48
+ } else this.$emit("action-click", void 0, { bubbles: false });
49
+ return true;
50
+ }
51
+ /**
52
+ * Handles indicator click events.
53
+ * Prevents interaction when disabled or pending.
54
+ *
55
+ * @internal
56
+ */
57
+ handleIndicatorClick(event) {
58
+ if (this.disabled) {
59
+ event.preventDefault();
60
+ event.stopImmediatePropagation();
61
+ return;
62
+ } else this.$emit("indicator-click", void 0, { bubbles: false });
63
+ return true;
64
+ }
30
65
  };
31
- function getEffectiveIcon(status) {
32
- if (status.icon) return status.icon;
33
- return status.connotation ? DEFAULT_ICON_BY_CONNOTATION[status.connotation] : void 0;
34
- }
35
- function getHeaderTemplate() {
36
- return _microsoft_fast_element.html`<div class="headline">${(x) => x.status}</div>`;
66
+ require_decorate.__decorate([_microsoft_fast_element.attr], SplitButton.prototype, "connotation", void 0);
67
+ require_decorate.__decorate([_microsoft_fast_element.attr], SplitButton.prototype, "shape", void 0);
68
+ require_decorate.__decorate([_microsoft_fast_element.attr], SplitButton.prototype, "appearance", void 0);
69
+ require_decorate.__decorate([_microsoft_fast_element.attr], SplitButton.prototype, "size", void 0);
70
+ require_decorate.__decorate([_microsoft_fast_element.attr], SplitButton.prototype, "label", void 0);
71
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({
72
+ attribute: "split-indicator",
73
+ mode: "fromView"
74
+ })], SplitButton.prototype, "splitIndicator", void 0);
75
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({
76
+ attribute: "disabled",
77
+ mode: "boolean"
78
+ })], SplitButton.prototype, "disabled", void 0);
79
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "indicator-aria-label" })], SplitButton.prototype, "indicatorAriaLabel", void 0);
80
+ //#endregion
81
+ //#region src/lib/split-button/split-button.scss?inline
82
+ var split_button_default = ":host{--_vvd-split-button-accent-firm-wrapper:var(--vvd-split-button-accent-firm);--_vvd-split-button-cta-firm-wrapper:var(--vvd-split-button-cta-firm);--_vvd-split-button-success-firm-wrapper:var(--vvd-split-button-success-firm);--_vvd-split-button-alert-firm-wrapper:var(--vvd-split-button-alert-firm);--_vvd-split-button-announcement-firm-wrapper:var(--vvd-split-button-announcement-firm)}:where(.control,.indicator):not(.appearance-filled,.appearance-outlined,.appearance-outlined-light){--vvd-split-button-accent-firm:var(--_vvd-split-button-accent-firm-wrapper,var(--vvd-split-button-accent-primary));--vvd-split-button-cta-firm:var(--_vvd-split-button-cta-firm-wrapper,var(--vvd-split-button-cta-primary));--vvd-split-button-success-firm:var(--_vvd-split-button-success-firm-wrapper,var(--vvd-split-button-success-primary));--vvd-split-button-alert-firm:var(--_vvd-split-button-alert-firm-wrapper,var(--vvd-split-button-alert-primary));--vvd-split-button-announcement-firm:var(--_vvd-split-button-announcement-firm-wrapper,var(--vvd-split-button-announcement-primary))}:host{display:inline-block}.base{inline-size:inherit;justify-content:flex-start;display:inline-flex}.control.connotation-cta,.indicator.connotation-cta{--_connotation-color-primary:var(--vvd-split-button-cta-primary,var(--vvd-color-cta-500));--_connotation-color-primary-text:var(--vvd-split-button-cta-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-split-button-cta-primary-increment,var(--vvd-color-cta-600));--_connotation-color-contrast:var(--vvd-split-button-cta-contrast,var(--vvd-color-cta-800));--_connotation-color-fierce:var(--vvd-split-button-cta-fierce,var(--vvd-color-cta-700));--_connotation-color-firm:var(--vvd-split-button-cta-firm,var(--vvd-color-cta-600));--_connotation-color-soft:var(--vvd-split-button-cta-soft,var(--vvd-color-cta-100));--_connotation-color-faint:var(--vvd-split-button-cta-faint,var(--vvd-color-cta-50));--_connotation-color-fierce-primary:var(--vvd-split-button-cta-fierce-primary,var(--vvd-color-cta-700))}.control.connotation-success,.indicator.connotation-success{--_connotation-color-primary:var(--vvd-split-button-success-primary,var(--vvd-color-success-500));--_connotation-color-primary-text:var(--vvd-split-button-success-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-split-button-success-primary-increment,var(--vvd-color-success-600));--_connotation-color-contrast:var(--vvd-split-button-success-contrast,var(--vvd-color-success-800));--_connotation-color-fierce:var(--vvd-split-button-success-fierce,var(--vvd-color-success-700));--_connotation-color-firm:var(--vvd-split-button-success-firm,var(--vvd-color-success-600));--_connotation-color-soft:var(--vvd-split-button-success-soft,var(--vvd-color-success-100));--_connotation-color-faint:var(--vvd-split-button-success-faint,var(--vvd-color-success-50));--_connotation-color-fierce-primary:var(--vvd-split-button-success-fierce-primary,var(--vvd-color-success-700))}.control.connotation-alert,.indicator.connotation-alert{--_connotation-color-primary:var(--vvd-split-button-alert-primary,var(--vvd-color-alert-500));--_connotation-color-primary-text:var(--vvd-split-button-alert-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-split-button-alert-primary-increment,var(--vvd-color-alert-600));--_connotation-color-contrast:var(--vvd-split-button-alert-contrast,var(--vvd-color-alert-800));--_connotation-color-fierce:var(--vvd-split-button-alert-fierce,var(--vvd-color-alert-700));--_connotation-color-firm:var(--vvd-split-button-alert-firm,var(--vvd-color-alert-600));--_connotation-color-soft:var(--vvd-split-button-alert-soft,var(--vvd-color-alert-100));--_connotation-color-faint:var(--vvd-split-button-alert-faint,var(--vvd-color-alert-50));--_connotation-color-fierce-primary:var(--vvd-split-button-alert-fierce-primary,var(--vvd-color-alert-700))}.control.connotation-announcement,.indicator.connotation-announcement{--_connotation-color-primary:var(--vvd-split-button-announcement-primary,var(--vvd-color-announcement-500));--_connotation-color-primary-text:var(--vvd-split-button-announcement-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-split-button-announcement-primary-increment,var(--vvd-color-announcement-600));--_connotation-color-contrast:var(--vvd-split-button-announcement-contrast,var(--vvd-color-announcement-800));--_connotation-color-fierce:var(--vvd-split-button-announcement-fierce,var(--vvd-color-announcement-700));--_connotation-color-firm:var(--vvd-split-button-announcement-firm,var(--vvd-color-announcement-600));--_connotation-color-soft:var(--vvd-split-button-announcement-soft,var(--vvd-color-announcement-100));--_connotation-color-faint:var(--vvd-split-button-announcement-faint,var(--vvd-color-announcement-50));--_connotation-color-fierce-primary:var(--vvd-split-button-announcement-fierce-primary,var(--vvd-color-announcement-700))}.control:not(.connotation-cta,.connotation-success,.connotation-alert,.connotation-announcement),.indicator:not(.connotation-cta,.connotation-success,.connotation-alert,.connotation-announcement){--_connotation-color-primary:var(--vvd-split-button-accent-primary,var(--vvd-color-canvas-text));--_connotation-color-primary-text:var(--vvd-split-button-accent-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-split-button-accent-primary-increment,var(--vvd-color-neutral-800));--_connotation-color-contrast:var(--vvd-split-button-accent-contrast,var(--vvd-color-neutral-800));--_connotation-color-fierce:var(--vvd-split-button-accent-fierce,var(--vvd-color-neutral-700));--_connotation-color-firm:var(--vvd-split-button-accent-firm,var(--vvd-color-canvas-text));--_connotation-color-soft:var(--vvd-split-button-accent-soft,var(--vvd-color-neutral-100));--_connotation-color-faint:var(--vvd-split-button-accent-faint,var(--vvd-color-neutral-50));--_connotation-color-fierce-primary:var(--vvd-split-button-accent-fierce-primary,var(--vvd-color-canvas-text))}.control.appearance-filled,.indicator.appearance-filled{--_appearance-color-text:var(--_connotation-color-primary-text);--_appearance-color-fill:var(--_connotation-color-primary);--_appearance-color-outline:transparent}.control.appearance-outlined,.indicator.appearance-outlined{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:transparent;--_appearance-color-outline:var(--vvd-color-neutral-300)}.control,.indicator{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:transparent;--_appearance-color-outline:transparent}.control.appearance-outlined-light,.indicator.appearance-outlined-light{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:transparent;--_appearance-color-outline:var(--vvd-color-neutral-300)}@media (hover:hover){.control:hover:where(:not(.disabled,:disabled,.readonly)).appearance-filled,.indicator:hover:where(:not(.disabled,:disabled,.readonly)).appearance-filled{--_appearance-color-text:var(--_connotation-color-primary-text);--_appearance-color-fill:var(--_connotation-color-primary-increment);--_appearance-color-outline:transparent}.control:hover:where(:not(.disabled,:disabled,.readonly)).appearance-outlined,.indicator:hover:where(:not(.disabled,:disabled,.readonly)).appearance-outlined{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:var(--_connotation-color-faint);--_appearance-color-outline:var(--vvd-color-neutral-300)}.control:hover:where(:not(.disabled,:disabled,.readonly)),.indicator: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-outlined-light,.indicator:hover:where(:not(.disabled,:disabled,.readonly)).appearance-outlined-light{--_appearance-color-text:var(--_connotation-color-fierce-primary);--_appearance-color-fill:color-mix(in sRGB, var(--_connotation-color-primary), transparent 90%);--_appearance-color-outline:var(--vvd-color-neutral-300)}}.control.hover:where(:not(.disabled,:disabled,.readonly)).appearance-filled,.indicator.hover:where(:not(.disabled,:disabled,.readonly)).appearance-filled{--_appearance-color-text:var(--_connotation-color-primary-text);--_appearance-color-fill:var(--_connotation-color-primary-increment);--_appearance-color-outline:transparent}.control.hover:where(:not(.disabled,:disabled,.readonly)).appearance-outlined,.indicator.hover:where(:not(.disabled,:disabled,.readonly)).appearance-outlined{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:var(--_connotation-color-faint);--_appearance-color-outline:var(--vvd-color-neutral-300)}.control.hover:where(:not(.disabled,:disabled,.readonly)),.indicator.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-outlined-light,.indicator.hover:where(:not(.disabled,:disabled,.readonly)).appearance-outlined-light{--_appearance-color-text:var(--_connotation-color-fierce-primary);--_appearance-color-fill:color-mix(in sRGB, var(--_connotation-color-primary), transparent 90%);--_appearance-color-outline:var(--vvd-color-neutral-300)}.control:disabled.appearance-filled,.indicator:disabled.appearance-filled{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:var(--vvd-color-neutral-100);--_appearance-color-outline:transparent}.control:disabled.appearance-outlined,.indicator:disabled.appearance-outlined{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:var(--vvd-color-neutral-300)}.control:disabled,.indicator:disabled{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:transparent}.control:disabled.appearance-outlined-light,.indicator:disabled.appearance-outlined-light{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:var(--vvd-color-neutral-300)}.control.disabled.appearance-filled,.indicator.disabled.appearance-filled{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:var(--vvd-color-neutral-100);--_appearance-color-outline:transparent}.control.disabled.appearance-outlined,.indicator.disabled.appearance-outlined{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:var(--vvd-color-neutral-300)}.control.disabled,.indicator.disabled{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:transparent}.control.disabled.appearance-outlined-light,.indicator.disabled.appearance-outlined-light{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:var(--vvd-color-neutral-300)}.control:active:where(:not(.disabled,:disabled)).appearance-filled,.indicator:active:where(:not(.disabled,:disabled)).appearance-filled{--_appearance-color-text:var(--_connotation-color-primary-text);--_appearance-color-fill:var(--_connotation-color-fierce);--_appearance-color-outline:transparent}.control:active:where(:not(.disabled,:disabled)).appearance-outlined,.indicator:active:where(:not(.disabled,:disabled)).appearance-outlined{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:var(--_connotation-color-soft);--_appearance-color-outline:var(--vvd-color-neutral-300)}.control:active:where(:not(.disabled,:disabled)),.indicator: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-outlined-light,.indicator:active:where(:not(.disabled,:disabled)).appearance-outlined-light{--_appearance-color-text:var(--_connotation-color-fierce-primary);--_appearance-color-fill:color-mix(in sRGB, var(--_connotation-color-primary), transparent 80%);--_appearance-color-outline:var(--vvd-color-neutral-300)}.control.active:where(:not(.disabled,:disabled)).appearance-filled,.indicator.active:where(:not(.disabled,:disabled)).appearance-filled{--_appearance-color-text:var(--_connotation-color-primary-text);--_appearance-color-fill:var(--_connotation-color-fierce);--_appearance-color-outline:transparent}.control.active:where(:not(.disabled,:disabled)).appearance-outlined,.indicator.active:where(:not(.disabled,:disabled)).appearance-outlined{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:var(--_connotation-color-soft);--_appearance-color-outline:var(--vvd-color-neutral-300)}.control.active:where(:not(.disabled,:disabled)),.indicator.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-outlined-light,.indicator.active:where(:not(.disabled,:disabled)).appearance-outlined-light{--_appearance-color-text:var(--_connotation-color-fierce-primary);--_appearance-color-fill:color-mix(in sRGB, var(--_connotation-color-primary), transparent 80%);--_appearance-color-outline:var(--vvd-color-neutral-300)}.control,.indicator{box-sizing:border-box;border:1px solid var(--_appearance-color-outline);background-color:var(--_appearance-color-fill);block-size:var(--_split-button-block-size);color:var(--_appearance-color-text);vertical-align:middle;user-select:none;flex-shrink:0;justify-content:center;align-items:center;margin:0;padding:0;display:inline-flex}.control{border-bottom-left-radius:var(--_border-radius);border-top-left-radius:var(--_border-radius);gap:var(--_split-button-icon-gap);border-inline-end:0}.control:not(.appearance-filled){--focus-stroke-gap-color:transparent}.control:focus-visible{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))}.control:not(.disabled){cursor:pointer}.control.disabled{cursor:not-allowed}.control.icon-only{contain:size;place-content:center}@supports (aspect-ratio:1){.control.icon-only{aspect-ratio:1}}@supports not (aspect-ratio:1){.control.icon-only{inline-size:var(--_split-button-block-size)}}.control:not(.icon-only){inline-size:inherit;flex-grow:1}.control.size-super-condensed{--_split-button-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16));font:var(--vvd-typography-base-condensed-bold)}.control.size-super-condensed:not(.icon-only){--_split-button-icon-gap:4px;padding-inline:8px}.control.size-condensed{--_split-button-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 8));font:var(--vvd-typography-base-condensed-bold)}.control.size-condensed:not(.icon-only){--_split-button-icon-gap:8px;padding-inline:12px}.control.size-expanded{--_split-button-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) + 8));font:var(--vvd-typography-base-extended-bold)}.control.size-expanded:not(.icon-only){--_split-button-icon-gap:10px;padding-inline:20px}.control:not(.size-condensed,.size-expanded,.size-super-condensed){--_split-button-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2)));font:var(--vvd-typography-base-bold)}.control:not(.size-condensed,.size-expanded,.size-super-condensed):not(.icon-only){--_split-button-icon-gap:8px;padding-inline:16px}.control:not(.shape-pill){--_border-radius:8px}.control:not(.shape-pill).size-super-condensed,.control:not(.shape-pill).super-condensed{--_border-radius:4px}.control.shape-pill{--_border-radius:24px}.control .text{text-overflow:ellipsis;white-space:nowrap;max-inline-size:100%;overflow:hidden}.indicator{border-bottom-right-radius:var(--_border-radius);border-top-right-radius:var(--_border-radius);inline-size:var(--_split-button-inline-size);isolation:isolate;border-inline-start:0;position:relative}.indicator:not(.appearance-filled){--focus-stroke-gap-color:transparent}.indicator.appearance-outlined,.indicator.appearance-outlined-light{--focus-inset:1px}.indicator:focus-visible{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))}.indicator:not(:disabled){cursor:pointer}.indicator:disabled{cursor:not-allowed}.indicator:before{background-color:var(--_appearance-color-text);content:\"\";opacity:.35;inline-size:1px;position:absolute;inset-inline-start:0}.indicator:not(.appearance-filled,.appearance-outlined,.appearance-outlined-light):before{block-size:50%}.indicator:is(.appearance-filled,.appearance-outlined,.appearance-outlined-light):before{block-size:100%}.indicator.size-super-condensed{--_split-button-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16));--_split-button-inline-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16));font:var(--vvd-typography-base-condensed)}.indicator.size-condensed{--_split-button-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 8));--_split-button-inline-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 12));font:var(--vvd-typography-base-condensed)}.indicator.size-expanded{--_split-button-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) + 8));--_split-button-inline-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2)));font:var(--vvd-typography-base-extended)}.indicator:not(.size-condensed,.size-expanded,.size-super-condensed){--_split-button-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2)));--_split-button-inline-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 8));font:var(--vvd-typography-base-extended)}.indicator:not(.shape-pill){--_border-radius:8px}.indicator:not(.shape-pill).size-super-condensed,.indicator:not(.shape-pill).super-condensed{--_border-radius:4px}.indicator.shape-pill{--_border-radius:24px}.icon{line-height:1}.icon-trailing .icon{order:1}.control>.icon{font-size:calc(var(--_split-button-block-size) / 2)}";
83
+ //#endregion
84
+ //#region src/lib/split-button/split-button.template.ts
85
+ var getClasses = (x) => (0, _microsoft_fast_web_utilities.classNames)([`connotation-${x.connotation}`, Boolean(x.connotation)], ["disabled", x.disabled], [`shape-${x.shape}`, Boolean(x.shape)], [`appearance-${x.appearance}`, Boolean(x.appearance)], [`size-${x.size}`, Boolean(x.size)], ["icon-only", !x.label && !!(x.icon || x.iconSlottedContent?.length)]);
86
+ function actionButton(context) {
87
+ const affixIconTemplate = require_affix.affixIconTemplateFactory(context);
88
+ return _microsoft_fast_element.html`
89
+ <button
90
+ ${(0, _microsoft_fast_element.ref)("_action")}
91
+ ${(0, _microsoft_fast_element.ref)("control")}
92
+ class="control ${getClasses}"
93
+ ${require_delegates_aria.delegateAria({
94
+ ariaExpanded: null,
95
+ ariaDisabled: (x) => x.disabled
96
+ })}
97
+ @click="${(x, c) => x.handleActionClick(c.event)}"
98
+ >
99
+ ${(x) => affixIconTemplate(x.icon, require_affix.IconWrapper.Slot)}
100
+ <span class="text">${(x) => x.label}</span>
101
+ </button>
102
+ `;
37
103
  }
38
- var StatusTemplate = (context) => {
104
+ function indicatorButton(context) {
39
105
  const affixIconTemplate = require_affix.affixIconTemplateFactory(context);
40
106
  return _microsoft_fast_element.html`
41
- <div
42
- class="${(x) => (0, _microsoft_fast_web_utilities.classNames)("base", x.connotation ? `connotation-${x.connotation}` : "")}"
107
+ <button
108
+ ${(0, _microsoft_fast_element.ref)("_indicator")}
109
+ class="indicator ${getClasses}"
110
+ ${require_delegates_aria.delegateAria({
111
+ ariaLabel: (x) => x.indicatorAriaLabel || x.locale.splitButton.showMoreActionsLabel,
112
+ ariaExpanded: (x) => x.ariaExpanded,
113
+ ariaDisabled: (x) => x.disabled
114
+ }, { onlySpecified: true })}
115
+ @click="${(x, c) => x.handleIndicatorClick(c.event)}"
43
116
  >
44
- ${(x) => affixIconTemplate(getEffectiveIcon(x), require_affix.IconWrapper.Slot)}
45
- <div class="text">
46
- ${(0, _microsoft_fast_element.when)((x) => x.status, getHeaderTemplate())}
47
- <div
48
- class="description"
49
- data-has-description="${(x) => (x.descriptionSlottedContent?.length ?? 0) > 0}"
50
- >
51
- <slot ${(0, _microsoft_fast_element.slotted)("descriptionSlottedContent")}></slot>
52
- </div>
53
- </div>
54
- </div>
117
+ ${(x) => affixIconTemplate(x.splitIndicator)}
118
+ </button>
55
119
  `;
120
+ }
121
+ var SplitButtonTemplate = (context) => {
122
+ return _microsoft_fast_element.html` <template>
123
+ <div class="base" role="group">
124
+ ${actionButton(context)} ${indicatorButton(context)}
125
+ <slot></slot>
126
+ </div>
127
+ </template>`;
56
128
  };
57
129
  //#endregion
58
- //#region src/lib/status/definition.ts
130
+ //#region src/lib/split-button/definition.ts
59
131
  /** @internal */
60
- var statusDefinition = require_vivid_element.defineVividComponent("status", Status, StatusTemplate, [require_definition.iconDefinition], { styles: status_default });
132
+ var splitButtonDefinition = require_vivid_element.defineVividComponent("split-button", SplitButton, SplitButtonTemplate, [require_definition.iconDefinition], {
133
+ styles: split_button_default,
134
+ shadowOptions: { delegatesFocus: true }
135
+ });
61
136
  /**
62
- * Registers the status element with the design system.
137
+ * Registers the button elements with the design system.
63
138
  *
64
139
  * @param prefix - the prefix to use for the component name
65
140
  */
66
- var registerStatus = require_vivid_element.createRegisterFunction(statusDefinition);
141
+ var registerSplitButton = require_vivid_element.createRegisterFunction(splitButtonDefinition);
67
142
  //#endregion
68
- Object.defineProperty(exports, "Status", {
143
+ Object.defineProperty(exports, "SplitButton", {
69
144
  enumerable: true,
70
145
  get: function() {
71
- return Status;
146
+ return SplitButton;
72
147
  }
73
148
  });
74
- Object.defineProperty(exports, "registerStatus", {
149
+ Object.defineProperty(exports, "registerSplitButton", {
75
150
  enumerable: true,
76
151
  get: function() {
77
- return registerStatus;
152
+ return registerSplitButton;
78
153
  }
79
154
  });
80
- Object.defineProperty(exports, "statusDefinition", {
155
+ Object.defineProperty(exports, "splitButtonDefinition", {
81
156
  enumerable: true,
82
157
  get: function() {
83
- return statusDefinition;
158
+ return splitButtonDefinition;
84
159
  }
85
160
  });