Skip to content

Commit 67c925c

Browse files
authored
Merge pull request #3861 from thompsongl/ft/property-component
Add Property display component
2 parents a6bb7f1 + 09b3742 commit 67c925c

File tree

4 files changed

+25
-9
lines changed

4 files changed

+25
-9
lines changed

src/core/components/array-model.jsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,23 @@ export default class ArrayModel extends Component {
2424
const Markdown = getComponent("Markdown")
2525
const ModelCollapse = getComponent("ModelCollapse")
2626
const Model = getComponent("Model")
27+
const Property = getComponent("Property")
2728

2829
const titleEl = title &&
2930
<span className="model-title">
3031
<span className="model-title__text">{ title }</span>
3132
</span>
3233

33-
/*
34+
/*
3435
Note: we set `name={null}` in <Model> below because we don't want
3536
the name of the current Model passed (and displayed) as the name of the array element Model
36-
*/
37+
*/
3738

3839
return <span className="model">
3940
<ModelCollapse title={titleEl} collapsed={ depth > expandDepth } collapsedContent="[...]">
4041
[
4142
{
42-
properties.size ? properties.entrySeq().map( ( [ key, v ] ) => <span key={`${key}-${v}`} style={ propStyle }>
43-
<br />{ key }: { String(v) }</span>)
44-
: null
43+
properties.size ? properties.entrySeq().map( ( [ key, v ] ) => <Property key={`${key}-${v}`} propKey={ key } propVal={ v } propStyle={ propStyle } />) : null
4544
}
4645
{
4746
!description ? null :

src/core/components/primitive-model.jsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,15 @@ export default class Primitive extends Component {
2828
let properties = schema.filter( ( v, key) => ["enum", "type", "format", "description", "$$ref"].indexOf(key) === -1 )
2929
const Markdown = getComponent("Markdown")
3030
const EnumModel = getComponent("EnumModel")
31+
const Property = getComponent("Property")
3132

3233
return <span className="model">
3334
<span className="prop">
3435
{ name && <span className={`${depth === 1 && "model-title"} prop-name`}>{ title }</span> }
3536
<span className="prop-type">{ type }</span>
3637
{ format && <span className="prop-format">(${format})</span>}
3738
{
38-
properties.size ? properties.entrySeq().map( ( [ key, v ] ) => <span key={`${key}-${v}`} style={ propStyle }>
39-
<br />{ key }: { String(v) }</span>)
40-
: null
39+
properties.size ? properties.entrySeq().map( ( [ key, v ] ) => <Property key={`${key}-${v}`} propKey={ key } propVal={ v } propStyle={ propStyle } />) : null
4140
}
4241
{
4342
!description ? null :
@@ -56,4 +55,4 @@ export default class Primitive extends Component {
5655
</span>
5756
</span>
5857
}
59-
}
58+
}

src/core/components/property.jsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import React from "react"
2+
import PropTypes from "prop-types"
3+
4+
export const Property = ({ propKey, propVal, propStyle }) => {
5+
return (
6+
<span style={ propStyle }>
7+
<br />{ propKey }: { String(propVal) }</span>
8+
)
9+
}
10+
Property.propTypes = {
11+
propKey: PropTypes.string,
12+
propVal: PropTypes.any,
13+
propStyle: PropTypes.object
14+
}
15+
16+
export default Property

src/core/presets/base.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ import EnumModel from "core/components/enum-model"
5353
import ObjectModel from "core/components/object-model"
5454
import ArrayModel from "core/components/array-model"
5555
import PrimitiveModel from "core/components/primitive-model"
56+
import Property from "core/components/property"
5657
import TryItOutButton from "core/components/try-it-out-button"
5758
import VersionStamp from "core/components/version-stamp"
5859

@@ -107,6 +108,7 @@ export default function() {
107108
ObjectModel,
108109
ArrayModel,
109110
PrimitiveModel,
111+
Property,
110112
TryItOutButton,
111113
Markdown,
112114
BaseLayout,

0 commit comments

Comments
 (0)