@laerdal/life-react-components 1.3.1-dev.3.full → 1.3.2-dev.11

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 (139) hide show
  1. package/dist/esm/Accordion/ContentAccordion.js +238 -0
  2. package/dist/esm/Accordion/ContentAccordion.js.map +1 -0
  3. package/dist/esm/Accordion/__tests__/ContetnAccordion.test.js +137 -0
  4. package/dist/esm/Accordion/__tests__/ContetnAccordion.test.js.map +1 -0
  5. package/dist/esm/Accordion/index.js +1 -0
  6. package/dist/esm/Accordion/index.js.map +1 -1
  7. package/dist/esm/AuthPage/AuthPage.js +1 -1
  8. package/dist/esm/AuthPage/AuthPage.js.map +1 -1
  9. package/dist/esm/AuthPage/Information.js +1 -1
  10. package/dist/esm/AuthPage/Information.js.map +1 -1
  11. package/dist/esm/Banners/Banner.js +16 -16
  12. package/dist/esm/Banners/Banner.js.map +1 -1
  13. package/dist/esm/Button/Iconbutton.js +0 -1
  14. package/dist/esm/Button/Iconbutton.js.map +1 -1
  15. package/dist/esm/Dropdown/ChipDropdownInput.js +2 -2
  16. package/dist/esm/Dropdown/ChipDropdownInput.js.map +1 -1
  17. package/dist/esm/Dropdown/CommonStyling.js +4 -0
  18. package/dist/esm/Dropdown/CommonStyling.js.map +1 -1
  19. package/dist/esm/Dropdown/DropdownButton.js +5 -2
  20. package/dist/esm/Dropdown/DropdownButton.js.map +1 -1
  21. package/dist/esm/Dropdown/DropdownFilter.js.map +1 -1
  22. package/dist/esm/HyperLink/HyperLink.js +2 -1
  23. package/dist/esm/HyperLink/HyperLink.js.map +1 -1
  24. package/dist/esm/InputFields/Checkbox.js +23 -13
  25. package/dist/esm/InputFields/Checkbox.js.map +1 -1
  26. package/dist/esm/Table/Table.js +113 -181
  27. package/dist/esm/Table/Table.js.map +1 -1
  28. package/dist/esm/Table/TableBody.js +135 -0
  29. package/dist/esm/Table/TableBody.js.map +1 -0
  30. package/dist/esm/Table/TableFooter.js +60 -0
  31. package/dist/esm/Table/TableFooter.js.map +1 -0
  32. package/dist/esm/Table/TableHeaders.js +55 -0
  33. package/dist/esm/Table/TableHeaders.js.map +1 -0
  34. package/dist/esm/Table/TableStyles.js +130 -117
  35. package/dist/esm/Table/TableStyles.js.map +1 -1
  36. package/dist/esm/Table/__tests__/Table.test.js +0 -21
  37. package/dist/esm/Table/__tests__/Table.test.js.map +1 -1
  38. package/dist/esm/Tabs/TabLink.js +1 -0
  39. package/dist/esm/Tabs/TabLink.js.map +1 -1
  40. package/dist/esm/styles/typography.js +66 -66
  41. package/dist/esm/styles/typography.js.map +1 -1
  42. package/dist/js/Accordion/ContentAccordion.d.ts +18 -0
  43. package/dist/js/Accordion/ContentAccordion.js +151 -0
  44. package/dist/js/Accordion/ContentAccordion.js.map +1 -0
  45. package/dist/js/Accordion/__tests__/ContetnAccordion.test.js +151 -0
  46. package/dist/js/Accordion/__tests__/ContetnAccordion.test.js.map +1 -0
  47. package/dist/js/Accordion/index.d.ts +1 -0
  48. package/dist/js/Accordion/index.js +8 -0
  49. package/dist/js/Accordion/index.js.map +1 -1
  50. package/dist/js/AuthPage/AuthPage.js +1 -1
  51. package/dist/js/AuthPage/AuthPage.js.map +1 -1
  52. package/dist/js/AuthPage/Information.d.ts +1 -1
  53. package/dist/js/AuthPage/Information.js +1 -1
  54. package/dist/js/AuthPage/Information.js.map +1 -1
  55. package/dist/js/Banners/Banner.js +16 -19
  56. package/dist/js/Banners/Banner.js.map +1 -1
  57. package/dist/js/Button/Iconbutton.d.ts +2 -2
  58. package/dist/js/Button/Iconbutton.js +0 -1
  59. package/dist/js/Button/Iconbutton.js.map +1 -1
  60. package/dist/js/Dropdown/ChipDropdownInput.js +3 -1
  61. package/dist/js/Dropdown/ChipDropdownInput.js.map +1 -1
  62. package/dist/js/Dropdown/CommonStyling.js +1 -1
  63. package/dist/js/Dropdown/CommonStyling.js.map +1 -1
  64. package/dist/js/Dropdown/DropdownButton.d.ts +1 -1
  65. package/dist/js/Dropdown/DropdownButton.js +5 -2
  66. package/dist/js/Dropdown/DropdownButton.js.map +1 -1
  67. package/dist/js/Dropdown/DropdownButtonTypes.d.ts +1 -0
  68. package/dist/js/Dropdown/DropdownFilter.d.ts +1 -1
  69. package/dist/js/Dropdown/DropdownFilter.js.map +1 -1
  70. package/dist/js/HyperLink/HyperLink.d.ts +1 -1
  71. package/dist/js/HyperLink/HyperLink.js +2 -2
  72. package/dist/js/HyperLink/HyperLink.js.map +1 -1
  73. package/dist/js/InputFields/Checkbox.d.ts +3 -2
  74. package/dist/js/InputFields/Checkbox.js +13 -11
  75. package/dist/js/InputFields/Checkbox.js.map +1 -1
  76. package/dist/js/Table/Table.js +143 -209
  77. package/dist/js/Table/Table.js.map +1 -1
  78. package/dist/js/Table/TableBody.d.ts +9 -0
  79. package/dist/js/Table/TableBody.js +167 -0
  80. package/dist/js/Table/TableBody.js.map +1 -0
  81. package/dist/js/Table/TableFooter.d.ts +13 -0
  82. package/dist/js/Table/TableFooter.js +82 -0
  83. package/dist/js/Table/TableFooter.js.map +1 -0
  84. package/dist/js/Table/TableHeaders.d.ts +9 -0
  85. package/dist/js/Table/TableHeaders.js +77 -0
  86. package/dist/js/Table/TableHeaders.js.map +1 -0
  87. package/dist/js/Table/TableStyles.d.ts +17 -7
  88. package/dist/js/Table/TableStyles.js +58 -16
  89. package/dist/js/Table/TableStyles.js.map +1 -1
  90. package/dist/js/Table/TableTypes.d.ts +23 -16
  91. package/dist/js/Table/__tests__/Table.test.js +8 -30
  92. package/dist/js/Table/__tests__/Table.test.js.map +1 -1
  93. package/dist/js/Tabs/TabLink.js +1 -1
  94. package/dist/js/Tabs/TabLink.js.map +1 -1
  95. package/dist/js/styles/typography.d.ts +6 -6
  96. package/dist/js/styles/typography.js +66 -66
  97. package/dist/js/styles/typography.js.map +1 -1
  98. package/dist/umd/Accordion/ContentAccordion.js +266 -0
  99. package/dist/umd/Accordion/ContentAccordion.js.map +1 -0
  100. package/dist/umd/Accordion/__tests__/ContetnAccordion.test.js +165 -0
  101. package/dist/umd/Accordion/__tests__/ContetnAccordion.test.js.map +1 -0
  102. package/dist/umd/Accordion/index.js +10 -4
  103. package/dist/umd/Accordion/index.js.map +1 -1
  104. package/dist/umd/AuthPage/AuthPage.js +1 -1
  105. package/dist/umd/AuthPage/AuthPage.js.map +1 -1
  106. package/dist/umd/AuthPage/Information.js +1 -1
  107. package/dist/umd/AuthPage/Information.js.map +1 -1
  108. package/dist/umd/Banners/Banner.js +16 -16
  109. package/dist/umd/Banners/Banner.js.map +1 -1
  110. package/dist/umd/Button/Iconbutton.js +0 -1
  111. package/dist/umd/Button/Iconbutton.js.map +1 -1
  112. package/dist/umd/Dropdown/ChipDropdownInput.js +2 -2
  113. package/dist/umd/Dropdown/ChipDropdownInput.js.map +1 -1
  114. package/dist/umd/Dropdown/CommonStyling.js +4 -0
  115. package/dist/umd/Dropdown/CommonStyling.js.map +1 -1
  116. package/dist/umd/Dropdown/DropdownButton.js +5 -2
  117. package/dist/umd/Dropdown/DropdownButton.js.map +1 -1
  118. package/dist/umd/Dropdown/DropdownFilter.js.map +1 -1
  119. package/dist/umd/HyperLink/HyperLink.js +2 -1
  120. package/dist/umd/HyperLink/HyperLink.js.map +1 -1
  121. package/dist/umd/InputFields/Checkbox.js +23 -13
  122. package/dist/umd/InputFields/Checkbox.js.map +1 -1
  123. package/dist/umd/Table/Table.js +139 -188
  124. package/dist/umd/Table/Table.js.map +1 -1
  125. package/dist/umd/Table/TableBody.js +270 -0
  126. package/dist/umd/Table/TableBody.js.map +1 -0
  127. package/dist/umd/Table/TableFooter.js +82 -0
  128. package/dist/umd/Table/TableFooter.js.map +1 -0
  129. package/dist/umd/Table/TableHeaders.js +91 -0
  130. package/dist/umd/Table/TableHeaders.js.map +1 -0
  131. package/dist/umd/Table/TableStyles.js +134 -122
  132. package/dist/umd/Table/TableStyles.js.map +1 -1
  133. package/dist/umd/Table/__tests__/Table.test.js +0 -21
  134. package/dist/umd/Table/__tests__/Table.test.js.map +1 -1
  135. package/dist/umd/Tabs/TabLink.js +1 -0
  136. package/dist/umd/Tabs/TabLink.js.map +1 -1
  137. package/dist/umd/styles/typography.js +66 -66
  138. package/dist/umd/styles/typography.js.map +1 -1
  139. package/package.json +1 -1
@@ -0,0 +1,135 @@
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
+ import { StyledTableBody, StyledTableBodyRow, StyledTableCell, StyledTableCellContent, StyledTableCellIcon } from './TableStyles';
18
+
19
+ const TableBody = props => {
20
+ const renderCellBody = (column, row) => {
21
+ switch (column.type) {
22
+ case 'link':
23
+ {
24
+ const props = _objectSpread({
25
+ variant: 'default',
26
+ href: ''
27
+ }, column.additionalProps);
28
+
29
+ return /*#__PURE__*/React.createElement(HyperLink, _extends({
30
+ style: column.colorFn && {
31
+ color: column.colorFn(row, column.key)
32
+ }
33
+ }, props, {
34
+ onClick: e => {
35
+ e.preventDefault();
36
+ e.stopPropagation();
37
+ column.action && column.action(row, e);
38
+ }
39
+ }), row[column.key]);
40
+ }
41
+
42
+ case 'icon':
43
+ {
44
+ const props = _objectSpread({
45
+ iconColor: column.colorFn && column.colorFn(row, column.key),
46
+ variant: 'secondary',
47
+ shape: 'circular',
48
+ useTransparentBackground: true
49
+ }, column.additionalProps);
50
+
51
+ return /*#__PURE__*/React.createElement(IconButton, _extends({}, props, {
52
+ action: e => {
53
+ e?.stopPropagation();
54
+ column.action && column.action(row, e);
55
+ }
56
+ }), column.icon);
57
+ }
58
+
59
+ case 'button':
60
+ {
61
+ const props = _objectSpread({
62
+ variant: 'tertiary',
63
+ size: Size.Small
64
+ }, column.additionalProps);
65
+
66
+ return /*#__PURE__*/React.createElement(Button, _extends({
67
+ style: column.colorFn && {
68
+ color: column.colorFn(row, column.key)
69
+ }
70
+ }, props, {
71
+ onClick: e => {
72
+ e?.stopPropagation();
73
+ column.action && column.action(row, e);
74
+ }
75
+ }), row[column.key]);
76
+ }
77
+
78
+ case 'boolean':
79
+ return /*#__PURE__*/React.createElement(Checkbox, {
80
+ selected: !!row[column.key],
81
+ readonly: true
82
+ });
83
+
84
+ case 'custom':
85
+ return column.customContent && column.customContent(row, column.key);
86
+
87
+ case 'number':
88
+ case 'text':
89
+ default:
90
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(StyledTableCellIcon, null, column.icon), /*#__PURE__*/React.createElement("span", null, row[column.key]));
91
+ }
92
+ };
93
+
94
+ return /*#__PURE__*/React.createElement(StyledTableBody, null, props.currentPageRows.length > 0 ? props.currentPageRows.map((row, index) => /*#__PURE__*/React.createElement(StyledTableBodyRow, {
95
+ key: `row_${index}`,
96
+ className: props.selectable ? 'selectable' : '',
97
+ onClick: () => props.onRowClick && props.onRowClick(row),
98
+ onMouseDown: event => event.preventDefault(),
99
+ onKeyPress: e => {
100
+ if (e.key === 'Enter') {
101
+ props.onRowClick && props.onRowClick(row);
102
+ }
103
+ },
104
+ tabIndex: props.selectable ? 0 : undefined,
105
+ "data-testid": "TestTableDataRow"
106
+ }, props.multiSelect && /*#__PURE__*/React.createElement(StyledTableCell, null, /*#__PURE__*/React.createElement(StyledTableCellContent, null, /*#__PURE__*/React.createElement(Checkbox, {
107
+ selected: props.selected?.indexOf(props.keyExpr ? row[props.keyExpr] : row) > -1,
108
+ readonly: true
109
+ }))), props.columns.map(column => /*#__PURE__*/React.createElement(StyledTableCell, {
110
+ key: `row_${index}_${column.key}`,
111
+ style: column.colorFn ? {
112
+ color: column.colorFn(row, column.key),
113
+ maxWidth: column.width
114
+ } : {
115
+ maxWidth: column.width
116
+ },
117
+ title: column.shortenText && row[column.key]
118
+ }, /*#__PURE__*/React.createElement(StyledTableCellContent, {
119
+ className: `${column.shortenText && `truncate-text`} ${column.justify || ''}`
120
+ }, renderCellBody(column, row)))))) : /*#__PURE__*/React.createElement(StyledTableBodyRow, {
121
+ "data-testid": "TestTableNoDataRow"
122
+ }, /*#__PURE__*/React.createElement(StyledTableCell, {
123
+ colSpan: props.columns.length + (props.multiSelect ? 1 : 0)
124
+ }, /*#__PURE__*/React.createElement(StyledTableCellContent, {
125
+ className: 'center'
126
+ }, "There are no rows to display"))));
127
+ };
128
+
129
+ TableBody.propTypes = {
130
+ currentPageRows: _pt.arrayOf(_pt.any).isRequired,
131
+ onRowClick: _pt.func,
132
+ selected: _pt.any
133
+ };
134
+ export default TableBody;
135
+ //# sourceMappingURL=TableBody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/Table/TableBody.tsx"],"names":["Button","Size","React","Checkbox","IconButton","HyperLink","StyledTableBody","StyledTableBodyRow","StyledTableCell","StyledTableCellContent","StyledTableCellIcon","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","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';\nimport {\n StyledTableBody,\n StyledTableBodyRow,\n StyledTableCell,\n StyledTableCellContent,\n StyledTableCellIcon\n} from './TableStyles';\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 <StyledTableCellIcon>{column.icon}</StyledTableCellIcon>\n <span>{row[column.key]}</span>\n </>\n );\n }\n }\n\n return (\n <StyledTableBody>\n {props.currentPageRows.length > 0 ? (\n props.currentPageRows.map((row: any, index: number) => (\n <StyledTableBodyRow key={`row_${index}`}\n className={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 <StyledTableCell>\n <StyledTableCellContent>\n <Checkbox selected={props.selected?.indexOf(props.keyExpr ? row[props.keyExpr] : row) > -1}\n readonly={true}/>\n </StyledTableCellContent>\n </StyledTableCell>\n }\n {props.columns.map((column: TableColumn) => (\n <StyledTableCell key={`row_${index}_${column.key}`}\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 <StyledTableCellContent className={`${column.shortenText && `truncate-text`} ${column.justify || ''}`}>\n {renderCellBody(column, row)}\n </StyledTableCellContent>\n </StyledTableCell>\n ))}\n </StyledTableBodyRow>\n ))\n ) : (\n <StyledTableBodyRow data-testid=\"TestTableNoDataRow\">\n <StyledTableCell colSpan={props.columns.length + (props.multiSelect ? 1 : 0)}>\n <StyledTableCellContent className={'center'}>\n There are no rows to display\n </StyledTableCellContent>\n </StyledTableCell>\n </StyledTableBodyRow>\n )}\n\n </StyledTableBody>\n );\n }\n;\n\nexport default TableBody;\n"],"file":"TableBody.js"}
@@ -0,0 +1,60 @@
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
+ import { StyledTableFooter, StyledTableFooterContent, StyledTableFooterControls, StyledTableFooterCurrentInfo } from './TableStyles';
8
+
9
+ const TableFooter = props => {
10
+ const rowsPerPageValues = [{
11
+ label: '10'
12
+ }, {
13
+ label: '20'
14
+ }, {
15
+ label: '50'
16
+ }, {
17
+ label: '100'
18
+ }];
19
+ const dropDownText = `Rows per page: ${props.rowsPerPage}`;
20
+ return /*#__PURE__*/React.createElement(StyledTableFooter, null, /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("td", {
21
+ colSpan: props.columns.length + (props.multiSelect ? 1 : 0),
22
+ "data-testid": "TestTableFooterRow"
23
+ }, /*#__PURE__*/React.createElement(StyledTableFooterContent, null, /*#__PURE__*/React.createElement(DropdownFilter, {
24
+ id: "rows-per-page",
25
+ list: rowsPerPageValues,
26
+ disableSorting: true,
27
+ onSelect: value => props.onRowsPerPageChange(+value),
28
+ initalValue: dropDownText,
29
+ keepInitialValue: true,
30
+ isButton: true
31
+ }), /*#__PURE__*/React.createElement(StyledTableFooterCurrentInfo, null, props.total === 0 ? 0 : props.from, "-", props.to, " of ", props.total), /*#__PURE__*/React.createElement(StyledTableFooterControls, null, /*#__PURE__*/React.createElement(IconButton, {
32
+ variant: "secondary",
33
+ shape: "circular",
34
+ action: () => props.prevPage(),
35
+ disabled: props.from === 1
36
+ }, /*#__PURE__*/React.createElement(ChevronLeft, {
37
+ size: "24",
38
+ color: COLORS.neutral_600
39
+ })), /*#__PURE__*/React.createElement(IconButton, {
40
+ variant: "secondary",
41
+ shape: "circular",
42
+ action: () => props.nextPage(),
43
+ disabled: props.to === props.total
44
+ }, /*#__PURE__*/React.createElement(ChevronRight, {
45
+ size: "24",
46
+ color: COLORS.neutral_600
47
+ })))))));
48
+ };
49
+
50
+ TableFooter.propTypes = {
51
+ onRowsPerPageChange: _pt.func.isRequired,
52
+ rowsPerPage: _pt.number.isRequired,
53
+ from: _pt.number,
54
+ to: _pt.number,
55
+ total: _pt.number,
56
+ nextPage: _pt.func.isRequired,
57
+ prevPage: _pt.func.isRequired
58
+ };
59
+ export default TableFooter;
60
+ //# sourceMappingURL=TableFooter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/Table/TableFooter.tsx"],"names":["React","DropdownFilter","IconButton","ChevronLeft","ChevronRight","COLORS","StyledTableFooter","StyledTableFooterContent","StyledTableFooterControls","StyledTableFooterCurrentInfo","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;AAEA,SACEC,iBADF,EAEEC,wBAFF,EAGEC,yBAHF,EAIEC,4BAJF,QAKO,eALP;;AAkBA,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,oBAAC,iBAAD,qBACE,6CACE;AAAI,IAAA,OAAO,EAAEJ,KAAK,CAACK,OAAN,CAAcC,MAAd,IAAwBN,KAAK,CAACO,WAAN,GAAoB,CAApB,GAAwB,CAAhD,CAAb;AAAiE,mBAAY;AAA7E,kBACE,oBAAC,wBAAD,qBACE,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,oBAAC,4BAAD,QACGH,KAAK,CAACU,KAAN,KAAgB,CAAhB,GAAoB,CAApB,GAAwBV,KAAK,CAACW,IADjC,OACwCX,KAAK,CAACY,EAD9C,UACsDZ,KAAK,CAACU,KAD5D,CAVF,eAaE,oBAAC,yBAAD,qBACE,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,EAAEjB,MAAM,CAACoB;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,EAAEhB,MAAM,CAACoB;AAAtC,IAFF,CALF,CAbF,CADF,CADF,CADF,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';\nimport {\n StyledTableFooter,\n StyledTableFooterContent,\n StyledTableFooterControls,\n StyledTableFooterCurrentInfo\n} from './TableStyles';\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 <StyledTableFooter>\n <tr>\n <td colSpan={props.columns.length + (props.multiSelect ? 1 : 0)} data-testid=\"TestTableFooterRow\">\n <StyledTableFooterContent>\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 <StyledTableFooterCurrentInfo>\n {props.total === 0 ? 0 : props.from}-{props.to} of {props.total}\n </StyledTableFooterCurrentInfo>\n <StyledTableFooterControls>\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 </StyledTableFooterControls>\n </StyledTableFooterContent>\n </td>\n </tr>\n </StyledTableFooter>\n );\n};\n\n\nexport default TableFooter;\n"],"file":"TableFooter.js"}
@@ -0,0 +1,55 @@
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
+ import { StyledTableHeader, StyledTableHeaderColumn, StyledTableHeaderColumnContent, StyledTableHeaderColumns, StyledTableHeaderTitle, StyledTableHeaderTitleContent } from './TableStyles';
12
+
13
+ const TableHeader = props => {
14
+ return /*#__PURE__*/React.createElement(StyledTableHeader, null, !!props.title && /*#__PURE__*/React.createElement(StyledTableHeaderTitle, {
15
+ "data-testid": "TestTableHeaderRow"
16
+ }, /*#__PURE__*/React.createElement("th", {
17
+ colSpan: props.columns.length + (props.multiSelect ? 1 : 0)
18
+ }, /*#__PURE__*/React.createElement(StyledTableHeaderTitleContent, null, /*#__PURE__*/React.createElement("span", null, props.title), props.menu && /*#__PURE__*/React.createElement(DropdownButton, _extends({
19
+ className: 'title-menu',
20
+ icon: /*#__PURE__*/React.createElement(SystemIcons.MoreVertical, null),
21
+ size: Size.Medium
22
+ }, props.menu))))), /*#__PURE__*/React.createElement(StyledTableHeaderColumns, {
23
+ "data-testid": "TestTableColumnHeaderRow"
24
+ }, props.multiSelect && /*#__PURE__*/React.createElement(StyledTableHeaderColumn, null, /*#__PURE__*/React.createElement(StyledTableHeaderColumnContent, null, /*#__PURE__*/React.createElement(Checkbox, {
25
+ selected: props.selectAllState === 'all',
26
+ semiSelected: props.selectAllState === 'some',
27
+ select: props.onSelectAllClick
28
+ }))), props.columns.map(column => /*#__PURE__*/React.createElement(StyledTableHeaderColumn, {
29
+ key: column.key,
30
+ onMouseDown: e => e.preventDefault(),
31
+ onClick: e => props.sortByColumn(column),
32
+ onKeyPress: e => {
33
+ if (e.key === 'Enter') {
34
+ props.sortByColumn(column);
35
+ }
36
+ },
37
+ style: {
38
+ width: column.width
39
+ },
40
+ tabIndex: column.sortable ? 0 : -1,
41
+ className: `${!!column.sortable ? 'sortable' : ''} ${!!column.sortable && !!column.sortingDirection ? 'sorted' : ''}`
42
+ }, /*#__PURE__*/React.createElement(StyledTableHeaderColumnContent, null, /*#__PURE__*/React.createElement("span", null, column.name), column.sortable && (column.sortingDirection === 'asc' ? /*#__PURE__*/React.createElement(ArrowLineUp, {
43
+ size: '24px'
44
+ }) : /*#__PURE__*/React.createElement(ArrowLineDown, {
45
+ size: '24px'
46
+ })))))));
47
+ };
48
+
49
+ TableHeader.propTypes = {
50
+ sortByColumn: _pt.func.isRequired,
51
+ onSelectAllClick: _pt.func.isRequired,
52
+ selectAllState: _pt.oneOf(['all', 'some', 'none']).isRequired
53
+ };
54
+ export default TableHeader;
55
+ //# sourceMappingURL=TableHeaders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/Table/TableHeaders.tsx"],"names":["React","ArrowLineDown","ArrowLineUp","DropdownButton","SystemIcons","Size","Checkbox","StyledTableHeader","StyledTableHeaderColumn","StyledTableHeaderColumnContent","StyledTableHeaderColumns","StyledTableHeaderTitle","StyledTableHeaderTitleContent","TableHeader","props","title","columns","length","multiSelect","menu","Medium","selectAllState","onSelectAllClick","map","column","key","e","preventDefault","sortByColumn","width","sortable","sortingDirection","name"],"mappings":"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","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';\nimport {\n StyledTableHeader, StyledTableHeaderColumn, StyledTableHeaderColumnContent,\n StyledTableHeaderColumns,\n StyledTableHeaderTitle,\n StyledTableHeaderTitleContent\n} from './TableStyles';\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 <StyledTableHeader>\n {\n !!props.title &&\n <StyledTableHeaderTitle data-testid=\"TestTableHeaderRow\">\n <th colSpan={props.columns.length + (props.multiSelect ? 1 : 0)}>\n <StyledTableHeaderTitleContent>\n <span>{props.title}</span>\n {\n props.menu &&\n <DropdownButton className={'title-menu'}\n icon={<SystemIcons.MoreVertical/>}\n size={Size.Medium} {...props.menu}/>\n }\n </StyledTableHeaderTitleContent>\n </th>\n </StyledTableHeaderTitle>\n }\n <StyledTableHeaderColumns data-testid=\"TestTableColumnHeaderRow\">\n {\n props.multiSelect &&\n <StyledTableHeaderColumn>\n <StyledTableHeaderColumnContent>\n <Checkbox selected={props.selectAllState === 'all'}\n semiSelected={props.selectAllState === 'some'}\n select={props.onSelectAllClick}/>\n </StyledTableHeaderColumnContent>\n </StyledTableHeaderColumn>\n }\n {props.columns.map((column: TableColumn) => (\n <StyledTableHeaderColumn 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={`${!!column.sortable ? 'sortable' : ''} ${!!column.sortable && !!column.sortingDirection ? 'sorted' : ''}`}>\n <StyledTableHeaderColumnContent>\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 </StyledTableHeaderColumnContent>\n </StyledTableHeaderColumn>\n ))}\n </StyledTableHeaderColumns>\n\n </StyledTableHeader>\n )\n}\n\nexport default TableHeader;\n"],"file":"TableHeaders.js"}
@@ -8,6 +8,7 @@ import styled from 'styled-components';
8
8
 
9
9
  import { COLORS } from '../styles';
10
10
  import { ComponentLStyling, ComponentSStyling, ComponentTextStyle, ComponentXSStyling } from '../styles/typography';
11
+ import { Z_INDEXES } from '../styles/z-indexes';
11
12
  /**
12
13
  * Table styles
13
14
  */
@@ -15,169 +16,181 @@ import { ComponentLStyling, ComponentSStyling, ComponentTextStyle, ComponentXSSt
15
16
  export const TableWrapper = styled.div`
16
17
  position: relative;
17
18
  `;
18
- export const TableLoadingIndicator = styled.div`
19
- height: 100%;
20
- width: 100%;
21
- position: absolute;
22
- background-color: rgba(0, 0, 0, 0.5);
23
- top: 0;
24
- `;
25
- export const TableContainer = styled.table`
19
+ export const StyledTable = styled.table`
26
20
  background: transparent;
27
21
  width: 100%;
28
- border-top: 2px solid ${COLORS.neutral_200};
29
- border-bottom: 2px solid ${COLORS.neutral_200};
30
22
  `;
31
- export const TableHeaderRowCol = styled.th`
32
- background-color: ${COLORS.neutral_20};
23
+ export const StyledTableHeader = styled.thead`
24
+ `;
25
+ export const StyledTableHeaderTitle = styled.tr`
26
+ `;
27
+ export const StyledTableHeaderTitleContent = styled.div`
28
+ display: flex;
29
+ align-items: center;
30
+ justify-content: space-between;
31
+ width: 100%;
32
+ box-sizing: border-box;
33
+ min-height: 56px;
33
34
  border-bottom: 1px solid ${COLORS.neutral_200};
35
+ border-top: 2px solid ${COLORS.neutral_200};
36
+ padding: 0 16px;
34
37
 
35
- ${ComponentLStyling(ComponentTextStyle.Bold, COLORS.neutral_600)}
36
- padding: 16px 19px 16px 16px;
37
-
38
- div {
39
- display: flex;
40
- justify-content: space-between;
41
- align-items: center;
42
-
43
- svg {
44
- cursor: pointer;
45
- }
38
+ ${ComponentLStyling(ComponentTextStyle.Bold, COLORS.black)}
39
+ .title-menu {
40
+ margin-right: -16px;
46
41
  }
47
42
  `;
48
- export const TableColumnHeaderCol = styled.th`
49
- background-color: ${COLORS.white};
50
- border-top: 1px solid ${COLORS.neutral_300};
51
-
43
+ export const StyledTableHeaderColumns = styled.tr`
44
+ `;
45
+ export const StyledTableHeaderColumnContent = styled.div`
46
+ box-sizing: border-box;
47
+ min-height: 56px;
48
+ padding: 0 16px;
49
+ height: 100%;
50
+ display: flex;
51
+ align-items: center;
52
+ justify-content: space-between;
53
+ border-top: 1px solid ${COLORS.neutral_200};
54
+ border-bottom: 1px solid ${COLORS.neutral_200};
55
+ `;
56
+ export const StyledTableHeaderColumn = styled.th`
52
57
  ${ComponentSStyling(ComponentTextStyle.Bold, COLORS.neutral_600)}
53
- padding: 18px 16px;
54
- text-align: left;
55
-
56
- &.justify-center {
57
- text-align: center;
58
- }
59
-
60
- &.justify-left {
61
- text-align: left;
62
- }
58
+ position: relative;
63
59
 
64
- &.justify-right {
65
- text-align: right;
66
- }
60
+ background-color: ${COLORS.white};
67
61
 
68
- &.no-border {
69
- border: none;
70
- }
62
+ //fixes header heights no idea why
63
+ height: 1px;
71
64
 
72
65
  &.sortable {
73
66
  cursor: pointer;
74
67
 
75
- > svg {
76
- float: right;
68
+ &:hover {
69
+ background-color: ${COLORS.primary_20};
70
+ color: ${COLORS.primary_700};
71
+ z-index: ${Z_INDEXES.hover};
77
72
  }
78
73
 
79
- &:hover {
80
- background: ${COLORS.primary_20};
74
+ &:active {
75
+ background-color: ${COLORS.primary_100};
76
+ color: ${COLORS.primary_800};
77
+ box-shadow: none !important;
78
+ z-index: ${Z_INDEXES.active};
81
79
  }
82
80
 
83
81
  &:focus {
84
- background: ${COLORS.primary_100};
82
+ outline: none;
83
+ box-shadow: 0 4px 12px ${COLORS.focus_25}, 0 0 8px ${COLORS.focus};
84
+ z-index: ${Z_INDEXES.focus};
85
85
  }
86
86
  }
87
- `;
88
- export const TableDataRow = styled.tr`
89
- background-color: ${COLORS.neutral_100};
90
87
 
91
- &:nth-child(2n) {
92
- background-color: ${COLORS.neutral_20};
88
+ &.sortable ${StyledTableHeaderColumnContent} > svg {
89
+ opacity: 0;
90
+ }
91
+
92
+ &.sortable.sorted ${StyledTableHeaderColumnContent} > svg {
93
+ opacity: 1;
93
94
  }
94
95
 
96
+ `;
97
+ export const StyledTableBodyRow = styled.tr`
98
+ cursor: pointer;
99
+ position: relative;
100
+ outline: none;
101
+
95
102
  &:hover {
96
- cursor: pointer;
97
103
  background-color: ${COLORS.primary_200};
104
+ z-index: ${Z_INDEXES.hover};
105
+ }
106
+
107
+ &:focus {
108
+ background-color: ${COLORS.primary_200};
109
+ box-shadow: 0px 4px 12px rgba(46, 127, 161, 0.25), 0px 0px 8px #2E7FA1;
110
+ z-index: ${Z_INDEXES.focus};
111
+ outline: none;
112
+ }
113
+
114
+ &:active {
115
+ box-shadow: none;
116
+ z-index: ${Z_INDEXES.active};
98
117
  }
99
118
 
100
- &.no-rows:hover {
101
- cursor: default;
119
+ `;
120
+ export const StyledTableBody = styled.tbody`
121
+ ${StyledTableBodyRow}:nth-child(odd):not(:hover):not(:focus):not(:active) {
102
122
  background-color: ${COLORS.neutral_100};
103
123
  }
124
+
125
+ ${StyledTableBodyRow}:nth-child(even):not(:hover):not(:focus):not(:active) {
126
+ background-color: ${COLORS.white};
127
+ }
104
128
  `;
105
- export const TableDataCol = styled.td`
106
- background: transparent;
129
+ export const StyledTableCell = styled.td``;
130
+ export const StyledTableCellContent = styled.div`
131
+ min-height: 48px;
132
+
133
+ padding: 0 16px;
134
+ ${ComponentSStyling(ComponentTextStyle.Regular, null)}
107
135
 
108
- ${ComponentSStyling(ComponentTextStyle.Regular, COLORS.black)}
109
- padding: 15px 16px;
110
- border: none;
136
+ display: flex;
137
+ align-items: center;
138
+ gap: 8px;
111
139
 
112
- &.truncate-text {
140
+ &.truncate-text,
141
+ &.truncate-text span {
113
142
  overflow: hidden;
114
143
  text-overflow: ellipsis;
115
144
  white-space: nowrap;
116
145
  }
117
146
 
118
- &.justify-center {
119
- text-align: center;
120
- }
121
-
122
- &.justify-left {
123
- text-align: left;
147
+ &.left {
148
+ justify-content: left;
124
149
  }
125
150
 
126
- &.justify-right {
127
- text-align: right;
128
- }
129
-
130
- button {
131
- color: ${COLORS.primary_600};
132
- text-decoration: none;
133
-
134
- &:hover {
135
- color: ${COLORS.primary_700};
136
- text-decoration: underline;
137
- }
138
-
139
- &:focus {
140
- text-decoration: underline;
141
- outline: none;
142
- box-shadow: 0px 4px 12px ${COLORS.focus_25}, 0px 0px 8px ${COLORS.focus} !important;
143
- color: ${COLORS.primary_700};
144
- }
151
+ &.right {
152
+ justify-content: right;
145
153
  }
146
154
 
147
155
  &.center {
148
- text-align: center;
156
+ justify-content: center;
149
157
  }
150
158
  `;
151
- export const TableFooterCol = styled.td`
152
- border-top: 1px solid ${COLORS.neutral_200};
153
- padding: 3.5px 20px 3.5px 16px;
154
-
155
- > div {
156
- display: flex;
157
- align-items: center;
158
- justify-content: flex-end;
159
-
160
- > div > div:first-of-type {
161
- ${ComponentXSStyling(ComponentTextStyle.Regular, COLORS.black)}
162
- display: block;
163
- padding-top: 11px;
164
- padding-left: 2px;
165
- padding-right: 30px;
166
- }
167
-
168
- span {
169
- ${ComponentSStyling(ComponentTextStyle.Regular, COLORS.black)}
170
-
171
- &.current-page-info {
172
- margin-right: 34px;
173
- margin-left: 39px;
174
- }
175
- }
159
+ export const StyledTableCellIcon = styled.div`
160
+ color: ${COLORS.neutral_700};
161
+ width: 24px;
162
+ height: 24px;
176
163
 
177
- .controls {
178
- display: flex;
179
- justify-content: space-between;
180
- }
164
+ svg {
165
+ color: ${COLORS.neutral_700};
166
+ width: 24px;
167
+ height: 24px;
181
168
  }
182
169
  `;
170
+ export const StyledTableFooter = styled.tfoot`
171
+ `;
172
+ export const StyledTableFooterContent = styled.div`
173
+ border-top: 2px solid ${COLORS.neutral_200};
174
+ border-bottom: 1px solid ${COLORS.neutral_200};
175
+ box-sizing: border-box;
176
+ min-height: 56px;
177
+
178
+ display: flex;
179
+ align-items: center;
180
+ justify-content: right;
181
+ `;
182
+ export const StyledTableFooterCurrentInfo = styled.span`
183
+ padding: 0 16px;
184
+ ${ComponentXSStyling(ComponentTextStyle.Regular, COLORS.black)}
185
+ `;
186
+ export const StyledTableFooterControls = styled.div`
187
+ display: flex;
188
+ `;
189
+ export const StyledTableSpinner = styled.div`
190
+ height: 100%;
191
+ width: 100%;
192
+ position: absolute;
193
+ background-color: rgba(0, 0, 0, 0.5);
194
+ top: 0;
195
+ `;
183
196
  //# sourceMappingURL=TableStyles.js.map