Merge pull request #3861 from thompsongl/ft/property-component

Add Property display component
This commit is contained in:
kyle
2017-11-02 18:01:21 -07:00
committed by GitHub
4 changed files with 25 additions and 9 deletions

View File

@@ -24,24 +24,23 @@ export default class ArrayModel extends Component {
const Markdown = getComponent("Markdown") const Markdown = getComponent("Markdown")
const ModelCollapse = getComponent("ModelCollapse") const ModelCollapse = getComponent("ModelCollapse")
const Model = getComponent("Model") const Model = getComponent("Model")
const Property = getComponent("Property")
const titleEl = title && const titleEl = title &&
<span className="model-title"> <span className="model-title">
<span className="model-title__text">{ title }</span> <span className="model-title__text">{ title }</span>
</span> </span>
/* /*
Note: we set `name={null}` in <Model> below because we don't want Note: we set `name={null}` in <Model> below because we don't want
the name of the current Model passed (and displayed) as the name of the array element Model the name of the current Model passed (and displayed) as the name of the array element Model
*/ */
return <span className="model"> return <span className="model">
<ModelCollapse title={titleEl} collapsed={ depth > expandDepth } collapsedContent="[...]"> <ModelCollapse title={titleEl} collapsed={ depth > expandDepth } collapsedContent="[...]">
[ [
{ {
properties.size ? properties.entrySeq().map( ( [ key, v ] ) => <span key={`${key}-${v}`} style={ propStyle }> properties.size ? properties.entrySeq().map( ( [ key, v ] ) => <Property key={`${key}-${v}`} propKey={ key } propVal={ v } propStyle={ propStyle } />) : null
<br />{ key }: { String(v) }</span>)
: null
} }
{ {
!description ? null : !description ? null :

View File

@@ -28,6 +28,7 @@ export default class Primitive extends Component {
let properties = schema.filter( ( v, key) => ["enum", "type", "format", "description", "$$ref"].indexOf(key) === -1 ) let properties = schema.filter( ( v, key) => ["enum", "type", "format", "description", "$$ref"].indexOf(key) === -1 )
const Markdown = getComponent("Markdown") const Markdown = getComponent("Markdown")
const EnumModel = getComponent("EnumModel") const EnumModel = getComponent("EnumModel")
const Property = getComponent("Property")
return <span className="model"> return <span className="model">
<span className="prop"> <span className="prop">
@@ -35,9 +36,7 @@ export default class Primitive extends Component {
<span className="prop-type">{ type }</span> <span className="prop-type">{ type }</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 ] ) => <Property key={`${key}-${v}`} propKey={ key } propVal={ v } propStyle={ propStyle } />) : null
<br />{ key }: { String(v) }</span>)
: null
} }
{ {
!description ? null : !description ? null :
@@ -56,4 +55,4 @@ export default class Primitive extends Component {
</span> </span>
</span> </span>
} }
} }

View File

@@ -0,0 +1,16 @@
import React from "react"
import PropTypes from "prop-types"
export const Property = ({ propKey, propVal, propStyle }) => {
return (
<span style={ propStyle }>
<br />{ propKey }: { String(propVal) }</span>
)
}
Property.propTypes = {
propKey: PropTypes.string,
propVal: PropTypes.any,
propStyle: PropTypes.object
}
export default Property

View File

@@ -53,6 +53,7 @@ import EnumModel from "core/components/enum-model"
import ObjectModel from "core/components/object-model" import ObjectModel from "core/components/object-model"
import ArrayModel from "core/components/array-model" import ArrayModel from "core/components/array-model"
import PrimitiveModel from "core/components/primitive-model" import PrimitiveModel from "core/components/primitive-model"
import Property from "core/components/property"
import TryItOutButton from "core/components/try-it-out-button" import TryItOutButton from "core/components/try-it-out-button"
import VersionStamp from "core/components/version-stamp" import VersionStamp from "core/components/version-stamp"
@@ -107,6 +108,7 @@ export default function() {
ObjectModel, ObjectModel,
ArrayModel, ArrayModel,
PrimitiveModel, PrimitiveModel,
Property,
TryItOutButton, TryItOutButton,
Markdown, Markdown,
BaseLayout, BaseLayout,