From d2cb17038b8537a609be06be2ed7013dbe27117e Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Mon, 8 Mar 2021 22:11:55 +0100 Subject: beginning the BIG refactor. moving editor stuff into per-episode hierarchy --- .../media/components/media.formGalleryImage.js | 129 +++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 animism-align/frontend/app/views/editor/media/components/media.formGalleryImage.js (limited to 'animism-align/frontend/app/views/editor/media/components/media.formGalleryImage.js') diff --git a/animism-align/frontend/app/views/editor/media/components/media.formGalleryImage.js b/animism-align/frontend/app/views/editor/media/components/media.formGalleryImage.js new file mode 100644 index 0000000..4d2b99c --- /dev/null +++ b/animism-align/frontend/app/views/editor/media/components/media.formGalleryImage.js @@ -0,0 +1,129 @@ +import React, { Component } from 'react' + +import { TextInput, LabelDescription, FileInputField, Select, TextArea, Checkbox, SubmitButton, Loader } from 'app/common' + +export default class GalleryImageForm extends Component { + state = { + loaded: false, + data: {}, + } + constructor(props){ + super(props) + this.handleChange = this.handleChange.bind(this) + this.handleSelect = this.handleSelect.bind(this) + this.handleSubmit = this.handleSubmit.bind(this) + this.handleSubmitAndEditNext = this.handleSubmitAndEditNext.bind(this) + this.handleCancel = this.handleCancel.bind(this) + } + componentDidMount() { + this.setState({ + loaded: true, + data: { ...this.props.initialData }, + }) + } + componentDidUpdate(prevProps) { + if (this.props.id !== prevProps.id) { + this.setState({ + data: { ...this.props.initialData }, + }) + } + } + handleChange(e) { + const { name, value } = e.target + this.handleSelect(name, value) + } + handleSelect(name, value) { + this.setState({ + data: { + ...this.state.data, + [name]: value, + } + }) + } + handleSubmit(e) { + e.preventDefault() + e.stopPropagation() + this.props.onSave(this.props.id, this.state.data) + } + handleSubmitAndEditNext(e) { + e.preventDefault() + e.stopPropagation() + this.props.onSave(this.props.id, this.state.data, true) + } + handleCancel(e) { + e.preventDefault() + e.stopPropagation() + this.props.onSave(null) + } + render() { + const { thumbnail } = this.props + const { loaded, data } = this.state + if (!loaded) return
+ return ( +
+
+
+ +
+
+ + + + + +