@patternfly/react-table 4.40.0 → 4.43.1

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 (74) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dist/esm/components/Table/base/provider.d.ts +5 -5
  3. package/dist/esm/components/Table/base/types.d.ts +5 -5
  4. package/dist/esm/components/TableComposable/InnerScrollContainer.d.ts +9 -0
  5. package/dist/esm/components/TableComposable/InnerScrollContainer.d.ts.map +1 -0
  6. package/dist/esm/components/TableComposable/InnerScrollContainer.js +10 -0
  7. package/dist/esm/components/TableComposable/InnerScrollContainer.js.map +1 -0
  8. package/dist/esm/components/TableComposable/OuterScrollContainer.d.ts +9 -0
  9. package/dist/esm/components/TableComposable/OuterScrollContainer.d.ts.map +1 -0
  10. package/dist/esm/components/TableComposable/OuterScrollContainer.js +10 -0
  11. package/dist/esm/components/TableComposable/OuterScrollContainer.js.map +1 -0
  12. package/dist/esm/components/TableComposable/TableComposable.d.ts +3 -1
  13. package/dist/esm/components/TableComposable/TableComposable.d.ts.map +1 -1
  14. package/dist/esm/components/TableComposable/TableComposable.js +12 -2
  15. package/dist/esm/components/TableComposable/TableComposable.js.map +1 -1
  16. package/dist/esm/components/TableComposable/Th.d.ts +11 -1
  17. package/dist/esm/components/TableComposable/Th.d.ts.map +1 -1
  18. package/dist/esm/components/TableComposable/Th.js +5 -2
  19. package/dist/esm/components/TableComposable/Th.js.map +1 -1
  20. package/dist/esm/components/TableComposable/Thead.d.ts +3 -1
  21. package/dist/esm/components/TableComposable/Thead.d.ts.map +1 -1
  22. package/dist/esm/components/TableComposable/Thead.js +2 -2
  23. package/dist/esm/components/TableComposable/Thead.js.map +1 -1
  24. package/dist/esm/components/TableComposable/Tr.d.ts +3 -1
  25. package/dist/esm/components/TableComposable/Tr.d.ts.map +1 -1
  26. package/dist/esm/components/TableComposable/Tr.js +2 -2
  27. package/dist/esm/components/TableComposable/Tr.js.map +1 -1
  28. package/dist/esm/components/TableComposable/index.d.ts +2 -0
  29. package/dist/esm/components/TableComposable/index.d.ts.map +1 -1
  30. package/dist/esm/components/TableComposable/index.js +2 -0
  31. package/dist/esm/components/TableComposable/index.js.map +1 -1
  32. package/dist/js/components/Table/base/provider.d.ts +5 -5
  33. package/dist/js/components/Table/base/types.d.ts +5 -5
  34. package/dist/js/components/TableComposable/InnerScrollContainer.d.ts +9 -0
  35. package/dist/js/components/TableComposable/InnerScrollContainer.d.ts.map +1 -0
  36. package/dist/js/components/TableComposable/InnerScrollContainer.js +14 -0
  37. package/dist/js/components/TableComposable/InnerScrollContainer.js.map +1 -0
  38. package/dist/js/components/TableComposable/OuterScrollContainer.d.ts +9 -0
  39. package/dist/js/components/TableComposable/OuterScrollContainer.d.ts.map +1 -0
  40. package/dist/js/components/TableComposable/OuterScrollContainer.js +14 -0
  41. package/dist/js/components/TableComposable/OuterScrollContainer.js.map +1 -0
  42. package/dist/js/components/TableComposable/TableComposable.d.ts +3 -1
  43. package/dist/js/components/TableComposable/TableComposable.d.ts.map +1 -1
  44. package/dist/js/components/TableComposable/TableComposable.js +12 -2
  45. package/dist/js/components/TableComposable/TableComposable.js.map +1 -1
  46. package/dist/js/components/TableComposable/Th.d.ts +11 -1
  47. package/dist/js/components/TableComposable/Th.d.ts.map +1 -1
  48. package/dist/js/components/TableComposable/Th.js +5 -2
  49. package/dist/js/components/TableComposable/Th.js.map +1 -1
  50. package/dist/js/components/TableComposable/Thead.d.ts +3 -1
  51. package/dist/js/components/TableComposable/Thead.d.ts.map +1 -1
  52. package/dist/js/components/TableComposable/Thead.js +2 -2
  53. package/dist/js/components/TableComposable/Thead.js.map +1 -1
  54. package/dist/js/components/TableComposable/Tr.d.ts +3 -1
  55. package/dist/js/components/TableComposable/Tr.d.ts.map +1 -1
  56. package/dist/js/components/TableComposable/Tr.js +2 -2
  57. package/dist/js/components/TableComposable/Tr.js.map +1 -1
  58. package/dist/js/components/TableComposable/index.d.ts +2 -0
  59. package/dist/js/components/TableComposable/index.d.ts.map +1 -1
  60. package/dist/js/components/TableComposable/index.js +2 -0
  61. package/dist/js/components/TableComposable/index.js.map +1 -1
  62. package/dist/umd/react-table.css +400 -87
  63. package/dist/umd/react-table.js +247 -208
  64. package/dist/umd/react-table.min.css +1277 -964
  65. package/dist/umd/react-table.min.js +3 -3
  66. package/package.json +6 -6
  67. package/src/components/TableComposable/InnerScrollContainer.tsx +22 -0
  68. package/src/components/TableComposable/OuterScrollContainer.tsx +22 -0
  69. package/src/components/TableComposable/TableComposable.tsx +11 -0
  70. package/src/components/TableComposable/Th.tsx +26 -0
  71. package/src/components/TableComposable/Thead.tsx +12 -1
  72. package/src/components/TableComposable/Tr.tsx +5 -1
  73. package/src/components/TableComposable/examples/ComposableTable.md +1106 -0
  74. package/src/components/TableComposable/index.ts +2 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patternfly/react-table",
3
- "version": "4.40.0",
3
+ "version": "4.43.1",
4
4
  "description": "This library provides a set of React table components for use with the PatternFly 4",
5
5
  "main": "dist/js/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -31,10 +31,10 @@
31
31
  "clean": "rimraf dist"
32
32
  },
33
33
  "dependencies": {
34
- "@patternfly/react-core": "^4.171.0",
35
- "@patternfly/react-icons": "^4.22.0",
36
- "@patternfly/react-styles": "^4.21.0",
37
- "@patternfly/react-tokens": "^4.23.0",
34
+ "@patternfly/react-core": "^4.174.1",
35
+ "@patternfly/react-icons": "^4.25.1",
36
+ "@patternfly/react-styles": "^4.24.1",
37
+ "@patternfly/react-tokens": "^4.26.1",
38
38
  "lodash": "^4.17.19",
39
39
  "tslib": "^2.0.0"
40
40
  },
@@ -46,5 +46,5 @@
46
46
  "react": "^16.8.0 || ^17.0.0",
47
47
  "react-dom": "^16.8.0 || ^17.0.0"
48
48
  },
49
- "gitHead": "09d356c99de79684e78f5dcd8caa40ce3a0873d4"
49
+ "gitHead": "8c1eb5d895aa2512f7b4197654e414394ff25b30"
50
50
  }
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ import { css } from '@patternfly/react-styles';
3
+ import styles from '@patternfly/react-styles/css/components/Table/table-scrollable';
4
+
5
+ export interface InnerScrollContainerProps extends React.HTMLProps<HTMLDivElement> {
6
+ /** Content rendered inside the inner scroll container */
7
+ children?: React.ReactNode;
8
+ /** Additional classes added to the container */
9
+ className?: string;
10
+ }
11
+
12
+ export const InnerScrollContainer: React.FunctionComponent<InnerScrollContainerProps> = ({
13
+ children,
14
+ className,
15
+ ...props
16
+ }: InnerScrollContainerProps) => (
17
+ <div className={css(className, styles.scrollInnerWrapper)} {...props}>
18
+ {children}
19
+ </div>
20
+ );
21
+
22
+ InnerScrollContainer.displayName = 'InnerScrollContainer';
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ import { css } from '@patternfly/react-styles';
3
+ import styles from '@patternfly/react-styles/css/components/Table/table-scrollable';
4
+
5
+ export interface OuterScrollContainerProps extends React.HTMLProps<HTMLDivElement> {
6
+ /** Content rendered inside the outer scroll container */
7
+ children?: React.ReactNode;
8
+ /** Additional classes added to the container */
9
+ className?: string;
10
+ }
11
+
12
+ export const OuterScrollContainer: React.FunctionComponent<OuterScrollContainerProps> = ({
13
+ children,
14
+ className,
15
+ ...props
16
+ }: OuterScrollContainerProps) => (
17
+ <div className={css(className, styles.scrollOuterWrapper)} {...props}>
18
+ {children}
19
+ </div>
20
+ );
21
+
22
+ OuterScrollContainer.displayName = 'OuterScrollContainer';
@@ -53,6 +53,8 @@ export interface TableComposableProps extends React.HTMLProps<HTMLTableElement>,
53
53
  isTreeTable?: boolean;
54
54
  /** Flag indicating this table is nested within another table */
55
55
  isNested?: boolean;
56
+ /** Collection of column spans for nested headers */
57
+ nestedHeaderColumnSpans?: number[];
56
58
  }
57
59
 
58
60
  const TableComposableBase: React.FunctionComponent<TableComposableProps> = ({
@@ -69,6 +71,7 @@ const TableComposableBase: React.FunctionComponent<TableComposableProps> = ({
69
71
  ouiaSafe = true,
70
72
  isTreeTable = false,
71
73
  isNested = false,
74
+ nestedHeaderColumnSpans,
72
75
  ...props
73
76
  }: TableComposableProps) => {
74
77
  const tableRef = innerRef || React.useRef(null);
@@ -156,6 +159,14 @@ const TableComposableBase: React.FunctionComponent<TableComposableProps> = ({
156
159
  {...ouiaProps}
157
160
  {...props}
158
161
  >
162
+ {nestedHeaderColumnSpans &&
163
+ nestedHeaderColumnSpans.map((span: number, index) => {
164
+ if (span === 1) {
165
+ return <col key={index} />;
166
+ } else {
167
+ return <colgroup key={index} span={span} />;
168
+ }
169
+ })}
159
170
  {children}
160
171
  </table>
161
172
  );
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { css } from '@patternfly/react-styles';
3
3
  import styles from '@patternfly/react-styles/css/components/Table/table';
4
+ import scrollStyles from '@patternfly/react-styles/css/components/Table/table-scrollable';
4
5
  import { info } from '../Table/utils/decorators/info';
5
6
  import { sortable, sortableFavorites } from '../Table/utils/decorators/sortable';
6
7
  import { selectable } from '../Table/utils/decorators/selectable';
@@ -38,6 +39,16 @@ export interface ThProps
38
39
  info?: ThInfoType;
39
40
  /** Adds scope to the column to associate header cells with data cells*/
40
41
  scope?: string;
42
+ /** Indicates the header column should be sticky */
43
+ isStickyColumn?: boolean;
44
+ /** Adds a border to the right side of the cell */
45
+ hasRightBorder?: boolean;
46
+ /** Minimum width for a sticky column */
47
+ stickyMinWidth?: string;
48
+ /** Left offset of a sticky column. This will typically be equal to the combined value set by stickyMinWidth of any sticky columns that precede the current sticky column. */
49
+ stickyLeftOffset?: string;
50
+ /** Indicates the <th> is part of a subheader of a nested header */
51
+ isSubheader?: boolean;
41
52
  }
42
53
 
43
54
  const ThBase: React.FunctionComponent<ThProps> = ({
@@ -56,6 +67,11 @@ const ThBase: React.FunctionComponent<ThProps> = ({
56
67
  visibility,
57
68
  innerRef,
58
69
  info: infoProps,
70
+ isStickyColumn = false,
71
+ hasRightBorder = false,
72
+ stickyMinWidth = '120px',
73
+ stickyLeftOffset,
74
+ isSubheader = false,
59
75
  ...props
60
76
  }: ThProps) => {
61
77
  const [showTooltip, setShowTooltip] = React.useState(false);
@@ -132,11 +148,21 @@ const ThBase: React.FunctionComponent<ThProps> = ({
132
148
  className={css(
133
149
  className,
134
150
  textCenter && styles.modifiers.center,
151
+ isSubheader && styles.tableSubhead,
152
+ isStickyColumn && scrollStyles.tableStickyColumn,
153
+ hasRightBorder && scrollStyles.modifiers.borderRight,
135
154
  modifier && styles.modifiers[modifier as 'breakWord' | 'fitContent' | 'nowrap' | 'truncate' | 'wrap'],
136
155
  mergedClassName
137
156
  )}
138
157
  {...mergedProps}
139
158
  {...props}
159
+ {...(isStickyColumn && {
160
+ style: {
161
+ '--pf-c-table__sticky-column--MinWidth': stickyMinWidth ? stickyMinWidth : undefined,
162
+ '--pf-c-table__sticky-column--Left': stickyLeftOffset ? stickyLeftOffset : undefined,
163
+ ...props.style
164
+ } as React.CSSProperties
165
+ })}
140
166
  >
141
167
  {transformedChildren}
142
168
  </MergedComponent>
@@ -11,6 +11,8 @@ export interface TheadProps extends React.HTMLProps<HTMLTableSectionElement> {
11
11
  noWrap?: boolean;
12
12
  /** Forwarded ref */
13
13
  innerRef?: React.Ref<any>;
14
+ /** Indicates the <thead> contains a nested header */
15
+ hasNestedHeader?: boolean;
14
16
  }
15
17
 
16
18
  const TheadBase: React.FunctionComponent<TheadProps> = ({
@@ -18,9 +20,18 @@ const TheadBase: React.FunctionComponent<TheadProps> = ({
18
20
  className,
19
21
  noWrap = false,
20
22
  innerRef,
23
+ hasNestedHeader,
21
24
  ...props
22
25
  }: TheadProps) => (
23
- <thead className={css(className, noWrap && styles.modifiers.nowrap)} ref={innerRef} {...props}>
26
+ <thead
27
+ className={css(
28
+ className,
29
+ noWrap && styles.modifiers.nowrap,
30
+ hasNestedHeader && styles.modifiers.nestedColumnHeader
31
+ )}
32
+ ref={innerRef}
33
+ {...props}
34
+ >
24
35
  {children}
25
36
  </thead>
26
37
  );
@@ -23,6 +23,8 @@ export interface TrProps extends React.HTMLProps<HTMLTableRowElement>, OUIAProps
23
23
  isRowSelected?: boolean;
24
24
  /** An event handler for the row */
25
25
  onRowClick?: (event?: React.KeyboardEvent | React.MouseEvent) => void;
26
+ /** Flag indicating the spacing offset of the first cell should be reset */
27
+ resetOffset?: boolean;
26
28
  }
27
29
 
28
30
  const TrBase: React.FunctionComponent<TrProps> = ({
@@ -36,6 +38,7 @@ const TrBase: React.FunctionComponent<TrProps> = ({
36
38
  innerRef,
37
39
  ouiaId,
38
40
  ouiaSafe = true,
41
+ resetOffset = false,
39
42
  onRowClick,
40
43
  ...props
41
44
  }: TrProps) => {
@@ -59,7 +62,8 @@ const TrBase: React.FunctionComponent<TrProps> = ({
59
62
  isExpanded && styles.modifiers.expanded,
60
63
  isEditable && inlineStyles.modifiers.inlineEditable,
61
64
  isHoverable && styles.modifiers.hoverable,
62
- isRowSelected && styles.modifiers.selected
65
+ isRowSelected && styles.modifiers.selected,
66
+ resetOffset && styles.modifiers.firstCellOffsetReset
63
67
  )}
64
68
  hidden={isHidden || (isExpanded !== undefined && !isExpanded)}
65
69
  {...(isHoverable && { tabIndex: 0 })}