docusaurus-theme-openapi-docs 0.0.0-beta.647 → 0.0.0-beta.652
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.
- package/lib/theme/ApiDemoPanel/ApiCodeBlock/Content/_Content.scss +1 -0
- package/lib/theme/ApiDemoPanel/Body/index.d.ts +3 -1
- package/lib/theme/ApiDemoPanel/Body/index.js +30 -32
- package/lib/theme/ApiDemoPanel/CodeTabs/_CodeTabs.scss +18 -0
- package/lib/theme/ApiDemoPanel/CodeTabs/index.js +7 -1
- package/lib/theme/ApiDemoPanel/Curl/index.js +1 -0
- package/lib/theme/ApiDemoPanel/FormItem/_FormItem.scss +11 -2
- package/lib/theme/ApiDemoPanel/FormItem/index.d.ts +2 -1
- package/lib/theme/ApiDemoPanel/FormItem/index.js +9 -3
- package/lib/theme/ApiDemoPanel/FormMultiSelect/_FormMultiSelect.scss +8 -4
- package/lib/theme/ApiDemoPanel/FormMultiSelect/index.d.ts +2 -1
- package/lib/theme/ApiDemoPanel/FormMultiSelect/index.js +5 -2
- package/lib/theme/ApiDemoPanel/FormSelect/_FormSelect.scss +3 -3
- package/lib/theme/ApiDemoPanel/FormTextInput/_FormTextInput.scss +24 -5
- package/lib/theme/ApiDemoPanel/FormTextInput/index.d.ts +1 -1
- package/lib/theme/ApiDemoPanel/FormTextInput/index.js +56 -10
- package/lib/theme/ApiDemoPanel/LiveEditor/index.d.ts +5 -2
- package/lib/theme/ApiDemoPanel/LiveEditor/index.js +59 -14
- package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamArrayFormItem.d.ts +6 -0
- package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamArrayFormItem.js +194 -0
- package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamBooleanFormItem.d.ts +6 -0
- package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamBooleanFormItem.js +63 -0
- package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.d.ts +6 -0
- package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.js +89 -0
- package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamSelectFormItem.d.ts +6 -0
- package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamSelectFormItem.js +63 -0
- package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamTextFormItem.d.ts +6 -0
- package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamTextFormItem.js +38 -0
- package/lib/theme/ApiDemoPanel/ParamOptions/_ParamOptions.scss +9 -28
- package/lib/theme/ApiDemoPanel/ParamOptions/index.js +24 -176
- package/lib/theme/ApiDemoPanel/Request/_Request.scss +93 -20
- package/lib/theme/ApiDemoPanel/Request/index.d.ts +1 -1
- package/lib/theme/ApiDemoPanel/Request/index.js +316 -37
- package/lib/theme/ApiDemoPanel/Response/_Response.scss +54 -0
- package/lib/theme/ApiDemoPanel/Response/index.d.ts +4 -1
- package/lib/theme/ApiDemoPanel/Response/index.js +61 -34
- package/lib/theme/ApiDemoPanel/Server/_Server.scss +10 -0
- package/lib/theme/ApiDemoPanel/Server/index.js +10 -11
- package/lib/theme/ApiDemoPanel/index.js +1 -1
- package/lib/theme/SchemaTabs/_SchemaTabs.scss +0 -1
- package/lib/theme/styles.scss +6 -0
- package/package.json +7 -4
- package/src/theme/ApiDemoPanel/ApiCodeBlock/Content/_Content.scss +1 -0
- package/src/theme/ApiDemoPanel/Body/index.tsx +38 -29
- package/src/theme/ApiDemoPanel/CodeTabs/_CodeTabs.scss +18 -0
- package/src/theme/ApiDemoPanel/CodeTabs/index.js +7 -1
- package/src/theme/ApiDemoPanel/Curl/index.tsx +1 -0
- package/src/theme/ApiDemoPanel/FormItem/_FormItem.scss +11 -2
- package/src/theme/ApiDemoPanel/FormItem/index.tsx +8 -3
- package/src/theme/ApiDemoPanel/FormMultiSelect/_FormMultiSelect.scss +8 -4
- package/src/theme/ApiDemoPanel/FormMultiSelect/index.tsx +7 -2
- package/src/theme/ApiDemoPanel/FormSelect/_FormSelect.scss +3 -3
- package/src/theme/ApiDemoPanel/FormTextInput/_FormTextInput.scss +24 -5
- package/src/theme/ApiDemoPanel/FormTextInput/index.tsx +58 -10
- package/src/theme/ApiDemoPanel/LiveEditor/index.tsx +53 -14
- package/src/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamArrayFormItem.tsx +153 -0
- package/src/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamBooleanFormItem.tsx +64 -0
- package/src/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.tsx +86 -0
- package/src/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamSelectFormItem.tsx +65 -0
- package/src/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamTextFormItem.tsx +38 -0
- package/src/theme/ApiDemoPanel/ParamOptions/_ParamOptions.scss +9 -28
- package/src/theme/ApiDemoPanel/ParamOptions/index.tsx +8 -196
- package/src/theme/ApiDemoPanel/Request/_Request.scss +93 -20
- package/src/theme/ApiDemoPanel/Request/index.tsx +250 -28
- package/src/theme/ApiDemoPanel/Response/_Response.scss +54 -0
- package/src/theme/ApiDemoPanel/Response/index.tsx +51 -31
- package/src/theme/ApiDemoPanel/Server/_Server.scss +10 -0
- package/src/theme/ApiDemoPanel/Server/index.tsx +8 -11
- package/src/theme/ApiDemoPanel/index.tsx +1 -1
- package/src/theme/SchemaTabs/_SchemaTabs.scss +0 -1
- package/src/theme/styles.scss +6 -0
- package/src/theme-openapi.d.ts +40 -1
- package/lib/theme/ApiDemoPanel/Execute/index.d.ts +0 -8
- package/lib/theme/ApiDemoPanel/Execute/index.js +0 -213
- package/src/theme/ApiDemoPanel/Execute/index.tsx +0 -200
- /package/lib/theme/ApiDemoPanel/{Execute → Request}/makeRequest.d.ts +0 -0
- /package/lib/theme/ApiDemoPanel/{Execute → Request}/makeRequest.js +0 -0
- /package/src/theme/ApiDemoPanel/{Execute → Request}/makeRequest.ts +0 -0
|
@@ -3,6 +3,8 @@ import { RequestBodyObject } from "docusaurus-plugin-openapi-docs/src/openapi/ty
|
|
|
3
3
|
export interface Props {
|
|
4
4
|
jsonRequestBodyExample: string;
|
|
5
5
|
requestBodyMetadata?: RequestBodyObject;
|
|
6
|
+
methods?: any;
|
|
7
|
+
required?: boolean;
|
|
6
8
|
}
|
|
7
|
-
declare function BodyWrap({ requestBodyMetadata, jsonRequestBodyExample }: Props): JSX.Element | null;
|
|
9
|
+
declare function BodyWrap({ requestBodyMetadata, jsonRequestBodyExample, methods, required, }: Props): JSX.Element | null;
|
|
8
10
|
export default BodyWrap;
|
|
@@ -15,9 +15,6 @@ const react_1 = __importDefault(require("react"));
|
|
|
15
15
|
const json2xml_1 = __importDefault(
|
|
16
16
|
require("@theme/ApiDemoPanel/Body/json2xml")
|
|
17
17
|
);
|
|
18
|
-
const ContentType_1 = __importDefault(
|
|
19
|
-
require("@theme/ApiDemoPanel/ContentType")
|
|
20
|
-
);
|
|
21
18
|
const FormFileUpload_1 = __importDefault(
|
|
22
19
|
require("@theme/ApiDemoPanel/FormFileUpload")
|
|
23
20
|
);
|
|
@@ -32,7 +29,12 @@ const SchemaTabs_1 = __importDefault(require("@theme/SchemaTabs"));
|
|
|
32
29
|
const TabItem_1 = __importDefault(require("@theme/TabItem"));
|
|
33
30
|
const xml_formatter_1 = __importDefault(require("xml-formatter"));
|
|
34
31
|
const slice_1 = require("./slice");
|
|
35
|
-
function BodyWrap({
|
|
32
|
+
function BodyWrap({
|
|
33
|
+
requestBodyMetadata,
|
|
34
|
+
jsonRequestBodyExample,
|
|
35
|
+
methods,
|
|
36
|
+
required,
|
|
37
|
+
}) {
|
|
36
38
|
const contentType = (0, hooks_1.useTypedSelector)(
|
|
37
39
|
(state) => state.contentType.value
|
|
38
40
|
);
|
|
@@ -42,21 +44,21 @@ function BodyWrap({ requestBodyMetadata, jsonRequestBodyExample }) {
|
|
|
42
44
|
if (contentType === undefined) {
|
|
43
45
|
return null;
|
|
44
46
|
}
|
|
45
|
-
return react_1.default.createElement(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
requestBodyMetadata: requestBodyMetadata,
|
|
51
|
-
jsonRequestBodyExample: jsonRequestBodyExample,
|
|
52
|
-
})
|
|
53
|
-
);
|
|
47
|
+
return react_1.default.createElement(Body, {
|
|
48
|
+
requestBodyMetadata: requestBodyMetadata,
|
|
49
|
+
jsonRequestBodyExample: jsonRequestBodyExample,
|
|
50
|
+
required: required,
|
|
51
|
+
});
|
|
54
52
|
}
|
|
55
|
-
function Body({
|
|
53
|
+
function Body({
|
|
54
|
+
requestBodyMetadata,
|
|
55
|
+
jsonRequestBodyExample,
|
|
56
|
+
methods,
|
|
57
|
+
required,
|
|
58
|
+
}) {
|
|
56
59
|
const contentType = (0, hooks_1.useTypedSelector)(
|
|
57
60
|
(state) => state.contentType.value
|
|
58
61
|
);
|
|
59
|
-
const required = requestBodyMetadata?.required;
|
|
60
62
|
const dispatch = (0, hooks_1.useTypedDispatch)();
|
|
61
63
|
// Lot's of possible content-types:
|
|
62
64
|
// - application/json
|
|
@@ -82,7 +84,7 @@ function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
|
|
|
82
84
|
if (schema?.format === "binary") {
|
|
83
85
|
return react_1.default.createElement(
|
|
84
86
|
FormItem_1.default,
|
|
85
|
-
|
|
87
|
+
null,
|
|
86
88
|
react_1.default.createElement(FormFileUpload_1.default, {
|
|
87
89
|
placeholder: schema.description || "Body",
|
|
88
90
|
onChange: (file) => {
|
|
@@ -107,17 +109,10 @@ function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
|
|
|
107
109
|
) {
|
|
108
110
|
return react_1.default.createElement(
|
|
109
111
|
FormItem_1.default,
|
|
110
|
-
{
|
|
112
|
+
{ className: "openapi-demo__form-item-body-container" },
|
|
111
113
|
react_1.default.createElement(
|
|
112
114
|
"div",
|
|
113
|
-
|
|
114
|
-
style: {
|
|
115
|
-
marginTop: "calc(var(--ifm-pre-padding) / 2)",
|
|
116
|
-
borderRadius: "4px",
|
|
117
|
-
padding: "var(--ifm-pre-padding)",
|
|
118
|
-
border: "1px solid var(--openapi-monaco-border-color)",
|
|
119
|
-
},
|
|
120
|
-
},
|
|
115
|
+
null,
|
|
121
116
|
Object.entries(schema.properties ?? {}).map(([key, val]) => {
|
|
122
117
|
if (val.format === "binary") {
|
|
123
118
|
return react_1.default.createElement(
|
|
@@ -187,6 +182,9 @@ function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
|
|
|
187
182
|
Array.isArray(schema.required) && schema.required.includes(key),
|
|
188
183
|
},
|
|
189
184
|
react_1.default.createElement(FormTextInput_1.default, {
|
|
185
|
+
paramName: key,
|
|
186
|
+
isRequired:
|
|
187
|
+
Array.isArray(schema.required) && schema.required.includes(key),
|
|
190
188
|
placeholder: val.description || key,
|
|
191
189
|
onChange: (e) => {
|
|
192
190
|
dispatch(
|
|
@@ -277,7 +275,7 @@ function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
|
|
|
277
275
|
if (exampleBody) {
|
|
278
276
|
return react_1.default.createElement(
|
|
279
277
|
FormItem_1.default,
|
|
280
|
-
|
|
278
|
+
null,
|
|
281
279
|
react_1.default.createElement(
|
|
282
280
|
SchemaTabs_1.default,
|
|
283
281
|
{ className: "openapi-tabs__schema", lazy: true },
|
|
@@ -286,7 +284,7 @@ function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
|
|
|
286
284
|
{ label: "Default", value: "default", default: true },
|
|
287
285
|
react_1.default.createElement(
|
|
288
286
|
LiveEditor_1.default,
|
|
289
|
-
{ action: dispatch, language: language },
|
|
287
|
+
{ action: dispatch, language: language, required: required },
|
|
290
288
|
defaultBody
|
|
291
289
|
)
|
|
292
290
|
),
|
|
@@ -296,7 +294,7 @@ function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
|
|
|
296
294
|
exampleBody &&
|
|
297
295
|
react_1.default.createElement(
|
|
298
296
|
LiveEditor_1.default,
|
|
299
|
-
{ action: dispatch, language: language },
|
|
297
|
+
{ action: dispatch, language: language, required: required },
|
|
300
298
|
exampleBody
|
|
301
299
|
)
|
|
302
300
|
)
|
|
@@ -306,7 +304,7 @@ function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
|
|
|
306
304
|
if (examplesBodies && examplesBodies.length > 0) {
|
|
307
305
|
return react_1.default.createElement(
|
|
308
306
|
FormItem_1.default,
|
|
309
|
-
{
|
|
307
|
+
{ className: "openapi-demo__form-item-body-container" },
|
|
310
308
|
react_1.default.createElement(
|
|
311
309
|
SchemaTabs_1.default,
|
|
312
310
|
{ className: "openapi-tabs__schema", lazy: true },
|
|
@@ -315,7 +313,7 @@ function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
|
|
|
315
313
|
{ label: "Default", value: "default", default: true },
|
|
316
314
|
react_1.default.createElement(
|
|
317
315
|
LiveEditor_1.default,
|
|
318
|
-
{ action: dispatch, language: language },
|
|
316
|
+
{ action: dispatch, language: language, required: required },
|
|
319
317
|
defaultBody
|
|
320
318
|
)
|
|
321
319
|
),
|
|
@@ -345,10 +343,10 @@ function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
|
|
|
345
343
|
}
|
|
346
344
|
return react_1.default.createElement(
|
|
347
345
|
FormItem_1.default,
|
|
348
|
-
|
|
346
|
+
null,
|
|
349
347
|
react_1.default.createElement(
|
|
350
348
|
LiveEditor_1.default,
|
|
351
|
-
{ action: dispatch, language: language },
|
|
349
|
+
{ action: dispatch, language: language, required: required },
|
|
352
350
|
defaultBody
|
|
353
351
|
)
|
|
354
352
|
);
|
|
@@ -13,6 +13,22 @@
|
|
|
13
13
|
.openapi-tabs__code-container {
|
|
14
14
|
margin-bottom: 1rem;
|
|
15
15
|
|
|
16
|
+
&:not(.openapi-tabs__code-container-inner) {
|
|
17
|
+
padding: 1rem;
|
|
18
|
+
background-color: var(--ifm-pre-background);
|
|
19
|
+
border-radius: var(--ifm-global-radius);
|
|
20
|
+
border: 1px solid var(--openapi-demo-border-color);
|
|
21
|
+
box-shadow: 0 2px 3px hsla(222, 8%, 43%, 0.1),
|
|
22
|
+
0 8px 16px -10px hsla(222, 8%, 43%, 0.2);
|
|
23
|
+
transition: 300ms;
|
|
24
|
+
|
|
25
|
+
&:hover {
|
|
26
|
+
box-shadow: 0 0 0 2px rgba(38, 53, 61, 0.15),
|
|
27
|
+
0 2px 3px hsla(222, 8%, 43%, 0.15),
|
|
28
|
+
0 16px 16px -10px hsla(222, 8%, 43%, 0.2);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
16
32
|
.openapi-tabs__code-item {
|
|
17
33
|
display: flex;
|
|
18
34
|
flex-direction: column-reverse;
|
|
@@ -54,6 +70,8 @@
|
|
|
54
70
|
|
|
55
71
|
.openapi-demo__code-block code {
|
|
56
72
|
max-height: 200px;
|
|
73
|
+
font-size: var(--openapi-demo-font-size-code);
|
|
74
|
+
padding-top: var(--ifm-pre-padding);
|
|
57
75
|
}
|
|
58
76
|
|
|
59
77
|
body[class="ReactModal__Body--open"] {
|
|
@@ -147,8 +147,14 @@ function TabContent({ lazy, children, selectedValue }) {
|
|
|
147
147
|
|
|
148
148
|
function TabsComponent(props) {
|
|
149
149
|
const tabs = useTabs(props);
|
|
150
|
+
const { className } = props;
|
|
151
|
+
|
|
150
152
|
return (
|
|
151
|
-
<div
|
|
153
|
+
<div
|
|
154
|
+
className={clsx("tabs-container openapi-tabs__code-container", {
|
|
155
|
+
[className]: className,
|
|
156
|
+
})}
|
|
157
|
+
>
|
|
152
158
|
<TabList {...props} {...tabs} />
|
|
153
159
|
<TabContent {...props} {...tabs} />
|
|
154
160
|
</div>
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
.openapi-demo__form-item {
|
|
2
|
-
|
|
2
|
+
padding: var(--openapi-demo-padding-input);
|
|
3
|
+
font-size: var(--openapi-demo-font-size-input);
|
|
3
4
|
|
|
4
5
|
&:first-child {
|
|
5
6
|
margin-top: 0;
|
|
6
7
|
}
|
|
7
8
|
|
|
8
9
|
.required {
|
|
9
|
-
font-size: var(--ifm-code-font-size);
|
|
10
10
|
color: var(--openapi-required);
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
+
|
|
14
|
+
.openapi-demo__form-item-body-container {
|
|
15
|
+
padding: 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.openapi-demo__form-item-label {
|
|
19
|
+
font-family: var(--ifm-font-family-monospace);
|
|
20
|
+
font-weight: bold;
|
|
21
|
+
}
|
|
@@ -4,6 +4,7 @@ export interface Props {
|
|
|
4
4
|
type?: string;
|
|
5
5
|
required?: boolean | undefined;
|
|
6
6
|
children?: React.ReactNode;
|
|
7
|
+
className?: string;
|
|
7
8
|
}
|
|
8
|
-
declare function FormItem({ label, type, required, children }: Props): JSX.Element;
|
|
9
|
+
declare function FormItem({ label, type, required, children, className }: Props): JSX.Element;
|
|
9
10
|
export default FormItem;
|
|
@@ -12,11 +12,17 @@ var __importDefault =
|
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
const react_1 = __importDefault(require("react"));
|
|
15
|
-
|
|
15
|
+
const clsx_1 = __importDefault(require("clsx"));
|
|
16
|
+
function FormItem({ label, type, required, children, className }) {
|
|
16
17
|
return react_1.default.createElement(
|
|
17
18
|
"div",
|
|
18
|
-
{ className: "openapi-demo__form-item" },
|
|
19
|
-
|
|
19
|
+
{ className: (0, clsx_1.default)("openapi-demo__form-item", className) },
|
|
20
|
+
label &&
|
|
21
|
+
react_1.default.createElement(
|
|
22
|
+
"label",
|
|
23
|
+
{ className: "openapi-demo__form-item-label" },
|
|
24
|
+
label
|
|
25
|
+
),
|
|
20
26
|
type &&
|
|
21
27
|
react_1.default.createElement(
|
|
22
28
|
"span",
|
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
.openapi-demo__multi-select-input {
|
|
2
2
|
width: 100%;
|
|
3
3
|
margin-top: calc(var(--ifm-pre-padding) / 2);
|
|
4
|
-
padding:
|
|
4
|
+
padding: 1rem;
|
|
5
5
|
border-radius: 4px;
|
|
6
|
-
border:
|
|
6
|
+
border: 1px solid transparent;
|
|
7
7
|
background-color: var(--openapi-input-background);
|
|
8
8
|
outline: none;
|
|
9
|
-
font-size: var(--
|
|
9
|
+
font-size: var(--openapi-demo-font-size-input);
|
|
10
10
|
color: var(--ifm-pre-color);
|
|
11
11
|
-moz-appearance: none;
|
|
12
12
|
-webkit-appearance: none;
|
|
13
13
|
appearance: none;
|
|
14
14
|
|
|
15
15
|
&:focus {
|
|
16
|
-
border:
|
|
16
|
+
border: 1px solid var(--openapi-input-border);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
&.error {
|
|
20
|
+
border: 1px solid var(--ifm-color-danger);
|
|
17
21
|
}
|
|
18
22
|
|
|
19
23
|
option {
|
|
@@ -3,6 +3,7 @@ export interface Props {
|
|
|
3
3
|
value?: string;
|
|
4
4
|
options: string[];
|
|
5
5
|
onChange?: React.ChangeEventHandler<HTMLSelectElement>;
|
|
6
|
+
showErrors?: boolean;
|
|
6
7
|
}
|
|
7
|
-
declare function FormMultiSelect({ value, options, onChange }: Props): JSX.Element | null;
|
|
8
|
+
declare function FormMultiSelect({ value, options, onChange, showErrors }: Props): JSX.Element | null;
|
|
8
9
|
export default FormMultiSelect;
|
|
@@ -12,7 +12,8 @@ var __importDefault =
|
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
const react_1 = __importDefault(require("react"));
|
|
15
|
-
|
|
15
|
+
const clsx_1 = __importDefault(require("clsx"));
|
|
16
|
+
function FormMultiSelect({ value, options, onChange, showErrors }) {
|
|
16
17
|
if (options.length === 0) {
|
|
17
18
|
return null;
|
|
18
19
|
}
|
|
@@ -30,7 +31,9 @@ function FormMultiSelect({ value, options, onChange }) {
|
|
|
30
31
|
"select",
|
|
31
32
|
{
|
|
32
33
|
style: { height: height },
|
|
33
|
-
className: "openapi-demo__multi-select-input",
|
|
34
|
+
className: (0, clsx_1.default)("openapi-demo__multi-select-input", {
|
|
35
|
+
error: showErrors,
|
|
36
|
+
}),
|
|
34
37
|
value: value,
|
|
35
38
|
onChange: onChange,
|
|
36
39
|
size: Math.min(6, options.length + 1),
|
|
@@ -4,7 +4,6 @@ html[data-theme="dark"] .openapi-demo__select-input {
|
|
|
4
4
|
border: none;
|
|
5
5
|
outline: none;
|
|
6
6
|
width: 100%;
|
|
7
|
-
font-size: var(--ifm-code-font-size);
|
|
8
7
|
color: var(--ifm-pre-color);
|
|
9
8
|
|
|
10
9
|
border-radius: 4px;
|
|
@@ -21,12 +20,13 @@ html[data-theme="dark"] .openapi-demo__select-input {
|
|
|
21
20
|
.openapi-demo__select-input {
|
|
22
21
|
width: 100%;
|
|
23
22
|
margin-top: calc(var(--ifm-pre-padding) / 2);
|
|
24
|
-
padding:
|
|
23
|
+
padding: var(--openapi-demo-padding-input);
|
|
25
24
|
border: none;
|
|
26
25
|
outline: none;
|
|
27
26
|
border-radius: 4px;
|
|
28
27
|
background-color: var(--openapi-input-background);
|
|
29
|
-
font-size: var(--
|
|
28
|
+
font-size: var(--openapi-demo-font-size-input);
|
|
29
|
+
font-family: var(--ifm-font-family-monospace);
|
|
30
30
|
color: var(--ifm-pre-color);
|
|
31
31
|
-moz-appearance: none;
|
|
32
32
|
-webkit-appearance: none;
|
|
@@ -1,15 +1,34 @@
|
|
|
1
|
-
.openapi-
|
|
1
|
+
.openapi-demo__form-item-input {
|
|
2
2
|
margin-top: calc(var(--ifm-pre-padding) / 2);
|
|
3
3
|
background-color: var(--openapi-input-background);
|
|
4
|
-
border:
|
|
4
|
+
border: 1px solid transparent;
|
|
5
5
|
outline: none;
|
|
6
6
|
width: 100%;
|
|
7
|
-
font-size: var(--ifm-code-font-size);
|
|
8
7
|
color: var(--ifm-pre-color);
|
|
9
|
-
padding:
|
|
8
|
+
padding: var(--openapi-demo-padding-input);
|
|
10
9
|
border-radius: 4px;
|
|
11
10
|
|
|
11
|
+
&:hover {
|
|
12
|
+
border: 1px solid var(--ifm-toc-border-color);
|
|
13
|
+
}
|
|
14
|
+
|
|
12
15
|
&:focus {
|
|
13
|
-
|
|
16
|
+
border: 1px solid var(--ifm-color-primary);
|
|
17
|
+
box-shadow: none;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
&.error {
|
|
21
|
+
border: 1px solid var(--openapi-required);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.openapi-demo__input-error {
|
|
26
|
+
font-size: var(--openapi-demo-font-size-input);
|
|
27
|
+
color: var(--openapi-required);
|
|
28
|
+
padding-top: var(--openapi-demo-padding-input);
|
|
29
|
+
|
|
30
|
+
&::before {
|
|
31
|
+
display: inline;
|
|
32
|
+
content: "⚠ ";
|
|
14
33
|
}
|
|
15
34
|
}
|
|
@@ -5,5 +5,5 @@ export interface Props {
|
|
|
5
5
|
password?: boolean;
|
|
6
6
|
onChange?: React.ChangeEventHandler<HTMLInputElement>;
|
|
7
7
|
}
|
|
8
|
-
declare function FormTextInput({ value, placeholder, password, onChange }: Props): JSX.Element;
|
|
8
|
+
declare function FormTextInput({ isRequired, value, placeholder, password, onChange, paramName, }: Props): JSX.Element;
|
|
9
9
|
export default FormTextInput;
|
|
@@ -11,17 +11,63 @@ var __importDefault =
|
|
|
11
11
|
return mod && mod.__esModule ? mod : { default: mod };
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
// @ts-nocheck
|
|
14
15
|
const react_1 = __importDefault(require("react"));
|
|
15
|
-
|
|
16
|
+
const error_message_1 = require("@hookform/error-message");
|
|
17
|
+
const clsx_1 = __importDefault(require("clsx"));
|
|
18
|
+
const react_hook_form_1 = require("react-hook-form");
|
|
19
|
+
function FormTextInput({
|
|
20
|
+
isRequired,
|
|
21
|
+
value,
|
|
22
|
+
placeholder,
|
|
23
|
+
password,
|
|
24
|
+
onChange,
|
|
25
|
+
paramName,
|
|
26
|
+
}) {
|
|
16
27
|
placeholder = placeholder?.split("\n")[0];
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
28
|
+
const {
|
|
29
|
+
register,
|
|
30
|
+
formState: { errors },
|
|
31
|
+
} = (0, react_hook_form_1.useFormContext)();
|
|
32
|
+
const showErrorMessage = errors?.[paramName]?.message;
|
|
33
|
+
return react_1.default.createElement(
|
|
34
|
+
react_1.default.Fragment,
|
|
35
|
+
null,
|
|
36
|
+
paramName
|
|
37
|
+
? react_1.default.createElement("input", {
|
|
38
|
+
...register(paramName, {
|
|
39
|
+
required: isRequired ? "This field is required" : false,
|
|
40
|
+
}),
|
|
41
|
+
className: (0, clsx_1.default)("openapi-demo__form-item-input", {
|
|
42
|
+
error: showErrorMessage,
|
|
43
|
+
}),
|
|
44
|
+
type: password ? "password" : "text",
|
|
45
|
+
placeholder: placeholder,
|
|
46
|
+
title: placeholder,
|
|
47
|
+
value: value,
|
|
48
|
+
onChange: onChange,
|
|
49
|
+
autoComplete: "off",
|
|
50
|
+
})
|
|
51
|
+
: react_1.default.createElement("input", {
|
|
52
|
+
className: "openapi-demo__form-item-input",
|
|
53
|
+
type: password ? "password" : "text",
|
|
54
|
+
placeholder: placeholder,
|
|
55
|
+
title: placeholder,
|
|
56
|
+
value: value,
|
|
57
|
+
onChange: onChange,
|
|
58
|
+
autoComplete: "off",
|
|
59
|
+
}),
|
|
60
|
+
showErrorMessage &&
|
|
61
|
+
react_1.default.createElement(error_message_1.ErrorMessage, {
|
|
62
|
+
errors: errors,
|
|
63
|
+
name: paramName,
|
|
64
|
+
render: ({ message }) =>
|
|
65
|
+
react_1.default.createElement(
|
|
66
|
+
"div",
|
|
67
|
+
{ className: "openapi-demo__input-error" },
|
|
68
|
+
message
|
|
69
|
+
),
|
|
70
|
+
})
|
|
71
|
+
);
|
|
26
72
|
}
|
|
27
73
|
exports.default = FormTextInput;
|
|
@@ -58,40 +58,64 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
58
58
|
const react_1 = __importStar(require("react"));
|
|
59
59
|
const theme_common_1 = require("@docusaurus/theme-common");
|
|
60
60
|
const useIsBrowser_1 = __importDefault(require("@docusaurus/useIsBrowser"));
|
|
61
|
+
const error_message_1 = require("@hookform/error-message");
|
|
61
62
|
const slice_1 = require("@theme/ApiDemoPanel/Body/slice");
|
|
63
|
+
const clsx_1 = __importDefault(require("clsx"));
|
|
64
|
+
const react_hook_form_1 = require("react-hook-form");
|
|
62
65
|
const react_live_1 = require("react-live");
|
|
63
|
-
function Live({ onEdit }) {
|
|
66
|
+
function Live({ onEdit, showErrors }) {
|
|
64
67
|
const isBrowser = (0, useIsBrowser_1.default)();
|
|
65
68
|
const [editorDisabled, setEditorDisabled] = (0, react_1.useState)(false);
|
|
66
|
-
// TODO: Temporary solution for disabling tab key
|
|
67
|
-
const handleKeydown = (event) => {
|
|
68
|
-
if (event.key === "Tab") {
|
|
69
|
-
event.preventDefault();
|
|
70
|
-
setEditorDisabled(true);
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
69
|
return react_1.default.createElement(
|
|
74
70
|
"div",
|
|
75
|
-
{
|
|
71
|
+
{
|
|
72
|
+
onClick: () => setEditorDisabled(false),
|
|
73
|
+
onBlur: () => setEditorDisabled(true),
|
|
74
|
+
},
|
|
76
75
|
react_1.default.createElement(react_live_1.LiveEditor, {
|
|
77
76
|
key: String(isBrowser),
|
|
78
|
-
className:
|
|
77
|
+
className: (0, clsx_1.default)({
|
|
78
|
+
"openapi-demo__playground-editor": true,
|
|
79
|
+
"openapi-demo__form-item-input": showErrors,
|
|
80
|
+
error: showErrors,
|
|
81
|
+
}),
|
|
79
82
|
onChange: onEdit,
|
|
80
83
|
disabled: editorDisabled,
|
|
81
|
-
|
|
84
|
+
tabMode: "focus",
|
|
82
85
|
})
|
|
83
86
|
);
|
|
84
87
|
}
|
|
85
88
|
const LiveComponent = (0, react_live_1.withLive)(Live);
|
|
86
|
-
function App({
|
|
89
|
+
function App({
|
|
90
|
+
children,
|
|
91
|
+
transformCode,
|
|
92
|
+
value,
|
|
93
|
+
language,
|
|
94
|
+
action,
|
|
95
|
+
required: isRequired,
|
|
96
|
+
...props
|
|
97
|
+
}) {
|
|
87
98
|
const prismTheme = (0, theme_common_1.usePrismTheme)();
|
|
88
99
|
const [code, setCode] = react_1.default.useState(children);
|
|
89
100
|
(0, react_1.useEffect)(() => {
|
|
90
101
|
action((0, slice_1.setStringRawBody)(code));
|
|
91
102
|
}, [action, code]);
|
|
103
|
+
const {
|
|
104
|
+
control,
|
|
105
|
+
formState: { errors },
|
|
106
|
+
} = (0, react_hook_form_1.useFormContext)();
|
|
107
|
+
const showErrorMessage = errors?.requestBody;
|
|
108
|
+
const handleChange = (snippet, onChange) => {
|
|
109
|
+
setCode(snippet);
|
|
110
|
+
onChange(snippet);
|
|
111
|
+
};
|
|
92
112
|
return react_1.default.createElement(
|
|
93
113
|
"div",
|
|
94
|
-
{
|
|
114
|
+
{
|
|
115
|
+
className: (0, clsx_1.default)({
|
|
116
|
+
"openapi-demo__playground-container": true,
|
|
117
|
+
}),
|
|
118
|
+
},
|
|
95
119
|
react_1.default.createElement(
|
|
96
120
|
react_live_1.LiveProvider,
|
|
97
121
|
{
|
|
@@ -101,7 +125,28 @@ function App({ children, transformCode, value, language, action, ...props }) {
|
|
|
101
125
|
language: language,
|
|
102
126
|
...props,
|
|
103
127
|
},
|
|
104
|
-
react_1.default.createElement(
|
|
128
|
+
react_1.default.createElement(react_hook_form_1.Controller, {
|
|
129
|
+
control: control,
|
|
130
|
+
rules: { required: isRequired ? "This field is required" : false },
|
|
131
|
+
name: "requestBody",
|
|
132
|
+
render: ({ field: { onChange, name } }) =>
|
|
133
|
+
react_1.default.createElement(LiveComponent, {
|
|
134
|
+
onEdit: (e) => handleChange(e, onChange),
|
|
135
|
+
name: name,
|
|
136
|
+
showErrors: showErrorMessage,
|
|
137
|
+
}),
|
|
138
|
+
}),
|
|
139
|
+
showErrorMessage &&
|
|
140
|
+
react_1.default.createElement(error_message_1.ErrorMessage, {
|
|
141
|
+
errors: errors,
|
|
142
|
+
name: "requestBody",
|
|
143
|
+
render: ({ message }) =>
|
|
144
|
+
react_1.default.createElement(
|
|
145
|
+
"div",
|
|
146
|
+
{ className: "openapi-demo__input-error" },
|
|
147
|
+
message
|
|
148
|
+
),
|
|
149
|
+
})
|
|
105
150
|
)
|
|
106
151
|
);
|
|
107
152
|
}
|