playbook_ui 14.11.1.pre.alpha.PBNTR768stickyrightcolumn5431 → 14.11.1.pre.alpha.PBNTR769sticky5359

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +6 -0
  3. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header_responsive.jsx +52 -0
  4. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +1 -0
  5. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +2 -1
  6. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.md +1 -1
  7. data/app/pb_kits/playbook/pb_draggable/docs/example.yml +0 -1
  8. data/app/pb_kits/playbook/pb_selectable_list/selectable_list.html.erb +3 -17
  9. data/app/pb_kits/playbook/pb_selectable_list/selectable_list.rb +0 -3
  10. data/app/pb_kits/playbook/pb_selectable_list/selectable_list_item.html.erb +4 -11
  11. data/app/pb_kits/playbook/pb_selectable_list/selectable_list_item.rb +0 -3
  12. data/app/pb_kits/playbook/pb_table/_table.tsx +3 -2
  13. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns_rails.md +2 -2
  14. data/app/pb_kits/playbook/pb_table/docs/example.yml +0 -2
  15. data/app/pb_kits/playbook/pb_table/index.ts +34 -93
  16. data/app/pb_kits/playbook/pb_table/styles/_scroll.scss +5 -6
  17. data/app/pb_kits/playbook/pb_table/table.html.erb +1 -1
  18. data/app/pb_kits/playbook/pb_table/table.rb +2 -17
  19. data/dist/chunks/{_typeahead-DCD3NrAk.js → _typeahead-BNULwihE.js} +1 -1
  20. data/dist/chunks/_weekday_stacked-BKWemDAe.js +45 -0
  21. data/dist/chunks/{lib-OFT985dg.js → lib-B7sgJtGS.js} +2 -2
  22. data/dist/chunks/{pb_form_validation-CrsXd1-Y.js → pb_form_validation-C5Cc0-1v.js} +1 -1
  23. data/dist/chunks/vendor.js +1 -1
  24. data/dist/playbook-doc.js +1 -1
  25. data/dist/playbook-rails-react-bindings.js +1 -1
  26. data/dist/playbook-rails.js +1 -1
  27. data/dist/playbook.css +1 -1
  28. data/lib/playbook/version.rb +1 -1
  29. metadata +7 -27
  30. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_selectable_list_rails.html.erb +0 -38
  31. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_selectable_list_rails.md +0 -3
  32. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns.html.erb +0 -74
  33. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns_rails.md +0 -3
  34. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns.html.erb +0 -74
  35. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns_rails.md +0 -3
  36. data/app/pb_kits/playbook/pb_table/utilities/addDataTitle.ts +0 -22
  37. data/dist/chunks/_weekday_stacked-aUbMqVRj.js +0 -45
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4a05fe2789773e3d82f2ff7b8db22a31c699e6cc1c306daf4d2478a38d949f5b
4
- data.tar.gz: c008e59419462f277e0faf29b8592cf61c786a16b84e55795925f2efedf8c82e
3
+ metadata.gz: 83c318646e50eb8f4974a79029c4553c98dd90c0c878ec0fdd60fd77045d36a8
4
+ data.tar.gz: 777f930d187a4815ab702202437cbb96868039c9e115acfd97cee157bbd42d07
5
5
  SHA512:
6
- metadata.gz: 3b3268e3ba86c6f6f292aade7f2401f9e187995ac3ec5854ac81307bb24745ed1721aa6447d9f755c6f724519ac30de7c203762ee92b17aeebfe0440aea5d83c
7
- data.tar.gz: 850c027e756601d977e7b919a2d19b5705a433878b7c2248a3b5fae924cf24311f1781e3d3ae41ef158f0fce893d751040ef292d21e9d8a5f74284961357ef3c
6
+ metadata.gz: b8a756512afdc408c56dbcccb9c6660ea746e14a3656f1fef48557bb09c57140f5f069c2160d2a6ac31883fae34861b9f909eb5fb0c05ec9fa4230145db24da9
7
+ data.tar.gz: 1cbeb5057637f11e479097c70b6e1e59b52abc1bd88d8f4ff0bf329e8ba56c1847eee4b3680c54c7b8cc423c0ad4c052cd77a3e9c5a348c58148a2747d0af1a0
@@ -15,6 +15,12 @@
15
15
  word-wrap: normal;
16
16
  }
17
17
 
18
+ .sticky-header {
19
+ thead {
20
+ z-index: 3 !important;
21
+ }
22
+ }
23
+
18
24
  .bg-silver {
19
25
  background-color: lighten($silver, $opacity_7);
20
26
  }
@@ -0,0 +1,52 @@
1
+ import React from "react"
2
+ import { AdvancedTable } from "playbook-ui"
3
+ import MOCK_DATA from "./advanced_table_mock_data.json"
4
+
5
+ const AdvancedTableStickyHeaderResponsive = (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
+
39
+ return (
40
+ <div>
41
+ <AdvancedTable
42
+ columnDefinitions={columnDefinitions}
43
+ htmlOptions={{style: { maxHeight: "100vh" }}}
44
+ tableData={MOCK_DATA}
45
+ tableProps={{sticky:true}}
46
+ {...props}
47
+ />
48
+ </div>
49
+ )
50
+ }
51
+
52
+ export default AdvancedTableStickyHeaderResponsive
@@ -22,6 +22,7 @@ examples:
22
22
  - advanced_table_table_props: Table Props
23
23
  - advanced_table_inline_row_loading: Inline Row Loading
24
24
  - advanced_table_responsive: Responsive Tables
25
+ - advanced_table_sticky_header_responsive: Sticky Header and Responsive
25
26
  - advanced_table_custom_cell: Custom Components for Cells
26
27
  - advanced_table_pagination: Pagination
27
28
  - advanced_table_pagination_with_props: Pagination Props
@@ -13,4 +13,5 @@ export { default as AdvancedTableCustomCell } from './_advanced_table_custom_cel
13
13
  export { default as AdvancedTablePagination } from './_advanced_table_pagination.jsx'
14
14
  export { default as AdvancedTablePaginationWithProps } from './_advanced_table_pagination_with_props.jsx'
15
15
  export { default as AdvancedTableColumnHeaders } from './_advanced_table_column_headers.jsx'
16
- export { default as AdvancedTableColumnHeadersMultiple } from './_advanced_table_column_headers_multiple.jsx'
16
+ export { default as AdvancedTableColumnHeadersMultiple } from './_advanced_table_column_headers_multiple.jsx'
17
+ export { default as AdvancedTableStickyHeaderResponsive } from './_advanced_table_sticky_header_responsive.jsx'
@@ -2,4 +2,4 @@ The `defaultDate`/`default_date` prop has a null or empty string value by defaul
2
2
 
3
3
  If you use a Date object without UTC time standardization the Date Picker kit may misinterpret that date as yesterdays date (consequence of timezone differentials and the Javascript Date Object constructor). See [this GitHub issue for more information](https://github.com/powerhome/playbook/issues/1167) and the anti-pattern examples below.
4
4
 
5
- You can leverage the `defaultDate`/`default_date` prop with custom logic in your filter or controller files where the determination of the default value changes based on user interaction. The page can load with an initial default date picker value or placeholder text, then after filter submission save the submitted values as the "new default" (via state or params).
5
+
@@ -11,7 +11,6 @@ examples:
11
11
  rails:
12
12
  - draggable_default_rails: Default
13
13
  - draggable_with_list_rails: Draggable with List Kit
14
- - draggable_with_selectable_list_rails: Draggable with SelectableList Kit
15
14
  - draggable_with_cards_rails: Draggable with Cards
16
15
 
17
16
 
@@ -4,23 +4,9 @@
4
4
  data: object.data,
5
5
  id: object.id,
6
6
  **combined_html_options) do %>
7
- <% if enable_drag %>
8
- <%= pb_rails("draggable", props: {initial_items: object.items}) do %>
9
- <%= pb_rails("draggable/draggable_container") do %>
10
- <%= pb_rails("list", props: {ordered: false}) do %>
11
- <% object.items.each do |item| %>
12
- <%= pb_rails("draggable/draggable_item", props: {drag_id: item[:drag_id]}) do %>
13
- <%= pb_rails("selectable_list/selectable_list_item", props: item.merge(variant: object.variant, id: object.get_id(item), drag_id: item[:drag_id]) )%>
14
- <% end %>
15
- <% end %>
16
- <% end %>
17
- <% end %>
18
- <% end %>
19
- <% else %>
20
- <%= pb_rails("list") do %>
21
- <% object.items.each do |item| %>
22
- <%= pb_rails("selectable_list/selectable_list_item", props: item.merge(variant: object.variant, id: object.get_id(item)) )%>
23
- <% end %>
7
+ <%= pb_rails("list") do %>
8
+ <% object.items.each do |item| %>
9
+ <%= pb_rails("selectable_list/selectable_list_item", props: item.merge(variant: object.variant, id: object.get_id(item)) )%>
24
10
  <% end %>
25
11
  <% end %>
26
12
  <% end %>
@@ -14,9 +14,6 @@ module Playbook
14
14
  prop :items, type: Playbook::Props::Array,
15
15
  default: []
16
16
 
17
- prop :enable_drag, type: Playbook::Props::Boolean,
18
- default: false
19
-
20
17
  def classname
21
18
  generate_classname("pb_selectable_list_kit")
22
19
  end
@@ -4,13 +4,6 @@
4
4
  data: object.data,
5
5
  id: object.id,
6
6
  **combined_html_options) do %>
7
- <% if object.drag_id && object.drag_handle %>
8
- <span style="vertical-align: middle;">
9
- <%= pb_rails("body") do %>
10
- <svg width="auto" height="auto" viewBox="0 0 31 25" fill="none" xmlns="http://www.w3.org/2000/svg" color="currentColor" class="pb_custom_icon svg-inline--fa vertical_align_middle svg_fw"><path d="M12.904 6.355a1.48 1.48 0 01-1.5-1.5c0-.796.656-1.5 1.5-1.5.797 0 1.5.704 1.5 1.5 0 .844-.703 1.5-1.5 1.5zm0 7.5a1.48 1.48 0 01-1.5-1.5c0-.796.656-1.5 1.5-1.5.797 0 1.5.704 1.5 1.5 0 .844-.703 1.5-1.5 1.5zm1.5 6c0 .844-.703 1.5-1.5 1.5a1.48 1.48 0 01-1.5-1.5c0-.796.656-1.5 1.5-1.5.797 0 1.5.704 1.5 1.5zm4.5-13.5a1.48 1.48 0 01-1.5-1.5c0-.796.657-1.5 1.5-1.5.797 0 1.5.704 1.5 1.5 0 .844-.703 1.5-1.5 1.5zm1.5 6c0 .844-.703 1.5-1.5 1.5a1.48 1.48 0 01-1.5-1.5c0-.796.657-1.5 1.5-1.5.797 0 1.5.704 1.5 1.5zm-1.5 9a1.48 1.48 0 01-1.5-1.5c0-.796.657-1.5 1.5-1.5.797 0 1.5.704 1.5 1.5 0 .844-.703 1.5-1.5 1.5z" fill="#242B42"></path></svg>
11
- <% end %>
12
- </span>
13
- <% end %>
14
7
  <% if object.variant == "radio"%>
15
8
  <%= pb_rails("radio", props: { text: object.text, checked: object.checked, input_options: object.input_options } ) %>
16
9
  <% if content.present? %>
@@ -26,10 +19,10 @@
26
19
  <% if object.variant == "checkbox"%>
27
20
  <script>
28
21
  var checkboxElement = document.querySelector("#<%=object.id%> input[type=checkbox]")
29
-
22
+
30
23
  checkboxElement.addEventListener("change", (evt) => {
31
24
  var listItemElement = document.querySelector("#<%=object.id%>")
32
-
25
+
33
26
  if (evt.target.checked) {
34
27
  listItemElement.classList.add("checked_item");
35
28
  } else {
@@ -41,9 +34,9 @@
41
34
  <script>
42
35
  var radioElement = document.querySelector("#<%=object.id%> input[type=radio]")
43
36
 
44
- radioElement.addEventListener("change", () => {
37
+ radioElement.addEventListener("change", () => {
45
38
  var radios = radioElement.closest("ul").querySelectorAll("input[type=radio]")
46
-
39
+
47
40
  radios.forEach((radio) => {
48
41
  if (radio.checked) {
49
42
  radio.closest("li").classList.add("checked_item");
@@ -6,9 +6,6 @@ module Playbook
6
6
  prop :tabindex
7
7
  prop :checked, type: Playbook::Props::Boolean,
8
8
  default: false
9
- prop :drag_handle, type: Playbook::Props::Boolean,
10
- default: true
11
- prop :drag_id, type: Playbook::Props::String
12
9
  prop :name, type: Playbook::Props::String
13
10
  prop :text, type: Playbook::Props::String
14
11
  prop :value, type: Playbook::Props::String
@@ -2,6 +2,7 @@ import React, { useEffect } from 'react'
2
2
  import classnames from 'classnames'
3
3
  import { buildAriaProps, buildDataProps, buildHtmlProps } from '../utilities/props'
4
4
  import { globalProps, GlobalProps, globalInlineProps } from '../utilities/globalProps'
5
+ import PbTable from '.'
5
6
  import {
6
7
  TableHead,
7
8
  TableHeader,
@@ -9,7 +10,6 @@ import {
9
10
  TableRow,
10
11
  TableCell,
11
12
  } from "./subcomponents";
12
- import { addDataTitle } from './utilities/addDataTitle'
13
13
 
14
14
  type TableProps = {
15
15
  aria?: { [key: string]: string },
@@ -196,7 +196,8 @@ const Table = (props: TableProps): React.ReactElement => {
196
196
  }, [stickyRightColumn]);
197
197
 
198
198
  useEffect(() => {
199
- addDataTitle()
199
+ const instance = new PbTable()
200
+ instance.connect()
200
201
  }, [])
201
202
 
202
203
  return (
@@ -1,3 +1,3 @@
1
- The `sticky_left_column` prop expects an array of the column ids you want to be sticky. Make sure to add the corresponding id to the `<th>` and `<td>`.
1
+ The `stickyLeftColumn` prop expects an array of the column ids you want to be sticky. Make sure to add the corresponding id to the `<th>` and `<td>`.
2
2
 
3
- Please ensure that unique ids are used for all columns across multiple tables. Using the same columns ids on multiple tables can lead to issues when using the `sticky_left_column`.
3
+ Please ensure that unique ids are used for all columns across multiple tables. Using the same columns ids on multiple tables can lead to issues when using the `stickyLeftColumn`.
@@ -5,8 +5,6 @@ examples:
5
5
  - table_lg: Large
6
6
  - table_sticky: Sticky Header
7
7
  - table_sticky_left_columns: Sticky Left Column
8
- - table_sticky_right_columns: Sticky Right Column
9
- - table_sticky_columns: Sticky Left and Right Columns
10
8
  - table_header: Table Header
11
9
  - table_alignment_row_rails: Row Alignment
12
10
  - table_alignment_column_rails: Cell Alignment
@@ -1,67 +1,73 @@
1
1
  import PbEnhancedElement from '../pb_enhanced_element'
2
2
 
3
- const TABLE_WRAPPER_SELECTOR = "[data-pb-table-wrapper]";
4
-
5
3
  export default class PbTable extends PbEnhancedElement {
6
- stickyLeftColumns: string[] = [];
7
- stickyRightColumns: string[] = [];
8
- stickyRightColumnsReversed: string[] = [];
4
+ private stickyLeftColumns: string[] = [];
5
+ private handleStickyLeftColumnsRef: () => void;
9
6
 
10
7
  static get selector(): string {
11
- return TABLE_WRAPPER_SELECTOR;
8
+ return '.table-responsive-collapse'
12
9
  }
13
10
 
14
- connect() {
15
- if (this.element.classList.contains('table-responsive-collapse')) {
11
+ connect(): void {
12
+ const tables = document.querySelectorAll('.table-responsive-collapse');
13
+ // Each Table
14
+ [].forEach.call(tables, (table: HTMLTableElement) => {
15
+ // Header Titles
16
16
  const headers: string[] = [];
17
-
18
- [].forEach.call(this.element.querySelectorAll('th'), (header: HTMLTableCellElement) => {
17
+ [].forEach.call(table.querySelectorAll('th'), (header: HTMLTableCellElement) => {
19
18
  const colSpan = header.colSpan
20
19
  for (let i = 0; i < colSpan; i++) {
21
20
  headers.push(header.textContent.replace(/\r?\n|\r/, ''));
22
21
  }
23
22
  });
24
-
25
- [].forEach.call(this.element.querySelectorAll('tbody tr'), (row: HTMLTableRowElement) => {
23
+ // for each row in tbody
24
+ [].forEach.call(table.querySelectorAll('tbody tr'), (row: HTMLTableRowElement) => {
25
+ // for each cell
26
26
  [].forEach.call(row.cells, (cell: HTMLTableCellElement, headerIndex: number) => {
27
+ // apply the attribute
27
28
  cell.setAttribute('data-title', headers[headerIndex])
28
29
  })
29
30
  })
30
- }
31
+ });
31
32
 
33
+ // New sticky columns logic
32
34
  this.initStickyLeftColumns();
33
- this.initStickyRightColumns();
34
35
  }
35
36
 
36
- initStickyLeftColumns() {
37
- const table = this.element.querySelector('.sticky-left-column');
37
+ private initStickyLeftColumns(): void {
38
+ // Find tables with sticky-left-column class
39
+ const tables = document.querySelectorAll('.sticky-left-column');
38
40
 
39
- if (table) {
41
+ tables.forEach((table) => {
42
+ // Extract sticky left column IDs by looking at the component's class
40
43
  const classList = Array.from(table.classList);
41
- const stickyColumnClass = classList.find(cls => cls.startsWith('sticky-left-columns-ids-'));
42
44
 
45
+ // Look for classes in the format sticky-left-column-{ids}
46
+ const stickyColumnClass = classList.find(cls => cls.startsWith('sticky-columns-'));
43
47
  if (stickyColumnClass) {
48
+ // Extract the IDs from the class name
44
49
  this.stickyLeftColumns = stickyColumnClass
45
- .replace('sticky-left-columns-ids-', '')
46
- .split('-');
50
+ .replace('sticky-columns-', '')
51
+ .split('-');
47
52
 
48
53
  if (this.stickyLeftColumns.length > 0) {
49
54
  setTimeout(() => {
55
+ this.handleStickyLeftColumnsRef = this.handleStickyLeftColumns.bind(this);
50
56
  this.handleStickyLeftColumns();
51
- window.addEventListener('resize', () => this.handleStickyLeftColumns());
57
+ window.addEventListener('resize', this.handleStickyLeftColumnsRef);
52
58
  }, 10);
53
59
  }
54
60
  }
55
- }
61
+ });
56
62
  }
57
63
 
58
- handleStickyLeftColumns() {
64
+ private handleStickyLeftColumns(): void {
59
65
  let accumulatedWidth = 0;
60
66
 
61
67
  this.stickyLeftColumns.forEach((colId, index) => {
62
68
  const isLastColumn = index === this.stickyLeftColumns.length - 1;
63
- const header = this.element.querySelector(`th[id="${colId}"]`);
64
- const cells = this.element.querySelectorAll(`td[id="${colId}"]`);
69
+ const header = document.querySelector(`th[id="${colId}"]`);
70
+ const cells = document.querySelectorAll(`td[id="${colId}"]`);
65
71
 
66
72
  if (header) {
67
73
  header.classList.add('sticky');
@@ -93,75 +99,10 @@ export default class PbTable extends PbEnhancedElement {
93
99
  });
94
100
  }
95
101
 
96
- initStickyRightColumns() {
97
- const table = this.element.querySelector('.sticky-right-column');
98
-
99
- if (table) {
100
- const classList = Array.from(table.classList);
101
- const stickyColumnClass = classList.find(cls => cls.startsWith('sticky-right-columns-ids-'));
102
-
103
- if (stickyColumnClass) {
104
- this.stickyRightColumns = stickyColumnClass
105
- .replace('sticky-right-columns-ids-', '')
106
- .split('-');
107
- this.stickyRightColumnsReversed = this.stickyRightColumns.reverse();
108
-
109
- if (this.stickyRightColumns.length > 0) {
110
- setTimeout(() => {
111
- this.handleStickyRightColumns();
112
- window.addEventListener('resize', () => this.handleStickyRightColumns());
113
- }, 10);
114
- }
115
- }
116
- }
117
- }
118
-
119
- handleStickyRightColumns() {
120
- let accumulatedWidth = 0;
121
-
122
- this.stickyRightColumnsReversed.forEach((colId, index) => {
123
- const isLastColumn = index === this.stickyRightColumns.length - 1;
124
- const header = this.element.querySelector(`th[id="${colId}"]`);
125
- const cells = this.element.querySelectorAll(`td[id="${colId}"]`);
126
-
127
- if (header) {
128
- header.classList.add('sticky');
129
- (header as HTMLElement).style.right = `${accumulatedWidth}px`;
130
-
131
- if (!isLastColumn) {
132
- header.classList.add('with-border-left');
133
- header.classList.remove('sticky-right-shadow');
134
- } else {
135
- header.classList.remove('with-border-right');
136
- header.classList.add('sticky-right-shadow');
137
- }
138
-
139
- accumulatedWidth += (header as HTMLElement).offsetWidth;
140
- }
141
-
142
- cells.forEach((cell) => {
143
- cell.classList.add('sticky');
144
- (cell as HTMLElement).style.right = `${accumulatedWidth - (header as HTMLElement).offsetWidth}px`;
145
-
146
- if (!isLastColumn) {
147
- cell.classList.add('with-border-left');
148
- cell.classList.remove('sticky-right-shadow');
149
- } else {
150
- cell.classList.remove('with-border-left');
151
- cell.classList.add('sticky-right-shadow');
152
- }
153
- });
154
- });
155
- }
156
-
157
102
  // Cleanup method to remove event listener
158
- disconnect() {
159
- if (this.stickyLeftColumns.length > 0) {
160
- window.removeEventListener('resize', () => this.handleStickyLeftColumns());
161
- }
162
-
163
- if (this.stickyRightColumns.length > 0) {
164
- window.removeEventListener('resize', () => this.handleStickyRightColumns());
103
+ disconnect(): void {
104
+ if (this.handleStickyLeftColumnsRef) {
105
+ window.removeEventListener('resize', this.handleStickyLeftColumnsRef);
165
106
  }
166
107
  }
167
108
  }
@@ -1,7 +1,7 @@
1
1
  @import "../../tokens/screen_sizes";
2
- @import "../../tokens/border_radius";
3
2
 
4
3
  .table-responsive-scroll {
4
+ display: block;
5
5
  overflow-x: scroll;
6
6
 
7
7
  // hides duplicate scroll bar for those that see two (byproduct of repeated table-responsive-scroll class
@@ -27,12 +27,11 @@
27
27
  // Responsive Styles
28
28
  @media (max-width: 1600px) {
29
29
  &[class*="table-responsive-scroll"] {
30
- &:has(> table.table-card) {
31
- border-radius: $border_rad_light;
32
- box-shadow: 1px 0 0 0px $border_light,
30
+ border-radius: 4px;
31
+ box-shadow: 1px 0 0 0px $border_light,
33
32
  -1px 0 0 0px $border_light
34
- }
35
- }
33
+ }
34
+
36
35
  &[class^=pb_table].table-sm.table-card thead tr th:first-child,
37
36
  &[class^=pb_table].table-sm:not(.no-hover).table-card tbody tr td:first-child {
38
37
  border-left-width: 0px;
@@ -4,7 +4,7 @@
4
4
  <% responsive_class = nil %>
5
5
  <% end %>
6
6
 
7
- <%= content_tag(:div, class: responsive_class, 'data-pb-table-wrapper' => true) do %>
7
+ <%= content_tag(:div, class: responsive_class) do %>
8
8
  <% if object.tag == "table" %>
9
9
  <%= content_tag(:table,
10
10
  aria: object.aria,
@@ -25,8 +25,6 @@ module Playbook
25
25
  default: false
26
26
  prop :sticky_left_column, type: Playbook::Props::Array,
27
27
  default: []
28
- prop :sticky_right_column, type: Playbook::Props::Array,
29
- default: []
30
28
  prop :vertical_border, type: Playbook::Props::Boolean,
31
29
  default: false
32
30
  prop :striped, type: Playbook::Props::Boolean,
@@ -42,7 +40,7 @@ module Playbook
42
40
  generate_classname(
43
41
  "pb_table", "table-#{size}", single_line_class, dark_class,
44
42
  disable_hover_class, container_class, data_table_class, sticky_class, sticky_left_column_class,
45
- sticky_right_column_class, collapse_class, vertical_border_class, striped_class, outer_padding_class,
43
+ collapse_class, vertical_border_class, striped_class, outer_padding_class,
46
44
  "table-responsive-#{responsive}", separator: " "
47
45
  )
48
46
  end
@@ -85,7 +83,7 @@ module Playbook
85
83
  if sticky_left_column.empty?
86
84
  nil
87
85
  else
88
- sticky_col_classname = "sticky-left-column sticky-left-columns-ids"
86
+ sticky_col_classname = "sticky-left-column sticky-columns"
89
87
  sticky_left_column.each do |id|
90
88
  sticky_col_classname += "-#{id}"
91
89
  end
@@ -94,19 +92,6 @@ module Playbook
94
92
  end
95
93
  end
96
94
 
97
- def sticky_right_column_class
98
- if sticky_right_column.empty?
99
- nil
100
- else
101
- sticky_col_classname = "sticky-right-column sticky-right-columns-ids"
102
- sticky_right_column.each do |id|
103
- sticky_col_classname += "-#{id}"
104
- end
105
-
106
- sticky_col_classname
107
- end
108
- end
109
-
110
95
  def striped_class
111
96
  striped ? "striped" : nil
112
97
  end
@@ -1,4 +1,4 @@
1
- import{jsx as jsx$1,Fragment,jsxs}from"react/jsx-runtime";import*as React from"react";import React__default,{createContext,useReducer,useEffect,useMemo,useContext,useRef,createElement,useState,forwardRef,useLayoutEffect,useCallback,useImperativeHandle,Component,Fragment as Fragment$1}from"react";import{r as getDefaultExportFromCjs,x as filter,y as omit,u as useCollapsible,j as getAllIcons,z as get,q as commonjsGlobal,w as colors$1,t as highchartsTheme,A as merge,s as highchartsDarkTheme,B as getAugmentedNamespace,C as createPopper,E as uniqueId,F as typography,G as cloneDeep,H as isString}from"./lib-OFT985dg.js";import*as ReactDOM from"react-dom";import ReactDOM__default,{createPortal}from"react-dom";import{TrixEditor}from"react-trix";import Trix from"trix";import require$$0 from"react-is";const initialState={items:[],dragData:{id:"",initialGroup:""},isDragging:"",activeContainer:""};const reducer=(state,action)=>{switch(action.type){case"SET_ITEMS":return Object.assign(Object.assign({},state),{items:action.payload});case"SET_DRAG_DATA":return Object.assign(Object.assign({},state),{dragData:action.payload});case"SET_IS_DRAGGING":return Object.assign(Object.assign({},state),{isDragging:action.payload});case"SET_ACTIVE_CONTAINER":return Object.assign(Object.assign({},state),{activeContainer:action.payload});case"CHANGE_CATEGORY":return Object.assign(Object.assign({},state),{items:state.items.map((item=>item.id===action.payload.itemId?Object.assign(Object.assign({},item),{container:action.payload.container}):item))});case"REORDER_ITEMS":{const{dragId:dragId,targetId:targetId}=action.payload;const newItems=[...state.items];const draggedItem=newItems.find((item=>item.id===dragId));const draggedIndex=newItems.indexOf(draggedItem);const targetIndex=newItems.findIndex((item=>item.id===targetId));newItems.splice(draggedIndex,1);newItems.splice(targetIndex,0,draggedItem);return Object.assign(Object.assign({},state),{items:newItems})}default:return state}};const DragContext=createContext({});const DraggableContext=()=>useContext(DragContext);const DraggableProvider=({children:children,initialItems:initialItems,onReorder:onReorder,onDragStart:onDragStart,onDragEnter:onDragEnter,onDragEnd:onDragEnd,onDrop:onDrop,onDragOver:onDragOver})=>{const[state,dispatch]=useReducer(reducer,initialState);useEffect((()=>{dispatch({type:"SET_ITEMS",payload:initialItems})}),[initialItems]);useEffect((()=>{onReorder(state.items)}),[state.items]);const handleDragStart=(id,container)=>{dispatch({type:"SET_DRAG_DATA",payload:{id:id,initialGroup:container}});dispatch({type:"SET_IS_DRAGGING",payload:id});if(onDragStart)onDragStart(id,container)};const handleDragEnter=(id,container)=>{if(state.dragData.id!==id){dispatch({type:"REORDER_ITEMS",payload:{dragId:state.dragData.id,targetId:id}});dispatch({type:"SET_DRAG_DATA",payload:{id:state.dragData.id,initialGroup:container}})}if(onDragEnter)onDragEnter(id,container)};const handleDragEnd=()=>{dispatch({type:"SET_IS_DRAGGING",payload:""});dispatch({type:"SET_ACTIVE_CONTAINER",payload:""});if(onDragEnd)onDragEnd()};const changeCategory=(itemId,container)=>{dispatch({type:"CHANGE_CATEGORY",payload:{itemId:itemId,container:container}})};const handleDrop=container=>{dispatch({type:"SET_IS_DRAGGING",payload:""});dispatch({type:"SET_ACTIVE_CONTAINER",payload:""});changeCategory(state.dragData.id,container);if(onDrop)onDrop(container)};const handleDragOver=(e,container)=>{e.preventDefault();dispatch({type:"SET_ACTIVE_CONTAINER",payload:container});if(onDragOver)onDragOver(e,container)};const contextValue=useMemo((()=>({items:state.items,dragData:state.dragData,isDragging:state.isDragging,activeContainer:state.activeContainer,handleDragStart:handleDragStart,handleDragEnter:handleDragEnter,handleDragEnd:handleDragEnd,handleDrop:handleDrop,handleDragOver:handleDragOver})),[state]);return jsx$1(DragContext.Provider,Object.assign({value:contextValue},{children:children}),void 0)};var classnames$1={exports:{}};
1
+ import{jsx as jsx$1,Fragment,jsxs}from"react/jsx-runtime";import*as React from"react";import React__default,{createContext,useReducer,useEffect,useMemo,useContext,useRef,createElement,useState,forwardRef,useLayoutEffect,useCallback,useImperativeHandle,Component,Fragment as Fragment$1}from"react";import{r as getDefaultExportFromCjs,x as filter,y as omit,u as useCollapsible,j as getAllIcons,z as get,q as commonjsGlobal,w as colors$1,t as highchartsTheme,A as merge,s as highchartsDarkTheme,B as getAugmentedNamespace,C as createPopper,E as uniqueId,F as typography,G as cloneDeep,H as isString}from"./lib-B7sgJtGS.js";import*as ReactDOM from"react-dom";import ReactDOM__default,{createPortal}from"react-dom";import{TrixEditor}from"react-trix";import Trix from"trix";import require$$0 from"react-is";const initialState={items:[],dragData:{id:"",initialGroup:""},isDragging:"",activeContainer:""};const reducer=(state,action)=>{switch(action.type){case"SET_ITEMS":return Object.assign(Object.assign({},state),{items:action.payload});case"SET_DRAG_DATA":return Object.assign(Object.assign({},state),{dragData:action.payload});case"SET_IS_DRAGGING":return Object.assign(Object.assign({},state),{isDragging:action.payload});case"SET_ACTIVE_CONTAINER":return Object.assign(Object.assign({},state),{activeContainer:action.payload});case"CHANGE_CATEGORY":return Object.assign(Object.assign({},state),{items:state.items.map((item=>item.id===action.payload.itemId?Object.assign(Object.assign({},item),{container:action.payload.container}):item))});case"REORDER_ITEMS":{const{dragId:dragId,targetId:targetId}=action.payload;const newItems=[...state.items];const draggedItem=newItems.find((item=>item.id===dragId));const draggedIndex=newItems.indexOf(draggedItem);const targetIndex=newItems.findIndex((item=>item.id===targetId));newItems.splice(draggedIndex,1);newItems.splice(targetIndex,0,draggedItem);return Object.assign(Object.assign({},state),{items:newItems})}default:return state}};const DragContext=createContext({});const DraggableContext=()=>useContext(DragContext);const DraggableProvider=({children:children,initialItems:initialItems,onReorder:onReorder,onDragStart:onDragStart,onDragEnter:onDragEnter,onDragEnd:onDragEnd,onDrop:onDrop,onDragOver:onDragOver})=>{const[state,dispatch]=useReducer(reducer,initialState);useEffect((()=>{dispatch({type:"SET_ITEMS",payload:initialItems})}),[initialItems]);useEffect((()=>{onReorder(state.items)}),[state.items]);const handleDragStart=(id,container)=>{dispatch({type:"SET_DRAG_DATA",payload:{id:id,initialGroup:container}});dispatch({type:"SET_IS_DRAGGING",payload:id});if(onDragStart)onDragStart(id,container)};const handleDragEnter=(id,container)=>{if(state.dragData.id!==id){dispatch({type:"REORDER_ITEMS",payload:{dragId:state.dragData.id,targetId:id}});dispatch({type:"SET_DRAG_DATA",payload:{id:state.dragData.id,initialGroup:container}})}if(onDragEnter)onDragEnter(id,container)};const handleDragEnd=()=>{dispatch({type:"SET_IS_DRAGGING",payload:""});dispatch({type:"SET_ACTIVE_CONTAINER",payload:""});if(onDragEnd)onDragEnd()};const changeCategory=(itemId,container)=>{dispatch({type:"CHANGE_CATEGORY",payload:{itemId:itemId,container:container}})};const handleDrop=container=>{dispatch({type:"SET_IS_DRAGGING",payload:""});dispatch({type:"SET_ACTIVE_CONTAINER",payload:""});changeCategory(state.dragData.id,container);if(onDrop)onDrop(container)};const handleDragOver=(e,container)=>{e.preventDefault();dispatch({type:"SET_ACTIVE_CONTAINER",payload:container});if(onDragOver)onDragOver(e,container)};const contextValue=useMemo((()=>({items:state.items,dragData:state.dragData,isDragging:state.isDragging,activeContainer:state.activeContainer,handleDragStart:handleDragStart,handleDragEnter:handleDragEnter,handleDragEnd:handleDragEnd,handleDrop:handleDrop,handleDragOver:handleDragOver})),[state]);return jsx$1(DragContext.Provider,Object.assign({value:contextValue},{children:children}),void 0)};var classnames$1={exports:{}};
2
2
  /*!
3
3
  Copyright (c) 2018 Jed Watson.
4
4
  Licensed under the MIT License (MIT), see