1+ import React , { Component } from "react"
2+ import PropTypes from "prop-types"
3+
4+ const propStyle = { color : "#999" , fontStyle : "italic" }
5+
6+ export default class ArrayModel extends Component {
7+ static propTypes = {
8+ schema : PropTypes . object . isRequired ,
9+ getComponent : PropTypes . func . isRequired ,
10+ specSelectors : PropTypes . object . isRequired ,
11+ name : PropTypes . string ,
12+ required : PropTypes . bool ,
13+ expandDepth : PropTypes . number ,
14+ depth : PropTypes . number
15+ }
16+
17+ render ( ) {
18+ let { getComponent, required, schema, depth, expandDepth } = this . props
19+ let items = schema . get ( "items" )
20+ let properties = schema . filter ( ( v , key ) => [ "type" , "items" , "$$ref" ] . indexOf ( key ) === - 1 )
21+
22+ const ModelCollapse = getComponent ( "ModelCollapse" )
23+ const Model = getComponent ( "Model" )
24+
25+ return < span className = "model" >
26+ < span className = "model-title" >
27+ < span className = "model-title__text" > { schema . get ( "title" ) } </ span >
28+ </ span >
29+ < ModelCollapse collapsed = { depth > expandDepth } collapsedContent = "[...]" >
30+ [
31+ < span > < Model { ...this . props } schema = { items } required = { false } /> </ span >
32+ ]
33+ {
34+ properties . size ? < span >
35+ { properties . entrySeq ( ) . map ( ( [ key , v ] ) => < span key = { `${ key } -${ v } ` } style = { propStyle } >
36+ < br /> { `${ key } :` } { String ( v ) } </ span > )
37+ } < br /> </ span >
38+ : null
39+ }
40+ </ ModelCollapse >
41+ { required && < span style = { { color : "red" } } > *</ span > }
42+ </ span >
43+ }
44+ }
0 commit comments