@otto-de/b2b-core-components 1.5.0 → 1.6.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 (357) hide show
  1. package/dist/b2b-core-components/b2b-core-components.esm.js +1 -1
  2. package/dist/b2b-core-components/p-01fd54a1.entry.js +1 -0
  3. package/dist/b2b-core-components/{p-b95089a7.entry.js → p-04fc18cd.entry.js} +1 -1
  4. package/dist/b2b-core-components/p-06aa96a8.entry.js +1 -0
  5. package/dist/b2b-core-components/{p-c20baf90.entry.js → p-077217b3.entry.js} +1 -1
  6. package/dist/b2b-core-components/{p-03beebf5.entry.js → p-0965b990.entry.js} +1 -1
  7. package/dist/b2b-core-components/p-0beabdb4.entry.js +1 -0
  8. package/dist/b2b-core-components/p-163466cf.entry.js +1 -0
  9. package/dist/b2b-core-components/p-197c1a6d.entry.js +1 -0
  10. package/dist/b2b-core-components/{p-75f84f53.entry.js → p-1d007eea.entry.js} +1 -1
  11. package/dist/b2b-core-components/{p-6997ceb0.entry.js → p-1e2752b2.entry.js} +1 -1
  12. package/dist/b2b-core-components/{p-06ef4c5e.entry.js → p-2328144b.entry.js} +1 -1
  13. package/dist/b2b-core-components/{p-9184036b.entry.js → p-2ad8bdb6.entry.js} +1 -1
  14. package/dist/b2b-core-components/p-2d01e68a.entry.js +1 -0
  15. package/dist/b2b-core-components/{p-60c7f6f7.entry.js → p-3c0671ef.entry.js} +1 -1
  16. package/dist/b2b-core-components/p-42e7f397.entry.js +1 -0
  17. package/dist/b2b-core-components/{p-163fe245.entry.js → p-44ccd8f4.entry.js} +1 -1
  18. package/dist/b2b-core-components/{p-38791fb9.entry.js → p-542a358a.entry.js} +1 -1
  19. package/dist/b2b-core-components/p-54fd68eb.entry.js +1 -0
  20. package/dist/b2b-core-components/p-60badad5.entry.js +1 -0
  21. package/dist/b2b-core-components/{p-e1622cb8.entry.js → p-6140304e.entry.js} +1 -1
  22. package/dist/b2b-core-components/{p-f0aa5e83.entry.js → p-681d6880.entry.js} +1 -1
  23. package/dist/b2b-core-components/{p-bcf36531.entry.js → p-8ad1bb92.entry.js} +1 -1
  24. package/dist/b2b-core-components/p-90a3ffed.entry.js +1 -0
  25. package/dist/b2b-core-components/p-97ef9805.entry.js +1 -0
  26. package/dist/b2b-core-components/{p-48d4d224.entry.js → p-a50ea33f.entry.js} +1 -1
  27. package/dist/b2b-core-components/{p-c8294029.entry.js → p-b3ccfc58.entry.js} +1 -1
  28. package/dist/b2b-core-components/{p-2b3a67db.entry.js → p-b6a8a06f.entry.js} +1 -1
  29. package/dist/b2b-core-components/{p-5c2db521.entry.js → p-b8049234.entry.js} +1 -1
  30. package/dist/b2b-core-components/p-c294dd0c.entry.js +1 -0
  31. package/dist/b2b-core-components/{p-5d7866e8.entry.js → p-d07210e2.entry.js} +1 -1
  32. package/dist/b2b-core-components/p-d7bb8aa1.entry.js +1 -0
  33. package/dist/b2b-core-components/{p-76e240f8.entry.js → p-d83c2084.entry.js} +1 -1
  34. package/dist/b2b-core-components/{p-dcd80266.entry.js → p-db7d2ec3.entry.js} +1 -1
  35. package/dist/b2b-core-components/{p-9facba86.entry.js → p-dd79ab5b.entry.js} +1 -1
  36. package/dist/b2b-core-components/{p-bda69b9a.entry.js → p-e5b78075.entry.js} +1 -1
  37. package/dist/b2b-core-components/{p-7b04f40b.entry.js → p-e811411a.entry.js} +1 -1
  38. package/dist/b2b-core-components/p-f190bf79.entry.js +1 -0
  39. package/dist/b2b-core-components/{p-1e1bdb50.entry.js → p-f24515bf.entry.js} +1 -1
  40. package/dist/b2b-core-components/p-f3ce95bf.js +2 -0
  41. package/dist/b2b-core-components/p-f7e9f889.entry.js +1 -0
  42. package/dist/cjs/b2b-alert.cjs.entry.js +4 -4
  43. package/dist/cjs/b2b-anchor.cjs.entry.js +1 -1
  44. package/dist/cjs/b2b-button_2.cjs.entry.js +12 -8
  45. package/dist/cjs/b2b-card.cjs.entry.js +1 -1
  46. package/dist/cjs/b2b-checkbox-group.cjs.entry.js +7 -5
  47. package/dist/cjs/{b2b-table-cell_2.cjs.entry.js → b2b-checkbox_3.cjs.entry.js} +94 -7
  48. package/dist/cjs/b2b-core-components.cjs.js +3 -3
  49. package/dist/cjs/b2b-dropdown.cjs.entry.js +3 -3
  50. package/dist/cjs/b2b-grid-col.cjs.entry.js +1 -1
  51. package/dist/cjs/b2b-grid-row.cjs.entry.js +2 -2
  52. package/dist/cjs/b2b-grid.cjs.entry.js +1 -1
  53. package/dist/cjs/b2b-headline.cjs.entry.js +1 -1
  54. package/dist/cjs/b2b-icon.cjs.entry.js +4 -4
  55. package/dist/cjs/b2b-input-group_2.cjs.entry.js +10 -21
  56. package/dist/cjs/b2b-input-label.cjs.entry.js +1 -1
  57. package/dist/cjs/b2b-input_2.cjs.entry.js +8 -7
  58. package/dist/cjs/b2b-label.cjs.entry.js +1 -1
  59. package/dist/cjs/b2b-modal.cjs.entry.js +5 -5
  60. package/dist/cjs/b2b-pagination.cjs.entry.js +5 -5
  61. package/dist/cjs/b2b-paragraph.cjs.entry.js +5 -5
  62. package/dist/cjs/b2b-radio-button.cjs.entry.js +1 -1
  63. package/dist/cjs/b2b-radio-group.cjs.entry.js +1 -1
  64. package/dist/cjs/b2b-required-separator.cjs.entry.js +3 -3
  65. package/dist/cjs/b2b-rounded-icon.cjs.entry.js +1 -1
  66. package/dist/cjs/b2b-scrollable-container.cjs.entry.js +1 -1
  67. package/dist/cjs/b2b-search.cjs.entry.js +1 -1
  68. package/dist/cjs/b2b-separator.cjs.entry.js +1 -1
  69. package/dist/cjs/b2b-tab-group.cjs.entry.js +1 -1
  70. package/dist/cjs/b2b-tab-panel.cjs.entry.js +1 -1
  71. package/dist/cjs/b2b-tab.cjs.entry.js +1 -1
  72. package/dist/cjs/b2b-table-row.cjs.entry.js +77 -21
  73. package/dist/cjs/b2b-table-rowgroup.cjs.entry.js +85 -24
  74. package/dist/cjs/b2b-table.cjs.entry.js +10 -10
  75. package/dist/cjs/b2b-textarea.cjs.entry.js +1 -1
  76. package/dist/cjs/b2b-toggle-button.cjs.entry.js +7 -7
  77. package/dist/cjs/b2b-toggle-group.cjs.entry.js +3 -3
  78. package/dist/cjs/b2b-tooltip.cjs.entry.js +4 -4
  79. package/dist/cjs/b2b-wizard-icon.cjs.entry.js +1 -1
  80. package/dist/cjs/b2b-wizard-step.cjs.entry.js +4 -4
  81. package/dist/cjs/b2b-wizard.cjs.entry.js +2 -2
  82. package/dist/cjs/{index-496aa5dd.js → index-04e07a00.js} +88 -31
  83. package/dist/cjs/loader.cjs.js +3 -3
  84. package/dist/cjs/{table.types-bb0926c7.js → table.types-00c8228a.js} +2 -2
  85. package/dist/collection/collection-manifest.json +2 -2
  86. package/dist/collection/components/alert/alert.css +7 -7
  87. package/dist/collection/components/alert/alert.e2e.js +67 -0
  88. package/dist/collection/components/alert/alert.js +2 -2
  89. package/dist/collection/components/anchor/anchor.css +2 -2
  90. package/dist/collection/components/anchor/anchor.spec.js +68 -0
  91. package/dist/collection/components/button/button.css +35 -39
  92. package/dist/collection/components/button/button.e2e.js +80 -0
  93. package/dist/collection/components/button/button.js +31 -6
  94. package/dist/collection/components/card/card.css +2 -2
  95. package/dist/collection/components/card/card.e2e.js +110 -0
  96. package/dist/collection/components/card/card.spec.js +32 -0
  97. package/dist/collection/components/checkbox/checkbox.css +34 -13
  98. package/dist/collection/components/checkbox/checkbox.e2e.js +30 -0
  99. package/dist/collection/components/checkbox/checkbox.js +81 -6
  100. package/dist/collection/components/checkbox/checkbox.spec.js +45 -0
  101. package/dist/collection/components/checkbox-group/checkbox-group.css +5 -5
  102. package/dist/collection/components/checkbox-group/checkbox-group.e2e.js +78 -0
  103. package/dist/collection/components/checkbox-group/checkbox-group.js +5 -3
  104. package/dist/collection/components/checkbox-group/checkbox-group.spec.js +38 -0
  105. package/dist/collection/components/dropdown/dropdown.css +7 -7
  106. package/dist/collection/components/dropdown/dropdown.e2e.js +48 -0
  107. package/dist/collection/components/dropdown/dropdown.js +1 -1
  108. package/dist/collection/components/dropdown/dropdown.spec.js +52 -0
  109. package/dist/collection/components/grid/grid.e2e.js +17 -0
  110. package/dist/collection/components/grid/row.js +1 -1
  111. package/dist/collection/components/headline/headline.css +2 -2
  112. package/dist/collection/components/headline/headline.e2e.js +13 -0
  113. package/dist/collection/components/headline/headline.spec.js +67 -0
  114. package/dist/collection/components/icon/icon.css +9 -9
  115. package/dist/collection/components/icon/icon.js +2 -2
  116. package/dist/collection/components/icon/icon.spec.js +21 -0
  117. package/dist/collection/components/input/input.css +14 -14
  118. package/dist/collection/components/input/input.e2e.js +43 -0
  119. package/dist/collection/components/input/input.js +26 -4
  120. package/dist/collection/components/input/input.spec.js +45 -0
  121. package/dist/collection/components/input-group/input-group.css +4 -4
  122. package/dist/collection/components/input-group/input-group.e2e.js +76 -0
  123. package/dist/collection/components/input-group/input-group.js +4 -21
  124. package/dist/collection/components/input-group/input-group.spec.js +56 -0
  125. package/dist/collection/components/input-label/input-label.e2e.js +10 -0
  126. package/dist/collection/components/input-list/input-list.css +7 -7
  127. package/dist/collection/components/input-list/input-list.e2e.js +227 -0
  128. package/dist/collection/components/input-list/input-list.js +24 -2
  129. package/dist/collection/components/label/label.css +2 -2
  130. package/dist/collection/components/label/label.e2e.js +17 -0
  131. package/dist/collection/components/label/label.spec.js +58 -0
  132. package/dist/collection/components/modal/modal.css +13 -18
  133. package/dist/collection/components/modal/modal.e2e.js +115 -0
  134. package/dist/collection/components/modal/modal.js +3 -3
  135. package/dist/collection/components/pagination/pagination.css +7 -7
  136. package/dist/collection/components/pagination/pagination.e2e.js +256 -0
  137. package/dist/collection/components/pagination/pagination.js +3 -3
  138. package/dist/collection/components/pagination/pagination.spec.js +104 -0
  139. package/dist/collection/components/paragraph/paragraph.css +9 -9
  140. package/dist/collection/components/paragraph/paragraph.e2e.js +13 -0
  141. package/dist/collection/components/paragraph/paragraph.js +3 -3
  142. package/dist/collection/components/radio/radio.css +2 -2
  143. package/dist/collection/components/radio/radio.e2e.js +36 -0
  144. package/dist/collection/components/radio/radio.spec.js +38 -0
  145. package/dist/collection/components/radio-group/radio-group.css +2 -2
  146. package/dist/collection/components/radio-group/radio-group.e2e.js +71 -0
  147. package/dist/collection/components/radio-group/radio-group.spec.js +31 -0
  148. package/dist/collection/components/required-separator/required-separator.css +4 -4
  149. package/dist/collection/components/required-separator/required-separator.e2e.js +17 -0
  150. package/dist/collection/components/required-separator/required-separator.js +1 -1
  151. package/dist/collection/components/rounded-icon/rounded-icon.css +2 -2
  152. package/dist/collection/components/scrollable-container/scrollable-container.css +2 -2
  153. package/dist/collection/components/search/search.e2e.js +97 -0
  154. package/dist/collection/components/separator/separator.css +2 -2
  155. package/dist/collection/components/separator/separator.e2e.js +22 -0
  156. package/dist/collection/components/spinner/spinner.css +2 -2
  157. package/dist/collection/components/spinner/spinner.e2e.js +12 -0
  158. package/dist/collection/components/spinner/spinner.spec.js +41 -0
  159. package/dist/collection/components/tab/tab.css +2 -2
  160. package/dist/collection/components/tab/tab.e2e.js +35 -0
  161. package/dist/collection/components/tab/tab.spec.js +31 -0
  162. package/dist/collection/components/tab-group/tab-group.e2e.js +98 -0
  163. package/dist/collection/components/tab-panel/tab-panel.css +2 -2
  164. package/dist/collection/components/tab-panel/tab-panel.e2e.js +12 -0
  165. package/dist/collection/components/tab-panel/tab-panel.spec.js +10 -0
  166. package/dist/collection/components/table/stories.data.js +6 -6
  167. package/dist/collection/components/table/table-cell/table-cell.css +2 -2
  168. package/dist/collection/components/table/table-header/table-header.css +17 -17
  169. package/dist/collection/components/table/table-header/table-header.js +4 -4
  170. package/dist/collection/components/table/table-row/table-row.css +3 -3
  171. package/dist/collection/components/table/table-row/table-row.js +185 -25
  172. package/dist/collection/components/table/table-rowgroup/table-rowgroup.css +3 -3
  173. package/dist/collection/components/table/table-rowgroup/table-rowgroup.js +118 -23
  174. package/dist/collection/components/table/table.css +2 -2
  175. package/dist/collection/components/table/table.e2e.js +370 -0
  176. package/dist/collection/components/table/table.js +8 -8
  177. package/dist/collection/components/table/table.stories.js +16 -7
  178. package/dist/collection/components/table/utils.js +18 -0
  179. package/dist/collection/components/textarea/textarea.css +2 -2
  180. package/dist/collection/components/textarea/textarea.e2e.js +91 -0
  181. package/dist/collection/components/toggle-button/toggle-button.css +9 -9
  182. package/dist/collection/components/toggle-button/toggle-button.e2e.js +44 -0
  183. package/dist/collection/components/toggle-button/toggle-button.js +5 -5
  184. package/dist/collection/components/toggle-group/toggle-group.css +3 -3
  185. package/dist/collection/components/toggle-group/toggle-group.e2e.js +65 -0
  186. package/dist/collection/components/toggle-group/toggle-group.js +1 -1
  187. package/dist/collection/components/tooltip/tooltip.css +14 -14
  188. package/dist/collection/components/tooltip/tooltip.e2e.js +64 -0
  189. package/dist/collection/components/tooltip/tooltip.js +2 -2
  190. package/dist/collection/components/wizard/wizard-step.js +2 -2
  191. package/dist/collection/components/wizard/wizard.css +3 -3
  192. package/dist/collection/components/wizard/wizard.e2e.js +149 -0
  193. package/dist/collection/components/wizard-icon/wizard-icon.css +2 -2
  194. package/dist/collection/docs/config/replace-prop-controls.spec.js +32 -0
  195. package/dist/collection/utils/types/table.types.js +5 -1
  196. package/dist/collection/utils/utils.spec.js +15 -0
  197. package/dist/components/b2b-alert.js +4 -4
  198. package/dist/components/b2b-anchor.js +1 -1
  199. package/dist/components/b2b-card.js +1 -1
  200. package/dist/components/b2b-checkbox-group.js +7 -5
  201. package/dist/components/b2b-checkbox.js +1 -99
  202. package/dist/components/b2b-dropdown.js +3 -3
  203. package/dist/components/b2b-grid-col.js +1 -1
  204. package/dist/components/b2b-grid-row.js +2 -2
  205. package/dist/components/b2b-grid.js +1 -1
  206. package/dist/components/b2b-label.js +1 -1
  207. package/dist/components/b2b-modal.js +5 -5
  208. package/dist/components/b2b-pagination.js +5 -5
  209. package/dist/components/b2b-paragraph.js +5 -5
  210. package/dist/components/b2b-radio-button.js +1 -1
  211. package/dist/components/b2b-radio-group.js +1 -1
  212. package/dist/components/b2b-required-separator.js +3 -3
  213. package/dist/components/b2b-scrollable-container.js +1 -1
  214. package/dist/components/b2b-search.js +1 -1
  215. package/dist/components/b2b-tab-group.js +1 -1
  216. package/dist/components/b2b-tab-panel.js +1 -1
  217. package/dist/components/b2b-tab.js +1 -1
  218. package/dist/components/b2b-table-row.js +97 -25
  219. package/dist/components/b2b-table-rowgroup.js +91 -27
  220. package/dist/components/b2b-table.js +9 -9
  221. package/dist/components/b2b-textarea.js +1 -1
  222. package/dist/components/b2b-toggle-button.js +7 -7
  223. package/dist/components/b2b-toggle-group.js +3 -3
  224. package/dist/components/b2b-tooltip.js +4 -4
  225. package/dist/components/b2b-wizard-step.js +4 -4
  226. package/dist/components/b2b-wizard.js +2 -2
  227. package/dist/components/button.js +13 -8
  228. package/dist/{esm/b2b-checkbox.entry.js → components/checkbox.js} +66 -13
  229. package/dist/components/headline.js +1 -1
  230. package/dist/components/icon.js +4 -4
  231. package/dist/components/input-group.js +7 -20
  232. package/dist/components/input-label.js +1 -1
  233. package/dist/components/input-list-option.js +2 -2
  234. package/dist/components/input-list.js +6 -4
  235. package/dist/components/input.js +8 -6
  236. package/dist/components/rounded-icon.js +1 -1
  237. package/dist/components/separator.js +1 -1
  238. package/dist/components/spinner.js +1 -1
  239. package/dist/components/table-cell.js +1 -1
  240. package/dist/components/table-header.js +6 -6
  241. package/dist/components/table.types.js +2 -2
  242. package/dist/components/wizard-icon.js +1 -1
  243. package/dist/custom-elements.json +22 -13
  244. package/dist/esm/b2b-alert.entry.js +4 -4
  245. package/dist/esm/b2b-anchor.entry.js +1 -1
  246. package/dist/esm/b2b-button_2.entry.js +12 -8
  247. package/dist/esm/b2b-card.entry.js +1 -1
  248. package/dist/esm/b2b-checkbox-group.entry.js +7 -5
  249. package/dist/esm/{b2b-table-cell_2.entry.js → b2b-checkbox_3.entry.js} +94 -8
  250. package/dist/esm/b2b-core-components.js +4 -4
  251. package/dist/esm/b2b-dropdown.entry.js +3 -3
  252. package/dist/esm/b2b-grid-col.entry.js +1 -1
  253. package/dist/esm/b2b-grid-row.entry.js +2 -2
  254. package/dist/esm/b2b-grid.entry.js +1 -1
  255. package/dist/esm/b2b-headline.entry.js +1 -1
  256. package/dist/esm/b2b-icon.entry.js +4 -4
  257. package/dist/esm/b2b-input-group_2.entry.js +10 -21
  258. package/dist/esm/b2b-input-label.entry.js +1 -1
  259. package/dist/esm/b2b-input_2.entry.js +8 -7
  260. package/dist/esm/b2b-label.entry.js +1 -1
  261. package/dist/esm/b2b-modal.entry.js +5 -5
  262. package/dist/esm/b2b-pagination.entry.js +5 -5
  263. package/dist/esm/b2b-paragraph.entry.js +5 -5
  264. package/dist/esm/b2b-radio-button.entry.js +1 -1
  265. package/dist/esm/b2b-radio-group.entry.js +1 -1
  266. package/dist/esm/b2b-required-separator.entry.js +3 -3
  267. package/dist/esm/b2b-rounded-icon.entry.js +1 -1
  268. package/dist/esm/b2b-scrollable-container.entry.js +1 -1
  269. package/dist/esm/b2b-search.entry.js +1 -1
  270. package/dist/esm/b2b-separator.entry.js +1 -1
  271. package/dist/esm/b2b-tab-group.entry.js +1 -1
  272. package/dist/esm/b2b-tab-panel.entry.js +1 -1
  273. package/dist/esm/b2b-tab.entry.js +1 -1
  274. package/dist/esm/b2b-table-row.entry.js +77 -21
  275. package/dist/esm/b2b-table-rowgroup.entry.js +85 -24
  276. package/dist/esm/b2b-table.entry.js +10 -10
  277. package/dist/esm/b2b-textarea.entry.js +1 -1
  278. package/dist/esm/b2b-toggle-button.entry.js +7 -7
  279. package/dist/esm/b2b-toggle-group.entry.js +3 -3
  280. package/dist/esm/b2b-tooltip.entry.js +4 -4
  281. package/dist/esm/b2b-wizard-icon.entry.js +1 -1
  282. package/dist/esm/b2b-wizard-step.entry.js +4 -4
  283. package/dist/esm/b2b-wizard.entry.js +2 -2
  284. package/dist/esm/{index-026605c2.js → index-dfdbf4b9.js} +88 -31
  285. package/dist/esm/loader.js +4 -4
  286. package/dist/esm/{table.types-9943c937.js → table.types-dd829d83.js} +2 -2
  287. package/dist/types/components/alert/alert.stories.d.ts +1 -1
  288. package/dist/types/components/anchor/anchor.stories.d.ts +1 -1
  289. package/dist/types/components/button/button.d.ts +2 -0
  290. package/dist/types/components/button/button.stories.d.ts +1 -1
  291. package/dist/types/components/card/card.stories.d.ts +1 -1
  292. package/dist/types/components/checkbox/checkbox.d.ts +8 -1
  293. package/dist/types/components/checkbox/checkbox.stories.d.ts +1 -1
  294. package/dist/types/components/checkbox-group/checkbox-group.stories.d.ts +1 -1
  295. package/dist/types/components/dropdown/dropdown.stories.d.ts +1 -1
  296. package/dist/types/components/grid/grid.stories.d.ts +1 -1
  297. package/dist/types/components/headline/headline.stories.d.ts +1 -1
  298. package/dist/types/components/icon/icon.stories.d.ts +1 -1
  299. package/dist/types/components/input/input.d.ts +2 -0
  300. package/dist/types/components/input/input.stories.d.ts +1 -1
  301. package/dist/types/components/input-group/input-group.d.ts +0 -4
  302. package/dist/types/components/input-group/input-group.stories.d.ts +1 -1
  303. package/dist/types/components/input-list/input-list.d.ts +2 -0
  304. package/dist/types/components/input-list/input-list.stories.d.ts +1 -1
  305. package/dist/types/components/label/label.stories.d.ts +1 -1
  306. package/dist/types/components/modal/modal.stories.d.ts +1 -1
  307. package/dist/types/components/pagination/pagination.stories.d.ts +1 -1
  308. package/dist/types/components/paragraph/paragraph.stories.d.ts +1 -1
  309. package/dist/types/components/radio/radio.stories.d.ts +1 -1
  310. package/dist/types/components/radio-group/radio-group.stories.d.ts +1 -1
  311. package/dist/types/components/required-separator/required-separator.stories.d.ts +1 -1
  312. package/dist/types/components/rounded-icon/rounded-icon.stories.d.ts +1 -1
  313. package/dist/types/components/scrollable-container/scrollable-container.stories.d.ts +1 -1
  314. package/dist/types/components/search/search.stories.d.ts +1 -1
  315. package/dist/types/components/separator/separator.stories.d.ts +1 -1
  316. package/dist/types/components/spinner/spinner.stories.d.ts +1 -1
  317. package/dist/types/components/tab-group/tab-group.stories.d.ts +1 -1
  318. package/dist/types/components/table/table-row/table-row.d.ts +23 -7
  319. package/dist/types/components/table/table-rowgroup/table-rowgroup.d.ts +12 -2
  320. package/dist/types/components/table/table.d.ts +1 -1
  321. package/dist/types/components/table/table.stories.d.ts +2 -1
  322. package/dist/types/components/table/utils.d.ts +4 -0
  323. package/dist/types/components/textarea/textarea.stories.d.ts +1 -1
  324. package/dist/types/components/toggle-group/toggle-group.stories.d.ts +1 -1
  325. package/dist/types/components/tooltip/tooltip.stories.d.ts +1 -1
  326. package/dist/types/components/wizard/wizard.stories.d.ts +1 -1
  327. package/dist/types/components/wizard-icon/wizard-icon.stories.d.ts +1 -1
  328. package/dist/types/components.d.ts +71 -9
  329. package/dist/types/docs/tokens/color.stories.d.ts +1 -1
  330. package/dist/types/docs/tokens/font.stories.d.ts +1 -1
  331. package/dist/types/docs/tokens/size.stories.d.ts +1 -1
  332. package/dist/types/stencil-public-runtime.d.ts +3 -0
  333. package/dist/types/utils/interfaces/content.interface.d.ts +4 -0
  334. package/dist/types/utils/interfaces/form.interface.d.ts +1 -0
  335. package/dist/types/utils/types/table.types.d.ts +7 -2
  336. package/dist/web-types.json +76 -6
  337. package/loader/index.d.ts +1 -1
  338. package/package.json +4 -4
  339. package/dist/b2b-core-components/p-0675225a.entry.js +0 -1
  340. package/dist/b2b-core-components/p-080a0741.entry.js +0 -1
  341. package/dist/b2b-core-components/p-0f8bd310.entry.js +0 -1
  342. package/dist/b2b-core-components/p-14f1b674.entry.js +0 -1
  343. package/dist/b2b-core-components/p-1eb784f9.entry.js +0 -1
  344. package/dist/b2b-core-components/p-21bfe96a.entry.js +0 -1
  345. package/dist/b2b-core-components/p-3cd9088a.entry.js +0 -1
  346. package/dist/b2b-core-components/p-42da7a57.entry.js +0 -1
  347. package/dist/b2b-core-components/p-4fc894c8.entry.js +0 -1
  348. package/dist/b2b-core-components/p-710600ca.entry.js +0 -1
  349. package/dist/b2b-core-components/p-83cb9d03.entry.js +0 -1
  350. package/dist/b2b-core-components/p-a7417890.js +0 -2
  351. package/dist/b2b-core-components/p-c9dcb35a.entry.js +0 -1
  352. package/dist/b2b-core-components/p-cf010e88.entry.js +0 -1
  353. package/dist/b2b-core-components/p-e3cd216c.entry.js +0 -1
  354. package/dist/b2b-core-components/p-fa6cd2ac.entry.js +0 -1
  355. package/dist/b2b-core-components/p-fe96d81a.entry.js +0 -1
  356. package/dist/cjs/b2b-checkbox.cjs.entry.js +0 -74
  357. /package/dist/b2b-core-components/{p-de2c1003.js → p-34eb99cb.js} +0 -0
@@ -0,0 +1,370 @@
1
+ import { newE2EPage } from '@stencil/core/testing';
2
+ describe('B2B-Table', () => {
3
+ let page;
4
+ beforeEach(async () => {
5
+ page = await newE2EPage();
6
+ await page.setContent(`
7
+ <b2b-table size='equal'>
8
+ <b2b-table-rowgroup type='header'>
9
+ <b2b-table-row>
10
+ <b2b-table-header sort-direction="not-sorted">Title 1</b2b-table-header>
11
+ <b2b-table-header>Title 2</b2b-table-header>
12
+ <b2b-table-header sort-direction="descending" sort-id='title3'>Title 3</b2b-table-header>
13
+ </b2b-table-row>
14
+ </b2b-table-rowgroup>
15
+ <b2b-table-rowgroup type='body'>
16
+ <b2b-table-row>
17
+ <b2b-table-cell><p>data 1a</p></b2b-table-cell>
18
+ <b2b-table-cell>data 2a</b2b-table-cell>
19
+ <b2b-table-cell>data 3a</b2b-table-cell>
20
+ </b2b-table-row>
21
+ </b2b-table-rowgroup>
22
+ </b2b-table>
23
+ `);
24
+ });
25
+ const tableWithAccordion = `
26
+ <b2b-table size="expand">
27
+ <b2b-table-rowgroup type="header" accordion>
28
+ <b2b-table-row id="test-header">
29
+ <b2b-table-header>Title 1</b2b-table-header>
30
+ <b2b-table-header>Title 2</b2b-table-header>
31
+ </b2b-table-row>
32
+ </b2b-table-rowgroup>
33
+ <b2b-table-rowgroup type="body" accordion>
34
+ <b2b-table-row id="test-parent">
35
+ <b2b-table-cell><p>data 1a</p></b2b-table-cell>
36
+ <b2b-table-cell>data 2a</b2b-table-cell>
37
+ </b2b-table-row>
38
+ <b2b-table-row id="test-child">
39
+ <b2b-table-cell><p>data 1a</p></b2b-table-cell>
40
+ <b2b-table-cell>data 2a</b2b-table-cell>
41
+ </b2b-table-row>
42
+ </b2b-table-rowgroup>
43
+ </b2b-table>`;
44
+ const tableWithSelection = `
45
+ <b2b-table size="expand">
46
+ <b2b-table-rowgroup type="header" accordion selectable>
47
+ <b2b-table-row id="test-header">
48
+ <b2b-table-header>Title 1</b2b-table-header>
49
+ <b2b-table-header>Title 2</b2b-table-header>
50
+ </b2b-table-row>
51
+ </b2b-table-rowgroup>
52
+ <b2b-table-rowgroup type="body" accordion selectable opened>
53
+ <b2b-table-row id="test-parent" value="peaches">
54
+ <b2b-table-cell><p>data 1a</p></b2b-table-cell>
55
+ <b2b-table-cell>data 2a</b2b-table-cell>
56
+ </b2b-table-row>
57
+ <b2b-table-row id="test-child" value="cherries">
58
+ <b2b-table-cell><p>data 1a</p></b2b-table-cell>
59
+ <b2b-table-cell>data 2a</b2b-table-cell>
60
+ </b2b-table-row>
61
+ <b2b-table-row id="second-child" value="plums">
62
+ <b2b-table-cell><p>data 1a</p></b2b-table-cell>
63
+ <b2b-table-cell>data 2a</b2b-table-cell>
64
+ </b2b-table-row>
65
+ </b2b-table-rowgroup>
66
+ </b2b-table>`;
67
+ it('should render the table component', async () => {
68
+ const element = await page.find('b2b-table');
69
+ expect(element).not.toBeNull();
70
+ });
71
+ it('should set cell sizes according to table size', async () => {
72
+ const cells = await page.findAll('b2b-table-cell');
73
+ cells.map(cell => {
74
+ expect(cell.getAttribute('size')).toBe('equal');
75
+ });
76
+ });
77
+ it('should set headers to fixed only if table is scrollable', async () => {
78
+ const cells = await page.findAll('b2b-table-header');
79
+ cells.map(cell => {
80
+ expect(cell.getAttribute('fixed')).not.toBe('true');
81
+ });
82
+ });
83
+ it('should set headers to fixed if table is scrollable', async () => {
84
+ page = await newE2EPage();
85
+ await page.setContent(`
86
+ <b2b-scrollable-container>
87
+ <b2b-table size='equal'>
88
+ <b2b-table-rowgroup type='header'>
89
+ <b2b-table-row>
90
+ <b2b-table-header>Title 1</b2b-table-header>
91
+ <b2b-table-header>Title 2</b2b-table-header>
92
+ </b2b-table-row>
93
+ </b2b-table>
94
+ </b2b-scrollable-container>
95
+ `);
96
+ const cells = await page.findAll('b2b-table-header');
97
+ cells.map(cell => {
98
+ expect(cell.getAttribute('fixed')).toBe('true');
99
+ });
100
+ });
101
+ it('should set header rows not highlightable', async () => {
102
+ const headerRow = await page.find('b2b-table-rowgroup[type=header] b2b-table-row');
103
+ const isHeaderRowSelectable = await headerRow.getProperty('highlight');
104
+ expect(isHeaderRowSelectable).toBe(false);
105
+ const dataRow = await page.find('b2b-table-rowgroup[type=body] b2b-table-row');
106
+ const isDataRowSelectable = await dataRow.getProperty('highlight');
107
+ expect(isDataRowSelectable).toBe(true);
108
+ });
109
+ it('should show a descending sorting button when a column header is hovered or focused', async () => {
110
+ const headerCol = await page.find({ text: 'Title 1' });
111
+ const sortArrow = await page.find('b2b-table-header >>> svg');
112
+ const ariaState = await headerCol.getAttribute('aria-sort');
113
+ expect(await sortArrow.isVisible()).toBe(false);
114
+ expect(ariaState).toEqualText('other');
115
+ await headerCol.hover();
116
+ await page.waitForChanges();
117
+ expect(await sortArrow.isVisible()).toBe(true);
118
+ });
119
+ it('should emit the sort direction when a column header is clicked', async () => {
120
+ const headerCol = await page.find({ text: 'Title 1' });
121
+ const b2bChange = await page.spyOnEvent('b2b-change');
122
+ await headerCol.click();
123
+ const ariaState = await headerCol.getAttribute('aria-sort');
124
+ expect(ariaState).toEqualText('ascending');
125
+ expect(b2bChange).toHaveReceivedEvent();
126
+ });
127
+ it('should emit the sort direction when a column header is focused and enter is pressed', async () => {
128
+ const headerCol = await page.find({ text: 'Title 1' });
129
+ const b2bChange = await page.spyOnEvent('b2b-change');
130
+ let ariaState = await headerCol.getAttribute('aria-sort');
131
+ expect(ariaState).toEqualText('other');
132
+ await page.keyboard.press('Tab');
133
+ await page.keyboard.press('Enter');
134
+ await page.waitForChanges();
135
+ ariaState = await headerCol.getAttribute('aria-sort');
136
+ expect(ariaState).toEqualText('ascending');
137
+ expect(b2bChange).toHaveReceivedEvent();
138
+ });
139
+ it('should un-sort siblings when sorting any column', async () => {
140
+ const headerCol = await page.find({ text: 'Title 3' });
141
+ let ariaState = await headerCol.getAttribute('aria-sort');
142
+ expect(ariaState).toEqualText('descending');
143
+ await page.keyboard.press('Tab');
144
+ await page.keyboard.press('Enter');
145
+ await page.waitForChanges();
146
+ ariaState = await headerCol.getAttribute('aria-sort');
147
+ expect(ariaState).toEqualText('other');
148
+ });
149
+ it('should not change sorting of siblings if they do not implement sorting', async () => {
150
+ const headerCol = await page.find({ text: 'Title 2' });
151
+ let ariaState = await headerCol.getAttribute('aria-sort');
152
+ expect(ariaState).toEqualText('other');
153
+ await page.keyboard.press('Tab');
154
+ await page.keyboard.press('Enter');
155
+ await page.waitForChanges();
156
+ ariaState = await headerCol.getAttribute('aria-sort');
157
+ expect(ariaState).toEqualText('other');
158
+ const sortDirection = await headerCol.getAttribute('sort-direction');
159
+ expect(sortDirection).toBeNull();
160
+ });
161
+ it('Table should emit an event with the sorting column and direction', async () => {
162
+ const headerCol = await page.find({ text: 'Title 1' });
163
+ const b2bChange = await page.spyOnEvent('b2b-sort-change');
164
+ await headerCol.click();
165
+ expect(b2bChange).toHaveReceivedEvent();
166
+ expect(b2bChange).toHaveReceivedEventDetail({
167
+ sortedColumn: 'Title 1',
168
+ sortDirection: 'ascending',
169
+ });
170
+ });
171
+ it('Table sort-change event should emit header sort-id if provided', async () => {
172
+ const headerCol = await page.find({ text: 'Title 3' });
173
+ const b2bChange = await page.spyOnEvent('b2b-sort-change');
174
+ await headerCol.click();
175
+ expect(b2bChange).toHaveReceivedEvent();
176
+ expect(b2bChange).toHaveReceivedEventDetail({
177
+ sortedColumn: 'title3',
178
+ sortDirection: 'ascending',
179
+ });
180
+ });
181
+ it('should render the first row of a rowgroup as an accordion parent if accordion is true on a rowgroup and the rowgroup type is body', async () => {
182
+ page = await newE2EPage();
183
+ await page.setContent(tableWithAccordion);
184
+ const firstRow = await page.find('#test-parent');
185
+ const type = await firstRow.getProperty('accordionType');
186
+ expect(type).toEqualText('parent');
187
+ });
188
+ it('should render all rows as accordion children when they are in the same rowgroup of type body in which accordion is true', async () => {
189
+ page = await newE2EPage();
190
+ await page.setContent(tableWithAccordion);
191
+ const firstRow = await page.find('#test-child');
192
+ const type = await firstRow.getProperty('accordionType');
193
+ expect(type).toEqualText('child');
194
+ });
195
+ it('should add an extra column for controls if accordion is true on a rowgroup', async () => {
196
+ page = await newE2EPage();
197
+ await page.setContent(tableWithAccordion);
198
+ const header = await page.find('#test-header >>> b2b-table-header');
199
+ expect(header).toEqualText('');
200
+ const parent = await page.find('#test-parent >>> b2b-table-cell');
201
+ const parentControl = await parent.find('button');
202
+ expect(parentControl).toBeDefined;
203
+ });
204
+ it('should show children accordion rows if the arrow is clicked in a parent accordion row', async () => {
205
+ page = await newE2EPage();
206
+ await page.setContent(tableWithAccordion);
207
+ const parent = await page.find('#test-parent >>> b2b-table-cell');
208
+ const parentControl = await parent.find('button');
209
+ const child = await page.find('#test-child');
210
+ const styleBefore = await child.getComputedStyle();
211
+ expect(styleBefore['visibility']).toEqual('collapse');
212
+ await parentControl.click();
213
+ await page.waitForChanges();
214
+ const styleAfter = await child.getComputedStyle();
215
+ expect(styleAfter['visibility']).toEqual('visible');
216
+ });
217
+ it('should show children accordion rows if the arrow is focused and enter is pressed in a parent accordion row', async () => {
218
+ page = await newE2EPage();
219
+ await page.setContent(tableWithAccordion);
220
+ const child = await page.find('#test-child');
221
+ const styleBefore = await child.getComputedStyle();
222
+ expect(styleBefore['visibility']).toEqual('collapse');
223
+ await page.keyboard.press('Tab');
224
+ await page.keyboard.press('Enter');
225
+ await page.waitForChanges();
226
+ const styleAfter = await child.getComputedStyle();
227
+ expect(styleAfter['visibility']).toEqual('visible');
228
+ });
229
+ it('should hide children accordion rows if the arrow is pressed again', async () => {
230
+ page = await newE2EPage();
231
+ await page.setContent(tableWithAccordion);
232
+ const parent = await page.find('#test-parent >>> b2b-table-cell');
233
+ const parentControl = await parent.find('button');
234
+ const child = await page.find('#test-child');
235
+ const styleBefore = await child.getComputedStyle();
236
+ expect(styleBefore['visibility']).toEqual('collapse');
237
+ await parentControl.click();
238
+ await page.waitForChanges();
239
+ await parentControl.click();
240
+ await page.waitForChanges();
241
+ const styleAfter = await child.getComputedStyle();
242
+ expect(styleAfter['visibility']).toEqual('collapse');
243
+ });
244
+ it('should render accordion opened if prop set to true', async () => {
245
+ page = await newE2EPage();
246
+ await page.setContent(`<b2b-table size="expand">
247
+ <b2b-table-rowgroup type="header" accordion>
248
+ <b2b-table-row id="test-header">
249
+ <b2b-table-header>Title 1</b2b-table-header>
250
+ <b2b-table-header>Title 2</b2b-table-header>
251
+ </b2b-table-row>
252
+ </b2b-table-rowgroup>
253
+ <b2b-table-rowgroup type="body" accordion opened>
254
+ <b2b-table-row id="test-parent">
255
+ <b2b-table-cell><p>data 1a</p></b2b-table-cell>
256
+ <b2b-table-cell>data 2a</b2b-table-cell>
257
+ </b2b-table-row>
258
+ <b2b-table-row id="test-child">
259
+ <b2b-table-cell><p>data 1a</p></b2b-table-cell>
260
+ <b2b-table-cell>data 2a</b2b-table-cell>
261
+ </b2b-table-row>
262
+ </b2b-table-rowgroup>
263
+ </b2b-table>`);
264
+ const child = await page.find('#test-child');
265
+ const toggleIconClass = await page.evaluate(() => {
266
+ const parentRow = document.querySelector('#test-parent');
267
+ const toggleIcon = parentRow.shadowRoot.querySelector('b2b-table-cell button');
268
+ return toggleIcon.className;
269
+ });
270
+ expect(toggleIconClass).toContain('b2b-table-row__accordion-icon--open');
271
+ const childInitialStyle = await child.getComputedStyle();
272
+ expect(childInitialStyle['visibility']).toEqual('visible');
273
+ });
274
+ it('should render a checkbox column when selectable is set to true on a rowgroup', async () => {
275
+ page = await newE2EPage();
276
+ await page.setContent(tableWithSelection);
277
+ const headerCheckbox = await page.find('#test-header >>> b2b-checkbox');
278
+ expect(headerCheckbox).not.toBeNull();
279
+ const rowCheckbox = await page.find('#test-parent >>> b2b-checkbox');
280
+ expect(rowCheckbox).not.toBeNull();
281
+ });
282
+ it('should toggle all rows when the header row is clicked', async () => {
283
+ page = await newE2EPage();
284
+ await page.setContent(tableWithSelection);
285
+ const headerCheckbox = await page.find('#test-header >>> b2b-checkbox');
286
+ await headerCheckbox.click();
287
+ const firstRow = await page.find('#test-parent');
288
+ const secondRow = await page.find('#test-child');
289
+ const thirdRow = await page.find('#second-child');
290
+ expect(await firstRow.getProperty('checked')).toBe(true);
291
+ expect(await secondRow.getProperty('checked')).toBe(true);
292
+ expect(await thirdRow.getProperty('checked')).toBe(true);
293
+ await headerCheckbox.click();
294
+ expect(await firstRow.getProperty('checked')).toBe(false);
295
+ expect(await secondRow.getProperty('checked')).toBe(false);
296
+ expect(await thirdRow.getProperty('checked')).toBe(false);
297
+ });
298
+ it('should toggle all children rows of a parent accordion row if the parent is selected', async () => {
299
+ page = await newE2EPage();
300
+ await page.setContent(tableWithSelection);
301
+ const firstRow = await page.find('#test-parent >>> b2b-checkbox');
302
+ expect(firstRow).not.toBeNull();
303
+ await firstRow.click();
304
+ const secondRow = await page.find('#test-child');
305
+ expect(await secondRow.getProperty('checked')).toBe(true);
306
+ await firstRow.click();
307
+ expect(await secondRow.getProperty('checked')).toBe(false);
308
+ });
309
+ it('should display an indeterminate checkbox if some rows are checked', async () => {
310
+ page = await newE2EPage();
311
+ await page.setContent(tableWithSelection);
312
+ const checkbox = await page.find('#test-child >>> b2b-checkbox');
313
+ expect(checkbox).not.toBeNull();
314
+ await checkbox.click();
315
+ const secondRow = await page.find('#test-child');
316
+ expect(await secondRow.getProperty('checked')).toBe(true);
317
+ const header = await page.find('#test-header');
318
+ expect(await header.getProperty('indeterminate')).toBe(true);
319
+ });
320
+ it('should display an indeterminate checkbox in the parent row of an accordion if not all children are checked', async () => {
321
+ page = await newE2EPage();
322
+ await page.setContent(tableWithSelection);
323
+ const secondRow = await page.find('#test-child >>> b2b-checkbox');
324
+ await secondRow.click();
325
+ expect(await secondRow.getProperty('checked')).toBe(true);
326
+ const firstRow = await page.find('#test-parent >>> b2b-checkbox');
327
+ expect(await firstRow.getProperty('indeterminate')).toBe(true);
328
+ });
329
+ it('should emit the currently selected values when a row is selected or unselected', async () => {
330
+ page = await newE2EPage();
331
+ await page.setContent(tableWithSelection);
332
+ const selectSpy = await page.spyOnEvent('b2b-row-selected');
333
+ const secondRow = await page.find('#test-child >>> b2b-checkbox');
334
+ await secondRow.click();
335
+ await page.waitForChanges();
336
+ expect(selectSpy).toHaveReceivedEvent();
337
+ expect(selectSpy).toHaveReceivedEventDetail({
338
+ checked: true,
339
+ value: 'cherries',
340
+ });
341
+ await secondRow.click();
342
+ await page.waitForChanges();
343
+ expect(selectSpy).toHaveReceivedEvent();
344
+ expect(selectSpy).toHaveReceivedEventDetail({
345
+ checked: false,
346
+ value: 'cherries',
347
+ });
348
+ });
349
+ it('should emit the currently selected values in an accordion when a row of that accordion is selected or unselected', async () => {
350
+ page = await newE2EPage();
351
+ await page.setContent(tableWithSelection);
352
+ const selectSpy = await page.spyOnEvent('b2b-group-selected');
353
+ const secondRow = await page.find('#test-parent >>> b2b-checkbox');
354
+ await secondRow.click();
355
+ await page.waitForChanges();
356
+ expect(selectSpy).toHaveReceivedEvent();
357
+ expect(selectSpy).toHaveReceivedEventDetail({
358
+ group: 'peaches',
359
+ values: ['cherries', 'plums'],
360
+ });
361
+ const thirdRow = await page.find('#second-child >>> b2b-checkbox');
362
+ await thirdRow.click();
363
+ await page.waitForChanges();
364
+ expect(selectSpy).toHaveReceivedEvent();
365
+ expect(selectSpy).toHaveReceivedEventDetail({
366
+ group: 'peaches',
367
+ values: ['cherries'],
368
+ });
369
+ });
370
+ });
@@ -4,6 +4,14 @@ export class TableComponent {
4
4
  constructor() {
5
5
  this.size = TableSizes.EXPAND;
6
6
  }
7
+ onColumnSelected(event) {
8
+ if (event.target.nodeName === 'B2B-TABLE-HEADER') {
9
+ this.b2bSortChange.emit({
10
+ sortedColumn: event.target.sortId || event.target.textContent.trim(),
11
+ sortDirection: event.detail,
12
+ });
13
+ }
14
+ }
7
15
  setCellSize() {
8
16
  const allCells = this.host.querySelectorAll('b2b-table-cell');
9
17
  [...allCells].map(cell => cell.setAttribute('size', this.size));
@@ -30,14 +38,6 @@ export class TableComponent {
30
38
  console.log(this.host);
31
39
  }
32
40
  }
33
- onColumnSelected(event) {
34
- if (event.target.nodeName === 'B2B-TABLE-HEADER') {
35
- this.b2bSortChange.emit({
36
- sortedColumn: event.target.sortId || event.target.textContent.trim(),
37
- sortDirection: event.detail,
38
- });
39
- }
40
- }
41
41
  render() {
42
42
  return (h(Host, { class: {
43
43
  ['b2b-table--' + this.size]: true,
@@ -191,11 +191,11 @@ const TemplateSorting = ({ data, firstColumnWidth, size, textWrap, align, highli
191
191
  export const story110Sorting = TemplateSorting.bind({});
192
192
  story110Sorting.args = Object.assign(Object.assign({}, defaultArgs), { withDividers: true, size: 'expand', data: userSampleData });
193
193
  story110Sorting.storyName = 'Table with Sorting';
194
- const TemplateAccordion = ({ data, firstColumnWidth, size, textWrap, align, highlight, withDividers, color, }) => {
194
+ const TemplateAccordion = ({ data, firstColumnWidth, size, textWrap, align, highlight, withDividers, color, selectable, }) => {
195
195
  return html `
196
196
  <div>
197
197
  <b2b-table size="${size}">
198
- <b2b-table-rowgroup type="header" accordion>
198
+ <b2b-table-rowgroup type="header" accordion selectable="${selectable}">
199
199
  <b2b-table-row>
200
200
  ${data.columns.map((columnName, index) => {
201
201
  return html ` <b2b-table-header
@@ -206,11 +206,12 @@ const TemplateAccordion = ({ data, firstColumnWidth, size, textWrap, align, high
206
206
  })}
207
207
  </b2b-table-row>
208
208
  </b2b-table-rowgroup>
209
- <b2b-table-rowgroup type="body" accordion>
209
+ <b2b-table-rowgroup type="body" accordion selectable="${selectable}">
210
210
  ${data.rows.map((row, index) => {
211
211
  return html `<b2b-table-row
212
212
  highlight="${highlight}"
213
- color=${index === 0 ? color : 'default'}>
213
+ color=${index === 0 ? color : 'default'}
214
+ value="${row[0]}">
214
215
  ${row.map(data => html `<b2b-table-cell
215
216
  ?divider=${withDividers}
216
217
  align="${align}"
@@ -220,11 +221,16 @@ const TemplateAccordion = ({ data, firstColumnWidth, size, textWrap, align, high
220
221
  </b2b-table-row>`;
221
222
  })}
222
223
  </b2b-table-rowgroup>
223
- <b2b-table-rowgroup type="body" accordion opened>
224
+ <b2b-table-rowgroup
225
+ type="body"
226
+ accordion
227
+ opened
228
+ selectable="${selectable}">
224
229
  ${data.rows.map((row, index) => {
225
230
  return html `<b2b-table-row
226
231
  highlight="${highlight}"
227
- color=${index === 0 ? color : 'default'}>
232
+ color=${index === 0 ? color : 'default'}
233
+ value="${row[0]}">
228
234
  ${row.map(data => html `<b2b-table-cell
229
235
  ?divider=${withDividers}
230
236
  align="${align}"
@@ -239,8 +245,11 @@ const TemplateAccordion = ({ data, firstColumnWidth, size, textWrap, align, high
239
245
  `;
240
246
  };
241
247
  export const story120Accordion = TemplateAccordion.bind({});
242
- story120Accordion.args = Object.assign(Object.assign({}, defaultArgs), { data: sampleData });
248
+ story120Accordion.args = Object.assign(Object.assign({}, defaultArgs), { data: sampleData, selectable: false });
243
249
  story120Accordion.storyName = 'Accordion Table';
250
+ export const story130Selectable = TemplateAccordion.bind({});
251
+ story130Selectable.args = Object.assign(Object.assign({}, defaultArgs), { data: sampleData, selectable: true });
252
+ story130Selectable.storyName = 'Selectable Table';
244
253
  const tableArgs = getArgTypes('b2b-table');
245
254
  const rowGroupArgs = getArgTypes('b2b-table-rowgroup');
246
255
  const rowArgs = getArgTypes('b2b-table-row');
@@ -0,0 +1,18 @@
1
+ export function updateCheckboxState(rows, header) {
2
+ let someSelected = rows.some(item => item.checked === true);
3
+ let everySelected = rows.every(item => item.checked === true);
4
+ header.checked = everySelected;
5
+ header.indeterminate = someSelected && !everySelected;
6
+ }
7
+ export function getAllRows(hostEl) {
8
+ return Array.from(hostEl.querySelectorAll('b2b-table-row'));
9
+ }
10
+ export function getRemainingRows(hostEl) {
11
+ return Array.from(hostEl.querySelectorAll('b2b-table-row')).slice(1);
12
+ }
13
+ export function getFirstRow(hostEl) {
14
+ const firstRow = hostEl.querySelector('b2b-table-row');
15
+ if (firstRow != null) {
16
+ return firstRow;
17
+ }
18
+ }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Do not edit directly
3
- * Generated on Mon, 03 Jul 2023 11:38:27 GMT
3
+ * Generated on Tue, 22 Aug 2023 11:28:34 GMT
4
4
  */
5
5
  :root, :host {
6
6
  --b2b-size-200: 5rem; /* 80px */
@@ -122,7 +122,7 @@
122
122
  }
123
123
  /**
124
124
  * Do not edit directly
125
- * Generated on Mon, 03 Jul 2023 11:38:27 GMT
125
+ * Generated on Tue, 22 Aug 2023 11:28:34 GMT
126
126
  */
127
127
  :root [data-theme="dark"] {
128
128
  --b2b-size-200: 5rem; /* 80px */
@@ -0,0 +1,91 @@
1
+ import { newE2EPage } from '@stencil/core/testing';
2
+ describe('B2B-Textarea', () => {
3
+ let page;
4
+ beforeEach(async () => {
5
+ page = await newE2EPage();
6
+ await page.setContent(`<b2b-textarea label="Test"></b2b-textarea>`);
7
+ });
8
+ it('should render the textarea component', async () => {
9
+ const element = await page.find('b2b-textarea');
10
+ expect(element).not.toBeNull();
11
+ });
12
+ it('should render the label', async () => {
13
+ const label = await page.find({ text: 'Test' });
14
+ expect(label).not.toBeNull();
15
+ });
16
+ it('should emit when the user types', async () => {
17
+ const element = await page.find('b2b-textarea >>> textarea');
18
+ const inputSpy = await page.spyOnEvent('b2b-input');
19
+ await element.type('ABC');
20
+ page.waitForChanges();
21
+ expect(inputSpy).toHaveReceivedEvent();
22
+ });
23
+ it('should not allow typing when disabled', async () => {
24
+ const textarea = `<b2b-textarea label="Test" disabled></b2b-textarea>`;
25
+ page = await newE2EPage();
26
+ await page.setContent(textarea);
27
+ const element = await page.find('b2b-textarea >>> textarea');
28
+ const inputSpy = await page.spyOnEvent('b2b-input');
29
+ await element.type('ABC');
30
+ expect(inputSpy).not.toHaveReceivedEvent();
31
+ });
32
+ it('should autofocus', async () => {
33
+ const textarea = `<b2b-textarea label="Test" autofocus></b2b-textarea>`;
34
+ page = await newE2EPage();
35
+ await page.setContent(textarea);
36
+ const element = await page.find('b2b-textarea');
37
+ expect(element).toHaveAttribute('autofocus');
38
+ });
39
+ it('should display a hint text', async () => {
40
+ const textarea = `<b2b-textarea label="Test" hint="A test hint"></b2b-textarea>`;
41
+ page = await newE2EPage();
42
+ await page.setContent(textarea);
43
+ const hint = await page.find('b2b-textarea >>> span');
44
+ expect(hint).toEqualText('A test hint');
45
+ });
46
+ it('should display an error text when the textarea is invalid', async () => {
47
+ const textarea = `<b2b-textarea label="Test" error="A test error" invalid></b2b-textarea>`;
48
+ page = await newE2EPage();
49
+ await page.setContent(textarea);
50
+ const error = await page.find('b2b-textarea >>> span');
51
+ expect(error).toEqualText('A test error');
52
+ });
53
+ it('should not display a hint when an error message is present and the textarea is invalid', async () => {
54
+ const textarea = `<b2b-textarea label="Test" error="A test error" hint="A test hint" invalid></b2b-textarea>`;
55
+ page = await newE2EPage();
56
+ await page.setContent(textarea);
57
+ const error = await page.find('b2b-textarea >>> span');
58
+ expect(error).toEqualText('A test error');
59
+ });
60
+ it('should not display an error if the textarea is invalid and disabled', async () => {
61
+ const textarea = `<b2b-textarea label="Test" error="A test error" hint="A test hint" invalid disabled></b2b-textarea>`;
62
+ page = await newE2EPage();
63
+ await page.setContent(textarea);
64
+ const hint = await page.find('b2b-textarea >>> span');
65
+ expect(hint).toEqualText('A test hint');
66
+ });
67
+ it('should accept a maximum length', async () => {
68
+ const textarea = `<b2b-textarea label="Test" max-length="10"></b2b-textarea>`;
69
+ const input = 'An input with 27 characters';
70
+ page = await newE2EPage();
71
+ await page.setContent(textarea);
72
+ const element = await page.find('b2b-textarea >>> textarea');
73
+ await element.type(input);
74
+ const value = await element.getProperty('value');
75
+ expect(value).toEqual('An input w');
76
+ });
77
+ it('should support form building from the shadow DOM', async () => {
78
+ const form = `<form>
79
+ <b2b-textarea label="Test"></textarea>
80
+ <button type="submit">Submit</button>
81
+ </form>`;
82
+ page = await newE2EPage();
83
+ await page.setContent(form);
84
+ const handleFormData = jest.fn();
85
+ const formdataEventSpy = await page.spyOnEvent('formdata', handleFormData);
86
+ await page.evaluate(() => {
87
+ document.querySelector('button').click();
88
+ });
89
+ expect(formdataEventSpy).toHaveReceivedEvent();
90
+ });
91
+ });
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Do not edit directly
3
- * Generated on Mon, 03 Jul 2023 11:38:27 GMT
3
+ * Generated on Tue, 22 Aug 2023 11:28:34 GMT
4
4
  */
5
5
  :root, :host {
6
6
  --b2b-size-200: 5rem; /* 80px */
@@ -122,7 +122,7 @@
122
122
  }
123
123
  /**
124
124
  * Do not edit directly
125
- * Generated on Mon, 03 Jul 2023 11:38:27 GMT
125
+ * Generated on Tue, 22 Aug 2023 11:28:34 GMT
126
126
  */
127
127
  :root [data-theme="dark"] {
128
128
  --b2b-size-200: 5rem; /* 80px */
@@ -222,7 +222,7 @@
222
222
  position: relative;
223
223
  margin: 0;
224
224
  }
225
- :host .b2b-toggle-button-input {
225
+ :host .b2b-toggle-button__input {
226
226
  border: 0;
227
227
  clip: rect(0, 0, 0, 0);
228
228
  height: 1px;
@@ -230,7 +230,7 @@
230
230
  position: absolute !important;
231
231
  width: 1px;
232
232
  }
233
- :host .b2b-toggle-button-label {
233
+ :host .b2b-toggle-button__label {
234
234
  display: inline-block;
235
235
  position: relative;
236
236
  box-sizing: border-box;
@@ -246,23 +246,23 @@
246
246
  text-decoration: none;
247
247
  padding: 0 var(--b2b-size-20);
248
248
  }
249
- :host .b2b-toggle-button-label:hover {
249
+ :host .b2b-toggle-button__label:hover {
250
250
  background-color: var(--b2b-color-grey-200);
251
251
  }
252
- :host .b2b-toggle-button-input:focus + label {
252
+ :host .b2b-toggle-button__input:focus + label {
253
253
  outline: 2px solid -webkit-focus-ring-color;
254
254
  z-index: 1;
255
255
  transition: none;
256
256
  }
257
- :host .b2b-toggle-button-input--disabled:focus + label {
257
+ :host .b2b-toggle-button__input--disabled:focus + label {
258
258
  outline: none;
259
259
  }
260
- :host .b2b-toggle-button-label--checked, :host .b2b-toggle-button-label--checked:hover {
260
+ :host .b2b-toggle-button__label--checked, :host .b2b-toggle-button__label--checked:hover {
261
261
  color: var(--b2b-color-white-100);
262
262
  background-color: var(--b2b-color-black-50);
263
263
  border-color: var(--b2b-color-black-50);
264
264
  }
265
- :host .b2b-toggle-button-label--disabled, :host .b2b-toggle-button-label--disabled:hover {
265
+ :host .b2b-toggle-button__label--disabled, :host .b2b-toggle-button__label--disabled:hover {
266
266
  pointer-events: none;
267
267
  color: var(--b2b-color-grey-250);
268
268
  border-color: var(--b2b-color-grey-100);