docusaurus-theme-openapi-docs 0.0.0-1240 → 0.0.0-1247

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/lib/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamBooleanFormItem.js +74 -2
  2. package/lib/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamSelectFormItem.js +66 -2
  3. package/lib/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamTextFormItem.js +65 -1
  4. package/lib/theme/ApiItem/index.js +47 -33
  5. package/lib/theme/RequestSchema/index.js +58 -56
  6. package/lib/theme/ResponseSchema/index.js +25 -22
  7. package/lib/theme/Schema/index.js +15 -5
  8. package/lib/theme/SchemaExpansion/_SchemaExpansion.scss +113 -0
  9. package/lib/theme/SchemaExpansion/context.d.ts +24 -0
  10. package/lib/theme/SchemaExpansion/context.js +187 -0
  11. package/lib/theme/SchemaExpansion/index.d.ts +4 -0
  12. package/lib/theme/SchemaExpansion/index.js +315 -0
  13. package/lib/theme/styles.scss +1 -0
  14. package/lib/theme/translationIds.d.ts +6 -0
  15. package/lib/theme/translationIds.js +7 -0
  16. package/package.json +3 -3
  17. package/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamBooleanFormItem.tsx +19 -2
  18. package/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamSelectFormItem.tsx +14 -2
  19. package/src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamTextFormItem.tsx +11 -1
  20. package/src/theme/ApiItem/index.tsx +31 -21
  21. package/src/theme/RequestSchema/index.tsx +38 -39
  22. package/src/theme/ResponseSchema/index.tsx +15 -15
  23. package/src/theme/Schema/index.tsx +17 -5
  24. package/src/theme/SchemaExpansion/_SchemaExpansion.scss +113 -0
  25. package/src/theme/SchemaExpansion/context.tsx +154 -0
  26. package/src/theme/SchemaExpansion/index.tsx +237 -0
  27. package/src/theme/styles.scss +1 -0
  28. package/src/theme/translationIds.ts +7 -0
  29. package/src/types.d.ts +18 -0
  30. package/tsconfig.tsbuildinfo +1 -1
@@ -5,6 +5,62 @@
5
5
  * This source code is licensed under the MIT license found in the
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  * ========================================================================== */
8
+ var __createBinding =
9
+ (this && this.__createBinding) ||
10
+ (Object.create
11
+ ? function (o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (
15
+ !desc ||
16
+ ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)
17
+ ) {
18
+ desc = {
19
+ enumerable: true,
20
+ get: function () {
21
+ return m[k];
22
+ },
23
+ };
24
+ }
25
+ Object.defineProperty(o, k2, desc);
26
+ }
27
+ : function (o, m, k, k2) {
28
+ if (k2 === undefined) k2 = k;
29
+ o[k2] = m[k];
30
+ });
31
+ var __setModuleDefault =
32
+ (this && this.__setModuleDefault) ||
33
+ (Object.create
34
+ ? function (o, v) {
35
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
36
+ }
37
+ : function (o, v) {
38
+ o["default"] = v;
39
+ });
40
+ var __importStar =
41
+ (this && this.__importStar) ||
42
+ (function () {
43
+ var ownKeys = function (o) {
44
+ ownKeys =
45
+ Object.getOwnPropertyNames ||
46
+ function (o) {
47
+ var ar = [];
48
+ for (var k in o)
49
+ if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
50
+ return ar;
51
+ };
52
+ return ownKeys(o);
53
+ };
54
+ return function (mod) {
55
+ if (mod && mod.__esModule) return mod;
56
+ var result = {};
57
+ if (mod != null)
58
+ for (var k = ownKeys(mod), i = 0; i < k.length; i++)
59
+ if (k[i] !== "default") __createBinding(result, mod, k[i]);
60
+ __setModuleDefault(result, mod);
61
+ return result;
62
+ };
63
+ })();
8
64
  var __importDefault =
9
65
  (this && this.__importDefault) ||
10
66
  function (mod) {
@@ -12,7 +68,7 @@ var __importDefault =
12
68
  };
13
69
  Object.defineProperty(exports, "__esModule", { value: true });
14
70
  exports.default = ParamBooleanFormItem;
15
- const react_1 = __importDefault(require("react"));
71
+ const react_1 = __importStar(require("react"));
16
72
  const Translate_1 = require("@docusaurus/Translate");
17
73
  const error_message_1 = require("@hookform/error-message");
18
74
  const FormSelect_1 = __importDefault(require("@theme/ApiExplorer/FormSelect"));
@@ -25,8 +81,23 @@ function ParamBooleanFormItem({ param, label, type, required }) {
25
81
  const {
26
82
  control,
27
83
  formState: { errors },
84
+ setValue,
28
85
  } = (0, react_hook_form_1.useFormContext)();
29
86
  const showErrorMessage = errors?.paramBoolean;
87
+ (0, react_1.useEffect)(() => {
88
+ if (param.value === undefined) return;
89
+ const initial =
90
+ typeof param.value === "boolean" ? String(param.value) : param.value;
91
+ if (initial === "true" || initial === "false") {
92
+ setValue("paramBoolean", initial);
93
+ // Boolean defaults arrive in redux as actual booleans; normalize to the
94
+ // string form the rest of the form uses.
95
+ if (typeof param.value === "boolean") {
96
+ dispatch((0, slice_1.setParam)({ ...param, value: initial }));
97
+ }
98
+ }
99
+ // eslint-disable-next-line react-hooks/exhaustive-deps
100
+ }, []);
30
101
  return react_1.default.createElement(
31
102
  react_1.default.Fragment,
32
103
  null,
@@ -41,11 +112,12 @@ function ParamBooleanFormItem({ param, label, type, required }) {
41
112
  : false,
42
113
  },
43
114
  name: "paramBoolean",
44
- render: ({ field: { onChange } }) =>
115
+ render: ({ field: { onChange, value } }) =>
45
116
  react_1.default.createElement(FormSelect_1.default, {
46
117
  label: label,
47
118
  type: type,
48
119
  required: required,
120
+ value: value ?? "---",
49
121
  options: ["---", "true", "false"],
50
122
  onChange: (e) => {
51
123
  const val = e.target.value;
@@ -5,6 +5,62 @@
5
5
  * This source code is licensed under the MIT license found in the
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  * ========================================================================== */
8
+ var __createBinding =
9
+ (this && this.__createBinding) ||
10
+ (Object.create
11
+ ? function (o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (
15
+ !desc ||
16
+ ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)
17
+ ) {
18
+ desc = {
19
+ enumerable: true,
20
+ get: function () {
21
+ return m[k];
22
+ },
23
+ };
24
+ }
25
+ Object.defineProperty(o, k2, desc);
26
+ }
27
+ : function (o, m, k, k2) {
28
+ if (k2 === undefined) k2 = k;
29
+ o[k2] = m[k];
30
+ });
31
+ var __setModuleDefault =
32
+ (this && this.__setModuleDefault) ||
33
+ (Object.create
34
+ ? function (o, v) {
35
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
36
+ }
37
+ : function (o, v) {
38
+ o["default"] = v;
39
+ });
40
+ var __importStar =
41
+ (this && this.__importStar) ||
42
+ (function () {
43
+ var ownKeys = function (o) {
44
+ ownKeys =
45
+ Object.getOwnPropertyNames ||
46
+ function (o) {
47
+ var ar = [];
48
+ for (var k in o)
49
+ if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
50
+ return ar;
51
+ };
52
+ return ownKeys(o);
53
+ };
54
+ return function (mod) {
55
+ if (mod && mod.__esModule) return mod;
56
+ var result = {};
57
+ if (mod != null)
58
+ for (var k = ownKeys(mod), i = 0; i < k.length; i++)
59
+ if (k[i] !== "default") __createBinding(result, mod, k[i]);
60
+ __setModuleDefault(result, mod);
61
+ return result;
62
+ };
63
+ })();
8
64
  var __importDefault =
9
65
  (this && this.__importDefault) ||
10
66
  function (mod) {
@@ -12,7 +68,7 @@ var __importDefault =
12
68
  };
13
69
  Object.defineProperty(exports, "__esModule", { value: true });
14
70
  exports.default = ParamSelectFormItem;
15
- const react_1 = __importDefault(require("react"));
71
+ const react_1 = __importStar(require("react"));
16
72
  const Translate_1 = require("@docusaurus/Translate");
17
73
  const error_message_1 = require("@hookform/error-message");
18
74
  const FormSelect_1 = __importDefault(require("@theme/ApiExplorer/FormSelect"));
@@ -25,10 +81,17 @@ function ParamSelectFormItem({ param, label, type, required }) {
25
81
  const {
26
82
  control,
27
83
  formState: { errors },
84
+ setValue,
28
85
  } = (0, react_hook_form_1.useFormContext)();
29
86
  const showErrorMessage = errors?.paramSelect;
30
87
  const dispatch = (0, hooks_1.useTypedDispatch)();
31
88
  const options = (0, ParamOptions_1.getSchemaEnum)(param.schema) ?? [];
89
+ (0, react_1.useEffect)(() => {
90
+ if (typeof param.value === "string" && options.includes(param.value)) {
91
+ setValue("paramSelect", param.value);
92
+ }
93
+ // eslint-disable-next-line react-hooks/exhaustive-deps
94
+ }, []);
32
95
  return react_1.default.createElement(
33
96
  react_1.default.Fragment,
34
97
  null,
@@ -43,11 +106,12 @@ function ParamSelectFormItem({ param, label, type, required }) {
43
106
  : false,
44
107
  },
45
108
  name: "paramSelect",
46
- render: ({ field: { onChange } }) =>
109
+ render: ({ field: { onChange, value } }) =>
47
110
  react_1.default.createElement(FormSelect_1.default, {
48
111
  label: label,
49
112
  type: type,
50
113
  required: required,
114
+ value: value ?? "---",
51
115
  options: ["---", ...options],
52
116
  onChange: (e) => {
53
117
  const val = e.target.value;
@@ -5,6 +5,62 @@
5
5
  * This source code is licensed under the MIT license found in the
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  * ========================================================================== */
8
+ var __createBinding =
9
+ (this && this.__createBinding) ||
10
+ (Object.create
11
+ ? function (o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (
15
+ !desc ||
16
+ ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)
17
+ ) {
18
+ desc = {
19
+ enumerable: true,
20
+ get: function () {
21
+ return m[k];
22
+ },
23
+ };
24
+ }
25
+ Object.defineProperty(o, k2, desc);
26
+ }
27
+ : function (o, m, k, k2) {
28
+ if (k2 === undefined) k2 = k;
29
+ o[k2] = m[k];
30
+ });
31
+ var __setModuleDefault =
32
+ (this && this.__setModuleDefault) ||
33
+ (Object.create
34
+ ? function (o, v) {
35
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
36
+ }
37
+ : function (o, v) {
38
+ o["default"] = v;
39
+ });
40
+ var __importStar =
41
+ (this && this.__importStar) ||
42
+ (function () {
43
+ var ownKeys = function (o) {
44
+ ownKeys =
45
+ Object.getOwnPropertyNames ||
46
+ function (o) {
47
+ var ar = [];
48
+ for (var k in o)
49
+ if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
50
+ return ar;
51
+ };
52
+ return ownKeys(o);
53
+ };
54
+ return function (mod) {
55
+ if (mod && mod.__esModule) return mod;
56
+ var result = {};
57
+ if (mod != null)
58
+ for (var k = ownKeys(mod), i = 0; i < k.length; i++)
59
+ if (k[i] !== "default") __createBinding(result, mod, k[i]);
60
+ __setModuleDefault(result, mod);
61
+ return result;
62
+ };
63
+ })();
8
64
  var __importDefault =
9
65
  (this && this.__importDefault) ||
10
66
  function (mod) {
@@ -12,14 +68,22 @@ var __importDefault =
12
68
  };
13
69
  Object.defineProperty(exports, "__esModule", { value: true });
14
70
  exports.default = ParamTextFormItem;
15
- const react_1 = __importDefault(require("react"));
71
+ const react_1 = __importStar(require("react"));
16
72
  const FormTextInput_1 = __importDefault(
17
73
  require("@theme/ApiExplorer/FormTextInput")
18
74
  );
19
75
  const slice_1 = require("@theme/ApiExplorer/ParamOptions/slice");
20
76
  const hooks_1 = require("@theme/ApiItem/hooks");
77
+ const react_hook_form_1 = require("react-hook-form");
21
78
  function ParamTextFormItem({ param, label, type, required }) {
22
79
  const dispatch = (0, hooks_1.useTypedDispatch)();
80
+ const { setValue } = (0, react_hook_form_1.useFormContext)();
81
+ (0, react_1.useEffect)(() => {
82
+ if (param.value !== undefined && !Array.isArray(param.value)) {
83
+ setValue(param.name, param.value);
84
+ }
85
+ // eslint-disable-next-line react-hooks/exhaustive-deps
86
+ }, []);
23
87
  return react_1.default.createElement(FormTextInput_1.default, {
24
88
  label: label,
25
89
  type: type,
@@ -29,6 +29,7 @@ const storage_utils_1 = require("@theme/ApiExplorer/storage-utils");
29
29
  const Layout_1 = __importDefault(require("@theme/ApiItem/Layout"));
30
30
  const CodeBlock_1 = __importDefault(require("@theme/CodeBlock"));
31
31
  const Metadata_1 = __importDefault(require("@theme/DocItem/Metadata"));
32
+ const SchemaExpansion_1 = require("@theme/SchemaExpansion");
32
33
  const SkeletonLoader_1 = __importDefault(require("@theme/SkeletonLoader"));
33
34
  const clsx_1 = __importDefault(require("clsx"));
34
35
  const pako_1 = require("pako");
@@ -100,7 +101,10 @@ function ApiItem(props) {
100
101
  api?.parameters?.forEach((param) => {
101
102
  const paramType = param.in;
102
103
  const paramsArray = params[paramType];
103
- paramsArray?.push(param);
104
+ const defaultValue = param.schema?.default;
105
+ const initialized =
106
+ defaultValue !== undefined ? { ...param, value: defaultValue } : param;
107
+ paramsArray?.push(initialized);
104
108
  });
105
109
  const auth = (0, slice_1.createAuth)({
106
110
  security: api?.security,
@@ -154,30 +158,34 @@ function ApiItem(props) {
154
158
  react_redux_1.Provider,
155
159
  { store: store2 },
156
160
  react_1.default.createElement(
157
- "div",
158
- { className: (0, clsx_1.default)("row", "theme-api-markdown") },
159
- react_1.default.createElement(
160
- "div",
161
- { className: "col col--7 openapi-left-panel__container" },
162
- react_1.default.createElement(MDXComponent, null)
163
- ),
161
+ SchemaExpansion_1.SchemaExpansionProvider,
162
+ null,
164
163
  react_1.default.createElement(
165
164
  "div",
166
- { className: "col col--5 openapi-right-panel__container" },
165
+ { className: (0, clsx_1.default)("row", "theme-api-markdown") },
166
+ react_1.default.createElement(
167
+ "div",
168
+ { className: "col col--7 openapi-left-panel__container" },
169
+ react_1.default.createElement(MDXComponent, null)
170
+ ),
167
171
  react_1.default.createElement(
168
- BrowserOnly_1.default,
169
- {
170
- fallback: react_1.default.createElement(
171
- SkeletonLoader_1.default,
172
- { size: "lg" }
173
- ),
174
- },
175
- () => {
176
- return react_1.default.createElement(ApiExplorer, {
177
- item: api,
178
- infoPath: infoPath,
179
- });
180
- }
172
+ "div",
173
+ { className: "col col--5 openapi-right-panel__container" },
174
+ react_1.default.createElement(
175
+ BrowserOnly_1.default,
176
+ {
177
+ fallback: react_1.default.createElement(
178
+ SkeletonLoader_1.default,
179
+ { size: "lg" }
180
+ ),
181
+ },
182
+ () => {
183
+ return react_1.default.createElement(ApiExplorer, {
184
+ item: api,
185
+ infoPath: infoPath,
186
+ });
187
+ }
188
+ )
181
189
  )
182
190
  )
183
191
  )
@@ -197,20 +205,26 @@ function ApiItem(props) {
197
205
  Layout_1.default,
198
206
  null,
199
207
  react_1.default.createElement(
200
- "div",
201
- { className: (0, clsx_1.default)("row", "theme-api-markdown") },
202
- react_1.default.createElement(
203
- "div",
204
- { className: "col col--7 openapi-left-panel__container schema" },
205
- react_1.default.createElement(MDXComponent, null)
206
- ),
208
+ SchemaExpansion_1.SchemaExpansionProvider,
209
+ null,
207
210
  react_1.default.createElement(
208
211
  "div",
209
- { className: "col col--5 openapi-right-panel__container" },
212
+ { className: (0, clsx_1.default)("row", "theme-api-markdown") },
213
+ react_1.default.createElement(
214
+ "div",
215
+ {
216
+ className: "col col--7 openapi-left-panel__container schema",
217
+ },
218
+ react_1.default.createElement(MDXComponent, null)
219
+ ),
210
220
  react_1.default.createElement(
211
- CodeBlock_1.default,
212
- { language: "json", title: `${frontMatter.title}` },
213
- JSON.stringify(sample, null, 2)
221
+ "div",
222
+ { className: "col col--5 openapi-right-panel__container" },
223
+ react_1.default.createElement(
224
+ CodeBlock_1.default,
225
+ { language: "json", title: `${frontMatter.title}` },
226
+ JSON.stringify(sample, null, 2)
227
+ )
214
228
  )
215
229
  )
216
230
  )
@@ -19,6 +19,7 @@ const Markdown_1 = __importDefault(require("@theme/Markdown"));
19
19
  const MimeTabs_1 = __importDefault(require("@theme/MimeTabs")); // Assume these components exist
20
20
  const ResponseExamples_1 = require("@theme/ResponseExamples");
21
21
  const Schema_1 = __importDefault(require("@theme/Schema"));
22
+ const SchemaExpansion_1 = __importDefault(require("@theme/SchemaExpansion"));
22
23
  const SchemaTabs_1 = __importDefault(require("@theme/SchemaTabs"));
23
24
  const SkeletonLoader_1 = __importDefault(require("@theme/SkeletonLoader"));
24
25
  const TabItem_1 = __importDefault(require("@theme/TabItem"));
@@ -71,32 +72,35 @@ const RequestSchemaComponent = ({ title, body, style }) => {
71
72
  open: true,
72
73
  style: style,
73
74
  summary: react_1.default.createElement(
74
- react_1.default.Fragment,
75
- null,
75
+ "summary",
76
+ {
77
+ className:
78
+ "openapi-markdown__details-summary--with-control",
79
+ },
76
80
  react_1.default.createElement(
77
- "summary",
78
- null,
79
- react_1.default.createElement(
80
- "h3",
81
- {
82
- className:
83
- "openapi-markdown__details-summary-header-body",
84
- },
85
- (0, Translate_1.translate)({
86
- id: translationIds_1.OPENAPI_REQUEST.BODY_TITLE,
87
- message: title,
88
- }),
89
- body.required === true &&
90
- react_1.default.createElement(
91
- "span",
92
- { className: "openapi-schema__required" },
93
- (0, Translate_1.translate)({
94
- id: translationIds_1.OPENAPI_SCHEMA_ITEM
95
- .REQUIRED,
96
- message: "required",
97
- })
98
- )
99
- )
81
+ "h3",
82
+ {
83
+ className:
84
+ "openapi-markdown__details-summary-header-body",
85
+ },
86
+ (0, Translate_1.translate)({
87
+ id: translationIds_1.OPENAPI_REQUEST.BODY_TITLE,
88
+ message: title,
89
+ }),
90
+ body.required === true &&
91
+ react_1.default.createElement(
92
+ "span",
93
+ { className: "openapi-schema__required" },
94
+ (0, Translate_1.translate)({
95
+ id: translationIds_1.OPENAPI_SCHEMA_ITEM
96
+ .REQUIRED,
97
+ message: "required",
98
+ })
99
+ )
100
+ ),
101
+ react_1.default.createElement(
102
+ SchemaExpansion_1.default,
103
+ null
100
104
  )
101
105
  ),
102
106
  },
@@ -179,38 +183,36 @@ const RequestSchemaComponent = ({ title, body, style }) => {
179
183
  open: true,
180
184
  style: style,
181
185
  summary: react_1.default.createElement(
182
- react_1.default.Fragment,
183
- null,
186
+ "summary",
187
+ {
188
+ className: "openapi-markdown__details-summary--with-control",
189
+ },
184
190
  react_1.default.createElement(
185
- "summary",
186
- null,
187
- react_1.default.createElement(
188
- "h3",
189
- {
190
- className:
191
- "openapi-markdown__details-summary-header-body",
192
- },
193
- (0, Translate_1.translate)({
194
- id: translationIds_1.OPENAPI_REQUEST.BODY_TITLE,
195
- message: title,
196
- }),
197
- firstBody.type === "array" &&
198
- react_1.default.createElement(
199
- "span",
200
- { style: { opacity: "0.6" } },
201
- " array"
202
- ),
203
- body.required &&
204
- react_1.default.createElement(
205
- "strong",
206
- { className: "openapi-schema__required" },
207
- (0, Translate_1.translate)({
208
- id: translationIds_1.OPENAPI_SCHEMA_ITEM.REQUIRED,
209
- message: "required",
210
- })
211
- )
212
- )
213
- )
191
+ "h3",
192
+ {
193
+ className: "openapi-markdown__details-summary-header-body",
194
+ },
195
+ (0, Translate_1.translate)({
196
+ id: translationIds_1.OPENAPI_REQUEST.BODY_TITLE,
197
+ message: title,
198
+ }),
199
+ firstBody.type === "array" &&
200
+ react_1.default.createElement(
201
+ "span",
202
+ { style: { opacity: "0.6" } },
203
+ " array"
204
+ ),
205
+ body.required &&
206
+ react_1.default.createElement(
207
+ "strong",
208
+ { className: "openapi-schema__required" },
209
+ (0, Translate_1.translate)({
210
+ id: translationIds_1.OPENAPI_SCHEMA_ITEM.REQUIRED,
211
+ message: "required",
212
+ })
213
+ )
214
+ ),
215
+ react_1.default.createElement(SchemaExpansion_1.default, null)
214
216
  ),
215
217
  },
216
218
  react_1.default.createElement(
@@ -19,6 +19,7 @@ const Markdown_1 = __importDefault(require("@theme/Markdown"));
19
19
  const MimeTabs_1 = __importDefault(require("@theme/MimeTabs")); // Assume these components exist
20
20
  const ResponseExamples_1 = require("@theme/ResponseExamples");
21
21
  const Schema_1 = __importDefault(require("@theme/Schema"));
22
+ const SchemaExpansion_1 = __importDefault(require("@theme/SchemaExpansion"));
22
23
  const SchemaTabs_1 = __importDefault(require("@theme/SchemaTabs"));
23
24
  const SkeletonLoader_1 = __importDefault(require("@theme/SkeletonLoader"));
24
25
  const TabItem_1 = __importDefault(require("@theme/TabItem"));
@@ -83,29 +84,31 @@ const ResponseSchemaComponent = ({ title, body, style }) => {
83
84
  open: true,
84
85
  style: style,
85
86
  summary: react_1.default.createElement(
86
- react_1.default.Fragment,
87
- null,
87
+ "summary",
88
+ {
89
+ className:
90
+ "openapi-markdown__details-summary--with-control",
91
+ },
88
92
  react_1.default.createElement(
89
- "summary",
90
- null,
91
- react_1.default.createElement(
92
- "strong",
93
- {
94
- className:
95
- "openapi-markdown__details-summary-response",
96
- },
97
- title,
98
- body.required === true &&
99
- react_1.default.createElement(
100
- "span",
101
- { className: "openapi-schema__required" },
102
- (0, Translate_1.translate)({
103
- id: translationIds_1.OPENAPI_SCHEMA_ITEM
104
- .REQUIRED,
105
- message: "required",
106
- })
107
- )
108
- )
93
+ "strong",
94
+ {
95
+ className:
96
+ "openapi-markdown__details-summary-response",
97
+ },
98
+ title,
99
+ body.required === true &&
100
+ react_1.default.createElement(
101
+ "span",
102
+ { className: "openapi-schema__required" },
103
+ (0, Translate_1.translate)({
104
+ id: translationIds_1.OPENAPI_SCHEMA_ITEM.REQUIRED,
105
+ message: "required",
106
+ })
107
+ )
108
+ ),
109
+ react_1.default.createElement(
110
+ SchemaExpansion_1.default,
111
+ null
109
112
  )
110
113
  ),
111
114
  },
@@ -77,6 +77,7 @@ const DiscriminatorTabs_1 = __importDefault(
77
77
  require("@theme/DiscriminatorTabs")
78
78
  );
79
79
  const Markdown_1 = __importDefault(require("@theme/Markdown"));
80
+ const SchemaExpansion_1 = require("@theme/SchemaExpansion");
80
81
  const SchemaItem_1 = __importDefault(require("@theme/SchemaItem"));
81
82
  const SchemaTabs_1 = __importDefault(require("@theme/SchemaTabs"));
82
83
  const TabItem_1 = __importDefault(require("@theme/TabItem"));
@@ -644,13 +645,18 @@ const SchemaNodeDetails = ({
644
645
  schemaType,
645
646
  schemaPath,
646
647
  }) => {
648
+ const depth = (0, SchemaExpansion_1.useSchemaDepth)();
649
+ const { level } = (0, SchemaExpansion_1.useSchemaExpansion)();
650
+ const defaultOpen = depth < level;
647
651
  return react_1.default.createElement(
648
652
  SchemaItem_1.default,
649
653
  { collapsible: true },
650
654
  react_1.default.createElement(
651
655
  Details_1.default,
652
656
  {
657
+ key: `level-${level}`,
653
658
  className: "openapi-markdown__details",
659
+ open: defaultOpen,
654
660
  summary: react_1.default.createElement(Summary, {
655
661
  name: name,
656
662
  schemaName: schemaName,
@@ -669,11 +675,15 @@ const SchemaNodeDetails = ({
669
675
  react_1.default.createElement(MarkdownWrapper, {
670
676
  text: (0, schema_1.getQualifierMessage)(schema),
671
677
  }),
672
- react_1.default.createElement(SchemaNode, {
673
- schema: schema,
674
- schemaType: schemaType,
675
- schemaPath: schemaPath,
676
- })
678
+ react_1.default.createElement(
679
+ SchemaExpansion_1.SchemaDepthProvider,
680
+ { depth: depth + 1 },
681
+ react_1.default.createElement(SchemaNode, {
682
+ schema: schema,
683
+ schemaType: schemaType,
684
+ schemaPath: schemaPath,
685
+ })
686
+ )
677
687
  )
678
688
  )
679
689
  );