@otto-de/b2b-core-components 1.4.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 (398) hide show
  1. package/dist/b2b-core-components/b2b-core-components.css +1 -1
  2. package/dist/b2b-core-components/b2b-core-components.esm.js +1 -1
  3. package/dist/b2b-core-components/p-01fd54a1.entry.js +1 -0
  4. package/dist/b2b-core-components/p-04fc18cd.entry.js +1 -0
  5. package/dist/b2b-core-components/p-06aa96a8.entry.js +1 -0
  6. package/dist/b2b-core-components/p-077217b3.entry.js +1 -0
  7. package/dist/b2b-core-components/p-0965b990.entry.js +1 -0
  8. package/dist/b2b-core-components/p-0beabdb4.entry.js +1 -0
  9. package/dist/b2b-core-components/p-163466cf.entry.js +1 -0
  10. package/dist/b2b-core-components/{p-c2bcf0a8.entry.js → p-197c1a6d.entry.js} +1 -1
  11. package/dist/b2b-core-components/p-1d007eea.entry.js +1 -0
  12. package/dist/b2b-core-components/{p-400b3111.entry.js → p-1e2752b2.entry.js} +1 -1
  13. package/dist/b2b-core-components/p-2328144b.entry.js +1 -0
  14. package/dist/b2b-core-components/{p-9184036b.entry.js → p-2ad8bdb6.entry.js} +1 -1
  15. package/dist/b2b-core-components/p-2d01e68a.entry.js +1 -0
  16. package/dist/b2b-core-components/{p-34f6555e.entry.js → p-3c0671ef.entry.js} +1 -1
  17. package/dist/b2b-core-components/p-42e7f397.entry.js +1 -0
  18. package/dist/b2b-core-components/p-44ccd8f4.entry.js +1 -0
  19. package/dist/b2b-core-components/p-542a358a.entry.js +1 -0
  20. package/dist/b2b-core-components/p-54fd68eb.entry.js +1 -0
  21. package/dist/b2b-core-components/p-60badad5.entry.js +1 -0
  22. package/dist/b2b-core-components/p-6140304e.entry.js +1 -0
  23. package/dist/b2b-core-components/{p-f0aa5e83.entry.js → p-681d6880.entry.js} +1 -1
  24. package/dist/b2b-core-components/p-8ad1bb92.entry.js +1 -0
  25. package/dist/b2b-core-components/p-90a3ffed.entry.js +1 -0
  26. package/dist/b2b-core-components/p-97ef9805.entry.js +1 -0
  27. package/dist/b2b-core-components/{p-48d4d224.entry.js → p-a50ea33f.entry.js} +1 -1
  28. package/dist/b2b-core-components/p-b3ccfc58.entry.js +1 -0
  29. package/dist/b2b-core-components/p-b6a8a06f.entry.js +1 -0
  30. package/dist/b2b-core-components/p-b8049234.entry.js +1 -0
  31. package/dist/b2b-core-components/p-bb5e7c53.js +1 -0
  32. package/dist/b2b-core-components/p-c294dd0c.entry.js +1 -0
  33. package/dist/b2b-core-components/p-d07210e2.entry.js +1 -0
  34. package/dist/b2b-core-components/p-d7bb8aa1.entry.js +1 -0
  35. package/dist/b2b-core-components/p-d83c2084.entry.js +1 -0
  36. package/dist/b2b-core-components/p-db7d2ec3.entry.js +1 -0
  37. package/dist/b2b-core-components/{p-9facba86.entry.js → p-dd79ab5b.entry.js} +1 -1
  38. package/dist/b2b-core-components/p-e5b78075.entry.js +1 -0
  39. package/dist/b2b-core-components/p-e811411a.entry.js +1 -0
  40. package/dist/b2b-core-components/p-f190bf79.entry.js +1 -0
  41. package/dist/b2b-core-components/p-f24515bf.entry.js +1 -0
  42. package/dist/b2b-core-components/p-f3ce95bf.js +2 -0
  43. package/dist/b2b-core-components/p-f7e9f889.entry.js +1 -0
  44. package/dist/cjs/b2b-alert.cjs.entry.js +4 -4
  45. package/dist/cjs/b2b-anchor.cjs.entry.js +2 -2
  46. package/dist/cjs/b2b-button_2.cjs.entry.js +13 -9
  47. package/dist/cjs/b2b-card.cjs.entry.js +2 -2
  48. package/dist/cjs/b2b-checkbox-group.cjs.entry.js +7 -5
  49. package/dist/cjs/b2b-checkbox_3.cjs.entry.js +206 -0
  50. package/dist/cjs/b2b-core-components.cjs.js +3 -3
  51. package/dist/cjs/b2b-dropdown.cjs.entry.js +3 -3
  52. package/dist/cjs/b2b-grid-col.cjs.entry.js +1 -1
  53. package/dist/cjs/b2b-grid-row.cjs.entry.js +2 -2
  54. package/dist/cjs/b2b-grid.cjs.entry.js +1 -1
  55. package/dist/cjs/b2b-headline.cjs.entry.js +2 -2
  56. package/dist/cjs/b2b-icon.cjs.entry.js +4 -4
  57. package/dist/cjs/b2b-input-group_2.cjs.entry.js +12 -9
  58. package/dist/cjs/b2b-input-label.cjs.entry.js +1 -1
  59. package/dist/cjs/b2b-input_2.cjs.entry.js +8 -7
  60. package/dist/cjs/b2b-label.cjs.entry.js +2 -2
  61. package/dist/cjs/b2b-modal.cjs.entry.js +5 -5
  62. package/dist/cjs/b2b-pagination.cjs.entry.js +5 -5
  63. package/dist/cjs/b2b-paragraph.cjs.entry.js +5 -5
  64. package/dist/cjs/b2b-radio-button.cjs.entry.js +2 -2
  65. package/dist/cjs/b2b-radio-group.cjs.entry.js +2 -2
  66. package/dist/cjs/b2b-required-separator.cjs.entry.js +3 -3
  67. package/dist/cjs/b2b-rounded-icon.cjs.entry.js +4 -2
  68. package/dist/cjs/b2b-scrollable-container.cjs.entry.js +2 -2
  69. package/dist/cjs/b2b-search.cjs.entry.js +6 -1
  70. package/dist/cjs/b2b-separator.cjs.entry.js +2 -2
  71. package/dist/cjs/b2b-tab-group.cjs.entry.js +1 -1
  72. package/dist/cjs/b2b-tab-panel.cjs.entry.js +2 -2
  73. package/dist/cjs/b2b-tab.cjs.entry.js +2 -2
  74. package/dist/cjs/b2b-table-row.cjs.entry.js +78 -23
  75. package/dist/cjs/b2b-table-rowgroup.cjs.entry.js +87 -26
  76. package/dist/cjs/b2b-table.cjs.entry.js +13 -13
  77. package/dist/cjs/b2b-textarea.cjs.entry.js +2 -2
  78. package/dist/cjs/b2b-toggle-button.cjs.entry.js +7 -7
  79. package/dist/cjs/b2b-toggle-group.cjs.entry.js +3 -3
  80. package/dist/cjs/b2b-tooltip.cjs.entry.js +4 -4
  81. package/dist/cjs/b2b-wizard-icon.cjs.entry.js +6 -4
  82. package/dist/cjs/b2b-wizard-step.cjs.entry.js +26 -0
  83. package/dist/cjs/b2b-wizard.cjs.entry.js +61 -0
  84. package/dist/cjs/{index-496aa5dd.js → index-04e07a00.js} +100 -35
  85. package/dist/cjs/loader.cjs.js +3 -3
  86. package/dist/cjs/{types-ef85a0bf.js → table.types-00c8228a.js} +4 -4
  87. package/dist/cjs/wizard.types-690c64bb.js +10 -0
  88. package/dist/collection/collection-manifest.json +4 -2
  89. package/dist/collection/components/alert/alert.css +8 -9
  90. package/dist/collection/components/alert/alert.e2e.js +67 -0
  91. package/dist/collection/components/alert/alert.js +2 -2
  92. package/dist/collection/components/anchor/anchor.css +3 -4
  93. package/dist/collection/components/anchor/anchor.spec.js +68 -0
  94. package/dist/collection/components/button/button.css +36 -41
  95. package/dist/collection/components/button/button.e2e.js +80 -0
  96. package/dist/collection/components/button/button.js +31 -6
  97. package/dist/collection/components/card/card.css +3 -4
  98. package/dist/collection/components/card/card.e2e.js +110 -0
  99. package/dist/collection/components/card/card.spec.js +32 -0
  100. package/dist/collection/components/checkbox/checkbox.css +36 -16
  101. package/dist/collection/components/checkbox/checkbox.e2e.js +30 -0
  102. package/dist/collection/components/checkbox/checkbox.js +81 -6
  103. package/dist/collection/components/checkbox/checkbox.spec.js +45 -0
  104. package/dist/collection/components/checkbox-group/checkbox-group.css +7 -8
  105. package/dist/collection/components/checkbox-group/checkbox-group.e2e.js +78 -0
  106. package/dist/collection/components/checkbox-group/checkbox-group.js +5 -3
  107. package/dist/collection/components/checkbox-group/checkbox-group.spec.js +38 -0
  108. package/dist/collection/components/dropdown/dropdown.css +9 -10
  109. package/dist/collection/components/dropdown/dropdown.e2e.js +48 -0
  110. package/dist/collection/components/dropdown/dropdown.js +1 -1
  111. package/dist/collection/components/dropdown/dropdown.spec.js +52 -0
  112. package/dist/collection/components/grid/grid.e2e.js +17 -0
  113. package/dist/collection/components/grid/row.js +1 -1
  114. package/dist/collection/components/headline/headline.css +3 -4
  115. package/dist/collection/components/headline/headline.e2e.js +13 -0
  116. package/dist/collection/components/headline/headline.spec.js +67 -0
  117. package/dist/collection/components/icon/icon.css +10 -11
  118. package/dist/collection/components/icon/icon.js +2 -2
  119. package/dist/collection/components/icon/icon.spec.js +21 -0
  120. package/dist/collection/components/input/input.css +16 -17
  121. package/dist/collection/components/input/input.e2e.js +43 -0
  122. package/dist/collection/components/input/input.js +26 -4
  123. package/dist/collection/components/input/input.spec.js +45 -0
  124. package/dist/collection/components/input-group/input-group.css +6 -7
  125. package/dist/collection/components/input-group/input-group.e2e.js +76 -0
  126. package/dist/collection/components/input-group/input-group.js +6 -4
  127. package/dist/collection/components/input-group/input-group.spec.js +56 -0
  128. package/dist/collection/components/input-label/input-label.e2e.js +10 -0
  129. package/dist/collection/components/input-list/input-list.css +8 -9
  130. package/dist/collection/components/input-list/input-list.e2e.js +227 -0
  131. package/dist/collection/components/input-list/input-list.js +24 -2
  132. package/dist/collection/components/label/label.css +4 -5
  133. package/dist/collection/components/label/label.e2e.js +17 -0
  134. package/dist/collection/components/label/label.spec.js +58 -0
  135. package/dist/collection/components/modal/modal.css +14 -20
  136. package/dist/collection/components/modal/modal.e2e.js +115 -0
  137. package/dist/collection/components/modal/modal.js +3 -3
  138. package/dist/collection/components/pagination/pagination.css +8 -9
  139. package/dist/collection/components/pagination/pagination.e2e.js +256 -0
  140. package/dist/collection/components/pagination/pagination.js +3 -3
  141. package/dist/collection/components/pagination/pagination.spec.js +104 -0
  142. package/dist/collection/components/paragraph/paragraph.css +11 -12
  143. package/dist/collection/components/paragraph/paragraph.e2e.js +13 -0
  144. package/dist/collection/components/paragraph/paragraph.js +3 -3
  145. package/dist/collection/components/radio/radio.css +4 -5
  146. package/dist/collection/components/radio/radio.e2e.js +36 -0
  147. package/dist/collection/components/radio/radio.spec.js +38 -0
  148. package/dist/collection/components/radio-group/radio-group.css +4 -5
  149. package/dist/collection/components/radio-group/radio-group.e2e.js +71 -0
  150. package/dist/collection/components/radio-group/radio-group.spec.js +31 -0
  151. package/dist/collection/components/required-separator/required-separator.css +5 -6
  152. package/dist/collection/components/required-separator/required-separator.e2e.js +17 -0
  153. package/dist/collection/components/required-separator/required-separator.js +1 -1
  154. package/dist/collection/components/rounded-icon/rounded-icon.css +4 -5
  155. package/dist/collection/components/rounded-icon/rounded-icon.js +19 -0
  156. package/dist/collection/components/scrollable-container/scrollable-container.css +3 -4
  157. package/dist/collection/components/search/search.e2e.js +97 -0
  158. package/dist/collection/components/search/search.js +14 -0
  159. package/dist/collection/components/separator/separator.css +3 -4
  160. package/dist/collection/components/separator/separator.e2e.js +22 -0
  161. package/dist/collection/components/spinner/spinner.css +3 -4
  162. package/dist/collection/components/spinner/spinner.e2e.js +12 -0
  163. package/dist/collection/components/spinner/spinner.spec.js +41 -0
  164. package/dist/collection/components/tab/tab.css +3 -4
  165. package/dist/collection/components/tab/tab.e2e.js +35 -0
  166. package/dist/collection/components/tab/tab.spec.js +31 -0
  167. package/dist/collection/components/tab-group/tab-group.e2e.js +98 -0
  168. package/dist/collection/components/tab-panel/tab-panel.css +3 -4
  169. package/dist/collection/components/tab-panel/tab-panel.e2e.js +12 -0
  170. package/dist/collection/components/tab-panel/tab-panel.spec.js +10 -0
  171. package/dist/collection/components/table/stories.data.js +6 -6
  172. package/dist/collection/components/table/table-cell/table-cell.css +3 -4
  173. package/dist/collection/components/table/table-cell/table-cell.js +4 -4
  174. package/dist/collection/components/table/table-header/table-header.css +18 -19
  175. package/dist/collection/components/table/table-header/table-header.js +7 -7
  176. package/dist/collection/components/table/table-row/table-row.css +4 -5
  177. package/dist/collection/components/table/table-row/table-row.js +187 -28
  178. package/dist/collection/components/table/table-rowgroup/table-rowgroup.css +4 -5
  179. package/dist/collection/components/table/table-rowgroup/table-rowgroup.js +119 -24
  180. package/dist/collection/components/table/table.css +3 -4
  181. package/dist/collection/components/table/table.e2e.js +370 -0
  182. package/dist/collection/components/table/table.js +10 -10
  183. package/dist/collection/components/table/table.stories.js +17 -8
  184. package/dist/collection/components/table/utils.js +18 -0
  185. package/dist/collection/components/textarea/textarea.css +4 -5
  186. package/dist/collection/components/textarea/textarea.e2e.js +91 -0
  187. package/dist/collection/components/toggle-button/toggle-button.css +10 -11
  188. package/dist/collection/components/toggle-button/toggle-button.e2e.js +44 -0
  189. package/dist/collection/components/toggle-button/toggle-button.js +5 -5
  190. package/dist/collection/components/toggle-group/toggle-group.css +4 -5
  191. package/dist/collection/components/toggle-group/toggle-group.e2e.js +65 -0
  192. package/dist/collection/components/toggle-group/toggle-group.js +1 -1
  193. package/dist/collection/components/tooltip/tooltip.css +16 -17
  194. package/dist/collection/components/tooltip/tooltip.e2e.js +64 -0
  195. package/dist/collection/components/tooltip/tooltip.js +2 -2
  196. package/dist/collection/components/wizard/wizard-step.js +95 -0
  197. package/dist/collection/components/wizard/wizard.css +240 -0
  198. package/dist/collection/components/wizard/wizard.e2e.js +149 -0
  199. package/dist/collection/components/wizard/wizard.js +125 -0
  200. package/dist/collection/components/wizard/wizard.stories.js +44 -0
  201. package/dist/collection/components/wizard-icon/wizard-icon.css +3 -4
  202. package/dist/collection/components/wizard-icon/wizard-icon.js +38 -8
  203. package/dist/collection/components/wizard-icon/wizard-icon.stories.js +14 -3
  204. package/dist/collection/docs/config/replace-prop-controls.spec.js +32 -0
  205. package/dist/collection/{components/table/types.js → utils/types/table.types.js} +7 -3
  206. package/dist/collection/utils/types/wizard.types.js +6 -0
  207. package/dist/collection/utils/utils.spec.js +15 -0
  208. package/dist/components/b2b-alert.js +4 -4
  209. package/dist/components/b2b-anchor.js +2 -2
  210. package/dist/components/b2b-card.js +2 -2
  211. package/dist/components/b2b-checkbox-group.js +7 -5
  212. package/dist/components/b2b-checkbox.js +1 -99
  213. package/dist/components/b2b-dropdown.js +3 -3
  214. package/dist/components/b2b-grid-col.js +1 -1
  215. package/dist/components/b2b-grid-row.js +2 -2
  216. package/dist/components/b2b-grid.js +1 -1
  217. package/dist/components/b2b-label.js +2 -2
  218. package/dist/components/b2b-modal.js +5 -5
  219. package/dist/components/b2b-pagination.js +5 -5
  220. package/dist/components/b2b-paragraph.js +5 -5
  221. package/dist/components/b2b-radio-button.js +2 -2
  222. package/dist/components/b2b-radio-group.js +2 -2
  223. package/dist/components/b2b-required-separator.js +3 -3
  224. package/dist/components/b2b-scrollable-container.js +2 -2
  225. package/dist/components/b2b-search.js +7 -2
  226. package/dist/components/b2b-tab-group.js +1 -1
  227. package/dist/components/b2b-tab-panel.js +2 -2
  228. package/dist/components/b2b-tab.js +2 -2
  229. package/dist/components/b2b-table-row.js +97 -26
  230. package/dist/components/b2b-table-rowgroup.js +91 -27
  231. package/dist/components/b2b-table.js +11 -11
  232. package/dist/components/b2b-textarea.js +2 -2
  233. package/dist/components/b2b-toggle-button.js +7 -7
  234. package/dist/components/b2b-toggle-group.js +3 -3
  235. package/dist/components/b2b-tooltip.js +4 -4
  236. package/dist/components/b2b-wizard-icon.js +1 -47
  237. package/dist/components/b2b-wizard-step.d.ts +11 -0
  238. package/dist/components/b2b-wizard-step.js +62 -0
  239. package/dist/components/b2b-wizard.d.ts +11 -0
  240. package/dist/components/b2b-wizard.js +79 -0
  241. package/dist/components/button.js +13 -8
  242. package/dist/components/checkbox.js +123 -0
  243. package/dist/components/headline.js +2 -2
  244. package/dist/components/icon.js +4 -4
  245. package/dist/components/input-group.js +8 -6
  246. package/dist/components/input-label.js +1 -1
  247. package/dist/components/input-list-option.js +2 -2
  248. package/dist/components/input-list.js +6 -4
  249. package/dist/components/input.js +8 -6
  250. package/dist/components/rounded-icon.js +5 -2
  251. package/dist/components/separator.js +2 -2
  252. package/dist/components/spinner.js +2 -2
  253. package/dist/components/table-cell.js +3 -3
  254. package/dist/components/table-header.js +7 -7
  255. package/dist/components/{types.js → table.types.js} +4 -4
  256. package/dist/components/wizard-icon.js +52 -0
  257. package/dist/components/wizard.types.js +8 -0
  258. package/dist/custom-elements.json +132 -13
  259. package/dist/esm/b2b-alert.entry.js +4 -4
  260. package/dist/esm/b2b-anchor.entry.js +2 -2
  261. package/dist/esm/b2b-button_2.entry.js +13 -9
  262. package/dist/esm/b2b-card.entry.js +2 -2
  263. package/dist/esm/b2b-checkbox-group.entry.js +7 -5
  264. package/dist/esm/b2b-checkbox_3.entry.js +200 -0
  265. package/dist/esm/b2b-core-components.js +4 -4
  266. package/dist/esm/b2b-dropdown.entry.js +3 -3
  267. package/dist/esm/b2b-grid-col.entry.js +1 -1
  268. package/dist/esm/b2b-grid-row.entry.js +2 -2
  269. package/dist/esm/b2b-grid.entry.js +1 -1
  270. package/dist/esm/b2b-headline.entry.js +2 -2
  271. package/dist/esm/b2b-icon.entry.js +4 -4
  272. package/dist/esm/b2b-input-group_2.entry.js +12 -9
  273. package/dist/esm/b2b-input-label.entry.js +1 -1
  274. package/dist/esm/b2b-input_2.entry.js +8 -7
  275. package/dist/esm/b2b-label.entry.js +2 -2
  276. package/dist/esm/b2b-modal.entry.js +5 -5
  277. package/dist/esm/b2b-pagination.entry.js +5 -5
  278. package/dist/esm/b2b-paragraph.entry.js +5 -5
  279. package/dist/esm/b2b-radio-button.entry.js +2 -2
  280. package/dist/esm/b2b-radio-group.entry.js +2 -2
  281. package/dist/esm/b2b-required-separator.entry.js +3 -3
  282. package/dist/esm/b2b-rounded-icon.entry.js +4 -2
  283. package/dist/esm/b2b-scrollable-container.entry.js +2 -2
  284. package/dist/esm/b2b-search.entry.js +6 -1
  285. package/dist/esm/b2b-separator.entry.js +2 -2
  286. package/dist/esm/b2b-tab-group.entry.js +1 -1
  287. package/dist/esm/b2b-tab-panel.entry.js +2 -2
  288. package/dist/esm/b2b-tab.entry.js +2 -2
  289. package/dist/esm/b2b-table-row.entry.js +77 -22
  290. package/dist/esm/b2b-table-rowgroup.entry.js +85 -24
  291. package/dist/esm/b2b-table.entry.js +11 -11
  292. package/dist/esm/b2b-textarea.entry.js +2 -2
  293. package/dist/esm/b2b-toggle-button.entry.js +7 -7
  294. package/dist/esm/b2b-toggle-group.entry.js +3 -3
  295. package/dist/esm/b2b-tooltip.entry.js +4 -4
  296. package/dist/esm/b2b-wizard-icon.entry.js +6 -4
  297. package/dist/esm/b2b-wizard-step.entry.js +22 -0
  298. package/dist/esm/b2b-wizard.entry.js +57 -0
  299. package/dist/esm/{index-026605c2.js → index-dfdbf4b9.js} +100 -35
  300. package/dist/esm/loader.js +4 -4
  301. package/dist/esm/{types-5aa59787.js → table.types-dd829d83.js} +4 -4
  302. package/dist/esm/wizard.types-2a03b8e0.js +8 -0
  303. package/dist/types/components/alert/alert.stories.d.ts +1 -1
  304. package/dist/types/components/anchor/anchor.stories.d.ts +1 -1
  305. package/dist/types/components/button/button.d.ts +2 -0
  306. package/dist/types/components/button/button.stories.d.ts +1 -1
  307. package/dist/types/components/card/card.stories.d.ts +1 -1
  308. package/dist/types/components/checkbox/checkbox.d.ts +8 -1
  309. package/dist/types/components/checkbox/checkbox.stories.d.ts +1 -1
  310. package/dist/types/components/checkbox-group/checkbox-group.stories.d.ts +1 -1
  311. package/dist/types/components/dropdown/dropdown.stories.d.ts +1 -1
  312. package/dist/types/components/grid/grid.stories.d.ts +1 -1
  313. package/dist/types/components/headline/headline.stories.d.ts +1 -1
  314. package/dist/types/components/icon/icon.stories.d.ts +1 -1
  315. package/dist/types/components/input/input.d.ts +2 -0
  316. package/dist/types/components/input/input.stories.d.ts +1 -1
  317. package/dist/types/components/input-group/input-group.stories.d.ts +1 -1
  318. package/dist/types/components/input-list/input-list.d.ts +2 -0
  319. package/dist/types/components/input-list/input-list.stories.d.ts +1 -1
  320. package/dist/types/components/label/label.stories.d.ts +1 -1
  321. package/dist/types/components/modal/modal.stories.d.ts +1 -1
  322. package/dist/types/components/pagination/pagination.stories.d.ts +1 -1
  323. package/dist/types/components/paragraph/paragraph.stories.d.ts +1 -1
  324. package/dist/types/components/radio/radio.stories.d.ts +1 -1
  325. package/dist/types/components/radio-group/radio-group.stories.d.ts +1 -1
  326. package/dist/types/components/required-separator/required-separator.stories.d.ts +1 -1
  327. package/dist/types/components/rounded-icon/rounded-icon.d.ts +4 -0
  328. package/dist/types/components/rounded-icon/rounded-icon.stories.d.ts +1 -1
  329. package/dist/types/components/scrollable-container/scrollable-container.stories.d.ts +1 -1
  330. package/dist/types/components/search/search.d.ts +1 -0
  331. package/dist/types/components/search/search.stories.d.ts +1 -1
  332. package/dist/types/components/separator/separator.stories.d.ts +1 -1
  333. package/dist/types/components/spinner/spinner.stories.d.ts +1 -1
  334. package/dist/types/components/tab-group/tab-group.stories.d.ts +1 -1
  335. package/dist/types/components/table/table-cell/table-cell.d.ts +1 -1
  336. package/dist/types/components/table/table-header/table-header.d.ts +1 -1
  337. package/dist/types/components/table/table-row/table-row.d.ts +23 -7
  338. package/dist/types/components/table/table-rowgroup/table-rowgroup.d.ts +13 -3
  339. package/dist/types/components/table/table.d.ts +2 -2
  340. package/dist/types/components/table/table.stories.d.ts +2 -1
  341. package/dist/types/components/table/utils.d.ts +4 -0
  342. package/dist/types/components/textarea/textarea.stories.d.ts +1 -1
  343. package/dist/types/components/toggle-group/toggle-group.stories.d.ts +1 -1
  344. package/dist/types/components/tooltip/tooltip.stories.d.ts +1 -1
  345. package/dist/types/components/wizard/wizard-step.d.ts +11 -0
  346. package/dist/types/components/wizard/wizard.d.ts +19 -0
  347. package/dist/types/components/wizard/wizard.stories.d.ts +5 -0
  348. package/dist/types/components/wizard-icon/wizard-icon.d.ts +6 -2
  349. package/dist/types/components/wizard-icon/wizard-icon.stories.d.ts +3 -1
  350. package/dist/types/components.d.ts +167 -13
  351. package/dist/types/docs/tokens/color.stories.d.ts +1 -1
  352. package/dist/types/docs/tokens/font.stories.d.ts +1 -1
  353. package/dist/types/docs/tokens/size.stories.d.ts +1 -1
  354. package/dist/types/stencil-public-runtime.d.ts +3 -0
  355. package/dist/types/utils/interfaces/content.interface.d.ts +4 -0
  356. package/dist/types/utils/interfaces/form.interface.d.ts +1 -0
  357. package/dist/types/{components/table/types.d.ts → utils/types/table.types.d.ts} +7 -2
  358. package/dist/types/utils/types/wizard.types.d.ts +8 -0
  359. package/dist/web-types.json +184 -9
  360. package/loader/index.d.ts +1 -1
  361. package/package.json +5 -5
  362. package/dist/b2b-core-components/p-08a50b6c.entry.js +0 -1
  363. package/dist/b2b-core-components/p-10414c0b.entry.js +0 -1
  364. package/dist/b2b-core-components/p-144a3c59.entry.js +0 -1
  365. package/dist/b2b-core-components/p-1493f7df.entry.js +0 -1
  366. package/dist/b2b-core-components/p-14f1b674.entry.js +0 -1
  367. package/dist/b2b-core-components/p-15a499b0.entry.js +0 -1
  368. package/dist/b2b-core-components/p-22dab2b4.entry.js +0 -1
  369. package/dist/b2b-core-components/p-4b25559c.entry.js +0 -1
  370. package/dist/b2b-core-components/p-515eb49e.entry.js +0 -1
  371. package/dist/b2b-core-components/p-541ffefb.entry.js +0 -1
  372. package/dist/b2b-core-components/p-5572aab3.entry.js +0 -1
  373. package/dist/b2b-core-components/p-5c316460.entry.js +0 -1
  374. package/dist/b2b-core-components/p-686d6598.entry.js +0 -1
  375. package/dist/b2b-core-components/p-6e0e6acc.entry.js +0 -1
  376. package/dist/b2b-core-components/p-6e3b27cd.entry.js +0 -1
  377. package/dist/b2b-core-components/p-7af1b977.entry.js +0 -1
  378. package/dist/b2b-core-components/p-7ca9b704.entry.js +0 -1
  379. package/dist/b2b-core-components/p-81a52d1a.entry.js +0 -1
  380. package/dist/b2b-core-components/p-8970ae74.entry.js +0 -1
  381. package/dist/b2b-core-components/p-925e40af.entry.js +0 -1
  382. package/dist/b2b-core-components/p-965ae161.entry.js +0 -1
  383. package/dist/b2b-core-components/p-99f8cf34.entry.js +0 -1
  384. package/dist/b2b-core-components/p-a6248754.entry.js +0 -1
  385. package/dist/b2b-core-components/p-a7417890.js +0 -2
  386. package/dist/b2b-core-components/p-b6e0a6ea.entry.js +0 -1
  387. package/dist/b2b-core-components/p-ba74cde5.entry.js +0 -1
  388. package/dist/b2b-core-components/p-bf4c58dc.entry.js +0 -1
  389. package/dist/b2b-core-components/p-d6ce3259.entry.js +0 -1
  390. package/dist/b2b-core-components/p-da6a1f55.entry.js +0 -1
  391. package/dist/b2b-core-components/p-f0c565ef.entry.js +0 -1
  392. package/dist/b2b-core-components/p-fc639b29.entry.js +0 -1
  393. package/dist/b2b-core-components/p-ff49e330.entry.js +0 -1
  394. package/dist/cjs/b2b-checkbox.cjs.entry.js +0 -74
  395. package/dist/cjs/b2b-table-cell_2.cjs.entry.js +0 -119
  396. package/dist/esm/b2b-checkbox.entry.js +0 -70
  397. package/dist/esm/b2b-table-cell_2.entry.js +0 -114
  398. /package/dist/b2b-core-components/{p-4130f1ae.js → p-34eb99cb.js} +0 -0
@@ -1,39 +1,44 @@
1
- import { h, Host } from '@stencil/core';
2
- import { TableRowgroupTypes } from '../types';
1
+ import { h, Host, } from '@stencil/core';
2
+ import { TableAccordionRowTypes, TableRowgroupTypes, } from '../../../utils/types/table.types';
3
+ import { updateCheckboxState, getFirstRow, getAllRows, getRemainingRows, } from '../utils';
3
4
  export class TableRowgroupComponent {
4
5
  constructor() {
5
- this.getFirstRow = () => {
6
- const firstRow = this.host.querySelector('b2b-table-row');
7
- if (firstRow != null) {
8
- return firstRow;
9
- }
6
+ this.toggleSelectAll = (event, children) => {
7
+ this.toggleList(children, event);
8
+ const rows = children.filter(child => child.accordionType !== TableAccordionRowTypes.PARENT);
9
+ this.selectedValues = [...rows]
10
+ .filter(child => child.checked)
11
+ .map(child => child.value);
10
12
  };
11
- this.getRemainingRows = () => {
12
- const children = Array.from(this.host.querySelectorAll('b2b-table-row'));
13
- return Array.from(children.slice(1));
13
+ this.toggleList = (list, event) => {
14
+ list.forEach(child => ((child.checked = event.detail.checked), (child.indeterminate = false)));
14
15
  };
15
16
  this.addAccordionControlColumn = () => {
16
- const children = this.getRemainingRows();
17
- children &&
18
- children.forEach(child => {
19
- child.setAttribute('type', 'child');
20
- });
21
- const firstRow = this.getFirstRow();
22
- if (this.type === 'header') {
23
- firstRow && firstRow.setAttribute('type', 'header');
17
+ const firstRow = getFirstRow(this.host);
18
+ if (this.type === TableRowgroupTypes.HEADER) {
19
+ firstRow && (firstRow.accordionType = TableAccordionRowTypes.HEADER);
24
20
  }
25
21
  else {
26
- firstRow && firstRow.setAttribute('type', 'parent');
22
+ firstRow && (firstRow.accordionType = TableAccordionRowTypes.PARENT);
27
23
  }
24
+ const children = getRemainingRows(this.host);
25
+ children &&
26
+ children.forEach(child => {
27
+ child.accordionType = TableAccordionRowTypes.CHILD;
28
+ });
29
+ };
30
+ this.addCheckboxColumn = () => {
31
+ const children = getAllRows(this.host);
32
+ children.forEach(child => (child.selectable = true));
28
33
  };
29
34
  this.toggleInitialVisibility = () => {
30
- const firstRow = this.getFirstRow();
35
+ const firstRow = getFirstRow(this.host);
31
36
  (async () => {
32
37
  firstRow && (await firstRow.toggleAccordion(this.opened));
33
38
  })();
34
39
  };
35
40
  this.toggleChildRowVisibility = (isOpen) => {
36
- const children = this.getRemainingRows();
41
+ const children = getRemainingRows(this.host);
37
42
  if (isOpen) {
38
43
  children.forEach(child => {
39
44
  child.style.visibility = 'visible';
@@ -47,13 +52,47 @@ export class TableRowgroupComponent {
47
52
  };
48
53
  this.type = TableRowgroupTypes.HEADER;
49
54
  this.accordion = false;
55
+ this.selectable = false;
50
56
  this.opened = false;
57
+ this.selectedValues = [];
58
+ this.indeterminate = false;
51
59
  }
52
60
  handleOpenChange(event) {
53
61
  this.toggleChildRowVisibility(event.detail);
54
62
  }
63
+ handleSelectedChange(event) {
64
+ var _a;
65
+ const target = event.target;
66
+ const table = this.host.closest('b2b-table');
67
+ const parentValue = (_a = getFirstRow(this.host).value) !== null && _a !== void 0 ? _a : 'header';
68
+ if (this.accordion &&
69
+ target.accordionType === TableAccordionRowTypes.PARENT) {
70
+ const children = getRemainingRows(this.host);
71
+ this.toggleSelectAll(event, children);
72
+ }
73
+ else if (this.type === TableRowgroupTypes.HEADER) {
74
+ const children = getRemainingRows(table);
75
+ this.toggleSelectAll(event, children);
76
+ }
77
+ else {
78
+ if (event.target.checked) {
79
+ this.selectedValues = [event.target.value, ...this.selectedValues];
80
+ }
81
+ else {
82
+ this.selectedValues = this.selectedValues.filter(el => el !== event.target.value);
83
+ }
84
+ }
85
+ if (this.accordion) {
86
+ updateCheckboxState(getRemainingRows(this.host), getFirstRow(this.host));
87
+ this.b2bSelect.emit({
88
+ group: parentValue,
89
+ values: this.selectedValues,
90
+ });
91
+ }
92
+ updateCheckboxState(getRemainingRows(table), getFirstRow(table));
93
+ }
55
94
  makeHeaderRowNotSelectable() {
56
- const firstRow = this.getFirstRow();
95
+ const firstRow = getFirstRow(this.host);
57
96
  if (this.type === TableRowgroupTypes.HEADER) {
58
97
  firstRow.setAttribute('highlight', 'false');
59
98
  }
@@ -63,13 +102,16 @@ export class TableRowgroupComponent {
63
102
  this.addAccordionControlColumn();
64
103
  this.toggleInitialVisibility();
65
104
  }
105
+ if (this.selectable) {
106
+ this.addCheckboxColumn();
107
+ }
66
108
  }
67
109
  componentDidRender() {
68
110
  this.makeHeaderRowNotSelectable();
69
111
  }
70
112
  render() {
71
113
  return (h(Host, { class: {
72
- ['b2b-table-rowgroup--' + this.type]: true,
114
+ ['b2b-table-rowgroup__' + this.type]: true,
73
115
  }, role: "rowgroup" }, h("slot", null)));
74
116
  }
75
117
  static get is() { return "b2b-table-rowgroup"; }
@@ -95,7 +137,7 @@ export class TableRowgroupComponent {
95
137
  "references": {
96
138
  "TableRowgroupTypes": {
97
139
  "location": "import",
98
- "path": "../types"
140
+ "path": "../../../utils/types/table.types"
99
141
  }
100
142
  }
101
143
  },
@@ -127,6 +169,24 @@ export class TableRowgroupComponent {
127
169
  "reflect": false,
128
170
  "defaultValue": "false"
129
171
  },
172
+ "selectable": {
173
+ "type": "boolean",
174
+ "mutable": false,
175
+ "complexType": {
176
+ "original": "boolean",
177
+ "resolved": "boolean",
178
+ "references": {}
179
+ },
180
+ "required": false,
181
+ "optional": false,
182
+ "docs": {
183
+ "tags": [],
184
+ "text": "If the rows in the rowgroup can be selected via checkmark. Per default, it is false."
185
+ },
186
+ "attribute": "selectable",
187
+ "reflect": false,
188
+ "defaultValue": "false"
189
+ },
130
190
  "opened": {
131
191
  "type": "boolean",
132
192
  "mutable": false,
@@ -147,6 +207,35 @@ export class TableRowgroupComponent {
147
207
  }
148
208
  };
149
209
  }
210
+ static get states() {
211
+ return {
212
+ "selectedValues": {},
213
+ "indeterminate": {}
214
+ };
215
+ }
216
+ static get events() {
217
+ return [{
218
+ "method": "b2bSelect",
219
+ "name": "b2b-group-selected",
220
+ "bubbles": true,
221
+ "cancelable": true,
222
+ "composed": true,
223
+ "docs": {
224
+ "tags": [],
225
+ "text": "Emits when the rowgroup as a whole is selected."
226
+ },
227
+ "complexType": {
228
+ "original": "TableAccordionSelectedEventDetail",
229
+ "resolved": "TableAccordionSelectedEventDetail",
230
+ "references": {
231
+ "TableAccordionSelectedEventDetail": {
232
+ "location": "import",
233
+ "path": "../../../utils/interfaces/content.interface"
234
+ }
235
+ }
236
+ }
237
+ }];
238
+ }
150
239
  static get elementRef() { return "host"; }
151
240
  static get listeners() {
152
241
  return [{
@@ -155,6 +244,12 @@ export class TableRowgroupComponent {
155
244
  "target": undefined,
156
245
  "capture": false,
157
246
  "passive": false
247
+ }, {
248
+ "name": "b2b-row-selected",
249
+ "method": "handleSelectedChange",
250
+ "target": undefined,
251
+ "capture": false,
252
+ "passive": false
158
253
  }];
159
254
  }
160
255
  }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Do not edit directly
3
- * Generated on Tue, 13 Jun 2023 14:44:02 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 */
@@ -76,8 +76,7 @@
76
76
  --b2b-size-copy-200: var(--b2b-size-45);
77
77
  --b2b-size-copy-125: var(--b2b-size-40);
78
78
  --b2b-size-copy-100: var(--b2b-size-35);
79
- --b2b-size-copy-75: var(--b2b-size-30);
80
- --b2b-size-copy-50: var(--b2b-size-25);
79
+ --b2b-size-copy-50: var(--b2b-size-30);
81
80
  --b2b-size-border-no-radius-bottom: var(--b2b-size-7) var(--b2b-size-7) 0 0;
82
81
  --b2b-size-border-no-radius-top: 0 0 var(--b2b-size-7) var(--b2b-size-7);
83
82
  --b2b-size-border-no-radius-right: var(--b2b-size-7) 0 0 var(--b2b-size-7);
@@ -123,7 +122,7 @@
123
122
  }
124
123
  /**
125
124
  * Do not edit directly
126
- * Generated on Tue, 13 Jun 2023 14:44:02 GMT
125
+ * Generated on Tue, 22 Aug 2023 11:28:34 GMT
127
126
  */
128
127
  :root [data-theme="dark"] {
129
128
  --b2b-size-200: 5rem; /* 80px */
@@ -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
+ });
@@ -1,9 +1,17 @@
1
1
  import { h, Host, } from '@stencil/core';
2
- import { TableSizes, TableSortDirections } from './types';
2
+ import { TableSizes, TableSortDirections } from '../../utils/types/table.types';
3
3
  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,
@@ -66,7 +66,7 @@ export class TableComponent {
66
66
  "references": {
67
67
  "TableSizes": {
68
68
  "location": "import",
69
- "path": "./types"
69
+ "path": "../../utils/types/table.types"
70
70
  }
71
71
  }
72
72
  },