\n \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 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 \n {\n currentPageRows.length > 0 ?\n currentPageRows.map((row: any, index: number) => (\n onRowClick(row)} data-testid=\"TestTableDataRow\">\n {\n columns.map((column: TableColumn) => (\n \n {\n column.isLink && row[column.key]\n ? \n : row[column.key]\n }\n \n ))\n }\n \n ))\n :\n \n \n There are no rows to display\n \n \n }\n \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 \n
\n \n
\n Rows per page: \n changeRowsPerPage(value)} initalValue=\"10\" isButton={true} />\n { from }-{ to } of { total }\n