diff --git a/src/components/furni-editor/FurniEditorView.tsx b/src/components/furni-editor/FurniEditorView.tsx index 65206ba..6133b9b 100644 --- a/src/components/furni-editor/FurniEditorView.tsx +++ b/src/components/furni-editor/FurniEditorView.tsx @@ -18,7 +18,8 @@ export const FurniEditorView: FC<{}> = () => items, total, page, loading, error, clearError, selectedItem, setSelectedItem, furniDataEntry, interactions, - searchItems, loadDetail, loadBySpriteId, updateItem, deleteItem, loadInteractions + searchItems, loadDetail, loadBySpriteId, updateItem, deleteItem, loadInteractions, + updateFurnidata, revertFurnidata } = useFurniEditor(); const isMod = useHasPermission('acc_catalogfurni'); @@ -155,6 +156,8 @@ export const FurniEditorView: FC<{}> = () => onUpdate={ updateItem } onDelete={ deleteItem } onBack={ handleBack } + onUpdateFurnidata={ updateFurnidata } + onRevertFurnidata={ revertFurnidata } /> } diff --git a/src/components/furni-editor/views/FurniEditorEditView.tsx b/src/components/furni-editor/views/FurniEditorEditView.tsx index 0d9fe2d..22c7e14 100644 --- a/src/components/furni-editor/views/FurniEditorEditView.tsx +++ b/src/components/furni-editor/views/FurniEditorEditView.tsx @@ -11,6 +11,8 @@ interface FurniEditorEditViewProps onUpdate: (id: number, fields: Record) => void; onDelete: (id: number) => void; onBack: () => void; + onUpdateFurnidata: (id: number, name: string, description: string) => void; + onRevertFurnidata: (id: number) => void; } const FIELD_TIPS: Record = { @@ -65,7 +67,7 @@ const Tip: FC<{ field: string }> = ({ field }) => export const FurniEditorEditView: FC = props => { - const { item, furniDataEntry, interactions, loading, onUpdate, onDelete, onBack } = props; + const { item, furniDataEntry, interactions, loading, onUpdate, onDelete, onBack, onUpdateFurnidata, onRevertFurnidata } = props; const saveRef = useRef<() => void>(null); const [ form, setForm ] = useState({ @@ -91,6 +93,9 @@ export const FurniEditorEditView: FC = props => }); const [ showDeleteDialog, setShowDeleteDialog ] = useState(false); + const [ furniName, setFurniName ] = useState(''); + const [ furniDescription, setFurniDescription ] = useState(''); + const [ confirmFurnidata, setConfirmFurnidata ] = useState(false); useEffect(() => { @@ -119,7 +124,10 @@ export const FurniEditorEditView: FC = props => }); setShowDeleteDialog(false); - }, [ item ]); + setFurniName(String(furniDataEntry?.name ?? '')); + setFurniDescription(String(furniDataEntry?.description ?? '')); + setConfirmFurnidata(false); + }, [ item, furniDataEntry ]); const setField = useCallback((key: string, value: unknown) => { @@ -209,6 +217,7 @@ export const FurniEditorEditView: FC = props => const inputClass = (field?: string) => `w-full px-2 py-1 text-xs leading-normal rounded-sm border border-[#ccc] min-h-[calc(1.5em+0.5rem+2px)] ${ field && validation[field] ? 'border-red-500 bg-red-50' : '' }`; const labelClass = 'text-[11px] font-bold text-[#333] mb-0 flex items-center gap-0.5'; + const readonlyClass = 'w-full px-2 py-1 text-sm font-mono rounded-sm border border-[#ddd] bg-[#f2f2eb] text-[#555] select-all'; return ( @@ -232,14 +241,12 @@ export const FurniEditorEditView: FC = props =>
- - setField('itemName', e.target.value) } /> - { validation.itemName && { validation.itemName } } + +
{ form.itemName }
- - setField('publicName', e.target.value) } /> - { validation.publicName && { validation.publicName } } + +
{ form.publicName }
@@ -320,18 +327,24 @@ export const FurniEditorEditView: FC = props =>
- { furniDataEntry && -
-
- { Object.entries(furniDataEntry).map(([ key, value ]) => ( -
- { key } - { String(value ?? '') } -
- )) } +
+ +
+ + setFurniName(e.target.value) } maxLength={ 256 } />
-
- } +
+ +