@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.
- package/package.json +5 -4
- package/src/data-table/__tests__/data-table-cell.test.js +168 -0
- package/src/data-table/__tests__/data-table-column-header/filter-handle.test.js +43 -0
- package/src/data-table/__tests__/data-table-column-header/sorter.test.js +41 -0
- package/src/data-table/__tests__/data-table-column-header.test.js +227 -0
- package/src/data-table/__tests__/data-table-row/expand-handle-cell.js +32 -0
- package/src/data-table/__tests__/data-table-row/expanded-row.test.js +57 -0
- package/src/data-table/__tests__/data-table-row.test.js +162 -0
- package/src/data-table/__tests__/data-table.test.js +85 -0
- package/src/data-table/data-table-body.js +3 -0
- package/src/data-table/data-table-cell.js +111 -0
- package/src/data-table/data-table-column-header/data-table-column-header.js +130 -0
- package/src/data-table/data-table-column-header/data-table-column-header.styles.js +30 -0
- package/src/data-table/data-table-column-header/filter-handle.js +30 -0
- package/src/data-table/data-table-column-header/sorter.js +67 -0
- package/src/data-table/data-table-foot.js +3 -0
- package/src/data-table/data-table-head.js +3 -0
- package/src/data-table/data-table-row/data-table-row.js +103 -0
- package/src/data-table/data-table-row/data-table-row.styles.js +20 -0
- package/src/data-table/data-table-row/drag-handle-cell.js +9 -0
- package/src/data-table/data-table-row/expand-handle-cell.js +28 -0
- package/src/data-table/data-table-row/expanded-row.js +51 -0
- package/src/data-table/data-table-toolbar.js +3 -0
- package/src/data-table/data-table.e2e.stories.js +192 -0
- package/src/data-table/data-table.js +75 -0
- package/src/data-table/data-table.prod.stories.js +1342 -0
- package/src/data-table/features/can_scroll/index.js +48 -0
- package/src/data-table/features/can_scroll.feature +31 -0
- package/src/data-table/index.js +8 -0
- package/src/data-table/table-elements/__tests__/table-body.test.js +40 -0
- package/src/data-table/table-elements/__tests__/table-data-cell.test.js +123 -0
- package/src/data-table/table-elements/__tests__/table-foot.test.js +40 -0
- package/src/data-table/table-elements/__tests__/table-head.test.js +40 -0
- package/src/data-table/table-elements/__tests__/table-header-cell-action.test.js +46 -0
- package/src/data-table/table-elements/__tests__/table-header-cell.test.js +130 -0
- package/src/data-table/table-elements/__tests__/table-row.test.js +52 -0
- package/src/data-table/table-elements/__tests__/table-scroll-box.test.js +40 -0
- package/src/data-table/table-elements/__tests__/table-toolbar.test.js +44 -0
- package/src/data-table/table-elements/__tests__/table.test.js +53 -0
- package/src/data-table/table-elements/features/can_scroll/index.js +42 -0
- package/src/data-table/table-elements/features/can_scroll.feature +31 -0
- package/src/data-table/table-elements/index.js +10 -0
- package/src/data-table/table-elements/table-body.js +75 -0
- package/src/data-table/table-elements/table-data-cell/table-data-cell.js +126 -0
- package/src/data-table/table-elements/table-data-cell/table-data-cell.styles.js +42 -0
- package/src/data-table/table-elements/table-foot.js +35 -0
- package/src/data-table/table-elements/table-head.js +26 -0
- package/src/data-table/table-elements/table-header-cell/table-header-cell.js +121 -0
- package/src/data-table/table-elements/table-header-cell/table-header-cell.styles.js +71 -0
- package/src/data-table/table-elements/table-header-cell-action.js +62 -0
- package/src/data-table/table-elements/table-row.js +52 -0
- package/src/data-table/table-elements/table-scroll-box.js +41 -0
- package/src/data-table/table-elements/table-toolbar.js +50 -0
- package/src/data-table/table-elements/table.e2e.stories.js +190 -0
- package/src/data-table/table-elements/table.js +70 -0
- package/src/data-table/table-elements/table.stories.internal.js +1144 -0
- package/src/index.js +32 -0
- package/src/locales/ar/translations.json +4 -0
- package/src/locales/cs/translations.json +4 -0
- package/src/locales/en/translations.json +4 -0
- package/src/locales/es/translations.json +4 -0
- package/src/locales/es_419/translations.json +4 -0
- package/src/locales/fr/translations.json +4 -0
- package/src/locales/index.js +44 -0
- package/src/locales/km/translations.json +4 -0
- package/src/locales/lo/translations.json +4 -0
- package/src/locales/nb/translations.json +4 -0
- package/src/locales/nl/translations.json +4 -0
- package/src/locales/pt/translations.json +4 -0
- package/src/locales/ru/translations.json +4 -0
- package/src/locales/uk/translations.json +4 -0
- package/src/locales/uz_UZ_Cyrl/translations.json +4 -0
- package/src/locales/zh/translations.json +4 -0
- package/src/stacked-table/add-col-num-to-children.js +16 -0
- package/src/stacked-table/content-with-title.js +40 -0
- package/src/stacked-table/extract-header-labels.js +99 -0
- package/src/stacked-table/index.js +8 -0
- package/src/stacked-table/stacked-table-body.js +23 -0
- package/src/stacked-table/stacked-table-cell-head.js +39 -0
- package/src/stacked-table/stacked-table-cell.js +60 -0
- package/src/stacked-table/stacked-table-foot.js +24 -0
- package/src/stacked-table/stacked-table-head.js +23 -0
- package/src/stacked-table/stacked-table-row-head.js +19 -0
- package/src/stacked-table/stacked-table-row.js +50 -0
- package/src/stacked-table/stacked-table.js +33 -0
- package/src/stacked-table/stacked-table.prod.stories.js +463 -0
- package/src/stacked-table/stacked-table.test.js +127 -0
- package/src/stacked-table/supply-header-labels-to-children.js +7 -0
- package/src/stacked-table/table-context.js +4 -0
- package/src/stacked-table/table.js +28 -0
- package/src/table/index.js +8 -0
- package/src/table/table-body.js +21 -0
- package/src/table/table-cell-head.js +56 -0
- package/src/table/table-cell.js +56 -0
- package/src/table/table-context.js +7 -0
- package/src/table/table-foot.js +21 -0
- package/src/table/table-head.js +21 -0
- package/src/table/table-row-head.js +30 -0
- package/src/table/table-row.js +51 -0
- package/src/table/table.js +41 -0
- package/src/table/table.prod.stories.js +724 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import cx from 'classnames'
|
|
2
|
+
import PropTypes from 'prop-types'
|
|
3
|
+
import React from 'react'
|
|
4
|
+
import css from 'styled-jsx/css'
|
|
5
|
+
|
|
6
|
+
const tableCellHeadStyles = css`
|
|
7
|
+
th {
|
|
8
|
+
border-bottom: 1px solid #e8edf2;
|
|
9
|
+
font-size: 14px;
|
|
10
|
+
line-height: 18px;
|
|
11
|
+
padding: 13px 12px;
|
|
12
|
+
height: 45px;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
th:dir(rtl) {
|
|
16
|
+
text-align: right;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.dense {
|
|
20
|
+
padding: 9px 12px;
|
|
21
|
+
height: 36px;
|
|
22
|
+
}
|
|
23
|
+
`
|
|
24
|
+
|
|
25
|
+
export const TableCellHead = ({
|
|
26
|
+
role,
|
|
27
|
+
colSpan,
|
|
28
|
+
rowSpan,
|
|
29
|
+
dense,
|
|
30
|
+
children,
|
|
31
|
+
className,
|
|
32
|
+
dataTest = 'dhis2-uicore-tablecellhead',
|
|
33
|
+
}) => (
|
|
34
|
+
<th
|
|
35
|
+
colSpan={colSpan}
|
|
36
|
+
rowSpan={rowSpan}
|
|
37
|
+
className={cx({ dense }, className)}
|
|
38
|
+
data-test={dataTest}
|
|
39
|
+
role={role}
|
|
40
|
+
>
|
|
41
|
+
{children}
|
|
42
|
+
|
|
43
|
+
<style jsx>{tableCellHeadStyles}</style>
|
|
44
|
+
</th>
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
TableCellHead.propTypes = {
|
|
48
|
+
children: PropTypes.node,
|
|
49
|
+
className: PropTypes.string,
|
|
50
|
+
colSpan: PropTypes.string,
|
|
51
|
+
dataTest: PropTypes.string,
|
|
52
|
+
/** Uses less padding and height for information-dense layouts */
|
|
53
|
+
dense: PropTypes.bool,
|
|
54
|
+
role: PropTypes.string,
|
|
55
|
+
rowSpan: PropTypes.string,
|
|
56
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import cx from 'classnames'
|
|
2
|
+
import PropTypes from 'prop-types'
|
|
3
|
+
import React from 'react'
|
|
4
|
+
import css from 'styled-jsx/css'
|
|
5
|
+
|
|
6
|
+
const tableCellStyles = css`
|
|
7
|
+
td {
|
|
8
|
+
border-bottom: 1px solid #e8edf2;
|
|
9
|
+
font-size: 14px;
|
|
10
|
+
line-height: 18px;
|
|
11
|
+
padding: 13px 12px;
|
|
12
|
+
height: 45px;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
td:dir(rtl) {
|
|
16
|
+
text-align: right;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.dense {
|
|
20
|
+
padding: 9px 12px;
|
|
21
|
+
height: 36px;
|
|
22
|
+
}
|
|
23
|
+
`
|
|
24
|
+
|
|
25
|
+
export const TableCell = ({
|
|
26
|
+
role,
|
|
27
|
+
className,
|
|
28
|
+
children,
|
|
29
|
+
colSpan,
|
|
30
|
+
rowSpan,
|
|
31
|
+
dense,
|
|
32
|
+
dataTest = 'dhis2-uicore-tablecell',
|
|
33
|
+
}) => (
|
|
34
|
+
<td
|
|
35
|
+
colSpan={colSpan}
|
|
36
|
+
rowSpan={rowSpan}
|
|
37
|
+
className={cx({ dense }, className)}
|
|
38
|
+
data-test={dataTest}
|
|
39
|
+
role={role}
|
|
40
|
+
>
|
|
41
|
+
{children}
|
|
42
|
+
|
|
43
|
+
<style jsx>{tableCellStyles}</style>
|
|
44
|
+
</td>
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
TableCell.propTypes = {
|
|
48
|
+
children: PropTypes.node,
|
|
49
|
+
className: PropTypes.string,
|
|
50
|
+
colSpan: PropTypes.string,
|
|
51
|
+
dataTest: PropTypes.string,
|
|
52
|
+
/** Usees less padding and height for information-dense layouts */
|
|
53
|
+
dense: PropTypes.bool,
|
|
54
|
+
role: PropTypes.string,
|
|
55
|
+
rowSpan: PropTypes.string,
|
|
56
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import PropTypes from 'prop-types'
|
|
2
|
+
import React from 'react'
|
|
3
|
+
|
|
4
|
+
export const TableFoot = ({
|
|
5
|
+
children,
|
|
6
|
+
className,
|
|
7
|
+
dataTest = 'dhis2-uicore-tablefoot',
|
|
8
|
+
role,
|
|
9
|
+
}) => (
|
|
10
|
+
<tfoot className={className} data-test={dataTest} role={role}>
|
|
11
|
+
{children}
|
|
12
|
+
</tfoot>
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
TableFoot.propTypes = {
|
|
16
|
+
/** Should be `<TableRow>` components */
|
|
17
|
+
children: PropTypes.node,
|
|
18
|
+
className: PropTypes.string,
|
|
19
|
+
dataTest: PropTypes.string,
|
|
20
|
+
role: PropTypes.string,
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import PropTypes from 'prop-types'
|
|
2
|
+
import React from 'react'
|
|
3
|
+
|
|
4
|
+
export const TableHead = ({
|
|
5
|
+
children,
|
|
6
|
+
className,
|
|
7
|
+
dataTest = 'dhis2-uicore-tablehead',
|
|
8
|
+
role,
|
|
9
|
+
}) => (
|
|
10
|
+
<thead className={className} data-test={dataTest} role={role}>
|
|
11
|
+
{children}
|
|
12
|
+
</thead>
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
TableHead.propTypes = {
|
|
16
|
+
/** Should be `<TableRowHead>` components */
|
|
17
|
+
children: PropTypes.node,
|
|
18
|
+
className: PropTypes.string,
|
|
19
|
+
dataTest: PropTypes.string,
|
|
20
|
+
role: PropTypes.string,
|
|
21
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import PropTypes from 'prop-types'
|
|
2
|
+
import React from 'react'
|
|
3
|
+
import { TableRow } from './table-row.js'
|
|
4
|
+
|
|
5
|
+
export const TableRowHead = ({
|
|
6
|
+
role,
|
|
7
|
+
children,
|
|
8
|
+
className,
|
|
9
|
+
dataTest = 'dhis2-uicore-tablerowhead',
|
|
10
|
+
suppressZebraStriping,
|
|
11
|
+
}) => (
|
|
12
|
+
<TableRow
|
|
13
|
+
className={className}
|
|
14
|
+
dataTest={dataTest}
|
|
15
|
+
suppressZebraStriping={suppressZebraStriping}
|
|
16
|
+
role={role}
|
|
17
|
+
>
|
|
18
|
+
{children}
|
|
19
|
+
</TableRow>
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
TableRowHead.propTypes = {
|
|
23
|
+
/** Should be `<TableCellHead>` components */
|
|
24
|
+
children: PropTypes.node,
|
|
25
|
+
className: PropTypes.string,
|
|
26
|
+
dataTest: PropTypes.string,
|
|
27
|
+
role: PropTypes.string,
|
|
28
|
+
/** Disables the default row striping for this row */
|
|
29
|
+
suppressZebraStriping: PropTypes.bool,
|
|
30
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import cx from 'classnames'
|
|
2
|
+
import PropTypes from 'prop-types'
|
|
3
|
+
import React, { useContext } from 'react'
|
|
4
|
+
import css from 'styled-jsx/css'
|
|
5
|
+
import { TableContext } from './table-context.js'
|
|
6
|
+
|
|
7
|
+
const tableRowStyles = css`
|
|
8
|
+
.zebraStriping:nth-child(even) {
|
|
9
|
+
background: #fbfcfd;
|
|
10
|
+
}
|
|
11
|
+
`
|
|
12
|
+
|
|
13
|
+
export const TableRow = ({
|
|
14
|
+
role,
|
|
15
|
+
children,
|
|
16
|
+
className,
|
|
17
|
+
dataTest = 'dhis2-uicore-tablerow',
|
|
18
|
+
suppressZebraStriping,
|
|
19
|
+
...rest
|
|
20
|
+
}) => {
|
|
21
|
+
const { suppressZebraStriping: suppressZebraStripingFromContext } =
|
|
22
|
+
useContext(TableContext)
|
|
23
|
+
|
|
24
|
+
const zebraStriping =
|
|
25
|
+
typeof suppressZebraStriping !== 'undefined'
|
|
26
|
+
? !suppressZebraStriping
|
|
27
|
+
: !suppressZebraStripingFromContext
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<tr
|
|
31
|
+
className={cx(className, { zebraStriping })}
|
|
32
|
+
data-test={dataTest}
|
|
33
|
+
role={role}
|
|
34
|
+
{...rest}
|
|
35
|
+
>
|
|
36
|
+
{children}
|
|
37
|
+
|
|
38
|
+
<style jsx>{tableRowStyles}</style>
|
|
39
|
+
</tr>
|
|
40
|
+
)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
TableRow.propTypes = {
|
|
44
|
+
/** Should be `<TableCell>` or `<TableCellHead>` components */
|
|
45
|
+
children: PropTypes.node,
|
|
46
|
+
className: PropTypes.string,
|
|
47
|
+
dataTest: PropTypes.string,
|
|
48
|
+
role: PropTypes.string,
|
|
49
|
+
/** Disables the default row striping for this row */
|
|
50
|
+
suppressZebraStriping: PropTypes.bool,
|
|
51
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import PropTypes from 'prop-types'
|
|
2
|
+
import React from 'react'
|
|
3
|
+
import css from 'styled-jsx/css'
|
|
4
|
+
import { Provider } from './table-context.js'
|
|
5
|
+
|
|
6
|
+
const tableStyles = css`
|
|
7
|
+
table {
|
|
8
|
+
border: 1px solid #e8edf2;
|
|
9
|
+
background-color: #ffffff;
|
|
10
|
+
min-width: 100%;
|
|
11
|
+
text-align: left;
|
|
12
|
+
border-collapse: collapse;
|
|
13
|
+
vertical-align: top;
|
|
14
|
+
}
|
|
15
|
+
`
|
|
16
|
+
|
|
17
|
+
export const Table = ({
|
|
18
|
+
role,
|
|
19
|
+
children,
|
|
20
|
+
className,
|
|
21
|
+
dataTest = 'dhis2-uicore-table',
|
|
22
|
+
suppressZebraStriping,
|
|
23
|
+
}) => (
|
|
24
|
+
<Provider value={{ suppressZebraStriping }}>
|
|
25
|
+
<table className={className} data-test={dataTest} role={role}>
|
|
26
|
+
{children}
|
|
27
|
+
|
|
28
|
+
<style jsx>{tableStyles}</style>
|
|
29
|
+
</table>
|
|
30
|
+
</Provider>
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
Table.propTypes = {
|
|
34
|
+
/** Should be `<TableHead>`, `<TableBody>`, and `<TableFoot>` components */
|
|
35
|
+
children: PropTypes.node,
|
|
36
|
+
className: PropTypes.string,
|
|
37
|
+
dataTest: PropTypes.string,
|
|
38
|
+
role: PropTypes.string,
|
|
39
|
+
/** Remove the default striping on alternating rows */
|
|
40
|
+
suppressZebraStriping: PropTypes.bool,
|
|
41
|
+
}
|