docusaurus-theme-openapi-docs 0.0.0-beta.646 → 0.0.0-beta.651

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 (79) hide show
  1. package/lib/theme/ApiDemoPanel/ApiCodeBlock/Content/_Content.scss +1 -0
  2. package/lib/theme/ApiDemoPanel/Body/index.d.ts +3 -1
  3. package/lib/theme/ApiDemoPanel/Body/index.js +30 -32
  4. package/lib/theme/ApiDemoPanel/CodeTabs/_CodeTabs.scss +95 -39
  5. package/lib/theme/ApiDemoPanel/CodeTabs/index.js +24 -6
  6. package/lib/theme/ApiDemoPanel/Curl/index.d.ts +5 -4
  7. package/lib/theme/ApiDemoPanel/Curl/index.js +79 -11
  8. package/lib/theme/ApiDemoPanel/FormItem/_FormItem.scss +11 -2
  9. package/lib/theme/ApiDemoPanel/FormItem/index.d.ts +2 -1
  10. package/lib/theme/ApiDemoPanel/FormItem/index.js +9 -3
  11. package/lib/theme/ApiDemoPanel/FormMultiSelect/_FormMultiSelect.scss +8 -4
  12. package/lib/theme/ApiDemoPanel/FormMultiSelect/index.d.ts +2 -1
  13. package/lib/theme/ApiDemoPanel/FormMultiSelect/index.js +5 -2
  14. package/lib/theme/ApiDemoPanel/FormSelect/_FormSelect.scss +3 -3
  15. package/lib/theme/ApiDemoPanel/FormTextInput/_FormTextInput.scss +24 -5
  16. package/lib/theme/ApiDemoPanel/FormTextInput/index.d.ts +1 -1
  17. package/lib/theme/ApiDemoPanel/FormTextInput/index.js +56 -10
  18. package/lib/theme/ApiDemoPanel/LiveEditor/index.d.ts +5 -2
  19. package/lib/theme/ApiDemoPanel/LiveEditor/index.js +59 -14
  20. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamArrayFormItem.d.ts +6 -0
  21. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamArrayFormItem.js +194 -0
  22. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamBooleanFormItem.d.ts +6 -0
  23. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamBooleanFormItem.js +63 -0
  24. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.d.ts +6 -0
  25. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.js +89 -0
  26. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamSelectFormItem.d.ts +6 -0
  27. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamSelectFormItem.js +63 -0
  28. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamTextFormItem.d.ts +6 -0
  29. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamTextFormItem.js +38 -0
  30. package/lib/theme/ApiDemoPanel/ParamOptions/_ParamOptions.scss +9 -28
  31. package/lib/theme/ApiDemoPanel/ParamOptions/index.js +24 -176
  32. package/lib/theme/ApiDemoPanel/Request/_Request.scss +93 -20
  33. package/lib/theme/ApiDemoPanel/Request/index.d.ts +1 -1
  34. package/lib/theme/ApiDemoPanel/Request/index.js +316 -37
  35. package/lib/theme/ApiDemoPanel/Response/_Response.scss +54 -0
  36. package/lib/theme/ApiDemoPanel/Response/index.d.ts +4 -1
  37. package/lib/theme/ApiDemoPanel/Response/index.js +56 -31
  38. package/lib/theme/ApiDemoPanel/Server/_Server.scss +10 -0
  39. package/lib/theme/ApiDemoPanel/Server/index.js +10 -11
  40. package/lib/theme/ApiDemoPanel/index.js +1 -1
  41. package/lib/theme/SchemaTabs/_SchemaTabs.scss +0 -1
  42. package/lib/theme/styles.scss +27 -0
  43. package/package.json +7 -4
  44. package/src/theme/ApiDemoPanel/ApiCodeBlock/Content/_Content.scss +1 -0
  45. package/src/theme/ApiDemoPanel/Body/index.tsx +38 -29
  46. package/src/theme/ApiDemoPanel/CodeTabs/_CodeTabs.scss +95 -39
  47. package/src/theme/ApiDemoPanel/CodeTabs/index.js +24 -6
  48. package/src/theme/ApiDemoPanel/Curl/index.tsx +85 -22
  49. package/src/theme/ApiDemoPanel/FormItem/_FormItem.scss +11 -2
  50. package/src/theme/ApiDemoPanel/FormItem/index.tsx +8 -3
  51. package/src/theme/ApiDemoPanel/FormMultiSelect/_FormMultiSelect.scss +8 -4
  52. package/src/theme/ApiDemoPanel/FormMultiSelect/index.tsx +7 -2
  53. package/src/theme/ApiDemoPanel/FormSelect/_FormSelect.scss +3 -3
  54. package/src/theme/ApiDemoPanel/FormTextInput/_FormTextInput.scss +24 -5
  55. package/src/theme/ApiDemoPanel/FormTextInput/index.tsx +58 -10
  56. package/src/theme/ApiDemoPanel/LiveEditor/index.tsx +53 -14
  57. package/src/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamArrayFormItem.tsx +153 -0
  58. package/src/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamBooleanFormItem.tsx +64 -0
  59. package/src/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.tsx +86 -0
  60. package/src/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamSelectFormItem.tsx +65 -0
  61. package/src/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamTextFormItem.tsx +38 -0
  62. package/src/theme/ApiDemoPanel/ParamOptions/_ParamOptions.scss +9 -28
  63. package/src/theme/ApiDemoPanel/ParamOptions/index.tsx +8 -196
  64. package/src/theme/ApiDemoPanel/Request/_Request.scss +93 -20
  65. package/src/theme/ApiDemoPanel/Request/index.tsx +250 -28
  66. package/src/theme/ApiDemoPanel/Response/_Response.scss +54 -0
  67. package/src/theme/ApiDemoPanel/Response/index.tsx +44 -26
  68. package/src/theme/ApiDemoPanel/Server/_Server.scss +10 -0
  69. package/src/theme/ApiDemoPanel/Server/index.tsx +8 -11
  70. package/src/theme/ApiDemoPanel/index.tsx +1 -1
  71. package/src/theme/SchemaTabs/_SchemaTabs.scss +0 -1
  72. package/src/theme/styles.scss +27 -0
  73. package/src/theme-openapi.d.ts +40 -1
  74. package/lib/theme/ApiDemoPanel/Execute/index.d.ts +0 -8
  75. package/lib/theme/ApiDemoPanel/Execute/index.js +0 -213
  76. package/src/theme/ApiDemoPanel/Execute/index.tsx +0 -200
  77. /package/lib/theme/ApiDemoPanel/{Execute → Request}/makeRequest.d.ts +0 -0
  78. /package/lib/theme/ApiDemoPanel/{Execute → Request}/makeRequest.js +0 -0
  79. /package/src/theme/ApiDemoPanel/{Execute → Request}/makeRequest.ts +0 -0
@@ -5,13 +5,58 @@
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 (mod) {
43
+ if (mod && mod.__esModule) return mod;
44
+ var result = {};
45
+ if (mod != null)
46
+ for (var k in mod)
47
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
48
+ __createBinding(result, mod, k);
49
+ __setModuleDefault(result, mod);
50
+ return result;
51
+ };
8
52
  var __importDefault =
9
53
  (this && this.__importDefault) ||
10
54
  function (mod) {
11
55
  return mod && mod.__esModule ? mod : { default: mod };
12
56
  };
13
57
  Object.defineProperty(exports, "__esModule", { value: true });
14
- const react_1 = __importDefault(require("react"));
58
+ // @ts-nocheck
59
+ const react_1 = __importStar(require("react"));
15
60
  const internal_1 = require("@docusaurus/theme-common/internal");
16
61
  const postman_collection_1 = __importDefault(
17
62
  require("@paloaltonetworks/postman-collection")
@@ -21,20 +66,77 @@ const Authorization_1 = __importDefault(
21
66
  require("@theme/ApiDemoPanel/Authorization")
22
67
  );
23
68
  const Body_1 = __importDefault(require("@theme/ApiDemoPanel/Body"));
24
- const Execute_1 = __importDefault(require("@theme/ApiDemoPanel/Execute"));
69
+ const buildPostmanRequest_1 = __importDefault(
70
+ require("@theme/ApiDemoPanel/buildPostmanRequest")
71
+ );
72
+ const ContentType_1 = __importDefault(
73
+ require("@theme/ApiDemoPanel/ContentType")
74
+ );
25
75
  const ParamOptions_1 = __importDefault(
26
76
  require("@theme/ApiDemoPanel/ParamOptions")
27
77
  );
78
+ const slice_1 = require("@theme/ApiDemoPanel/Response/slice");
28
79
  const Server_1 = __importDefault(require("@theme/ApiDemoPanel/Server"));
29
80
  const hooks_1 = require("@theme/ApiItem/hooks");
81
+ const react_hook_form_1 = require("react-hook-form");
82
+ const makeRequest_1 = __importDefault(require("./makeRequest"));
30
83
  function Request({ item }) {
31
- const response = (0, hooks_1.useTypedSelector)(
32
- (state) => state.response.value
33
- );
34
84
  const postman = new postman_collection_1.default.Request(item.postman);
35
85
  const metadata = (0, internal_1.useDoc)();
36
- const { proxy, hide_send_button } = metadata.frontMatter;
37
- const params = {
86
+ const { proxy, hide_send_button: hideSendButton } = metadata.frontMatter;
87
+ const pathParams = (0, hooks_1.useTypedSelector)(
88
+ (state) => state.params.path
89
+ );
90
+ const queryParams = (0, hooks_1.useTypedSelector)(
91
+ (state) => state.params.query
92
+ );
93
+ const cookieParams = (0, hooks_1.useTypedSelector)(
94
+ (state) => state.params.cookie
95
+ );
96
+ const contentType = (0, hooks_1.useTypedSelector)(
97
+ (state) => state.contentType.value
98
+ );
99
+ const headerParams = (0, hooks_1.useTypedSelector)(
100
+ (state) => state.params.header
101
+ );
102
+ const body = (0, hooks_1.useTypedSelector)((state) => state.body);
103
+ const accept = (0, hooks_1.useTypedSelector)((state) => state.accept.value);
104
+ const acceptOptions = (0, hooks_1.useTypedDispatch)(
105
+ (state) => state.accept.options
106
+ );
107
+ const authSelected = (0, hooks_1.useTypedSelector)(
108
+ (state) => state.auth.selected
109
+ );
110
+ const server = (0, hooks_1.useTypedSelector)((state) => state.server.value);
111
+ const serverOptions = (0, hooks_1.useTypedSelector)(
112
+ (state) => state.server.options
113
+ );
114
+ const auth = (0, hooks_1.useTypedSelector)((state) => state.auth);
115
+ const dispatch = (0, hooks_1.useTypedDispatch)();
116
+ const [expandAccept, setExpandAccept] = (0, react_1.useState)(true);
117
+ const [expandAuth, setExpandAuth] = (0, react_1.useState)(true);
118
+ const [expandBody, setExpandBody] = (0, react_1.useState)(true);
119
+ const [expandParams, setExpandParams] = (0, react_1.useState)(true);
120
+ const [expandServer, setExpandServer] = (0, react_1.useState)(true);
121
+ const allParams = [
122
+ ...pathParams,
123
+ ...queryParams,
124
+ ...cookieParams,
125
+ ...headerParams,
126
+ ];
127
+ const postmanRequest = (0, buildPostmanRequest_1.default)(postman, {
128
+ queryParams,
129
+ pathParams,
130
+ cookieParams,
131
+ contentType,
132
+ accept,
133
+ headerParams,
134
+ body,
135
+ server,
136
+ auth,
137
+ });
138
+ const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
139
+ const paramsObject = {
38
140
  path: [],
39
141
  query: [],
40
142
  header: [],
@@ -42,45 +144,222 @@ function Request({ item }) {
42
144
  };
43
145
  item.parameters?.forEach((param) => {
44
146
  const paramType = param.in;
45
- const paramsArray = params[paramType];
147
+ const paramsArray = paramsObject[paramType];
46
148
  paramsArray.push(param);
47
149
  });
150
+ const methods = (0, react_hook_form_1.useForm)({ shouldFocusError: false });
151
+ const onSubmit = async (data) => {
152
+ dispatch((0, slice_1.setResponse)("Fetching..."));
153
+ try {
154
+ await delay(1200);
155
+ const res = await (0, makeRequest_1.default)(postmanRequest, proxy, body);
156
+ dispatch((0, slice_1.setResponse)(await res.text()));
157
+ dispatch((0, slice_1.setCode)(res.status));
158
+ res.headers &&
159
+ dispatch((0, slice_1.setHeaders)(Object.fromEntries(res.headers)));
160
+ } catch (e) {
161
+ console.log(e);
162
+ dispatch((0, slice_1.setResponse)("Connection failed"));
163
+ dispatch((0, slice_1.clearCode)());
164
+ dispatch((0, slice_1.clearHeaders)());
165
+ }
166
+ };
167
+ const showServerOptions = serverOptions.length > 0;
168
+ const showAcceptOptions = acceptOptions.length > 1;
169
+ const showRequestBody = contentType !== undefined;
170
+ const showRequestButton = item.servers && !hideSendButton;
171
+ const showAuth = authSelected !== undefined;
172
+ const showParams = allParams.length > 0;
173
+ const requestBodyRequired = item.requestBody?.required;
174
+ if (
175
+ !showAcceptOptions &&
176
+ !showAuth &&
177
+ !showParams &&
178
+ !showRequestBody &&
179
+ !showServerOptions
180
+ ) {
181
+ return null;
182
+ }
183
+ const expandAllDetails = () => {
184
+ setExpandAccept(true);
185
+ setExpandAuth(true);
186
+ setExpandBody(true);
187
+ setExpandParams(true);
188
+ setExpandServer(true);
189
+ };
190
+ const collapseAllDetails = () => {
191
+ setExpandAccept(false);
192
+ setExpandAuth(false);
193
+ setExpandBody(false);
194
+ setExpandParams(false);
195
+ setExpandServer(false);
196
+ };
197
+ const allDetailsExpanded =
198
+ expandParams && expandBody && expandServer && expandAuth && expandAccept;
48
199
  return react_1.default.createElement(
49
- react_1.default.Fragment,
50
- null,
200
+ react_hook_form_1.FormProvider,
201
+ { ...methods },
51
202
  react_1.default.createElement(
52
- "details",
53
- { className: "openapi-demo__details", open: response ? false : true },
203
+ "form",
204
+ {
205
+ className: "openapi-demo__request-form",
206
+ onSubmit: methods.handleSubmit(onSubmit),
207
+ },
54
208
  react_1.default.createElement(
55
- "summary",
56
- { className: "openapi-demo__summary-container" },
209
+ "div",
210
+ { className: "openapi-demo__request-header-container" },
57
211
  react_1.default.createElement(
58
- "div",
59
- { className: "openapi-demo__summary-content" },
60
- react_1.default.createElement(
61
- "h4",
62
- { className: "openapi-demo__summary-header" },
63
- "Request"
64
- ),
65
- item.servers &&
66
- !hide_send_button &&
67
- react_1.default.createElement(Execute_1.default, {
68
- postman: postman,
69
- proxy: proxy,
70
- })
71
- )
212
+ "span",
213
+ { className: "openapi-demo__request-title" },
214
+ "Request "
215
+ ),
216
+ allDetailsExpanded
217
+ ? react_1.default.createElement(
218
+ "span",
219
+ {
220
+ className: "openapi-demo__expand-details-btn",
221
+ onClick: collapseAllDetails,
222
+ },
223
+ "Collapse all"
224
+ )
225
+ : react_1.default.createElement(
226
+ "span",
227
+ {
228
+ className: "openapi-demo__expand-details-btn",
229
+ onClick: expandAllDetails,
230
+ },
231
+ "Expand all"
232
+ )
72
233
  ),
73
234
  react_1.default.createElement(
74
235
  "div",
75
- { className: "openapi-demo__options-panel" },
76
- react_1.default.createElement(Server_1.default, null),
77
- react_1.default.createElement(Authorization_1.default, null),
78
- react_1.default.createElement(ParamOptions_1.default, null),
79
- react_1.default.createElement(Body_1.default, {
80
- jsonRequestBodyExample: item.jsonRequestBodyExample,
81
- requestBodyMetadata: item.requestBody,
82
- }),
83
- react_1.default.createElement(Accept_1.default, null)
236
+ { className: "openapi-demo__details-outer-container" },
237
+ showServerOptions &&
238
+ react_1.default.createElement(
239
+ "details",
240
+ {
241
+ open: expandServer,
242
+ className: "openapi-demo__details-container",
243
+ },
244
+ react_1.default.createElement(
245
+ "summary",
246
+ {
247
+ className: "openapi-demo__details-summary",
248
+ onClick: (e) => {
249
+ e.preventDefault();
250
+ setExpandServer(!expandServer);
251
+ },
252
+ },
253
+ "Base URL"
254
+ ),
255
+ react_1.default.createElement(Server_1.default, null)
256
+ ),
257
+ showAuth &&
258
+ react_1.default.createElement(
259
+ "details",
260
+ { open: expandAuth, className: "openapi-demo__details-container" },
261
+ react_1.default.createElement(
262
+ "summary",
263
+ {
264
+ className: "openapi-demo__details-summary",
265
+ onClick: (e) => {
266
+ e.preventDefault();
267
+ setExpandAuth(!expandAuth);
268
+ },
269
+ },
270
+ "Auth"
271
+ ),
272
+ react_1.default.createElement(Authorization_1.default, null)
273
+ ),
274
+ showParams &&
275
+ react_1.default.createElement(
276
+ "details",
277
+ {
278
+ open:
279
+ expandParams || Object.keys(methods.formState.errors).length,
280
+ className: "openapi-demo__details-container",
281
+ },
282
+ react_1.default.createElement(
283
+ "summary",
284
+ {
285
+ className: "openapi-demo__details-summary",
286
+ onClick: (e) => {
287
+ e.preventDefault();
288
+ setExpandParams(!expandParams);
289
+ },
290
+ },
291
+ "Parameters"
292
+ ),
293
+ react_1.default.createElement(ParamOptions_1.default, null)
294
+ ),
295
+ showRequestBody &&
296
+ react_1.default.createElement(
297
+ "details",
298
+ { open: expandBody, className: "openapi-demo__details-container" },
299
+ react_1.default.createElement(
300
+ "summary",
301
+ {
302
+ className: "openapi-demo__details-summary",
303
+ onClick: (e) => {
304
+ e.preventDefault();
305
+ setExpandBody(!expandBody);
306
+ },
307
+ },
308
+ "Body",
309
+ " ",
310
+ requestBodyRequired &&
311
+ react_1.default.createElement(
312
+ "span",
313
+ null,
314
+ react_1.default.createElement(
315
+ "small",
316
+ null,
317
+ react_1.default.createElement(
318
+ "strong",
319
+ { className: "request-body required" },
320
+ " ",
321
+ "required"
322
+ )
323
+ )
324
+ )
325
+ ),
326
+ react_1.default.createElement(
327
+ react_1.default.Fragment,
328
+ null,
329
+ react_1.default.createElement(ContentType_1.default, null),
330
+ react_1.default.createElement(Body_1.default, {
331
+ jsonRequestBodyExample: item.jsonRequestBodyExample,
332
+ requestBodyMetadata: item.requestBody,
333
+ required: requestBodyRequired,
334
+ })
335
+ )
336
+ ),
337
+ showAcceptOptions &&
338
+ react_1.default.createElement(
339
+ "details",
340
+ {
341
+ open: expandAccept,
342
+ className: "openapi-demo__details-container",
343
+ },
344
+ react_1.default.createElement(
345
+ "summary",
346
+ {
347
+ className: "openapi-demo__details-summary",
348
+ onClick: (e) => {
349
+ e.preventDefault();
350
+ setExpandAccept(!expandAccept);
351
+ },
352
+ },
353
+ "Accept"
354
+ ),
355
+ react_1.default.createElement(Accept_1.default, null)
356
+ ),
357
+ showRequestButton &&
358
+ react_1.default.createElement(
359
+ "button",
360
+ { className: "openapi-demo__request-btn", type: "submit" },
361
+ "Send API Request"
362
+ )
84
363
  )
85
364
  )
86
365
  );
@@ -1,3 +1,57 @@
1
+ .openapi-demo__response-container {
2
+ background-color: var(--ifm-pre-background);
3
+ border-radius: var(--openapi-card-border-radius);
4
+ border: 1px solid var(--openapi-demo-border-color);
5
+ box-shadow: 0 2px 3px hsla(222, 8%, 43%, 0.1),
6
+ 0 8px 16px -10px hsla(222, 8%, 43%, 0.2);
7
+ color: var(--ifm-pre-color);
8
+ line-height: var(--ifm-pre-line-height);
9
+ margin-bottom: var(--ifm-spacing-vertical);
10
+ margin-top: 0;
11
+ overflow: auto;
12
+ transition: 300ms;
13
+
14
+ &:hover {
15
+ box-shadow: 0 0 0 2px rgba(38, 53, 61, 0.15),
16
+ 0 2px 3px hsla(222, 8%, 43%, 0.15),
17
+ 0 16px 16px -10px hsla(222, 8%, 43%, 0.2);
18
+ }
19
+
20
+ .openapi-demo__code-block code {
21
+ padding-top: 0;
22
+ }
23
+ }
24
+
25
+ .openapi-demo__response-title-container {
26
+ display: flex;
27
+ justify-content: space-between;
28
+ border-bottom: 1px solid var(--openapi-demo-border-color);
29
+ margin: 0;
30
+ padding: 0.75rem var(--ifm-pre-padding);
31
+ text-transform: uppercase;
32
+ font-size: 12px;
33
+ font-weight: bold;
34
+ }
35
+
36
+ .openapi-demo__response-placeholder-message {
37
+ font-size: 12px;
38
+ padding: 1.25rem;
39
+ margin-bottom: 0;
40
+ text-align: center;
41
+ }
42
+
43
+ .openapi-demo__response-clear-btn {
44
+ &:hover {
45
+ cursor: pointer;
46
+ }
47
+ }
48
+
49
+ .openapi-demo__loading-container {
50
+ width: 100%;
51
+ display: flex;
52
+ justify-content: center;
53
+ }
54
+
1
55
  .openapi-response__dot::before {
2
56
  margin-right: 0.2rem;
3
57
  margin-bottom: 0.15rem;
@@ -1,3 +1,6 @@
1
1
  /// <reference types="react" />
2
- declare function Response(): JSX.Element | null;
2
+ import { ApiItem } from "docusaurus-plugin-openapi-docs/src/types";
3
+ declare function Response({ item }: {
4
+ item: NonNullable<ApiItem>;
5
+ }): JSX.Element | null;
3
6
  export default Response;
@@ -13,6 +13,8 @@ var __importDefault =
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
14
  const react_1 = __importDefault(require("react"));
15
15
  const theme_common_1 = require("@docusaurus/theme-common");
16
+ const internal_1 = require("@docusaurus/theme-common/internal");
17
+ const react_2 = require("@nextui-org/react");
16
18
  const hooks_1 = require("@theme/ApiItem/hooks");
17
19
  const CodeBlock_1 = __importDefault(require("@theme/CodeBlock"));
18
20
  const SchemaTabs_1 = __importDefault(require("@theme/SchemaTabs"));
@@ -37,7 +39,9 @@ function formatXml(xml) {
37
39
  });
38
40
  return formatted.substring(1, formatted.length - 3);
39
41
  }
40
- function Response() {
42
+ function Response({ item }) {
43
+ const metadata = (0, internal_1.useDoc)();
44
+ const hideSendButton = metadata.frontMatter.hide_send_button;
41
45
  const prismTheme = (0, theme_common_1.usePrismTheme)();
42
46
  const code = (0, hooks_1.useTypedSelector)((state) => state.response.code);
43
47
  const headers = (0, hooks_1.useTypedSelector)(
@@ -55,43 +59,41 @@ function Response() {
55
59
  : parseInt(code) >= 200 && parseInt(code) < 300
56
60
  ? "openapi-response__dot--success"
57
61
  : "openapi-response__dot--info");
58
- if (response === undefined) {
62
+ if (!item.servers || hideSendButton) {
59
63
  return null;
60
64
  }
61
65
  let prettyResponse = response;
62
- try {
63
- prettyResponse = JSON.stringify(JSON.parse(response), null, 2);
64
- } catch {
65
- if (response.startsWith("<")) {
66
- prettyResponse = formatXml(response);
66
+ if (prettyResponse) {
67
+ try {
68
+ prettyResponse = JSON.stringify(JSON.parse(response), null, 2);
69
+ } catch {
70
+ if (response.startsWith("<")) {
71
+ prettyResponse = formatXml(response);
72
+ }
67
73
  }
68
74
  }
69
75
  return react_1.default.createElement(
70
- "details",
71
- { className: "openapi-demo__details", open: true },
76
+ "div",
77
+ { className: "openapi-demo__response-container" },
72
78
  react_1.default.createElement(
73
- "summary",
74
- { className: "openapi-demo__summary-container" },
79
+ "div",
80
+ { className: "openapi-demo__response-title-container" },
81
+ react_1.default.createElement(
82
+ "span",
83
+ { className: "openapi-demo__response-title" },
84
+ "Response"
85
+ ),
75
86
  react_1.default.createElement(
76
- "div",
77
- { className: "openapi-demo__summary-content" },
78
- react_1.default.createElement(
79
- "h4",
80
- { className: "openapi-demo__summary-header" },
81
- "Response"
82
- ),
83
- react_1.default.createElement(
84
- "button",
85
- {
86
- className: "button button--sm button--secondary",
87
- onClick: () => {
88
- dispatch((0, slice_1.clearResponse)());
89
- dispatch((0, slice_1.clearCode)());
90
- dispatch((0, slice_1.clearHeaders)());
91
- },
87
+ "span",
88
+ {
89
+ className: "openapi-demo__response-clear-btn",
90
+ onClick: () => {
91
+ dispatch((0, slice_1.clearResponse)());
92
+ dispatch((0, slice_1.clearCode)());
93
+ dispatch((0, slice_1.clearHeaders)());
92
94
  },
93
- "Clear"
94
- )
95
+ },
96
+ "Clear"
95
97
  )
96
98
  ),
97
99
  react_1.default.createElement(
@@ -130,7 +132,18 @@ function Response() {
130
132
  "openapi-demo__code-block openapi-response__status-code",
131
133
  language: response.startsWith("<") ? `xml` : `json`,
132
134
  },
133
- prettyResponse || "No Response"
135
+ prettyResponse ||
136
+ react_1.default.createElement(
137
+ "p",
138
+ { className: "openapi-demo__response-placeholder-message" },
139
+ "Click the ",
140
+ react_1.default.createElement(
141
+ "code",
142
+ null,
143
+ "Send API Request"
144
+ ),
145
+ " button above and see the response here!"
146
+ )
134
147
  )
135
148
  ),
136
149
  react_1.default.createElement(
@@ -147,7 +160,19 @@ function Response() {
147
160
  )
148
161
  )
149
162
  )
150
- : prettyResponse || "No Response"
163
+ : prettyResponse === "Fetching..."
164
+ ? react_1.default.createElement(
165
+ "div",
166
+ { className: "openapi-demo__loading-container" },
167
+ react_1.default.createElement(react_2.Loading, { color: "success" })
168
+ )
169
+ : react_1.default.createElement(
170
+ "p",
171
+ { className: "openapi-demo__response-placeholder-message" },
172
+ "Click the ",
173
+ react_1.default.createElement("code", null, "Send API Request"),
174
+ " button above and see the response here!"
175
+ )
151
176
  )
152
177
  );
153
178
  }
@@ -14,3 +14,13 @@
14
14
  display: none;
15
15
  }
16
16
  }
17
+
18
+ .openapi-demo__server-url {
19
+ font-size: var(--openapi-demo-font-size-input);
20
+ font-family: var(--ifm-font-family-monospace);
21
+ }
22
+
23
+ .openapi-demo__server-description {
24
+ padding-left: 0.5rem;
25
+ font-weight: var(--ifm-font-weight-bold);
26
+ }
@@ -109,16 +109,11 @@ function Server() {
109
109
  { onClick: () => setIsEditing(true), label: "Edit" },
110
110
  react_1.default.createElement(
111
111
  FormItem_1.default,
112
- { label: "Base URL" },
112
+ null,
113
113
  react_1.default.createElement(
114
- "pre",
115
- {
116
- style: {
117
- background: "var(--openapi-card-background-color)",
118
- paddingLeft: "0px",
119
- },
120
- },
121
- react_1.default.createElement("code", { title: url }, url)
114
+ "span",
115
+ { className: "openapi-demo__server-url", title: url },
116
+ url
122
117
  )
123
118
  )
124
119
  );
@@ -131,7 +126,7 @@ function Server() {
131
126
  { onClick: () => setIsEditing(false), label: "Hide" },
132
127
  react_1.default.createElement(
133
128
  FormItem_1.default,
134
- { label: "Base URL" },
129
+ null,
135
130
  react_1.default.createElement(FormSelect_1.default, {
136
131
  options: options.map((s) => s.url),
137
132
  onChange: (e) => {
@@ -145,7 +140,11 @@ function Server() {
145
140
  },
146
141
  value: value?.url,
147
142
  }),
148
- react_1.default.createElement("small", null, value?.description)
143
+ react_1.default.createElement(
144
+ "small",
145
+ { className: "openapi-demo__server-description" },
146
+ value?.description
147
+ )
149
148
  ),
150
149
  value?.variables &&
151
150
  Object.keys(value.variables).map((key) => {
@@ -28,7 +28,7 @@ function ApiDemoPanel({ item, infoPath }) {
28
28
  codeSamples: item["x-code-samples"] ?? [],
29
29
  }),
30
30
  react_1.default.createElement(Request_1.default, { item: item }),
31
- react_1.default.createElement(Response_1.default, null)
31
+ react_1.default.createElement(Response_1.default, { item: item })
32
32
  );
33
33
  }
34
34
  exports.default = ApiDemoPanel;
@@ -51,7 +51,6 @@
51
51
 
52
52
  .openapi-tabs__schema-container {
53
53
  width: 100%;
54
- margin-top: 1rem;
55
54
  display: flex;
56
55
  align-items: center;
57
56
  overflow: hidden;