import { h, Component } from 'preact'; import linkState from 'linkstate'; import Title from './elements/title'; import BodyMarkdown from './elements/bodyMarkdown'; import Categories from './elements/categories'; import Tags from './elements/tags'; export default class ListingForm extends Component { constructor(props) { super(props); this.listing = JSON.parse(this.props.listing); this.categoriesForDetails = JSON.parse(this.props.categoriesForDetails); this.categoriesForSelect = JSON.parse(this.props.categoriesForSelect); const organizations = this.props.organizations ? JSON.parse(this.props.organizations) : null; this.url = window.location.href; this.state = { id: this.listing.id || null, title: this.listing.title || '', category: this.listing.category || '', tagList: this.listing.cached_tag_list || '', bodyMarkdown: this.listing.body_markdown || '', organizations: organizations || null, categoriesForSelect: this.categoriesForSelect, categoriesForDetails: this.categoriesForDetails, } } render() { const { id, title, bodyMarkdown, tagList, category, organizations, categoriesForDetails, categoriesForSelect, } = this.state; if (id === null) { return(
<BodyMarkdown defaultValue={bodyMarkdown} onChange={linkState(this, 'bodyMarkdown')} /> <Categories categoriesForSelect={categoriesForSelect} categoriesForDetails={categoriesForDetails} onChange={linkState(this, 'category')} category={category} /> <Tags defaultValue={tagList} category={category} onInput={linkState(this, 'tagList')} /> {/* add contact via connect checkbox later */} </div> ) } return( <div> <Title defaultValue={title} onChange={linkState(this, 'title')} /> <BodyMarkdown defaultValue={bodyMarkdown} onChange={linkState(this, 'bodyMarkdown')} /> <Tags defaultValue={tagList} onInput={linkState(this, 'tagList')} /> {/* add contact via connect checkbox later */} </div> ) } }