@@ -2,6 +2,7 @@ import React from 'react'
22import { SchemaProperty } from './SchemaProperty'
33import { CollapseBox } from '../CollapseBox/CollapseBox'
44import styles from './styles.module.scss'
5+ import { SchemaPropertyType } from '@site/src/components/ParserOpenRPC/interfaces'
56
67const getRefSchemaFromComponents = ( initRef , components ) => {
78 const ref = initRef . replace ( '#/components/schemas/' , '' )
@@ -19,29 +20,39 @@ const renderSchema = (schemaItem, schemas, name) => {
1920 if ( schemaItem ?. schema ?. $ref ) return resolveRef ( schemaItem . schema . $ref )
2021 if ( schemaItem ?. $ref ) return resolveRef ( schemaItem . $ref )
2122
22- const renderObject = ( item , itemName ) => (
23- < div >
24- < SchemaProperty
25- title = { itemName || item . title }
26- type = "object"
27- required = { schemaItem . required || ! ! item . required }
28- description = { item . description || item . title || '' }
29- pattern = { item . pattern }
30- defaultVal = { item . default }
31- />
32- < div className = "padding-bottom--md" >
33- < CollapseBox >
34- < >
35- { Object . entries ( item . properties ) . map ( ( [ key , value ] ) => (
36- < div key = { key } className = { styles . paramItemWrapper } >
37- { renderSchema ( value , schemas , key ) }
38- </ div >
39- ) ) }
40- </ >
41- </ CollapseBox >
23+ const renderObject = ( item , itemName ) => {
24+ const requiredFields = Array . isArray ( item . required ) ? item . required : [ ]
25+ return (
26+ < div >
27+ < SchemaProperty
28+ title = { itemName || item . title }
29+ type = "object"
30+ required = { schemaItem . required || ! ! item . required }
31+ description = { item . description || item . title || '' }
32+ pattern = { item . pattern }
33+ defaultVal = { item . default }
34+ />
35+ < div className = "padding-bottom--md" >
36+ < CollapseBox >
37+ < >
38+ { Object . entries ( item . properties ) . map ( ( [ key , value ] : [ string , SchemaPropertyType ] ) => (
39+ < div key = { key } className = { styles . paramItemWrapper } >
40+ { renderSchema (
41+ {
42+ ...value ,
43+ required : requiredFields . includes ( key ) ,
44+ } ,
45+ schemas ,
46+ key
47+ ) }
48+ </ div >
49+ ) ) }
50+ </ >
51+ </ CollapseBox >
52+ </ div >
4253 </ div >
43- </ div >
44- )
54+ )
55+ }
4556
4657 if ( schemaItem ?. schema ?. type === 'object' && schemaItem ?. schema ?. properties ) {
4758 return renderObject ( schemaItem . schema , name || schemaItem ?. schema ?. title )
0 commit comments