import { Link as RouterLink } from 'react-router-dom'; import Box from '@mui/material/Box'; import Link from '@mui/material/Link'; import TextField from '@mui/material/TextField'; import Typography from '@mui/material/Typography'; import { article } from '../../api'; import { EditablePanelTile, PanelTile, PanelTileGrid } from '../panels'; import { requireObject } from '../../utils/apiShape'; import { formatPrice } from '../../utils/price'; import { formatStock } from '../../pages/artikel/searchFormat'; function PanelValue({ label, children }) { if (children == null || children === '') return null; return ( {label ? ( {label} ) : null} {children} ); } function ArticlePhoto() { return ( ); } const headerTileSx = { p: 1.25, minHeight: 0, }; function CountLine({ label, count }) { if (count == null) return null; return ( {label}: {count} ); } function RelationLine({ label, active, children }) { return ( {label}:{' '} {active ? ( children ?? 'ja' ) : ( nein )} ); } function articleBrutto(article) { if (article.net == null || article.taxRate == null) return null; return article.net * (1 + article.taxRate / 100); } function nameDraftDirty(draft, saved) { return draft.name.trim() !== String(saved.name ?? '').trim(); } function nameDraftValid(draft) { return draft.name.trim().length > 0; } export default function ArticleView({ article: articleData, onArticleUpdated }) { const brutto = articleBrutto(articleData); const handleSaveName = async (draft) => { const name = draft.name.trim(); const res = await article.update(articleData.sku, { name }); requireObject(res, 'PATCH /api/article/:sku'); requireObject(res.article, 'article'); onArticleUpdated?.(res.article); }; return ( ( {name} )} renderEdit={(draft, onChange, inputRef) => ( onChange({ name: event.target.value })} sx={{ '& .MuiInput-input': { fontSize: '1.25rem', fontWeight: 700, lineHeight: 1.25, }, }} /> )} /> {articleData.stock != null ? formatStock(articleData.stock) : null} {articleData.brand} {articleData.sku} {articleData.ean} {articleData.net != null ? formatPrice(articleData.net) : null} {articleData.taxRate != null ? `${articleData.taxRate} %` : null} {brutto != null ? formatPrice(brutto) : null} {articleData.slug} {articleData.seoTitle} {articleData.seoDescription} {articleData.description} 0} > {articleData.childCount} {articleData.fatherSku ? ( {articleData.fatherSku} ) : null} ); }