import React from "react"; import { TimelineVisibility, kTimelineVisibilities, TimelineChangePropertyRequest, TimelineInfo, } from "@/services/timeline"; import OperationDialog from "../common/OperationDialog"; export interface TimelinePropertyChangeDialogProps { open: boolean; close: () => void; timeline: TimelineInfo; onProcess: (request: TimelineChangePropertyRequest) => Promise; } const labelMap: { [key in TimelineVisibility]: string } = { Private: "timeline.visibility.private", Public: "timeline.visibility.public", Register: "timeline.visibility.register", }; const TimelinePropertyChangeDialog: React.FC = ( props ) => { const { timeline } = props; return ( ({ label: labelMap[v], value: v, })), initValue: timeline.visibility, }, { type: "text", label: "timeline.dialogChangeProperty.description", initValue: timeline.description, }, ]} open={props.open} close={props.close} onProcess={([newTitle, newVisibility, newDescription]) => { const req: TimelineChangePropertyRequest = {}; if (newTitle !== timeline.title) { req.title = newTitle; } if (newVisibility !== timeline.visibility) { req.visibility = newVisibility as TimelineVisibility; } if (newDescription !== timeline.description) { req.description = newDescription; } return props.onProcess(req); }} /> ); }; export default TimelinePropertyChangeDialog;