Render primitive property descriptions as Markdown.

This commit is contained in:
Mark H. Wilkinson
2017-06-13 17:15:59 +01:00
parent db57ee0dfe
commit c24a07c523

View File

@@ -117,11 +117,12 @@ class ObjectModel extends Component {
class Primitive extends Component { class Primitive extends Component {
static propTypes = { static propTypes = {
schema: PropTypes.object.isRequired, schema: PropTypes.object.isRequired,
getComponent: PropTypes.func.isRequired,
required: PropTypes.bool required: PropTypes.bool
} }
render(){ render(){
let { schema, required } = this.props let { schema, getComponent, required } = this.props
if(!schema || !schema.get) { if(!schema || !schema.get) {
// don't render if schema isn't correctly formed // don't render if schema isn't correctly formed
@@ -132,17 +133,23 @@ class Primitive extends Component {
let format = schema.get("format") let format = schema.get("format")
let xml = schema.get("xml") let xml = schema.get("xml")
let enumArray = schema.get("enum") let enumArray = schema.get("enum")
let properties = schema.filter( ( v, key) => ["enum", "type", "format", "$$ref"].indexOf(key) === -1 ) let description = schema.get("description")
let properties = schema.filter( ( v, key) => ["enum", "type", "format", "description", "$$ref"].indexOf(key) === -1 )
let style = required ? { fontWeight: "bold" } : {} let style = required ? { fontWeight: "bold" } : {}
const Markdown = getComponent("Markdown")
return <span className="prop"> return <span className="prop">
<span className="prop-type" style={ style }>{ type }</span> { required && <span style={{ color: "red" }}>*</span>} <span className="prop-type" style={ style }>{ type }</span> { required && <span style={{ color: "red" }}>*</span>}
{ format && <span className="prop-format">(${format})</span>} { format && <span className="prop-format">(${format})</span>}
{ {
properties.size ? properties.entrySeq().map( ( [ key, v ] ) => <span key={`${key}-${v}`} style={ propStyle }> properties.size ? properties.entrySeq().map( ( [ key, v ] ) => <span key={`${key}-${v}`} style={ propStyle }>
<br />{ key !== "description" && key + ": " }{ String(v) }</span>) <br />{ key }: { String(v) }</span>)
: null : null
} }
{
!description ? null :
<Markdown source={ description } />
}
{ {
xml && xml.size ? (<span><br /><span style={ propStyle }>xml:</span> xml && xml.size ? (<span><br /><span style={ propStyle }>xml:</span>
{ {
@@ -220,7 +227,7 @@ class Model extends Component {
} }
render () { render () {
let { schema, required, name, isRef } = this.props let { schema, getComponent, required, name, isRef } = this.props
let $$ref = schema && schema.get("$$ref") let $$ref = schema && schema.get("$$ref")
let modelName = $$ref && this.getModelName( $$ref ) let modelName = $$ref && this.getModelName( $$ref )
let modelSchema, type let modelSchema, type
@@ -248,7 +255,7 @@ class Model extends Component {
case "integer": case "integer":
case "boolean": case "boolean":
default: default:
return <Primitive schema={ modelSchema } required={ required }/> return <Primitive getComponent={ getComponent } schema={ modelSchema } required={ required }/>
} }
} }
} }