@laerdal/life-react-components 1.3.2-dev.8 → 1.4.1-dev.2

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 (41) hide show
  1. package/dist/Button/DualFunctionButton.js +4 -0
  2. package/dist/Button/DualFunctionButton.js.map +1 -1
  3. package/dist/Button/Iconbutton.d.ts +2 -2
  4. package/dist/Button/Iconbutton.js +0 -1
  5. package/dist/Button/Iconbutton.js.map +1 -1
  6. package/dist/Dropdown/DropdownButton.d.ts +1 -1
  7. package/dist/Dropdown/DropdownButton.js +3 -1
  8. package/dist/Dropdown/DropdownButton.js.map +1 -1
  9. package/dist/Dropdown/DropdownButtonTypes.d.ts +1 -0
  10. package/dist/Dropdown/DropdownContent.js +8 -8
  11. package/dist/Dropdown/DropdownContent.js.map +1 -1
  12. package/dist/Dropdown/DropdownFilter.d.ts +1 -1
  13. package/dist/Dropdown/DropdownFilter.js.map +1 -1
  14. package/dist/HyperLink/HyperLink.d.ts +1 -1
  15. package/dist/HyperLink/HyperLink.js +2 -2
  16. package/dist/HyperLink/HyperLink.js.map +1 -1
  17. package/dist/InputFields/Checkbox.d.ts +3 -2
  18. package/dist/InputFields/Checkbox.js +13 -11
  19. package/dist/InputFields/Checkbox.js.map +1 -1
  20. package/dist/Modals/ModalDialog.d.ts +2 -1
  21. package/dist/Modals/ModalDialog.js +7 -4
  22. package/dist/Modals/ModalDialog.js.map +1 -1
  23. package/dist/Modals/ModalNote.d.ts +1 -1
  24. package/dist/Modals/ModalNote.js +1 -1
  25. package/dist/Modals/ModalNote.js.map +1 -1
  26. package/dist/Table/Table.js +158 -231
  27. package/dist/Table/Table.js.map +1 -1
  28. package/dist/Table/TableBody.d.ts +9 -0
  29. package/dist/Table/TableBody.js +164 -0
  30. package/dist/Table/TableBody.js.map +1 -0
  31. package/dist/Table/TableFooter.d.ts +15 -0
  32. package/dist/Table/TableFooter.js +103 -0
  33. package/dist/Table/TableFooter.js.map +1 -0
  34. package/dist/Table/TableHeaders.d.ts +9 -0
  35. package/dist/Table/TableHeaders.js +83 -0
  36. package/dist/Table/TableHeaders.js.map +1 -0
  37. package/dist/Table/TableStyles.d.ts +19 -7
  38. package/dist/Table/TableStyles.js +22 -9
  39. package/dist/Table/TableStyles.js.map +1 -1
  40. package/dist/Table/TableTypes.d.ts +26 -16
  41. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Table/Table.tsx"],"names":["React","MoreVertical","ChevronRight","ChevronLeft","ArrowLineDown","ArrowLineUp","SystemIcons","icons","DropdownFilter","IconButton","Button","Size","COLORS","TableHeaderRowCol","TableColumnHeaderCol","TableContainer","TableDataCol","TableDataRow","TableFooterCol","TableWrapper","TableLoadingIndicator","LoadingIndicator","Table","rowClick","linkClick","iconClick","previousPageClick","nextPageClick","rowsPerPageChange","triggerSortingChange","title","columns","rows","remotePagination","pagination","showLoadingIndicator","useState","rowsPerPage","setRowsPerPage","filteredRows","setFilteredRows","currentPageRows","setCurrentPageRows","currentPage","setCurrentPage","sortedColumn","setSortedColumn","sortedDirection","setSortedDirection","from","setFrom","to","setTo","total","setTotal","useEffect","tmpFilteredRows","filterAndSortRows","length","rowsFrom","rowsTo","slice","filter","row","matchFilterCriteria","column","filterValue","key","toLowerCase","indexOf","some","sortingDirection","sortingColumn","find","sort","a","b","sortTableColumn","map","tmpColumn","sortable","undefined","previousPage","nextPage","changeRowsPerPage","value","parseInt","renderHeader","neutral_600","width","justify","name","onLinkClick","event","stopPropagation","onIconClick","onRowClick","selectedText","window","getSelection","toString","renderBody","index","colorFn","color","maxWidth","shortenText","isLink","Small","isIcon","icon","size","className","customContent","renderFooter","rowsPerPageValues","x","label","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 { MoreVertical, ChevronRight, ChevronLeft, ArrowLineDown, ArrowLineUp } from '../icons/systemicons/SystemIcons';\nimport { SystemIcons as icons } from '../icons/index';\nimport { DropdownFilter } from '../Dropdown/index';\nimport { IconButton, Button } from '../Button/index';\nimport { Size } from '../types'\n\n/**\n * Import custom styles.\n */\nimport { COLORS } from '../styles';\nimport { TableHeaderRowCol, TableColumnHeaderCol, TableContainer, TableDataCol, TableDataRow, TableFooterCol, TableWrapper, TableLoadingIndicator } from './TableStyles';\n\n/**\n * Import custom types.\n */\nimport { TableProps, TableColumn, TableSortingDirection } from './TableTypes';\nimport { LoadingIndicator } from '../LoadingIndicator';\n\nconst Table: React.FunctionComponent<TableProps> = ({\n rowClick,\n linkClick,\n iconClick,\n previousPageClick,\n nextPageClick,\n rowsPerPageChange,\n triggerSortingChange,\n title,\n columns,\n rows,\n remotePagination,\n pagination,\n showLoadingIndicator,\n}: TableProps) => {\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 /**\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 (!remotePagination) {\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, remotePagination]);\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 (remotePagination) {\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 }, [remotePagination, 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 (remotePagination && triggerSortingChange) {\n triggerSortingChange(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 (remotePagination && triggerSortingChange) {\n triggerSortingChange(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 (remotePagination && triggerSortingChange) {\n triggerSortingChange(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 (remotePagination) {\n // Let's inform parent component about page change\n if (previousPageClick) {\n previousPageClick();\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 (remotePagination) {\n // Let's inform parent component about page change\n if (nextPageClick) {\n nextPageClick();\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: string) => {\n // Let's check if we are using remote pagination\n if (remotePagination) {\n // Inform parent component about rows per page change\n if (rowsPerPageChange) {\n rowsPerPageChange(parseInt(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(parseInt(value));\n };\n\n /**\n * Renders the table header.\n */\n const renderHeader = () => {\n return (\n <thead>\n {title && (\n <tr data-testid=\"TestTableHeaderRow\">\n <TableHeaderRowCol colSpan={columns.length}>\n <div>\n {title}\n <MoreVertical size=\"18px\" color={COLORS.neutral_600} />\n </div>\n </TableHeaderRowCol>\n </tr>\n )}\n <tr data-testid=\"TestTableColumnHeaderRow\">\n {columns.map((column: TableColumn) => (\n <TableColumnHeaderCol\n onClick={() => sortTableColumn(column)}\n key={column.key}\n style={{ width: column.width }}\n className={`${column.sortable ? 'sortable' : ''} ${!title ? 'no-border' : ''} ${column.justify ? `justify-${column.justify}` : ''}`}>\n {column.name}\n\n {column.sortingDirection === 'asc' ? <ArrowLineUp size=\"20px\" /> : column.sortingDirection === 'desc' ? <ArrowLineDown size=\"20px\" /> : ''}\n </TableColumnHeaderCol>\n ))}\n </tr>\n </thead>\n );\n };\n\n /**\n * Function which is called when a mouse click happens on a link to pass data to the parent component.\n * @param row - Row in which the link is located.\n * @param key - Key of the column for which the link is set.\n * @param event - Click event handler.\n */\n const onLinkClick = (row: any, key: string, event: React.MouseEvent) => {\n if (linkClick) {\n event.stopPropagation();\n\n linkClick(row, key);\n }\n };\n\n /**\n * Function which is called when a mouse click happens on an icon to pass data to the parent component.\n * @param row - Row in which the icon is located.\n * @param key - Key of the column for which the icon is set.\n * @param event - Click event handler.\n */\n const onIconClick = (row: any, key: string, event: React.MouseEvent<HTMLButtonElement>) => {\n if (iconClick) {\n event.stopPropagation();\n\n iconClick(row, key);\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 // Let's trigger row click only if we haven't selected any text and action exists\n if (selectedText?.length === 0 && rowClick) {\n rowClick(row);\n }\n };\n\n /**\n * Renders the table body.\n */\n const renderBody = () => {\n return (\n <tbody>\n {currentPageRows.length > 0 ? (\n currentPageRows.map((row: any, index: number) => (\n <TableDataRow key={`row_${index}`} onClick={() => onRowClick(row)} data-testid=\"TestTableDataRow\">\n {columns.map((column: TableColumn) => (\n <TableDataCol\n key={`row_${index}_${column.key}`}\n style={column.colorFn ? { color: column.colorFn(row, column.key), maxWidth: column.width } : { maxWidth: column.width }}\n className={`${column.shortenText && `truncate-text`} ${column.justify ? `justify-${column.justify}` : ''} `}\n title={column.shortenText && row[column.key]}>\n {column.isLink && row[column.key] ? (\n <Button\n size={Size.Small}\n variant=\"tertiary\"\n onClick={(event) => onLinkClick(row, column.key, event)}\n style={column.colorFn && { color: column.colorFn(row, column.key) }}>\n {row[column.key]}\n </Button>\n ) : column.isIcon && column.icon ? (\n <IconButton variant=\"secondary\" shape=\"circular\" useTransparentBackground={true} action={(event) => onIconClick(row, column.key, event!)}>\n {icons[column.icon!]({ size: '24', className: 'icon' })}\n </IconButton>\n ) : column.customContent ? (\n column.customContent(row, column.key)\n ) : (\n row[column.key]\n )}\n </TableDataCol>\n ))}\n </TableDataRow>\n ))\n ) : (\n <TableDataRow className=\"no-rows\" data-testid=\"TestTableNoDataRow\">\n <TableDataCol colSpan={columns.length} className=\"center\">\n There are no rows to display\n </TableDataCol>\n </TableDataRow>\n )}\n </tbody>\n );\n };\n\n /**\n * Renders the table footer.\n */\n const renderFooter = () => {\n // Define local values used within the footer\n const rowsPerPageValues = ['10', '20', '50', '100'];\n\n return (\n <tfoot>\n <tr>\n <TableFooterCol colSpan={columns.length} data-testid=\"TestTableFooterRow\">\n <div>\n <span>Rows per page: </span>\n <DropdownFilter\n id=\"rows-per-page\"\n list={rowsPerPageValues.map(x => ({ label: x }))}\n disableSorting={true}\n onSelect={(value) => changeRowsPerPage(value)}\n initalValue={rowsPerPage.toString()}\n isButton={true}\n />\n <span className=\"current-page-info\">\n {total === 0 ? 0 : from}-{to} of {total}\n </span>\n <div className=\"controls\">\n <IconButton variant=\"secondary\" shape=\"circular\" action={() => previousPage()} disabled={from === 1}>\n <ChevronLeft size=\"24\" color={COLORS.neutral_600} />\n </IconButton>\n <IconButton variant=\"secondary\" shape=\"circular\" action={() => nextPage()} disabled={to === total}>\n <ChevronRight size=\"24\" color={COLORS.neutral_600} />\n </IconButton>\n </div>\n </div>\n </TableFooterCol>\n </tr>\n </tfoot>\n );\n };\n\n /**\n * Return Table component.\n */\n return (\n <TableWrapper>\n <TableContainer cellPadding=\"0\" cellSpacing=\"0\" data-testid=\"TestTable\">\n {renderHeader()}\n {renderBody()}\n {renderFooter()}\n </TableContainer>\n {showLoadingIndicator && (\n <TableLoadingIndicator>\n <LoadingIndicator size={Size.Medium} color=\"#ffffff\"></LoadingIndicator>\n </TableLoadingIndicator>\n )}\n </TableWrapper>\n );\n};\n\nexport default Table;\n"],"file":"Table.js"}
1
+ {"version":3,"sources":["../../src/Table/Table.tsx"],"names":["React","Size","StyledTable","StyledTableSpinner","TableWrapper","LoadingIndicator","TableHeader","TableFooter","TableBody","Table","props","onPreviousPageClick","onNextPageClick","onRowsPerPageChange","onTriggerSortingChange","columns","rows","remoteOperations","pagination","showLoadingIndicator","selectable","multiSelect","keyExpr","accordion","collapsed","collapsedRows","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","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"}
@@ -0,0 +1,9 @@
1
+ import { TableProps } from './TableTypes';
2
+ import * as React from 'react';
3
+ interface TableBodyProps extends TableProps {
4
+ currentPageRows: any[];
5
+ onRowClick?: (row: any) => void;
6
+ selected?: any | any[];
7
+ }
8
+ declare const TableBody: React.FC<TableBodyProps>;
9
+ export default TableBody;
@@ -0,0 +1,164 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _pt from "prop-types";
3
+
4
+ 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; }
5
+
6
+ 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; }
7
+
8
+ import { Button } from '../Button';
9
+ import { Size } from '../types';
10
+ import * as React from 'react';
11
+ import { Checkbox } from '../InputFields';
12
+ import IconButton from '../Button/Iconbutton';
13
+ import { HyperLink } from '../HyperLink';
14
+ import { StyledTableBody, StyledTableBodyRow, StyledTableCell, StyledTableCellContent, StyledTableCellIcon, StyledTableCellText } from './TableStyles';
15
+ import { jsx as _jsx } from "react/jsx-runtime";
16
+ import { Fragment as _Fragment } from "react/jsx-runtime";
17
+ import { jsxs as _jsxs } from "react/jsx-runtime";
18
+
19
+ var TableBody = function TableBody(props) {
20
+ var renderCellBody = function renderCellBody(column, row) {
21
+ switch (column.type) {
22
+ case 'link':
23
+ {
24
+ var _props = _objectSpread({
25
+ variant: 'default',
26
+ href: '#'
27
+ }, column.additionalProps);
28
+
29
+ return /*#__PURE__*/_jsx(HyperLink, _objectSpread(_objectSpread({
30
+ style: column.colorFn && {
31
+ color: column.colorFn(row, column.key)
32
+ }
33
+ }, _props), {}, {
34
+ onClick: function onClick(e) {
35
+ e.preventDefault();
36
+ e.stopPropagation();
37
+ column.action && column.action(row, e);
38
+ },
39
+ children: row[column.key]
40
+ }));
41
+ }
42
+
43
+ case 'icon':
44
+ {
45
+ var _props2 = _objectSpread({
46
+ iconColor: column.colorFn && column.colorFn(row, column.key),
47
+ variant: 'secondary',
48
+ shape: 'circular',
49
+ useTransparentBackground: true
50
+ }, column.additionalProps);
51
+
52
+ return /*#__PURE__*/_jsx(IconButton, _objectSpread(_objectSpread({}, _props2), {}, {
53
+ action: function action(e) {
54
+ e === null || e === void 0 ? void 0 : e.stopPropagation();
55
+ column.action && column.action(row, e);
56
+ },
57
+ children: column.icon
58
+ }));
59
+ }
60
+
61
+ case 'button':
62
+ {
63
+ var _props3 = _objectSpread({
64
+ variant: 'tertiary',
65
+ size: Size.Small
66
+ }, column.additionalProps);
67
+
68
+ return /*#__PURE__*/_jsx(Button, _objectSpread(_objectSpread({
69
+ style: column.colorFn && {
70
+ color: column.colorFn(row, column.key)
71
+ }
72
+ }, _props3), {}, {
73
+ onClick: function onClick(e) {
74
+ e === null || e === void 0 ? void 0 : e.stopPropagation();
75
+ column.action && column.action(row, e);
76
+ },
77
+ children: row[column.key]
78
+ }));
79
+ }
80
+
81
+ case 'boolean':
82
+ return /*#__PURE__*/_jsx(Checkbox, {
83
+ selected: !!row[column.key],
84
+ readonly: true
85
+ });
86
+
87
+ case 'custom':
88
+ return column.customContent && column.customContent(row, column.key);
89
+
90
+ case 'number':
91
+ case 'text':
92
+ default:
93
+ return /*#__PURE__*/_jsxs(_Fragment, {
94
+ children: [column.icon && /*#__PURE__*/_jsx(StyledTableCellIcon, {
95
+ children: column.icon
96
+ }), /*#__PURE__*/_jsx(StyledTableCellText, {
97
+ children: row[column.key]
98
+ })]
99
+ });
100
+ }
101
+ };
102
+
103
+ return /*#__PURE__*/_jsx(StyledTableBody, {
104
+ children: props.currentPageRows.length > 0 ? props.currentPageRows.map(function (row, index) {
105
+ var _props$selected;
106
+
107
+ return /*#__PURE__*/_jsxs(StyledTableBodyRow, {
108
+ className: props.selectable ? 'selectable' : '',
109
+ onClick: function onClick() {
110
+ return props.onRowClick && props.onRowClick(row);
111
+ },
112
+ onMouseDown: function onMouseDown(event) {
113
+ return event.preventDefault();
114
+ },
115
+ onKeyPress: function onKeyPress(e) {
116
+ if (e.key === 'Enter') {
117
+ props.onRowClick && props.onRowClick(row);
118
+ }
119
+ },
120
+ tabIndex: props.selectable ? 0 : undefined,
121
+ "data-testid": "TestTableDataRow",
122
+ children: [props.multiSelect && /*#__PURE__*/_jsx(StyledTableCell, {
123
+ children: /*#__PURE__*/_jsx(StyledTableCellContent, {
124
+ children: /*#__PURE__*/_jsx(Checkbox, {
125
+ selected: ((_props$selected = props.selected) === null || _props$selected === void 0 ? void 0 : _props$selected.indexOf(props.keyExpr ? row[props.keyExpr] : row)) > -1,
126
+ readonly: true
127
+ })
128
+ })
129
+ }), props.columns.map(function (column) {
130
+ return /*#__PURE__*/_jsx(StyledTableCell, {
131
+ style: column.colorFn ? {
132
+ color: column.colorFn(row, column.key),
133
+ maxWidth: column.width
134
+ } : {
135
+ maxWidth: column.width
136
+ },
137
+ title: column.shortenText && row[column.key],
138
+ children: /*#__PURE__*/_jsx(StyledTableCellContent, {
139
+ className: "".concat(column.shortenText ? "truncate-text" : '', " ").concat(column.justify || ''),
140
+ children: renderCellBody(column, row)
141
+ })
142
+ }, "row_".concat(index, "_").concat(column.key));
143
+ })]
144
+ }, "row_".concat(index));
145
+ }) : /*#__PURE__*/_jsx(StyledTableBodyRow, {
146
+ "data-testid": "TestTableNoDataRow",
147
+ children: /*#__PURE__*/_jsx(StyledTableCell, {
148
+ colSpan: props.columns.length + (props.multiSelect ? 1 : 0),
149
+ children: /*#__PURE__*/_jsx(StyledTableCellContent, {
150
+ className: 'center',
151
+ children: "There are no rows to display"
152
+ })
153
+ })
154
+ })
155
+ });
156
+ };
157
+
158
+ TableBody.propTypes = {
159
+ currentPageRows: _pt.arrayOf(_pt.any).isRequired,
160
+ onRowClick: _pt.func,
161
+ selected: _pt.any
162
+ };
163
+ export default TableBody;
164
+ //# 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","StyledTableCellText","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, 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"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { TableProps } from './TableTypes';
3
+ interface TableFooterProps extends TableProps {
4
+ onRowsPerPageChange: (value: number) => void;
5
+ rowsPerPage: number;
6
+ from?: number;
7
+ to?: number;
8
+ total?: number;
9
+ nextPage: () => void;
10
+ prevPage: () => void;
11
+ setIsCollapsed: (isCollapsed: boolean) => void;
12
+ isCollapsed: boolean;
13
+ }
14
+ declare const TableFooter: React.FunctionComponent<TableFooterProps>;
15
+ export default TableFooter;
@@ -0,0 +1,103 @@
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, StyledTableFooterCollapseButton, StyledTableFooterContent, StyledTableFooterControls, StyledTableFooterCurrentInfo } from './TableStyles';
8
+ import { SystemIcons } from '../icons';
9
+ import { jsxs as _jsxs } from "react/jsx-runtime";
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
+ import { Fragment as _Fragment } from "react/jsx-runtime";
12
+
13
+ var TableFooter = function TableFooter(props) {
14
+ var rowsPerPageValues = [{
15
+ label: '10'
16
+ }, {
17
+ label: '20'
18
+ }, {
19
+ label: '50'
20
+ }, {
21
+ label: '100'
22
+ }];
23
+ var dropDownText = "Rows per page: ".concat(props.rowsPerPage);
24
+ return /*#__PURE__*/_jsx(StyledTableFooter, {
25
+ children: /*#__PURE__*/_jsx("tr", {
26
+ children: /*#__PURE__*/_jsxs("td", {
27
+ colSpan: props.columns.length + (props.multiSelect ? 1 : 0),
28
+ "data-testid": "TestTableFooterRow",
29
+ children: [props.accordion && /*#__PURE__*/_jsxs(StyledTableFooterCollapseButton, {
30
+ onClick: function onClick() {
31
+ return props.setIsCollapsed(!props.isCollapsed);
32
+ },
33
+ onMouseDown: function onMouseDown(e) {
34
+ return e.preventDefault();
35
+ },
36
+ disabled: props.isCollapsed && props.rows.length <= props.rowsPerPage,
37
+ children: [props.isCollapsed && /*#__PURE__*/_jsxs(_Fragment, {
38
+ children: [/*#__PURE__*/_jsxs("span", {
39
+ children: ["Show more(", props.rows.length - props.rowsPerPage, ")"]
40
+ }), /*#__PURE__*/_jsx(SystemIcons.ArrowDropDown, {})]
41
+ }), !props.isCollapsed && /*#__PURE__*/_jsxs(_Fragment, {
42
+ children: [/*#__PURE__*/_jsx("span", {
43
+ children: "Show less"
44
+ }), /*#__PURE__*/_jsx(SystemIcons.ArrowDropUp, {})]
45
+ })]
46
+ }), !props.accordion && /*#__PURE__*/_jsxs(StyledTableFooterContent, {
47
+ children: [/*#__PURE__*/_jsx(DropdownFilter, {
48
+ id: "rows-per-page",
49
+ list: rowsPerPageValues,
50
+ margin: '0',
51
+ disableSorting: true,
52
+ onSelect: function onSelect(value) {
53
+ return props.onRowsPerPageChange(+value);
54
+ },
55
+ initalValue: dropDownText,
56
+ keepInitialValue: true,
57
+ isButton: true
58
+ }), /*#__PURE__*/_jsxs(StyledTableFooterCurrentInfo, {
59
+ children: [props.total === 0 ? 0 : props.from, "-", props.to, " of ", props.total]
60
+ }), /*#__PURE__*/_jsxs(StyledTableFooterControls, {
61
+ children: [/*#__PURE__*/_jsx(IconButton, {
62
+ variant: "secondary",
63
+ shape: "circular",
64
+ action: function action() {
65
+ return props.prevPage();
66
+ },
67
+ disabled: props.from === 1,
68
+ children: /*#__PURE__*/_jsx(ChevronLeft, {
69
+ size: "24",
70
+ color: COLORS.neutral_600
71
+ })
72
+ }), /*#__PURE__*/_jsx(IconButton, {
73
+ variant: "secondary",
74
+ shape: "circular",
75
+ action: function action() {
76
+ return props.nextPage();
77
+ },
78
+ disabled: props.to === props.total,
79
+ children: /*#__PURE__*/_jsx(ChevronRight, {
80
+ size: "24",
81
+ color: COLORS.neutral_600
82
+ })
83
+ })]
84
+ })]
85
+ })]
86
+ })
87
+ })
88
+ });
89
+ };
90
+
91
+ TableFooter.propTypes = {
92
+ onRowsPerPageChange: _pt.func.isRequired,
93
+ rowsPerPage: _pt.number.isRequired,
94
+ from: _pt.number,
95
+ to: _pt.number,
96
+ total: _pt.number,
97
+ nextPage: _pt.func.isRequired,
98
+ prevPage: _pt.func.isRequired,
99
+ setIsCollapsed: _pt.func.isRequired,
100
+ isCollapsed: _pt.bool.isRequired
101
+ };
102
+ export default TableFooter;
103
+ //# sourceMappingURL=TableFooter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Table/TableFooter.tsx"],"names":["React","DropdownFilter","IconButton","ChevronLeft","ChevronRight","COLORS","StyledTableFooter","StyledTableFooterCollapseButton","StyledTableFooterContent","StyledTableFooterControls","StyledTableFooterCurrentInfo","SystemIcons","TableFooter","props","rowsPerPageValues","label","dropDownText","rowsPerPage","columns","length","multiSelect","accordion","setIsCollapsed","isCollapsed","e","preventDefault","rows","value","onRowsPerPageChange","total","from","to","prevPage","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"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { TableColumn, TableProps } from './TableTypes';
3
+ interface TableHeaderProps extends TableProps {
4
+ sortByColumn: (column: TableColumn) => void;
5
+ onSelectAllClick: () => void;
6
+ selectAllState: 'all' | 'some' | 'none';
7
+ }
8
+ declare const TableHeader: React.FunctionComponent<TableHeaderProps>;
9
+ export default TableHeader;
@@ -0,0 +1,83 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _pt from "prop-types";
3
+
4
+ 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; }
5
+
6
+ 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; }
7
+
8
+ import React from 'react';
9
+ import { ArrowLineDown, ArrowLineUp } from '../icons/systemicons/SystemIcons';
10
+ import { DropdownButton } from '../Dropdown';
11
+ import { SystemIcons } from '../icons';
12
+ import { Size } from '../types';
13
+ import { Checkbox } from '../InputFields';
14
+ import { StyledTableHeader, StyledTableHeaderColumn, StyledTableHeaderColumnContent, StyledTableHeaderColumns, StyledTableHeaderTitle, StyledTableHeaderTitleContent } from './TableStyles';
15
+ import { jsx as _jsx } from "react/jsx-runtime";
16
+ import { jsxs as _jsxs } from "react/jsx-runtime";
17
+
18
+ var TableHeader = function TableHeader(props) {
19
+ return /*#__PURE__*/_jsxs(StyledTableHeader, {
20
+ children: [!!props.title && /*#__PURE__*/_jsx(StyledTableHeaderTitle, {
21
+ "data-testid": "TestTableHeaderRow",
22
+ children: /*#__PURE__*/_jsx("th", {
23
+ colSpan: props.columns.length + (props.multiSelect ? 1 : 0),
24
+ children: /*#__PURE__*/_jsxs(StyledTableHeaderTitleContent, {
25
+ children: [/*#__PURE__*/_jsx("span", {
26
+ children: props.title
27
+ }), props.menu && /*#__PURE__*/_jsx(DropdownButton, _objectSpread({
28
+ className: 'title-menu',
29
+ icon: /*#__PURE__*/_jsx(SystemIcons.MoreVertical, {}),
30
+ size: Size.Medium
31
+ }, props.menu))]
32
+ })
33
+ })
34
+ }), /*#__PURE__*/_jsxs(StyledTableHeaderColumns, {
35
+ "data-testid": "TestTableColumnHeaderRow",
36
+ children: [props.multiSelect && /*#__PURE__*/_jsx(StyledTableHeaderColumn, {
37
+ children: /*#__PURE__*/_jsx(StyledTableHeaderColumnContent, {
38
+ children: /*#__PURE__*/_jsx(Checkbox, {
39
+ selected: props.selectAllState === 'all',
40
+ semiSelected: props.selectAllState === 'some',
41
+ select: props.onSelectAllClick
42
+ })
43
+ })
44
+ }), props.columns.map(function (column) {
45
+ return /*#__PURE__*/_jsx(StyledTableHeaderColumn, {
46
+ onMouseDown: function onMouseDown(e) {
47
+ return e.preventDefault();
48
+ },
49
+ onClick: function onClick(e) {
50
+ return props.sortByColumn(column);
51
+ },
52
+ onKeyPress: function onKeyPress(e) {
53
+ if (e.key === 'Enter') {
54
+ props.sortByColumn(column);
55
+ }
56
+ },
57
+ style: {
58
+ width: column.width
59
+ },
60
+ tabIndex: column.sortable ? 0 : -1,
61
+ className: "".concat(!!column.sortable ? 'sortable' : '', " ").concat(!!column.sortable && !!column.sortingDirection ? 'sorted' : ''),
62
+ children: /*#__PURE__*/_jsxs(StyledTableHeaderColumnContent, {
63
+ children: [/*#__PURE__*/_jsx("span", {
64
+ children: column.name
65
+ }), column.sortable && (column.sortingDirection === 'asc' ? /*#__PURE__*/_jsx(ArrowLineUp, {
66
+ size: '24px'
67
+ }) : /*#__PURE__*/_jsx(ArrowLineDown, {
68
+ size: '24px'
69
+ }))]
70
+ })
71
+ }, column.key);
72
+ })]
73
+ })]
74
+ });
75
+ };
76
+
77
+ TableHeader.propTypes = {
78
+ sortByColumn: _pt.func.isRequired,
79
+ onSelectAllClick: _pt.func.isRequired,
80
+ selectAllState: _pt.oneOf(['all', 'some', 'none']).isRequired
81
+ };
82
+ export default TableHeader;
83
+ //# 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","e","preventDefault","sortByColumn","key","width","sortable","sortingDirection","name"],"mappings":";;;;;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAAQC,aAAR,EAAuBC,WAAvB,QAAyC,kCAAzC;AACA,SAAQC,cAAR,QAA6B,aAA7B;AACA,SAAQC,WAAR,QAA0B,UAA1B;AACA,SAAQC,IAAR,QAAmB,UAAnB;AACA,SAAQC,QAAR,QAAuB,gBAAvB;AACA,SACEC,iBADF,EACqBC,uBADrB,EAC8CC,8BAD9C,EAEEC,wBAFF,EAGEC,sBAHF,EAIEC,6BAJF,QAKO,eALP;;;;AAcA,IAAMC,WAAsD,GAAG,SAAzDA,WAAyD,CAAAC,KAAK,EAAI;AAEtE,sBACE,MAAC,iBAAD;AAAA,eAEI,CAAC,CAACA,KAAK,CAACC,KAAR,iBACA,KAAC,sBAAD;AAAwB,qBAAY,oBAApC;AAAA,6BACE;AAAI,QAAA,OAAO,EAAED,KAAK,CAACE,OAAN,CAAcC,MAAd,IAAwBH,KAAK,CAACI,WAAN,GAAoB,CAApB,GAAwB,CAAhD,CAAb;AAAA,+BACE,MAAC,6BAAD;AAAA,kCACE;AAAA,sBAAOJ,KAAK,CAACC;AAAb,YADF,EAGID,KAAK,CAACK,IAAN,iBACA,KAAC,cAAD;AAAgB,YAAA,SAAS,EAAE,YAA3B;AACgB,YAAA,IAAI,eAAE,KAAC,WAAD,CAAa,YAAb,KADtB;AAEgB,YAAA,IAAI,EAAEd,IAAI,CAACe;AAF3B,aAEuCN,KAAK,CAACK,IAF7C,EAJJ;AAAA;AADF;AADF,MAHJ,eAiBE,MAAC,wBAAD;AAA0B,qBAAY,0BAAtC;AAAA,iBAEIL,KAAK,CAACI,WAAN,iBACA,KAAC,uBAAD;AAAA,+BACE,KAAC,8BAAD;AAAA,iCACE,KAAC,QAAD;AAAU,YAAA,QAAQ,EAAEJ,KAAK,CAACO,cAAN,KAAyB,KAA7C;AACU,YAAA,YAAY,EAAEP,KAAK,CAACO,cAAN,KAAyB,MADjD;AAEU,YAAA,MAAM,EAAEP,KAAK,CAACQ;AAFxB;AADF;AADF,QAHJ,EAWGR,KAAK,CAACE,OAAN,CAAcO,GAAd,CAAkB,UAACC,MAAD;AAAA,4BACjB,KAAC,uBAAD;AACI,UAAA,WAAW,EAAE,qBAACC,CAAD;AAAA,mBAAOA,CAAC,CAACC,cAAF,EAAP;AAAA,WADjB;AAEI,UAAA,OAAO,EAAE,iBAACD,CAAD;AAAA,mBAAOX,KAAK,CAACa,YAAN,CAAmBH,MAAnB,CAAP;AAAA,WAFb;AAGI,UAAA,UAAU,EAAE,oBAACC,CAAD,EAAO;AACjB,gBAAIA,CAAC,CAACG,GAAF,KAAU,OAAd,EAAuB;AACrBd,cAAAA,KAAK,CAACa,YAAN,CAAmBH,MAAnB;AACD;AACF,WAPL;AAQI,UAAA,KAAK,EAAE;AAACK,YAAAA,KAAK,EAAEL,MAAM,CAACK;AAAf,WARX;AASI,UAAA,QAAQ,EAAEL,MAAM,CAACM,QAAP,GAAkB,CAAlB,GAAsB,CAAC,CATrC;AAUI,UAAA,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,CAVb;AAAA,iCAWE,MAAC,8BAAD;AAAA,oCACI;AAAA,wBACGP,MAAM,CAACQ;AADV,cADJ,EAKIR,MAAM,CAACM,QAAP,KAEEN,MAAM,CAACO,gBAAP,KAA4B,KAA5B,gBACI,KAAC,WAAD;AAAa,cAAA,IAAI,EAAE;AAAnB,cADJ,gBAEI,KAAC,aAAD;AAAe,cAAA,IAAI,EAAE;AAArB,cAJN,CALJ;AAAA;AAXF,WAA8BP,MAAM,CAACI,GAArC,CADiB;AAAA,OAAlB,CAXH;AAAA,MAjBF;AAAA,IADF;AA4DD,CA9DD;;;AALED,EAAAA,Y;AACAL,EAAAA,gB;AACAD,EAAAA,c,aAAgB,K,EAAQ,M,EAAS,M;;AAmEnC,eAAeR,WAAf","sourcesContent":["import React from 'react';\nimport {TableColumn, TableProps} from './TableTypes';\nimport {ArrowLineDown, ArrowLineUp} from '../icons/systemicons/SystemIcons';\nimport {DropdownButton} from '../Dropdown';\nimport {SystemIcons} from '../icons';\nimport {Size} from '../types';\nimport {Checkbox} from '../InputFields';\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,10 +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 TableLoadingIndicator: import("styled-components").StyledComponent<"div", any, {}, never>;
6
- export declare const TableContainer: import("styled-components").StyledComponent<"table", any, {}, never>;
7
- export declare const TableHeaderRowCol: import("styled-components").StyledComponent<"th", any, {}, never>;
8
- export declare const TableColumnHeaderCol: import("styled-components").StyledComponent<"th", any, {}, never>;
9
- export declare const TableDataRow: import("styled-components").StyledComponent<"tr", any, {}, never>;
10
- export declare const TableDataCol: import("styled-components").StyledComponent<"td", any, {}, never>;
11
- export declare const TableFooterCol: import("styled-components").StyledComponent<"td", 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>;