diff options
| author | crupest <crupest@outlook.com> | 2020-09-03 23:09:03 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-03 23:09:03 +0800 |
| commit | 1966351eb2046b9edfb3f9ccb50cb8921f1a08dc (patch) | |
| tree | 792ee4899e7e00d518ea37d6ddd68555a83ac51e /Timeline/ClientApp/src/app/views/timeline-common/TimelinePropertyChangeDialog.tsx | |
| parent | 3e7e533016b04df4993df66842409cf5857983ee (diff) | |
| parent | 5a0adf596988efe8c3e49efcba7594f134a9cb0d (diff) | |
| download | timeline-1966351eb2046b9edfb3f9ccb50cb8921f1a08dc.tar.gz timeline-1966351eb2046b9edfb3f9ccb50cb8921f1a08dc.tar.bz2 timeline-1966351eb2046b9edfb3f9ccb50cb8921f1a08dc.zip | |
Merge pull request #159 from crupest/dev
Development on front end.
Diffstat (limited to 'Timeline/ClientApp/src/app/views/timeline-common/TimelinePropertyChangeDialog.tsx')
| -rw-r--r-- | Timeline/ClientApp/src/app/views/timeline-common/TimelinePropertyChangeDialog.tsx | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/Timeline/ClientApp/src/app/views/timeline-common/TimelinePropertyChangeDialog.tsx b/Timeline/ClientApp/src/app/views/timeline-common/TimelinePropertyChangeDialog.tsx new file mode 100644 index 00000000..87638f31 --- /dev/null +++ b/Timeline/ClientApp/src/app/views/timeline-common/TimelinePropertyChangeDialog.tsx @@ -0,0 +1,72 @@ +import React from "react"; + +import { + TimelineVisibility, + kTimelineVisibilities, + TimelineChangePropertyRequest, +} from "@/services/timeline"; + +import OperationDialog, { + OperationSelectInputInfoOption, +} from "../common/OperationDialog"; + +export interface TimelinePropertyInfo { + visibility: TimelineVisibility; + description: string; +} + +export interface TimelinePropertyChangeDialogProps { + open: boolean; + close: () => void; + oldInfo: TimelinePropertyInfo; + onProcess: (request: TimelineChangePropertyRequest) => Promise<void>; +} + +const labelMap: { [key in TimelineVisibility]: string } = { + Private: "timeline.visibility.private", + Public: "timeline.visibility.public", + Register: "timeline.visibility.register", +}; + +const TimelinePropertyChangeDialog: React.FC<TimelinePropertyChangeDialogProps> = ( + props +) => { + return ( + <OperationDialog + title={"timeline.dialogChangeProperty.title"} + titleColor="default" + inputScheme={[ + { + type: "select", + label: "timeline.dialogChangeProperty.visibility", + options: kTimelineVisibilities.map<OperationSelectInputInfoOption>( + (v) => ({ + label: labelMap[v], + value: v, + }) + ), + initValue: props.oldInfo.visibility, + }, + { + type: "text", + label: "timeline.dialogChangeProperty.description", + initValue: props.oldInfo.description, + }, + ]} + open={props.open} + close={props.close} + onProcess={([newVisibility, newDescription]) => { + const req: TimelineChangePropertyRequest = {}; + if (newVisibility !== props.oldInfo.visibility) { + req.visibility = newVisibility as TimelineVisibility; + } + if (newDescription !== props.oldInfo.description) { + req.description = newDescription as string; + } + return props.onProcess(req); + }} + /> + ); +}; + +export default TimelinePropertyChangeDialog; |
