import React, { useState, useEffect, Dispatch, SetStateAction } from 'react' import { useTranslation } from 'react-i18next' import { Grid } from 'aws-northstar/layouts' import type { FlashbarMessage } from 'aws-northstar/components/Flashbar' import { Button, Modal, Table, Text } from 'aws-northstar/components' import { Cancel, Delete } from '@material-ui/icons' import RepositoryFactory from '../repositories/RepositoryFactory' import type { Vocabulary } from '../repositories/VocabulariesRepository' type VocabularyListProps = { handleNotification: (message: FlashbarMessage) => void handleIsLoading: Dispatch> } const VocabularyList: React.FC = ({ handleNotification, handleIsLoading }: VocabularyListProps) => { const { t: transCommon } = useTranslation('common') const { t: transVocabularies } = useTranslation('vocabularies') const [isModalOpen, setIsModalOpen] = useState(false) const [items, setItems] = useState([]) const [selectedItems, setSelectedItems] = useState([]) const [isTableLoading, setIsTableLoading] = useState(false) const vocabularies = RepositoryFactory.get('vocabularies') const getVocabularies = async () => { setIsTableLoading(true) const response = await vocabularies.get() setItems(response.data) setIsTableLoading(false) } useEffect(() => { getVocabularies() }, []) const handleSelectionChange = (vocabulary: Vocabulary[]) => { setSelectedItems(vocabulary) } const handleClickRemoveButton = async () => { handleIsLoading(true) await vocabularies.remove(selectedItems) await getVocabularies() setIsModalOpen(false) handleIsLoading(false) handleNotification({ header: transVocabularies('removeRequestSucceeded'), content: transVocabularies('removeRequestSucceededDescription'), type: 'success', dismissible: true }) } const columnDefinitions = [ { id: 'phrase', Header: transVocabularies('phrase'), accessor: 'phrase', minWidth: 350 }, { id: 'display', Header: transVocabularies('display'), accessor: 'display', minWidth: 350 } ] return ( setIsModalOpen(false)} > {transVocabularies('removeConfirm')}
) } export default VocabularyList