Skip to content

Commit 15cf919

Browse files
authored
Fix parameter tagging. (#2086)
* Fix parameter tagging. Signed-off-by: bgravenorst <[email protected]> * Make required appear for multple nested levels. Signed-off-by: bgravenorst <[email protected]> * Remove temp file. Signed-off-by: bgravenorst <[email protected]> * Revert change. Signed-off-by: bgravenorst <[email protected]> --------- Signed-off-by: bgravenorst <[email protected]>
1 parent b5653eb commit 15cf919

File tree

1 file changed

+33
-22
lines changed

1 file changed

+33
-22
lines changed

src/components/ParserOpenRPC/DetailsBox/RenderParams.tsx

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React from 'react'
22
import { SchemaProperty } from './SchemaProperty'
33
import { CollapseBox } from '../CollapseBox/CollapseBox'
44
import styles from './styles.module.scss'
5+
import { SchemaPropertyType } from '@site/src/components/ParserOpenRPC/interfaces'
56

67
const 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

Comments
 (0)