From 6bc26b9666d423c2a7a6683fb2a9f9fc1e6f83ea Mon Sep 17 00:00:00 2001 From: Vladimir Gorej Date: Mon, 24 Apr 2023 10:49:36 +0200 Subject: [PATCH] feat(json-schema-2020-12): add support for defs deep extend Refs #8513 --- .../components/keywords/$defs.jsx | 47 ++++++++++++------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/src/core/plugins/json-schema-2020-12/components/keywords/$defs.jsx b/src/core/plugins/json-schema-2020-12/components/keywords/$defs.jsx index 6af86286..7bc83188 100644 --- a/src/core/plugins/json-schema-2020-12/components/keywords/$defs.jsx +++ b/src/core/plugins/json-schema-2020-12/components/keywords/$defs.jsx @@ -5,6 +5,7 @@ import React, { useCallback, useState } from "react" import { schema } from "../../prop-types" import { useComponent, useIsExpandedDeeply } from "../../hooks" +import { JSONSchemaDeepExpansionContext } from "../../context" const $defs = ({ schema }) => { const $defs = schema?.$defs || {} @@ -15,31 +16,43 @@ const $defs = ({ schema }) => { const isExpandedDeeply = useIsExpandedDeeply() const [expanded, setExpanded] = useState(isExpandedDeeply) + const [expandedDeeply, setExpandedDeeply] = useState(false) const Accordion = useComponent("Accordion") + const ExpandDeepButton = useComponent("ExpandDeepButton") const JSONSchema = useComponent("JSONSchema") + /** + * Event handlers. + */ const handleExpansion = useCallback(() => { setExpanded((prev) => !prev) }, []) + const handleExpansionDeep = useCallback((e, expandedDeepNew) => { + setExpanded(expandedDeepNew) + setExpandedDeeply(expandedDeepNew) + }, []) return ( -
- - - $defs - - - object - {expanded && ( - - )} -
+ +
+ + + $defs + + + + object + {expanded && ( +
    + {Object.entries($defs).map(([schemaName, schema]) => ( +
  • + +
  • + ))} +
+ )} +
+
) }