playbook_ui 14.17.0.pre.rc.1 → 14.18.0.pre.alpha.PLAY20787400

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 (220) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +23 -3
  3. data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +67 -3
  4. data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableActions.ts +1 -2
  5. data/app/pb_kits/playbook/pb_advanced_table/Utilities/ExpansionControlHelpers.tsx +29 -19
  6. data/app/pb_kits/playbook/pb_advanced_table/Utilities/types.ts +1 -1
  7. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +133 -124
  8. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +92 -2
  9. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +20 -7
  10. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_expand_by_depth.jsx +66 -0
  11. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_expand_by_depth.md +10 -0
  12. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_fullscreen.jsx +90 -0
  13. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_fullscreen.md +3 -0
  14. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_columns.jsx +58 -0
  15. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_columns.md +6 -0
  16. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_columns_and_header.jsx +64 -0
  17. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_columns_and_header.md +8 -0
  18. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header.jsx +55 -0
  19. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header.md +3 -0
  20. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header_rails.html.erb +33 -0
  21. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header_rails.md +3 -0
  22. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.html.erb +1 -1
  23. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.jsx +1 -2
  24. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_rails.md +2 -2
  25. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_react.md +1 -1
  26. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_rails.md +6 -2
  27. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_react.md +6 -2
  28. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +9 -3
  29. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +6 -1
  30. data/app/pb_kits/playbook/pb_advanced_table/index.js +7 -0
  31. data/app/pb_kits/playbook/pb_advanced_table/scss_partials/advanced_table_sticky_mixin.scss +97 -0
  32. data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +1 -1
  33. data/app/pb_kits/playbook/pb_background/_background.scss +26 -0
  34. data/app/pb_kits/playbook/pb_background/_background.tsx +5 -3
  35. data/app/pb_kits/playbook/pb_background/background.test.js +5 -0
  36. data/app/pb_kits/playbook/pb_background/docs/_background_overlay.jsx +35 -0
  37. data/app/pb_kits/playbook/pb_background/docs/_background_overlay.md +1 -0
  38. data/app/pb_kits/playbook/pb_background/docs/example.yml +1 -0
  39. data/app/pb_kits/playbook/pb_background/docs/index.js +1 -0
  40. data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.tsx +1 -1
  41. data/app/pb_kits/playbook/pb_circle_chart/circleChart.test.js +2 -2
  42. data/app/pb_kits/playbook/pb_circle_chart/circleChartTheme.ts +53 -0
  43. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_block.html.erb +2 -2
  44. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_block.jsx +1 -1
  45. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors.html.erb +1 -1
  46. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors.jsx +1 -1
  47. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_custom_tooltip.html.erb +1 -1
  48. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_custom_tooltip.jsx +1 -1
  49. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_default.html.erb +1 -1
  50. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_default.jsx +1 -1
  51. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.html.erb +1 -1
  52. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.jsx +1 -1
  53. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_live_data.jsx +2 -2
  54. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_pb_styles.jsx +38 -0
  55. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_pb_styles.md +1 -0
  56. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_rounded.html.erb +1 -1
  57. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_rounded.jsx +1 -1
  58. data/app/pb_kits/playbook/pb_circle_chart/docs/example.yml +2 -3
  59. data/app/pb_kits/playbook/pb_circle_chart/docs/index.js +2 -1
  60. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.scss +39 -1
  61. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.tsx +4 -0
  62. data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.rb +9 -1
  63. data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.test.js +14 -0
  64. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_size.html.erb +28 -0
  65. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_size.jsx +42 -0
  66. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_size.md +1 -0
  67. data/app/pb_kits/playbook/pb_circle_icon_button/docs/example.yml +2 -0
  68. data/app/pb_kits/playbook/pb_circle_icon_button/docs/index.js +1 -0
  69. data/app/pb_kits/playbook/pb_collapsible/__snapshots__/collapsible.test.js.snap +14 -7
  70. data/app/pb_kits/playbook/pb_contact/contact.test.js +7 -7
  71. data/app/pb_kits/playbook/pb_copy_button/_copy_button.tsx +19 -45
  72. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_hook.jsx +54 -0
  73. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_hook.md +3 -0
  74. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_hook_rails.html.erb +14 -0
  75. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_hook_rails.md +3 -0
  76. data/app/pb_kits/playbook/pb_copy_button/docs/example.yml +2 -0
  77. data/app/pb_kits/playbook/pb_copy_button/docs/index.js +2 -1
  78. data/app/pb_kits/playbook/pb_copy_button/index.js +46 -20
  79. data/app/pb_kits/playbook/pb_copy_button/usePBCopy.ts +45 -0
  80. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +12 -0
  81. data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +12 -0
  82. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +50 -1
  83. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_quick_pick_rails.md +4 -0
  84. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_quick_pick_range_limit.md +1 -1
  85. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_quick_pick_react.md +5 -1
  86. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range_pattern.jsx +34 -0
  87. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range_pattern.md +14 -0
  88. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range_pattern_rails.html.erb +20 -0
  89. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range_pattern_rails.md +14 -0
  90. data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +2 -0
  91. data/app/pb_kits/playbook/pb_date_picker/docs/index.js +1 -0
  92. data/app/pb_kits/playbook/pb_date_picker/plugins/quickPick.tsx +10 -0
  93. data/app/pb_kits/playbook/pb_date_range_inline/date_range_inline.test.js +2 -2
  94. data/app/pb_kits/playbook/pb_date_range_stacked/date_range_stacked.test.js +1 -1
  95. data/app/pb_kits/playbook/pb_dialog/dialog.html.erb +10 -1
  96. data/app/pb_kits/playbook/pb_dialog/dialog.rb +2 -0
  97. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_turbo_frames.html.erb +117 -0
  98. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_turbo_frames_rails.md +9 -0
  99. data/app/pb_kits/playbook/pb_dialog/docs/example.yml +1 -0
  100. data/app/pb_kits/playbook/pb_dialog/index.js +106 -14
  101. data/app/pb_kits/playbook/pb_draggable/_draggable.scss +43 -20
  102. data/app/pb_kits/playbook/pb_draggable/context/index.tsx +58 -17
  103. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones.jsx +102 -105
  104. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones.md +3 -3
  105. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_colors.jsx +50 -48
  106. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_colors.md +1 -1
  107. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line.jsx +110 -0
  108. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line.md +5 -0
  109. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_event_listeners.html.erb +42 -0
  110. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_event_listeners.md +1 -0
  111. data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_table_react.jsx → _draggable_with_table.jsx} +1 -1
  112. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.md +3 -1
  113. data/app/pb_kits/playbook/pb_draggable/docs/example.yml +10 -6
  114. data/app/pb_kits/playbook/pb_draggable/docs/index.js +4 -1
  115. data/app/pb_kits/playbook/pb_draggable/draggable.test.jsx +71 -3
  116. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableContainer.tsx +4 -3
  117. data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +1 -1
  118. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.jsx +6 -6
  119. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_and_custom_display.jsx +6 -6
  120. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display.jsx +6 -6
  121. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display_rails.html.erb +8 -8
  122. data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +3 -3
  123. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownOption.tsx +1 -1
  124. data/app/pb_kits/playbook/pb_form_group/_form_group.scss +45 -3
  125. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_select.html.erb +15 -5
  126. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_select.jsx +39 -6
  127. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.jsx +30 -0
  128. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.md +1 -0
  129. data/app/pb_kits/playbook/pb_gauge/docs/example.yml +1 -0
  130. data/app/pb_kits/playbook/pb_gauge/docs/index.js +1 -0
  131. data/app/pb_kits/playbook/pb_gauge/gaugeTheme.ts +85 -0
  132. data/app/pb_kits/playbook/pb_icon/icon.test.js +9 -9
  133. data/app/pb_kits/playbook/pb_icon_circle/icon_circle.test.js +1 -1
  134. data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.test.js +1 -1
  135. data/app/pb_kits/playbook/pb_icon_value/icon_value.test.js +1 -1
  136. data/app/pb_kits/playbook/pb_label_value/label_value.test.js +1 -1
  137. data/app/pb_kits/playbook/pb_layout/_layout.scss +127 -0
  138. data/app/pb_kits/playbook/pb_layout/_layout.tsx +47 -7
  139. data/app/pb_kits/playbook/pb_layout/docs/_layout_bracket.jsx +394 -0
  140. data/app/pb_kits/playbook/pb_layout/docs/_layout_bracket.md +5 -0
  141. data/app/pb_kits/playbook/pb_layout/docs/example.yml +1 -0
  142. data/app/pb_kits/playbook/pb_layout/docs/index.js +1 -0
  143. data/app/pb_kits/playbook/pb_layout/layout.test.js +4 -0
  144. data/app/pb_kits/playbook/pb_layout/subcomponents/_game.tsx +121 -0
  145. data/app/pb_kits/playbook/pb_layout/subcomponents/_participant.tsx +79 -0
  146. data/app/pb_kits/playbook/pb_layout/subcomponents/_round.tsx +74 -0
  147. data/app/pb_kits/playbook/pb_link/link.test.jsx +2 -2
  148. data/app/pb_kits/playbook/pb_nav/_nav_item.test.js +5 -3
  149. data/app/pb_kits/playbook/pb_overlay/_overlay.scss +83 -22
  150. data/app/pb_kits/playbook/pb_overlay/_overlay.tsx +39 -7
  151. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_color.jsx +63 -0
  152. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_color.md +3 -0
  153. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_default.md +1 -7
  154. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_fullscreen_background.jsx +49 -0
  155. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_fullscreen_background.md +1 -0
  156. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_fullscreen_opacity.jsx +81 -0
  157. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_fullscreen_opacity.md +1 -0
  158. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_gradient_opacity.jsx +39 -0
  159. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_gradient_opacity.md +1 -0
  160. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_layout.jsx +40 -0
  161. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_layout.md +5 -0
  162. data/app/pb_kits/playbook/pb_overlay/docs/example.yml +5 -0
  163. data/app/pb_kits/playbook/pb_overlay/docs/index.js +5 -0
  164. data/app/pb_kits/playbook/pb_overlay/overlay.test.jsx +39 -1
  165. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_vertical.md +1 -0
  166. data/app/pb_kits/playbook/pb_stat_change/stat_change.test.js +8 -4
  167. data/app/pb_kits/playbook/pb_table/_table.tsx +2 -2
  168. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_rows.md +3 -1
  169. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_rows_rails.md +3 -1
  170. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table.md +3 -1
  171. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table_rails.md +3 -1
  172. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_borderless.html.erb +34 -0
  173. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_borderless_rails.md +1 -0
  174. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_floating.html.erb +36 -0
  175. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_floating_rails.md +1 -0
  176. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_floating_react.md +1 -1
  177. data/app/pb_kits/playbook/pb_table/docs/example.yml +2 -0
  178. data/app/pb_kits/playbook/pb_table/styles/_collapsible.scss +1 -1
  179. data/app/pb_kits/playbook/pb_table/styles/_headers.scss +19 -7
  180. data/app/pb_kits/playbook/pb_table/styles/_striped.scss +3 -3
  181. data/app/pb_kits/playbook/pb_table/table.rb +13 -1
  182. data/app/pb_kits/playbook/pb_table/table_header.rb +13 -1
  183. data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +13 -5
  184. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_sanitize.jsx +94 -0
  185. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_sanitize.md +1 -0
  186. data/app/pb_kits/playbook/pb_text_input/docs/example.yml +2 -0
  187. data/app/pb_kits/playbook/pb_text_input/docs/index.js +1 -0
  188. data/app/pb_kits/playbook/pb_text_input/inputMask.ts +8 -1
  189. data/app/pb_kits/playbook/pb_tooltip/tooltip.html.erb +2 -5
  190. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_highlight.jsx +4 -4
  191. data/app/pb_kits/playbook/pb_typeahead/typeahead.html.erb +2 -5
  192. data/app/pb_kits/playbook/pb_user/user.html.erb +1 -6
  193. data/app/pb_kits/playbook/pb_user_badge/user_badge.html.erb +1 -6
  194. data/dist/chunks/_typeahead-BX8IifKY.js +22 -0
  195. data/dist/chunks/_weekday_stacked-DfMD7HJz.js +45 -0
  196. data/dist/chunks/lib-96_ZmvAo.js +29 -0
  197. data/dist/chunks/{pb_form_validation-BvNy9Bd6.js → pb_form_validation-Vv2TqXVC.js} +1 -1
  198. data/dist/chunks/vendor.js +1 -1
  199. data/dist/menu.yml +2 -2
  200. data/dist/playbook-doc.js +19 -1
  201. data/dist/playbook-rails-react-bindings.js +1 -1
  202. data/dist/playbook-rails.js +1 -1
  203. data/dist/playbook.css +1 -1
  204. data/lib/playbook/kit_base.rb +4 -4
  205. data/lib/playbook/version.rb +2 -2
  206. metadata +79 -18
  207. data/dist/chunks/_typeahead-Djo6qCne.js +0 -22
  208. data/dist/chunks/_weekday_stacked-DIIHW0OV.js +0 -45
  209. data/dist/chunks/lib-BGzBzFZX.js +0 -29
  210. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_default_rails.html.erb → _draggable_default.html.erb} +0 -0
  211. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_default.md → _draggable_default_react.md} +0 -0
  212. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_multiple_containers_rails.html.erb → _draggable_multiple_containers.html.erb} +0 -0
  213. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_multiple_containers.md → _draggable_multiple_containers_react.md} +0 -0
  214. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_cards_rails.html.erb → _draggable_with_cards.html.erb} +0 -0
  215. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_cards.md → _draggable_with_cards_react.md} +0 -0
  216. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_list_rails.html.erb → _draggable_with_list.html.erb} +0 -0
  217. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_list.md → _draggable_with_list_react.md} +0 -0
  218. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_selectable_list_rails.html.erb → _draggable_with_selectable_list.html.erb} +0 -0
  219. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_selectable_list.md → _draggable_with_selectable_list_react.md} +0 -0
  220. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_table.md → _draggable_with_table_rails.md} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7baa338bb75cb26c1132c864778628ebcffefab2f521a56d79dab553358fe5d8
4
- data.tar.gz: 6d8d21d62396220dd1882c83e7002457d3db571da2a914ab5d05184c38df367a
3
+ metadata.gz: eaa89f27b581b891e8f2e308b3c2878cae2b2073485c731ab1f2143ce5201c43
4
+ data.tar.gz: 43c6a430f135f407da1de984fc6eb79d4aad2c5ca6e3228e22648c7a5df640b5
5
5
  SHA512:
6
- metadata.gz: d5e0ba02e3d069bfbfb68fa7612036969a277e45b7d20a6c45f81e38dd798ddee91900a85d259336380639794654f28b1d8b89fc207f11a95b537e40ebdb6644
7
- data.tar.gz: c30476a417049e3e83fb851189685e18c6d631464f4e7ae3c3cb6dd9fe324a3d55344cda9fb3d500521957e1deaaef14554a25ac5a4efa06858f51fefab2e14d
6
+ metadata.gz: 03ec5e9d380203c29d2ec6335961b6bbdc600b5f52186145a4dfc8a57bbb470d12bccb0b720a56620418236b945a488ad04b3421d865d4039e656ac88e2a8e45
7
+ data.tar.gz: 40f77a4576409998dff40d9ef56b172aa09b891ec42db213cf14f11ce31659cd1ec89135e2ed8b803f52318ba7c9556846e16aa9d10bde2569c78a7ee3bf13f7
@@ -1,4 +1,4 @@
1
- import React, { useContext } from "react"
1
+ import React, { useContext, useEffect } from "react"
2
2
  import classnames from "classnames"
3
3
  import { flexRender, Row, Cell } from "@tanstack/react-table"
4
4
 
@@ -32,9 +32,21 @@ export const RegularTableView = ({
32
32
  table,
33
33
  selectableRows,
34
34
  hasAnySubRows,
35
- isPinnedLeft = false,
35
+ stickyLeftColumn
36
36
  } = useContext(AdvancedTableContext)
37
37
 
38
+
39
+ useEffect(() => {
40
+ if (stickyLeftColumn && Array.isArray(stickyLeftColumn)) {
41
+ stickyLeftColumn.forEach((columnId) => {
42
+ const column = table.getColumn(columnId);
43
+ if (column && column.getCanPin()) {
44
+ column.pin('left');
45
+ }
46
+ });
47
+ }
48
+ },[stickyLeftColumn, table]);
49
+
38
50
  const columnPinning = table.getState().columnPinning || { left: [] };
39
51
  const columnDefinitions = table.options.meta?.columnDefinitions || [];
40
52
 
@@ -82,7 +94,7 @@ export const RegularTableView = ({
82
94
  {row.getVisibleCells().map((cell: Cell<GenericObject, unknown>, i: number) => {
83
95
  const isPinnedLeft = columnPinning.left.includes(cell.column.id);
84
96
  const isLastCell = cell.column.parent?.columns?.at(-1)?.id === cell.column.id;
85
-
97
+ const { column } = cell;
86
98
  return (
87
99
  <td
88
100
  align="right"
@@ -90,9 +102,17 @@ export const RegularTableView = ({
90
102
  `${cell.id}-cell position_relative`,
91
103
  isChrome() ? "chrome-styles" : "",
92
104
  isPinnedLeft && 'pinned-left',
105
+ stickyLeftColumn && stickyLeftColumn.length > 0 && isPinnedLeft && 'sticky-left',
93
106
  isLastCell && 'last-cell',
94
107
  )}
95
108
  key={`${cell.id}-data`}
109
+ style={{
110
+ left: isPinnedLeft
111
+ ? i === 1 //Accounting for set min-width for first column
112
+ ? '180px'
113
+ : `${column.getStart("left")}px`
114
+ : undefined,
115
+ }}
96
116
  >
97
117
  {collapsibleTrail && i === 0 && row.depth > 0 && renderCollapsibleTrail(row.depth)}
98
118
  <span id={`${cell.id}-span`}>
@@ -1,6 +1,6 @@
1
1
  import React, { useContext } from "react"
2
2
  import classnames from "classnames"
3
- import { flexRender, Header, Table } from "@tanstack/react-table"
3
+ import { flexRender, Header, Table, RowModel } from "@tanstack/react-table"
4
4
 
5
5
  import { GenericObject } from "../../types"
6
6
 
@@ -8,9 +8,16 @@ import { GlobalProps } from "../../utilities/globalProps"
8
8
 
9
9
  import Flex from "../../pb_flex/_flex"
10
10
  import Checkbox from "../../pb_checkbox/_checkbox"
11
+ import Dropdown from "../../pb_dropdown/_dropdown"
12
+ import DropdownTrigger from "../../pb_dropdown/subcomponents/DropdownTrigger"
13
+ import DropdownOption from "../../pb_dropdown/subcomponents/DropdownOption"
14
+ import DropdownContainer from "../../pb_dropdown/subcomponents/DropdownContainer"
15
+ import Icon from "../../pb_icon/_icon"
11
16
 
12
17
  import { SortIconButton } from "./SortIconButton"
13
18
  import { ToggleIconButton } from "./ToggleIconButton"
19
+ import { displayIcon } from "../Utilities/IconHelpers"
20
+ import { updateExpandAndCollapseState } from "../Utilities/ExpansionControlHelpers"
14
21
 
15
22
  import { isChrome } from "../Utilities/BrowserCheck"
16
23
 
@@ -40,11 +47,17 @@ export const TableHeaderCell = ({
40
47
  table
41
48
  }: TableHeaderCellProps) => {
42
49
  const {
50
+ expanded,
51
+ setExpanded,
52
+ expandByDepth,
53
+ onExpandByDepthClick,
54
+ toggleExpansionIcon,
43
55
  sortControl,
44
56
  responsive,
45
57
  selectableRows,
46
58
  hasAnySubRows,
47
59
  showActionsBar,
60
+ stickyLeftColumn,
48
61
  inlineRowLoading,
49
62
  isActionBarVisible,
50
63
  } = useContext(AdvancedTableContext);
@@ -76,7 +89,9 @@ const cellClassName = classnames(
76
89
  `${isChrome() ? "chrome-styles" : ""}`,
77
90
  `${enableSorting ? "table-header-cells-active" : ""}`,
78
91
  { "pinned-left": responsive === "scroll" && isPinnedLeft },
79
- isLastHeaderCell ? "last-header-cell" : ""
92
+ isLastHeaderCell ? "last-header-cell" : "",
93
+ stickyLeftColumn && stickyLeftColumn.length > 0 && isPinnedLeft ? 'sticky-left' : "",
94
+
80
95
  );
81
96
 
82
97
  const cellId = `${loading ?
@@ -104,6 +119,21 @@ const isToggleExpansionEnabled =
104
119
  justifyHeader = isLeafColumn ? "end" : "center";
105
120
  }
106
121
 
122
+ const handleExpandDepth = (depth: number) => {
123
+ if (onExpandByDepthClick) {
124
+ const flatRows = table?.getRowModel().flatRows
125
+ onExpandByDepthClick(depth, flatRows)
126
+ }
127
+ const updated = updateExpandAndCollapseState(
128
+ table.getRowModel(),
129
+ expanded,
130
+ undefined,
131
+ depth
132
+ )
133
+ setExpanded(updated)
134
+ }
135
+
136
+
107
137
  return (
108
138
  <th
109
139
  align="right"
@@ -111,6 +141,13 @@ const isToggleExpansionEnabled =
111
141
  colSpan={header?.colSpan}
112
142
  id={cellId}
113
143
  key={`${header?.id}-header`}
144
+ style={{
145
+ left: isPinnedLeft
146
+ ? header?.index === 1 //Accounting for set min-width for first column
147
+ ? '180px'
148
+ : `${header?.column.getStart("left")}px`
149
+ : undefined,
150
+ }}
114
151
  >
115
152
  {header?.isPlaceholder ? null : headerChildren && header?.index === 0 ? (
116
153
  <Flex alignItems="center">
@@ -133,9 +170,36 @@ const isToggleExpansionEnabled =
133
170
  />
134
171
  )
135
172
  }
136
- {isToggleExpansionEnabled && hasAnySubRows && (
173
+ {isToggleExpansionEnabled && hasAnySubRows && !expandByDepth && (
137
174
  <ToggleIconButton onClick={handleExpandOrCollapse} />
138
175
  )}
176
+ {isToggleExpansionEnabled && hasAnySubRows && expandByDepth && (
177
+ <Dropdown className="expand-by-depth-dropdown-wrapper"
178
+ options={expandByDepth}
179
+ >
180
+ <DropdownTrigger className="gray-icon toggle-all-icon">
181
+ <Icon icon={displayIcon(toggleExpansionIcon)[0]} />
182
+ </DropdownTrigger>
183
+ <DropdownContainer className="expand-by-depth-dropdown">
184
+ {expandByDepth.map((option:{ [key: string]: any }, index: number) => (
185
+ <DropdownOption
186
+ key={index}
187
+ option={option}
188
+ padding="none"
189
+ >
190
+ <Flex
191
+ alignItems="center"
192
+ htmlOptions={{onClick: () => {handleExpandDepth(option.depth)} }}
193
+ paddingX="sm"
194
+ paddingY="xs"
195
+ >
196
+ {option.label}
197
+ </Flex>
198
+ </DropdownOption>
199
+ ))}
200
+ </DropdownContainer>
201
+ </Dropdown>
202
+ )}
139
203
 
140
204
  {isToggleExpansionEnabledLoading &&(
141
205
  <div className="loading-toggle-icon header-toggle-icon" />
@@ -22,10 +22,9 @@ export function useTableActions({
22
22
  // Handle expand/collapse
23
23
  const handleExpandOrCollapse = useCallback(async (row: Row<GenericObject>) => {
24
24
  onToggleExpansionClick && onToggleExpansionClick(row);
25
-
26
25
  const expandedState = expanded;
27
26
  const targetParent = row?.parentId;
28
- const updatedRows = await updateExpandAndCollapseState(table.getRowModel(), expandedState, targetParent);
27
+ const updatedRows = await updateExpandAndCollapseState(table.getRowModel(), expandedState, targetParent, undefined);
29
28
  setExpanded(updatedRows);
30
29
  }, [expanded, setExpanded, onToggleExpansionClick, table]);
31
30
 
@@ -1,4 +1,4 @@
1
- import { RowModel } from "@tanstack/react-table"
1
+ import { RowModel, Row } from "@tanstack/react-table"
2
2
  import { ExpandedStateObject } from "./types"
3
3
  import { GenericObject } from "../../types"
4
4
 
@@ -14,30 +14,40 @@ const filterExpandableRows = (expandedState: Record<string, boolean>) => {
14
14
  export const updateExpandAndCollapseState = (
15
15
  tableRows: RowModel<GenericObject>,
16
16
  expanded: Record<string, boolean>,
17
- targetParent: string
17
+ targetParent?: string,
18
+ targetDepth?: number,
18
19
  ) => {
19
20
  const updateExpandedRows: Record<string, boolean> = {};
20
- const rows = tableRows.rows;
21
+ const rows = targetDepth !== undefined ? tableRows.flatRows : tableRows.rows;
21
22
 
22
- let isExpansionConsistent = true;
23
- const areRowsExpanded = new Set<boolean>();
23
+ const rowsToToggle: Row<GenericObject>[] = [];
24
24
 
25
25
  for (const row of rows) {
26
- const shouldBeUpdated = targetParent === undefined ? row.depth === 0 : targetParent === row.parentId;
27
-
26
+ const shouldBeUpdated =
27
+ targetDepth !== undefined
28
+ ? row.depth <= targetDepth
29
+ : targetParent === undefined
30
+ ? row.depth === 0
31
+ : targetParent === row.parentId;
32
+
28
33
  if (shouldBeUpdated) {
29
- const isExpanded = row.getIsExpanded();
30
- areRowsExpanded.add(isExpanded);
31
-
32
- updateExpandedRows[row.id] = !isExpansionConsistent ? true : !isExpanded;
33
-
34
- if (areRowsExpanded.size > 1) {
35
- isExpansionConsistent = false;
36
- // If expansion inconsistent, ensure all target rows are set to expand
37
- for (const key in updateExpandedRows) {
38
- updateExpandedRows[key] = true;
39
- }
40
- }
34
+ rowsToToggle.push(row);
35
+ }
36
+ }
37
+
38
+ // Check if we are expanding or collapsing
39
+ const anyCollapsed = rowsToToggle.some((row) => !row.getIsExpanded());
40
+ const isExpandAction = anyCollapsed;
41
+
42
+
43
+ for (const row of rowsToToggle) {
44
+ const shouldUpdate =
45
+ isExpandAction || targetDepth === undefined
46
+ ? true
47
+ : row.depth === targetDepth;
48
+
49
+ if (shouldUpdate) {
50
+ updateExpandedRows[row.id] = isExpandAction;
41
51
  }
42
52
  }
43
53
 
@@ -3,4 +3,4 @@ import { ExpandedState } from "@tanstack/react-table"
3
3
  export type ExpandedStateObject = Extract<
4
4
  ExpandedState,
5
5
  Record<string, boolean>
6
- >
6
+ >
@@ -7,6 +7,8 @@
7
7
  @import "./scss_partials/chrome_styles";
8
8
  @import "../tokens/screen_sizes";
9
9
  @import "../tokens/shadows";
10
+ @import "../tokens/positioning";
11
+ @import "./scss_partials/advanced_table_sticky_mixin";
10
12
 
11
13
  .pb_advanced_table {
12
14
  $border-color: 1px solid $border_light;
@@ -92,8 +94,8 @@
92
94
  border-right: 1px solid $border_light !important;
93
95
  }
94
96
  .table-header-cells-custom {
95
- text-align:center;
96
- [class^=pb_checkbox_kit] .pb_checkbox_label {
97
+ text-align: center;
98
+ [class^="pb_checkbox_kit"] .pb_checkbox_label {
97
99
  padding-left: 0px;
98
100
  }
99
101
  }
@@ -103,7 +105,7 @@
103
105
  }
104
106
  // Right align header content of first data column in selectable row no subrow setup
105
107
  &.selectable-rows-enabled {
106
- tr {
108
+ tr {
107
109
  th:nth-child(2),
108
110
  .pb_flex_kit_orientation_row_justify_content_start_align_items_center_spacing_none.gap_none {
109
111
  justify-content: flex-end;
@@ -121,13 +123,20 @@
121
123
  }
122
124
 
123
125
  // Set fixed width for checkbox column
124
- &.table-header-cells-custom,
126
+ &.table-header-cells-custom,
125
127
  &.checkbox-cell.checkbox-cell-header {
126
128
  width: 40px !important;
127
129
  min-width: 40px !important;
128
130
  box-sizing: border-box !important;
129
131
  }
130
132
  }
133
+ .expand-by-depth-dropdown-wrapper {
134
+ position: unset !important;
135
+ }
136
+ .expand-by-depth-dropdown {
137
+ width: unset !important;
138
+ text-align: left;
139
+ }
131
140
  }
132
141
 
133
142
  .pb_advanced_table_body {
@@ -144,7 +153,7 @@
144
153
  .checkbox-cell {
145
154
  display: flex;
146
155
  justify-content: center;
147
- [class^=pb_checkbox_kit] .pb_checkbox_label {
156
+ [class^="pb_checkbox_kit"] .pb_checkbox_label {
148
157
  padding-left: 0px;
149
158
  }
150
159
  }
@@ -172,7 +181,7 @@
172
181
  }
173
182
  }
174
183
  td {
175
- [class^=pb_text_input_kit] .text_input_wrapper input {
184
+ [class^="pb_text_input_kit"] .text_input_wrapper input {
176
185
  padding: 0 $space_xxs;
177
186
  font-size: 14px;
178
187
  text-align: right;
@@ -229,6 +238,56 @@
229
238
  max-height: 1920px;
230
239
  overflow-y: auto;
231
240
  }
241
+
242
+ // Fullscreen
243
+ &.advanced-table-allow-fullscreen {
244
+ transition: all 0.3s ease;
245
+ }
246
+
247
+ &.advanced-table-fullscreen {
248
+ background-color: $bg_light;
249
+ box-sizing: border-box;
250
+ height: 100vh;
251
+ left: 0;
252
+ overflow: auto;
253
+ position: fixed;
254
+ top: 0;
255
+ width: 100%;
256
+ z-index: $z_10;
257
+
258
+ .pb_table {
259
+ th,
260
+ td,
261
+ div,
262
+ button {
263
+ font-size: calc(100%);
264
+ }
265
+ box-sizing: border-box;
266
+ margin: $space_lg;
267
+ max-width: calc(100% - 64px);
268
+ width: calc(100% - 64px);
269
+ }
270
+
271
+ .pb_table.sticky-header {
272
+ thead,
273
+ .pb_advanced_table_header {
274
+ position: sticky !important;
275
+ top: 44px !important;
276
+ z-index: $z_10;
277
+ }
278
+ }
279
+ }
280
+
281
+ .advanced-table-fullscreen-header {
282
+ background-color: $white;
283
+ height: 44px;
284
+ padding: 13px 20px;
285
+ position: sticky;
286
+ top: 0;
287
+ width: 100%;
288
+ z-index: $z_10;
289
+ }
290
+
232
291
  // Icons
233
292
  .button-icon {
234
293
  display: flex;
@@ -277,6 +336,16 @@
277
336
  }
278
337
  }
279
338
 
339
+ .fullscreen-icon {
340
+ @extend .button-icon;
341
+ @extend %primary-color-pseudo;
342
+ padding: 2px 0;
343
+
344
+ &:focus-visible {
345
+ border-radius: $border_rad_lighter;
346
+ }
347
+ }
348
+
280
349
  // Vertical separator
281
350
  .table-header-cells:first-child,
282
351
  .table-header-cells-custom:first-child,
@@ -314,78 +383,32 @@
314
383
  width: 2px;
315
384
  }
316
385
 
386
+ // Sticky Left Columns Styling
387
+ &[class*="advanced-table-sticky-left-columns"] {
388
+ overflow-x: scroll;
389
+ .sticky-left {
390
+ position: sticky !important;
391
+ z-index: 2;
392
+ background-color: $white;
393
+ box-shadow: $shadow_deep;
394
+ }
395
+ @include advanced-table-sticky-mixin(
396
+ $border_light,
397
+ $white,
398
+ lighten($silver, $opacity_7)
399
+ );
400
+ }
401
+
317
402
  // Responsive Styles
318
403
  @media only screen and (max-width: $screen-xl-min) {
319
404
  &[class*="advanced-table-responsive-scroll"] {
320
- border-radius: 4px;
321
- box-shadow: 1px 0 0 0px $border_light,
322
- -1px 0 0 0px $border_light;
323
- display: block;
324
405
  overflow-x: auto;
325
406
  width: 100%;
326
- [class^=pb_table].table-sm.table-card thead tr th:first-child,
327
- [class^=pb_table].table-sm:not(.no-hover).table-card tbody tr td:first-child {
328
- border-left-width: 0px !important;
329
- }
330
- [class^=pb_table].table-sm.table-card thead tr th:last-child,
331
- [class^=pb_table].table-sm:not(.no-hover).table-card tbody tr td:last-child {
332
- border-right-width: 0px;
333
- }
334
- [class^=pb_table].table-sm.table-card tbody tr:last-child td:first-child,
335
- [class^=pb_table].table-sm.table-card tbody tr:last-child td:last-child {
336
- border-radius: 0 0 0 0;
337
- }
338
- .table-header-cells:first-child,
339
- td:first-child,
340
- .pb_table_td:first-child,
341
- .checkbox-cell.checkbox-cell-header:first-child,
342
- [class*="pinned-left"] {
343
- background-color: $white;
344
- box-shadow: $shadow_deep !important;
345
- position: sticky !important;
346
- left: 0;
347
- z-index: 2;
348
- }
349
- .bg-silver td:first-child {
350
- background-color: lighten($silver, $opacity_7);
351
- }
352
- .bg-white td:first-child {
353
- background-color: $white;
354
- }
355
-
356
- .virtualized-table-row {
357
- &.bg-silver td:first-child {
358
- background-color: lighten($silver, $opacity_7);
359
- }
360
- &.bg-white td:first-child {
361
- background-color: $white;
362
- }
363
- &.bg-row-selection td:first-child {
364
- background-color: $info_subtle;
365
- }
366
- }
367
-
368
- .row-selection-actions-card {
369
- border-right-width: 0px;
370
- border-left-width: 0px;
371
- position: sticky;
372
- top: 0;
373
- left: 0;
374
- border-radius: unset;
375
- }
376
- .checkbox-cell {
377
- display: table-cell !important;
378
- }
379
- .sticky-header {
380
- thead {
381
- th:first-child {
382
- box-shadow: 1px 0 10px -2px $border_light !important;
383
- }
384
- }
385
- .pb_advanced_table_header {
386
- box-shadow: none !important;
387
- }
388
- }
407
+ @include advanced-table-sticky-mixin(
408
+ $border_light,
409
+ $white,
410
+ lighten($silver, $opacity_7)
411
+ );
389
412
  }
390
413
  }
391
414
  @media only screen and (min-width: $screen-xl-min) {
@@ -422,7 +445,9 @@
422
445
  }
423
446
  }
424
447
 
425
- .table-header-cells:first-child, td:first-child, .pb_table_td:first-child {
448
+ .table-header-cells:first-child,
449
+ td:first-child,
450
+ .pb_table_td:first-child {
426
451
  box-shadow: 1px 0px 0px 0px $border_dark !important;
427
452
  }
428
453
 
@@ -430,12 +455,14 @@
430
455
  background-color: $border_dark !important;
431
456
  }
432
457
 
433
- .sort-button-icon, .header-sort-button > div, .pb_th_link {
458
+ .sort-button-icon,
459
+ .header-sort-button > div,
460
+ .pb_th_link {
434
461
  color: $white !important;
435
462
  }
436
463
 
437
464
  .gray-icon {
438
- color: $text_dk_light !important;
465
+ color: $text_dk_light !important;
439
466
  }
440
467
 
441
468
  .sticky-header {
@@ -466,63 +493,45 @@
466
493
  box-shadow: 1px 0px 0px 0px $border_dark !important;
467
494
  }
468
495
 
496
+ // Fullscreen
497
+ &.advanced-table-fullscreen {
498
+ background: $bg_dark;
499
+ }
500
+
501
+ .advanced-table-fullscreen-header {
502
+ background-color: $bg_dark_card;
503
+ position: sticky;
504
+ top: 0;
505
+ z-index: $z_10;
506
+ }
507
+
508
+ &[class*="advanced-table-sticky-left-columns"] {
509
+ .sticky-left {
510
+ background-color: $bg_dark;
511
+ }
512
+ @include advanced-table-sticky-mixin(
513
+ $border_dark,
514
+ $bg_dark_card,
515
+ $bg_dark
516
+ );
517
+ }
518
+
469
519
  // Dark Mode Responsive Styles
470
520
  @media only screen and (max-width: $screen-xl-min) {
471
521
  &[class*="advanced-table-responsive-scroll"] {
472
- border-radius: 4px;
473
- box-shadow: 1px 0 0 0px $border_dark,
474
- -1px 0 0 0px $border_dark;
475
- display: block;
476
- overflow-x: scroll;
477
- width: 100%;
478
- [class^=pb_table].table-sm.table-card thead tr th:first-child,
479
- [class^=pb_table].table-sm:not(.no-hover).table-card tbody tr td:first-child {
480
- border-left-width: 0px;
481
- }
482
- [class^=pb_table].table-sm.table-card thead tr th:last-child,
483
- [class^=pb_table].table-sm:not(.no-hover).table-card tbody tr td:last-child {
484
- border-right-width: 0px;
485
- }
486
- [class^=pb_table].table-sm.table-card tbody tr:last-child td:first-child,
487
- [class^=pb_table].table-sm.table-card tbody tr:last-child td:last-child {
488
- border-radius: 0 0 0 0;
489
- }
490
- .table-header-cells:first-child,
491
- td:first-child,
492
- .pb_table_td:first-child,
493
- .checkbox-cell.checkbox-cell-header:first-child,
494
- [class*="pinned-left"] {
495
- background: $bg_dark_card;
496
- border-right: $border_dark;
497
- box-shadow: $shadow_deep !important;
498
- position: sticky !important;
499
- }
500
- .bg-silver td:first-child {
501
- background-color: $bg_dark;
502
- }
503
- .bg-white td:first-child {
504
- background-color: $bg_dark_card;
505
- }
506
-
507
- // Dark mode virtualized rows
508
- .virtualized-table-row {
509
- &.bg-silver td:first-child {
510
- background-color: $bg_dark;
511
- }
512
- &.bg-white td:first-child {
513
- background-color: $bg_dark_card;
514
- }
515
- }
516
-
517
522
  .sticky-header {
518
523
  thead {
519
524
  th:first-child {
520
- background: $bg_dark;
521
- box-shadow: 1px 0 10px -2px $border_dark !important;
525
+ background: $bg_dark_card;
522
526
  }
523
527
  }
524
528
  }
529
+ @include advanced-table-sticky-mixin(
530
+ $border_dark,
531
+ $bg_dark_card,
532
+ $bg_dark
533
+ );
525
534
  }
526
535
  }
527
536
  }
528
- }
537
+ }