import React, {Fragment} from 'react'; import {Link} from 'react-router-dom'; import {DataTablePage} from '../../datatable/page/data-table-page'; import {IconButton} from '../../ui/buttons/icon-button'; import {FormattedDate} from '../../i18n/formatted-date'; import {ColumnConfig} from '../../datatable/column-config'; import {Trans} from '../../i18n/trans'; import {Localization} from '../../i18n/localization'; import {TranslateIcon} from '../../icons/material/Translate'; import {DialogTrigger} from '../../ui/overlays/dialog/dialog-trigger'; import {UpdateLocalizationDialog} from './update-localization-dialog'; import {Tooltip} from '../../ui/tooltip/tooltip'; import {CreateLocationDialog} from './create-localization-dialog'; import {DataTableEmptyStateMessage} from '../../datatable/page/data-table-emty-state-message'; import aroundTheWorldSvg from './around-the-world.svg'; import {DataTableAddItemButton} from '../../datatable/data-table-add-item-button'; import {DeleteSelectedItemsAction} from '../../datatable/page/delete-selected-items-action'; import { Menu, MenuItem, MenuTrigger, } from '@common/ui/navigation/menu/menu-trigger'; import {openDialog} from '@common/ui/overlays/store/dialog-store'; import {downloadFileFromUrl} from '@common/uploads/utils/download-file-from-url'; import {MoreVertIcon} from '@common/icons/material/MoreVert'; import {UploadInputType} from '@common/uploads/types/upload-input-config'; import {FileUploadProvider} from '@common/uploads/uploader/file-upload-provider'; import {useUploadTranslationFile} from '@common/admin/translations/use-upload-translation-file'; import {openUploadWindow} from '@common/uploads/utils/open-upload-window'; const columnConfig: ColumnConfig[] = [ { key: 'name', allowsSorting: true, sortingKey: 'name', visibleInMode: 'all', width: 'flex-3 min-w-200', header: () => , body: locale => locale.name, }, { key: 'language', allowsSorting: true, sortingKey: 'language', header: () => , body: locale => locale.language, }, { key: 'updatedAt', allowsSorting: true, width: 'w-100', header: () => , body: locale => , }, { key: 'actions', header: () => , hideHeader: true, align: 'end', width: 'w-84 flex-shrink-0', visibleInMode: 'all', body: locale => { return (
}>
); }, }, ]; export function LocalizationIndex() { return ( } columns={columnConfig} actions={} selectedActions={} emptyStateMessage={ } filteringTitle={} /> } /> ); } function Actions() { return ( ); } interface RowActionsMenuTriggerProps { locale: Localization; } function RowActionsMenuTrigger({locale}: RowActionsMenuTriggerProps) { const uploadFile = useUploadTranslationFile(); return ( openDialog(UpdateLocalizationDialog, {localization: locale}) } > downloadFileFromUrl(`api/v1/localizations/${locale.id}/download`) } > { const files = await openUploadWindow({ types: [UploadInputType.json], }); if (files.length == 1) { uploadFile.mutate({localeId: locale.id, file: files[0]}); } }} > ); }