import React, { FunctionComponent } from 'react'; import { styled } from '@mui/material'; import { keyframes } from '@mui/styled-engine'; import { useDialogContext, useDialogActions } from './dialogContext'; import { getPreferredLanguages } from './dialogContext/tools'; import { TranslationTextField } from './TranslationTextField'; const inputLoading = keyframes` 0% { background-position: 0%; } 100% { background-position: 100%; } `; const LoadingTextArea = styled('div')` margin-top: 10px; padding: 5px; border: 1px solid #ccc; width: 100%; border-radius: 5px; font-style: inherit; font-family: inherit; box-sizing: border-box; display: block; height: 42px; background: linear-gradient( 90deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0), rgba(0, 0, 0, 0) ); background-size: 500% 500%; animation: ${inputLoading} 1.5s linear infinite alternate; `; export const TranslationFields: FunctionComponent = () => { const { onInputChange, onStateChange } = useDialogActions(); const permissions = useDialogContext((c) => c.permissions); const selectedLanguages = useDialogContext((c) => c.selectedLanguages); const langFields = selectedLanguages.length ? selectedLanguages : getPreferredLanguages(); const availableLanguages = useDialogContext((c) => c.availableLanguages); const translationsForm = useDialogContext((c) => c.translationsForm); const formDisabled = useDialogContext((c) => c.formDisabled); const loading = useDialogContext((c) => c.loading); const keyData = useDialogContext((c) => c.keyData); const Loading = () => ( <> {langFields.map((lang) => ( ))} ); return ( <> {loading ? ( ) : ( selectedLanguages.map((key) => { const lang = availableLanguages?.find((l) => l.tag === key); const editPermitted = permissions.canEditTranslation(key); const stateChangePermitted = permissions.canEditState(key); const translation = keyData?.translations[key]; const formValue = translationsForm[key]; return ( onInputChange(key, value)} onStateChange={(value) => onStateChange(key, value)} state={formValue?.state} stateChangePermitted={stateChangePermitted} /> ); }) )} ); };