import React, { useState } from 'react'; import { Button, Dialog, DialogActions, Divider, Typography, Box, TextField, IconButton } from "@material-ui/core"; import { ExternalLinksEditor } from './ExternalLinksEditor'; import UndoIcon from '@material-ui/icons/Undo'; import { ResourceType } from '../../api/api'; let _ = require('lodash') export enum EditablePropertyType { Text = 0, } export interface EditableProperty { metadataKey: string, title: string, type: EditablePropertyType } function EditTextProperty(props: { title: string, originalValue: string, currentValue: string, onChange: (v: string) => void }) { return { props.onChange((e.target.value == "") ? props.originalValue : e.target.value) }} fullWidth={true} /> {props.currentValue != props.originalValue && { props.onChange(props.originalValue) }} >} } function PropertyEditor(props: { originalMetadata: any, currentMetadata: any, onChange: (metadata: any) => void, editableProperties: EditableProperty[] }) { return {props.editableProperties.map( (p: EditableProperty) => { if (p.type == EditablePropertyType.Text) { return props.onChange({ ...props.currentMetadata, [p.metadataKey]: v })} /> } return undefined; } )} } export default function EditItemDialog(props: { open: boolean, onClose: () => void, onSubmit: (v: any) => void, id: number, metadata: any, defaultExternalLinksQuery: string, editableProperties: EditableProperty[], resourceType: ResourceType, editStoreLinks: boolean, }) { let [editingMetadata, setEditingMetadata] = useState(props.metadata); return Properties {props.editStoreLinks && <> External Links setEditingMetadata(v)} defaultQuery={props.defaultExternalLinksQuery} resourceType={props.resourceType} />} {!_.isEqual(editingMetadata, props.metadata) && } }