diff options
author | crupest <crupest@outlook.com> | 2020-06-11 17:27:15 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-06-11 17:27:15 +0800 |
commit | cf6cfe87b46a2a3eb2913209092ab4c5639e75c3 (patch) | |
tree | eba7504d04dad89f67524b48d88a3b5eb27de6de /Timeline/ClientApp/src/app/timeline/TimelinePropertyChangeDialog.tsx | |
parent | 4b8abdd1921935ebb29d18961534db04a2e58fbb (diff) | |
download | timeline-cf6cfe87b46a2a3eb2913209092ab4c5639e75c3.tar.gz timeline-cf6cfe87b46a2a3eb2913209092ab4c5639e75c3.tar.bz2 timeline-cf6cfe87b46a2a3eb2913209092ab4c5639e75c3.zip |
feat(front): Service worker is coming!
Diffstat (limited to 'Timeline/ClientApp/src/app/timeline/TimelinePropertyChangeDialog.tsx')
-rw-r--r-- | Timeline/ClientApp/src/app/timeline/TimelinePropertyChangeDialog.tsx | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/Timeline/ClientApp/src/app/timeline/TimelinePropertyChangeDialog.tsx b/Timeline/ClientApp/src/app/timeline/TimelinePropertyChangeDialog.tsx new file mode 100644 index 00000000..ca1be31c --- /dev/null +++ b/Timeline/ClientApp/src/app/timeline/TimelinePropertyChangeDialog.tsx @@ -0,0 +1,70 @@ +import React from 'react'; + +import { + TimelineVisibility, + kTimelineVisibilities, + PersonalTimelineChangePropertyRequest +} from '../data/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: PersonalTimelineChangePropertyRequest) => 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: PersonalTimelineChangePropertyRequest = {}; + 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; |