@laerdal/life-react-components 1.3.2-dev.7 → 1.4.1-dev.1.full
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/DualFunctionButton.js +4 -0
- package/dist/esm/Button/DualFunctionButton.js.map +1 -1
- package/dist/esm/Dropdown/DropdownContent.js +6 -6
- package/dist/esm/Dropdown/DropdownContent.js.map +1 -1
- package/dist/esm/Modals/ModalDialog.js +7 -4
- package/dist/esm/Modals/ModalDialog.js.map +1 -1
- package/dist/esm/Modals/ModalNote.js +1 -1
- package/dist/esm/Modals/ModalNote.js.map +1 -1
- package/dist/esm/Table/Table.js +22 -6
- package/dist/esm/Table/Table.js.map +1 -1
- package/dist/esm/Table/TableBody.js +14 -24
- package/dist/esm/Table/TableBody.js.map +1 -1
- package/dist/esm/Table/TableFooter.js +13 -12
- package/dist/esm/Table/TableFooter.js.map +1 -1
- package/dist/esm/Table/TableHeaders.js +8 -19
- package/dist/esm/Table/TableHeaders.js.map +1 -1
- package/dist/esm/Table/TableStyles.js +226 -180
- package/dist/esm/Table/TableStyles.js.map +1 -1
- package/dist/esm/Table/__tests__/Table.test.js +162 -0
- package/dist/esm/Table/__tests__/Table.test.js.map +1 -1
- package/dist/js/Button/DualFunctionButton.js +4 -0
- package/dist/js/Button/DualFunctionButton.js.map +1 -1
- package/dist/js/Dropdown/DropdownContent.js +8 -8
- package/dist/js/Dropdown/DropdownContent.js.map +1 -1
- package/dist/js/Modals/ModalDialog.d.ts +2 -1
- package/dist/js/Modals/ModalDialog.js +7 -4
- package/dist/js/Modals/ModalDialog.js.map +1 -1
- package/dist/js/Modals/ModalNote.d.ts +1 -1
- package/dist/js/Modals/ModalNote.js +1 -1
- package/dist/js/Modals/ModalNote.js.map +1 -1
- package/dist/js/Table/Table.js +32 -11
- package/dist/js/Table/Table.js.map +1 -1
- package/dist/js/Table/TableBody.js +16 -25
- package/dist/js/Table/TableBody.js.map +1 -1
- package/dist/js/Table/TableFooter.d.ts +2 -0
- package/dist/js/Table/TableFooter.js +19 -12
- package/dist/js/Table/TableFooter.js.map +1 -1
- package/dist/js/Table/TableHeaders.js +9 -19
- package/dist/js/Table/TableHeaders.js.map +1 -1
- package/dist/js/Table/TableStyles.d.ts +19 -0
- package/dist/js/Table/TableStyles.js +79 -3
- package/dist/js/Table/TableStyles.js.map +1 -1
- package/dist/js/Table/TableTypes.d.ts +4 -1
- package/dist/js/Table/__tests__/Table.test.js +164 -0
- package/dist/js/Table/__tests__/Table.test.js.map +1 -1
- package/dist/umd/Button/DualFunctionButton.js +4 -0
- package/dist/umd/Button/DualFunctionButton.js.map +1 -1
- package/dist/umd/Dropdown/DropdownContent.js +6 -6
- package/dist/umd/Dropdown/DropdownContent.js.map +1 -1
- package/dist/umd/Modals/ModalDialog.js +7 -4
- package/dist/umd/Modals/ModalDialog.js.map +1 -1
- package/dist/umd/Modals/ModalNote.js +1 -1
- package/dist/umd/Modals/ModalNote.js.map +1 -1
- package/dist/umd/Table/Table.js +21 -5
- package/dist/umd/Table/Table.js.map +1 -1
- package/dist/umd/Table/TableBody.js +17 -28
- package/dist/umd/Table/TableBody.js.map +1 -1
- package/dist/umd/Table/TableFooter.js +15 -16
- package/dist/umd/Table/TableFooter.js.map +1 -1
- package/dist/umd/Table/TableHeaders.js +11 -23
- package/dist/umd/Table/TableHeaders.js.map +1 -1
- package/dist/umd/Table/TableStyles.js +226 -180
- package/dist/umd/Table/TableStyles.js.map +1 -1
- package/dist/umd/Table/__tests__/Table.test.js +164 -4
- package/dist/umd/Table/__tests__/Table.test.js.map +1 -1
- package/package.json +1 -1
package/dist/js/Table/Table.js
CHANGED
|
@@ -63,7 +63,11 @@ var Table = function Table(props) {
|
|
|
63
63
|
showLoadingIndicator = props.showLoadingIndicator,
|
|
64
64
|
selectable = props.selectable,
|
|
65
65
|
multiSelect = props.multiSelect,
|
|
66
|
-
keyExpr = props.keyExpr
|
|
66
|
+
keyExpr = props.keyExpr,
|
|
67
|
+
accordion = props.accordion,
|
|
68
|
+
_props$collapsed = props.collapsed,
|
|
69
|
+
collapsed = _props$collapsed === void 0 ? true : _props$collapsed,
|
|
70
|
+
collapsedRows = props.collapsedRows; // States used within the component
|
|
67
71
|
|
|
68
72
|
var _React$useState = React.useState(10),
|
|
69
73
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
@@ -110,15 +114,20 @@ var Table = function Table(props) {
|
|
|
110
114
|
total = _React$useState18[0],
|
|
111
115
|
setTotal = _React$useState18[1];
|
|
112
116
|
|
|
113
|
-
var _React$useState19 = React.useState(
|
|
117
|
+
var _React$useState19 = React.useState(true),
|
|
114
118
|
_React$useState20 = _slicedToArray(_React$useState19, 2),
|
|
115
|
-
|
|
116
|
-
|
|
119
|
+
isCollapsed = _React$useState20[0],
|
|
120
|
+
setIsCollapsed = _React$useState20[1];
|
|
117
121
|
|
|
118
|
-
var _React$useState21 = React.useState(
|
|
122
|
+
var _React$useState21 = React.useState('none'),
|
|
119
123
|
_React$useState22 = _slicedToArray(_React$useState21, 2),
|
|
120
|
-
|
|
121
|
-
|
|
124
|
+
selectAllState = _React$useState22[0],
|
|
125
|
+
setSelectAllState = _React$useState22[1];
|
|
126
|
+
|
|
127
|
+
var _React$useState23 = React.useState(multiSelect ? [] : undefined),
|
|
128
|
+
_React$useState24 = _slicedToArray(_React$useState23, 2),
|
|
129
|
+
selected = _React$useState24[0],
|
|
130
|
+
setSelected = _React$useState24[1];
|
|
122
131
|
|
|
123
132
|
React.useEffect(function () {
|
|
124
133
|
setSelected(props.selectedRows || (multiSelect ? [] : undefined));
|
|
@@ -175,6 +184,18 @@ var Table = function Table(props) {
|
|
|
175
184
|
setRowsPerPage(pagination === null || pagination === void 0 ? void 0 : pagination.rowsPerPage);
|
|
176
185
|
}
|
|
177
186
|
}, [remoteOperations, pagination, rows]);
|
|
187
|
+
/**
|
|
188
|
+
* Sets number of rows to display when accordion.
|
|
189
|
+
*/
|
|
190
|
+
|
|
191
|
+
React.useEffect(function () {
|
|
192
|
+
if (!accordion) return;
|
|
193
|
+
setRowsPerPage(isCollapsed ? collapsedRows || 10 : rows.length);
|
|
194
|
+
}, [rows, accordion, collapsedRows, isCollapsed]);
|
|
195
|
+
React.useEffect(function () {
|
|
196
|
+
if (!accordion) return;
|
|
197
|
+
setIsCollapsed(!!collapsed);
|
|
198
|
+
}, [accordion, collapsed]);
|
|
178
199
|
/**
|
|
179
200
|
* Filters out a rows by specific column filters and sorts them if any sorting is set.
|
|
180
201
|
* @returns Filtered and sorted rows.
|
|
@@ -409,7 +430,7 @@ var Table = function Table(props) {
|
|
|
409
430
|
*/
|
|
410
431
|
|
|
411
432
|
|
|
412
|
-
return /*#__PURE__*/React.createElement(_TableStyles.TableWrapper, null, /*#__PURE__*/React.createElement(
|
|
433
|
+
return /*#__PURE__*/React.createElement(_TableStyles.TableWrapper, null, /*#__PURE__*/React.createElement(_TableStyles.StyledTable, {
|
|
413
434
|
cellPadding: "0",
|
|
414
435
|
cellSpacing: "0",
|
|
415
436
|
"data-testid": "TestTable",
|
|
@@ -425,14 +446,14 @@ var Table = function Table(props) {
|
|
|
425
446
|
})), /*#__PURE__*/React.createElement(_TableFooter.default, _extends({}, props, {
|
|
426
447
|
onRowsPerPageChange: changeRowsPerPage,
|
|
427
448
|
rowsPerPage: rowsPerPage,
|
|
449
|
+
setIsCollapsed: setIsCollapsed,
|
|
450
|
+
isCollapsed: isCollapsed,
|
|
428
451
|
from: from,
|
|
429
452
|
to: to,
|
|
430
453
|
total: total,
|
|
431
454
|
nextPage: nextPage,
|
|
432
455
|
prevPage: previousPage
|
|
433
|
-
}))), showLoadingIndicator && /*#__PURE__*/React.createElement(
|
|
434
|
-
className: 'table-spinner'
|
|
435
|
-
}, /*#__PURE__*/React.createElement(_LoadingIndicator.LoadingIndicator, {
|
|
456
|
+
}))), showLoadingIndicator && /*#__PURE__*/React.createElement(_TableStyles.StyledTableSpinner, null, /*#__PURE__*/React.createElement(_LoadingIndicator.LoadingIndicator, {
|
|
436
457
|
size: _types.Size.Medium,
|
|
437
458
|
color: "#ffffff"
|
|
438
459
|
})));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Table/Table.tsx"],"names":["Table","props","onPreviousPageClick","onNextPageClick","onRowsPerPageChange","onTriggerSortingChange","columns","rows","remoteOperations","pagination","showLoadingIndicator","selectable","multiSelect","keyExpr","React","useState","rowsPerPage","setRowsPerPage","filteredRows","setFilteredRows","currentPageRows","setCurrentPageRows","currentPage","setCurrentPage","sortedColumn","setSortedColumn","sortedDirection","setSortedDirection","from","setFrom","to","setTo","total","setTotal","selectAllState","setSelectAllState","undefined","selected","setSelected","useEffect","selectedRows","currentList","map","row","count","filter","item","includes","length","tmpFilteredRows","filterAndSortRows","rowsFrom","rowsTo","slice","matchFilterCriteria","column","filterValue","key","toLowerCase","indexOf","some","sortingDirection","sortingColumn","find","sort","a","b","sortTableColumn","tmpColumn","sortable","previousPage","nextPage","changeRowsPerPage","value","onRowClick","selectedText","window","getSelection","toString","currentSelection","existing","splice","onSelectionChange","onSelectAllClick","Size","Medium"],"mappings":"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","sourcesContent":["/**\n * Import React libraries.\n */\nimport * as React from 'react';\n\n/**\n * Import custom components.\n */\nimport {Size} from '../types'\n\n/**\n * Import custom styles.\n */\nimport {TableWrapper} from './TableStyles';\n\n/**\n * Import custom types.\n */\nimport {TableProps, TableColumn, TableSortingDirection} from './TableTypes';\nimport {LoadingIndicator} from '../LoadingIndicator';\nimport TableHeader from './TableHeaders';\nimport TableFooter from './TableFooter';\nimport TableBody from './TableBody';\n\nconst Table: React.FunctionComponent<TableProps> = (props: TableProps) => {\n let {\n onPreviousPageClick,\n onNextPageClick,\n onRowsPerPageChange,\n onTriggerSortingChange,\n columns,\n rows,\n remoteOperations,\n pagination,\n showLoadingIndicator,\n selectable,\n multiSelect,\n keyExpr\n } = props;\n\n // States used within the component\n const [rowsPerPage, setRowsPerPage] = React.useState<number>(10);\n const [filteredRows, setFilteredRows] = React.useState<any[]>([]);\n const [currentPageRows, setCurrentPageRows] = React.useState<any[]>([]);\n const [currentPage, setCurrentPage] = React.useState<number>(1);\n const [sortedColumn, setSortedColumn] = React.useState<string>('');\n const [sortedDirection, setSortedDirection] = React.useState<TableSortingDirection>('asc');\n const [from, setFrom] = React.useState<number>();\n const [to, setTo] = React.useState<number>();\n const [total, setTotal] = React.useState<number>();\n\n const [selectAllState, setSelectAllState] = React.useState<'all' | 'some' | 'none'>('none');\n\n const [selected, setSelected] = React.useState<any | any[]>(multiSelect ? [] : undefined);\n\n React.useEffect(() => {\n setSelected(props.selectedRows || (multiSelect ? [] : undefined))\n }, [props.selectedRows, multiSelect])\n\n /**\n * update select all checkbox state\n */\n React.useEffect(() => {\n if (multiSelect) {\n const currentList = currentPageRows.map(row => keyExpr ? row[keyExpr] : row);\n const count = selected.filter((item: any) => currentList.includes(item)).length;\n\n setSelectAllState(count === currentList.length ? 'all' : count > 0 ? 'some' : 'none');\n }\n }, [currentPageRows, multiSelect, selected, keyExpr])\n\n\n /**\n * Takes care of local pagination.\n * Works only in case remote pagination is not defined or is set to false.\n */\n React.useEffect(() => {\n if (!remoteOperations) {\n // Let's retrieve temporary filtered rows and update globally filtered rows\n const tmpFilteredRows = filterAndSortRows();\n setFilteredRows(tmpFilteredRows);\n setTotal(tmpFilteredRows.length);\n\n // Assign rows from and rows to\n const rowsFrom = (currentPage - 1) * rowsPerPage;\n const rowsTo = rowsFrom + rowsPerPage >= tmpFilteredRows.length ? tmpFilteredRows.length : rowsFrom + rowsPerPage;\n\n // Set from and to values\n setFrom(rowsFrom + 1);\n setTo(rowsTo);\n\n // Filter out the rows\n setCurrentPageRows(tmpFilteredRows.slice(rowsFrom, rowsTo));\n }\n }, [rowsPerPage, rows, currentPage, columns, sortedColumn, sortedDirection, remoteOperations]);\n\n /**\n * Takes care of remote pagination.\n * Works only in case remote pagination is set to true.\n */\n React.useEffect(() => {\n if (remoteOperations) {\n setCurrentPageRows(rows);\n\n // Let's assign pagination values\n setFrom(pagination?.from);\n setTo(pagination?.to);\n setTotal(pagination?.total);\n setCurrentPage(pagination?.currentPage!);\n setRowsPerPage(pagination?.rowsPerPage!);\n }\n }, [remoteOperations, pagination, rows]);\n\n /**\n * Filters out a rows by specific column filters and sorts them if any sorting is set.\n * @returns Filtered and sorted rows.\n */\n const filterAndSortRows = (): any[] => {\n let tmpFilteredRows = rows.filter((row) => {\n // Let's start with matched filter criteria\n let matchFilterCriteria = true;\n\n // Let's go through columns\n for (const column of columns) {\n // Let's check if filter value is specified for the column\n // And if it doesn't match the current row column value\n // Then let's update match filter criteria to failed\n if (column.filterValue && row[column.key].toLowerCase().indexOf(column.filterValue.toLowerCase()) === -1) {\n matchFilterCriteria = false;\n }\n }\n\n // Let's return row only in case match filter criteria succeeds\n if (matchFilterCriteria) {\n return row;\n }\n });\n\n // Let's apply sorting if needed\n if (columns.some((column) => column.sortingDirection)) {\n // Let's find the sorting column\n const sortingColumn = columns.find((column) => column.sortingDirection)!;\n\n // Update sorted column data\n setSortedDirection(sortingColumn.sortingDirection!);\n setSortedColumn(sortingColumn.key!);\n\n // Let's sort the rows\n tmpFilteredRows.sort((a, b) => {\n if (a[sortingColumn.key] > b[sortingColumn.key]) {\n return sortingColumn.sortingDirection === 'asc' ? 1 : -1;\n } else if (a[sortingColumn.key] < b[sortingColumn.key]) {\n return sortingColumn.sortingDirection === 'asc' ? -1 : 1;\n } else {\n return 0;\n }\n });\n }\n\n // Let's return filtered rows\n return tmpFilteredRows;\n };\n\n /**\n * Applies a specific sorting to a column.\n * If no sorting exists, then applies ascending initially\n * @param column - Column to which sorting should be applied.\n */\n const sortTableColumn = (column: TableColumn): void => {\n // Let's remove any active sorting\n columns = columns.map((tmpColumn: TableColumn) => {\n // Let's apply new sorting\n // Let's check if it is the column for which we have to apply sorting\n if (column.key === tmpColumn.key && tmpColumn.sortable) {\n // Let's check if sorting is not defined\n // If so, let's toggle the sorting direction\n if (tmpColumn.sortingDirection !== undefined) {\n if (tmpColumn.sortingDirection === 'asc') {\n tmpColumn.sortingDirection = 'desc';\n\n // Update sorted column and direction\n setSortedColumn(column.key);\n setSortedDirection('desc');\n\n // Let's trigger remote sorting trigger function\n if (remoteOperations && onTriggerSortingChange) {\n onTriggerSortingChange(column.key, 'desc');\n }\n } else {\n tmpColumn.sortingDirection = 'asc';\n\n // Update sorted column and direction\n setSortedColumn(column.key);\n setSortedDirection('asc');\n\n // Let's trigger remote sorting trigger function\n if (remoteOperations && onTriggerSortingChange) {\n onTriggerSortingChange(column.key, 'asc');\n }\n }\n } else {\n // Let's apply the initial sorting\n tmpColumn.sortingDirection = 'asc';\n\n // Update sorted column and direction\n setSortedColumn(column.key);\n setSortedDirection('asc');\n\n // Let's trigger remote sorting trigger function\n if (remoteOperations && onTriggerSortingChange) {\n onTriggerSortingChange(column.key, 'asc');\n }\n }\n } else if (tmpColumn.sortingDirection !== undefined) {\n // Let's remove sorting\n tmpColumn.sortingDirection = undefined;\n }\n\n return tmpColumn;\n });\n };\n\n /**\n * Navigates user back to the previous page and updates the current table page.\n */\n const previousPage = () => {\n if (remoteOperations) {\n // Let's inform parent component about page change\n if (onPreviousPageClick) {\n onPreviousPageClick();\n }\n } else {\n // Let's change the page within the component\n setCurrentPage(currentPage > 1 ? currentPage - 1 : 1);\n }\n };\n\n /**\n * Navigates user to the next page and updates the current table page.\n */\n const nextPage = () => {\n if (remoteOperations) {\n // Let's inform parent component about page change\n if (onNextPageClick) {\n onNextPageClick();\n }\n } else {\n // Let's change the page within the component\n setCurrentPage(currentPage * rowsPerPage >= filteredRows.length ? currentPage : currentPage + 1);\n }\n };\n\n /**\n * Updates the rows per page value and refreshes the table content accordingly.\n * @param value - Newly selected rows per page value.\n */\n const changeRowsPerPage = (value: number) => {\n // Let's check if we are using remote pagination\n if (remoteOperations) {\n // Inform parent component about rows per page change\n if (onRowsPerPageChange) {\n onRowsPerPageChange(value);\n }\n } else {\n // Let's reset current page to 1\n setCurrentPage(1);\n }\n\n // Let's set rows per page\n setRowsPerPage(value);\n };\n\n\n /**\n * Function which is called when a mouse click happens on a row to pass data to the parent component.\n * @param row - Row in which the link is located.\n */\n const onRowClick = (row: any): void => {\n const selectedText = window?.getSelection()?.toString();\n\n if (selectedText?.length === 0 && selectable) {\n const value = keyExpr ? row[keyExpr] : row;\n let currentSelection = value;\n if (!!multiSelect) {\n const existing = selected?.indexOf(value);\n if (existing > -1) {\n currentSelection = [...selected];\n currentSelection.splice(existing, 1);\n } else {\n currentSelection = [...selected, currentSelection];\n }\n }\n\n setSelected(currentSelection)\n props.onSelectionChange && props.onSelectionChange(currentSelection);\n }\n };\n\n /**\n * Function which is called when user clicks checkbox to select or deselect all rows.\n */\n const onSelectAllClick = () => {\n const currentList = currentPageRows.map(row => keyExpr ? row[keyExpr] : row);\n\n switch (selectAllState) {\n case 'all':\n setSelected([...selected].filter(item => !currentList.includes(item)));\n setSelectAllState('none');\n break;\n case 'none':\n setSelected([...selected, ...currentList]);\n setSelectAllState('all');\n break;\n case 'some':\n setSelected([...selected, ...currentList.filter(item => !selected.includes(item))]);\n setSelectAllState('all');\n break;\n }\n };\n\n /**\n * Return Table component.\n */\n return (\n <TableWrapper>\n <table cellPadding=\"0\" cellSpacing=\"0\" data-testid=\"TestTable\" className={'table'}>\n <TableHeader {...props}\n sortByColumn={sortTableColumn}\n onSelectAllClick={onSelectAllClick}\n selectAllState={selectAllState}/>\n <TableBody {...props}\n currentPageRows={currentPageRows}\n selected={selected}\n onRowClick={onRowClick}/>\n <TableFooter {...props}\n onRowsPerPageChange={changeRowsPerPage}\n rowsPerPage={rowsPerPage}\n from={from}\n to={to}\n total={total}\n nextPage={nextPage}\n prevPage={previousPage}/>\n </table>\n {showLoadingIndicator && (\n <div className={'table-spinner'}>\n <LoadingIndicator size={Size.Medium} color=\"#ffffff\"/>\n </div>\n )}\n </TableWrapper>\n );\n};\n\nexport default Table;\n"],"file":"Table.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/Table/Table.tsx"],"names":["Table","props","onPreviousPageClick","onNextPageClick","onRowsPerPageChange","onTriggerSortingChange","columns","rows","remoteOperations","pagination","showLoadingIndicator","selectable","multiSelect","keyExpr","accordion","collapsed","collapsedRows","React","useState","rowsPerPage","setRowsPerPage","filteredRows","setFilteredRows","currentPageRows","setCurrentPageRows","currentPage","setCurrentPage","sortedColumn","setSortedColumn","sortedDirection","setSortedDirection","from","setFrom","to","setTo","total","setTotal","isCollapsed","setIsCollapsed","selectAllState","setSelectAllState","undefined","selected","setSelected","useEffect","selectedRows","currentList","map","row","count","filter","item","includes","length","tmpFilteredRows","filterAndSortRows","rowsFrom","rowsTo","slice","matchFilterCriteria","column","filterValue","key","toLowerCase","indexOf","some","sortingDirection","sortingColumn","find","sort","a","b","sortTableColumn","tmpColumn","sortable","previousPage","nextPage","changeRowsPerPage","value","onRowClick","selectedText","window","getSelection","toString","currentSelection","existing","splice","onSelectionChange","onSelectAllClick","Size","Medium"],"mappings":"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","sourcesContent":["/**\n * Import React libraries.\n */\nimport * as React from 'react';\n\n/**\n * Import custom components.\n */\nimport {Size} from '../types'\n\n/**\n * Import custom styles.\n */\nimport {StyledTable, StyledTableSpinner, TableWrapper} from './TableStyles';\n\n/**\n * Import custom types.\n */\nimport {TableProps, TableColumn, TableSortingDirection} from './TableTypes';\nimport {LoadingIndicator} from '../LoadingIndicator';\nimport TableHeader from './TableHeaders';\nimport TableFooter from './TableFooter';\nimport TableBody from './TableBody';\n\nconst Table: React.FunctionComponent<TableProps> = (props: TableProps) => {\n let {\n onPreviousPageClick,\n onNextPageClick,\n onRowsPerPageChange,\n onTriggerSortingChange,\n columns,\n rows,\n remoteOperations,\n pagination,\n showLoadingIndicator,\n selectable,\n multiSelect,\n keyExpr,\n accordion,\n collapsed = true,\n collapsedRows\n } = props;\n\n // States used within the component\n const [rowsPerPage, setRowsPerPage] = React.useState<number>(10);\n const [filteredRows, setFilteredRows] = React.useState<any[]>([]);\n const [currentPageRows, setCurrentPageRows] = React.useState<any[]>([]);\n const [currentPage, setCurrentPage] = React.useState<number>(1);\n const [sortedColumn, setSortedColumn] = React.useState<string>('');\n const [sortedDirection, setSortedDirection] = React.useState<TableSortingDirection>('asc');\n const [from, setFrom] = React.useState<number>();\n const [to, setTo] = React.useState<number>();\n const [total, setTotal] = React.useState<number>();\n\n const [isCollapsed, setIsCollapsed] = React.useState(true);\n\n const [selectAllState, setSelectAllState] = React.useState<'all' | 'some' | 'none'>('none');\n\n const [selected, setSelected] = React.useState<any | any[]>(multiSelect ? [] : undefined);\n\n React.useEffect(() => {\n setSelected(props.selectedRows || (multiSelect ? [] : undefined))\n }, [props.selectedRows, multiSelect])\n\n /**\n * update select all checkbox state\n */\n React.useEffect(() => {\n if (multiSelect) {\n const currentList = currentPageRows.map(row => keyExpr ? row[keyExpr] : row);\n const count = selected.filter((item: any) => currentList.includes(item)).length;\n\n setSelectAllState(count === currentList.length ? 'all' : count > 0 ? 'some' : 'none');\n }\n }, [currentPageRows, multiSelect, selected, keyExpr])\n\n\n /**\n * Takes care of local pagination.\n * Works only in case remote pagination is not defined or is set to false.\n */\n React.useEffect(() => {\n if (!remoteOperations) {\n // Let's retrieve temporary filtered rows and update globally filtered rows\n const tmpFilteredRows = filterAndSortRows();\n setFilteredRows(tmpFilteredRows);\n setTotal(tmpFilteredRows.length);\n\n // Assign rows from and rows to\n const rowsFrom = (currentPage - 1) * rowsPerPage;\n const rowsTo = rowsFrom + rowsPerPage >= tmpFilteredRows.length ? tmpFilteredRows.length : rowsFrom + rowsPerPage;\n\n // Set from and to values\n setFrom(rowsFrom + 1);\n setTo(rowsTo);\n\n // Filter out the rows\n setCurrentPageRows(tmpFilteredRows.slice(rowsFrom, rowsTo));\n }\n }, [rowsPerPage, rows, currentPage, columns, sortedColumn, sortedDirection, remoteOperations]);\n\n /**\n * Takes care of remote pagination.\n * Works only in case remote pagination is set to true.\n */\n React.useEffect(() => {\n if (remoteOperations) {\n setCurrentPageRows(rows);\n\n // Let's assign pagination values\n setFrom(pagination?.from);\n setTo(pagination?.to);\n setTotal(pagination?.total);\n setCurrentPage(pagination?.currentPage!);\n setRowsPerPage(pagination?.rowsPerPage!);\n }\n }, [remoteOperations, pagination, rows]);\n\n /**\n * Sets number of rows to display when accordion.\n */\n React.useEffect(() => {\n if (!accordion) return;\n\n setRowsPerPage(isCollapsed ? collapsedRows || 10 : rows.length );\n }, [rows, accordion, collapsedRows, isCollapsed])\n\n React.useEffect(() => {\n if (!accordion) return;\n\n setIsCollapsed(!!collapsed);\n }, [ accordion, collapsed])\n\n /**\n * Filters out a rows by specific column filters and sorts them if any sorting is set.\n * @returns Filtered and sorted rows.\n */\n const filterAndSortRows = (): any[] => {\n let tmpFilteredRows = rows.filter((row) => {\n // Let's start with matched filter criteria\n let matchFilterCriteria = true;\n\n // Let's go through columns\n for (const column of columns) {\n // Let's check if filter value is specified for the column\n // And if it doesn't match the current row column value\n // Then let's update match filter criteria to failed\n if (column.filterValue && row[column.key].toLowerCase().indexOf(column.filterValue.toLowerCase()) === -1) {\n matchFilterCriteria = false;\n }\n }\n\n // Let's return row only in case match filter criteria succeeds\n if (matchFilterCriteria) {\n return row;\n }\n });\n\n // Let's apply sorting if needed\n if (columns.some((column) => column.sortingDirection)) {\n // Let's find the sorting column\n const sortingColumn = columns.find((column) => column.sortingDirection)!;\n\n // Update sorted column data\n setSortedDirection(sortingColumn.sortingDirection!);\n setSortedColumn(sortingColumn.key!);\n\n // Let's sort the rows\n tmpFilteredRows.sort((a, b) => {\n if (a[sortingColumn.key] > b[sortingColumn.key]) {\n return sortingColumn.sortingDirection === 'asc' ? 1 : -1;\n } else if (a[sortingColumn.key] < b[sortingColumn.key]) {\n return sortingColumn.sortingDirection === 'asc' ? -1 : 1;\n } else {\n return 0;\n }\n });\n }\n\n // Let's return filtered rows\n return tmpFilteredRows;\n };\n\n /**\n * Applies a specific sorting to a column.\n * If no sorting exists, then applies ascending initially\n * @param column - Column to which sorting should be applied.\n */\n const sortTableColumn = (column: TableColumn): void => {\n // Let's remove any active sorting\n columns = columns.map((tmpColumn: TableColumn) => {\n // Let's apply new sorting\n // Let's check if it is the column for which we have to apply sorting\n if (column.key === tmpColumn.key && tmpColumn.sortable) {\n // Let's check if sorting is not defined\n // If so, let's toggle the sorting direction\n if (tmpColumn.sortingDirection !== undefined) {\n if (tmpColumn.sortingDirection === 'asc') {\n tmpColumn.sortingDirection = 'desc';\n\n // Update sorted column and direction\n setSortedColumn(column.key);\n setSortedDirection('desc');\n\n // Let's trigger remote sorting trigger function\n if (remoteOperations && onTriggerSortingChange) {\n onTriggerSortingChange(column.key, 'desc');\n }\n } else {\n tmpColumn.sortingDirection = 'asc';\n\n // Update sorted column and direction\n setSortedColumn(column.key);\n setSortedDirection('asc');\n\n // Let's trigger remote sorting trigger function\n if (remoteOperations && onTriggerSortingChange) {\n onTriggerSortingChange(column.key, 'asc');\n }\n }\n } else {\n // Let's apply the initial sorting\n tmpColumn.sortingDirection = 'asc';\n\n // Update sorted column and direction\n setSortedColumn(column.key);\n setSortedDirection('asc');\n\n // Let's trigger remote sorting trigger function\n if (remoteOperations && onTriggerSortingChange) {\n onTriggerSortingChange(column.key, 'asc');\n }\n }\n } else if (tmpColumn.sortingDirection !== undefined) {\n // Let's remove sorting\n tmpColumn.sortingDirection = undefined;\n }\n\n return tmpColumn;\n });\n };\n\n /**\n * Navigates user back to the previous page and updates the current table page.\n */\n const previousPage = () => {\n if (remoteOperations) {\n // Let's inform parent component about page change\n if (onPreviousPageClick) {\n onPreviousPageClick();\n }\n } else {\n // Let's change the page within the component\n setCurrentPage(currentPage > 1 ? currentPage - 1 : 1);\n }\n };\n\n /**\n * Navigates user to the next page and updates the current table page.\n */\n const nextPage = () => {\n if (remoteOperations) {\n // Let's inform parent component about page change\n if (onNextPageClick) {\n onNextPageClick();\n }\n } else {\n // Let's change the page within the component\n setCurrentPage(currentPage * rowsPerPage >= filteredRows.length ? currentPage : currentPage + 1);\n }\n };\n\n /**\n * Updates the rows per page value and refreshes the table content accordingly.\n * @param value - Newly selected rows per page value.\n */\n const changeRowsPerPage = (value: number) => {\n // Let's check if we are using remote pagination\n if (remoteOperations) {\n // Inform parent component about rows per page change\n if (onRowsPerPageChange) {\n onRowsPerPageChange(value);\n }\n } else {\n // Let's reset current page to 1\n setCurrentPage(1);\n }\n\n // Let's set rows per page\n setRowsPerPage(value);\n };\n\n\n /**\n * Function which is called when a mouse click happens on a row to pass data to the parent component.\n * @param row - Row in which the link is located.\n */\n const onRowClick = (row: any): void => {\n const selectedText = window?.getSelection()?.toString();\n\n if (selectedText?.length === 0 && selectable) {\n const value = keyExpr ? row[keyExpr] : row;\n let currentSelection = value;\n if (!!multiSelect) {\n const existing = selected?.indexOf(value);\n if (existing > -1) {\n currentSelection = [...selected];\n currentSelection.splice(existing, 1);\n } else {\n currentSelection = [...selected, currentSelection];\n }\n }\n\n setSelected(currentSelection)\n props.onSelectionChange && props.onSelectionChange(currentSelection);\n }\n };\n\n /**\n * Function which is called when user clicks checkbox to select or deselect all rows.\n */\n const onSelectAllClick = () => {\n const currentList = currentPageRows.map(row => keyExpr ? row[keyExpr] : row);\n\n switch (selectAllState) {\n case 'all':\n setSelected([...selected].filter(item => !currentList.includes(item)));\n setSelectAllState('none');\n break;\n case 'none':\n setSelected([...selected, ...currentList]);\n setSelectAllState('all');\n break;\n case 'some':\n setSelected([...selected, ...currentList.filter(item => !selected.includes(item))]);\n setSelectAllState('all');\n break;\n }\n };\n\n /**\n * Return Table component.\n */\n return (\n <TableWrapper>\n <StyledTable cellPadding=\"0\" cellSpacing=\"0\" data-testid=\"TestTable\" className={'table'}>\n <TableHeader {...props}\n sortByColumn={sortTableColumn}\n onSelectAllClick={onSelectAllClick}\n selectAllState={selectAllState}/>\n <TableBody {...props}\n currentPageRows={currentPageRows}\n selected={selected}\n onRowClick={onRowClick}/>\n <TableFooter {...props}\n onRowsPerPageChange={changeRowsPerPage}\n rowsPerPage={rowsPerPage}\n setIsCollapsed={setIsCollapsed}\n isCollapsed={isCollapsed}\n from={from}\n to={to}\n total={total}\n nextPage={nextPage}\n prevPage={previousPage}/>\n </StyledTable>\n {showLoadingIndicator && (\n <StyledTableSpinner>\n <LoadingIndicator size={Size.Medium} color=\"#ffffff\"/>\n </StyledTableSpinner>\n )}\n </TableWrapper>\n );\n};\n\nexport default Table;\n"],"file":"Table.js"}
|
|
@@ -21,6 +21,8 @@ var _Iconbutton = _interopRequireDefault(require("../Button/Iconbutton"));
|
|
|
21
21
|
|
|
22
22
|
var _HyperLink = require("../HyperLink");
|
|
23
23
|
|
|
24
|
+
var _TableStyles = require("./TableStyles");
|
|
25
|
+
|
|
24
26
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
27
|
|
|
26
28
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -42,7 +44,7 @@ var TableBody = function TableBody(props) {
|
|
|
42
44
|
{
|
|
43
45
|
var _props = _objectSpread({
|
|
44
46
|
variant: 'default',
|
|
45
|
-
href: ''
|
|
47
|
+
href: '#'
|
|
46
48
|
}, column.additionalProps);
|
|
47
49
|
|
|
48
50
|
return /*#__PURE__*/React.createElement(_HyperLink.HyperLink, _extends({
|
|
@@ -106,20 +108,16 @@ var TableBody = function TableBody(props) {
|
|
|
106
108
|
case 'number':
|
|
107
109
|
case 'text':
|
|
108
110
|
default:
|
|
109
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(
|
|
110
|
-
className: 'table-cell-icon'
|
|
111
|
-
}, column.icon), /*#__PURE__*/React.createElement("span", null, row[column.key]));
|
|
111
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, column.icon && /*#__PURE__*/React.createElement(_TableStyles.StyledTableCellIcon, null, column.icon), /*#__PURE__*/React.createElement(_TableStyles.StyledTableCellText, null, row[column.key]));
|
|
112
112
|
}
|
|
113
113
|
};
|
|
114
114
|
|
|
115
|
-
return /*#__PURE__*/React.createElement(
|
|
116
|
-
className: 'table-body'
|
|
117
|
-
}, props.currentPageRows.length > 0 ? props.currentPageRows.map(function (row, index) {
|
|
115
|
+
return /*#__PURE__*/React.createElement(_TableStyles.StyledTableBody, null, props.currentPageRows.length > 0 ? props.currentPageRows.map(function (row, index) {
|
|
118
116
|
var _props$selected;
|
|
119
117
|
|
|
120
|
-
return /*#__PURE__*/React.createElement(
|
|
118
|
+
return /*#__PURE__*/React.createElement(_TableStyles.StyledTableBodyRow, {
|
|
121
119
|
key: "row_".concat(index),
|
|
122
|
-
className:
|
|
120
|
+
className: props.selectable ? 'selectable' : '',
|
|
123
121
|
onClick: function onClick() {
|
|
124
122
|
return props.onRowClick && props.onRowClick(row);
|
|
125
123
|
},
|
|
@@ -133,17 +131,12 @@ var TableBody = function TableBody(props) {
|
|
|
133
131
|
},
|
|
134
132
|
tabIndex: props.selectable ? 0 : undefined,
|
|
135
133
|
"data-testid": "TestTableDataRow"
|
|
136
|
-
}, props.multiSelect && /*#__PURE__*/React.createElement(
|
|
137
|
-
className: 'table-cell'
|
|
138
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
139
|
-
className: 'table-cell-content'
|
|
140
|
-
}, /*#__PURE__*/React.createElement(_InputFields.Checkbox, {
|
|
134
|
+
}, props.multiSelect && /*#__PURE__*/React.createElement(_TableStyles.StyledTableCell, null, /*#__PURE__*/React.createElement(_TableStyles.StyledTableCellContent, null, /*#__PURE__*/React.createElement(_InputFields.Checkbox, {
|
|
141
135
|
selected: ((_props$selected = props.selected) === null || _props$selected === void 0 ? void 0 : _props$selected.indexOf(props.keyExpr ? row[props.keyExpr] : row)) > -1,
|
|
142
136
|
readonly: true
|
|
143
137
|
}))), props.columns.map(function (column) {
|
|
144
|
-
return /*#__PURE__*/React.createElement(
|
|
138
|
+
return /*#__PURE__*/React.createElement(_TableStyles.StyledTableCell, {
|
|
145
139
|
key: "row_".concat(index, "_").concat(column.key),
|
|
146
|
-
className: "table-cell",
|
|
147
140
|
style: column.colorFn ? {
|
|
148
141
|
color: column.colorFn(row, column.key),
|
|
149
142
|
maxWidth: column.width
|
|
@@ -151,18 +144,16 @@ var TableBody = function TableBody(props) {
|
|
|
151
144
|
maxWidth: column.width
|
|
152
145
|
},
|
|
153
146
|
title: column.shortenText && row[column.key]
|
|
154
|
-
}, /*#__PURE__*/React.createElement(
|
|
155
|
-
className: "
|
|
147
|
+
}, /*#__PURE__*/React.createElement(_TableStyles.StyledTableCellContent, {
|
|
148
|
+
className: "".concat(column.shortenText ? "truncate-text" : '', " ").concat(column.justify || '')
|
|
156
149
|
}, renderCellBody(column, row)));
|
|
157
150
|
}));
|
|
158
|
-
}) : /*#__PURE__*/React.createElement(
|
|
159
|
-
className: "table-row",
|
|
151
|
+
}) : /*#__PURE__*/React.createElement(_TableStyles.StyledTableBodyRow, {
|
|
160
152
|
"data-testid": "TestTableNoDataRow"
|
|
161
|
-
}, /*#__PURE__*/React.createElement(
|
|
162
|
-
colSpan: props.columns.length + (props.multiSelect ? 1 : 0)
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
className: 'table-cell-content center'
|
|
153
|
+
}, /*#__PURE__*/React.createElement(_TableStyles.StyledTableCell, {
|
|
154
|
+
colSpan: props.columns.length + (props.multiSelect ? 1 : 0)
|
|
155
|
+
}, /*#__PURE__*/React.createElement(_TableStyles.StyledTableCellContent, {
|
|
156
|
+
className: 'center'
|
|
166
157
|
}, "There are no rows to display"))));
|
|
167
158
|
};
|
|
168
159
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Table/TableBody.tsx"],"names":["TableBody","props","renderCellBody","column","row","type","variant","href","additionalProps","colorFn","color","key","e","preventDefault","stopPropagation","action","iconColor","shape","useTransparentBackground","icon","size","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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/Table/TableBody.tsx"],"names":["TableBody","props","renderCellBody","column","row","type","variant","href","additionalProps","colorFn","color","key","e","preventDefault","stopPropagation","action","iconColor","shape","useTransparentBackground","icon","size","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, StyledTableCellText\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 {\n column.icon &&\n <StyledTableCellIcon>{column.icon}</StyledTableCellIcon>\n }\n <StyledTableCellText>{row[column.key]}</StyledTableCellText>\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\n 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"}
|
|
@@ -8,6 +8,8 @@ interface TableFooterProps extends TableProps {
|
|
|
8
8
|
total?: number;
|
|
9
9
|
nextPage: () => void;
|
|
10
10
|
prevPage: () => void;
|
|
11
|
+
setIsCollapsed: (isCollapsed: boolean) => void;
|
|
12
|
+
isCollapsed: boolean;
|
|
11
13
|
}
|
|
12
14
|
declare const TableFooter: React.FunctionComponent<TableFooterProps>;
|
|
13
15
|
export default TableFooter;
|
|
@@ -17,6 +17,10 @@ var _SystemIcons = require("../icons/systemicons/SystemIcons");
|
|
|
17
17
|
|
|
18
18
|
var _styles = require("../styles");
|
|
19
19
|
|
|
20
|
+
var _TableStyles = require("./TableStyles");
|
|
21
|
+
|
|
22
|
+
var _icons = require("../icons");
|
|
23
|
+
|
|
20
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
25
|
|
|
22
26
|
var TableFooter = function TableFooter(props) {
|
|
@@ -30,16 +34,21 @@ var TableFooter = function TableFooter(props) {
|
|
|
30
34
|
label: '100'
|
|
31
35
|
}];
|
|
32
36
|
var dropDownText = "Rows per page: ".concat(props.rowsPerPage);
|
|
33
|
-
return /*#__PURE__*/_react.default.createElement("
|
|
34
|
-
className: 'table-footer'
|
|
35
|
-
}, /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("td", {
|
|
37
|
+
return /*#__PURE__*/_react.default.createElement(_TableStyles.StyledTableFooter, null, /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("td", {
|
|
36
38
|
colSpan: props.columns.length + (props.multiSelect ? 1 : 0),
|
|
37
39
|
"data-testid": "TestTableFooterRow"
|
|
38
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
}, props.accordion && /*#__PURE__*/_react.default.createElement(_TableStyles.StyledTableFooterCollapseButton, {
|
|
41
|
+
onClick: function onClick() {
|
|
42
|
+
return props.setIsCollapsed(!props.isCollapsed);
|
|
43
|
+
},
|
|
44
|
+
onMouseDown: function onMouseDown(e) {
|
|
45
|
+
return e.preventDefault();
|
|
46
|
+
},
|
|
47
|
+
disabled: props.isCollapsed && props.rows.length <= props.rowsPerPage
|
|
48
|
+
}, props.isCollapsed && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", null, "Show more(", props.rows.length - props.rowsPerPage, ")"), /*#__PURE__*/_react.default.createElement(_icons.SystemIcons.ArrowDropDown, null)), !props.isCollapsed && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", null, "Show less"), /*#__PURE__*/_react.default.createElement(_icons.SystemIcons.ArrowDropUp, null))), !props.accordion && /*#__PURE__*/_react.default.createElement(_TableStyles.StyledTableFooterContent, null, /*#__PURE__*/_react.default.createElement(_Dropdown.DropdownFilter, {
|
|
41
49
|
id: "rows-per-page",
|
|
42
50
|
list: rowsPerPageValues,
|
|
51
|
+
margin: '0',
|
|
43
52
|
disableSorting: true,
|
|
44
53
|
onSelect: function onSelect(value) {
|
|
45
54
|
return props.onRowsPerPageChange(+value);
|
|
@@ -47,11 +56,7 @@ var TableFooter = function TableFooter(props) {
|
|
|
47
56
|
initalValue: dropDownText,
|
|
48
57
|
keepInitialValue: true,
|
|
49
58
|
isButton: true
|
|
50
|
-
}), /*#__PURE__*/_react.default.createElement("
|
|
51
|
-
className: "current-page-info"
|
|
52
|
-
}, props.total === 0 ? 0 : props.from, "-", props.to, " of ", props.total), /*#__PURE__*/_react.default.createElement("div", {
|
|
53
|
-
className: "controls"
|
|
54
|
-
}, /*#__PURE__*/_react.default.createElement(_Button.IconButton, {
|
|
59
|
+
}), /*#__PURE__*/_react.default.createElement(_TableStyles.StyledTableFooterCurrentInfo, null, props.total === 0 ? 0 : props.from, "-", props.to, " of ", props.total), /*#__PURE__*/_react.default.createElement(_TableStyles.StyledTableFooterControls, null, /*#__PURE__*/_react.default.createElement(_Button.IconButton, {
|
|
55
60
|
variant: "secondary",
|
|
56
61
|
shape: "circular",
|
|
57
62
|
action: function action() {
|
|
@@ -81,7 +86,9 @@ TableFooter.propTypes = {
|
|
|
81
86
|
to: _propTypes.default.number,
|
|
82
87
|
total: _propTypes.default.number,
|
|
83
88
|
nextPage: _propTypes.default.func.isRequired,
|
|
84
|
-
prevPage: _propTypes.default.func.isRequired
|
|
89
|
+
prevPage: _propTypes.default.func.isRequired,
|
|
90
|
+
setIsCollapsed: _propTypes.default.func.isRequired,
|
|
91
|
+
isCollapsed: _propTypes.default.bool.isRequired
|
|
85
92
|
};
|
|
86
93
|
var _default = TableFooter;
|
|
87
94
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Table/TableFooter.tsx"],"names":["TableFooter","props","rowsPerPageValues","label","dropDownText","rowsPerPage","columns","length","multiSelect","value","onRowsPerPageChange","total","from","to","prevPage","COLORS","neutral_600","nextPage"],"mappings":";;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/Table/TableFooter.tsx"],"names":["TableFooter","props","rowsPerPageValues","label","dropDownText","rowsPerPage","columns","length","multiSelect","accordion","setIsCollapsed","isCollapsed","e","preventDefault","rows","value","onRowsPerPageChange","total","from","to","prevPage","COLORS","neutral_600","nextPage"],"mappings":"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","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, StyledTableFooterCollapseButton,\n StyledTableFooterContent,\n StyledTableFooterControls,\n StyledTableFooterCurrentInfo\n} from './TableStyles';\nimport {SystemIcons} from '../icons';\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 setIsCollapsed: (isCollapsed: boolean) => void;\n isCollapsed: boolean;\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 {\n props.accordion &&\n <StyledTableFooterCollapseButton onClick={() => props.setIsCollapsed(!props.isCollapsed)}\n onMouseDown={e => e.preventDefault()}\n disabled={props.isCollapsed && props.rows.length <= props.rowsPerPage}>\n {\n props.isCollapsed &&\n <>\n <span>Show more({props.rows.length - props.rowsPerPage})</span>\n <SystemIcons.ArrowDropDown/>\n </>\n }\n {\n !props.isCollapsed &&\n <>\n <span>Show less</span>\n <SystemIcons.ArrowDropUp/>\n </>\n }\n </StyledTableFooterCollapseButton>\n }\n {\n !props.accordion &&\n <StyledTableFooterContent>\n <DropdownFilter\n id=\"rows-per-page\"\n list={rowsPerPageValues}\n margin={'0'}\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 }\n </td>\n </tr>\n </StyledTableFooter>\n );\n};\n\n\nexport default TableFooter;\n"],"file":"TableFooter.js"}
|
|
@@ -19,37 +19,29 @@ var _types = require("../types");
|
|
|
19
19
|
|
|
20
20
|
var _InputFields = require("../InputFields");
|
|
21
21
|
|
|
22
|
+
var _TableStyles = require("./TableStyles");
|
|
23
|
+
|
|
22
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
25
|
|
|
24
26
|
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); }
|
|
25
27
|
|
|
26
28
|
var TableHeader = function TableHeader(props) {
|
|
27
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
28
|
-
className: 'table-header'
|
|
29
|
-
}, !!props.title && /*#__PURE__*/_react.default.createElement("tr", {
|
|
30
|
-
className: 'table-header-title',
|
|
29
|
+
return /*#__PURE__*/_react.default.createElement(_TableStyles.StyledTableHeader, null, !!props.title && /*#__PURE__*/_react.default.createElement(_TableStyles.StyledTableHeaderTitle, {
|
|
31
30
|
"data-testid": "TestTableHeaderRow"
|
|
32
31
|
}, /*#__PURE__*/_react.default.createElement("th", {
|
|
33
32
|
colSpan: props.columns.length + (props.multiSelect ? 1 : 0)
|
|
34
|
-
}, /*#__PURE__*/_react.default.createElement("
|
|
35
|
-
className: 'title-content'
|
|
36
|
-
}, /*#__PURE__*/_react.default.createElement("span", null, props.title), props.menu && /*#__PURE__*/_react.default.createElement(_Dropdown.DropdownButton, _extends({
|
|
33
|
+
}, /*#__PURE__*/_react.default.createElement(_TableStyles.StyledTableHeaderTitleContent, null, /*#__PURE__*/_react.default.createElement("span", null, props.title), props.menu && /*#__PURE__*/_react.default.createElement(_Dropdown.DropdownButton, _extends({
|
|
37
34
|
className: 'title-menu',
|
|
38
35
|
icon: /*#__PURE__*/_react.default.createElement(_icons.SystemIcons.MoreVertical, null),
|
|
39
36
|
size: _types.Size.Medium
|
|
40
|
-
}, props.menu))))), /*#__PURE__*/_react.default.createElement(
|
|
41
|
-
className: 'table-header-columns',
|
|
37
|
+
}, props.menu))))), /*#__PURE__*/_react.default.createElement(_TableStyles.StyledTableHeaderColumns, {
|
|
42
38
|
"data-testid": "TestTableColumnHeaderRow"
|
|
43
|
-
}, props.multiSelect && /*#__PURE__*/_react.default.createElement(
|
|
44
|
-
className: 'table-header-column'
|
|
45
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
46
|
-
className: 'header-content'
|
|
47
|
-
}, /*#__PURE__*/_react.default.createElement(_InputFields.Checkbox, {
|
|
39
|
+
}, props.multiSelect && /*#__PURE__*/_react.default.createElement(_TableStyles.StyledTableHeaderColumn, null, /*#__PURE__*/_react.default.createElement(_TableStyles.StyledTableHeaderColumnContent, null, /*#__PURE__*/_react.default.createElement(_InputFields.Checkbox, {
|
|
48
40
|
selected: props.selectAllState === 'all',
|
|
49
41
|
semiSelected: props.selectAllState === 'some',
|
|
50
42
|
select: props.onSelectAllClick
|
|
51
43
|
}))), props.columns.map(function (column) {
|
|
52
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
44
|
+
return /*#__PURE__*/_react.default.createElement(_TableStyles.StyledTableHeaderColumn, {
|
|
53
45
|
key: column.key,
|
|
54
46
|
onMouseDown: function onMouseDown(e) {
|
|
55
47
|
return e.preventDefault();
|
|
@@ -66,10 +58,8 @@ var TableHeader = function TableHeader(props) {
|
|
|
66
58
|
width: column.width
|
|
67
59
|
},
|
|
68
60
|
tabIndex: column.sortable ? 0 : -1,
|
|
69
|
-
className: "
|
|
70
|
-
}, /*#__PURE__*/_react.default.createElement("
|
|
71
|
-
className: 'header-content'
|
|
72
|
-
}, /*#__PURE__*/_react.default.createElement("span", null, column.name), column.sortable && (column.sortingDirection === 'asc' ? /*#__PURE__*/_react.default.createElement(_SystemIcons.ArrowLineUp, {
|
|
61
|
+
className: "".concat(!!column.sortable ? 'sortable' : '', " ").concat(!!column.sortable && !!column.sortingDirection ? 'sorted' : '')
|
|
62
|
+
}, /*#__PURE__*/_react.default.createElement(_TableStyles.StyledTableHeaderColumnContent, null, /*#__PURE__*/_react.default.createElement("span", null, column.name), column.sortable && (column.sortingDirection === 'asc' ? /*#__PURE__*/_react.default.createElement(_SystemIcons.ArrowLineUp, {
|
|
73
63
|
size: '24px'
|
|
74
64
|
}) : /*#__PURE__*/_react.default.createElement(_SystemIcons.ArrowLineDown, {
|
|
75
65
|
size: '24px'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Table/TableHeaders.tsx"],"names":["TableHeader","props","title","columns","length","multiSelect","menu","Size","Medium","selectAllState","onSelectAllClick","map","column","key","e","preventDefault","sortByColumn","width","sortable","sortingDirection","name"],"mappings":";;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/Table/TableHeaders.tsx"],"names":["TableHeader","props","title","columns","length","multiSelect","menu","Size","Medium","selectAllState","onSelectAllClick","map","column","key","e","preventDefault","sortByColumn","width","sortable","sortingDirection","name"],"mappings":";;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAcA,IAAMA,WAAsD,GAAG,SAAzDA,WAAyD,CAAAC,KAAK,EAAI;AAEtE,sBACE,6BAAC,8BAAD,QAEI,CAAC,CAACA,KAAK,CAACC,KAAR,iBACA,6BAAC,mCAAD;AAAwB,mBAAY;AAApC,kBACE;AAAI,IAAA,OAAO,EAAED,KAAK,CAACE,OAAN,CAAcC,MAAd,IAAwBH,KAAK,CAACI,WAAN,GAAoB,CAApB,GAAwB,CAAhD;AAAb,kBACE,6BAAC,0CAAD,qBACE,2CAAOJ,KAAK,CAACC,KAAb,CADF,EAGID,KAAK,CAACK,IAAN,iBACA,6BAAC,wBAAD;AAAgB,IAAA,SAAS,EAAE,YAA3B;AACgB,IAAA,IAAI,eAAE,6BAAC,kBAAD,CAAa,YAAb,OADtB;AAEgB,IAAA,IAAI,EAAEC,YAAKC;AAF3B,KAEuCP,KAAK,CAACK,IAF7C,EAJJ,CADF,CADF,CAHJ,eAiBE,6BAAC,qCAAD;AAA0B,mBAAY;AAAtC,KAEIL,KAAK,CAACI,WAAN,iBACA,6BAAC,oCAAD,qBACE,6BAAC,2CAAD,qBACE,6BAAC,qBAAD;AAAU,IAAA,QAAQ,EAAEJ,KAAK,CAACQ,cAAN,KAAyB,KAA7C;AACU,IAAA,YAAY,EAAER,KAAK,CAACQ,cAAN,KAAyB,MADjD;AAEU,IAAA,MAAM,EAAER,KAAK,CAACS;AAFxB,IADF,CADF,CAHJ,EAWGT,KAAK,CAACE,OAAN,CAAcQ,GAAd,CAAkB,UAACC,MAAD;AAAA,wBACjB,6BAAC,oCAAD;AAAyB,MAAA,GAAG,EAAEA,MAAM,CAACC,GAArC;AACI,MAAA,WAAW,EAAE,qBAACC,CAAD;AAAA,eAAOA,CAAC,CAACC,cAAF,EAAP;AAAA,OADjB;AAEI,MAAA,OAAO,EAAE,iBAACD,CAAD;AAAA,eAAOb,KAAK,CAACe,YAAN,CAAmBJ,MAAnB,CAAP;AAAA,OAFb;AAGI,MAAA,UAAU,EAAE,oBAACE,CAAD,EAAO;AACjB,YAAIA,CAAC,CAACD,GAAF,KAAU,OAAd,EAAuB;AACrBZ,UAAAA,KAAK,CAACe,YAAN,CAAmBJ,MAAnB;AACD;AACF,OAPL;AAQI,MAAA,KAAK,EAAE;AAACK,QAAAA,KAAK,EAAEL,MAAM,CAACK;AAAf,OARX;AASI,MAAA,QAAQ,EAAEL,MAAM,CAACM,QAAP,GAAkB,CAAlB,GAAsB,CAAC,CATrC;AAUI,MAAA,SAAS,YAAK,CAAC,CAACN,MAAM,CAACM,QAAT,GAAoB,UAApB,GAAiC,EAAtC,cAA4C,CAAC,CAACN,MAAM,CAACM,QAAT,IAAqB,CAAC,CAACN,MAAM,CAACO,gBAA9B,GAAiD,QAAjD,GAA4D,EAAxG;AAVb,oBAWE,6BAAC,2CAAD,qBACI,2CACGP,MAAM,CAACQ,IADV,CADJ,EAKIR,MAAM,CAACM,QAAP,KAEEN,MAAM,CAACO,gBAAP,KAA4B,KAA5B,gBACI,6BAAC,wBAAD;AAAa,MAAA,IAAI,EAAE;AAAnB,MADJ,gBAEI,6BAAC,0BAAD;AAAe,MAAA,IAAI,EAAE;AAArB,MAJN,CALJ,CAXF,CADiB;AAAA,GAAlB,CAXH,CAjBF,CADF;AA4DD,CA9DD;;;AALEH,EAAAA,Y;AACAN,EAAAA,gB;AACAD,EAAAA,c,4BAAgB,K,EAAQ,M,EAAS,M;;eAmEpBT,W","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"}
|
|
@@ -2,3 +2,22 @@
|
|
|
2
2
|
* Table styles
|
|
3
3
|
*/
|
|
4
4
|
export declare const TableWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
5
|
+
export declare const StyledTable: import("styled-components").StyledComponent<"table", any, {}, never>;
|
|
6
|
+
export declare const StyledTableHeader: import("styled-components").StyledComponent<"thead", any, {}, never>;
|
|
7
|
+
export declare const StyledTableHeaderTitle: import("styled-components").StyledComponent<"tr", any, {}, never>;
|
|
8
|
+
export declare const StyledTableHeaderTitleContent: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
9
|
+
export declare const StyledTableHeaderColumns: import("styled-components").StyledComponent<"tr", any, {}, never>;
|
|
10
|
+
export declare const StyledTableHeaderColumnContent: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
11
|
+
export declare const StyledTableHeaderColumn: import("styled-components").StyledComponent<"th", any, {}, never>;
|
|
12
|
+
export declare const StyledTableBodyRow: import("styled-components").StyledComponent<"tr", any, {}, never>;
|
|
13
|
+
export declare const StyledTableBody: import("styled-components").StyledComponent<"tbody", any, {}, never>;
|
|
14
|
+
export declare const StyledTableCell: import("styled-components").StyledComponent<"td", any, {}, never>;
|
|
15
|
+
export declare const StyledTableCellContent: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
16
|
+
export declare const StyledTableCellIcon: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
17
|
+
export declare const StyledTableCellText: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
18
|
+
export declare const StyledTableFooter: import("styled-components").StyledComponent<"tfoot", any, {}, never>;
|
|
19
|
+
export declare const StyledTableFooterContent: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
20
|
+
export declare const StyledTableFooterCurrentInfo: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
21
|
+
export declare const StyledTableFooterControls: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
22
|
+
export declare const StyledTableSpinner: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
23
|
+
export declare const StyledTableFooterCollapseButton: import("styled-components").StyledComponent<"button", any, {}, never>;
|