@redvars/peacock 3.8.0 → 3.8.2

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 (475) hide show
  1. package/dist/{BaseInput-14YmcfK7.js → BaseInput-CU1zZYKc.js} +3 -3
  2. package/dist/{BaseInput-14YmcfK7.js.map → BaseInput-CU1zZYKc.js.map} +1 -1
  3. package/dist/ButtonConstants-CahP2_NA.js +4 -0
  4. package/dist/ButtonConstants-CahP2_NA.js.map +1 -0
  5. package/dist/{IndividualComponent-DUINtMGK.js → IndividualComponent-Bdwyrvd6.js} +2 -2
  6. package/dist/{IndividualComponent-DUINtMGK.js.map → IndividualComponent-Bdwyrvd6.js.map} +1 -1
  7. package/dist/{NativeHyperlinkMixin-DrYXyfMQ.js → NativeHyperlinkMixin-D9J4aBTy.js} +4 -30
  8. package/dist/NativeHyperlinkMixin-D9J4aBTy.js.map +1 -0
  9. package/dist/accordion-item.js +338 -0
  10. package/dist/accordion-item.js.map +1 -0
  11. package/dist/accordion.js +159 -0
  12. package/dist/accordion.js.map +1 -0
  13. package/dist/alert.js +190 -0
  14. package/dist/alert.js.map +1 -0
  15. package/dist/app-bar.js +324 -0
  16. package/dist/app-bar.js.map +1 -0
  17. package/dist/assets/components.css +1 -1
  18. package/dist/assets/components.css.map +1 -1
  19. package/dist/assets/styles.css +1 -1
  20. package/dist/assets/styles.css.map +1 -1
  21. package/dist/attachable-controller-CAKVrfcG.js +119 -0
  22. package/dist/attachable-controller-CAKVrfcG.js.map +1 -0
  23. package/dist/avatar.js +114 -0
  24. package/dist/avatar.js.map +1 -0
  25. package/dist/badge.js +91 -0
  26. package/dist/badge.js.map +1 -0
  27. package/dist/base-Cl6v8-BZ.js +9 -0
  28. package/dist/base-Cl6v8-BZ.js.map +1 -0
  29. package/dist/bottom-sheet.js +14 -5
  30. package/dist/bottom-sheet.js.map +1 -1
  31. package/dist/breadcrumb-item.js +163 -0
  32. package/dist/breadcrumb-item.js.map +1 -0
  33. package/dist/breadcrumb.js +95 -0
  34. package/dist/breadcrumb.js.map +1 -0
  35. package/dist/button-group.js +87 -137
  36. package/dist/button-group.js.map +1 -1
  37. package/dist/button.js +863 -133
  38. package/dist/button.js.map +1 -1
  39. package/dist/calendar-column-view.js +8 -4
  40. package/dist/calendar-column-view.js.map +1 -1
  41. package/dist/calendar-month-view.js +8 -4
  42. package/dist/calendar-month-view.js.map +1 -1
  43. package/dist/calendar.js +8 -4
  44. package/dist/calendar.js.map +1 -1
  45. package/dist/canvas.js +8 -4
  46. package/dist/canvas.js.map +1 -1
  47. package/dist/card-content.js +1 -1
  48. package/dist/card.js +23 -45
  49. package/dist/card.js.map +1 -1
  50. package/dist/cb-compound-expression.js +6 -2
  51. package/dist/cb-compound-expression.js.map +1 -1
  52. package/dist/cb-divider.js +7 -3
  53. package/dist/cb-divider.js.map +1 -1
  54. package/dist/cb-expression.js +6 -2
  55. package/dist/cb-expression.js.map +1 -1
  56. package/dist/cb-predicate.js +7 -3
  57. package/dist/cb-predicate.js.map +1 -1
  58. package/dist/{chart-bar-cn6rrna-.js → chart-bar-CYoGNXnK.js} +6 -2
  59. package/dist/{chart-bar-cn6rrna-.js.map → chart-bar-CYoGNXnK.js.map} +1 -1
  60. package/dist/chart-bar.js +7 -6
  61. package/dist/chart-bar.js.map +1 -1
  62. package/dist/chart-doughnut.js +8 -3
  63. package/dist/chart-doughnut.js.map +1 -1
  64. package/dist/chart-pie.js +8 -3
  65. package/dist/chart-pie.js.map +1 -1
  66. package/dist/chart-stacked-bar.js +7 -6
  67. package/dist/chart-stacked-bar.js.map +1 -1
  68. package/dist/checkbox.js +526 -0
  69. package/dist/checkbox.js.map +1 -0
  70. package/dist/chip.js +459 -0
  71. package/dist/chip.js.map +1 -0
  72. package/dist/{class-map-YU7g0o3B.js → class-map-DG7CA1et.js} +2 -2
  73. package/dist/{class-map-YU7g0o3B.js.map → class-map-DG7CA1et.js.map} +1 -1
  74. package/dist/clock.js +6 -2
  75. package/dist/clock.js.map +1 -1
  76. package/dist/code-editor.js +45 -30
  77. package/dist/code-editor.js.map +1 -1
  78. package/dist/code-highlighter.js +9 -5
  79. package/dist/code-highlighter.js.map +1 -1
  80. package/dist/condition-builder.js +5 -1
  81. package/dist/condition-builder.js.map +1 -1
  82. package/dist/container.js +141 -0
  83. package/dist/container.js.map +1 -0
  84. package/dist/custom-elements-jsdocs.json +721 -769
  85. package/dist/custom-elements.json +3213 -1979
  86. package/dist/datasource-B2eRh6Or.js +108 -0
  87. package/dist/datasource-B2eRh6Or.js.map +1 -0
  88. package/dist/dispatch-event-utils-CuEqjlPT.js.map +1 -1
  89. package/dist/divider.js +135 -0
  90. package/dist/divider.js.map +1 -0
  91. package/dist/dropdown-button.js +11 -6
  92. package/dist/dropdown-button.js.map +1 -1
  93. package/dist/element-internals-2CMts_0M.js +290 -0
  94. package/dist/element-internals-2CMts_0M.js.map +1 -0
  95. package/dist/elevation.js +94 -0
  96. package/dist/elevation.js.map +1 -0
  97. package/dist/empty-state.js +194 -0
  98. package/dist/empty-state.js.map +1 -0
  99. package/dist/{event-manager-D-QCmUgR.js → event-manager-DTyX2uYD.js} +2 -2
  100. package/dist/{event-manager-D-QCmUgR.js.map → event-manager-DTyX2uYD.js.map} +1 -1
  101. package/dist/fab.js +138 -145
  102. package/dist/fab.js.map +1 -1
  103. package/dist/field.js +461 -0
  104. package/dist/field.js.map +1 -0
  105. package/dist/{popover-DUPmMVWS.js → floating-controller-CnUZnOhK.js} +2 -171
  106. package/dist/floating-controller-CnUZnOhK.js.map +1 -0
  107. package/dist/{flow-designer-node-BWrPuxAR.js → flow-designer-node-DsVwQTac.js} +7 -3
  108. package/dist/{flow-designer-node-BWrPuxAR.js.map → flow-designer-node-DsVwQTac.js.map} +1 -1
  109. package/dist/flow-designer-node.js +3 -3
  110. package/dist/flow-designer.js +19 -12
  111. package/dist/flow-designer.js.map +1 -1
  112. package/dist/focus-ring.js +126 -0
  113. package/dist/focus-ring.js.map +1 -0
  114. package/dist/form-associated-BXADnjOB.js +388 -0
  115. package/dist/form-associated-BXADnjOB.js.map +1 -0
  116. package/dist/html-editor.js +21 -9
  117. package/dist/html-editor.js.map +1 -1
  118. package/dist/hyperlink-DLvb6MXE.js +98 -0
  119. package/dist/hyperlink-DLvb6MXE.js.map +1 -0
  120. package/dist/icon-button.js +1064 -0
  121. package/dist/icon-button.js.map +1 -0
  122. package/dist/icon.js +170 -0
  123. package/dist/icon.js.map +1 -0
  124. package/dist/if-defined-BXZpRQ4P.js +10 -0
  125. package/dist/if-defined-BXZpRQ4P.js.map +1 -0
  126. package/dist/image.js +201 -0
  127. package/dist/image.js.map +1 -0
  128. package/dist/index.js +73 -20
  129. package/dist/index.js.map +1 -1
  130. package/dist/is-dark-mode-DOcaw4Yq.js.map +1 -1
  131. package/dist/is-link-Dk2OV3PM.js +6 -0
  132. package/dist/is-link-Dk2OV3PM.js.map +1 -0
  133. package/dist/item.js +212 -0
  134. package/dist/item.js.map +1 -0
  135. package/dist/link.js +75 -0
  136. package/dist/link.js.map +1 -0
  137. package/dist/list-D6JLh1uh.js +352 -0
  138. package/dist/list-D6JLh1uh.js.map +1 -0
  139. package/dist/list.js +14 -0
  140. package/dist/list.js.map +1 -0
  141. package/dist/{peacock-loader.js → loader.js} +83 -22
  142. package/dist/loader.js.map +1 -0
  143. package/dist/menu-item.js +318 -0
  144. package/dist/menu-item.js.map +1 -0
  145. package/dist/menu.js +534 -0
  146. package/dist/menu.js.map +1 -0
  147. package/dist/modal.js +9 -5
  148. package/dist/modal.js.map +1 -1
  149. package/dist/navigation-rail-item.js +385 -0
  150. package/dist/navigation-rail-item.js.map +1 -0
  151. package/dist/navigation-rail.js +217 -0
  152. package/dist/navigation-rail.js.map +1 -0
  153. package/dist/notification-manager.js +8 -4
  154. package/dist/notification-manager.js.map +1 -1
  155. package/dist/notification.js +8 -4
  156. package/dist/notification.js.map +1 -1
  157. package/dist/number-counter.js +7 -3
  158. package/dist/number-counter.js.map +1 -1
  159. package/dist/{observe-slot-change-D8Xg-kSS.js → observe-slot-change-DPxaZrZF.js} +3 -4
  160. package/dist/observe-slot-change-DPxaZrZF.js.map +1 -0
  161. package/dist/option.js +121 -0
  162. package/dist/option.js.map +1 -0
  163. package/dist/pagination.js +255 -0
  164. package/dist/pagination.js.map +1 -0
  165. package/dist/popover-content.js +7 -3
  166. package/dist/popover-content.js.map +1 -1
  167. package/dist/popover.js +175 -3
  168. package/dist/popover.js.map +1 -1
  169. package/dist/{property-1psGvXOq.js → property-B49QQ8pS.js} +2 -2
  170. package/dist/{property-1psGvXOq.js.map → property-B49QQ8pS.js.map} +1 -1
  171. package/dist/query-CHb9Ft_d.js +10 -0
  172. package/dist/query-CHb9Ft_d.js.map +1 -0
  173. package/dist/query-assigned-elements-BJaGSqM0.js +10 -0
  174. package/dist/query-assigned-elements-BJaGSqM0.js.map +1 -0
  175. package/dist/radio.js +476 -0
  176. package/dist/radio.js.map +1 -0
  177. package/dist/ripple.js +506 -0
  178. package/dist/ripple.js.map +1 -0
  179. package/dist/search.js +12 -7
  180. package/dist/search.js.map +1 -1
  181. package/dist/segmented-button-group.js +137 -0
  182. package/dist/segmented-button-group.js.map +1 -0
  183. package/dist/segmented-button.js +289 -0
  184. package/dist/segmented-button.js.map +1 -0
  185. package/dist/select-Dwtk0RIU.js +3937 -0
  186. package/dist/select-Dwtk0RIU.js.map +1 -0
  187. package/dist/side-sheet.js +8 -4
  188. package/dist/side-sheet.js.map +1 -1
  189. package/dist/skeleton.js +122 -0
  190. package/dist/skeleton.js.map +1 -0
  191. package/dist/slider.js +346 -0
  192. package/dist/slider.js.map +1 -0
  193. package/dist/snackbar.js +335 -0
  194. package/dist/snackbar.js.map +1 -0
  195. package/dist/spinner.js +100 -0
  196. package/dist/spinner.js.map +1 -0
  197. package/dist/split-button.js +10 -5
  198. package/dist/split-button.js.map +1 -1
  199. package/dist/spread-B5cgadZl.js +32 -0
  200. package/dist/spread-B5cgadZl.js.map +1 -0
  201. package/dist/src/__internal/aria/aria.d.ts +98 -0
  202. package/dist/src/__internal/aria/delegate.d.ts +54 -0
  203. package/dist/src/__internal/events/dispatch-hooks.d.ts +80 -0
  204. package/dist/src/__internal/mixins/element-internals.d.ts +40 -0
  205. package/dist/src/__internal/mixins/form-associated.d.ts +174 -0
  206. package/dist/src/__internal/mixins/form-submitter.d.ts +59 -0
  207. package/dist/src/__internal/mixins/hyperlink.d.ts +42 -0
  208. package/dist/src/__internal/mixins/mixin.d.ts +49 -0
  209. package/dist/src/{__utils → __internal/utils}/observe-slot-change.d.ts +1 -0
  210. package/dist/src/accordion/accordion-item.d.ts +3 -1
  211. package/dist/src/accordion/accordion.d.ts +1 -1
  212. package/dist/src/alert/alert.d.ts +43 -0
  213. package/dist/src/alert/index.d.ts +1 -0
  214. package/dist/src/app-bar/app-bar.d.ts +92 -0
  215. package/dist/src/app-bar/index.d.ts +1 -0
  216. package/dist/src/avatar/avatar.d.ts +2 -0
  217. package/dist/src/bottom-sheet/bottom-sheet.d.ts +1 -1
  218. package/dist/src/breadcrumb/breadcrumb-item/breadcrumb-item.d.ts +1 -0
  219. package/dist/src/button/ButtonTypes.d.ts +5 -0
  220. package/dist/src/button/base-button/base-button.d.ts +18 -0
  221. package/dist/src/button/button/button.d.ts +29 -37
  222. package/dist/src/button/button-group/button-group.d.ts +17 -18
  223. package/dist/src/{fab → button/fab}/fab.d.ts +8 -26
  224. package/dist/src/button/icon-button/icon-button.d.ts +20 -27
  225. package/dist/src/button/index.d.ts +1 -0
  226. package/dist/src/calendar/calendar.d.ts +1 -1
  227. package/dist/src/canvas/canvas.d.ts +1 -1
  228. package/dist/src/card/card.d.ts +5 -6
  229. package/dist/src/chart-bar/chart-bar.d.ts +1 -1
  230. package/dist/src/chart-bar/chart-stacked-bar.d.ts +1 -1
  231. package/dist/src/checkbox/checkbox.d.ts +5 -1
  232. package/dist/src/chip/chip/chip.d.ts +9 -8
  233. package/dist/src/container/container.d.ts +5 -1
  234. package/dist/src/divider/divider.d.ts +2 -0
  235. package/dist/src/empty-state/empty-state.d.ts +1 -0
  236. package/dist/src/field/field.d.ts +19 -1
  237. package/dist/src/focus-ring/focus-ring.d.ts +3 -7
  238. package/dist/src/html-editor/html-editor.d.ts +1 -1
  239. package/dist/src/icon/icon.d.ts +9 -4
  240. package/dist/src/image/image.d.ts +4 -0
  241. package/dist/src/index.d.ts +7 -6
  242. package/dist/src/item/item.d.ts +20 -29
  243. package/dist/src/link/link.d.ts +1 -1
  244. package/dist/src/list/list-item.d.ts +7 -5
  245. package/dist/src/list/list.d.ts +3 -2
  246. package/dist/src/menu/menu/menu.d.ts +14 -0
  247. package/dist/src/menu/menu-item/menu-item.d.ts +10 -2
  248. package/dist/src/modal/modal.d.ts +1 -1
  249. package/dist/src/navigation-rail/navigation-rail-item.d.ts +5 -4
  250. package/dist/src/navigation-rail/navigation-rail.d.ts +1 -1
  251. package/dist/src/radio/radio.d.ts +5 -0
  252. package/dist/src/ripple/ripple.d.ts +10 -1
  253. package/dist/src/search/search.d.ts +1 -1
  254. package/dist/src/segmented-button/segmented-button-group.d.ts +2 -2
  255. package/dist/src/segmented-button/segmented-button.d.ts +2 -0
  256. package/dist/src/side-sheet/side-sheet.d.ts +1 -1
  257. package/dist/src/skeleton/skeleton.d.ts +1 -0
  258. package/dist/src/slider/slider.d.ts +1 -0
  259. package/dist/src/snackbar/snackbar.d.ts +12 -2
  260. package/dist/src/svg/svg.d.ts +5 -0
  261. package/dist/src/table/table.d.ts +5 -0
  262. package/dist/src/tabs/tab.d.ts +2 -7
  263. package/dist/src/toolbar/toolbar.d.ts +2 -2
  264. package/dist/{state-DwbEjqVk.js → state-DkTK9EGF.js} +2 -2
  265. package/dist/{state-DwbEjqVk.js.map → state-DkTK9EGF.js.map} +1 -1
  266. package/dist/{style-map-DVmWOuYy.js → style-map-BQD5Et1D.js} +2 -2
  267. package/dist/{style-map-DVmWOuYy.js.map → style-map-BQD5Et1D.js.map} +1 -1
  268. package/dist/sub-menu.js +241 -0
  269. package/dist/sub-menu.js.map +1 -0
  270. package/dist/svg.js +273 -0
  271. package/dist/svg.js.map +1 -0
  272. package/dist/tab-group.js +188 -0
  273. package/dist/tab-group.js.map +1 -0
  274. package/dist/tab-panel.js +61 -0
  275. package/dist/tab-panel.js.map +1 -0
  276. package/dist/tab.js +658 -0
  277. package/dist/tab.js.map +1 -0
  278. package/dist/table.js +620 -0
  279. package/dist/table.js.map +1 -0
  280. package/dist/tabs.js +240 -0
  281. package/dist/tabs.js.map +1 -0
  282. package/dist/throttle-C7ZAPqtu.js +24 -0
  283. package/dist/throttle-C7ZAPqtu.js.map +1 -0
  284. package/dist/toolbar.js +9 -5
  285. package/dist/toolbar.js.map +1 -1
  286. package/dist/tooltip.js +270 -0
  287. package/dist/tooltip.js.map +1 -0
  288. package/dist/tsconfig.tsbuildinfo +1 -1
  289. package/dist/{unsafe-html-BsGUjx94.js → unsafe-html-Ct0N2_UU.js} +2 -2
  290. package/dist/{unsafe-html-BsGUjx94.js.map → unsafe-html-Ct0N2_UU.js.map} +1 -1
  291. package/dist/when-DEJm_QN9.js +9 -0
  292. package/dist/when-DEJm_QN9.js.map +1 -0
  293. package/package.json +4 -2
  294. package/readme.md +3 -3
  295. package/scss/mixin.scss +8 -6
  296. package/src/__internal/aria/aria.ts +293 -0
  297. package/src/__internal/aria/delegate.ts +206 -0
  298. package/src/__internal/events/dispatch-hooks.ts +182 -0
  299. package/src/__internal/mixins/element-internals.ts +73 -0
  300. package/src/__internal/mixins/form-associated.ts +295 -0
  301. package/src/__internal/mixins/form-submitter.ts +133 -0
  302. package/src/__internal/mixins/hyperlink.ts +71 -0
  303. package/src/__internal/mixins/mixin.ts +58 -0
  304. package/src/{__utils → __internal/utils}/observe-slot-change.ts +2 -5
  305. package/src/accordion/accordion-item.ts +6 -2
  306. package/src/accordion/accordion.ts +4 -2
  307. package/src/accordion/demo/index.html +95 -90
  308. package/src/alert/alert.scss +82 -0
  309. package/src/{banner/banner.ts → alert/alert.ts} +22 -22
  310. package/src/alert/index.ts +1 -0
  311. package/src/app-bar/app-bar-colors.scss +17 -0
  312. package/src/app-bar/app-bar.scss +165 -0
  313. package/src/app-bar/app-bar.ts +155 -0
  314. package/src/app-bar/index.ts +1 -0
  315. package/src/avatar/avatar.ts +4 -0
  316. package/src/badge/badge.ts +2 -0
  317. package/src/bottom-sheet/bottom-sheet.ts +8 -2
  318. package/src/breadcrumb/breadcrumb/breadcrumb.ts +2 -0
  319. package/src/breadcrumb/breadcrumb-item/breadcrumb-item.ts +3 -0
  320. package/src/button/ButtonTypes.ts +17 -0
  321. package/src/button/base-button/base-button.ts +85 -0
  322. package/src/button/button/button-base.scss +306 -0
  323. package/src/button/button/button-colors.scss +27 -32
  324. package/src/button/button/button-layers.scss +126 -39
  325. package/src/button/button/button-shapes.scss +73 -0
  326. package/src/button/button/button.scss +12 -284
  327. package/src/button/button/button.ts +174 -194
  328. package/src/button/button-group/button-group.scss +43 -36
  329. package/src/button/button-group/button-group.ts +26 -137
  330. package/src/{fab → button/fab}/fab-colors.scss +0 -10
  331. package/src/button/fab/fab-sizes.scss +37 -0
  332. package/src/button/fab/fab.scss +172 -0
  333. package/src/{fab → button/fab}/fab.ts +69 -105
  334. package/src/button/icon-button/icon-button-sizes.scss +18 -3
  335. package/src/button/icon-button/icon-button.scss +5 -0
  336. package/src/button/icon-button/icon-button.ts +111 -141
  337. package/src/button/index.ts +7 -0
  338. package/src/calendar/calendar.ts +2 -2
  339. package/src/canvas/canvas.ts +2 -2
  340. package/src/card/card.scss +3 -3
  341. package/src/card/card.ts +20 -40
  342. package/src/chart-bar/chart-bar.ts +2 -2
  343. package/src/chart-bar/chart-stacked-bar.ts +2 -2
  344. package/src/checkbox/checkbox.ts +12 -4
  345. package/src/chip/chip/chip.scss +1 -1
  346. package/src/chip/chip/chip.ts +35 -55
  347. package/src/chip/demo/index.html +30 -26
  348. package/src/code-editor/code-editor.ts +68 -58
  349. package/src/code-editor/demo/index.html +32 -27
  350. package/src/code-highlighter/code-highlighter.ts +1 -1
  351. package/src/code-highlighter/demo/index.html +24 -21
  352. package/src/container/container.ts +8 -2
  353. package/src/date-picker/date-picker.ts +2 -3
  354. package/src/divider/divider.ts +5 -1
  355. package/src/dropdown-button/demo/index.html +106 -101
  356. package/src/dropdown-button/dropdown-button.ts +1 -1
  357. package/src/elevation/elevation.ts +2 -0
  358. package/src/empty-state/empty-state.ts +3 -0
  359. package/src/field/field.ts +52 -33
  360. package/src/focus-ring/demo/index.html +29 -36
  361. package/src/focus-ring/focus-ring.ts +5 -7
  362. package/src/html-editor/html-editor.ts +28 -16
  363. package/src/icon/datasource.ts +1 -1
  364. package/src/icon/icon.ts +27 -15
  365. package/src/image/image.ts +18 -6
  366. package/src/index.ts +24 -6
  367. package/src/input/input.ts +2 -2
  368. package/src/item/item.scss +126 -162
  369. package/src/item/item.ts +70 -323
  370. package/src/link/link.ts +3 -1
  371. package/src/list/list-item.scss +43 -31
  372. package/src/list/list-item.ts +79 -75
  373. package/src/list/list.scss +1 -13
  374. package/src/list/list.ts +6 -3
  375. package/src/{peacock-loader.ts → loader.ts} +91 -79
  376. package/src/menu/menu/menu.scss +14 -11
  377. package/src/menu/menu/menu.ts +20 -8
  378. package/src/menu/menu-item/menu-item.scss +35 -3
  379. package/src/menu/menu-item/menu-item.ts +40 -34
  380. package/src/menu/sub-menu/sub-menu.ts +3 -0
  381. package/src/modal/modal.ts +2 -2
  382. package/src/navigation-rail/navigation-rail-item.ts +21 -36
  383. package/src/navigation-rail/navigation-rail.scss +1 -0
  384. package/src/navigation-rail/navigation-rail.ts +4 -2
  385. package/src/number-field/number-field.ts +2 -2
  386. package/src/pagination/pagination.ts +2 -0
  387. package/src/popover/popover.ts +3 -3
  388. package/src/radio/radio.ts +13 -5
  389. package/src/ripple/ripple.ts +14 -1
  390. package/src/search/search.ts +3 -3
  391. package/src/segmented-button/segmented-button-group.ts +8 -4
  392. package/src/segmented-button/segmented-button.ts +4 -0
  393. package/src/select/option.ts +2 -0
  394. package/src/side-sheet/side-sheet.ts +2 -2
  395. package/src/sidebar-menu/sidebar-menu-item.ts +3 -2
  396. package/src/skeleton/skeleton.ts +3 -0
  397. package/src/slider/slider.ts +4 -1
  398. package/src/snackbar/snackbar.ts +40 -25
  399. package/src/spinner/spinner.ts +2 -0
  400. package/src/svg/svg.ts +27 -9
  401. package/src/switch/switch.ts +1 -1
  402. package/src/table/table.ts +16 -3
  403. package/src/tabs/demo/index.html +79 -79
  404. package/src/tabs/tab-group.ts +2 -0
  405. package/src/tabs/tab-panel.ts +2 -0
  406. package/src/tabs/tab.scss +4 -4
  407. package/src/tabs/tab.ts +16 -39
  408. package/src/tabs/tabs.ts +2 -0
  409. package/src/textarea/textarea.ts +2 -2
  410. package/src/time-picker/time-picker.ts +2 -2
  411. package/src/toolbar/toolbar.ts +3 -3
  412. package/src/tooltip/tooltip.ts +14 -8
  413. package/src/url-field/url-field.ts +2 -3
  414. package/dist/ButtonConstants-D06bY4uy.js +0 -114
  415. package/dist/ButtonConstants-D06bY4uy.js.map +0 -1
  416. package/dist/NativeHyperlinkMixin-DrYXyfMQ.js.map +0 -1
  417. package/dist/banner.js +0 -186
  418. package/dist/banner.js.map +0 -1
  419. package/dist/button-colors-DSuBHd-i.js +0 -585
  420. package/dist/button-colors-DSuBHd-i.js.map +0 -1
  421. package/dist/icon-CueRR7wx.js +0 -260
  422. package/dist/icon-CueRR7wx.js.map +0 -1
  423. package/dist/icon-button-CYqrnMnF.js +0 -318
  424. package/dist/icon-button-CYqrnMnF.js.map +0 -1
  425. package/dist/navigation-rail-CM_svs5_.js +0 -14184
  426. package/dist/navigation-rail-CM_svs5_.js.map +0 -1
  427. package/dist/observe-slot-change-D8Xg-kSS.js.map +0 -1
  428. package/dist/peacock-loader.js.map +0 -1
  429. package/dist/popover-DUPmMVWS.js.map +0 -1
  430. package/dist/query-QBcUV-L_.js +0 -15
  431. package/dist/query-QBcUV-L_.js.map +0 -1
  432. package/dist/src/banner/banner.d.ts +0 -43
  433. package/dist/src/banner/index.d.ts +0 -1
  434. package/dist/src/button/GroupButtonInterface.d.ts +0 -4
  435. package/src/banner/banner.scss +0 -82
  436. package/src/banner/index.ts +0 -1
  437. package/src/button/GroupButtonInterface.ts +0 -4
  438. package/src/button/button/only-button.scss +0 -13
  439. package/src/fab/fab-sizes.scss +0 -37
  440. package/src/fab/fab.scss +0 -143
  441. /package/dist/src/{__controllers → __internal/controllers}/attachable-controller.d.ts +0 -0
  442. /package/dist/src/{__controllers → __internal/controllers}/floating-controller.d.ts +0 -0
  443. /package/dist/src/{__directive → __internal/directive}/spread.d.ts +0 -0
  444. /package/dist/src/{__mixins → __internal/mixins}/MixinConstructor.d.ts +0 -0
  445. /package/dist/src/{__mixins → __internal/mixins}/NativeButtonMixin.d.ts +0 -0
  446. /package/dist/src/{__mixins → __internal/mixins}/NativeHyperlinkMixin.d.ts +0 -0
  447. /package/dist/src/{__utils → __internal/utils}/cache-fetch.d.ts +0 -0
  448. /package/dist/src/{__utils → __internal/utils}/copy-to-clipboard.d.ts +0 -0
  449. /package/dist/src/{__utils → __internal/utils}/dispatch-event-utils.d.ts +0 -0
  450. /package/dist/src/{__utils → __internal/utils}/is-dark-mode.d.ts +0 -0
  451. /package/dist/src/{__utils → __internal/utils}/is-in-viewport.d.ts +0 -0
  452. /package/dist/src/{__utils → __internal/utils}/is-link.d.ts +0 -0
  453. /package/dist/src/{__utils → __internal/utils}/observe-theme-change.d.ts +0 -0
  454. /package/dist/src/{__utils → __internal/utils}/sanitize-svg.d.ts +0 -0
  455. /package/dist/src/{__utils → __internal/utils}/throttle.d.ts +0 -0
  456. /package/dist/src/{fab → button/fab}/index.d.ts +0 -0
  457. /package/dist/src/{peacock-loader.d.ts → loader.d.ts} +0 -0
  458. /package/dist/test/{banner.test.d.ts → alert.test.d.ts} +0 -0
  459. /package/src/{__controllers → __internal/controllers}/attachable-controller.ts +0 -0
  460. /package/src/{__controllers → __internal/controllers}/floating-controller.ts +0 -0
  461. /package/src/{__directive → __internal/directive}/spread.ts +0 -0
  462. /package/src/{__mixins → __internal/mixins}/MixinConstructor.ts +0 -0
  463. /package/src/{__mixins → __internal/mixins}/NativeButtonMixin.ts +0 -0
  464. /package/src/{__mixins → __internal/mixins}/NativeHyperlinkMixin.ts +0 -0
  465. /package/src/{__mixins → __internal/mixins}/README.md +0 -0
  466. /package/src/{__utils → __internal/utils}/cache-fetch.ts +0 -0
  467. /package/src/{__utils → __internal/utils}/copy-to-clipboard.ts +0 -0
  468. /package/src/{__utils → __internal/utils}/dispatch-event-utils.ts +0 -0
  469. /package/src/{__utils → __internal/utils}/is-dark-mode.ts +0 -0
  470. /package/src/{__utils → __internal/utils}/is-in-viewport.ts +0 -0
  471. /package/src/{__utils → __internal/utils}/is-link.ts +0 -0
  472. /package/src/{__utils → __internal/utils}/observe-theme-change.ts +0 -0
  473. /package/src/{__utils → __internal/utils}/sanitize-svg.ts +0 -0
  474. /package/src/{__utils → __internal/utils}/throttle.ts +0 -0
  475. /package/src/{fab → button/fab}/index.ts +0 -0
package/dist/table.js ADDED
@@ -0,0 +1,620 @@
1
+ import { i, _ as __decorate, I as IndividualComponent, a as i$1, b, A } from './IndividualComponent-Bdwyrvd6.js';
2
+ import { n } from './property-B49QQ8pS.js';
3
+ import { r } from './state-DkTK9EGF.js';
4
+ import { e } from './class-map-DG7CA1et.js';
5
+ import { o } from './unsafe-html-Ct0N2_UU.js';
6
+ import { t as throttle } from './throttle-C7ZAPqtu.js';
7
+ import './directive-ZPhl09Yt.js';
8
+
9
+ var css_248z = i`* {
10
+ box-sizing: border-box;
11
+ }
12
+
13
+ .screen-reader-only {
14
+ display: none !important;
15
+ }
16
+
17
+ [hidden] {
18
+ display: none !important;
19
+ }
20
+
21
+ :host {
22
+ display: block;
23
+ height: 100%;
24
+ min-height: 20em;
25
+ --table-border-color: var(--color-outline-variant);
26
+ --table-border: 1px solid var(--table-border-color);
27
+ --table-col-content-padding: var(--spacing-150, 0.75rem) var(--spacing-200, 1rem);
28
+ }
29
+
30
+ .table {
31
+ height: 100%;
32
+ display: flex;
33
+ flex-direction: column;
34
+ background: var(--color-surface, #fff);
35
+ font-family: var(--typography-body-medium-font-family);
36
+ font-size: var(--typography-body-medium-font-size);
37
+ font-weight: var(--typography-body-medium-font-weight);
38
+ line-height: var(--typography-body-medium-line-height);
39
+ letter-spacing: var(--typography-body-medium-letter-spacing);
40
+ }
41
+ .table .table-scroll-container {
42
+ position: relative;
43
+ overflow: auto;
44
+ height: 100%;
45
+ }
46
+ .table .empty-table {
47
+ height: 80%;
48
+ display: flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ }
52
+ .table .empty-table .empty-state {
53
+ width: 10rem;
54
+ }
55
+ .table wc-pagination {
56
+ border-top: 1px solid var(--table-border-color);
57
+ }
58
+ .table.horizontal-scrolled .fixed-columns::after {
59
+ box-shadow: 10px 0 20px -20px var(--color-outline) inset;
60
+ content: " ";
61
+ height: 100%;
62
+ position: absolute;
63
+ top: 0;
64
+ right: -20px;
65
+ width: 20px;
66
+ }
67
+
68
+ .row {
69
+ display: flex;
70
+ box-sizing: border-box;
71
+ width: max-content;
72
+ min-width: 100%;
73
+ }
74
+ .row .columns-container {
75
+ display: flex;
76
+ }
77
+ .row .col {
78
+ margin: 0;
79
+ color: var(--color-on-surface);
80
+ flex-shrink: 0;
81
+ }
82
+ .row .col .col-content {
83
+ display: flex;
84
+ align-items: center;
85
+ height: 100%;
86
+ }
87
+ .row .col .col-content .col-text {
88
+ padding: var(--table-col-content-padding);
89
+ flex: 1;
90
+ overflow: hidden;
91
+ white-space: nowrap;
92
+ text-overflow: ellipsis;
93
+ }
94
+ .row .col .col-content .col-template {
95
+ width: 100%;
96
+ }
97
+ .row .col .col-content .col-action {
98
+ --button-border-radius: 0;
99
+ }
100
+ .row .col .col-content .col-action.has-focus {
101
+ z-index: 12;
102
+ }
103
+ .row .col .col-content .checkbox {
104
+ padding: 0 var(--spacing-100, 0.5rem);
105
+ }
106
+ .row .col.center .col-content {
107
+ justify-content: center;
108
+ }
109
+ .row .col:last-child {
110
+ flex: 1;
111
+ }
112
+ .row .fixed-columns {
113
+ position: sticky;
114
+ left: 0;
115
+ z-index: 1;
116
+ }
117
+ .row .scrollable-columns {
118
+ flex: 0 0 auto;
119
+ }
120
+
121
+ .header {
122
+ z-index: 2;
123
+ position: sticky;
124
+ top: 0;
125
+ font-family: var(--typography-label-medium-font-family);
126
+ font-size: var(--typography-label-medium-font-size);
127
+ font-weight: var(--typography-label-medium-font-weight);
128
+ line-height: var(--typography-label-medium-line-height);
129
+ letter-spacing: var(--typography-label-medium-letter-spacing);
130
+ }
131
+ .header .col {
132
+ background: var(--color-surface-variant, #f4f4f4);
133
+ }
134
+ .header .col.sort {
135
+ background: var(--color-secondary-container, #e8eaf6);
136
+ }
137
+
138
+ .body .row .col {
139
+ cursor: pointer;
140
+ background: var(--color-surface, #fff);
141
+ border-bottom: 1px solid var(--color-surface-variant, #f4f4f4);
142
+ }
143
+ .body .row .col.col-checkbox .col-content {
144
+ border: 0;
145
+ }
146
+ .body .row .col .col-content {
147
+ border: 2px solid transparent;
148
+ border-bottom: 1px solid transparent;
149
+ }
150
+ .body .row .col .col-content .col-text {
151
+ text-wrap: wrap;
152
+ }
153
+ .body .row .col:focus {
154
+ outline: none;
155
+ border-bottom-color: var(--color-primary);
156
+ z-index: 1;
157
+ }
158
+ .body .row .col:focus .col-content {
159
+ border-color: var(--color-primary);
160
+ }
161
+ .body .row:hover .col {
162
+ background-color: var(--color-surface-container-low, #f8f8f8);
163
+ }`;
164
+
165
+ const DEFAULT_CELL_WIDTH = 16; // in rem
166
+ /**
167
+ * @label Table
168
+ * @tag wc-table
169
+ * @rawTag table
170
+ * @summary A configurable component for displaying tabular data.
171
+ * @overview
172
+ * <p>The table component displays rows of data with support for sorting, pagination, row selection, and fixed columns.</p>
173
+ *
174
+ * @fires {CustomEvent} cell-click - Dispatched when a table cell is clicked.
175
+ * @fires {CustomEvent} selection-change - Dispatched when the row selection changes.
176
+ * @fires {CustomEvent} sort - Dispatched when the table is sorted.
177
+ * @fires {CustomEvent} page - Dispatched when the page or page size changes.
178
+ *
179
+ * @example
180
+ * ```html
181
+ * <wc-table columns="[{'name': 'name','label': 'Name','width': 16},{'name': 'age','label': 'Age','width': 7}]" data="[{'name': 'John','age': 30},{'name': 'Jane','age': 25}]"></wc-table>
182
+ * ```
183
+ * @tags display, data
184
+ */
185
+ let Table = class Table extends i$1 {
186
+ constructor() {
187
+ super(...arguments);
188
+ /**
189
+ * Grid columns configuration.
190
+ * Each column can have: name, label, width (px), fixed (boolean), template (function).
191
+ */
192
+ this.columns = [];
193
+ /**
194
+ * Grid data to display on table.
195
+ */
196
+ this.data = [];
197
+ /**
198
+ * Array of selected row key values.
199
+ */
200
+ this.selectedRowKeys = [];
201
+ /**
202
+ * The field name used as the unique key for each row. Defaults to `"id"`.
203
+ */
204
+ this.keyField = 'id';
205
+ /**
206
+ * If true, sorting and pagination are managed externally (controlled mode).
207
+ */
208
+ this.managed = false;
209
+ /**
210
+ * If true, columns are sortable. Defaults to `true`.
211
+ */
212
+ this.sortable = true;
213
+ /**
214
+ * The field name currently used for sorting.
215
+ */
216
+ this.sortBy = '';
217
+ /**
218
+ * The current sort order. Possible values are `"asc"` and `"desc"`. Defaults to `"asc"`.
219
+ */
220
+ this.sortOrder = 'asc';
221
+ /**
222
+ * If true, pagination is enabled. Defaults to `true`.
223
+ */
224
+ this.paginate = false;
225
+ /**
226
+ * The current page number (1-based). Defaults to `1`.
227
+ */
228
+ this.page = 1;
229
+ /**
230
+ * The number of rows per page. Defaults to `10`.
231
+ */
232
+ this.pageSize = 10;
233
+ /**
234
+ * Headline text shown when the table has no data.
235
+ */
236
+ this.emptyStateHeadline = 'No items';
237
+ /**
238
+ * Description text shown when the table has no data.
239
+ */
240
+ this.emptyStateDescription = 'There are no items to display';
241
+ /** Tracks the currently hovered row and column for hover-highlight CSS. */
242
+ this.hoveredCell = {};
243
+ /** True when all rows on the current page are selected. */
244
+ this.isSelectAll = false;
245
+ /** True when some (but not all) rows on the current page are selected. */
246
+ this.isSelectAllIntermediate = false;
247
+ /** True when the scroll container has been scrolled horizontally. */
248
+ this.isHorizontallyScrolled = false;
249
+ // ── Private fields ────────────────────────────────────────────────────────
250
+ /** Throttled version of the cell-mouseover handler to avoid excessive state updates. */
251
+ this.onCellMouseOverThrottled = throttle((row, column) => {
252
+ this.hoveredCell = { row, column };
253
+ }, 30);
254
+ this.onSelectAllClick = () => {
255
+ this.isSelectAll = !this.isSelectAll;
256
+ let selectedRowKeys = [];
257
+ if (this.isSelectAll) {
258
+ selectedRowKeys = this.data
259
+ .slice((this.page - 1) * this.pageSize, this.page * this.pageSize)
260
+ .map(row => row[this.keyField]);
261
+ }
262
+ this.onSelectChange(selectedRowKeys);
263
+ };
264
+ this.onRowSelectClick = (row) => {
265
+ let selectedRowKeys = [...this.selectedRowKeys];
266
+ if (selectedRowKeys.includes(row[this.keyField])) {
267
+ this.isSelectAll = false;
268
+ selectedRowKeys = selectedRowKeys.filter(rowId => rowId !== row[this.keyField]);
269
+ }
270
+ else {
271
+ selectedRowKeys.push(row[this.keyField]);
272
+ }
273
+ this.onSelectChange(selectedRowKeys);
274
+ };
275
+ this.onScrollContainer = (event) => {
276
+ const target = event.target;
277
+ this.isHorizontallyScrolled = !!target.scrollLeft;
278
+ };
279
+ }
280
+ onSelectChange(selectedRowKeys) {
281
+ this.selectedRowKeys = selectedRowKeys;
282
+ this.dispatchEvent(new CustomEvent('selection-change', {
283
+ detail: {
284
+ value: this.selectedRowKeys,
285
+ isSelectAll: this.isSelectAll,
286
+ },
287
+ bubbles: true,
288
+ composed: true,
289
+ }));
290
+ }
291
+ onCellClick(row, col, evt) {
292
+ this.dispatchEvent(new CustomEvent('cell-click', {
293
+ detail: {
294
+ record: row,
295
+ column: col,
296
+ altKey: evt.altKey,
297
+ ctrlKey: evt.ctrlKey,
298
+ metaKey: evt.metaKey,
299
+ shiftKey: evt.shiftKey,
300
+ },
301
+ bubbles: true,
302
+ composed: true,
303
+ }));
304
+ }
305
+ get totalColumnsWidth() {
306
+ let total = 0;
307
+ if (this.selectionType === 'checkbox') {
308
+ total += 3; // approximate checkbox column width in rem
309
+ }
310
+ this.columns.forEach(col => {
311
+ total += col.width ?? DEFAULT_CELL_WIDTH;
312
+ });
313
+ return total;
314
+ }
315
+ getTotalItems() {
316
+ if (this.paginate && !this.managed && this.data)
317
+ return this.data.length;
318
+ return this.totalItems ?? 0;
319
+ }
320
+ getSortIcon(col) {
321
+ if (this.sortBy === col.name) {
322
+ return this.sortOrder === 'asc'
323
+ ? 'keyboard_arrow_up'
324
+ : 'keyboard_arrow_down';
325
+ }
326
+ return '';
327
+ }
328
+ onSortClick(col) {
329
+ if (this.sortBy === col.name) {
330
+ if (this.sortOrder === 'asc') {
331
+ this.sortOrder = 'desc';
332
+ }
333
+ else {
334
+ this.sortBy = '';
335
+ }
336
+ }
337
+ else {
338
+ this.sortBy = col.name;
339
+ this.sortOrder = 'asc';
340
+ }
341
+ this.dispatchEvent(new CustomEvent('sort', {
342
+ detail: { sortBy: this.sortBy, sortOrder: this.sortOrder },
343
+ bubbles: true,
344
+ composed: true,
345
+ }));
346
+ }
347
+ renderHeader() {
348
+ const fixedCols = [];
349
+ const scrollCols = [];
350
+ if (this.selectionType === 'checkbox') {
351
+ fixedCols.push(b `
352
+ <div class="col col-checkbox center">
353
+ <div class="col-content">
354
+ <wc-checkbox
355
+ class="checkbox"
356
+ .value=${this.isSelectAll}
357
+ .indeterminate=${this.isSelectAllIntermediate}
358
+ @change=${this.onSelectAllClick}
359
+ ></wc-checkbox>
360
+ </div>
361
+ </div>
362
+ `);
363
+ }
364
+ this.columns.forEach(col => {
365
+ const colWidth = col.width
366
+ ? parseInt(String(col.width), 10)
367
+ : DEFAULT_CELL_WIDTH;
368
+ const colEl = b `
369
+ <div
370
+ class=${e({ col: true, sort: this.sortBy === col.name })}
371
+ style="width: ${colWidth}rem"
372
+ >
373
+ <div class="col-content">
374
+ <div class="col-text">${col.label}</div>
375
+ <div class="col-actions">
376
+ ${this.sortable
377
+ ? b `
378
+ <wc-button
379
+ class="col-action"
380
+ color="secondary"
381
+ variant="text"
382
+ @click=${() => this.onSortClick(col)}
383
+ >
384
+ <wc-icon
385
+ slot="icon"
386
+ name=${this.getSortIcon(col)}
387
+ ></wc-icon>
388
+ </wc-button>
389
+ `
390
+ : A}
391
+ </div>
392
+ </div>
393
+ </div>
394
+ `;
395
+ if (col.fixed) {
396
+ fixedCols.push(colEl);
397
+ }
398
+ else {
399
+ scrollCols.push(colEl);
400
+ }
401
+ });
402
+ return b `
403
+ <div class="header">
404
+ <div class="row" style="min-width: ${this.totalColumnsWidth}rem">
405
+ <div class="fixed-columns columns-container">${fixedCols}</div>
406
+ <div class="scrollable-columns columns-container">${scrollCols}</div>
407
+ </div>
408
+ </div>
409
+ `;
410
+ }
411
+ renderBody() {
412
+ let data = [...this.data];
413
+ if (!this.managed) {
414
+ if (this.sortable && this.sortBy) {
415
+ data = data.sort((a, b) => {
416
+ if (a[this.sortBy] < b[this.sortBy])
417
+ return this.sortOrder === 'asc' ? -1 : 1;
418
+ if (a[this.sortBy] > b[this.sortBy])
419
+ return this.sortOrder === 'asc' ? 1 : -1;
420
+ return 0;
421
+ });
422
+ }
423
+ if (this.paginate) {
424
+ data = data.slice((this.page - 1) * this.pageSize, this.page * this.pageSize);
425
+ }
426
+ }
427
+ const rows = data.map(row => {
428
+ const fixedCols = [];
429
+ const scrollCols = [];
430
+ if (this.selectionType === 'checkbox') {
431
+ fixedCols.push(b `
432
+ <div class="col center col-checkbox">
433
+ <div class="col-content">
434
+ <wc-checkbox
435
+ class="checkbox"
436
+ .value=${this.selectedRowKeys.includes(row[this.keyField])}
437
+ @change=${() => this.onRowSelectClick(row)}
438
+ ></wc-checkbox>
439
+ </div>
440
+ </div>
441
+ `);
442
+ }
443
+ this.columns.forEach(column => {
444
+ const colWidth = column.width
445
+ ? parseInt(String(column.width), 10)
446
+ : DEFAULT_CELL_WIDTH;
447
+ const colEl = b `
448
+ <div
449
+ tabindex="0"
450
+ class=${e({
451
+ col: true,
452
+ 'col-hover': this.hoveredCell.row === row &&
453
+ this.hoveredCell.column === column,
454
+ })}
455
+ style="width: ${colWidth}rem"
456
+ @mouseover=${() => this.onCellMouseOverThrottled(row, column)}
457
+ @focus=${() => this.onCellMouseOverThrottled(row, column)}
458
+ @keydown=${(event) => {
459
+ if ((event.ctrlKey || event.metaKey) && event.key === 'c') {
460
+ const elem = event.target;
461
+ window.navigator.clipboard
462
+ .writeText(elem.innerText)
463
+ .catch(() => { });
464
+ }
465
+ }}
466
+ @click=${(evt) => {
467
+ const selection = window.getSelection();
468
+ if (selection?.type !== 'Range') {
469
+ this.onCellClick(row, column, evt);
470
+ }
471
+ }}
472
+ >
473
+ <div class="col-content">
474
+ ${column.template
475
+ ? b `<div class="col-template">
476
+ ${o(column.template(row, column))}
477
+ </div>`
478
+ : b `<div class="col-text" title=${row?.[column.name] ?? ''}>
479
+ ${row?.[column.name]}
480
+ </div>`}
481
+ </div>
482
+ </div>
483
+ `;
484
+ if (column.fixed) {
485
+ fixedCols.push(colEl);
486
+ }
487
+ else {
488
+ scrollCols.push(colEl);
489
+ }
490
+ });
491
+ return b `
492
+ <div
493
+ class=${e({
494
+ row: true,
495
+ 'row-hover': this.hoveredCell.row === row,
496
+ })}
497
+ style="min-width: ${this.totalColumnsWidth}rem"
498
+ >
499
+ <div class="fixed-columns columns-container">${fixedCols}</div>
500
+ <div class="scrollable-columns columns-container">${scrollCols}</div>
501
+ </div>
502
+ `;
503
+ });
504
+ return b `<div class="body">${rows}</div>`;
505
+ }
506
+ renderEmptyState() {
507
+ return b `
508
+ <div class="empty-table">
509
+ <wc-empty-state
510
+ class="empty-state content-center"
511
+ headline=${this.emptyStateHeadline}
512
+ description=${this.emptyStateDescription}
513
+ ></wc-empty-state>
514
+ </div>
515
+ `;
516
+ }
517
+ renderPagination() {
518
+ if (!this.paginate)
519
+ return A;
520
+ return b `
521
+ <wc-pagination
522
+ .page=${this.page}
523
+ .pageSize=${this.pageSize}
524
+ .totalItems=${this.getTotalItems()}
525
+ @page=${(e) => {
526
+ this.page = e.detail.page;
527
+ this.pageSize = e.detail.pageSize;
528
+ this.dispatchEvent(new CustomEvent('page', {
529
+ detail: { page: this.page, pageSize: this.pageSize },
530
+ bubbles: true,
531
+ composed: true,
532
+ }));
533
+ }}
534
+ ></wc-pagination>
535
+ `;
536
+ }
537
+ render() {
538
+ const tableClasses = {
539
+ table: true,
540
+ sortable: this.sortable,
541
+ paginate: this.paginate,
542
+ 'horizontal-scrolled': this.isHorizontallyScrolled,
543
+ };
544
+ return b `
545
+ <div class=${e(tableClasses)}>
546
+ <div class="table-scroll-container" @scroll=${this.onScrollContainer}>
547
+ ${this.renderHeader()}
548
+ ${this.data && this.data.length
549
+ ? this.renderBody()
550
+ : this.renderEmptyState()}
551
+ </div>
552
+ <div class="table-footer">${this.renderPagination()}</div>
553
+ </div>
554
+ `;
555
+ }
556
+ };
557
+ Table.styles = [css_248z];
558
+ __decorate([
559
+ n({ type: Array })
560
+ ], Table.prototype, "columns", void 0);
561
+ __decorate([
562
+ n({ type: Array })
563
+ ], Table.prototype, "data", void 0);
564
+ __decorate([
565
+ n({ type: String, attribute: 'selection-type' })
566
+ ], Table.prototype, "selectionType", void 0);
567
+ __decorate([
568
+ n({ type: Array, attribute: 'selected-row-keys' })
569
+ ], Table.prototype, "selectedRowKeys", void 0);
570
+ __decorate([
571
+ n({ type: String, attribute: 'key-field' })
572
+ ], Table.prototype, "keyField", void 0);
573
+ __decorate([
574
+ n({ type: Boolean })
575
+ ], Table.prototype, "managed", void 0);
576
+ __decorate([
577
+ n({ type: Boolean })
578
+ ], Table.prototype, "sortable", void 0);
579
+ __decorate([
580
+ n({ type: String, attribute: 'sort-by' })
581
+ ], Table.prototype, "sortBy", void 0);
582
+ __decorate([
583
+ n({ type: String, attribute: 'sort-order' })
584
+ ], Table.prototype, "sortOrder", void 0);
585
+ __decorate([
586
+ n({ type: Boolean })
587
+ ], Table.prototype, "paginate", void 0);
588
+ __decorate([
589
+ n({ type: Number })
590
+ ], Table.prototype, "page", void 0);
591
+ __decorate([
592
+ n({ type: Number, attribute: 'page-size' })
593
+ ], Table.prototype, "pageSize", void 0);
594
+ __decorate([
595
+ n({ type: Number, attribute: 'total-items' })
596
+ ], Table.prototype, "totalItems", void 0);
597
+ __decorate([
598
+ n({ type: String, attribute: 'empty-state-headline' })
599
+ ], Table.prototype, "emptyStateHeadline", void 0);
600
+ __decorate([
601
+ n({ type: String, attribute: 'empty-state-description' })
602
+ ], Table.prototype, "emptyStateDescription", void 0);
603
+ __decorate([
604
+ r()
605
+ ], Table.prototype, "hoveredCell", void 0);
606
+ __decorate([
607
+ r()
608
+ ], Table.prototype, "isSelectAll", void 0);
609
+ __decorate([
610
+ r()
611
+ ], Table.prototype, "isSelectAllIntermediate", void 0);
612
+ __decorate([
613
+ r()
614
+ ], Table.prototype, "isHorizontallyScrolled", void 0);
615
+ Table = __decorate([
616
+ IndividualComponent
617
+ ], Table);
618
+
619
+ export { Table };
620
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sources":["../../src/table/table.ts"],"sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\n\nimport { throttle } from '@/__internal/utils/throttle.js';\n\nimport styles from './table.scss';\nimport IndividualComponent from '@/IndividualComponent.js';\n\nconst DEFAULT_CELL_WIDTH = 16; // in rem\n\nexport interface TableColumn {\n name: string;\n label: string;\n width?: number;\n fixed?: boolean;\n template?: (row: any, column: TableColumn) => string;\n}\n\n/**\n * @label Table\n * @tag wc-table\n * @rawTag table\n * @summary A configurable component for displaying tabular data.\n * @overview\n * <p>The table component displays rows of data with support for sorting, pagination, row selection, and fixed columns.</p>\n *\n * @fires {CustomEvent} cell-click - Dispatched when a table cell is clicked.\n * @fires {CustomEvent} selection-change - Dispatched when the row selection changes.\n * @fires {CustomEvent} sort - Dispatched when the table is sorted.\n * @fires {CustomEvent} page - Dispatched when the page or page size changes.\n *\n * @example\n * ```html\n * <wc-table columns=\"[{'name': 'name','label': 'Name','width': 16},{'name': 'age','label': 'Age','width': 7}]\" data=\"[{'name': 'John','age': 30},{'name': 'Jane','age': 25}]\"></wc-table>\n * ```\n * @tags display, data\n */\n@IndividualComponent\nexport class Table extends LitElement {\n static styles = [styles];\n\n /**\n * Grid columns configuration.\n * Each column can have: name, label, width (px), fixed (boolean), template (function).\n */\n @property({ type: Array })\n columns: TableColumn[] = [];\n\n /**\n * Grid data to display on table.\n */\n @property({ type: Array })\n data: any[] = [];\n\n /**\n * Row selection type. Set to `\"checkbox\"` to enable checkbox selection.\n */\n @property({ type: String, attribute: 'selection-type' })\n selectionType: 'checkbox' | undefined;\n\n /**\n * Array of selected row key values.\n */\n @property({ type: Array, attribute: 'selected-row-keys' })\n selectedRowKeys: string[] = [];\n\n /**\n * The field name used as the unique key for each row. Defaults to `\"id\"`.\n */\n @property({ type: String, attribute: 'key-field' })\n keyField: string = 'id';\n\n /**\n * If true, sorting and pagination are managed externally (controlled mode).\n */\n @property({ type: Boolean })\n managed: boolean = false;\n\n /**\n * If true, columns are sortable. Defaults to `true`.\n */\n @property({ type: Boolean })\n sortable: boolean = true;\n\n /**\n * The field name currently used for sorting.\n */\n @property({ type: String, attribute: 'sort-by' })\n sortBy: string = '';\n\n /**\n * The current sort order. Possible values are `\"asc\"` and `\"desc\"`. Defaults to `\"asc\"`.\n */\n @property({ type: String, attribute: 'sort-order' })\n sortOrder: 'asc' | 'desc' = 'asc';\n\n /**\n * If true, pagination is enabled. Defaults to `true`.\n */\n @property({ type: Boolean })\n paginate: boolean = false;\n\n /**\n * The current page number (1-based). Defaults to `1`.\n */\n @property({ type: Number })\n page: number = 1;\n\n /**\n * The number of rows per page. Defaults to `10`.\n */\n @property({ type: Number, attribute: 'page-size' })\n pageSize: number = 10;\n\n /**\n * Total number of items (used in managed/controlled mode).\n */\n @property({ type: Number, attribute: 'total-items' })\n totalItems: number | undefined;\n\n /**\n * Headline text shown when the table has no data.\n */\n @property({ type: String, attribute: 'empty-state-headline' })\n emptyStateHeadline: string = 'No items';\n\n /**\n * Description text shown when the table has no data.\n */\n @property({ type: String, attribute: 'empty-state-description' })\n emptyStateDescription: string = 'There are no items to display';\n\n /** Tracks the currently hovered row and column for hover-highlight CSS. */\n @state()\n private hoveredCell: { row?: any; column?: any } = {};\n\n /** True when all rows on the current page are selected. */\n @state()\n private isSelectAll: boolean = false;\n\n /** True when some (but not all) rows on the current page are selected. */\n @state()\n private isSelectAllIntermediate: boolean = false;\n\n /** True when the scroll container has been scrolled horizontally. */\n @state()\n private isHorizontallyScrolled: boolean = false;\n\n // ── Private fields ────────────────────────────────────────────────────────\n\n /** Throttled version of the cell-mouseover handler to avoid excessive state updates. */\n private onCellMouseOverThrottled = throttle((row: any, column: any) => {\n this.hoveredCell = { row, column };\n }, 30);\n\n private onSelectAllClick = () => {\n this.isSelectAll = !this.isSelectAll;\n let selectedRowKeys: string[] = [];\n if (this.isSelectAll) {\n selectedRowKeys = this.data\n .slice((this.page - 1) * this.pageSize, this.page * this.pageSize)\n .map(row => row[this.keyField]);\n }\n this.onSelectChange(selectedRowKeys);\n };\n\n private onRowSelectClick = (row: any) => {\n let selectedRowKeys = [...this.selectedRowKeys];\n if (selectedRowKeys.includes(row[this.keyField])) {\n this.isSelectAll = false;\n selectedRowKeys = selectedRowKeys.filter(\n rowId => rowId !== row[this.keyField],\n );\n } else {\n selectedRowKeys.push(row[this.keyField]);\n }\n this.onSelectChange(selectedRowKeys);\n };\n\n private onSelectChange(selectedRowKeys: string[]) {\n this.selectedRowKeys = selectedRowKeys;\n this.dispatchEvent(\n new CustomEvent('selection-change', {\n detail: {\n value: this.selectedRowKeys,\n isSelectAll: this.isSelectAll,\n },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private onCellClick(row: any, col: TableColumn, evt: MouseEvent) {\n this.dispatchEvent(\n new CustomEvent('cell-click', {\n detail: {\n record: row,\n column: col,\n altKey: evt.altKey,\n ctrlKey: evt.ctrlKey,\n metaKey: evt.metaKey,\n shiftKey: evt.shiftKey,\n },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private onScrollContainer = (event: Event) => {\n const target = event.target as HTMLElement;\n this.isHorizontallyScrolled = !!target.scrollLeft;\n };\n\n private get totalColumnsWidth(): number {\n let total = 0;\n if (this.selectionType === 'checkbox') {\n total += 3; // approximate checkbox column width in rem\n }\n this.columns.forEach(col => {\n total += col.width ?? DEFAULT_CELL_WIDTH;\n });\n return total;\n }\n\n private getTotalItems(): number {\n if (this.paginate && !this.managed && this.data) return this.data.length;\n return this.totalItems ?? 0;\n }\n\n private getSortIcon(col: TableColumn): string {\n if (this.sortBy === col.name) {\n return this.sortOrder === 'asc'\n ? 'keyboard_arrow_up'\n : 'keyboard_arrow_down';\n }\n return '';\n }\n\n private onSortClick(col: TableColumn) {\n if (this.sortBy === col.name) {\n if (this.sortOrder === 'asc') {\n this.sortOrder = 'desc';\n } else {\n this.sortBy = '';\n }\n } else {\n this.sortBy = col.name;\n this.sortOrder = 'asc';\n }\n this.dispatchEvent(\n new CustomEvent('sort', {\n detail: { sortBy: this.sortBy, sortOrder: this.sortOrder },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private renderHeader() {\n const fixedCols: any[] = [];\n const scrollCols: any[] = [];\n\n if (this.selectionType === 'checkbox') {\n fixedCols.push(html`\n <div class=\"col col-checkbox center\">\n <div class=\"col-content\">\n <wc-checkbox\n class=\"checkbox\"\n .value=${this.isSelectAll}\n .indeterminate=${this.isSelectAllIntermediate}\n @change=${this.onSelectAllClick}\n ></wc-checkbox>\n </div>\n </div>\n `);\n }\n\n this.columns.forEach(col => {\n const colWidth = col.width\n ? parseInt(String(col.width), 10)\n : DEFAULT_CELL_WIDTH;\n const colEl = html`\n <div\n class=${classMap({ col: true, sort: this.sortBy === col.name })}\n style=\"width: ${colWidth}rem\"\n >\n <div class=\"col-content\">\n <div class=\"col-text\">${col.label}</div>\n <div class=\"col-actions\">\n ${this.sortable\n ? html`\n <wc-button\n class=\"col-action\"\n color=\"secondary\"\n variant=\"text\"\n @click=${() => this.onSortClick(col)}\n >\n <wc-icon\n slot=\"icon\"\n name=${this.getSortIcon(col)}\n ></wc-icon>\n </wc-button>\n `\n : nothing}\n </div>\n </div>\n </div>\n `;\n if (col.fixed) {\n fixedCols.push(colEl);\n } else {\n scrollCols.push(colEl);\n }\n });\n\n return html`\n <div class=\"header\">\n <div class=\"row\" style=\"min-width: ${this.totalColumnsWidth}rem\">\n <div class=\"fixed-columns columns-container\">${fixedCols}</div>\n <div class=\"scrollable-columns columns-container\">${scrollCols}</div>\n </div>\n </div>\n `;\n }\n\n private renderBody() {\n let data = [...this.data];\n\n if (!this.managed) {\n if (this.sortable && this.sortBy) {\n data = data.sort((a, b) => {\n if (a[this.sortBy] < b[this.sortBy])\n return this.sortOrder === 'asc' ? -1 : 1;\n if (a[this.sortBy] > b[this.sortBy])\n return this.sortOrder === 'asc' ? 1 : -1;\n return 0;\n });\n }\n if (this.paginate) {\n data = data.slice(\n (this.page - 1) * this.pageSize,\n this.page * this.pageSize,\n );\n }\n }\n\n const rows = data.map(row => {\n const fixedCols: any[] = [];\n const scrollCols: any[] = [];\n\n if (this.selectionType === 'checkbox') {\n fixedCols.push(html`\n <div class=\"col center col-checkbox\">\n <div class=\"col-content\">\n <wc-checkbox\n class=\"checkbox\"\n .value=${this.selectedRowKeys.includes(row[this.keyField])}\n @change=${() => this.onRowSelectClick(row)}\n ></wc-checkbox>\n </div>\n </div>\n `);\n }\n\n this.columns.forEach(column => {\n const colWidth = column.width\n ? parseInt(String(column.width), 10)\n : DEFAULT_CELL_WIDTH;\n const colEl = html`\n <div\n tabindex=\"0\"\n class=${classMap({\n col: true,\n 'col-hover':\n this.hoveredCell.row === row &&\n this.hoveredCell.column === column,\n })}\n style=\"width: ${colWidth}rem\"\n @mouseover=${() => this.onCellMouseOverThrottled(row, column)}\n @focus=${() => this.onCellMouseOverThrottled(row, column)}\n @keydown=${(event: KeyboardEvent) => {\n if ((event.ctrlKey || event.metaKey) && event.key === 'c') {\n const elem = event.target as HTMLElement;\n window.navigator.clipboard\n .writeText(elem.innerText)\n .catch(() => {});\n }\n }}\n @click=${(evt: MouseEvent) => {\n const selection = window.getSelection();\n if (selection?.type !== 'Range') {\n this.onCellClick(row, column, evt);\n }\n }}\n >\n <div class=\"col-content\">\n ${column.template\n ? html`<div class=\"col-template\">\n ${unsafeHTML(column.template(row, column))}\n </div>`\n : html`<div class=\"col-text\" title=${row?.[column.name] ?? ''}>\n ${row?.[column.name]}\n </div>`}\n </div>\n </div>\n `;\n if (column.fixed) {\n fixedCols.push(colEl);\n } else {\n scrollCols.push(colEl);\n }\n });\n\n return html`\n <div\n class=${classMap({\n row: true,\n 'row-hover': this.hoveredCell.row === row,\n })}\n style=\"min-width: ${this.totalColumnsWidth}rem\"\n >\n <div class=\"fixed-columns columns-container\">${fixedCols}</div>\n <div class=\"scrollable-columns columns-container\">${scrollCols}</div>\n </div>\n `;\n });\n\n return html`<div class=\"body\">${rows}</div>`;\n }\n\n private renderEmptyState() {\n return html`\n <div class=\"empty-table\">\n <wc-empty-state\n class=\"empty-state content-center\"\n headline=${this.emptyStateHeadline}\n description=${this.emptyStateDescription}\n ></wc-empty-state>\n </div>\n `;\n }\n\n private renderPagination() {\n if (!this.paginate) return nothing;\n\n return html`\n <wc-pagination\n .page=${this.page}\n .pageSize=${this.pageSize}\n .totalItems=${this.getTotalItems()}\n @page=${(e: CustomEvent) => {\n this.page = e.detail.page;\n this.pageSize = e.detail.pageSize;\n this.dispatchEvent(\n new CustomEvent('page', {\n detail: { page: this.page, pageSize: this.pageSize },\n bubbles: true,\n composed: true,\n }),\n );\n }}\n ></wc-pagination>\n `;\n }\n\n render() {\n const tableClasses = {\n table: true,\n sortable: this.sortable,\n paginate: this.paginate,\n 'horizontal-scrolled': this.isHorizontallyScrolled,\n };\n\n return html`\n <div class=${classMap(tableClasses)}>\n <div class=\"table-scroll-container\" @scroll=${this.onScrollContainer}>\n ${this.renderHeader()}\n ${this.data && this.data.length\n ? this.renderBody()\n : this.renderEmptyState()}\n </div>\n <div class=\"table-footer\">${this.renderPagination()}</div>\n </div>\n `;\n }\n}\n"],"names":["LitElement","html","classMap","nothing","unsafeHTML","styles","property","state"],"mappings":"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"}