playbook_ui 18.3.0.pre.alpha.PLAY3342advancedtablereactmulticolumnselectablerow21082 → 18.3.0.pre.alpha.PLAY3353ATselectall20974

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 (244) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/SubKits/TableHeader.tsx +66 -74
  3. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +0 -7
  4. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +0 -49
  5. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_multi.md +3 -1
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows.jsx +58 -177
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/_playground.json +1 -7
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +0 -1
  9. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +0 -1
  10. data/app/pb_kits/playbook/pb_advanced_table/kit.schema.json +16 -36
  11. data/app/pb_kits/playbook/pb_avatar/kit.schema.json +10 -22
  12. data/app/pb_kits/playbook/pb_background/docs/_playground.json +0 -1
  13. data/app/pb_kits/playbook/pb_background/kit.schema.json +3 -10
  14. data/app/pb_kits/playbook/pb_badge/docs/_playground.json +0 -2
  15. data/app/pb_kits/playbook/pb_badge/kit.schema.json +13 -27
  16. data/app/pb_kits/playbook/pb_body/docs/_playground.json +3 -3
  17. data/app/pb_kits/playbook/pb_body/kit.schema.json +5 -14
  18. data/app/pb_kits/playbook/pb_button/_button.tsx +1 -3
  19. data/app/pb_kits/playbook/pb_button/button.rb +0 -3
  20. data/app/pb_kits/playbook/pb_button/button.test.js +0 -154
  21. data/app/pb_kits/playbook/pb_button/docs/_playground.json +2 -4
  22. data/app/pb_kits/playbook/pb_button/docs/_playground.overrides.json +1 -1
  23. data/app/pb_kits/playbook/pb_button/docs/example.yml +1 -1
  24. data/app/pb_kits/playbook/pb_button/kit.schema.json +27 -31
  25. data/app/pb_kits/playbook/pb_caption/kit.schema.json +7 -17
  26. data/app/pb_kits/playbook/pb_card/docs/_playground.json +0 -1
  27. data/app/pb_kits/playbook/pb_card/kit.schema.json +1 -2
  28. data/app/pb_kits/playbook/pb_checkbox/docs/_playground.json +1 -6
  29. data/app/pb_kits/playbook/pb_checkbox/kit.schema.json +5 -10
  30. data/app/pb_kits/playbook/pb_contact/docs/_playground.json +0 -1
  31. data/app/pb_kits/playbook/pb_contact/kit.schema.json +1 -2
  32. data/app/pb_kits/playbook/pb_copy_button/docs/_playground.json +1 -5
  33. data/app/pb_kits/playbook/pb_copy_button/kit.schema.json +5 -10
  34. data/app/pb_kits/playbook/pb_currency/docs/_playground.json +1 -1
  35. data/app/pb_kits/playbook/pb_currency/kit.schema.json +2 -6
  36. data/app/pb_kits/playbook/pb_dashboard_value/docs/_playground.json +2 -2
  37. data/app/pb_kits/playbook/pb_dashboard_value/kit.schema.json +2 -4
  38. data/app/pb_kits/playbook/pb_date/docs/_playground.json +0 -1
  39. data/app/pb_kits/playbook/pb_date/kit.schema.json +7 -16
  40. data/app/pb_kits/playbook/pb_date_picker/docs/_playground.json +1 -4
  41. data/app/pb_kits/playbook/pb_date_picker/kit.schema.json +14 -32
  42. data/app/pb_kits/playbook/pb_date_range_inline/docs/_playground.json +0 -1
  43. data/app/pb_kits/playbook/pb_date_range_inline/kit.schema.json +1 -2
  44. data/app/pb_kits/playbook/pb_date_time/docs/_playground.json +1 -2
  45. data/app/pb_kits/playbook/pb_date_time/kit.schema.json +1 -2
  46. data/app/pb_kits/playbook/pb_date_time_stacked/docs/_playground.json +0 -1
  47. data/app/pb_kits/playbook/pb_date_time_stacked/kit.schema.json +1 -2
  48. data/app/pb_kits/playbook/pb_detail/docs/_playground.json +1 -2
  49. data/app/pb_kits/playbook/pb_detail/kit.schema.json +1 -2
  50. data/app/pb_kits/playbook/pb_dialog/docs/_playground.json +1 -1
  51. data/app/pb_kits/playbook/pb_dialog/kit.schema.json +9 -22
  52. data/app/pb_kits/playbook/pb_distribution_bar/docs/_playground.json +2 -2
  53. data/app/pb_kits/playbook/pb_distribution_bar/kit.schema.json +1 -2
  54. data/app/pb_kits/playbook/pb_dropdown/docs/_playground.json +2 -7
  55. data/app/pb_kits/playbook/pb_dropdown/kit.schema.json +8 -18
  56. data/app/pb_kits/playbook/pb_empty_state/docs/_playground.json +1 -1
  57. data/app/pb_kits/playbook/pb_empty_state/kit.schema.json +1 -2
  58. data/app/pb_kits/playbook/pb_file_upload/docs/_playground.json +2 -3
  59. data/app/pb_kits/playbook/pb_file_upload/kit.schema.json +3 -8
  60. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_playground.json +4 -4
  61. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/kit.schema.json +3 -6
  62. data/app/pb_kits/playbook/pb_flex/docs/_playground.json +0 -3
  63. data/app/pb_kits/playbook/pb_flex/kit.schema.json +12 -27
  64. data/app/pb_kits/playbook/pb_form/kit.schema.json +6 -1
  65. data/app/pb_kits/playbook/pb_form_pill/docs/_playground.json +0 -3
  66. data/app/pb_kits/playbook/pb_form_pill/kit.schema.json +3 -6
  67. data/app/pb_kits/playbook/pb_full_screen/docs/_playground.json +3 -3
  68. data/app/pb_kits/playbook/pb_full_screen/kit.schema.json +4 -8
  69. data/app/pb_kits/playbook/pb_hashtag/docs/_playground.json +2 -2
  70. data/app/pb_kits/playbook/pb_hashtag/kit.schema.json +1 -2
  71. data/app/pb_kits/playbook/pb_highlight/kit.schema.json +1 -2
  72. data/app/pb_kits/playbook/pb_icon/docs/_playground.json +2 -2
  73. data/app/pb_kits/playbook/pb_icon/kit.schema.json +13 -30
  74. data/app/pb_kits/playbook/pb_icon_circle/docs/_playground.json +2 -2
  75. data/app/pb_kits/playbook/pb_icon_circle/kit.schema.json +1 -2
  76. data/app/pb_kits/playbook/pb_icon_stat_value/docs/_playground.json +2 -3
  77. data/app/pb_kits/playbook/pb_icon_stat_value/kit.schema.json +2 -4
  78. data/app/pb_kits/playbook/pb_image/_image.tsx +2 -2
  79. data/app/pb_kits/playbook/pb_image/docs/_playground.json +27 -27
  80. data/app/pb_kits/playbook/pb_image/kit.schema.json +24 -56
  81. data/app/pb_kits/playbook/pb_label_value/docs/_playground.json +2 -2
  82. data/app/pb_kits/playbook/pb_label_value/kit.schema.json +1 -2
  83. data/app/pb_kits/playbook/pb_layout/docs/_playground.json +2 -2
  84. data/app/pb_kits/playbook/pb_layout/kit.schema.json +20 -43
  85. data/app/pb_kits/playbook/pb_legend/docs/_playground.json +2 -2
  86. data/app/pb_kits/playbook/pb_legend/kit.schema.json +1 -2
  87. data/app/pb_kits/playbook/pb_lightbox/_lightbox.tsx +2 -2
  88. data/app/pb_kits/playbook/pb_link/docs/_playground.json +3 -6
  89. data/app/pb_kits/playbook/pb_link/kit.schema.json +6 -14
  90. data/app/pb_kits/playbook/pb_list/docs/_playground.json +2 -2
  91. data/app/pb_kits/playbook/pb_list/kit.schema.json +1 -2
  92. data/app/pb_kits/playbook/pb_loading_inline/docs/_playground.json +1 -0
  93. data/app/pb_kits/playbook/pb_loading_inline/kit.schema.json +1 -4
  94. data/app/pb_kits/playbook/pb_map/kit.schema.json +6 -4
  95. data/app/pb_kits/playbook/pb_message/kit.schema.json +1 -2
  96. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +1 -4
  97. data/app/pb_kits/playbook/pb_multiple_users/docs/_playground.json +1 -2
  98. data/app/pb_kits/playbook/pb_multiple_users/kit.schema.json +11 -19
  99. data/app/pb_kits/playbook/pb_multiple_users_stacked/docs/_playground.json +0 -1
  100. data/app/pb_kits/playbook/pb_multiple_users_stacked/kit.schema.json +1 -2
  101. data/app/pb_kits/playbook/pb_nav/docs/_playground.json +0 -2
  102. data/app/pb_kits/playbook/pb_nav/kit.schema.json +2 -4
  103. data/app/pb_kits/playbook/pb_overlay/docs/_playground.json +3 -3
  104. data/app/pb_kits/playbook/pb_overlay/kit.schema.json +12 -22
  105. data/app/pb_kits/playbook/pb_pagination/kit.schema.json +3 -6
  106. data/app/pb_kits/playbook/pb_passphrase/docs/_playground.json +4 -6
  107. data/app/pb_kits/playbook/pb_passphrase/kit.schema.json +5 -10
  108. data/app/pb_kits/playbook/pb_pb_gauge_chart/kit.schema.json +1 -2
  109. data/app/pb_kits/playbook/pb_person_contact/docs/_playground.json +3 -3
  110. data/app/pb_kits/playbook/pb_person_contact/kit.schema.json +1 -2
  111. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_validation.html.erb +1 -1
  112. data/app/pb_kits/playbook/pb_phone_number_input/docs/_playground.json +0 -3
  113. data/app/pb_kits/playbook/pb_phone_number_input/kit.schema.json +3 -6
  114. data/app/pb_kits/playbook/pb_popover/docs/_playground.json +2 -1
  115. data/app/pb_kits/playbook/pb_popover/kit.schema.json +9 -18
  116. data/app/pb_kits/playbook/pb_progress_pills/docs/_playground.json +0 -1
  117. data/app/pb_kits/playbook/pb_progress_pills/kit.schema.json +1 -2
  118. data/app/pb_kits/playbook/pb_progress_simple/docs/_playground.json +2 -3
  119. data/app/pb_kits/playbook/pb_progress_simple/kit.schema.json +2 -4
  120. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_playground.json +2 -9
  121. data/app/pb_kits/playbook/pb_rich_text_editor/kit.schema.json +9 -18
  122. data/app/pb_kits/playbook/pb_selectable_card/docs/_playground.json +0 -1
  123. data/app/pb_kits/playbook/pb_selectable_card/kit.schema.json +2 -4
  124. data/app/pb_kits/playbook/pb_selectable_card_icon/docs/_playground.json +0 -1
  125. data/app/pb_kits/playbook/pb_selectable_card_icon/kit.schema.json +1 -2
  126. data/app/pb_kits/playbook/pb_source/docs/_playground.json +0 -1
  127. data/app/pb_kits/playbook/pb_source/kit.schema.json +1 -2
  128. data/app/pb_kits/playbook/pb_star_rating/docs/_playground.json +0 -1
  129. data/app/pb_kits/playbook/pb_star_rating/kit.schema.json +7 -15
  130. data/app/pb_kits/playbook/pb_stat_change/docs/_playground.json +0 -1
  131. data/app/pb_kits/playbook/pb_stat_change/kit.schema.json +1 -2
  132. data/app/pb_kits/playbook/pb_stat_value/docs/_playground.json +1 -3
  133. data/app/pb_kits/playbook/pb_stat_value/kit.schema.json +1 -2
  134. data/app/pb_kits/playbook/pb_table/docs/_playground.json +1 -5
  135. data/app/pb_kits/playbook/pb_table/kit.schema.json +11 -28
  136. data/app/pb_kits/playbook/pb_text_input/docs/_playground.json +0 -3
  137. data/app/pb_kits/playbook/pb_text_input/kit.schema.json +9 -22
  138. data/app/pb_kits/playbook/pb_textarea/_textarea.tsx +1 -4
  139. data/app/pb_kits/playbook/pb_time/kit.schema.json +5 -13
  140. data/app/pb_kits/playbook/pb_time_picker/docs/_playground.json +0 -1
  141. data/app/pb_kits/playbook/pb_time_picker/kit.schema.json +1 -2
  142. data/app/pb_kits/playbook/pb_time_range_inline/kit.schema.json +5 -12
  143. data/app/pb_kits/playbook/pb_title/kit.schema.json +10 -23
  144. data/app/pb_kits/playbook/pb_title_count/docs/_playground.json +0 -1
  145. data/app/pb_kits/playbook/pb_title_count/kit.schema.json +1 -2
  146. data/app/pb_kits/playbook/pb_tooltip/docs/_playground.json +1 -5
  147. data/app/pb_kits/playbook/pb_tooltip/kit.schema.json +5 -10
  148. data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +1 -4
  149. data/app/pb_kits/playbook/pb_user/docs/_playground.json +1 -3
  150. data/app/pb_kits/playbook/pb_user/kit.schema.json +9 -19
  151. data/app/pb_kits/playbook/pb_weekday_stacked/docs/_playground.json +0 -1
  152. data/app/pb_kits/playbook/pb_weekday_stacked/kit.schema.json +1 -2
  153. data/dist/ai/all-schemas.json +374 -869
  154. data/dist/ai/forms.json +1 -1
  155. data/dist/ai/index.json +2 -10
  156. data/dist/ai/kits/advanced_table.schema.json +16 -36
  157. data/dist/ai/kits/avatar.schema.json +9 -21
  158. data/dist/ai/kits/background.schema.json +3 -10
  159. data/dist/ai/kits/badge.schema.json +12 -26
  160. data/dist/ai/kits/body.schema.json +5 -14
  161. data/dist/ai/kits/button.schema.json +25 -29
  162. data/dist/ai/kits/caption.schema.json +7 -17
  163. data/dist/ai/kits/card.schema.json +1 -2
  164. data/dist/ai/kits/checkbox.schema.json +5 -10
  165. data/dist/ai/kits/contact.schema.json +1 -2
  166. data/dist/ai/kits/copy_button.schema.json +5 -10
  167. data/dist/ai/kits/currency.schema.json +2 -6
  168. data/dist/ai/kits/dashboard_value.schema.json +2 -4
  169. data/dist/ai/kits/date.schema.json +6 -15
  170. data/dist/ai/kits/date_picker.schema.json +13 -31
  171. data/dist/ai/kits/date_range_inline.schema.json +1 -2
  172. data/dist/ai/kits/date_time.schema.json +1 -2
  173. data/dist/ai/kits/date_time_stacked.schema.json +1 -2
  174. data/dist/ai/kits/detail.schema.json +1 -2
  175. data/dist/ai/kits/dialog.schema.json +9 -22
  176. data/dist/ai/kits/distribution_bar.schema.json +1 -2
  177. data/dist/ai/kits/dropdown.schema.json +8 -18
  178. data/dist/ai/kits/empty_state.schema.json +1 -2
  179. data/dist/ai/kits/file_upload.schema.json +3 -8
  180. data/dist/ai/kits/fixed_confirmation_toast.schema.json +3 -6
  181. data/dist/ai/kits/flex.schema.json +12 -27
  182. data/dist/ai/kits/form.schema.json +6 -1
  183. data/dist/ai/kits/form_pill.schema.json +3 -6
  184. data/dist/ai/kits/full_screen.schema.json +4 -8
  185. data/dist/ai/kits/hashtag.schema.json +1 -2
  186. data/dist/ai/kits/highlight.schema.json +1 -2
  187. data/dist/ai/kits/icon.schema.json +13 -30
  188. data/dist/ai/kits/icon_circle.schema.json +1 -2
  189. data/dist/ai/kits/icon_stat_value.schema.json +2 -4
  190. data/dist/ai/kits/image.schema.json +24 -56
  191. data/dist/ai/kits/label_value.schema.json +1 -2
  192. data/dist/ai/kits/layout.schema.json +20 -43
  193. data/dist/ai/kits/legend.schema.json +1 -2
  194. data/dist/ai/kits/link.schema.json +6 -14
  195. data/dist/ai/kits/list.schema.json +1 -2
  196. data/dist/ai/kits/loading_inline.schema.json +1 -4
  197. data/dist/ai/kits/map.schema.json +7 -4
  198. data/dist/ai/kits/message.schema.json +1 -2
  199. data/dist/ai/kits/multiple_users.schema.json +11 -19
  200. data/dist/ai/kits/multiple_users_stacked.schema.json +1 -2
  201. data/dist/ai/kits/nav.schema.json +2 -4
  202. data/dist/ai/kits/overlay.schema.json +12 -22
  203. data/dist/ai/kits/pagination.schema.json +3 -6
  204. data/dist/ai/kits/passphrase.schema.json +5 -10
  205. data/dist/ai/kits/pb_gauge_chart.schema.json +1 -2
  206. data/dist/ai/kits/person_contact.schema.json +1 -2
  207. data/dist/ai/kits/phone_number_input.schema.json +3 -6
  208. data/dist/ai/kits/popover.schema.json +8 -17
  209. data/dist/ai/kits/progress_pills.schema.json +1 -2
  210. data/dist/ai/kits/progress_simple.schema.json +2 -4
  211. data/dist/ai/kits/rich_text_editor.schema.json +9 -18
  212. data/dist/ai/kits/selectable_card.schema.json +2 -4
  213. data/dist/ai/kits/selectable_card_icon.schema.json +1 -2
  214. data/dist/ai/kits/source.schema.json +1 -2
  215. data/dist/ai/kits/star_rating.schema.json +7 -15
  216. data/dist/ai/kits/stat_change.schema.json +1 -2
  217. data/dist/ai/kits/stat_value.schema.json +1 -2
  218. data/dist/ai/kits/table.schema.json +11 -28
  219. data/dist/ai/kits/text_input.schema.json +9 -22
  220. data/dist/ai/kits/time.schema.json +4 -12
  221. data/dist/ai/kits/time_picker.schema.json +1 -2
  222. data/dist/ai/kits/time_range_inline.schema.json +5 -12
  223. data/dist/ai/kits/title.schema.json +10 -23
  224. data/dist/ai/kits/title_count.schema.json +1 -2
  225. data/dist/ai/kits/tooltip.schema.json +5 -10
  226. data/dist/ai/kits/user.schema.json +9 -19
  227. data/dist/ai/kits/weekday_stacked.schema.json +1 -2
  228. data/dist/ai/visual-index.json +1 -1
  229. data/dist/chunks/{_typeahead-CkiAf8zx.js → _typeahead-C3MN3apM.js} +1 -1
  230. data/dist/chunks/vendor.js +2 -2
  231. data/dist/menu.yml +1 -1
  232. data/dist/playbook-rails-react-bindings.js +1 -1
  233. data/dist/playbook-rails.js +1 -1
  234. data/dist/playbook.css +1 -1
  235. data/lib/playbook/changelog_generator.rb +21 -47
  236. data/lib/playbook/connect_message_generator.rb +2 -15
  237. data/lib/playbook/version.rb +1 -1
  238. metadata +2 -8
  239. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_multi_select_all.jsx +0 -82
  240. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_multi_select_all.md +0 -3
  241. data/app/pb_kits/playbook/pb_button/docs/_button_options_rails.md +0 -5
  242. data/app/pb_kits/playbook/pb_button/docs/_button_options_react.md +0 -9
  243. data/app/pb_kits/playbook/pb_lightbox/kit.schema.json +0 -84
  244. data/dist/ai/kits/lightbox.schema.json +0 -86
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 106354f9d720a7693c85b275f1de67cb17a21e3e28f28f90a758ee9b19942367
4
- data.tar.gz: 9a5fbcd069bdaf722663195395f810d351e72e322a527e0157d666609363cc60
3
+ metadata.gz: f9b4809fd0eaae6c78ca3e4974fcabf0c17d94bab7faa4135164e4361aa4ea62
4
+ data.tar.gz: f5bd947efc3cb866c9482b95335493a56ab2b18c029cc90cd9b8329b661d1314
5
5
  SHA512:
6
- metadata.gz: 8a13eb3272cf0c06bb2defa816ca14a48f2cb2fffd1185516f6ff40556fab6e9c9766d3929929680ea18511efc952ebefa5a1d836e554c99df384a1d9ef88ea4
7
- data.tar.gz: d754688073c058e93739e273d4f6d8f54fa26f5a86869c7e764a3dddfb492f6c63efb86b914b6d9d45424f859e0996269f416b8ab38411268a8b89b23b17915c
6
+ metadata.gz: ba18f2d83a5827bdb20795ad4e9212b1d1c4c17c0dcf5acf5f0962454d1541e93f84eaa05ddac530b755afaed46fefed09c06b1d1f81b6fb4b62e5520de036ba
7
+ data.tar.gz: a40e05d0bf5d74b2e58932249fca3b9087a8bf18360ce3fda60e63afaa05af9c31dd0124671ac04707ef00b0e631d4151fa1d227b9aa19b32917fd6ccaa235e1
@@ -92,55 +92,43 @@ export const TableHeader = ({
92
92
  </tr>
93
93
  ))
94
94
 
95
- // Empty checkbox-column cell on upper multi-header rows; checkbox only on the lowest row.
96
- const renderSelectableHeaderCell = (
97
- isLowestHeaderRow: boolean,
98
- extraClassName?: string
99
- ) => (
100
- <th className={classnames(customCellClassnames, "checkbox-cell-header", extraClassName)}>
101
- {isLowestHeaderRow ? (
102
- <Checkbox
103
- checked={table?.getIsAllRowsSelected()}
104
- indeterminate={table?.getIsSomeRowsSelected()}
105
- onChange={table?.getToggleAllRowsSelectedHandler()}
106
- />
107
- ) : null}
108
- </th>
109
- )
110
-
111
95
  const renderRegularTableHeader = () => (
112
96
  <thead className={classes}
113
97
  id={id}
114
98
  ref={headerRef}
115
99
  >
116
100
  {renderSpacerRows()}
117
- {table.getHeaderGroups().map((headerGroup: HeaderGroup<GenericObject>, headerGroupIndex: number, headerGroups: HeaderGroup<GenericObject>[]) => {
118
- const isLowestHeaderRow = headerGroupIndex === headerGroups.length - 1
119
-
120
- return (
121
- <tr key={`${headerGroup.id}-headerGroup`}>
122
- {!hasAnySubRows && selectableRows && renderSelectableHeaderCell(isLowestHeaderRow)}
123
- {headerGroup.headers.map(header => {
124
- const isPinnedLeft = columnPinning.left.includes(header.id)
125
- return (
126
- <TableHeaderCell
127
- enableSorting={enableSorting}
128
- enableToggleExpansion={enableToggleExpansion}
129
- handleExpandOrCollapse={handleExpandOrCollapse}
130
- header={header}
131
- headerChildren={children}
132
- isPinnedLeft={isPinnedLeft}
133
- key={`${header.id}-header`}
134
- loading={loading}
135
- persistToggleExpansionButton={persistToggleExpansionButton}
136
- sortIcon={sortIcon}
137
- table={table}
138
- />
139
- )
140
- })}
141
- </tr>
142
- )
143
- })}
101
+ {table.getHeaderGroups().map((headerGroup: HeaderGroup<GenericObject>) => (
102
+ <tr key={`${headerGroup.id}-headerGroup`}>
103
+ {!hasAnySubRows && selectableRows && (
104
+ <th className={customCellClassnames}>
105
+ <Checkbox
106
+ checked={table?.getIsAllRowsSelected()}
107
+ indeterminate={table?.getIsSomeRowsSelected()}
108
+ onChange={table?.getToggleAllRowsSelectedHandler()}
109
+ />
110
+ </th>
111
+ )}
112
+ {headerGroup.headers.map(header => {
113
+ const isPinnedLeft = columnPinning.left.includes(header.id)
114
+ return (
115
+ <TableHeaderCell
116
+ enableSorting={enableSorting}
117
+ enableToggleExpansion={enableToggleExpansion}
118
+ handleExpandOrCollapse={handleExpandOrCollapse}
119
+ header={header}
120
+ headerChildren={children}
121
+ isPinnedLeft={isPinnedLeft}
122
+ key={`${header.id}-header`}
123
+ loading={loading}
124
+ persistToggleExpansionButton={persistToggleExpansionButton}
125
+ sortIcon={sortIcon}
126
+ table={table}
127
+ />
128
+ )
129
+ })}
130
+ </tr>
131
+ ))}
144
132
  </thead>
145
133
  );
146
134
 
@@ -152,37 +140,41 @@ export const TableHeader = ({
152
140
  ref={headerRef}
153
141
  >
154
142
  {renderSpacerRows("virtualized-header-row-header")}
155
- {table.getHeaderGroups().map((headerGroup: HeaderGroup<GenericObject>, headerGroupIndex: number, headerGroups: HeaderGroup<GenericObject>[]) => {
156
- const isLowestHeaderRow = headerGroupIndex === headerGroups.length - 1
157
-
158
- return (
159
- <tr
160
- className="virtualized-header-row-header"
161
- key={`${headerGroup.id}-headerGroup-virtualized`}
162
- >
163
- {!hasAnySubRows && selectableRows && renderSelectableHeaderCell(isLowestHeaderRow, "virtualized-header-cell")}
164
- {headerGroup.headers.map(header => {
165
- const isPinnedLeft = columnPinning.left.includes(header.id)
166
- return (
167
- <TableHeaderCell
168
- enableSorting={enableSorting}
169
- enableToggleExpansion={enableToggleExpansion}
170
- handleExpandOrCollapse={handleExpandOrCollapse}
171
- header={header}
172
- headerChildren={children}
173
- isPinnedLeft={isPinnedLeft}
174
- isVirtualized
175
- key={`${header.id}-header-virtualized`}
176
- loading={loading}
177
- persistToggleExpansionButton={persistToggleExpansionButton}
178
- sortIcon={sortIcon}
179
- table={table}
180
- />
181
- )
182
- })}
183
- </tr>
184
- )
185
- })}
143
+ {table.getHeaderGroups().map((headerGroup: HeaderGroup<GenericObject>) => (
144
+ <tr
145
+ className="virtualized-header-row-header"
146
+ key={`${headerGroup.id}-headerGroup-virtualized`}
147
+ >
148
+ {!hasAnySubRows && selectableRows && (
149
+ <th className={classnames(customCellClassnames, "virtualized-header-cell")}>
150
+ <Checkbox
151
+ checked={table?.getIsAllRowsSelected()}
152
+ indeterminate={table?.getIsSomeRowsSelected()}
153
+ onChange={table?.getToggleAllRowsSelectedHandler()}
154
+ />
155
+ </th>
156
+ )}
157
+ {headerGroup.headers.map(header => {
158
+ const isPinnedLeft = columnPinning.left.includes(header.id)
159
+ return (
160
+ <TableHeaderCell
161
+ enableSorting={enableSorting}
162
+ enableToggleExpansion={enableToggleExpansion}
163
+ handleExpandOrCollapse={handleExpandOrCollapse}
164
+ header={header}
165
+ headerChildren={children}
166
+ isPinnedLeft={isPinnedLeft}
167
+ isVirtualized
168
+ key={`${header.id}-header-virtualized`}
169
+ loading={loading}
170
+ persistToggleExpansionButton={persistToggleExpansionButton}
171
+ sortIcon={sortIcon}
172
+ table={table}
173
+ />
174
+ )
175
+ })}
176
+ </tr>
177
+ ))}
186
178
  </thead>
187
179
  );
188
180
  return (
@@ -296,13 +296,6 @@
296
296
  .pb_tooltip_kit {
297
297
  font-weight: unset;
298
298
  text-transform: unset;
299
-
300
- .tooltip_tooltip {
301
- font-size: initial;
302
- font-weight: normal;
303
- letter-spacing: normal;
304
- text-transform: none;
305
- }
306
299
  }
307
300
  }
308
301
 
@@ -1521,55 +1521,6 @@ test("single header row does not mark every column as last-header-cell", () => {
1521
1521
  expect(kit.querySelector("tbody td.last-cell")).not.toBeInTheDocument()
1522
1522
  })
1523
1523
 
1524
- const selectableMultiHeaderData = MOCK_DATA_NO_SUBROWS.map((row, index) => ({
1525
- ...row,
1526
- id: String(index + 1),
1527
- }))
1528
-
1529
- test("multi-column selectable headers keep one select-all checkbox on the lowest header row", () => {
1530
- render(
1531
- <AdvancedTable
1532
- columnDefinitions={groupedColumnDefinitions}
1533
- data={{ testid: testId }}
1534
- enableToggleExpansion="none"
1535
- selectableRows
1536
- tableData={selectableMultiHeaderData}
1537
- />
1538
- )
1539
-
1540
- const kit = screen.getByTestId(testId)
1541
- const headerRows = kit.querySelectorAll("thead tr")
1542
- const checkboxHeaderCells = kit.querySelectorAll("thead th.checkbox-cell-header")
1543
- const headerCheckboxes = kit.querySelectorAll("thead th.checkbox-cell-header input[type='checkbox']")
1544
-
1545
- expect(headerRows.length).toBeGreaterThan(1)
1546
- expect(checkboxHeaderCells).toHaveLength(headerRows.length)
1547
- expect(headerCheckboxes).toHaveLength(1)
1548
-
1549
- const lowestHeaderRow = headerRows[headerRows.length - 1]
1550
- expect(lowestHeaderRow.querySelector("th.checkbox-cell-header input[type='checkbox']")).toBeInTheDocument()
1551
- expect(headerRows[0].querySelector("th.checkbox-cell-header input[type='checkbox']")).not.toBeInTheDocument()
1552
- })
1553
-
1554
- test("single-header selectable rows still render one select-all checkbox", () => {
1555
- render(
1556
- <AdvancedTable
1557
- columnDefinitions={columnDefinitions}
1558
- data={{ testid: testId }}
1559
- enableToggleExpansion="none"
1560
- selectableRows
1561
- tableData={selectableMultiHeaderData}
1562
- />
1563
- )
1564
-
1565
- const kit = screen.getByTestId(testId)
1566
- const headerRows = kit.querySelectorAll("thead tr")
1567
- const headerCheckboxes = kit.querySelectorAll("thead th.checkbox-cell-header input[type='checkbox']")
1568
-
1569
- expect(headerRows).toHaveLength(1)
1570
- expect(headerCheckboxes).toHaveLength(1)
1571
- })
1572
-
1573
1524
  const visibilityColumnDefinitions = [
1574
1525
  {
1575
1526
  accessor: "year",
@@ -1 +1,3 @@
1
- The `columnVisibilityControl` prop can also be used with multi-header columns as shown.
1
+ The `columnVisibilityControl` prop can also be used with multi-header columns as shown.
2
+
3
+ `showSelectAll` updates every leaf column in the popover that can be hidden. Group checkboxes stay in sync with that selection. Hiding every column in a group keeps the subheader rows, so the table header does not collapse. With controlled state, persist `value` from the `onChange` updater so each leaf id stays stored.
@@ -1,179 +1,60 @@
1
- /* eslint-disable no-console */
2
1
  import React from "react"
3
2
  import AdvancedTable from '../../pb_advanced_table/_advanced_table'
4
- import Caption from '../../pb_caption/_caption'
5
- import Title from '../../pb_title/_title'
6
-
7
- const columnDefinitions = [
8
- {
9
- accessor: "year",
10
- label: "Year",
11
- cellAccessors: ["quarter", "month", "day"],
12
- },
13
- {
14
- label: "Enrollment Data",
15
- columns: [
16
- {
17
- label: "Enrollment Stats",
18
- columns: [
19
- { accessor: "newEnrollments", label: "New Enrollments" },
20
- { accessor: "scheduledMeetings", label: "Scheduled Meetings" },
21
- ],
22
- },
23
- ],
24
- },
25
- {
26
- label: "Performance Data",
27
- columns: [
28
- {
29
- label: "Completion Metrics",
30
- columns: [
31
- { accessor: "completedClasses", label: "Completed Classes" },
32
- { accessor: "classCompletionRate", label: "Class Completion Rate" },
33
- ],
34
- },
35
- {
36
- label: "Attendance",
37
- columns: [
38
- { accessor: "attendanceRate", label: "Attendance Rate" },
39
- { accessor: "graduatedStudents", label: "Graduated Students" },
40
- ],
41
- },
42
- ],
43
- },
44
- ]
45
-
46
- const subRowHeaders = ["Quarter", "Month", "Day"]
47
- const months = ["January", "April", "July", "October", "December"]
48
-
49
- const buildTableData = (tableId) => (
50
- Array.from({ length: 5 }, (_, index) => {
51
- const year = 2020 + index
52
-
53
- return {
54
- id: `${tableId}-${year}`,
55
- year: String(year),
56
- quarter: `Q${(index % 4) + 1}`,
57
- month: months[index],
58
- day: String(index + 1),
59
- newEnrollments: String(20 + index),
60
- scheduledMeetings: String(10 + index),
61
- attendanceRate: `${50 + index}%`,
62
- completedClasses: String(3 + index),
63
- classCompletionRate: `${30 + index}%`,
64
- graduatedStudents: String(19 + index),
65
- }
66
- })
67
- )
68
-
69
- const buildTableDataSubrows = (tableId) => (
70
- Array.from({ length: 5 }, (_, index) => {
71
- const year = 2020 + index
72
- const quarter = `Q${(index % 4) + 1}`
73
-
74
- return {
75
- id: `${tableId}-${year}`,
76
- year: String(year),
77
- quarter,
78
- month: months[index],
79
- day: String(index + 1),
80
- newEnrollments: String(20 + index),
81
- scheduledMeetings: String(10 + index),
82
- attendanceRate: `${50 + index}%`,
83
- completedClasses: String(3 + index),
84
- classCompletionRate: `${30 + index}%`,
85
- graduatedStudents: String(19 + index),
86
- children: [
87
- {
88
- id: `${tableId}-${year}-q${(index % 4) + 1}`,
89
- quarter,
90
- month: months[index],
91
- day: String(index + 1),
92
- },
93
- ],
94
- }
95
- })
96
- )
97
-
98
- const standardAllData = buildTableDataSubrows("standard_multi_column_all")
99
- const standardNoneData = buildTableData("standard_multi_column_none")
100
- const segmentedAllData = buildTableDataSubrows("segmented_multi_column_all")
101
- const segmentedNoneData = buildTableData("segmented_multi_column_none")
102
-
103
- const AdvancedTableSelectableRows = (props) => (
104
- <div>
105
- <Title
106
- marginBottom="sm"
107
- size={4}
108
- tag="h4"
109
- text="Standard AdvancedTable"
110
- />
111
-
112
- <Caption
113
- text="Multi-column headers with selectable rows and expandable subrows — Standard / Enable Toggle Expansion All"
114
- />
115
- <AdvancedTable
116
- columnDefinitions={columnDefinitions}
117
- enableToggleExpansion="all"
118
- marginBottom="md"
119
- onRowSelectionChange={(selectedRows) => console.log(selectedRows)}
120
- selectableRows
121
- subRowHeaders={subRowHeaders}
122
- tableData={standardAllData}
123
- {...props}
124
- />
125
-
126
- <Caption
127
- text="Multi-column headers with selectable rows — Standard / Enable Toggle Expansion None"
128
- />
129
- <AdvancedTable
130
- columnDefinitions={columnDefinitions}
131
- enableToggleExpansion="none"
132
- onRowSelectionChange={(selectedRows) => console.log(selectedRows)}
133
- selectableRows
134
- tableData={standardNoneData}
135
- {...props}
136
- />
137
-
138
- <Title
139
- marginBottom="sm"
140
- marginTop="xl"
141
- size={4}
142
- tag="h4"
143
- text="Segmented AdvancedTable"
144
- />
145
-
146
- <Caption
147
- text="Multi-column headers with selectable rows and expandable subrows — Subcomponent / Enable Toggle Expansion All"
148
- />
149
- <AdvancedTable
150
- columnDefinitions={columnDefinitions}
151
- enableToggleExpansion="all"
152
- marginBottom="md"
153
- onRowSelectionChange={(selectedRows) => console.log(selectedRows)}
154
- selectableRows
155
- tableData={segmentedAllData}
156
- {...props}
157
- >
158
- <AdvancedTable.Header />
159
- <AdvancedTable.Body subRowHeaders={subRowHeaders} />
160
- </AdvancedTable>
161
-
162
- <Caption
163
- text="Multi-column headers with selectable rows — Subcomponent / Enable Toggle Expansion None"
164
- />
165
- <AdvancedTable
166
- columnDefinitions={columnDefinitions}
167
- enableToggleExpansion="none"
168
- onRowSelectionChange={(selectedRows) => console.log(selectedRows)}
169
- selectableRows
170
- tableData={segmentedNoneData}
171
- {...props}
172
- >
173
- <AdvancedTable.Header />
174
- <AdvancedTable.Body subRowHeaders={subRowHeaders} />
175
- </AdvancedTable>
176
- </div>
177
- )
178
-
179
- export default AdvancedTableSelectableRows
3
+ import MOCK_DATA from "./advanced_table_mock_data_with_id.json"
4
+
5
+ const AdvancedTableSelectableRows = (props) => {
6
+ const columnDefinitions = [
7
+ {
8
+ accessor: "year",
9
+ label: "Year",
10
+ cellAccessors: ["quarter", "month", "day"],
11
+ },
12
+ {
13
+ accessor: "newEnrollments",
14
+ label: "New Enrollments",
15
+ },
16
+ {
17
+ accessor: "scheduledMeetings",
18
+ label: "Scheduled Meetings",
19
+ },
20
+ {
21
+ accessor: "attendanceRate",
22
+ label: "Attendance Rate",
23
+ },
24
+ {
25
+ accessor: "completedClasses",
26
+ label: "Completed Classes",
27
+ },
28
+ {
29
+ accessor: "classCompletionRate",
30
+ label: "Class Completion Rate",
31
+ },
32
+ {
33
+ accessor: "graduatedStudents",
34
+ label: "Graduated Students",
35
+ },
36
+ ]
37
+
38
+ //Render the subRow header rows
39
+ const subRowHeaders = ["Quarter", "Month", "Day"]
40
+
41
+
42
+ return (
43
+ <div>
44
+ <AdvancedTable
45
+ columnDefinitions={columnDefinitions}
46
+ enableToggleExpansion="all"
47
+ onRowSelectionChange={(selectedRows) => console.log(selectedRows)}
48
+ selectableRows
49
+ tableData={MOCK_DATA}
50
+
51
+ {...props}
52
+ >
53
+ <AdvancedTable.Header />
54
+ <AdvancedTable.Body subRowHeaders={subRowHeaders}/>
55
+ </AdvancedTable>
56
+ </div>
57
+ )
58
+ }
59
+
60
+ export default AdvancedTableSelectableRows
@@ -7,24 +7,18 @@
7
7
  "subRowHeaders": "AdvancedTable.Body.props"
8
8
  },
9
9
  "defaults": {
10
- "cascadeCollapse": false,
10
+ "columnGroupBorderColor": "none",
11
11
  "enableToggleExpansion": "header",
12
- "enableSortingRemoval": false,
13
12
  "fullWidthCell": false,
14
13
  "groupSeparators": false,
15
- "initialLoadingRowsCount": 10,
16
14
  "inlineRowLoading": false,
17
15
  "loading": false,
18
16
  "maxHeight": "auto",
19
- "pagination": false,
20
17
  "responsive": "scroll",
21
18
  "scrollBarNone": false,
22
19
  "selectableRows": false,
23
20
  "showActionsBar": true,
24
21
  "persistToggleExpansionButton": false,
25
- "sortParentOnly": false,
26
- "toggleExpansionIcon": "arrows-from-line",
27
- "virtualizedRows": false,
28
22
  "collapsibleTrail": true,
29
23
  "columnVisibilityControl": {
30
24
  "default": true
@@ -88,7 +88,6 @@ examples:
88
88
  - advanced_table_column_visibility_with_state: Column Visibility Control With State
89
89
  - advanced_table_column_visibility_custom: Column Visibility Control with Custom Dropdown
90
90
  - advanced_table_column_visibility_multi: Column Visibility Control with Multi-Header Columns
91
- - advanced_table_column_visibility_multi_select_all: Column Visibility Control with Select All and Multi-Header Columns
92
91
  - advanced_table_grouped_headers_composition: Grouped headers, custom headers, sort, and pinned rows
93
92
  - advanced_table_scrollbar_none: Advanced Table Scrollbar None
94
93
  - advanced_table_row_styling: Row Styling
@@ -34,7 +34,6 @@ export { default as AdvancedTableColumnBorderColor} from './_advanced_table_colu
34
34
  export { default as AdvancedTableColumnVisibility } from './_advanced_table_column_visibility.jsx'
35
35
  export { default as AdvancedTableColumnVisibilityCustom } from './_advanced_table_column_visibility_custom.jsx'
36
36
  export { default as AdvancedTableColumnVisibilityMulti } from './_advanced_table_column_visibility_multi.jsx'
37
- export { default as AdvancedTableColumnVisibilityMultiSelectAll } from './_advanced_table_column_visibility_multi_select_all.jsx'
38
37
  export { default as AdvancedTableColumnVisibilityWithState } from './_advanced_table_column_visibility_with_state.jsx'
39
38
  export { default as AdvancedTablePinnedRows } from './_advanced_table_pinned_rows.jsx'
40
39
  export { default as AdvancedTableScrollbarNone} from './_advanced_table_scrollbar_none.jsx'
@@ -21,8 +21,7 @@
21
21
  "type": "boolean",
22
22
  "platforms": [
23
23
  "react"
24
- ],
25
- "default": false
24
+ ]
26
25
  },
27
26
  "columnDefinitions": {
28
27
  "type": "array",
@@ -37,28 +36,15 @@
37
36
  "react",
38
37
  "rails"
39
38
  ],
40
- "values": {
41
- "react": [
42
- "text_lt_default",
43
- "text_lt_light",
44
- "text_lt_lighter",
45
- "text_dk_default",
46
- "text_dk_light",
47
- "text_dk_lighter"
48
- ],
49
- "rails": [
50
- "text_lt_default",
51
- "text_lt_light",
52
- "text_lt_lighter",
53
- "text_dk_default",
54
- "text_dk_light",
55
- "text_dk_lighter",
56
- "none"
57
- ]
58
- },
59
- "default": {
60
- "rails": "none"
61
- }
39
+ "values": [
40
+ "text_lt_default",
41
+ "text_lt_light",
42
+ "text_lt_lighter",
43
+ "text_dk_default",
44
+ "text_dk_light",
45
+ "text_dk_lighter"
46
+ ],
47
+ "default": "none"
62
48
  },
63
49
  "columnVisibilityControl": {
64
50
  "type": "GenericObject",
@@ -89,8 +75,7 @@
89
75
  "type": "boolean",
90
76
  "platforms": [
91
77
  "react"
92
- ],
93
- "default": false
78
+ ]
94
79
  },
95
80
  "expandedControl": {
96
81
  "type": "GenericObject",
@@ -130,8 +115,7 @@
130
115
  "type": "number",
131
116
  "platforms": [
132
117
  "react"
133
- ],
134
- "default": 10
118
+ ]
135
119
  },
136
120
  "inlineRowLoading": {
137
121
  "type": "boolean",
@@ -186,8 +170,7 @@
186
170
  "type": "boolean",
187
171
  "platforms": [
188
172
  "react"
189
- ],
190
- "default": false
173
+ ]
191
174
  },
192
175
  "paginationProps": {
193
176
  "type": "GenericObject",
@@ -263,8 +246,7 @@
263
246
  "type": "boolean",
264
247
  "platforms": [
265
248
  "react"
266
- ],
267
- "default": false
249
+ ]
268
250
  },
269
251
  "stickyLeftColumn": {
270
252
  "type": "array",
@@ -296,8 +278,7 @@
296
278
  "type": "string | string[]",
297
279
  "platforms": [
298
280
  "react"
299
- ],
300
- "default": "arrows-from-line"
281
+ ]
301
282
  },
302
283
  "onRowSelectionChange": {
303
284
  "type": "function",
@@ -315,8 +296,7 @@
315
296
  "type": "boolean",
316
297
  "platforms": [
317
298
  "react"
318
- ],
319
- "default": false
299
+ ]
320
300
  },
321
301
  "enableSorting": {
322
302
  "type": "boolean",