feat: add revert
This commit is contained in:
parent
3e5c2aa607
commit
74cb3209ef
@ -13,26 +13,29 @@ type Props = {
|
||||
payload: MetadataItemWithEdit
|
||||
onChange: (payload: MetadataItemWithEdit) => void
|
||||
onRemove: (id: string) => void
|
||||
onReset: (id: string) => void
|
||||
}
|
||||
|
||||
const EditMetadatabatchItem: FC<Props> = ({
|
||||
payload,
|
||||
onChange,
|
||||
onRemove,
|
||||
onReset,
|
||||
}) => {
|
||||
const isUpdated = payload.isUpdated
|
||||
const isDeleted = payload.updateType === UpdateType.delete
|
||||
return (
|
||||
<div className='flex h-6 items-center space-x-0.5'>
|
||||
{isUpdated ? <EditedBeacon onReset={() => { }} /> : <div className='shrink-0 size-4' />}
|
||||
{isUpdated ? <EditedBeacon onReset={() => onReset(payload.id)} /> : <div className='shrink-0 size-4' />}
|
||||
<Label text={payload.name} isDeleted={isDeleted} />
|
||||
{payload.isMultipleValue
|
||||
? <InputHasSetMultipleValue onClear={() => onChange({ ...payload, isMultipleValue: false })} />
|
||||
: <InputCombined
|
||||
type={payload.type}
|
||||
value={payload.value}
|
||||
onChange={v => onChange({ ...payload, value: v as string })
|
||||
} />}
|
||||
onChange={v => onChange({ ...payload, value: v as string })}
|
||||
readOnly={isDeleted}
|
||||
/>}
|
||||
|
||||
<div
|
||||
className={
|
||||
|
@ -11,6 +11,7 @@ type Props = {
|
||||
type: DataType
|
||||
value: any
|
||||
onChange: (value: any) => void
|
||||
readOnly?: boolean
|
||||
}
|
||||
|
||||
const InputCombined: FC<Props> = ({
|
||||
@ -18,6 +19,7 @@ const InputCombined: FC<Props> = ({
|
||||
type,
|
||||
value,
|
||||
onChange,
|
||||
readOnly,
|
||||
}) => {
|
||||
// TODO: configClassName...
|
||||
const className = cn('grow p-0.5 h-6 text-xs')
|
||||
@ -34,6 +36,7 @@ const InputCombined: FC<Props> = ({
|
||||
size='sm'
|
||||
controlWrapClassName='overflow-hidden'
|
||||
controlClassName='pt-0 pb-0'
|
||||
readOnly={readOnly}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
@ -44,8 +47,8 @@ const InputCombined: FC<Props> = ({
|
||||
className={cn(className, 'rounded-md')}
|
||||
value={value}
|
||||
onChange={e => onChange(e.target.value)}
|
||||
>
|
||||
</Input>
|
||||
readOnly={readOnly}
|
||||
/>
|
||||
)
|
||||
}
|
||||
export default React.memo(InputCombined)
|
||||
|
@ -56,6 +56,18 @@ const EditMetadataBatchModal: FC<Props> = ({
|
||||
setTempleList(newTempleList)
|
||||
}, [templeList])
|
||||
|
||||
const handleItemReset = useCallback((id: string) => {
|
||||
const newTempleList = produce(templeList, (draft) => {
|
||||
const index = draft.findIndex(i => i.id === id)
|
||||
if (index !== -1) {
|
||||
draft[index] = { ...list[index] }
|
||||
draft[index].isUpdated = false
|
||||
delete draft[index].updateType
|
||||
}
|
||||
})
|
||||
setTempleList(newTempleList)
|
||||
}, [list, templeList])
|
||||
|
||||
const testAddedList: MetadataItemWithEdit[] = [
|
||||
{
|
||||
id: '1', name: 'name1', type: DataType.string, value: 'aaa',
|
||||
@ -98,6 +110,7 @@ const EditMetadataBatchModal: FC<Props> = ({
|
||||
payload={item}
|
||||
onChange={handleTemplesChange}
|
||||
onRemove={handleTempleItemRemove}
|
||||
onReset={handleItemReset}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
|
Loading…
Reference in New Issue
Block a user