import { useStates, useApi, Page, Button, Block } from "@cap-rel/smartcommon"; import { FormComponentsMap } from "@cap-rel/smartcommon"; export const ItemEditPage = ({ itemId }) => { const { states, set } = useStates({ item: null, config: {}, isLoading: true, isSaving: false, }); const { item, config, isLoading, isSaving } = states; const api = useApi(); // Charger l'item et sa configuration useEffect(() => { api.private.get(`items/${itemId}`) .then(response => { set("item", response.item); set("config", response.config); }) .finally(() => set("isLoading", false)); }, [itemId]); // Modifier une valeur const handleFieldChange = (fieldName, value) => { set("item", { ...item, [fieldName]: value }); }; // Sauvegarder const handleSave = () => { set("isSaving", true); api.private.put(`items/${itemId}`, item) .then(() => { // Succès }) .finally(() => set("isSaving", false)); }; if (isLoading) return
Chargement...
; return ( {/* Champs standards */} {/* Extrafields dynamiques */} {Object.entries(config).map(([fieldName, fieldConfig]) => { // Ne montrer que les extrafields (commencent par options_) if (!fieldName.startsWith('options_')) return null; const Component = FormComponentsMap(fieldConfig.type); if (!Component) return null; return ( handleFieldChange(fieldName, val)} disabled={!fieldConfig.writable} required={fieldConfig.required} options={fieldConfig.options} /> ); })} ); };