@dhis2-ui/table 10.16.2 → 10.16.3

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 (101) hide show
  1. package/package.json +5 -4
  2. package/src/data-table/__tests__/data-table-cell.test.js +168 -0
  3. package/src/data-table/__tests__/data-table-column-header/filter-handle.test.js +43 -0
  4. package/src/data-table/__tests__/data-table-column-header/sorter.test.js +41 -0
  5. package/src/data-table/__tests__/data-table-column-header.test.js +227 -0
  6. package/src/data-table/__tests__/data-table-row/expand-handle-cell.js +32 -0
  7. package/src/data-table/__tests__/data-table-row/expanded-row.test.js +57 -0
  8. package/src/data-table/__tests__/data-table-row.test.js +162 -0
  9. package/src/data-table/__tests__/data-table.test.js +85 -0
  10. package/src/data-table/data-table-body.js +3 -0
  11. package/src/data-table/data-table-cell.js +111 -0
  12. package/src/data-table/data-table-column-header/data-table-column-header.js +130 -0
  13. package/src/data-table/data-table-column-header/data-table-column-header.styles.js +30 -0
  14. package/src/data-table/data-table-column-header/filter-handle.js +30 -0
  15. package/src/data-table/data-table-column-header/sorter.js +67 -0
  16. package/src/data-table/data-table-foot.js +3 -0
  17. package/src/data-table/data-table-head.js +3 -0
  18. package/src/data-table/data-table-row/data-table-row.js +103 -0
  19. package/src/data-table/data-table-row/data-table-row.styles.js +20 -0
  20. package/src/data-table/data-table-row/drag-handle-cell.js +9 -0
  21. package/src/data-table/data-table-row/expand-handle-cell.js +28 -0
  22. package/src/data-table/data-table-row/expanded-row.js +51 -0
  23. package/src/data-table/data-table-toolbar.js +3 -0
  24. package/src/data-table/data-table.e2e.stories.js +192 -0
  25. package/src/data-table/data-table.js +75 -0
  26. package/src/data-table/data-table.prod.stories.js +1342 -0
  27. package/src/data-table/features/can_scroll/index.js +48 -0
  28. package/src/data-table/features/can_scroll.feature +31 -0
  29. package/src/data-table/index.js +8 -0
  30. package/src/data-table/table-elements/__tests__/table-body.test.js +40 -0
  31. package/src/data-table/table-elements/__tests__/table-data-cell.test.js +123 -0
  32. package/src/data-table/table-elements/__tests__/table-foot.test.js +40 -0
  33. package/src/data-table/table-elements/__tests__/table-head.test.js +40 -0
  34. package/src/data-table/table-elements/__tests__/table-header-cell-action.test.js +46 -0
  35. package/src/data-table/table-elements/__tests__/table-header-cell.test.js +130 -0
  36. package/src/data-table/table-elements/__tests__/table-row.test.js +52 -0
  37. package/src/data-table/table-elements/__tests__/table-scroll-box.test.js +40 -0
  38. package/src/data-table/table-elements/__tests__/table-toolbar.test.js +44 -0
  39. package/src/data-table/table-elements/__tests__/table.test.js +53 -0
  40. package/src/data-table/table-elements/features/can_scroll/index.js +42 -0
  41. package/src/data-table/table-elements/features/can_scroll.feature +31 -0
  42. package/src/data-table/table-elements/index.js +10 -0
  43. package/src/data-table/table-elements/table-body.js +75 -0
  44. package/src/data-table/table-elements/table-data-cell/table-data-cell.js +126 -0
  45. package/src/data-table/table-elements/table-data-cell/table-data-cell.styles.js +42 -0
  46. package/src/data-table/table-elements/table-foot.js +35 -0
  47. package/src/data-table/table-elements/table-head.js +26 -0
  48. package/src/data-table/table-elements/table-header-cell/table-header-cell.js +121 -0
  49. package/src/data-table/table-elements/table-header-cell/table-header-cell.styles.js +71 -0
  50. package/src/data-table/table-elements/table-header-cell-action.js +62 -0
  51. package/src/data-table/table-elements/table-row.js +52 -0
  52. package/src/data-table/table-elements/table-scroll-box.js +41 -0
  53. package/src/data-table/table-elements/table-toolbar.js +50 -0
  54. package/src/data-table/table-elements/table.e2e.stories.js +190 -0
  55. package/src/data-table/table-elements/table.js +70 -0
  56. package/src/data-table/table-elements/table.stories.internal.js +1144 -0
  57. package/src/index.js +32 -0
  58. package/src/locales/ar/translations.json +4 -0
  59. package/src/locales/cs/translations.json +4 -0
  60. package/src/locales/en/translations.json +4 -0
  61. package/src/locales/es/translations.json +4 -0
  62. package/src/locales/es_419/translations.json +4 -0
  63. package/src/locales/fr/translations.json +4 -0
  64. package/src/locales/index.js +44 -0
  65. package/src/locales/km/translations.json +4 -0
  66. package/src/locales/lo/translations.json +4 -0
  67. package/src/locales/nb/translations.json +4 -0
  68. package/src/locales/nl/translations.json +4 -0
  69. package/src/locales/pt/translations.json +4 -0
  70. package/src/locales/ru/translations.json +4 -0
  71. package/src/locales/uk/translations.json +4 -0
  72. package/src/locales/uz_UZ_Cyrl/translations.json +4 -0
  73. package/src/locales/zh/translations.json +4 -0
  74. package/src/stacked-table/add-col-num-to-children.js +16 -0
  75. package/src/stacked-table/content-with-title.js +40 -0
  76. package/src/stacked-table/extract-header-labels.js +99 -0
  77. package/src/stacked-table/index.js +8 -0
  78. package/src/stacked-table/stacked-table-body.js +23 -0
  79. package/src/stacked-table/stacked-table-cell-head.js +39 -0
  80. package/src/stacked-table/stacked-table-cell.js +60 -0
  81. package/src/stacked-table/stacked-table-foot.js +24 -0
  82. package/src/stacked-table/stacked-table-head.js +23 -0
  83. package/src/stacked-table/stacked-table-row-head.js +19 -0
  84. package/src/stacked-table/stacked-table-row.js +50 -0
  85. package/src/stacked-table/stacked-table.js +33 -0
  86. package/src/stacked-table/stacked-table.prod.stories.js +463 -0
  87. package/src/stacked-table/stacked-table.test.js +127 -0
  88. package/src/stacked-table/supply-header-labels-to-children.js +7 -0
  89. package/src/stacked-table/table-context.js +4 -0
  90. package/src/stacked-table/table.js +28 -0
  91. package/src/table/index.js +8 -0
  92. package/src/table/table-body.js +21 -0
  93. package/src/table/table-cell-head.js +56 -0
  94. package/src/table/table-cell.js +56 -0
  95. package/src/table/table-context.js +7 -0
  96. package/src/table/table-foot.js +21 -0
  97. package/src/table/table-head.js +21 -0
  98. package/src/table/table-row-head.js +30 -0
  99. package/src/table/table-row.js +51 -0
  100. package/src/table/table.js +41 -0
  101. package/src/table/table.prod.stories.js +724 -0
@@ -0,0 +1,103 @@
1
+ import { requiredIf } from '@dhis2/prop-types'
2
+ import cx from 'classnames'
3
+ import PropTypes from 'prop-types'
4
+ import React, { useState, forwardRef } from 'react'
5
+ import { TableRow } from '../table-elements/index.js'
6
+ import resolvedCss from './data-table-row.styles.js'
7
+ import { DragHandleCell } from './drag-handle-cell.js'
8
+ import { ExpandHandleCell } from './expand-handle-cell.js'
9
+ import { ExpandedRow } from './expanded-row.js'
10
+
11
+ export const DataTableRow = forwardRef(
12
+ (
13
+ {
14
+ children,
15
+ className,
16
+ dataTest = 'dhis2-uicore-datatablerow',
17
+ expandableContent,
18
+ expanded,
19
+ selected,
20
+ draggable,
21
+ role,
22
+ onExpandToggle,
23
+ ...rest
24
+ },
25
+ ref
26
+ ) => {
27
+ const [isHoveringExpandedContent, setIsHoveringExpandedContent] =
28
+ useState(false)
29
+ const classes = cx(className, resolvedCss.className, {
30
+ expanded,
31
+ selected,
32
+ draggable,
33
+ isHoveringExpandedContent,
34
+ })
35
+ const childCount = React.Children.count(children)
36
+ const colSpan = String(
37
+ draggable || expandableContent ? childCount + 1 : childCount
38
+ )
39
+
40
+ return (
41
+ <>
42
+ <TableRow
43
+ ref={ref}
44
+ className={classes}
45
+ dataTest={dataTest}
46
+ selected={selected}
47
+ draggable={draggable}
48
+ role={role}
49
+ {...rest}
50
+ >
51
+ {draggable && <DragHandleCell />}
52
+ {expandableContent && (
53
+ <ExpandHandleCell
54
+ expanded={expanded}
55
+ onClick={onExpandToggle}
56
+ />
57
+ )}
58
+ {children}
59
+ {resolvedCss.styles}
60
+ </TableRow>
61
+ {expandableContent && expanded && (
62
+ <ExpandedRow
63
+ className={className}
64
+ dataTest={dataTest}
65
+ setIsHoveringExpandedContent={
66
+ setIsHoveringExpandedContent
67
+ }
68
+ colSpan={colSpan}
69
+ selected={selected}
70
+ >
71
+ {expandableContent}
72
+ </ExpandedRow>
73
+ )}
74
+ </>
75
+ )
76
+ }
77
+ )
78
+
79
+ DataTableRow.displayName = 'DataTableRow'
80
+
81
+ DataTableRow.propTypes = {
82
+ /** Should be `<DataTableCell>` or `<DataTableCellHead>` components */
83
+ children: PropTypes.node,
84
+ className: PropTypes.string,
85
+ dataTest: PropTypes.string,
86
+ /** Renders and additional table cell with drag icon and applies draggable styles */
87
+ draggable: PropTypes.bool,
88
+ /** This content will be rendered into an additional row with fullwidth cell and the presence of this prop will display an additional table cell with expand icon */
89
+ expandableContent: requiredIf(
90
+ (props) => props.onExpandToggle,
91
+ PropTypes.node
92
+ ),
93
+ /** Toggles expand icon (up/down) and expandable content visibility */
94
+ expanded: PropTypes.bool,
95
+ role: PropTypes.string,
96
+ /** Adds a green background color */
97
+ selected: PropTypes.bool,
98
+ /** Callback for expand icon cell clicks */
99
+ onExpandToggle: requiredIf(
100
+ (props) => props.expandableContent,
101
+ PropTypes.func
102
+ ),
103
+ }
@@ -0,0 +1,20 @@
1
+ import { colors } from '@dhis2/ui-constants'
2
+ import css from 'styled-jsx/css'
3
+
4
+ export default css.resolve`
5
+ tr.isHoveringExpandedContent > :global(td) {
6
+ background-color: ${colors.grey100};
7
+ }
8
+ tr.isHoveringExpandedContent > :global(th) {
9
+ background-color: ${colors.grey300};
10
+ }
11
+ tr.selected.isHoveringExpandedContent > :global(td) {
12
+ background-color: #cdeae8;
13
+ }
14
+ tr.expanded > :global(td) {
15
+ border-bottom-color: transparent;
16
+ }
17
+ tr.expanded > :global(td.bordered) {
18
+ border-bottom-color: ${colors.grey300};
19
+ }
20
+ `
@@ -0,0 +1,9 @@
1
+ import { IconDragHandle24 } from '@dhis2/ui-icons'
2
+ import React from 'react'
3
+ import { TableDataCell } from '../table-elements/index.js'
4
+
5
+ export const DragHandleCell = () => (
6
+ <TableDataCell width="48px">
7
+ <IconDragHandle24 />
8
+ </TableDataCell>
9
+ )
@@ -0,0 +1,28 @@
1
+ import { IconChevronDown24, IconChevronUp24 } from '@dhis2/ui-icons'
2
+ import cx from 'classnames'
3
+ import PropTypes from 'prop-types'
4
+ import React from 'react'
5
+ import css from 'styled-jsx/css'
6
+ import { TableDataCell } from '../table-elements/index.js'
7
+
8
+ const pointer = css.resolve`
9
+ td {
10
+ cursor: pointer;
11
+ }
12
+ `
13
+
14
+ export const ExpandHandleCell = ({ expanded, onClick }) => (
15
+ <TableDataCell
16
+ className={cx(pointer.className, { expanded })}
17
+ onClick={() => onClick({ expanded: !expanded })}
18
+ width="48px"
19
+ >
20
+ {expanded ? <IconChevronUp24 /> : <IconChevronDown24 />}
21
+ {pointer.styles}
22
+ </TableDataCell>
23
+ )
24
+
25
+ ExpandHandleCell.propTypes = {
26
+ expanded: PropTypes.bool,
27
+ onClick: PropTypes.func,
28
+ }
@@ -0,0 +1,51 @@
1
+ import { colors } from '@dhis2/ui-constants'
2
+ import cx from 'classnames'
3
+ import PropTypes from 'prop-types'
4
+ import React from 'react'
5
+ import css from 'styled-jsx/css'
6
+ import { TableRow, TableDataCell } from '../table-elements/index.js'
7
+
8
+ const { className: cellClassName, styles } = css.resolve`
9
+ :global(tr.expanded:hover) + :global(tr) > td {
10
+ background-color: ${colors.grey100};
11
+ }
12
+ :global(tr.expanded:active) + :global(tr) > td {
13
+ background-color: ${colors.grey200};
14
+ }
15
+ :global(tr.selected.expanded:hover) + tr > td {
16
+ background-color: #cdeae8;
17
+ }
18
+ `
19
+
20
+ export const ExpandedRow = ({
21
+ children,
22
+ className,
23
+ colSpan,
24
+ dataTest,
25
+ selected,
26
+ setIsHoveringExpandedContent,
27
+ }) => (
28
+ <TableRow
29
+ onMouseOver={() => setIsHoveringExpandedContent(true)}
30
+ onMouseOut={() => setIsHoveringExpandedContent(false)}
31
+ className={cx({
32
+ [`${className}-expandedrow`]: !!className,
33
+ })}
34
+ selected={selected}
35
+ dataTest={dataTest && `${dataTest}-expandedrow`}
36
+ >
37
+ <TableDataCell className={cellClassName} colSpan={colSpan}>
38
+ {children}
39
+ {styles}
40
+ </TableDataCell>
41
+ </TableRow>
42
+ )
43
+
44
+ ExpandedRow.propTypes = {
45
+ children: PropTypes.node,
46
+ className: PropTypes.string,
47
+ colSpan: PropTypes.string,
48
+ dataTest: PropTypes.string,
49
+ selected: PropTypes.bool,
50
+ setIsHoveringExpandedContent: PropTypes.func,
51
+ }
@@ -0,0 +1,3 @@
1
+ // This component does not need additional behaviour but is
2
+ // exposed as DataTableToolbar for component name consistency
3
+ export { TableToolbar as DataTableToolbar } from './table-elements/index.js'
@@ -0,0 +1,192 @@
1
+ import React from 'react'
2
+ import { DataTableBody } from './data-table-body.js'
3
+ import { DataTableCell } from './data-table-cell.js'
4
+ import { DataTableColumnHeader } from './data-table-column-header/data-table-column-header.js'
5
+ import { DataTableHead } from './data-table-head.js'
6
+ import { DataTableRow } from './data-table-row/data-table-row.js'
7
+ import { DataTable } from './data-table.js'
8
+
9
+ export default {
10
+ title: 'DataTable',
11
+ component: DataTable,
12
+ }
13
+
14
+ export const FixedHeaderAndColumns = () => (
15
+ <DataTable
16
+ layout="fixed"
17
+ width="1000px"
18
+ scrollWidth="500px"
19
+ scrollHeight="400px"
20
+ >
21
+ <DataTableHead>
22
+ <DataTableRow>
23
+ <DataTableColumnHeader fixed top="0" left="0" width="120px">
24
+ Header fixed-left 1
25
+ </DataTableColumnHeader>
26
+ <DataTableColumnHeader fixed top="0" left="120px">
27
+ Header fixed-left 2
28
+ </DataTableColumnHeader>
29
+ <DataTableColumnHeader fixed top="0">
30
+ Header fixed
31
+ </DataTableColumnHeader>
32
+ <DataTableColumnHeader fixed top="0">
33
+ Header fixed
34
+ </DataTableColumnHeader>
35
+ <DataTableColumnHeader fixed top="0">
36
+ Header fixed
37
+ </DataTableColumnHeader>
38
+ <DataTableColumnHeader fixed top="0">
39
+ Header fixed
40
+ </DataTableColumnHeader>
41
+ <DataTableColumnHeader fixed top="0">
42
+ Header fixed
43
+ </DataTableColumnHeader>
44
+ <DataTableColumnHeader fixed top="0">
45
+ Header fixed
46
+ </DataTableColumnHeader>
47
+ </DataTableRow>
48
+ </DataTableHead>
49
+ <DataTableBody>
50
+ <DataTableRow>
51
+ <DataTableCell fixed left="0" width="120px">
52
+ fixed
53
+ </DataTableCell>
54
+ <DataTableCell fixed left="120px">
55
+ fixed
56
+ </DataTableCell>
57
+ <DataTableCell>scrolling top-left</DataTableCell>
58
+ <DataTableCell>...</DataTableCell>
59
+ <DataTableCell>...</DataTableCell>
60
+ <DataTableCell>...</DataTableCell>
61
+ <DataTableCell>...</DataTableCell>
62
+ <DataTableCell>scrolling top-right</DataTableCell>
63
+ </DataTableRow>
64
+ <DataTableRow>
65
+ <DataTableCell fixed left="0" width="120px">
66
+ fixed
67
+ </DataTableCell>
68
+ <DataTableCell fixed left="120px">
69
+ fixed
70
+ </DataTableCell>
71
+ <DataTableCell>...</DataTableCell>
72
+ <DataTableCell>...</DataTableCell>
73
+ <DataTableCell>...</DataTableCell>
74
+ <DataTableCell>...</DataTableCell>
75
+ <DataTableCell>...</DataTableCell>
76
+ <DataTableCell>...</DataTableCell>
77
+ </DataTableRow>
78
+ <DataTableRow>
79
+ <DataTableCell fixed left="0" width="120px">
80
+ fixed
81
+ </DataTableCell>
82
+ <DataTableCell fixed left="120px">
83
+ fixed
84
+ </DataTableCell>
85
+ <DataTableCell>...</DataTableCell>
86
+ <DataTableCell>...</DataTableCell>
87
+ <DataTableCell>...</DataTableCell>
88
+ <DataTableCell>...</DataTableCell>
89
+ <DataTableCell>...</DataTableCell>
90
+ <DataTableCell>...</DataTableCell>
91
+ </DataTableRow>
92
+ <DataTableRow>
93
+ <DataTableCell fixed left="0" width="120px">
94
+ fixed
95
+ </DataTableCell>
96
+ <DataTableCell fixed left="120px">
97
+ fixed
98
+ </DataTableCell>
99
+ <DataTableCell>...</DataTableCell>
100
+ <DataTableCell>...</DataTableCell>
101
+ <DataTableCell>...</DataTableCell>
102
+ <DataTableCell>...</DataTableCell>
103
+ <DataTableCell>...</DataTableCell>
104
+ <DataTableCell>...</DataTableCell>
105
+ </DataTableRow>
106
+ <DataTableRow>
107
+ <DataTableCell fixed left="0" width="120px">
108
+ fixed
109
+ </DataTableCell>
110
+ <DataTableCell fixed left="120px">
111
+ fixed
112
+ </DataTableCell>
113
+ <DataTableCell>...</DataTableCell>
114
+ <DataTableCell>...</DataTableCell>
115
+ <DataTableCell>...</DataTableCell>
116
+ <DataTableCell>...</DataTableCell>
117
+ <DataTableCell>...</DataTableCell>
118
+ <DataTableCell>...</DataTableCell>
119
+ </DataTableRow>
120
+ <DataTableRow>
121
+ <DataTableCell fixed left="0" width="120px">
122
+ fixed
123
+ </DataTableCell>
124
+ <DataTableCell fixed left="120px">
125
+ fixed
126
+ </DataTableCell>
127
+ <DataTableCell>...</DataTableCell>
128
+ <DataTableCell>...</DataTableCell>
129
+ <DataTableCell>...</DataTableCell>
130
+ <DataTableCell>...</DataTableCell>
131
+ <DataTableCell>...</DataTableCell>
132
+ <DataTableCell>...</DataTableCell>
133
+ </DataTableRow>
134
+ <DataTableRow>
135
+ <DataTableCell fixed left="0" width="120px">
136
+ fixed
137
+ </DataTableCell>
138
+ <DataTableCell fixed left="120px">
139
+ fixed
140
+ </DataTableCell>
141
+ <DataTableCell>...</DataTableCell>
142
+ <DataTableCell>...</DataTableCell>
143
+ <DataTableCell>...</DataTableCell>
144
+ <DataTableCell>...</DataTableCell>
145
+ <DataTableCell>...</DataTableCell>
146
+ <DataTableCell>...</DataTableCell>
147
+ </DataTableRow>
148
+ <DataTableRow>
149
+ <DataTableCell fixed left="0" width="120px">
150
+ fixed
151
+ </DataTableCell>
152
+ <DataTableCell fixed left="120px">
153
+ fixed
154
+ </DataTableCell>
155
+ <DataTableCell>...</DataTableCell>
156
+ <DataTableCell>...</DataTableCell>
157
+ <DataTableCell>...</DataTableCell>
158
+ <DataTableCell>...</DataTableCell>
159
+ <DataTableCell>...</DataTableCell>
160
+ <DataTableCell>...</DataTableCell>
161
+ </DataTableRow>
162
+ <DataTableRow>
163
+ <DataTableCell fixed left="0" width="120px">
164
+ fixed
165
+ </DataTableCell>
166
+ <DataTableCell fixed left="120px">
167
+ fixed
168
+ </DataTableCell>
169
+ <DataTableCell>...</DataTableCell>
170
+ <DataTableCell>...</DataTableCell>
171
+ <DataTableCell>...</DataTableCell>
172
+ <DataTableCell>...</DataTableCell>
173
+ <DataTableCell>...</DataTableCell>
174
+ <DataTableCell>...</DataTableCell>
175
+ </DataTableRow>
176
+ <DataTableRow>
177
+ <DataTableCell fixed left="0" width="120px">
178
+ fixed
179
+ </DataTableCell>
180
+ <DataTableCell fixed left="120px">
181
+ fixed
182
+ </DataTableCell>
183
+ <DataTableCell>scrolling bottom-left</DataTableCell>
184
+ <DataTableCell>...</DataTableCell>
185
+ <DataTableCell>...</DataTableCell>
186
+ <DataTableCell>...</DataTableCell>
187
+ <DataTableCell>...</DataTableCell>
188
+ <DataTableCell>scrolling bottom-right</DataTableCell>
189
+ </DataTableRow>
190
+ </DataTableBody>
191
+ </DataTable>
192
+ )
@@ -0,0 +1,75 @@
1
+ import cx from 'classnames'
2
+ import PropTypes from 'prop-types'
3
+ import React, { forwardRef } from 'react'
4
+ import { Table, TableScrollBox } from './table-elements/index.js'
5
+
6
+ export const DataTable = forwardRef(
7
+ (
8
+ {
9
+ children,
10
+ className,
11
+ dataTest = 'dhis2-uicore-datatable',
12
+ layout = 'auto',
13
+ role,
14
+ scrollHeight,
15
+ scrollWidth,
16
+ width = '100%',
17
+ },
18
+ ref
19
+ ) => {
20
+ const scrollable = !!(scrollHeight || scrollWidth)
21
+ const table = (
22
+ <Table
23
+ borderless={scrollable}
24
+ className={className}
25
+ dataTest={dataTest}
26
+ layout={layout}
27
+ ref={ref}
28
+ role={role}
29
+ width={width}
30
+ >
31
+ {children}
32
+ </Table>
33
+ )
34
+
35
+ return !scrollable ? (
36
+ table
37
+ ) : (
38
+ <TableScrollBox
39
+ className={cx(className, 'tablescrollbox')}
40
+ dataTest={`${dataTest}-scrollbox`}
41
+ maxHeight={scrollHeight}
42
+ maxWidth={scrollWidth}
43
+ >
44
+ {table}
45
+ </TableScrollBox>
46
+ )
47
+ }
48
+ )
49
+
50
+ DataTable.displayName = 'DataTable'
51
+
52
+ DataTable.propTypes = {
53
+ /**
54
+ * Should be `<DataTableHead>`, `<DataTableBody>`, and `<DataTableFoot>` components
55
+ */
56
+ children: PropTypes.node,
57
+ className: PropTypes.string,
58
+ dataTest: PropTypes.string,
59
+ /**
60
+ * Sets the `datatable-layout` property. Switching to `fixed` can prevent style
61
+ * issues when dealing with a datatable with multiple frozen columns or when dealing
62
+ * with filter elements in the datatable headers.
63
+ */
64
+ layout: PropTypes.oneOf(['auto', 'fixed', 'initial', 'inherit']),
65
+ role: PropTypes.string,
66
+ /** Sets max-height of scrollbox */
67
+ scrollHeight: PropTypes.string,
68
+ /** Sets max-width of scrollbox */
69
+ scrollWidth: PropTypes.string,
70
+ /**
71
+ * Sets the `width` property. Providing an explicit width can prevent style
72
+ * issues when dealing with horizontally scrolling datatables with a fixed layout.
73
+ */
74
+ width: PropTypes.string,
75
+ }