import { useI18n } from '@solid-primitives/i18n'; import { Box, TextField, Stack, Button, IconButton } from '@suid/material'; import { cloneDeep } from 'lodash'; import { Component, createSignal } from 'solid-js'; import { emptyWpt } from '../../db/wpt'; import { peekCachedSignal } from '../../workers/cached-signals'; import dispatch from '../../workers/dispatcher-main'; import EditIcon from '@suid/icons-material/Edit'; import Dialog from '../dialog'; enum Mode { CLOSED, EDIT, } interface Props { wptId?: string; } const WptEditor: Component = ({ wptId }) => { const [mode, setMode] = createSignal(Mode.CLOSED); const [editedWpt, setEditedWpt] = createSignal(); const [t, { add, locale, dict }] = useI18n(); const wpt = wptId !== undefined ? peekCachedSignal({ id: wptId, method: 'getWpt' }) : () => emptyWpt; const edit = () => { setMode(Mode.EDIT); setEditedWpt(cloneDeep(wpt())); console.log({ caller: 'WptEditor / edit', wptId, editedWpt: editedWpt(), }); }; const closeHandler = () => { setMode(Mode.CLOSED); }; const saveHandler = () => { console.log({ caller: 'WptEditor / saveHandler', wptId, editedWpt: editedWpt(), }); dispatch({ action: 'putWpt', params: { id: wptId, wpt: editedWpt() } }); setMode(Mode.CLOSED); }; const getTitle = () => { if (wpt()?.name) { return `${wpt()?.name} (${t('wpt')})`; } return t('wpt'); }; return ( <>
{ setEditedWpt({ ...editedWpt(), name: value }); }} /> { setEditedWpt({ ...editedWpt(), sym: value }); }} /> { const extensions = { ...editedWpt()?.extensions, 'dyo:minZoom': parseFloat(value), }; setEditedWpt({ ...editedWpt(), extensions }); }} /> { setEditedWpt({ ...editedWpt(), desc: event.target.value }); }} InputProps={{ inputComponent: 'textarea' }} />
); }; export default WptEditor;