@laerdal/life-react-components 1.3.2-dev.4 → 1.3.2-dev.7
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/dist/esm/Button/Iconbutton.js +0 -1
- package/dist/esm/Button/Iconbutton.js.map +1 -1
- package/dist/esm/Dropdown/CommonStyling.js +4 -0
- package/dist/esm/Dropdown/CommonStyling.js.map +1 -1
- package/dist/esm/Dropdown/DropdownButton.js +5 -2
- package/dist/esm/Dropdown/DropdownButton.js.map +1 -1
- package/dist/esm/Dropdown/DropdownFilter.js.map +1 -1
- package/dist/esm/HyperLink/HyperLink.js +2 -1
- package/dist/esm/HyperLink/HyperLink.js.map +1 -1
- package/dist/esm/InputFields/Checkbox.js +23 -13
- package/dist/esm/InputFields/Checkbox.js.map +1 -1
- package/dist/esm/Table/Table.js +115 -181
- package/dist/esm/Table/Table.js.map +1 -1
- package/dist/esm/Table/TableBody.js +145 -0
- package/dist/esm/Table/TableBody.js.map +1 -0
- package/dist/esm/Table/TableFooter.js +67 -0
- package/dist/esm/Table/TableFooter.js.map +1 -0
- package/dist/esm/Table/TableHeaders.js +66 -0
- package/dist/esm/Table/TableHeaders.js.map +1 -0
- package/dist/esm/Table/TableStyles.js +175 -150
- package/dist/esm/Table/TableStyles.js.map +1 -1
- package/dist/esm/Table/__tests__/Table.test.js +0 -21
- package/dist/esm/Table/__tests__/Table.test.js.map +1 -1
- package/dist/js/Button/Iconbutton.d.ts +2 -2
- package/dist/js/Button/Iconbutton.js +0 -1
- package/dist/js/Button/Iconbutton.js.map +1 -1
- package/dist/js/Dropdown/CommonStyling.js +1 -1
- package/dist/js/Dropdown/CommonStyling.js.map +1 -1
- package/dist/js/Dropdown/DropdownButton.d.ts +1 -1
- package/dist/js/Dropdown/DropdownButton.js +5 -2
- package/dist/js/Dropdown/DropdownButton.js.map +1 -1
- package/dist/js/Dropdown/DropdownButtonTypes.d.ts +1 -0
- package/dist/js/Dropdown/DropdownFilter.d.ts +1 -1
- package/dist/js/Dropdown/DropdownFilter.js.map +1 -1
- package/dist/js/HyperLink/HyperLink.d.ts +1 -1
- package/dist/js/HyperLink/HyperLink.js +2 -2
- package/dist/js/HyperLink/HyperLink.js.map +1 -1
- package/dist/js/InputFields/Checkbox.d.ts +3 -2
- package/dist/js/InputFields/Checkbox.js +13 -11
- package/dist/js/InputFields/Checkbox.js.map +1 -1
- package/dist/js/Table/Table.js +145 -209
- package/dist/js/Table/Table.js.map +1 -1
- package/dist/js/Table/TableBody.d.ts +9 -0
- package/dist/js/Table/TableBody.js +176 -0
- package/dist/js/Table/TableBody.js.map +1 -0
- package/dist/js/Table/TableFooter.d.ts +13 -0
- package/dist/js/Table/TableFooter.js +88 -0
- package/dist/js/Table/TableFooter.js.map +1 -0
- package/dist/js/Table/TableHeaders.d.ts +9 -0
- package/dist/js/Table/TableHeaders.js +87 -0
- package/dist/js/Table/TableHeaders.js.map +1 -0
- package/dist/js/Table/TableStyles.d.ts +0 -7
- package/dist/js/Table/TableStyles.js +5 -31
- package/dist/js/Table/TableStyles.js.map +1 -1
- package/dist/js/Table/TableTypes.d.ts +23 -16
- package/dist/js/Table/__tests__/Table.test.js +8 -30
- package/dist/js/Table/__tests__/Table.test.js.map +1 -1
- package/dist/umd/Button/Iconbutton.js +0 -1
- package/dist/umd/Button/Iconbutton.js.map +1 -1
- package/dist/umd/Dropdown/CommonStyling.js +4 -0
- package/dist/umd/Dropdown/CommonStyling.js.map +1 -1
- package/dist/umd/Dropdown/DropdownButton.js +5 -2
- package/dist/umd/Dropdown/DropdownButton.js.map +1 -1
- package/dist/umd/Dropdown/DropdownFilter.js.map +1 -1
- package/dist/umd/HyperLink/HyperLink.js +2 -1
- package/dist/umd/HyperLink/HyperLink.js.map +1 -1
- package/dist/umd/InputFields/Checkbox.js +23 -13
- package/dist/umd/InputFields/Checkbox.js.map +1 -1
- package/dist/umd/Table/Table.js +141 -188
- package/dist/umd/Table/Table.js.map +1 -1
- package/dist/umd/Table/TableBody.js +281 -0
- package/dist/umd/Table/TableBody.js.map +1 -0
- package/dist/umd/Table/TableFooter.js +90 -0
- package/dist/umd/Table/TableFooter.js.map +1 -0
- package/dist/umd/Table/TableHeaders.js +103 -0
- package/dist/umd/Table/TableHeaders.js.map +1 -0
- package/dist/umd/Table/TableStyles.js +179 -155
- package/dist/umd/Table/TableStyles.js.map +1 -1
- package/dist/umd/Table/__tests__/Table.test.js +0 -21
- package/dist/umd/Table/__tests__/Table.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import _pt from "prop-types";
|
|
2
|
+
|
|
3
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
4
|
+
|
|
5
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
6
|
+
|
|
7
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
8
|
+
|
|
9
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
10
|
+
|
|
11
|
+
import { Button } from '../Button';
|
|
12
|
+
import { Size } from '../types';
|
|
13
|
+
import * as React from 'react';
|
|
14
|
+
import { Checkbox } from '../InputFields';
|
|
15
|
+
import IconButton from '../Button/Iconbutton';
|
|
16
|
+
import { HyperLink } from '../HyperLink';
|
|
17
|
+
|
|
18
|
+
const TableBody = props => {
|
|
19
|
+
const renderCellBody = (column, row) => {
|
|
20
|
+
switch (column.type) {
|
|
21
|
+
case 'link':
|
|
22
|
+
{
|
|
23
|
+
const props = _objectSpread({
|
|
24
|
+
variant: 'default',
|
|
25
|
+
href: ''
|
|
26
|
+
}, column.additionalProps);
|
|
27
|
+
|
|
28
|
+
return /*#__PURE__*/React.createElement(HyperLink, _extends({
|
|
29
|
+
style: column.colorFn && {
|
|
30
|
+
color: column.colorFn(row, column.key)
|
|
31
|
+
}
|
|
32
|
+
}, props, {
|
|
33
|
+
onClick: e => {
|
|
34
|
+
e.preventDefault();
|
|
35
|
+
e.stopPropagation();
|
|
36
|
+
column.action && column.action(row, e);
|
|
37
|
+
}
|
|
38
|
+
}), row[column.key]);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
case 'icon':
|
|
42
|
+
{
|
|
43
|
+
const props = _objectSpread({
|
|
44
|
+
iconColor: column.colorFn && column.colorFn(row, column.key),
|
|
45
|
+
variant: 'secondary',
|
|
46
|
+
shape: 'circular',
|
|
47
|
+
useTransparentBackground: true
|
|
48
|
+
}, column.additionalProps);
|
|
49
|
+
|
|
50
|
+
return /*#__PURE__*/React.createElement(IconButton, _extends({}, props, {
|
|
51
|
+
action: e => {
|
|
52
|
+
e?.stopPropagation();
|
|
53
|
+
column.action && column.action(row, e);
|
|
54
|
+
}
|
|
55
|
+
}), column.icon);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
case 'button':
|
|
59
|
+
{
|
|
60
|
+
const props = _objectSpread({
|
|
61
|
+
variant: 'tertiary',
|
|
62
|
+
size: Size.Small
|
|
63
|
+
}, column.additionalProps);
|
|
64
|
+
|
|
65
|
+
return /*#__PURE__*/React.createElement(Button, _extends({
|
|
66
|
+
style: column.colorFn && {
|
|
67
|
+
color: column.colorFn(row, column.key)
|
|
68
|
+
}
|
|
69
|
+
}, props, {
|
|
70
|
+
onClick: e => {
|
|
71
|
+
e?.stopPropagation();
|
|
72
|
+
column.action && column.action(row, e);
|
|
73
|
+
}
|
|
74
|
+
}), row[column.key]);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
case 'boolean':
|
|
78
|
+
return /*#__PURE__*/React.createElement(Checkbox, {
|
|
79
|
+
selected: !!row[column.key],
|
|
80
|
+
readonly: true
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
case 'custom':
|
|
84
|
+
return column.customContent && column.customContent(row, column.key);
|
|
85
|
+
|
|
86
|
+
case 'number':
|
|
87
|
+
case 'text':
|
|
88
|
+
default:
|
|
89
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
90
|
+
className: 'table-cell-icon'
|
|
91
|
+
}, column.icon), /*#__PURE__*/React.createElement("span", null, row[column.key]));
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
return /*#__PURE__*/React.createElement("tbody", {
|
|
96
|
+
className: 'table-body'
|
|
97
|
+
}, props.currentPageRows.length > 0 ? props.currentPageRows.map((row, index) => /*#__PURE__*/React.createElement("tr", {
|
|
98
|
+
key: `row_${index}`,
|
|
99
|
+
className: 'table-row'.concat(props.selectable ? ' selectable' : ''),
|
|
100
|
+
onClick: () => props.onRowClick && props.onRowClick(row),
|
|
101
|
+
onMouseDown: event => event.preventDefault(),
|
|
102
|
+
onKeyPress: e => {
|
|
103
|
+
if (e.key === 'Enter') {
|
|
104
|
+
props.onRowClick && props.onRowClick(row);
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
tabIndex: props.selectable ? 0 : undefined,
|
|
108
|
+
"data-testid": "TestTableDataRow"
|
|
109
|
+
}, props.multiSelect && /*#__PURE__*/React.createElement("td", {
|
|
110
|
+
className: 'table-cell'
|
|
111
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
112
|
+
className: 'table-cell-content'
|
|
113
|
+
}, /*#__PURE__*/React.createElement(Checkbox, {
|
|
114
|
+
selected: props.selected?.indexOf(props.keyExpr ? row[props.keyExpr] : row) > -1,
|
|
115
|
+
readonly: true
|
|
116
|
+
}))), props.columns.map(column => /*#__PURE__*/React.createElement("td", {
|
|
117
|
+
key: `row_${index}_${column.key}`,
|
|
118
|
+
className: `table-cell`,
|
|
119
|
+
style: column.colorFn ? {
|
|
120
|
+
color: column.colorFn(row, column.key),
|
|
121
|
+
maxWidth: column.width
|
|
122
|
+
} : {
|
|
123
|
+
maxWidth: column.width
|
|
124
|
+
},
|
|
125
|
+
title: column.shortenText && row[column.key]
|
|
126
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
127
|
+
className: `table-cell-content ${column.shortenText && `truncate-text`} ${column.justify}`
|
|
128
|
+
}, renderCellBody(column, row)))))) : /*#__PURE__*/React.createElement("tr", {
|
|
129
|
+
className: "table-row",
|
|
130
|
+
"data-testid": "TestTableNoDataRow"
|
|
131
|
+
}, /*#__PURE__*/React.createElement("td", {
|
|
132
|
+
colSpan: props.columns.length + (props.multiSelect ? 1 : 0),
|
|
133
|
+
className: "table-cell"
|
|
134
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
135
|
+
className: 'table-cell-content center'
|
|
136
|
+
}, "There are no rows to display"))));
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
TableBody.propTypes = {
|
|
140
|
+
currentPageRows: _pt.arrayOf(_pt.any).isRequired,
|
|
141
|
+
onRowClick: _pt.func,
|
|
142
|
+
selected: _pt.any
|
|
143
|
+
};
|
|
144
|
+
export default TableBody;
|
|
145
|
+
//# sourceMappingURL=TableBody.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/Table/TableBody.tsx"],"names":["Button","Size","React","Checkbox","IconButton","HyperLink","TableBody","props","renderCellBody","column","row","type","variant","href","additionalProps","colorFn","color","key","e","preventDefault","stopPropagation","action","iconColor","shape","useTransparentBackground","icon","size","Small","customContent","currentPageRows","length","map","index","concat","selectable","onRowClick","event","undefined","multiSelect","selected","indexOf","keyExpr","columns","maxWidth","width","shortenText","justify"],"mappings":"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","sourcesContent":["import {TableColumn, TableProps} from './TableTypes';\nimport {Button} from '../Button';\nimport {Size} from '../types';\nimport * as React from 'react';\nimport {Checkbox} from '../InputFields';\nimport {ButtonProps} from '../Button/Button';\nimport IconButton, {IconButtonProps} from '../Button/Iconbutton';\nimport {HyperlinkProps} from '../HyperLink/HyperLink';\nimport {HyperLink} from '../HyperLink';\n\n\ninterface TableBodyProps extends TableProps {\n currentPageRows: any[];\n onRowClick?: (row: any) => void;\n selected?: any | any[];\n}\n\nconst TableBody: React.FC<TableBodyProps> = (props) => {\n\n const renderCellBody = (column: TableColumn, row: any) => {\n switch (column.type) {\n case 'link': {\n const props = ({variant: 'default', href: '', ...column.additionalProps}) as HyperlinkProps;\n return (\n <HyperLink style={column.colorFn && {color: column.colorFn(row, column.key)}}\n {...props}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n column.action && column.action(row, e);\n }}>\n {row[column.key]}\n </HyperLink>\n );\n }\n case 'icon': {\n const props = ({\n iconColor: column.colorFn && column.colorFn(row, column.key),\n variant: 'secondary',\n shape: 'circular',\n useTransparentBackground: true,\n ...column.additionalProps\n }) as IconButtonProps;\n return <IconButton {...props}\n action={(e) => {\n e?.stopPropagation();\n column.action && column.action(row, e);\n }}>\n {column.icon}\n </IconButton>\n }\n case 'button': {\n const props = ({\n variant: 'tertiary',\n size: Size.Small,\n ...column.additionalProps\n }) as ButtonProps;\n return <Button style={column.colorFn && {color: column.colorFn(row, column.key)}}\n {...props}\n onClick={(e) => {\n e?.stopPropagation();\n column.action && column.action(row, e);\n }}>\n {row[column.key]}\n </Button>\n }\n case 'boolean':\n return <Checkbox selected={!!row[column.key]} readonly={true}/>;\n case 'custom':\n return column.customContent && column.customContent(row, column.key);\n case 'number':\n case 'text':\n default:\n return (\n <>\n <div className={'table-cell-icon'}>{column.icon}</div>\n <span>{row[column.key]}</span>\n </>\n );\n }\n }\n\n return (\n <tbody className={'table-body'}>\n {props.currentPageRows.length > 0 ? (\n props.currentPageRows.map((row: any, index: number) => (\n <tr key={`row_${index}`}\n className={'table-row'.concat(props.selectable ? ' selectable' : '')}\n onClick={() => props.onRowClick && props.onRowClick(row)}\n onMouseDown={(event) => event.preventDefault()}\n onKeyPress={(e) => {\n if (e.key === 'Enter') {\n props.onRowClick && props.onRowClick(row);\n }\n }}\n tabIndex={props.selectable ? 0 : undefined}\n data-testid=\"TestTableDataRow\">\n {\n props.multiSelect &&\n <td className={'table-cell'}>\n <div className={'table-cell-content'}>\n <Checkbox selected={props.selected?.indexOf(props.keyExpr ? row[props.keyExpr] : row) > -1} readonly={true}/>\n </div>\n </td>\n }\n {props.columns.map((column: TableColumn) => (\n <td key={`row_${index}_${column.key}`}\n className={`table-cell`}\n style={column.colorFn ? {\n color: column.colorFn(row, column.key),\n maxWidth: column.width\n } : {maxWidth: column.width}}\n title={column.shortenText && row[column.key]}>\n <div className={`table-cell-content ${column.shortenText && `truncate-text`} ${column.justify}`}>\n {renderCellBody(column, row)}\n </div>\n </td>\n ))}\n </tr>\n ))\n ) : (\n <tr className=\"table-row\" data-testid=\"TestTableNoDataRow\">\n <td colSpan={props.columns.length + (props.multiSelect ? 1 : 0)} className=\"table-cell\">\n <div className={'table-cell-content center'}>\n There are no rows to display\n </div>\n </td>\n </tr>\n )}\n\n </tbody>\n );\n }\n;\n\nexport default TableBody;\n"],"file":"TableBody.js"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import _pt from "prop-types";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { DropdownFilter } from '../Dropdown';
|
|
4
|
+
import { IconButton } from '../Button';
|
|
5
|
+
import { ChevronLeft, ChevronRight } from '../icons/systemicons/SystemIcons';
|
|
6
|
+
import { COLORS } from '../styles';
|
|
7
|
+
|
|
8
|
+
const TableFooter = props => {
|
|
9
|
+
const rowsPerPageValues = [{
|
|
10
|
+
label: '10'
|
|
11
|
+
}, {
|
|
12
|
+
label: '20'
|
|
13
|
+
}, {
|
|
14
|
+
label: '50'
|
|
15
|
+
}, {
|
|
16
|
+
label: '100'
|
|
17
|
+
}];
|
|
18
|
+
const dropDownText = `Rows per page: ${props.rowsPerPage}`;
|
|
19
|
+
return /*#__PURE__*/React.createElement("tfoot", {
|
|
20
|
+
className: 'table-footer'
|
|
21
|
+
}, /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("td", {
|
|
22
|
+
colSpan: props.columns.length + (props.multiSelect ? 1 : 0),
|
|
23
|
+
"data-testid": "TestTableFooterRow"
|
|
24
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
25
|
+
className: 'footer-content'
|
|
26
|
+
}, /*#__PURE__*/React.createElement(DropdownFilter, {
|
|
27
|
+
id: "rows-per-page",
|
|
28
|
+
list: rowsPerPageValues,
|
|
29
|
+
disableSorting: true,
|
|
30
|
+
onSelect: value => props.onRowsPerPageChange(+value),
|
|
31
|
+
initalValue: dropDownText,
|
|
32
|
+
keepInitialValue: true,
|
|
33
|
+
isButton: true
|
|
34
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
35
|
+
className: "current-page-info"
|
|
36
|
+
}, props.total === 0 ? 0 : props.from, "-", props.to, " of ", props.total), /*#__PURE__*/React.createElement("div", {
|
|
37
|
+
className: "controls"
|
|
38
|
+
}, /*#__PURE__*/React.createElement(IconButton, {
|
|
39
|
+
variant: "secondary",
|
|
40
|
+
shape: "circular",
|
|
41
|
+
action: () => props.prevPage(),
|
|
42
|
+
disabled: props.from === 1
|
|
43
|
+
}, /*#__PURE__*/React.createElement(ChevronLeft, {
|
|
44
|
+
size: "24",
|
|
45
|
+
color: COLORS.neutral_600
|
|
46
|
+
})), /*#__PURE__*/React.createElement(IconButton, {
|
|
47
|
+
variant: "secondary",
|
|
48
|
+
shape: "circular",
|
|
49
|
+
action: () => props.nextPage(),
|
|
50
|
+
disabled: props.to === props.total
|
|
51
|
+
}, /*#__PURE__*/React.createElement(ChevronRight, {
|
|
52
|
+
size: "24",
|
|
53
|
+
color: COLORS.neutral_600
|
|
54
|
+
})))))));
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
TableFooter.propTypes = {
|
|
58
|
+
onRowsPerPageChange: _pt.func.isRequired,
|
|
59
|
+
rowsPerPage: _pt.number.isRequired,
|
|
60
|
+
from: _pt.number,
|
|
61
|
+
to: _pt.number,
|
|
62
|
+
total: _pt.number,
|
|
63
|
+
nextPage: _pt.func.isRequired,
|
|
64
|
+
prevPage: _pt.func.isRequired
|
|
65
|
+
};
|
|
66
|
+
export default TableFooter;
|
|
67
|
+
//# sourceMappingURL=TableFooter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/Table/TableFooter.tsx"],"names":["React","DropdownFilter","IconButton","ChevronLeft","ChevronRight","COLORS","TableFooter","props","rowsPerPageValues","label","dropDownText","rowsPerPage","columns","length","multiSelect","value","onRowsPerPageChange","total","from","to","prevPage","neutral_600","nextPage"],"mappings":";AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAAQC,cAAR,QAA6B,aAA7B;AACA,SAAQC,UAAR,QAAyB,WAAzB;AACA,SAAQC,WAAR,EAAqBC,YAArB,QAAwC,kCAAxC;AACA,SAAQC,MAAR,QAAqB,WAArB;;AAcA,MAAMC,WAAsD,GAAIC,KAAD,IAAW;AACxE,QAAMC,iBAAuC,GAAG,CAAC;AAACC,IAAAA,KAAK,EAAE;AAAR,GAAD,EAAgB;AAACA,IAAAA,KAAK,EAAE;AAAR,GAAhB,EAA+B;AAACA,IAAAA,KAAK,EAAE;AAAR,GAA/B,EAA8C;AAACA,IAAAA,KAAK,EAAE;AAAR,GAA9C,CAAhD;AAEA,QAAMC,YAAY,GAAI,kBAAiBH,KAAK,CAACI,WAAY,EAAzD;AAEA,sBACE;AAAO,IAAA,SAAS,EAAE;AAAlB,kBACA,6CACE;AAAI,IAAA,OAAO,EAAEJ,KAAK,CAACK,OAAN,CAAcC,MAAd,IAAwBN,KAAK,CAACO,WAAN,GAAoB,CAApB,GAAwB,CAAhD,CAAb;AAAiE,mBAAY;AAA7E,kBACE;AAAK,IAAA,SAAS,EAAE;AAAhB,kBACE,oBAAC,cAAD;AACE,IAAA,EAAE,EAAC,eADL;AAEE,IAAA,IAAI,EAAEN,iBAFR;AAGE,IAAA,cAAc,EAAE,IAHlB;AAIE,IAAA,QAAQ,EAAGO,KAAD,IAAWR,KAAK,CAACS,mBAAN,CAA0B,CAACD,KAA3B,CAJvB;AAKE,IAAA,WAAW,EAAEL,YALf;AAME,IAAA,gBAAgB,EAAE,IANpB;AAOE,IAAA,QAAQ,EAAE;AAPZ,IADF,eAUE;AAAM,IAAA,SAAS,EAAC;AAAhB,KACKH,KAAK,CAACU,KAAN,KAAgB,CAAhB,GAAoB,CAApB,GAAwBV,KAAK,CAACW,IADnC,OAC0CX,KAAK,CAACY,EADhD,UACwDZ,KAAK,CAACU,KAD9D,CAVF,eAaE;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE,oBAAC,UAAD;AAAY,IAAA,OAAO,EAAC,WAApB;AAAgC,IAAA,KAAK,EAAC,UAAtC;AAAiD,IAAA,MAAM,EAAE,MAAMV,KAAK,CAACa,QAAN,EAA/D;AACY,IAAA,QAAQ,EAAEb,KAAK,CAACW,IAAN,KAAe;AADrC,kBAEE,oBAAC,WAAD;AAAa,IAAA,IAAI,EAAC,IAAlB;AAAuB,IAAA,KAAK,EAAEb,MAAM,CAACgB;AAArC,IAFF,CADF,eAKE,oBAAC,UAAD;AAAY,IAAA,OAAO,EAAC,WAApB;AAAgC,IAAA,KAAK,EAAC,UAAtC;AAAiD,IAAA,MAAM,EAAE,MAAMd,KAAK,CAACe,QAAN,EAA/D;AACY,IAAA,QAAQ,EAAEf,KAAK,CAACY,EAAN,KAAaZ,KAAK,CAACU;AADzC,kBAEE,oBAAC,YAAD;AAAc,IAAA,IAAI,EAAC,IAAnB;AAAwB,IAAA,KAAK,EAAEZ,MAAM,CAACgB;AAAtC,IAFF,CALF,CAbF,CADF,CADF,CADA,CADF;AAgCD,CArCD;;;AATEL,EAAAA,mB;AACAL,EAAAA,W;AACAO,EAAAA,I;AACAC,EAAAA,E;AACAF,EAAAA,K;AACAK,EAAAA,Q;AACAF,EAAAA,Q;;AA2CF,eAAed,WAAf","sourcesContent":["import React from 'react';\nimport {TableProps} from './TableTypes';\nimport {DropdownFilter} from '../Dropdown';\nimport {IconButton} from '../Button';\nimport {ChevronLeft, ChevronRight} from '../icons/systemicons/SystemIcons';\nimport {COLORS} from '../styles';\nimport {DropdownFilterItem} from '../Dropdown/DropdownFilter';\n\n\ninterface TableFooterProps extends TableProps {\n onRowsPerPageChange: (value: number) => void;\n rowsPerPage: number;\n from?: number;\n to?: number;\n total?: number;\n nextPage: () => void;\n prevPage: () => void;\n}\n\nconst TableFooter: React.FunctionComponent<TableFooterProps> = (props) => {\n const rowsPerPageValues: DropdownFilterItem[] = [{label: '10'}, {label: '20'}, {label: '50'}, {label: '100'}];\n\n const dropDownText = `Rows per page: ${props.rowsPerPage}`;\n\n return (\n <tfoot className={'table-footer'}>\n <tr>\n <td colSpan={props.columns.length + (props.multiSelect ? 1 : 0)} data-testid=\"TestTableFooterRow\">\n <div className={'footer-content'}>\n <DropdownFilter\n id=\"rows-per-page\"\n list={rowsPerPageValues}\n disableSorting={true}\n onSelect={(value) => props.onRowsPerPageChange(+value)}\n initalValue={dropDownText}\n keepInitialValue={true}\n isButton={true}\n />\n <span className=\"current-page-info\">\n {props.total === 0 ? 0 : props.from}-{props.to} of {props.total}\n </span>\n <div className=\"controls\">\n <IconButton variant=\"secondary\" shape=\"circular\" action={() => props.prevPage()}\n disabled={props.from === 1}>\n <ChevronLeft size=\"24\" color={COLORS.neutral_600}/>\n </IconButton>\n <IconButton variant=\"secondary\" shape=\"circular\" action={() => props.nextPage()}\n disabled={props.to === props.total}>\n <ChevronRight size=\"24\" color={COLORS.neutral_600}/>\n </IconButton>\n </div>\n </div>\n </td>\n </tr>\n </tfoot>\n );\n};\n\n\nexport default TableFooter;\n"],"file":"TableFooter.js"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import _pt from "prop-types";
|
|
2
|
+
|
|
3
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
4
|
+
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import { ArrowLineDown, ArrowLineUp } from '../icons/systemicons/SystemIcons';
|
|
7
|
+
import { DropdownButton } from '../Dropdown';
|
|
8
|
+
import { SystemIcons } from '../icons';
|
|
9
|
+
import { Size } from '../types';
|
|
10
|
+
import { Checkbox } from '../InputFields';
|
|
11
|
+
|
|
12
|
+
const TableHeader = props => {
|
|
13
|
+
return /*#__PURE__*/React.createElement("thead", {
|
|
14
|
+
className: 'table-header'
|
|
15
|
+
}, !!props.title && /*#__PURE__*/React.createElement("tr", {
|
|
16
|
+
className: 'table-header-title',
|
|
17
|
+
"data-testid": "TestTableHeaderRow"
|
|
18
|
+
}, /*#__PURE__*/React.createElement("th", {
|
|
19
|
+
colSpan: props.columns.length + (props.multiSelect ? 1 : 0)
|
|
20
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
21
|
+
className: 'title-content'
|
|
22
|
+
}, /*#__PURE__*/React.createElement("span", null, props.title), props.menu && /*#__PURE__*/React.createElement(DropdownButton, _extends({
|
|
23
|
+
className: 'title-menu',
|
|
24
|
+
icon: /*#__PURE__*/React.createElement(SystemIcons.MoreVertical, null),
|
|
25
|
+
size: Size.Medium
|
|
26
|
+
}, props.menu))))), /*#__PURE__*/React.createElement("tr", {
|
|
27
|
+
className: 'table-header-columns',
|
|
28
|
+
"data-testid": "TestTableColumnHeaderRow"
|
|
29
|
+
}, props.multiSelect && /*#__PURE__*/React.createElement("th", {
|
|
30
|
+
className: 'table-header-column'
|
|
31
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
32
|
+
className: 'header-content'
|
|
33
|
+
}, /*#__PURE__*/React.createElement(Checkbox, {
|
|
34
|
+
selected: props.selectAllState === 'all',
|
|
35
|
+
semiSelected: props.selectAllState === 'some',
|
|
36
|
+
select: props.onSelectAllClick
|
|
37
|
+
}))), props.columns.map(column => /*#__PURE__*/React.createElement("th", {
|
|
38
|
+
key: column.key,
|
|
39
|
+
onMouseDown: e => e.preventDefault(),
|
|
40
|
+
onClick: e => props.sortByColumn(column),
|
|
41
|
+
onKeyPress: e => {
|
|
42
|
+
if (e.key === 'Enter') {
|
|
43
|
+
props.sortByColumn(column);
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
style: {
|
|
47
|
+
width: column.width
|
|
48
|
+
},
|
|
49
|
+
tabIndex: column.sortable ? 0 : -1,
|
|
50
|
+
className: `table-header-column ${column.sortable ? 'sortable' : ''} ${!!column.sortable && !!column.sortingDirection ? 'sorted' : ''}`
|
|
51
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
52
|
+
className: 'header-content'
|
|
53
|
+
}, /*#__PURE__*/React.createElement("span", null, column.name), column.sortable && (column.sortingDirection === 'asc' ? /*#__PURE__*/React.createElement(ArrowLineUp, {
|
|
54
|
+
size: '24px'
|
|
55
|
+
}) : /*#__PURE__*/React.createElement(ArrowLineDown, {
|
|
56
|
+
size: '24px'
|
|
57
|
+
})))))));
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
TableHeader.propTypes = {
|
|
61
|
+
sortByColumn: _pt.func.isRequired,
|
|
62
|
+
onSelectAllClick: _pt.func.isRequired,
|
|
63
|
+
selectAllState: _pt.oneOf(['all', 'some', 'none']).isRequired
|
|
64
|
+
};
|
|
65
|
+
export default TableHeader;
|
|
66
|
+
//# sourceMappingURL=TableHeaders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/Table/TableHeaders.tsx"],"names":["React","ArrowLineDown","ArrowLineUp","DropdownButton","SystemIcons","Size","Checkbox","TableHeader","props","title","columns","length","multiSelect","menu","Medium","selectAllState","onSelectAllClick","map","column","key","e","preventDefault","sortByColumn","width","sortable","sortingDirection","name"],"mappings":";;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAAQC,aAAR,EAAuBC,WAAvB,QAAyC,kCAAzC;AACA,SAAQC,cAAR,QAA6B,aAA7B;AACA,SAAQC,WAAR,QAA0B,UAA1B;AACA,SAAQC,IAAR,QAAmB,UAAnB;AACA,SAAQC,QAAR,QAAuB,gBAAvB;;AASA,MAAMC,WAAsD,GAAGC,KAAK,IAAI;AAEtE,sBACE;AAAO,IAAA,SAAS,EAAE;AAAlB,KAEE,CAAC,CAACA,KAAK,CAACC,KAAR,iBACA;AAAI,IAAA,SAAS,EAAE,oBAAf;AAAqC,mBAAY;AAAjD,kBACE;AAAI,IAAA,OAAO,EAAED,KAAK,CAACE,OAAN,CAAcC,MAAd,IAAwBH,KAAK,CAACI,WAAN,GAAoB,CAApB,GAAwB,CAAhD;AAAb,kBACE;AAAK,IAAA,SAAS,EAAE;AAAhB,kBACE,kCAAOJ,KAAK,CAACC,KAAb,CADF,EAGID,KAAK,CAACK,IAAN,iBACA,oBAAC,cAAD;AAAgB,IAAA,SAAS,EAAE,YAA3B;AAAyC,IAAA,IAAI,eAAE,oBAAC,WAAD,CAAa,YAAb,OAA/C;AACgB,IAAA,IAAI,EAAER,IAAI,CAACS;AAD3B,KACuCN,KAAK,CAACK,IAD7C,EAJJ,CADF,CADF,CAHF,eAgBA;AAAI,IAAA,SAAS,EAAE,sBAAf;AAAuC,mBAAY;AAAnD,KAEIL,KAAK,CAACI,WAAN,iBACA;AAAI,IAAA,SAAS,EAAE;AAAf,kBACE;AAAK,IAAA,SAAS,EAAE;AAAhB,kBACE,oBAAC,QAAD;AAAU,IAAA,QAAQ,EAAEJ,KAAK,CAACO,cAAN,KAAyB,KAA7C;AACU,IAAA,YAAY,EAAEP,KAAK,CAACO,cAAN,KAAyB,MADjD;AAEU,IAAA,MAAM,EAAEP,KAAK,CAACQ;AAFxB,IADF,CADF,CAHJ,EAWGR,KAAK,CAACE,OAAN,CAAcO,GAAd,CAAmBC,MAAD,iBACjB;AAAI,IAAA,GAAG,EAAEA,MAAM,CAACC,GAAhB;AACI,IAAA,WAAW,EAAGC,CAAD,IAAOA,CAAC,CAACC,cAAF,EADxB;AAEI,IAAA,OAAO,EAAGD,CAAD,IAAOZ,KAAK,CAACc,YAAN,CAAmBJ,MAAnB,CAFpB;AAGI,IAAA,UAAU,EAAGE,CAAD,IAAO;AACjB,UAAIA,CAAC,CAACD,GAAF,KAAU,OAAd,EAAuB;AACrBX,QAAAA,KAAK,CAACc,YAAN,CAAmBJ,MAAnB;AACD;AACF,KAPL;AAQI,IAAA,KAAK,EAAE;AAACK,MAAAA,KAAK,EAAEL,MAAM,CAACK;AAAf,KARX;AASI,IAAA,QAAQ,EAAEL,MAAM,CAACM,QAAP,GAAkB,CAAlB,GAAsB,CAAC,CATrC;AAUI,IAAA,SAAS,EAAG,uBAAsBN,MAAM,CAACM,QAAP,GAAkB,UAAlB,GAA+B,EAAG,IAAG,CAAC,CAACN,MAAM,CAACM,QAAT,IAAqB,CAAC,CAACN,MAAM,CAACO,gBAA9B,GAAiD,QAAjD,GAA4D,EAAG;AAV1I,kBAWE;AAAK,IAAA,SAAS,EAAE;AAAhB,kBACM,kCACGP,MAAM,CAACQ,IADV,CADN,EAKIR,MAAM,CAACM,QAAP,KAEEN,MAAM,CAACO,gBAAP,KAA4B,KAA5B,gBACI,oBAAC,WAAD;AAAa,IAAA,IAAI,EAAE;AAAnB,IADJ,gBAEI,oBAAC,aAAD;AAAe,IAAA,IAAI,EAAE;AAArB,IAJN,CALJ,CAXF,CADD,CAXH,CAhBA,CADF;AA2DD,CA7DD;;;AALEH,EAAAA,Y;AACAN,EAAAA,gB;AACAD,EAAAA,c,aAAgB,K,EAAQ,M,EAAS,M;;AAkEnC,eAAeR,WAAf","sourcesContent":["import React from 'react';\nimport {TableColumn, TableProps} from './TableTypes';\nimport {ArrowLineDown, ArrowLineUp} from '../icons/systemicons/SystemIcons';\nimport {DropdownButton} from '../Dropdown';\nimport {SystemIcons} from '../icons';\nimport {Size} from '../types';\nimport {Checkbox} from '../InputFields';\n\n\ninterface TableHeaderProps extends TableProps {\n sortByColumn: (column: TableColumn) => void;\n onSelectAllClick: () => void;\n selectAllState: 'all' | 'some' | 'none';\n}\n\nconst TableHeader: React.FunctionComponent<TableHeaderProps> = props => {\n\n return (\n <thead className={'table-header'}>\n {\n !!props.title &&\n <tr className={'table-header-title'} data-testid=\"TestTableHeaderRow\">\n <th colSpan={props.columns.length + (props.multiSelect ? 1 : 0)}>\n <div className={'title-content'}>\n <span>{props.title}</span>\n {\n props.menu &&\n <DropdownButton className={'title-menu'} icon={<SystemIcons.MoreVertical/>}\n size={Size.Medium} {...props.menu}/>\n }\n </div>\n </th>\n </tr>\n }\n <tr className={'table-header-columns'} data-testid=\"TestTableColumnHeaderRow\">\n {\n props.multiSelect &&\n <th className={'table-header-column'}>\n <div className={'header-content'}>\n <Checkbox selected={props.selectAllState === 'all'}\n semiSelected={props.selectAllState === 'some'}\n select={props.onSelectAllClick}/>\n </div>\n </th>\n }\n {props.columns.map((column: TableColumn) => (\n <th key={column.key}\n onMouseDown={(e) => e.preventDefault()}\n onClick={(e) => props.sortByColumn(column)}\n onKeyPress={(e) => {\n if (e.key === 'Enter') {\n props.sortByColumn(column)\n }\n }}\n style={{width: column.width}}\n tabIndex={column.sortable ? 0 : -1}\n className={`table-header-column ${column.sortable ? 'sortable' : ''} ${!!column.sortable && !!column.sortingDirection ? 'sorted' : ''}`}>\n <div className={'header-content'}>\n <span>\n {column.name}\n </span>\n {\n column.sortable &&\n (\n column.sortingDirection === 'asc'\n ? <ArrowLineUp size={'24px'}/>\n : <ArrowLineDown size={'24px'}/>\n )\n }\n </div>\n </th>\n ))}\n </tr>\n\n </thead>\n )\n}\n\nexport default TableHeader;\n"],"file":"TableHeaders.js"}
|