@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,330 +1,243 @@
1
1
  import { d as createRegisterFunction, t as VividElement, u as defineVividComponent } from "./vivid-element.js";
2
+ import { t as iconDefinition } from "./definition.js";
2
3
  import { t as __decorate } from "./decorate.js";
3
- import { n as keyArrowRight$1, t as keyArrowLeft$1 } from "./key-codes.js";
4
- import { n as tabPanelDefinition } from "./definition71.js";
5
- import { n as tabDefinition, r as Tab } from "./definition72.js";
6
- import { Updates, attr, html, observable, ref, slotted } from "@microsoft/fast-element";
7
- import { classNames, keyArrowDown, keyArrowUp, keyEnd, keyHome, limit, uniqueId } from "@microsoft/fast-web-utilities";
8
- //#region src/lib/tabs/tabs.scss?inline
9
- var tabs_default = ":host{display:block}.base{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:transparent;--_appearance-color-outline:transparent}.base.connotation-cta{--_connotation-color-firm:var(--vvd-tabs-cta-firm,var(--vvd-color-cta-600))}.base:not(.connotation-cta){--_connotation-color-firm:var(--vvd-tabs-accent-firm,var(--vvd-color-canvas-text))}.base{--_tabs-tablist-gutter:8px;--_tabs-active-indicator-stroke-width:2px;box-sizing:border-box;display:grid}.base.orientation-vertical{block-size:inherit;grid-template-rows:1fr;grid-template-columns:auto 1fr;overflow:hidden}.base:not(.orientation-vertical){block-size:var(--tabs-block-size,auto);grid-template-rows:auto 1fr;grid-template-columns:1fr;max-block-size:100%}.base.layout-stretch .scroll-shadow{flex:1}.base:not(.orientation-vertical) .scroll-shadow{isolation:isolate;position:relative;overflow:hidden}.base:not(.orientation-vertical) .scroll-shadow.start-scroll:before,.base:not(.orientation-vertical) .scroll-shadow.start-scroll:after,.base:not(.orientation-vertical) .scroll-shadow.end-scroll:before,.base:not(.orientation-vertical) .scroll-shadow.end-scroll:after{content:\"\";opacity:0;inline-size:10px;transition:opacity .1s;position:absolute;inset-block:0}.base:not(.orientation-vertical) .scroll-shadow.start-scroll:before{z-index:1;box-shadow:inset 7px 1px 5px -3px var(--vvd-color-neutral-950);opacity:.2;inset-inline-start:0}.base:not(.orientation-vertical) .scroll-shadow.end-scroll:after{box-shadow:inset -7px 1px 5px -3px var(--vvd-color-neutral-950);opacity:.2;inset-inline-end:0}.tabs{display:flex;overflow:hidden}.base.orientation-vertical .tabs{box-shadow:1px 0 0 0 var(--vvd-color-neutral-300);flex-direction:column}.base.orientation-horizontal .tabs{border-bottom:1px solid var(--vvd-color-neutral-300);flex-direction:row}.tablist{box-sizing:border-box;color:var(--_appearance-color-text);display:grid;position:relative;overflow:hidden}.base.layout-stretch .tablist{--_tab-justify-content:center;--_tabs-tablist-column:1fr}.tablist .base:not(.layout-stretch){--_tabs-tablist-column:auto}.base.orientation-vertical .tablist{padding:var(--_tabs-tablist-gutter);place-self:flex-start end;row-gap:var(--_tabs-tablist-gutter);grid-row:1/2;grid-template-rows:auto;grid-template-columns:auto 1fr;block-size:fit-content;min-block-size:100%;inline-size:100%}.base:not(.orientation-vertical) .tablist{justify-content:flex-start;column-gap:var(--_tabs-tablist-gutter);grid-auto-columns:var(--_tabs-tablist-column);inline-size:fit-content;min-inline-size:100%;padding-inline:var(--_tabs-tablist-gutter);grid-template-rows:auto auto;grid-auto-flow:column}.base.has-action-items.orientation-vertical .tablist{padding-block-end:0}.base.has-action-items:not(.orientation-vertical) .tablist{padding-inline-end:0}.tablist-wrapper{--scrollbar-track-color:transparent;--scrollbar-thumb-color:color-mix(in sRGB, var(--vvd-color-neutral-950), transparent 70%);scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin}.tablist-wrapper ::-webkit-scrollbar{width:4px}.tablist-wrapper ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.tablist-wrapper ::-webkit-scrollbar-thumb{background-color:var(--scrollbar-fallback-track-color,var(--scrollbar-thumb-color));border:0;border-radius:4px}.base:not(.orientation-vertical) .tablist-wrapper{align-self:end;inline-size:100%;overflow:auto hidden}.base.orientation-vertical .tablist-wrapper{block-size:100%;overflow:hidden auto}.tablist-wrapper::-webkit-scrollbar{display:none}slot[name=action-items]{display:flex}.base.has-action-items.orientation-horizontal slot[name=action-items]{margin-inline:var(--_tabs-tablist-gutter);align-items:center}.base.has-action-items.orientation-vertical slot[name=action-items]{margin-block:var(--_tabs-tablist-gutter)}.tabpanel{box-sizing:border-box;block-size:100%;min-block-size:0;min-inline-size:0}.base.scroll .tabpanel{--scrollbar-track-color:transparent;--scrollbar-thumb-color:color-mix(in sRGB, var(--vvd-color-neutral-950), transparent 70%);scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin;overflow-y:auto}.base.scroll .tabpanel ::-webkit-scrollbar{width:4px}.base.scroll .tabpanel ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.base.scroll .tabpanel ::-webkit-scrollbar-thumb{background-color:var(--scrollbar-fallback-track-color,var(--scrollbar-thumb-color));border:0;border-radius:4px}.base.gutters-small .tabpanel{padding:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) - calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16)))}.active-indicator{background:currentColor;margin-inline-start:calc(var(--_tabs-tablist-gutter) * -1)}.base.orientation-vertical .active-indicator{block-size:80%;inline-size:var(--_tabs-active-indicator-stroke-width);border-radius:2px;grid-area:1/1;align-self:center}.base:not(.orientation-vertical) .active-indicator{z-index:1;block-size:var(--_tabs-active-indicator-stroke-width);inline-size:calc(var(--_tabs-active-tab-inline-size));border-radius:2px;grid-area:2/1;position:absolute;inset-block-end:0;inset-inline-start:8px}.activeIndicatorTransition{transition:transform .2s ease-out,inline-size .2s ease-out}@media (prefers-reduced-motion:reduce){.activeIndicatorTransition{transition-duration:.01ms}}";
4
+ import { t as Icon } from "./icon.js";
5
+ import { t as DelegatesAria } from "./delegates-aria.js";
6
+ import { n as applyHostSemantics, t as HostSemantics } from "./host-semantics.js";
7
+ import { t as DataGridCellRole } from "./data-grid.options.js";
8
+ import { attr, html } from "@microsoft/fast-element";
9
+ //#region src/lib/table/table.scss?inline
10
+ var table_default = ":host{border-collapse:collapse;border-spacing:0;inline-size:100%}.table-inner-container{--scrollbar-track-color:transparent;--scrollbar-thumb-color:color-mix(in sRGB, var(--vvd-color-neutral-950), transparent 70%);scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin}.table-inner-container ::-webkit-scrollbar{width:4px}.table-inner-container ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.table-inner-container ::-webkit-scrollbar-thumb{background-color:var(--scrollbar-fallback-track-color,var(--scrollbar-thumb-color));border:0;border-radius:4px}.table-inner-container{inline-size:100%;display:block;overflow-x:auto}.table-content{inline-size:100%;display:table;overflow-x:auto}";
10
11
  //#endregion
11
- //#region src/lib/tabs/tabs.ts
12
- var ACTIVE_TAB_WIDTH = "--_tabs-active-tab-inline-size";
13
- var TabsGutters = {
14
- None: "none",
15
- Small: "small"
12
+ //#region src/lib/table/table-sorting-button.scss?inline
13
+ var table_sorting_button_default = "button{aspect-ratio:1;cursor:pointer;background:0 0;border:none;border-radius:8px}button:focus-visible{--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))}";
14
+ //#endregion
15
+ //#region src/lib/table/table-head.scss?inline
16
+ var table_head_default = ":host{display:table-header-group}";
17
+ //#endregion
18
+ //#region src/lib/table/table-body.scss?inline
19
+ var table_body_default = ":host{display:table-row-group}";
20
+ //#endregion
21
+ //#region src/lib/table/table-row.scss?inline
22
+ var table_row_default = ":host{display:table-row}@media (hover:hover){:host:hover{background-color:var(--vvd-color-neutral-200)}}:host[selected]{background-color:var(--_appearance-color-fill)}.base.connotation-cta{--_connotation-color-primary:var(--vvd-data-grid-row-cta-primary,var(--vvd-color-cta-500));--_connotation-color-primary-text:var(--vvd-data-grid-row-cta-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-data-grid-row-cta-primary-increment,var(--vvd-color-cta-600));--_connotation-color-firm:var(--vvd-data-grid-row-cta-firm,var(--vvd-color-cta-600));--_connotation-color-faint:var(--vvd-data-grid-row-cta-faint,var(--vvd-color-cta-50));--_connotation-color-soft:var(--vvd-data-grid-row-cta-soft,var(--vvd-color-cta-100));--_connotation-color-pale:var(--vvd-data-grid-row-cta-pale,var(--vvd-color-cta-300));--_connotation-color-dim:var(--vvd-data-grid-row-cta-dim,var(--vvd-color-cta-200))}.base:not(.connotation-cta){--_connotation-color-primary:var(--vvd-data-grid-row-accent-primary,var(--vvd-color-canvas-text));--_connotation-color-primary-text:var(--vvd-data-grid-row-accent-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-data-grid-row-accent-primary-increment,var(--vvd-color-neutral-800));--_connotation-color-firm:var(--vvd-data-grid-row-accent-firm,var(--vvd-color-canvas-text));--_connotation-color-faint:var(--vvd-data-grid-row-accent-faint,var(--vvd-color-neutral-50));--_connotation-color-soft:var(--vvd-data-grid-row-accent-soft,var(--vvd-color-neutral-100));--_connotation-color-pale:var(--vvd-data-grid-row-accent-pale,var(--vvd-color-neutral-300));--_connotation-color-dim:var(--vvd-data-grid-row-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.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;width:100%;color:var(--vvd-color-canvas-text);display:contents}";
23
+ //#endregion
24
+ //#region src/lib/table/table-header-cell.scss?inline
25
+ var table_header_cell_default = ":host{border-bottom:1px solid var(--vvd-color-neutral-300);vertical-align:middle;display:table-cell}:host.connotation-cta{--_connotation-color-primary:var(--vvd-data-grid-cell-cta-primary,var(--vvd-color-cta-500));--_connotation-color-primary-text:var(--vvd-data-grid-cell-cta-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-data-grid-cell-cta-primary-increment,var(--vvd-color-cta-600));--_connotation-color-firm:var(--vvd-data-grid-cell-cta-firm,var(--vvd-color-cta-600));--_connotation-color-soft:var(--vvd-data-grid-cell-cta-soft,var(--vvd-color-cta-100));--_connotation-color-faint:var(--vvd-data-grid-cell-cta-faint,var(--vvd-color-cta-50));--_connotation-color-pale:var(--vvd-data-grid-cell-cta-pale,var(--vvd-color-cta-300));--_connotation-color-dim:var(--vvd-data-grid-cell-cta-dim,var(--vvd-color-cta-200))}:host:not(.connotation-cta){--_connotation-color-primary:var(--vvd-data-grid-cell-accent-primary,var(--vvd-color-canvas-text));--_connotation-color-primary-text:var(--vvd-data-grid-cell-accent-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-data-grid-cell-accent-primary-increment,var(--vvd-color-neutral-800));--_connotation-color-firm:var(--vvd-data-grid-cell-accent-firm,var(--vvd-color-canvas-text));--_connotation-color-soft:var(--vvd-data-grid-cell-accent-soft,var(--vvd-color-neutral-100));--_connotation-color-faint:var(--vvd-data-grid-cell-accent-faint,var(--vvd-color-neutral-50));--_connotation-color-pale:var(--vvd-data-grid-cell-accent-pale,var(--vvd-color-neutral-300));--_connotation-color-dim:var(--vvd-data-grid-cell-accent-dim,var(--vvd-color-neutral-200))}:host{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:transparent;--_appearance-color-outline:transparent}@media (hover:hover){:host:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:var(--_connotation-color-faint);--_appearance-color-outline:transparent}}:host.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:var(--_connotation-color-faint);--_appearance-color-outline:transparent}:host.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){:host.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}}:host.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}:host{--_table-cell-default-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) + 8));--_table-cell-default-white-space:nowrap}:host([role=columnheader]){border-bottom-color:var(--vvd-color-canvas-text)}:host(:focus-visible){outline:none}.base{box-sizing:border-box;block-size:100%;color:var(--_appearance-color-text);font:var(--vvd-typography-base-bold);min-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) + 8));padding:0;flex-direction:column;justify-content:center;padding-block:4px;padding-inline:12px;display:flex;overflow:hidden}:host(:focus-visible) .base{--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))}slot{text-overflow:ellipsis;inline-size:100%;white-space:var(--table-cell-white-space,var(--_table-cell-default-white-space));flex:none;display:block;overflow:hidden}";
26
+ //#endregion
27
+ //#region src/lib/table/table-cell.scss?inline
28
+ var table_cell_default = ":host{border-bottom:1px solid var(--vvd-color-neutral-300);vertical-align:middle;display:table-cell}:host.connotation-cta{--_connotation-color-primary:var(--vvd-data-grid-cell-cta-primary,var(--vvd-color-cta-500));--_connotation-color-primary-text:var(--vvd-data-grid-cell-cta-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-data-grid-cell-cta-primary-increment,var(--vvd-color-cta-600));--_connotation-color-firm:var(--vvd-data-grid-cell-cta-firm,var(--vvd-color-cta-600));--_connotation-color-soft:var(--vvd-data-grid-cell-cta-soft,var(--vvd-color-cta-100));--_connotation-color-faint:var(--vvd-data-grid-cell-cta-faint,var(--vvd-color-cta-50));--_connotation-color-pale:var(--vvd-data-grid-cell-cta-pale,var(--vvd-color-cta-300));--_connotation-color-dim:var(--vvd-data-grid-cell-cta-dim,var(--vvd-color-cta-200))}:host:not(.connotation-cta){--_connotation-color-primary:var(--vvd-data-grid-cell-accent-primary,var(--vvd-color-canvas-text));--_connotation-color-primary-text:var(--vvd-data-grid-cell-accent-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-data-grid-cell-accent-primary-increment,var(--vvd-color-neutral-800));--_connotation-color-firm:var(--vvd-data-grid-cell-accent-firm,var(--vvd-color-canvas-text));--_connotation-color-soft:var(--vvd-data-grid-cell-accent-soft,var(--vvd-color-neutral-100));--_connotation-color-faint:var(--vvd-data-grid-cell-accent-faint,var(--vvd-color-neutral-50));--_connotation-color-pale:var(--vvd-data-grid-cell-accent-pale,var(--vvd-color-neutral-300));--_connotation-color-dim:var(--vvd-data-grid-cell-accent-dim,var(--vvd-color-neutral-200))}:host{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:transparent;--_appearance-color-outline:transparent}@media (hover:hover){:host:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:var(--_connotation-color-faint);--_appearance-color-outline:transparent}}:host.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:var(--_connotation-color-faint);--_appearance-color-outline:transparent}:host.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){:host.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}}:host.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}:host:not([cell-type=columnheader]){--_table-cell-default-block-size:100%;--_table-cell-default-white-space:normal}:host[selected]{background-color:var(--_appearance-color-fill)}:host(:focus-visible){outline:none}.base{box-sizing:border-box;block-size:100%;color:var(--_appearance-color-text);font:var(--vvd-typography-base);min-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) + 8));flex-direction:column;justify-content:center;padding-block:4px;padding-inline:12px;display:flex;overflow:hidden}:host(:focus-visible) .base{--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))}slot{flex:none;inline-size:100%;display:block}";
29
+ //#endregion
30
+ //#region src/lib/table/table.ts
31
+ /**
32
+ * @public
33
+ * @component table
34
+ * @slot - Holds Table Head and Table Body elements.
35
+ */
36
+ var Table = class extends VividElement {};
37
+ //#endregion
38
+ //#region src/lib/table/table.template.ts
39
+ var TableTemplate = () => {
40
+ return html`
41
+ <template role="table">
42
+ <div part="inner-container" class="table-inner-container">
43
+ <div part="content" class="table-content">
44
+ <slot></slot>
45
+ </div>
46
+ </div>
47
+ </template>
48
+ `;
16
49
  };
17
- var TabsOrientation = {
18
- vertical: "vertical",
19
- horizontal: "horizontal"
50
+ //#endregion
51
+ //#region src/lib/table/table-head.ts
52
+ var tableHeadName = "table-head";
53
+ /**
54
+ * @public
55
+ * @component table-head
56
+ * @slot - Holds Table Row elements that make up the table's header.
57
+ */
58
+ var TableHead = class extends VividElement {};
59
+ //#endregion
60
+ //#region src/lib/table/table-head.template.ts
61
+ var TableHeadTemplate = () => {
62
+ return html`
63
+ <template>
64
+ <slot></slot>
65
+ </template>
66
+ `;
20
67
  };
21
- var oppositeOrientation = (orientation) => orientation === TabsOrientation.horizontal ? TabsOrientation.vertical : TabsOrientation.horizontal;
22
- var gridProperty = (orientation) => orientation === TabsOrientation.horizontal ? "gridColumn" : "gridRow";
23
- var translateProperty = (orientation) => orientation === TabsOrientation.horizontal ? "translateX" : "translateY";
24
- var offsetProperty = (orientation) => orientation === TabsOrientation.horizontal ? "offsetLeft" : "offsetTop";
25
- var isFocusableElement = (el) => el.getAttribute("aria-disabled") !== "true" && !el.disabled && !el.hasAttribute("hidden");
26
- var arrayShallowEquals = (a, b) => a.length === b.length && a.every((v, i) => v === b[i]);
68
+ //#endregion
69
+ //#region src/lib/table/table-body.ts
27
70
  /**
28
71
  * @public
29
- * @component tabs
30
- * @slot - Default slot for tab and tab-panel elements.
31
- * @slot action-items - Slot for action items such as buttons or controls.
32
- * @event {CustomEvent<HTMLElement>} change - Fires a custom 'change' event when a tab is clicked or during keyboard navigation
72
+ * @component table-body
73
+ * @slot - Holds Table Row elements that make up the table's data.
33
74
  */
34
- var Tabs = class extends VividElement {
35
- constructor(..._args) {
36
- super(..._args);
37
- this.orientation = TabsOrientation.horizontal;
38
- this.tabs = [];
39
- this.tabpanels = [];
40
- this.#isTabsChangeQueued = false;
41
- this.#lastActiveId = void 0;
42
- this.#onTabClick = (event) => {
43
- const selectedTab = event.currentTarget;
44
- if (this._validTabs.includes(selectedTab)) this.#setActiveTabDueToUserInteraction(selectedTab);
45
- };
46
- this.#onTabKeyDown = (event) => {
47
- const tabs = this._validTabs;
48
- const activeTab = this.activetab;
49
- if (!activeTab) return;
50
- const [arrowKeyPrev, arrowKeyNext] = this.orientation === TabsOrientation.horizontal ? [keyArrowLeft$1, keyArrowRight$1] : [keyArrowUp, keyArrowDown];
51
- const keyToNextTab = {
52
- [arrowKeyPrev]: () => tabs[(tabs.indexOf(activeTab) - 1 + tabs.length) % tabs.length],
53
- [arrowKeyNext]: () => tabs[(tabs.indexOf(activeTab) + 1) % tabs.length],
54
- [keyHome]: () => tabs[0],
55
- [keyEnd]: () => tabs[tabs.length - 1]
56
- };
57
- if (keyToNextTab[event.key]) {
58
- event.preventDefault();
59
- this.#setActiveTabDueToUserInteraction(keyToNextTab[event.key]());
60
- }
61
- };
62
- this.#isTransitioningTransform = false;
63
- this.scrollablePanel = false;
64
- this._actionItemsSlottedContent = [];
65
- this.activeindicator = true;
66
- }
67
- /** @internal */
68
- orientationChanged() {
69
- this._registerTabsChange();
70
- if (this.$fastController.isConnected) Updates.enqueue(() => this.#moveActiveIndicator(false));
71
- }
72
- /** @internal */
73
- tabsChanged() {
74
- for (const tab of this.tabs) {
75
- if (!tab.id) tab.id = `tab-${uniqueId()}`;
76
- tab.addEventListener("click", this.#onTabClick);
77
- tab.addEventListener("keydown", this.#onTabKeyDown);
78
- }
79
- this._registerTabsChange();
80
- }
81
- /** @internal */
82
- tabpanelsChanged() {
83
- for (const panel of this.tabpanels) if (!panel.id) panel.id = `panel-${uniqueId()}`;
84
- this._registerTabsChange();
85
- }
86
- #areSlotsSynced() {
87
- return arrayShallowEquals(this.tabs, this._tabsSlot.assignedNodes()) && arrayShallowEquals(this.tabpanels, this._tabPanelsSlot.assignedNodes());
88
- }
89
- /** Tabs that are paired with a tabpanel. Ignore any excess tabs or panels. */
90
- get _pairedTabs() {
91
- return this.tabs.slice(0, Math.min(this.tabs.length, this.tabpanels.length));
92
- }
93
- /** Tabs that are eligible to become active. */
94
- get _validTabs() {
95
- return this._pairedTabs.filter(isFocusableElement);
96
- }
97
- /** @internal */
98
- activeidChanged() {
99
- this._registerTabsChange();
100
- }
101
- /** A reference to the active tab */
102
- get activetab() {
103
- return this._validTabs.find((tab) => tab.id === this.activeid) ?? null;
104
- }
105
- #setActiveTabDueToUserInteraction(tab) {
106
- this.activeid = tab.id;
107
- tab.focus();
108
- this.$emit("change", tab);
109
- }
110
- #isTabsChangeQueued;
111
- /**
112
- * Defer actual processing of changes into a microtask to wait for all DOM changes to complete. E.g. when tabs and
113
- * active id are updated at the same time.
114
- */
115
- _registerTabsChange() {
116
- if (this.#isTabsChangeQueued) return;
117
- this.#isTabsChangeQueued = true;
118
- window.queueMicrotask(() => {
119
- if (this.$fastController.isConnected && this.#areSlotsSynced()) this.#handleTabsChange();
120
- this.#isTabsChangeQueued = false;
121
- });
122
- }
123
- #lastActiveId;
124
- #handleTabsChange() {
125
- const validTabs = this._validTabs;
126
- let newActiveId = this.activeid;
127
- if (!validTabs.length || newActiveId && !validTabs.find((t) => t.id === newActiveId)) newActiveId = void 0;
128
- if (!newActiveId && validTabs.length) newActiveId = validTabs[0].id;
129
- if (this.activeid !== newActiveId) {
130
- this.activeid = newActiveId;
131
- this.$emit("change", this.activetab);
132
- }
133
- this.#updateSlottedChildren();
134
- if (this.activeid !== this.#lastActiveId) {
135
- if (this.activetab) {
136
- const shouldAnimate = this.#lastActiveId !== void 0;
137
- this.#scrollToTab(this.activetab, shouldAnimate);
138
- this.#moveActiveIndicator(shouldAnimate);
139
- }
140
- this.#lastActiveId = this.activeid;
141
- } else this.#moveActiveIndicator(this.#isTransitioningTransform);
142
- }
143
- /** Updates the tabs and their panels according to the current state of the component. */
144
- #updateSlottedChildren() {
145
- for (const [index, tab] of this._pairedTabs.entries()) {
146
- const panel = this.tabpanels[index];
147
- const isActiveTab = tab.id === this.activeid;
148
- /* v8 ignore else -- @preserve */
149
- if (tab instanceof Tab) tab.active = isActiveTab;
150
- tab.setAttribute("aria-controls", panel.id);
151
- tab.setAttribute("tabindex", isActiveTab ? "0" : "-1");
152
- if (isActiveTab && this.connotation) tab.setAttribute("connotation", this.connotation);
153
- else tab.removeAttribute("connotation");
154
- tab.classList.toggle("vertical", this.orientation === TabsOrientation.vertical);
155
- tab.style[gridProperty(oppositeOrientation(this.orientation))] = "";
156
- tab.style[gridProperty(this.orientation)] = `${index + 1}`;
157
- panel.setAttribute("aria-labelledby", tab.id);
158
- panel.hidden = !isActiveTab;
159
- }
160
- }
161
- #onTabClick;
162
- #onTabKeyDown;
163
- /**
164
- * Adjusts the active index by numerical increments.
165
- * Only enabled tabs are considered.
166
- */
167
- adjust(adjustment) {
168
- const focusableTabs = this._validTabs;
169
- const currentActiveTabIndex = focusableTabs.findIndex((t) => t.id === this.activeid);
170
- if (currentActiveTabIndex === -1) return;
171
- const nextTabIndex = limit(0, focusableTabs.length - 1, currentActiveTabIndex + adjustment);
172
- this.#setActiveTabDueToUserInteraction(focusableTabs[nextTabIndex]);
173
- }
174
- #isTransitioningTransform;
175
- /** @internal */
176
- _onActiveIndicatorTransitionend(event) {
177
- /* v8 ignore else -- @preserve */
178
- if (event.propertyName === "transform") this.#isTransitioningTransform = false;
179
- }
180
- #cancelAnimationIfNeeded() {
181
- this.#isTransitioningTransform = false;
182
- this.activeIndicatorRef.classList.remove("activeIndicatorTransition");
183
- }
184
- #moveActiveIndicator(shouldAnimate) {
185
- const activeTabIndex = this._pairedTabs.findIndex((tab) => tab.id === this.activeid);
186
- if (activeTabIndex === -1) return;
187
- const indicatorEl = this.activeIndicatorRef;
188
- const currentOffset = indicatorEl[offsetProperty(this.orientation)];
189
- indicatorEl.style[gridProperty(this.orientation)] = `${activeTabIndex + 1}`;
190
- const targetOffset = indicatorEl[offsetProperty(this.orientation)];
191
- indicatorEl.style[gridProperty(this.orientation)] = "";
192
- const relativeOffset = targetOffset - currentOffset;
193
- const currentTransform = indicatorEl.style.transform;
194
- const targetTransform = `${translateProperty(this.orientation)}(${relativeOffset}px)`;
195
- if (shouldAnimate) {
196
- indicatorEl.classList.add("activeIndicatorTransition");
197
- if (currentTransform !== targetTransform) this.#isTransitioningTransform = true;
198
- } else this.#cancelAnimationIfNeeded();
199
- indicatorEl.style.transform = targetTransform;
200
- indicatorEl.style.setProperty(ACTIVE_TAB_WIDTH, `${this.tabs[activeTabIndex].getBoundingClientRect().width}px`);
201
- }
202
- /** @internal */
203
- connotationChanged() {
204
- this._registerTabsChange();
205
- }
206
- #updateScrollStatus() {
207
- this.#tabListScrollWrapper.dispatchEvent(new Event("scroll"));
208
- }
209
- #resizeObserver;
75
+ var TableBody = class extends VividElement {};
76
+ //#endregion
77
+ //#region src/lib/table/table-body.template.ts
78
+ var TableBodyTemplate = () => {
79
+ return html`
80
+ <template>
81
+ <slot></slot>
82
+ </template>
83
+ `;
84
+ };
85
+ //#endregion
86
+ //#region src/lib/table/table-row.ts
87
+ /**
88
+ * @public
89
+ * @component table-row
90
+ * @slot - Holds Table Cell and Table Header Cell elements.
91
+ */
92
+ var TableRow = class extends HostSemantics(VividElement) {};
93
+ //#endregion
94
+ //#region src/lib/table/table-row.template.ts
95
+ var TableRowTemplate = () => {
96
+ return html`
97
+ <template
98
+ ${applyHostSemantics({ role: "row" })}
99
+ >
100
+ <div class="base">
101
+ <slot></slot>
102
+ </div>
103
+ </template>
104
+ `;
105
+ };
106
+ //#endregion
107
+ //#region src/lib/table/table-header-cell.ts
108
+ /**
109
+ * @public
110
+ * @component table-header-cell
111
+ * @slot - Holds the header cell's content.
112
+ * @event {CustomEvent<HTMLElement>} cell-focused - Fires when the cell or its contents receive focus
113
+ */
114
+ var TableHeaderCell = class extends HostSemantics(VividElement) {
210
115
  connectedCallback() {
211
116
  super.connectedCallback();
212
- this._registerTabsChange();
213
- requestAnimationFrame(() => this.#updateScrollStatus());
214
- this.#resizeObserver = new ResizeObserver(() => {
215
- this.#moveActiveIndicator(this.#isTransitioningTransform);
216
- this.#updateScrollStatus();
217
- });
218
- this.#resizeObserver.observe(this.#tabListScrollWrapper);
219
- this.#resizeObserver.observe(this.tablist);
117
+ this.addEventListener("sort", this.#sortHandler);
118
+ }
119
+ #sortHandler(event) {
120
+ const direction = event.detail;
121
+ if (direction === "asc") this.setAttribute("aria-sort", "ascending");
122
+ else if (direction === "desc") this.setAttribute("aria-sort", "descending");
123
+ else if (direction === "none") this.setAttribute("aria-sort", "none");
124
+ else this.removeAttribute("aria-sort");
220
125
  }
221
126
  disconnectedCallback() {
222
127
  super.disconnectedCallback();
223
- this.#resizeObserver.disconnect();
224
- }
225
- get #tabListWrapper() {
226
- return this.shadowRoot.querySelector(".tablist-wrapper");
227
- }
228
- get #tabListScrollWrapper() {
229
- return this.tablist.parentElement;
230
- }
231
- #scrollToTab(tab, shouldAnimate = true) {
232
- const index = this.tabs.findIndex((t) => t === tab);
233
- let left = 0;
234
- let top = 0;
235
- if (this.orientation === TabsOrientation.vertical) {
236
- if (index === this.tabs.length - 1) top = this.#tabListWrapper.scrollHeight;
237
- if (index > 0 && index < this.tabs.length - 1) top = tab.offsetTop - this.#tabListWrapper.offsetHeight / 2 + tab.offsetHeight / 2;
238
- } else {
239
- if (index === this.tabs.length - 1) left = this.#tabListWrapper.scrollWidth;
240
- if (index > 0 && index < this.tabs.length - 1) left = tab.offsetLeft - this.#tabListWrapper.offsetWidth / 2 + tab.offsetWidth / 2;
241
- }
242
- this.#tabListWrapper.scrollTo({
243
- top,
244
- left,
245
- behavior: shouldAnimate ? "smooth" : "instant"
246
- });
128
+ this.removeEventListener("sort", this.#sortHandler);
247
129
  }
248
130
  };
249
- __decorate([attr], Tabs.prototype, "orientation", void 0);
250
- __decorate([observable], Tabs.prototype, "tabs", void 0);
251
- __decorate([observable], Tabs.prototype, "tabpanels", void 0);
252
- __decorate([attr], Tabs.prototype, "activeid", void 0);
253
- __decorate([observable], Tabs.prototype, "activeIndicatorRef", void 0);
254
- __decorate([observable], Tabs.prototype, "tablist", void 0);
255
- __decorate([attr], Tabs.prototype, "connotation", void 0);
256
- __decorate([attr], Tabs.prototype, "gutters", void 0);
257
- __decorate([attr({
258
- mode: "boolean",
259
- attribute: "scrollable-panel"
260
- })], Tabs.prototype, "scrollablePanel", void 0);
261
- __decorate([attr({ attribute: "tabs-layout" })], Tabs.prototype, "tabsLayout", void 0);
262
- __decorate([observable], Tabs.prototype, "_actionItemsSlottedContent", void 0);
263
- __decorate([attr({ mode: "boolean" })], Tabs.prototype, "activeindicator", void 0);
264
131
  //#endregion
265
- //#region src/lib/tabs/tabs.template.ts
266
- function setNoScrollState(scrollShadow, scrollWrapper) {
267
- if (scrollWrapper.scrollWidth <= scrollWrapper.clientWidth) {
268
- scrollShadow.classList.toggle("start-scroll", false);
269
- scrollShadow.classList.toggle("end-scroll", false);
270
- return true;
271
- }
272
- return false;
273
- }
274
- function addStartShadow(scrollShadow, scrollWrapper) {
275
- scrollShadow.classList.toggle("start-scroll", scrollWrapper.scrollLeft > 0);
276
- }
277
- function addEndShadow(scrollShadow, scrollWrapper) {
278
- scrollShadow.classList.toggle("end-scroll", scrollWrapper.scrollLeft + 1 < scrollWrapper.scrollWidth - scrollWrapper.clientWidth);
279
- }
280
- function setShadowWhenScrollTabs(_, { event }) {
281
- const scrollWrapper = event.currentTarget;
282
- const scrollShadow = scrollWrapper.parentElement;
283
- if (setNoScrollState(scrollShadow, scrollWrapper)) return;
284
- addStartShadow(scrollShadow, scrollWrapper);
285
- addEndShadow(scrollShadow, scrollWrapper);
286
- }
287
- //#endregion
288
- //#region src/lib/tabs/definition.ts
289
- /** @internal */
290
- var tabsDefinition = defineVividComponent("tabs", Tabs, html`
291
- <template>
292
- <div
293
- class="${(x) => classNames("base", `layout-${x.tabsLayout ?? "align-start"}`, [`connotation-${x.connotation}`, Boolean(x.connotation)], [`orientation-${x.orientation}`, Boolean(x.orientation)], `gutters-${x.gutters ?? "small"}`, ["scroll", x.scrollablePanel], ["has-action-items", Boolean(x._actionItemsSlottedContent.length)])}"
132
+ //#region src/lib/table/table-header-cell.template.ts
133
+ var TableHeaderCellTemplate = (context) => {
134
+ const tableHeadTag = context.tagForNonDependency(tableHeadName);
135
+ return html`
136
+ <template
137
+ ${applyHostSemantics({ role: (x) => x.closest(tableHeadTag) !== null ? DataGridCellRole.columnheader : DataGridCellRole.rowheader })}
294
138
  >
295
- <div class="tabs">
296
- <div class="scroll-shadow">
297
- <div class="tablist-wrapper" @scroll="${setShadowWhenScrollTabs}">
298
- <div class="tablist" role="tablist" ${ref("tablist")}>
299
- <slot name="tab" ${ref("_tabsSlot")} ${slotted("tabs")}></slot>
300
- <div
301
- ${ref("activeIndicatorRef")}
302
- class="active-indicator"
303
- @transitionend="${(x, c) => x._onActiveIndicatorTransitionend(c.event)}"
304
- ></div>
305
- </div>
306
- </div>
307
- </div>
308
- <slot
309
- name="action-items"
310
- ${slotted("_actionItemsSlottedContent")}
311
- ></slot>
139
+ <div class="base">
140
+ <slot></slot>
312
141
  </div>
313
- <div class="tabpanel" part="tab-panel">
314
- <slot
315
- name="tabpanel"
316
- ${ref("_tabPanelsSlot")}
317
- ${slotted("tabpanels")}
318
- ></slot>
142
+ </template>
143
+ `;
144
+ };
145
+ //#endregion
146
+ //#region src/lib/table/table-cell.ts
147
+ /**
148
+ * @public
149
+ * @component table-cell
150
+ * @slot - Holds the cell's content.
151
+ * @event {CustomEvent<HTMLElement>} cell-focused - Fires when the cell or its contents receive focus
152
+ */
153
+ var TableCell = class extends HostSemantics(VividElement) {};
154
+ //#endregion
155
+ //#region src/lib/table/table-cell.template.ts
156
+ var TableCellTemplate = () => {
157
+ return html`
158
+ <template
159
+ ${applyHostSemantics({ role: () => "cell" })}
160
+ >
161
+ <div class="base">
162
+ <slot></slot>
319
163
  </div>
320
- </div>
321
- </template>
322
- `, [tabDefinition, tabPanelDefinition], { styles: tabs_default });
164
+ </template>
165
+ `;
166
+ };
167
+ //#endregion
168
+ //#region src/lib/table/table-sorting-button.ts
169
+ /**
170
+ * @public
171
+ * @component table-sorting-button
172
+ * @event {CustomEvent<undefined>} sort - Emitted when sorting button is clicked.
173
+ */
174
+ var TableSortingButton = class extends DelegatesAria(VividElement) {
175
+ get #nextDirection() {
176
+ if (!this.direction || this.direction === "none") return "asc";
177
+ else if (this.direction === "asc") return "desc";
178
+ else return "none";
179
+ }
180
+ /** Toggles the sort direction and emits the `sort` event. */
181
+ toggleSort() {
182
+ if (!this.$emit("sort", this.#nextDirection)) return;
183
+ this.direction = this.#nextDirection;
184
+ this.dispatchEvent(new CustomEvent("sort", {
185
+ detail: this.direction,
186
+ bubbles: true,
187
+ composed: true
188
+ }));
189
+ }
190
+ };
191
+ __decorate([attr], TableSortingButton.prototype, "direction", void 0);
192
+ //#endregion
193
+ //#region src/lib/table/table-sorting-button.template.ts
194
+ var TableSortingButtonTemplate = (context) => {
195
+ const iconTag = context.tagFor(Icon);
196
+ return html`
197
+ <template
198
+ @click="${(x) => x.toggleSort()}"
199
+ ${applyHostSemantics({ role: "button" })}
200
+ >
201
+ <button>
202
+ ${(x) => {
203
+ switch (x.direction) {
204
+ case "asc": return html`<${iconTag} name="sort-asc-line"></${iconTag}>`;
205
+ case "desc": return html`<${iconTag} name="sort-desc-line"></${iconTag}>`;
206
+ default: return html`<${iconTag} name="sort-line"></${iconTag}>`;
207
+ }
208
+ }}
209
+ </button>
210
+ </template>
211
+ `;
212
+ };
213
+ //#endregion
214
+ //#region src/lib/table/definition.ts
215
+ /** @internal */
216
+ var tableCellDefinition = defineVividComponent("table-cell", TableCell, TableCellTemplate, [], { styles: table_cell_default });
217
+ /** @internal */
218
+ var tableHeaderCellDefinition = defineVividComponent("table-header-cell", TableHeaderCell, TableHeaderCellTemplate, [], { styles: table_header_cell_default });
219
+ /** @internal */
220
+ var tableRowDefinition = defineVividComponent("table-row", TableRow, TableRowTemplate, [], { styles: table_row_default });
221
+ /** @internal */
222
+ var tableBodyDefinition = defineVividComponent("table-body", TableBody, TableBodyTemplate, [], { styles: table_body_default });
223
+ /** @internal */
224
+ var tableHeadDefinition = defineVividComponent("table-head", TableHead, TableHeadTemplate, [], { styles: table_head_default });
225
+ /** @internal */
226
+ var tableSortingButtonDefinition = defineVividComponent("table-sorting-button", TableSortingButton, TableSortingButtonTemplate, [iconDefinition], { styles: table_sorting_button_default });
227
+ /** @internal */
228
+ var tableDefinition = defineVividComponent("table", Table, TableTemplate, [
229
+ tableCellDefinition,
230
+ tableHeaderCellDefinition,
231
+ tableRowDefinition,
232
+ tableHeadDefinition,
233
+ tableBodyDefinition,
234
+ tableSortingButtonDefinition
235
+ ], { styles: table_default });
323
236
  /**
324
- * Registers the tabs elements with the design system.
237
+ * Registers the table element with the design system.
325
238
  *
326
239
  * @param prefix - the prefix to use for the component name
327
240
  */
328
- var registerTabs = createRegisterFunction(tabsDefinition);
241
+ var registerTable = createRegisterFunction(tableDefinition);
329
242
  //#endregion
330
- export { TabsGutters as i, tabsDefinition as n, Tabs as r, registerTabs as t };
243
+ export { tableHeadDefinition as a, tableSortingButtonDefinition as c, TableHeaderCell as d, TableRow as f, Table as h, tableDefinition as i, TableSortingButton as l, TableHead as m, tableBodyDefinition as n, tableHeaderCellDefinition as o, TableBody as p, tableCellDefinition as r, tableRowDefinition as s, registerTable as t, TableCell as u };