playbook_ui 14.10.0.pre.alpha.PBNTR775formmatingmaskdefaultvalue5137 → 14.10.0.pre.alpha.play1662cssbargraph5200

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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +32 -19
  3. data/app/pb_kits/playbook/pb_advanced_table/SubKits/TableBody.tsx +3 -1
  4. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +37 -0
  5. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +32 -18
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers.jsx +60 -0
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers.md +1 -0
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_multiple.jsx +74 -0
  9. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_multiple.md +1 -0
  10. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +2 -0
  11. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +2 -0
  12. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.tsx +3 -0
  13. data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.html.erb +1 -1
  14. data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.rb +1 -0
  15. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_link.html.erb +8 -0
  16. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_link.jsx +9 -0
  17. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_link.md +1 -0
  18. data/app/pb_kits/playbook/pb_dashboard/BarGraphStyles.css +53 -0
  19. data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.scss +1 -13
  20. data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +64 -1
  21. data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +3 -1
  22. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_color.html.erb +10 -0
  23. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_color.jsx +42 -0
  24. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_color.md +3 -0
  25. data/app/pb_kits/playbook/pb_section_separator/docs/example.yml +2 -0
  26. data/app/pb_kits/playbook/pb_section_separator/docs/index.js +1 -0
  27. data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +4 -1
  28. data/app/pb_kits/playbook/pb_skeleton_loading/_skeleton_loading.scss +2 -2
  29. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_description.md +3 -0
  30. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_border_radius.html.erb +9 -0
  31. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_border_radius_rails.md +1 -0
  32. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_color.html.erb +7 -0
  33. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_default.html.erb +1 -1
  34. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_filter.html.erb +119 -0
  35. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_filter.jsx +10 -2
  36. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_height_width.html.erb +15 -0
  37. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_height_width.jsx +6 -2
  38. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_height_width_rails.md +3 -0
  39. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_layout.html.erb +3 -0
  40. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_user.html.erb +63 -0
  41. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_user.jsx +11 -3
  42. data/app/pb_kits/playbook/pb_skeleton_loading/docs/example.yml +7 -2
  43. data/app/pb_kits/playbook/pb_skeleton_loading/skeleton_loading.html.erb +8 -12
  44. data/app/pb_kits/playbook/pb_skeleton_loading/skeleton_loading.rb +48 -1
  45. data/app/pb_kits/playbook/pb_table/_table.tsx +67 -18
  46. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns.jsx +88 -0
  47. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns_react.md +3 -0
  48. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns.jsx +1 -1
  49. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns_rails.md +2 -0
  50. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns_react.md +4 -1
  51. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns.jsx +87 -0
  52. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns_react.md +5 -0
  53. data/app/pb_kits/playbook/pb_table/index.ts +17 -17
  54. data/app/pb_kits/playbook/pb_table/styles/_scroll.scss +18 -2
  55. data/app/pb_kits/playbook/pb_table/styles/_sticky_columns.scss +17 -3
  56. data/dist/chunks/{_typeahead-CoIYBETL.js → _typeahead-gJLWiR0r.js} +2 -2
  57. data/dist/chunks/_weekday_stacked-7XLAG_Yz.js +45 -0
  58. data/dist/chunks/{lib-sMFo2JZy.js → lib-B7sgJtGS.js} +1 -1
  59. data/dist/chunks/{pb_form_validation-CgvjWbOK.js → pb_form_validation-C5Cc0-1v.js} +1 -1
  60. data/dist/chunks/vendor.js +1 -1
  61. data/dist/menu.yml +1 -1
  62. data/dist/playbook-doc.js +1 -1
  63. data/dist/playbook-rails-react-bindings.js +1 -1
  64. data/dist/playbook-rails.js +1 -1
  65. data/dist/playbook.css +1 -1
  66. data/lib/playbook/version.rb +1 -1
  67. metadata +30 -8
  68. data/dist/chunks/_weekday_stacked-Qj3GFYzA.js +0 -45
  69. /data/app/pb_kits/playbook/pb_skeleton_loading/docs/{_skeleton_loading_border_radius.md → _skeleton_loading_border_radius_react.md} +0 -0
  70. /data/app/pb_kits/playbook/pb_skeleton_loading/docs/{_skeleton_loading_height_width.md → _skeleton_loading_height_width_react.md} +0 -0
@@ -28,7 +28,8 @@ type TableProps = {
28
28
  singleLine?: boolean,
29
29
  size?: "sm" | "md" | "lg",
30
30
  sticky?: boolean,
31
- stickyLeftcolumn?: string[],
31
+ stickyLeftColumn?: string[],
32
+ stickyRightColumn?: string[],
32
33
  striped?: boolean,
33
34
  tag?: "table" | "div",
34
35
  verticalBorder?: boolean,
@@ -52,7 +53,8 @@ const Table = (props: TableProps): React.ReactElement => {
52
53
  singleLine = false,
53
54
  size = 'sm',
54
55
  sticky = false,
55
- stickyLeftcolumn = [],
56
+ stickyLeftColumn = [],
57
+ stickyRightColumn= [],
56
58
  striped = false,
57
59
  tag = 'table',
58
60
  verticalBorder = false,
@@ -79,7 +81,8 @@ const Table = (props: TableProps): React.ReactElement => {
79
81
  'single-line': singleLine,
80
82
  'no-hover': disableHover,
81
83
  'sticky-header': sticky,
82
- 'sticky-left-column': stickyLeftcolumn,
84
+ 'sticky-left-column': stickyLeftColumn,
85
+ 'sticky-right-column': stickyRightColumn,
83
86
  'striped': striped,
84
87
  [outerPaddingCss]: outerPadding !== '',
85
88
  },
@@ -90,11 +93,12 @@ const Table = (props: TableProps): React.ReactElement => {
90
93
  )
91
94
 
92
95
  useEffect(() => {
93
- const handleStickyColumns = () => {
96
+ const handleStickyLeftColumns = () => {
97
+ if (!stickyLeftColumn.length) return;
94
98
  let accumulatedWidth = 0;
95
99
 
96
- stickyLeftcolumn.forEach((colId, index) => {
97
- const isLastColumn = index === stickyLeftcolumn.length - 1;
100
+ stickyLeftColumn.forEach((colId, index) => {
101
+ const isLastColumn = index === stickyLeftColumn.length - 1;
98
102
  const header = document.querySelector(`th[id="${colId}"]`);
99
103
  const cells = document.querySelectorAll(`td[id="${colId}"]`);
100
104
 
@@ -103,11 +107,11 @@ const Table = (props: TableProps): React.ReactElement => {
103
107
  (header as HTMLElement).style.left = `${accumulatedWidth}px`;
104
108
 
105
109
  if (!isLastColumn) {
106
- header.classList.add('with-border');
107
- header.classList.remove('sticky-shadow');
110
+ header.classList.add('with-border-right');
111
+ header.classList.remove('sticky-left-shadow');
108
112
  } else {
109
- header.classList.remove('with-border');
110
- header.classList.add('sticky-shadow');
113
+ header.classList.remove('with-border-right');
114
+ header.classList.add('sticky-left-shadow');
111
115
  }
112
116
 
113
117
  accumulatedWidth += (header as HTMLElement).offsetWidth;
@@ -118,26 +122,71 @@ const Table = (props: TableProps): React.ReactElement => {
118
122
  (cell as HTMLElement).style.left = `${accumulatedWidth - (header as HTMLElement).offsetWidth}px`;
119
123
 
120
124
  if (!isLastColumn) {
121
- cell.classList.add('with-border');
122
- cell.classList.remove('sticky-shadow');
125
+ cell.classList.add('with-border-right');
126
+ cell.classList.remove('sticky-left-shadow');
123
127
  } else {
124
- cell.classList.remove('with-border');
125
- cell.classList.add('sticky-shadow');
128
+ cell.classList.remove('with-border-right');
129
+ cell.classList.add('sticky-left-shadow');
126
130
  }
127
131
  });
128
132
  });
129
133
  };
130
134
 
131
135
  setTimeout(() => {
132
- handleStickyColumns();
136
+ handleStickyLeftColumns();
133
137
  }, 10);
134
138
 
135
- window.addEventListener('resize', handleStickyColumns);
139
+ window.addEventListener('resize', handleStickyLeftColumns);
136
140
 
137
141
  return () => {
138
- window.removeEventListener('resize', handleStickyColumns);
142
+ window.removeEventListener('resize', handleStickyLeftColumns);
139
143
  };
140
- }, [stickyLeftcolumn]);
144
+ }, [stickyLeftColumn]);
145
+
146
+ useEffect(() => {
147
+ const handleStickyRightColumns = () => {
148
+ if (!stickyRightColumn.length) return;
149
+ let accumulatedWidth = 0;
150
+
151
+ stickyRightColumn.reverse().forEach((colId, index) => {
152
+ const isLastColumn = index === stickyRightColumn.length - 1;
153
+ const header = document.querySelector(`th[id="${colId}"]`);
154
+ const cells = document.querySelectorAll(`td[id="${colId}"]`);
155
+
156
+ if (header) {
157
+ header.classList.add('sticky');
158
+ (header as HTMLElement).style.right = `${accumulatedWidth}px`;
159
+
160
+ if (!isLastColumn) {
161
+ header.classList.add('with-border-left');
162
+ header.classList.remove('sticky-right-shadow');
163
+ } else {
164
+ header.classList.remove('with-border-left');
165
+ header.classList.add('sticky-right-shadow');
166
+ }
167
+
168
+ accumulatedWidth += (header as HTMLElement).offsetWidth;
169
+ }
170
+
171
+ cells.forEach((cell) => {
172
+ cell.classList.add('sticky');
173
+ (cell as HTMLElement).style.right = `${accumulatedWidth - (header as HTMLElement).offsetWidth}px`;
174
+
175
+ if (!isLastColumn) {
176
+ cell.classList.add('with-border-left');
177
+ cell.classList.remove('sticky-right-shadow');
178
+ } else {
179
+ cell.classList.remove('with-border-left');
180
+ cell.classList.add('sticky-right-shadow');
181
+ }
182
+ });
183
+ });
184
+ };
185
+
186
+ setTimeout(() => {
187
+ handleStickyRightColumns();
188
+ }, 10);
189
+ }, [stickyRightColumn]);
141
190
 
142
191
  useEffect(() => {
143
192
  const instance = new PbTable()
@@ -0,0 +1,88 @@
1
+ import React from 'react'
2
+ import Table from '../_table'
3
+
4
+ const TableStickyColumns = () => {
5
+ return (
6
+ <Table
7
+ responsive="scroll"
8
+ size="md"
9
+ stickyLeftColumn={["a"]}
10
+ stickyRightColumn={["b"]}
11
+ >
12
+ <thead>
13
+ <tr>
14
+ <th id="a">{'Column 1'}</th>
15
+ <th>{'Column 2'}</th>
16
+ <th>{'Column 3'}</th>
17
+ <th>{'Column 4'}</th>
18
+ <th>{'Column 5'}</th>
19
+ <th>{'Column 6'}</th>
20
+ <th>{'Column 7'}</th>
21
+ <th>{'Column 8'}</th>
22
+ <th>{'Column 9'}</th>
23
+ <th>{'Column 10'}</th>
24
+ <th>{'Column 11'}</th>
25
+ <th>{'Column 12'}</th>
26
+ <th>{'Column 13'}</th>
27
+ <th>{'Column 14'}</th>
28
+ <th id="b">{'Column 15'}</th>
29
+ </tr>
30
+ </thead>
31
+ <tbody>
32
+ <tr>
33
+ <td id="a">{'Value 1'}</td>
34
+ <td>{'Value 2'}</td>
35
+ <td>{'Value 3'}</td>
36
+ <td>{'Value 4'}</td>
37
+ <td>{'Value 5'}</td>
38
+ <td>{'Value 6'}</td>
39
+ <td>{'Value 7'}</td>
40
+ <td>{'Value 8'}</td>
41
+ <td>{'Value 9'}</td>
42
+ <td>{'Value 10'}</td>
43
+ <td>{'Value 11'}</td>
44
+ <td>{'Value 12'}</td>
45
+ <td>{'Value 13'}</td>
46
+ <td>{'Value 14'}</td>
47
+ <td id="b">{'Value 15'}</td>
48
+ </tr>
49
+ <tr>
50
+ <td id="a">{'Value 1'}</td>
51
+ <td>{'Value 2'}</td>
52
+ <td>{'Value 3'}</td>
53
+ <td>{'Value 4'}</td>
54
+ <td>{'Value 5'}</td>
55
+ <td>{'Value 6'}</td>
56
+ <td>{'Value 7'}</td>
57
+ <td>{'Value 8'}</td>
58
+ <td>{'Value 9'}</td>
59
+ <td>{'Value 10'}</td>
60
+ <td>{'Value 11'}</td>
61
+ <td>{'Value 12'}</td>
62
+ <td>{'Value 13'}</td>
63
+ <td>{'Value 14'}</td>
64
+ <td id="b">{'Value 15'}</td>
65
+ </tr>
66
+ <tr>
67
+ <td id="a">{'Value 1'}</td>
68
+ <td>{'Value 2'}</td>
69
+ <td>{'Value 3'}</td>
70
+ <td>{'Value 4'}</td>
71
+ <td>{'Value 5'}</td>
72
+ <td>{'Value 6'}</td>
73
+ <td>{'Value 7'}</td>
74
+ <td>{'Value 8'}</td>
75
+ <td>{'Value 9'}</td>
76
+ <td>{'Value 10'}</td>
77
+ <td>{'Value 11'}</td>
78
+ <td>{'Value 12'}</td>
79
+ <td>{'Value 13'}</td>
80
+ <td>{'Value 14'}</td>
81
+ <td id="b">{'Value 15'}</td>
82
+ </tr>
83
+ </tbody>
84
+ </Table>
85
+ )
86
+ }
87
+
88
+ export default TableStickyColumns
@@ -0,0 +1,3 @@
1
+ The `stickyLeftColumn` and `stickyRightColumn` props can be used together on the same table as needed.
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 props.
@@ -6,7 +6,7 @@ const TableStickyLeftColumns = () => {
6
6
  <Table
7
7
  responsive="scroll"
8
8
  size="md"
9
- stickyLeftcolumn={["1", "2", "3"]}
9
+ stickyLeftColumn={["1", "2", "3"]}
10
10
  >
11
11
  <thead>
12
12
  <tr>
@@ -1 +1,3 @@
1
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
+
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`.
@@ -1,2 +1,5 @@
1
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
- If you are using the sub-component variant, then you will pass the id to `<Table.Header>` and `<Table.Cell>`
2
+
3
+ If you are using the sub-component variant, then you will pass the id to `<Table.Header>` and `<Table.Cell>`
4
+
5
+ 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 `stickyLeftColumn` prop.
@@ -0,0 +1,87 @@
1
+ import React from 'react'
2
+ import Table from '../_table'
3
+
4
+ const TableStickyRightColumns = () => {
5
+ return (
6
+ <Table
7
+ responsive="scroll"
8
+ size="md"
9
+ stickyRightColumn={["13", "14", "15"]}
10
+ >
11
+ <thead>
12
+ <tr>
13
+ <th>{'Column 1'}</th>
14
+ <th>{'Column 2'}</th>
15
+ <th>{'Column 3'}</th>
16
+ <th>{'Column 4'}</th>
17
+ <th>{'Column 5'}</th>
18
+ <th>{'Column 6'}</th>
19
+ <th>{'Column 7'}</th>
20
+ <th>{'Column 8'}</th>
21
+ <th>{'Column 9'}</th>
22
+ <th>{'Column 10'}</th>
23
+ <th>{'Column 11'}</th>
24
+ <th>{'Column 12'}</th>
25
+ <th id="13">{'Column 13'}</th>
26
+ <th id="14">{'Column 14'}</th>
27
+ <th id="15">{'Column 15'}</th>
28
+ </tr>
29
+ </thead>
30
+ <tbody>
31
+ <tr>
32
+ <td>{'Value 1'}</td>
33
+ <td>{'Value 2'}</td>
34
+ <td>{'Value 3'}</td>
35
+ <td>{'Value 4'}</td>
36
+ <td>{'Value 5'}</td>
37
+ <td>{'Value 6'}</td>
38
+ <td>{'Value 7'}</td>
39
+ <td>{'Value 8'}</td>
40
+ <td>{'Value 9'}</td>
41
+ <td>{'Value 10'}</td>
42
+ <td>{'Value 11'}</td>
43
+ <td>{'Value 12'}</td>
44
+ <td id="13">{'Value 13'}</td>
45
+ <td id="14">{'Value 14'}</td>
46
+ <td id="15">{'Value 15'}</td>
47
+ </tr>
48
+ <tr>
49
+ <td>{'Value 1'}</td>
50
+ <td>{'Value 2'}</td>
51
+ <td>{'Value 3'}</td>
52
+ <td>{'Value 4'}</td>
53
+ <td>{'Value 5'}</td>
54
+ <td>{'Value 6'}</td>
55
+ <td>{'Value 7'}</td>
56
+ <td>{'Value 8'}</td>
57
+ <td>{'Value 9'}</td>
58
+ <td>{'Value 10'}</td>
59
+ <td>{'Value 11'}</td>
60
+ <td>{'Value 12'}</td>
61
+ <td id="13">{'Value 13'}</td>
62
+ <td id="14">{'Value 14'}</td>
63
+ <td id="15">{'Value 15'}</td>
64
+ </tr>
65
+ <tr>
66
+ <td>{'Value 1'}</td>
67
+ <td>{'Value 2'}</td>
68
+ <td>{'Value 3'}</td>
69
+ <td>{'Value 4'}</td>
70
+ <td>{'Value 5'}</td>
71
+ <td>{'Value 6'}</td>
72
+ <td>{'Value 7'}</td>
73
+ <td>{'Value 8'}</td>
74
+ <td>{'Value 9'}</td>
75
+ <td>{'Value 10'}</td>
76
+ <td>{'Value 11'}</td>
77
+ <td>{'Value 12'}</td>
78
+ <td id="13">{'Value 13'}</td>
79
+ <td id="14">{'Value 14'}</td>
80
+ <td id="15">{'Value 15'}</td>
81
+ </tr>
82
+ </tbody>
83
+ </Table>
84
+ )
85
+ }
86
+
87
+ export default TableStickyRightColumns
@@ -0,0 +1,5 @@
1
+ The `stickyRightColumn` prop works in the same way as the above `stickyLeftColumn` prop. It 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
+
3
+ If you are using the sub-component variant, then you will pass the id to `<Table.Header>` and `<Table.Cell>`
4
+
5
+ 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 `stickyRightColumn` prop.
@@ -2,7 +2,7 @@ import PbEnhancedElement from '../pb_enhanced_element'
2
2
 
3
3
  export default class PbTable extends PbEnhancedElement {
4
4
  private stickyLeftColumns: string[] = [];
5
- private handleStickyColumnsRef: () => void;
5
+ private handleStickyLeftColumnsRef: () => void;
6
6
 
7
7
  static get selector(): string {
8
8
  return '.table-responsive-collapse'
@@ -31,10 +31,10 @@ export default class PbTable extends PbEnhancedElement {
31
31
  });
32
32
 
33
33
  // New sticky columns logic
34
- this.initStickyColumns();
34
+ this.initStickyLeftColumns();
35
35
  }
36
36
 
37
- private initStickyColumns(): void {
37
+ private initStickyLeftColumns(): void {
38
38
  // Find tables with sticky-left-column class
39
39
  const tables = document.querySelectorAll('.sticky-left-column');
40
40
 
@@ -52,16 +52,16 @@ export default class PbTable extends PbEnhancedElement {
52
52
 
53
53
  if (this.stickyLeftColumns.length > 0) {
54
54
  setTimeout(() => {
55
- this.handleStickyColumnsRef = this.handleStickyColumns.bind(this);
56
- this.handleStickyColumns();
57
- window.addEventListener('resize', this.handleStickyColumnsRef);
55
+ this.handleStickyLeftColumnsRef = this.handleStickyLeftColumns.bind(this);
56
+ this.handleStickyLeftColumns();
57
+ window.addEventListener('resize', this.handleStickyLeftColumnsRef);
58
58
  }, 10);
59
59
  }
60
60
  }
61
61
  });
62
62
  }
63
63
 
64
- private handleStickyColumns(): void {
64
+ private handleStickyLeftColumns(): void {
65
65
  let accumulatedWidth = 0;
66
66
 
67
67
  this.stickyLeftColumns.forEach((colId, index) => {
@@ -74,11 +74,11 @@ export default class PbTable extends PbEnhancedElement {
74
74
  (header as HTMLElement).style.left = `${accumulatedWidth}px`;
75
75
 
76
76
  if (!isLastColumn) {
77
- header.classList.add('with-border');
78
- header.classList.remove('sticky-shadow');
77
+ header.classList.add('with-border-right');
78
+ header.classList.remove('sticky-left-shadow');
79
79
  } else {
80
- header.classList.remove('with-border');
81
- header.classList.add('sticky-shadow');
80
+ header.classList.remove('with-border-right');
81
+ header.classList.add('sticky-left-shadow');
82
82
  }
83
83
 
84
84
  accumulatedWidth += (header as HTMLElement).offsetWidth;
@@ -89,11 +89,11 @@ export default class PbTable extends PbEnhancedElement {
89
89
  (cell as HTMLElement).style.left = `${accumulatedWidth - (header as HTMLElement).offsetWidth}px`;
90
90
 
91
91
  if (!isLastColumn) {
92
- cell.classList.add('with-border');
93
- cell.classList.remove('sticky-shadow');
92
+ cell.classList.add('with-border-right');
93
+ cell.classList.remove('sticky-left-shadow');
94
94
  } else {
95
- cell.classList.remove('with-border');
96
- cell.classList.add('sticky-shadow');
95
+ cell.classList.remove('with-border-right');
96
+ cell.classList.add('sticky-left-shadow');
97
97
  }
98
98
  });
99
99
  });
@@ -101,8 +101,8 @@ export default class PbTable extends PbEnhancedElement {
101
101
 
102
102
  // Cleanup method to remove event listener
103
103
  disconnect(): void {
104
- if (this.handleStickyColumnsRef) {
105
- window.removeEventListener('resize', this.handleStickyColumnsRef);
104
+ if (this.handleStickyLeftColumnsRef) {
105
+ window.removeEventListener('resize', this.handleStickyLeftColumnsRef);
106
106
  }
107
107
  }
108
108
  }
@@ -8,8 +8,24 @@
8
8
  @media (max-width: 1600px) {
9
9
  &[class*="table-responsive-scroll"] {
10
10
  border-radius: 4px;
11
- box-shadow: 1px 0 0 0px $border_light
12
- }
11
+ box-shadow: 1px 0 0 0px $border_light,
12
+ -1px 0 0 0px $border_light
13
+ }
14
+
15
+ &[class^=pb_table].table-sm.table-card thead tr th:first-child,
16
+ &[class^=pb_table].table-sm:not(.no-hover).table-card tbody tr td:first-child {
17
+ border-left-width: 0px;
18
+ }
19
+
20
+ &[class^=pb_table].table-md.table-card thead tr th:first-child,
21
+ &[class^=pb_table].table-md:not(.no-hover).table-card tbody tr td:first-child {
22
+ border-left-width: 0px;
23
+ }
24
+
25
+ &[class^=pb_table].table-lg.table-card thead tr th:first-child,
26
+ &[class^=pb_table].table-lg:not(.no-hover).table-card tbody tr td:first-child {
27
+ border-left-width: 0px;
28
+ }
13
29
 
14
30
  &[class^=pb_table].table-sm.table-card thead tr th:last-child,
15
31
  &[class^=pb_table].table-sm:not(.no-hover).table-card tbody tr td:last-child {
@@ -7,11 +7,25 @@
7
7
  background-color: white;
8
8
  }
9
9
 
10
- .with-border {
10
+ // For use with sticky left columns
11
+ .sticky-left-shadow {
12
+ box-shadow: 4px 0 10px rgba(60, 106, 172, 0.16) !important;
13
+ left: 0;
14
+ }
15
+
16
+ .with-border-right {
11
17
  border-right: 1px solid $border_light !important;
18
+ left: 0;
12
19
  }
13
20
 
14
- .sticky-shadow {
15
- box-shadow: 4px 0 10px rgba(60, 106, 172, 0.16) !important;
21
+ // For use with sticky right columns
22
+ .sticky-right-shadow {
23
+ box-shadow: -4px 0 10px rgba(60, 106, 172, 0.16) !important;
24
+ right: 0;
25
+ }
26
+
27
+ .with-border-left {
28
+ border-left: 1px solid $border_light !important;
29
+ right: 0;
16
30
  }
17
31
  }