import { ContentType } from '../Bookmarks'; import classes from './BookmarkTable.module.css'; import { connect } from 'react-redux'; import { pinCategory, deleteCategory } from '../../../store/actions'; import { KeyboardEvent } from 'react'; import Table from '../../UI/Table/Table'; import { Bookmark, Category } from '../../../interfaces'; import Icon from '../../UI/Icons/Icon/Icon'; interface ComponentProps { contentType: ContentType; categories: Category[]; pinCategory: (category: Category) => void; deleteCategory: (id: number) => void; updateCategoryHandler: (category: Category) => void; } const BookmarkTable = (props: ComponentProps): JSX.Element => { const deleteCategoryHandler = (category: Category): void => { const proceed = window.confirm(`Are you sure you want to delete ${category.name}? It will delete ALL assigned bookmarks`); if (proceed) { props.deleteCategory(category.id); } } const keyboardActionHandler = (e: KeyboardEvent, category: Category, handler: Function) => { if (e.key === 'Enter') { handler(category); } } if (props.contentType === ContentType.category) { return ( {props.categories.map((category: Category) => { return ( ) })}
{category.name}
deleteCategoryHandler(category)} onKeyDown={(e) => keyboardActionHandler(e, category, deleteCategoryHandler)} tabIndex={0}>
props.updateCategoryHandler(category)} // onKeyDown={(e) => keyboardActionHandler(e, app, props.updateAppHandler)} tabIndex={0}>
props.pinCategory(category)} onKeyDown={(e) => keyboardActionHandler(e, category, props.pinCategory)} tabIndex={0}> {category.isPinned ? : }
) } else { const bookmarks: {bookmark: Bookmark, categoryName: string}[] = []; props.categories.forEach((category: Category) => { category.bookmarks.forEach((bookmark: Bookmark) => { bookmarks.push({ bookmark, categoryName: category.name }); }) }) return ( {bookmarks.map((bookmark: {bookmark: Bookmark, categoryName: string}) => { return ( ) })}
{bookmark.bookmark.name} {bookmark.bookmark.url} {bookmark.categoryName}
deleteAppHandler(app)} // onKeyDown={(e) => keyboardActionHandler(e, app, deleteAppHandler)} tabIndex={0}>
props.updateAppHandler(app)} // onKeyDown={(e) => keyboardActionHandler(e, app, props.updateAppHandler)} tabIndex={0}>
) } } export default connect(null, { pinCategory, deleteCategory })(BookmarkTable);