@dhis2-ui/table 10.16.1 → 10.16.3-alpha.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 (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,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,7 @@
1
+ import { createContext } from 'react'
2
+
3
+ export const TableContext = createContext({
4
+ suppressZebraStriping: false,
5
+ })
6
+
7
+ export const { Consumer, Provider } = TableContext
@@ -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
+ }