import React, { useState, useEffect, useContext } from 'react'; import { useTranslation } from 'react-i18next'; import { v4 as uuidv4 } from 'uuid'; import set from 'lodash/set'; import TextField from '../../../shared/TextField'; import AppContext from '../../../context/AppContext'; import Checkbox from '../../../shared/Checkbox'; import Counter from '../../../shared/Counter'; import { addItem } from '../../../utils'; import ItemActions from '../../../shared/ItemActions'; import AddItemButton from '../../../shared/AddItemButton'; import ItemHeading from '../../../shared/ItemHeading'; const LanguagesTab = ({ data, onChange }) => { const { t } = useTranslation('app'); const context = useContext(AppContext); const { dispatch } = context; useEffect(() => { if (!('languages' in data)) { dispatch({ type: 'migrate_section', payload: { key: 'languages', value: { enable: false, heading: 'Languages', items: [], }, }, }); dispatch({ type: 'save_data' }); } }, [data, dispatch]); return ( 'languages' in data && ( <>
onChange('data.languages.enable', v)} />
onChange('data.languages.heading', v)} />

{data.languages.items.map((x, index) => ( ))} ) ); }; const Form = ({ item, onChange, identifier = '' }) => { const { t } = useTranslation('leftSidebar'); return (
onChange(`${identifier}key`, v)} /> item.value > 1 && onChange(`${identifier}value`, item.value - 1)} onIncrement={() => item.value < 5 && onChange(`${identifier}value`, item.value + 1)} />
); }; const AddItem = ({ heading, dispatch }) => { const [isOpen, setOpen] = useState(false); const [item, setItem] = useState({ id: uuidv4(), enable: true, key: '', value: 1, }); const onChange = (key, value) => setItem(items => set({ ...items }, key, value)); const onSubmit = () => { if (item.key === '') return; addItem(dispatch, 'languages', item); setItem({ id: uuidv4(), enable: true, key: '', value: 1, }); setOpen(false); }; return (
); }; const Item = ({ item, index, onChange, dispatch, first, last }) => { const [isOpen, setOpen] = useState(false); const identifier = `data.languages.items[${index}].`; return (
); }; export default LanguagesTab;