diff options
Diffstat (limited to 'animism-align/frontend/views/media/components/media.form.js')
| -rw-r--r-- | animism-align/frontend/views/media/components/media.form.js | 55 |
1 files changed, 50 insertions, 5 deletions
diff --git a/animism-align/frontend/views/media/components/media.form.js b/animism-align/frontend/views/media/components/media.form.js index 9b93788..1463041 100644 --- a/animism-align/frontend/views/media/components/media.form.js +++ b/animism-align/frontend/views/media/components/media.form.js @@ -16,6 +16,7 @@ const newMedia = () => ({ title: '', author: '', pre_title: '', + post_title: '', translated_title: '', date: '', source: '', @@ -38,9 +39,11 @@ export default class MediaForm extends Component { constructor(props) { super(props) + this.handleKeyDown = this.handleKeyDown.bind(this) this.handleSelect = this.handleSelect.bind(this) this.handleChange = this.handleChange.bind(this) this.handleSettingsChange = this.handleSettingsChange.bind(this) + this.handleSettingsChangeEvent = this.handleSettingsChangeEvent.bind(this) this.handleSubmit = this.handleSubmit.bind(this) } @@ -57,6 +60,21 @@ export default class MediaForm extends Component { ...data }, }) + window.addEventListener('keydown', this.handleKeyDown) + } + + componentWillUnmount() { + window.removeEventListener('keydown', this.handleKeyDown) + } + + handleKeyDown(e) { + // console.log(e, e.keyCode) + if ((e.ctrlKey || e.metaKey) && e.keyCode === 83) { + if (e) { + e.preventDefault() + } + this.handleSubmit() + } } handleChange(e) { @@ -78,7 +96,13 @@ export default class MediaForm extends Component { }) } + handleSettingsChangeEvent(e) { + const { name, value } = e.target + this.handleSettingsChange(name, value) + } + handleSettingsChange(name, value) { + console.log(name, value) if (name !== 'multiple') { value = { [name]: value } } @@ -94,11 +118,13 @@ export default class MediaForm extends Component { } handleSubmit(e) { - e.preventDefault() + if (e) { + e.preventDefault() + } const { isNew, onSubmit } = this.props const { data } = this.state const requiredKeys = "author title date".split(" ") - const validKeys = "type tag url title author pre_title translated_title date source medium start_ts settings".split(" ") + const validKeys = "type tag url title author pre_title post_title translated_title date source medium start_ts settings".split(" ") const validData = validKeys.reduce((a,b) => { a[b] = data[b]; return a }, {}) const errorFields = requiredKeys.filter(key => !validData[key]) if (errorFields.length) { @@ -167,7 +193,13 @@ export default class MediaForm extends Component { <TextInput title="Title Prefix" name="pre_title" - required + data={data} + onChange={this.handleChange} + autoComplete="off" + /> + <TextInput + title="Title Suffix" + name="post_title" data={data} onChange={this.handleChange} autoComplete="off" @@ -175,7 +207,6 @@ export default class MediaForm extends Component { <TextInput title="Translated Title" name="translated_title" - required data={data} onChange={this.handleChange} autoComplete="off" @@ -205,6 +236,20 @@ export default class MediaForm extends Component { autoComplete="off" /> <TextArea + title="Citation" + name="bibliography" + placeholder="Use if special HTML formatting needed" + data={data.settings} + onChange={this.handleSettingsChangeEvent} + /> + <Checkbox + label="Hide in list of works" + name="hide_in_bibliography" + checked={data.settings.hide_in_bibliography} + onChange={this.handleSettingsChange} + autoComplete="off" + /> + <TextArea title="Description" name="description" data={data} @@ -217,7 +262,7 @@ export default class MediaForm extends Component { {!!errorFields.size && <label> <span></span> - <span>Please complete the required fields =)</span> + <span>Please complete the required fields</span> </label> } </form> |
