docusaurus-theme-openapi-docs 0.0.0-beta.646 → 0.0.0-beta.647
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/CodeTabs/_CodeTabs.scss +77 -39
- package/lib/theme/ApiDemoPanel/CodeTabs/index.js +17 -5
- package/lib/theme/ApiDemoPanel/Curl/index.d.ts +5 -4
- package/lib/theme/ApiDemoPanel/Curl/index.js +78 -11
- package/lib/theme/styles.scss +21 -0
- package/package.json +3 -3
- package/src/theme/ApiDemoPanel/CodeTabs/_CodeTabs.scss +77 -39
- package/src/theme/ApiDemoPanel/CodeTabs/index.js +17 -5
- package/src/theme/ApiDemoPanel/Curl/index.tsx +84 -22
- package/src/theme/styles.scss +21 -0
|
@@ -12,11 +12,39 @@
|
|
|
12
12
|
|
|
13
13
|
.openapi-tabs__code-container {
|
|
14
14
|
margin-bottom: 1rem;
|
|
15
|
+
|
|
16
|
+
.openapi-tabs__code-item {
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-direction: column-reverse;
|
|
19
|
+
flex: 0 0 80px;
|
|
20
|
+
align-items: center;
|
|
21
|
+
padding: 0.5rem 0 !important;
|
|
22
|
+
margin-top: 0 !important;
|
|
23
|
+
margin-right: 0.5rem;
|
|
24
|
+
border: 1px solid transparent;
|
|
25
|
+
transition: 300ms;
|
|
26
|
+
|
|
27
|
+
&:not(.active):hover {
|
|
28
|
+
border: 1px solid var(--openapi-code-tab-border-color);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
&:hover {
|
|
32
|
+
background-color: transparent;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
span {
|
|
36
|
+
padding-top: 0.5rem;
|
|
37
|
+
color: var(--ifm-font-color-secondary);
|
|
38
|
+
font-size: 10px;
|
|
39
|
+
text-transform: uppercase;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
15
42
|
}
|
|
16
43
|
|
|
17
44
|
.openapi-tabs__code-list-container {
|
|
18
45
|
display: flex;
|
|
19
46
|
justify-content: flex-start;
|
|
47
|
+
padding: 0.25rem;
|
|
20
48
|
padding-bottom: 0.6rem;
|
|
21
49
|
}
|
|
22
50
|
|
|
@@ -34,20 +62,20 @@ body[class="ReactModal__Body--open"] {
|
|
|
34
62
|
}
|
|
35
63
|
}
|
|
36
64
|
|
|
37
|
-
.openapi-tabs__code-item {
|
|
38
|
-
|
|
39
|
-
margin-right: 0.5rem;
|
|
40
|
-
padding-left: 1.5rem;
|
|
41
|
-
padding-right: 1.5rem;
|
|
42
|
-
padding-top: 1rem !important;
|
|
43
|
-
padding-bottom: 1rem !important;
|
|
65
|
+
.openapi-tabs__code-item--variant {
|
|
66
|
+
color: var(--ifm-color-secondary);
|
|
44
67
|
|
|
45
68
|
&.active {
|
|
46
|
-
border-
|
|
47
|
-
border-bottom-right-radius: 0;
|
|
69
|
+
border-color: var(--ifm-toc-border-color);
|
|
48
70
|
}
|
|
49
71
|
}
|
|
50
72
|
|
|
73
|
+
.openapi-tabs__code-item--variant > span {
|
|
74
|
+
padding-top: unset !important;
|
|
75
|
+
padding-left: 0.5rem !important;
|
|
76
|
+
padding-right: 0.5rem !important;
|
|
77
|
+
}
|
|
78
|
+
|
|
51
79
|
.openapi-tabs__code-item--python {
|
|
52
80
|
color: var(--ifm-color-success);
|
|
53
81
|
|
|
@@ -55,13 +83,14 @@ body[class="ReactModal__Body--open"] {
|
|
|
55
83
|
content: "";
|
|
56
84
|
width: var(--code-tab-logo-width);
|
|
57
85
|
height: var(--code-tab-logo-height);
|
|
58
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/python/python-original.svg")
|
|
86
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/python/python-original.svg")
|
|
87
|
+
no-repeat;
|
|
59
88
|
margin-block: auto;
|
|
60
89
|
}
|
|
61
90
|
|
|
62
91
|
&.active {
|
|
63
|
-
|
|
64
|
-
|
|
92
|
+
box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-python);
|
|
93
|
+
border-color: var(--openapi-code-tab-border-color-python);
|
|
65
94
|
}
|
|
66
95
|
}
|
|
67
96
|
|
|
@@ -72,13 +101,14 @@ body[class="ReactModal__Body--open"] {
|
|
|
72
101
|
content: "";
|
|
73
102
|
width: var(--code-tab-logo-width);
|
|
74
103
|
height: var(--code-tab-logo-height);
|
|
75
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/go/go-original-wordmark.svg")
|
|
104
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/go/go-original-wordmark.svg")
|
|
105
|
+
no-repeat;
|
|
76
106
|
margin-block: auto;
|
|
77
107
|
}
|
|
78
108
|
|
|
79
109
|
&.active {
|
|
80
|
-
|
|
81
|
-
|
|
110
|
+
box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-go);
|
|
111
|
+
border-color: var(--openapi-code-tab-border-color-go);
|
|
82
112
|
}
|
|
83
113
|
}
|
|
84
114
|
|
|
@@ -89,13 +119,14 @@ body[class="ReactModal__Body--open"] {
|
|
|
89
119
|
content: "";
|
|
90
120
|
width: var(--code-tab-logo-width);
|
|
91
121
|
height: var(--code-tab-logo-height);
|
|
92
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/javascript/javascript-original.svg")
|
|
122
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/javascript/javascript-original.svg")
|
|
123
|
+
no-repeat;
|
|
93
124
|
margin-block: auto;
|
|
94
125
|
}
|
|
95
126
|
|
|
96
127
|
&.active {
|
|
97
|
-
|
|
98
|
-
|
|
128
|
+
box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-js);
|
|
129
|
+
border-color: var(--openapi-code-tab-border-color-js);
|
|
99
130
|
}
|
|
100
131
|
}
|
|
101
132
|
|
|
@@ -106,15 +137,16 @@ body[class="ReactModal__Body--open"] {
|
|
|
106
137
|
content: "";
|
|
107
138
|
width: var(--code-tab-logo-width);
|
|
108
139
|
height: var(--code-tab-logo-height);
|
|
109
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/bash/bash-plain.svg")
|
|
140
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/bash/bash-plain.svg")
|
|
141
|
+
no-repeat;
|
|
110
142
|
margin-block: auto;
|
|
111
143
|
background-color: var(--bash-background-color);
|
|
112
144
|
border-radius: var(--bash-border-radius);
|
|
113
145
|
}
|
|
114
146
|
|
|
115
147
|
&.active {
|
|
116
|
-
|
|
117
|
-
|
|
148
|
+
box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-bash);
|
|
149
|
+
border-color: var(--ifm-color-danger);
|
|
118
150
|
}
|
|
119
151
|
}
|
|
120
152
|
|
|
@@ -125,13 +157,14 @@ body[class="ReactModal__Body--open"] {
|
|
|
125
157
|
content: "";
|
|
126
158
|
width: var(--code-tab-logo-width);
|
|
127
159
|
height: var(--code-tab-logo-height);
|
|
128
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/ruby/ruby-plain.svg")
|
|
160
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/ruby/ruby-plain.svg")
|
|
161
|
+
no-repeat;
|
|
129
162
|
margin-block: auto;
|
|
130
163
|
}
|
|
131
164
|
|
|
132
165
|
&.active {
|
|
133
|
-
|
|
134
|
-
|
|
166
|
+
box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-ruby);
|
|
167
|
+
border-color: var(--openapi-code-tab-border-color-ruby);
|
|
135
168
|
}
|
|
136
169
|
}
|
|
137
170
|
|
|
@@ -142,13 +175,14 @@ body[class="ReactModal__Body--open"] {
|
|
|
142
175
|
content: "";
|
|
143
176
|
width: var(--code-tab-logo-width);
|
|
144
177
|
height: var(--code-tab-logo-height);
|
|
145
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/csharp/csharp-original.svg")
|
|
178
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/csharp/csharp-original.svg")
|
|
179
|
+
no-repeat;
|
|
146
180
|
margin-block: auto;
|
|
147
181
|
}
|
|
148
182
|
|
|
149
183
|
&.active {
|
|
150
|
-
|
|
151
|
-
|
|
184
|
+
box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-csharp);
|
|
185
|
+
border-color: var(--openapi-code-tab-border-color-csharp);
|
|
152
186
|
}
|
|
153
187
|
}
|
|
154
188
|
|
|
@@ -159,13 +193,14 @@ body[class="ReactModal__Body--open"] {
|
|
|
159
193
|
content: "";
|
|
160
194
|
width: var(--code-tab-logo-width);
|
|
161
195
|
height: var(--code-tab-logo-height);
|
|
162
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/nodejs/nodejs-original.svg")
|
|
196
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/nodejs/nodejs-original.svg")
|
|
197
|
+
no-repeat;
|
|
163
198
|
margin-block: auto;
|
|
164
199
|
}
|
|
165
200
|
|
|
166
201
|
&.active {
|
|
167
|
-
|
|
168
|
-
|
|
202
|
+
box-shadow: 0 0 0 3px var(--opeanpi-code-tab-shadow-color-nodejs);
|
|
203
|
+
border-color: var(--openapi-code-tab-border-color-nodejs);
|
|
169
204
|
}
|
|
170
205
|
}
|
|
171
206
|
|
|
@@ -176,13 +211,14 @@ body[class="ReactModal__Body--open"] {
|
|
|
176
211
|
content: "";
|
|
177
212
|
width: var(--code-tab-logo-width);
|
|
178
213
|
height: var(--code-tab-logo-height);
|
|
179
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/php/php-original.svg")
|
|
214
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/php/php-original.svg")
|
|
215
|
+
no-repeat;
|
|
180
216
|
margin-block: auto;
|
|
181
217
|
}
|
|
182
218
|
|
|
183
219
|
&.active {
|
|
184
|
-
|
|
185
|
-
|
|
220
|
+
box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-php);
|
|
221
|
+
border-color: var(--openapi-code-tab-border-color-php);
|
|
186
222
|
}
|
|
187
223
|
}
|
|
188
224
|
|
|
@@ -193,13 +229,14 @@ body[class="ReactModal__Body--open"] {
|
|
|
193
229
|
content: "";
|
|
194
230
|
width: var(--code-tab-logo-width);
|
|
195
231
|
height: var(--code-tab-logo-height);
|
|
196
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/java/java-original.svg")
|
|
232
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/java/java-original.svg")
|
|
233
|
+
no-repeat;
|
|
197
234
|
margin-block: auto;
|
|
198
235
|
}
|
|
199
236
|
|
|
200
237
|
&.active {
|
|
201
|
-
|
|
202
|
-
|
|
238
|
+
box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-java);
|
|
239
|
+
border-color: var(--openapi-code-tab-border-color-java);
|
|
203
240
|
}
|
|
204
241
|
}
|
|
205
242
|
|
|
@@ -210,13 +247,14 @@ body[class="ReactModal__Body--open"] {
|
|
|
210
247
|
content: "";
|
|
211
248
|
width: var(--code-tab-logo-width);
|
|
212
249
|
height: var(--code-tab-logo-height);
|
|
213
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/windows8/windows8-original.svg")
|
|
250
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/windows8/windows8-original.svg")
|
|
251
|
+
no-repeat;
|
|
214
252
|
margin-block: auto;
|
|
215
253
|
}
|
|
216
254
|
|
|
217
255
|
&.active {
|
|
218
|
-
|
|
219
|
-
|
|
256
|
+
box-shadow: 0 0 0 3px var(--opeanpi-code-tab-shadow-color-powershell);
|
|
257
|
+
border-color: var(--openapi-code-tab-border-color-powershell);
|
|
220
258
|
}
|
|
221
259
|
}
|
|
222
260
|
|
|
@@ -17,6 +17,8 @@ import clsx from "clsx";
|
|
|
17
17
|
|
|
18
18
|
function TabList({
|
|
19
19
|
action,
|
|
20
|
+
currentLanguage,
|
|
21
|
+
includeVariant,
|
|
20
22
|
className,
|
|
21
23
|
block,
|
|
22
24
|
selectedValue,
|
|
@@ -38,10 +40,20 @@ function TabList({
|
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
if (action) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
let newLanguage;
|
|
44
|
+
if (currentLanguage && includeVariant) {
|
|
45
|
+
newLanguage = languageSet.filter(
|
|
46
|
+
(lang) => lang.language === currentLanguage
|
|
47
|
+
)[0];
|
|
48
|
+
newLanguage.variant = newTabValue;
|
|
49
|
+
action.setSelectedVariant(newTabValue.toLowerCase());
|
|
50
|
+
} else {
|
|
51
|
+
newLanguage = languageSet.filter(
|
|
52
|
+
(lang) => lang.language === newTabValue
|
|
53
|
+
)[0];
|
|
54
|
+
action.setSelectedVariant(newLanguage.variant.toLowerCase());
|
|
55
|
+
}
|
|
56
|
+
action.setLanguage(newLanguage);
|
|
45
57
|
}
|
|
46
58
|
};
|
|
47
59
|
|
|
@@ -101,7 +113,7 @@ function TabList({
|
|
|
101
113
|
}
|
|
102
114
|
)}
|
|
103
115
|
>
|
|
104
|
-
{label ?? value}
|
|
116
|
+
<span>{label ?? value}</span>
|
|
105
117
|
</li>
|
|
106
118
|
))}
|
|
107
119
|
</ul>
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import sdk from "@paloaltonetworks/postman-collection";
|
|
3
3
|
export interface Language {
|
|
4
|
-
highlight
|
|
4
|
+
highlight: string;
|
|
5
5
|
language: string;
|
|
6
|
-
logoClass
|
|
7
|
-
variant
|
|
8
|
-
|
|
6
|
+
logoClass: string;
|
|
7
|
+
variant: string;
|
|
8
|
+
variants: string[];
|
|
9
|
+
options: {
|
|
9
10
|
[key: string]: boolean;
|
|
10
11
|
};
|
|
11
12
|
source?: string;
|
|
@@ -83,6 +83,7 @@ exports.languageSet = [
|
|
|
83
83
|
trimRequestBody: true,
|
|
84
84
|
},
|
|
85
85
|
variant: "cURL",
|
|
86
|
+
variants: ["curl"],
|
|
86
87
|
},
|
|
87
88
|
{
|
|
88
89
|
highlight: "python",
|
|
@@ -93,6 +94,7 @@ exports.languageSet = [
|
|
|
93
94
|
trimRequestBody: true,
|
|
94
95
|
},
|
|
95
96
|
variant: "requests",
|
|
97
|
+
variants: ["requests", "http.client"],
|
|
96
98
|
},
|
|
97
99
|
{
|
|
98
100
|
highlight: "go",
|
|
@@ -103,6 +105,7 @@ exports.languageSet = [
|
|
|
103
105
|
trimRequestBody: true,
|
|
104
106
|
},
|
|
105
107
|
variant: "native",
|
|
108
|
+
variants: ["native"],
|
|
106
109
|
},
|
|
107
110
|
{
|
|
108
111
|
highlight: "javascript",
|
|
@@ -114,6 +117,7 @@ exports.languageSet = [
|
|
|
114
117
|
trimRequestBody: true,
|
|
115
118
|
},
|
|
116
119
|
variant: "axios",
|
|
120
|
+
variants: ["axios", "native", "request", "unirest"],
|
|
117
121
|
},
|
|
118
122
|
{
|
|
119
123
|
highlight: "ruby",
|
|
@@ -124,6 +128,7 @@ exports.languageSet = [
|
|
|
124
128
|
trimRequestBody: true,
|
|
125
129
|
},
|
|
126
130
|
variant: "Net::HTTP",
|
|
131
|
+
variants: ["net::http"],
|
|
127
132
|
},
|
|
128
133
|
{
|
|
129
134
|
highlight: "csharp",
|
|
@@ -134,6 +139,7 @@ exports.languageSet = [
|
|
|
134
139
|
trimRequestBody: true,
|
|
135
140
|
},
|
|
136
141
|
variant: "RestSharp",
|
|
142
|
+
variants: ["restsharp", "httpclient"],
|
|
137
143
|
},
|
|
138
144
|
{
|
|
139
145
|
highlight: "php",
|
|
@@ -144,6 +150,7 @@ exports.languageSet = [
|
|
|
144
150
|
trimRequestBody: true,
|
|
145
151
|
},
|
|
146
152
|
variant: "cURL",
|
|
153
|
+
variants: ["curl", "guzzle", "pecl_http", "http_request2"],
|
|
147
154
|
},
|
|
148
155
|
{
|
|
149
156
|
highlight: "java",
|
|
@@ -154,6 +161,7 @@ exports.languageSet = [
|
|
|
154
161
|
trimRequestBody: true,
|
|
155
162
|
},
|
|
156
163
|
variant: "OkHttp",
|
|
164
|
+
variants: ["okhttp", "unirest"],
|
|
157
165
|
},
|
|
158
166
|
{
|
|
159
167
|
highlight: "powershell",
|
|
@@ -164,6 +172,7 @@ exports.languageSet = [
|
|
|
164
172
|
trimRequestBody: true,
|
|
165
173
|
},
|
|
166
174
|
variant: "RestMethod",
|
|
175
|
+
variants: ["restmethod"],
|
|
167
176
|
},
|
|
168
177
|
];
|
|
169
178
|
function CodeTab({ children, hidden, className, onClick }) {
|
|
@@ -214,6 +223,7 @@ function Curl({ postman, codeSamples }) {
|
|
|
214
223
|
(lang) =>
|
|
215
224
|
lang.language === localStorage.getItem("docusaurus.tab.code-samples")
|
|
216
225
|
);
|
|
226
|
+
const [selectedVariant, setSelectedVariant] = (0, react_1.useState)();
|
|
217
227
|
const [language, setLanguage] = (0, react_1.useState)(() => {
|
|
218
228
|
// Return first index if only 1 user-defined language exists
|
|
219
229
|
if (mergedLangs.length === 1) {
|
|
@@ -298,6 +308,33 @@ function Curl({ postman, codeSamples }) {
|
|
|
298
308
|
auth,
|
|
299
309
|
mergedLangs,
|
|
300
310
|
]);
|
|
311
|
+
(0, react_1.useEffect)(() => {
|
|
312
|
+
if (selectedVariant && selectedVariant !== language.variant) {
|
|
313
|
+
const postmanRequest = (0, buildPostmanRequest_1.default)(postman, {
|
|
314
|
+
queryParams,
|
|
315
|
+
pathParams,
|
|
316
|
+
cookieParams,
|
|
317
|
+
contentType,
|
|
318
|
+
accept,
|
|
319
|
+
headerParams,
|
|
320
|
+
body,
|
|
321
|
+
server,
|
|
322
|
+
auth,
|
|
323
|
+
});
|
|
324
|
+
postman_code_generators_1.default.convert(
|
|
325
|
+
language.language,
|
|
326
|
+
selectedVariant,
|
|
327
|
+
postmanRequest,
|
|
328
|
+
language.options,
|
|
329
|
+
(error, snippet) => {
|
|
330
|
+
if (error) {
|
|
331
|
+
return;
|
|
332
|
+
}
|
|
333
|
+
setCodeText(snippet);
|
|
334
|
+
}
|
|
335
|
+
);
|
|
336
|
+
}
|
|
337
|
+
});
|
|
301
338
|
if (language === undefined) {
|
|
302
339
|
return null;
|
|
303
340
|
}
|
|
@@ -306,29 +343,59 @@ function Curl({ postman, codeSamples }) {
|
|
|
306
343
|
null,
|
|
307
344
|
react_1.default.createElement(
|
|
308
345
|
CodeTabs_1.default,
|
|
309
|
-
{
|
|
346
|
+
{
|
|
347
|
+
groupId: "code-samples",
|
|
348
|
+
action: {
|
|
349
|
+
setLanguage: setLanguage,
|
|
350
|
+
setSelectedVariant: setSelectedVariant,
|
|
351
|
+
},
|
|
352
|
+
lazy: true,
|
|
353
|
+
},
|
|
310
354
|
mergedLangs.map((lang) => {
|
|
311
355
|
return react_1.default.createElement(
|
|
312
356
|
CodeTab,
|
|
313
357
|
{
|
|
314
358
|
value: lang.language,
|
|
315
|
-
label:
|
|
316
|
-
key: lang.
|
|
317
|
-
? `${lang.language}-${lang.variant}`
|
|
318
|
-
: lang.language,
|
|
359
|
+
label: lang.language,
|
|
360
|
+
key: lang.language,
|
|
319
361
|
attributes: {
|
|
320
362
|
className: `openapi-tabs__code-item--${lang.logoClass}`,
|
|
321
363
|
},
|
|
322
364
|
},
|
|
323
365
|
react_1.default.createElement(
|
|
324
|
-
|
|
366
|
+
CodeTabs_1.default,
|
|
325
367
|
{
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
368
|
+
action: {
|
|
369
|
+
setLanguage: setLanguage,
|
|
370
|
+
setSelectedVariant: setSelectedVariant,
|
|
371
|
+
},
|
|
372
|
+
includeVariant: true,
|
|
373
|
+
currentLanguage: lang.language,
|
|
374
|
+
defaultValue: selectedVariant,
|
|
375
|
+
lazy: true,
|
|
330
376
|
},
|
|
331
|
-
|
|
377
|
+
lang.variants.map((variant) => {
|
|
378
|
+
return react_1.default.createElement(
|
|
379
|
+
CodeTab,
|
|
380
|
+
{
|
|
381
|
+
value: variant.toLowerCase(),
|
|
382
|
+
label: variant.toUpperCase(),
|
|
383
|
+
key: `${lang.language}-${lang.variant}`,
|
|
384
|
+
attributes: {
|
|
385
|
+
className: `openapi-tabs__code-item--variant`,
|
|
386
|
+
},
|
|
387
|
+
},
|
|
388
|
+
react_1.default.createElement(
|
|
389
|
+
ApiCodeBlock_1.default,
|
|
390
|
+
{
|
|
391
|
+
language: lang.highlight,
|
|
392
|
+
className: "openapi-demo__code-block",
|
|
393
|
+
showLineNumbers: true,
|
|
394
|
+
},
|
|
395
|
+
codeText
|
|
396
|
+
)
|
|
397
|
+
);
|
|
398
|
+
})
|
|
332
399
|
)
|
|
333
400
|
);
|
|
334
401
|
})
|
package/lib/theme/styles.scss
CHANGED
|
@@ -54,6 +54,27 @@
|
|
|
54
54
|
--openapi-input-border: var(--ifm-color-primary);
|
|
55
55
|
--openapi-input-background: var(--openapi-card-background-color);
|
|
56
56
|
--openapi-tree-line-color: var(--ifm-toc-border-color);
|
|
57
|
+
--openapi-code-tab-border-color: var(--ifm-toc-border-color);
|
|
58
|
+
--openapi-code-tab-border-color-python: #ffdb50;
|
|
59
|
+
--openapi-code-tab-border-color-bash: var(--ifm-color-danger);
|
|
60
|
+
--openapi-code-tab-border-color-go: var(--ifm-color-info);
|
|
61
|
+
--openapi-code-tab-border-color-js: var(--ifm-color-warning);
|
|
62
|
+
--openapi-code-tab-border-color-ruby: var(--ifm-color-danger);
|
|
63
|
+
--openapi-code-tab-border-color-csharp: #9b4f96;
|
|
64
|
+
--openapi-code-tab-border-color-nodejs: var(--ifm-color-success);
|
|
65
|
+
--openapi-code-tab-border-color-php: #6181b6;
|
|
66
|
+
--openapi-code-tab-border-color-java: #0374bd;
|
|
67
|
+
--openapi-code-tab-border-color-powershell: #00adef;
|
|
68
|
+
--openapi-code-tab-shadow-color-python: rgba(255, 219, 80, 0.25);
|
|
69
|
+
--openapi-code-tab-shadow-color-bash: rgba(250, 56, 62, 0.25);
|
|
70
|
+
--openapi-code-tab-shadow-color-go: rgba(84, 199, 236, 0.25);
|
|
71
|
+
--openapi-code-tab-shadow-color-js: rgba(255, 186, 0, 0.25);
|
|
72
|
+
--openapi-code-tab-shadow-color-ruby: rgba(250, 56, 62, 0.25);
|
|
73
|
+
--openapi-code-tab-shadow-color-csharp: rgba(155, 79, 150, 0.25);
|
|
74
|
+
--opeanpi-code-tab-shadow-color-nodejs: rgba(0, 164, 0, 0.25);
|
|
75
|
+
--openapi-code-tab-shadow-color-php: rgba(97, 129, 182, 0.25);
|
|
76
|
+
--openapi-code-tab-shadow-color-java: rgba(3, 116, 189, 0.25);
|
|
77
|
+
--opeanpi-code-tab-shadow-color-powershell: rgba(3, 116, 189, 0.25);
|
|
57
78
|
}
|
|
58
79
|
|
|
59
80
|
[data-theme="dark"] {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "docusaurus-theme-openapi-docs",
|
|
3
3
|
"description": "OpenAPI theme for Docusaurus.",
|
|
4
|
-
"version": "0.0.0-beta.
|
|
4
|
+
"version": "0.0.0-beta.647",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"openapi",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"clsx": "^1.1.1",
|
|
50
50
|
"copy-text-to-clipboard": "^3.1.0",
|
|
51
51
|
"crypto-js": "^4.1.1",
|
|
52
|
-
"docusaurus-plugin-openapi-docs": "0.0.0-beta.
|
|
52
|
+
"docusaurus-plugin-openapi-docs": "0.0.0-beta.647",
|
|
53
53
|
"docusaurus-plugin-sass": "^0.2.3",
|
|
54
54
|
"file-saver": "^2.0.5",
|
|
55
55
|
"immer": "^9.0.7",
|
|
@@ -75,5 +75,5 @@
|
|
|
75
75
|
"engines": {
|
|
76
76
|
"node": ">=14"
|
|
77
77
|
},
|
|
78
|
-
"gitHead": "
|
|
78
|
+
"gitHead": "358ce5cd595fdd63d86b95dbc0f58569d9a15eaf"
|
|
79
79
|
}
|
|
@@ -12,11 +12,39 @@
|
|
|
12
12
|
|
|
13
13
|
.openapi-tabs__code-container {
|
|
14
14
|
margin-bottom: 1rem;
|
|
15
|
+
|
|
16
|
+
.openapi-tabs__code-item {
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-direction: column-reverse;
|
|
19
|
+
flex: 0 0 80px;
|
|
20
|
+
align-items: center;
|
|
21
|
+
padding: 0.5rem 0 !important;
|
|
22
|
+
margin-top: 0 !important;
|
|
23
|
+
margin-right: 0.5rem;
|
|
24
|
+
border: 1px solid transparent;
|
|
25
|
+
transition: 300ms;
|
|
26
|
+
|
|
27
|
+
&:not(.active):hover {
|
|
28
|
+
border: 1px solid var(--openapi-code-tab-border-color);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
&:hover {
|
|
32
|
+
background-color: transparent;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
span {
|
|
36
|
+
padding-top: 0.5rem;
|
|
37
|
+
color: var(--ifm-font-color-secondary);
|
|
38
|
+
font-size: 10px;
|
|
39
|
+
text-transform: uppercase;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
15
42
|
}
|
|
16
43
|
|
|
17
44
|
.openapi-tabs__code-list-container {
|
|
18
45
|
display: flex;
|
|
19
46
|
justify-content: flex-start;
|
|
47
|
+
padding: 0.25rem;
|
|
20
48
|
padding-bottom: 0.6rem;
|
|
21
49
|
}
|
|
22
50
|
|
|
@@ -34,20 +62,20 @@ body[class="ReactModal__Body--open"] {
|
|
|
34
62
|
}
|
|
35
63
|
}
|
|
36
64
|
|
|
37
|
-
.openapi-tabs__code-item {
|
|
38
|
-
|
|
39
|
-
margin-right: 0.5rem;
|
|
40
|
-
padding-left: 1.5rem;
|
|
41
|
-
padding-right: 1.5rem;
|
|
42
|
-
padding-top: 1rem !important;
|
|
43
|
-
padding-bottom: 1rem !important;
|
|
65
|
+
.openapi-tabs__code-item--variant {
|
|
66
|
+
color: var(--ifm-color-secondary);
|
|
44
67
|
|
|
45
68
|
&.active {
|
|
46
|
-
border-
|
|
47
|
-
border-bottom-right-radius: 0;
|
|
69
|
+
border-color: var(--ifm-toc-border-color);
|
|
48
70
|
}
|
|
49
71
|
}
|
|
50
72
|
|
|
73
|
+
.openapi-tabs__code-item--variant > span {
|
|
74
|
+
padding-top: unset !important;
|
|
75
|
+
padding-left: 0.5rem !important;
|
|
76
|
+
padding-right: 0.5rem !important;
|
|
77
|
+
}
|
|
78
|
+
|
|
51
79
|
.openapi-tabs__code-item--python {
|
|
52
80
|
color: var(--ifm-color-success);
|
|
53
81
|
|
|
@@ -55,13 +83,14 @@ body[class="ReactModal__Body--open"] {
|
|
|
55
83
|
content: "";
|
|
56
84
|
width: var(--code-tab-logo-width);
|
|
57
85
|
height: var(--code-tab-logo-height);
|
|
58
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/python/python-original.svg")
|
|
86
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/python/python-original.svg")
|
|
87
|
+
no-repeat;
|
|
59
88
|
margin-block: auto;
|
|
60
89
|
}
|
|
61
90
|
|
|
62
91
|
&.active {
|
|
63
|
-
|
|
64
|
-
|
|
92
|
+
box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-python);
|
|
93
|
+
border-color: var(--openapi-code-tab-border-color-python);
|
|
65
94
|
}
|
|
66
95
|
}
|
|
67
96
|
|
|
@@ -72,13 +101,14 @@ body[class="ReactModal__Body--open"] {
|
|
|
72
101
|
content: "";
|
|
73
102
|
width: var(--code-tab-logo-width);
|
|
74
103
|
height: var(--code-tab-logo-height);
|
|
75
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/go/go-original-wordmark.svg")
|
|
104
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/go/go-original-wordmark.svg")
|
|
105
|
+
no-repeat;
|
|
76
106
|
margin-block: auto;
|
|
77
107
|
}
|
|
78
108
|
|
|
79
109
|
&.active {
|
|
80
|
-
|
|
81
|
-
|
|
110
|
+
box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-go);
|
|
111
|
+
border-color: var(--openapi-code-tab-border-color-go);
|
|
82
112
|
}
|
|
83
113
|
}
|
|
84
114
|
|
|
@@ -89,13 +119,14 @@ body[class="ReactModal__Body--open"] {
|
|
|
89
119
|
content: "";
|
|
90
120
|
width: var(--code-tab-logo-width);
|
|
91
121
|
height: var(--code-tab-logo-height);
|
|
92
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/javascript/javascript-original.svg")
|
|
122
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/javascript/javascript-original.svg")
|
|
123
|
+
no-repeat;
|
|
93
124
|
margin-block: auto;
|
|
94
125
|
}
|
|
95
126
|
|
|
96
127
|
&.active {
|
|
97
|
-
|
|
98
|
-
|
|
128
|
+
box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-js);
|
|
129
|
+
border-color: var(--openapi-code-tab-border-color-js);
|
|
99
130
|
}
|
|
100
131
|
}
|
|
101
132
|
|
|
@@ -106,15 +137,16 @@ body[class="ReactModal__Body--open"] {
|
|
|
106
137
|
content: "";
|
|
107
138
|
width: var(--code-tab-logo-width);
|
|
108
139
|
height: var(--code-tab-logo-height);
|
|
109
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/bash/bash-plain.svg")
|
|
140
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/bash/bash-plain.svg")
|
|
141
|
+
no-repeat;
|
|
110
142
|
margin-block: auto;
|
|
111
143
|
background-color: var(--bash-background-color);
|
|
112
144
|
border-radius: var(--bash-border-radius);
|
|
113
145
|
}
|
|
114
146
|
|
|
115
147
|
&.active {
|
|
116
|
-
|
|
117
|
-
|
|
148
|
+
box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-bash);
|
|
149
|
+
border-color: var(--ifm-color-danger);
|
|
118
150
|
}
|
|
119
151
|
}
|
|
120
152
|
|
|
@@ -125,13 +157,14 @@ body[class="ReactModal__Body--open"] {
|
|
|
125
157
|
content: "";
|
|
126
158
|
width: var(--code-tab-logo-width);
|
|
127
159
|
height: var(--code-tab-logo-height);
|
|
128
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/ruby/ruby-plain.svg")
|
|
160
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/ruby/ruby-plain.svg")
|
|
161
|
+
no-repeat;
|
|
129
162
|
margin-block: auto;
|
|
130
163
|
}
|
|
131
164
|
|
|
132
165
|
&.active {
|
|
133
|
-
|
|
134
|
-
|
|
166
|
+
box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-ruby);
|
|
167
|
+
border-color: var(--openapi-code-tab-border-color-ruby);
|
|
135
168
|
}
|
|
136
169
|
}
|
|
137
170
|
|
|
@@ -142,13 +175,14 @@ body[class="ReactModal__Body--open"] {
|
|
|
142
175
|
content: "";
|
|
143
176
|
width: var(--code-tab-logo-width);
|
|
144
177
|
height: var(--code-tab-logo-height);
|
|
145
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/csharp/csharp-original.svg")
|
|
178
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/csharp/csharp-original.svg")
|
|
179
|
+
no-repeat;
|
|
146
180
|
margin-block: auto;
|
|
147
181
|
}
|
|
148
182
|
|
|
149
183
|
&.active {
|
|
150
|
-
|
|
151
|
-
|
|
184
|
+
box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-csharp);
|
|
185
|
+
border-color: var(--openapi-code-tab-border-color-csharp);
|
|
152
186
|
}
|
|
153
187
|
}
|
|
154
188
|
|
|
@@ -159,13 +193,14 @@ body[class="ReactModal__Body--open"] {
|
|
|
159
193
|
content: "";
|
|
160
194
|
width: var(--code-tab-logo-width);
|
|
161
195
|
height: var(--code-tab-logo-height);
|
|
162
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/nodejs/nodejs-original.svg")
|
|
196
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/nodejs/nodejs-original.svg")
|
|
197
|
+
no-repeat;
|
|
163
198
|
margin-block: auto;
|
|
164
199
|
}
|
|
165
200
|
|
|
166
201
|
&.active {
|
|
167
|
-
|
|
168
|
-
|
|
202
|
+
box-shadow: 0 0 0 3px var(--opeanpi-code-tab-shadow-color-nodejs);
|
|
203
|
+
border-color: var(--openapi-code-tab-border-color-nodejs);
|
|
169
204
|
}
|
|
170
205
|
}
|
|
171
206
|
|
|
@@ -176,13 +211,14 @@ body[class="ReactModal__Body--open"] {
|
|
|
176
211
|
content: "";
|
|
177
212
|
width: var(--code-tab-logo-width);
|
|
178
213
|
height: var(--code-tab-logo-height);
|
|
179
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/php/php-original.svg")
|
|
214
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/php/php-original.svg")
|
|
215
|
+
no-repeat;
|
|
180
216
|
margin-block: auto;
|
|
181
217
|
}
|
|
182
218
|
|
|
183
219
|
&.active {
|
|
184
|
-
|
|
185
|
-
|
|
220
|
+
box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-php);
|
|
221
|
+
border-color: var(--openapi-code-tab-border-color-php);
|
|
186
222
|
}
|
|
187
223
|
}
|
|
188
224
|
|
|
@@ -193,13 +229,14 @@ body[class="ReactModal__Body--open"] {
|
|
|
193
229
|
content: "";
|
|
194
230
|
width: var(--code-tab-logo-width);
|
|
195
231
|
height: var(--code-tab-logo-height);
|
|
196
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/java/java-original.svg")
|
|
232
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/java/java-original.svg")
|
|
233
|
+
no-repeat;
|
|
197
234
|
margin-block: auto;
|
|
198
235
|
}
|
|
199
236
|
|
|
200
237
|
&.active {
|
|
201
|
-
|
|
202
|
-
|
|
238
|
+
box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-java);
|
|
239
|
+
border-color: var(--openapi-code-tab-border-color-java);
|
|
203
240
|
}
|
|
204
241
|
}
|
|
205
242
|
|
|
@@ -210,13 +247,14 @@ body[class="ReactModal__Body--open"] {
|
|
|
210
247
|
content: "";
|
|
211
248
|
width: var(--code-tab-logo-width);
|
|
212
249
|
height: var(--code-tab-logo-height);
|
|
213
|
-
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/windows8/windows8-original.svg")
|
|
250
|
+
background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/windows8/windows8-original.svg")
|
|
251
|
+
no-repeat;
|
|
214
252
|
margin-block: auto;
|
|
215
253
|
}
|
|
216
254
|
|
|
217
255
|
&.active {
|
|
218
|
-
|
|
219
|
-
|
|
256
|
+
box-shadow: 0 0 0 3px var(--opeanpi-code-tab-shadow-color-powershell);
|
|
257
|
+
border-color: var(--openapi-code-tab-border-color-powershell);
|
|
220
258
|
}
|
|
221
259
|
}
|
|
222
260
|
|
|
@@ -17,6 +17,8 @@ import clsx from "clsx";
|
|
|
17
17
|
|
|
18
18
|
function TabList({
|
|
19
19
|
action,
|
|
20
|
+
currentLanguage,
|
|
21
|
+
includeVariant,
|
|
20
22
|
className,
|
|
21
23
|
block,
|
|
22
24
|
selectedValue,
|
|
@@ -38,10 +40,20 @@ function TabList({
|
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
if (action) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
let newLanguage;
|
|
44
|
+
if (currentLanguage && includeVariant) {
|
|
45
|
+
newLanguage = languageSet.filter(
|
|
46
|
+
(lang) => lang.language === currentLanguage
|
|
47
|
+
)[0];
|
|
48
|
+
newLanguage.variant = newTabValue;
|
|
49
|
+
action.setSelectedVariant(newTabValue.toLowerCase());
|
|
50
|
+
} else {
|
|
51
|
+
newLanguage = languageSet.filter(
|
|
52
|
+
(lang) => lang.language === newTabValue
|
|
53
|
+
)[0];
|
|
54
|
+
action.setSelectedVariant(newLanguage.variant.toLowerCase());
|
|
55
|
+
}
|
|
56
|
+
action.setLanguage(newLanguage);
|
|
45
57
|
}
|
|
46
58
|
};
|
|
47
59
|
|
|
@@ -101,7 +113,7 @@ function TabList({
|
|
|
101
113
|
}
|
|
102
114
|
)}
|
|
103
115
|
>
|
|
104
|
-
{label ?? value}
|
|
116
|
+
<span>{label ?? value}</span>
|
|
105
117
|
</li>
|
|
106
118
|
))}
|
|
107
119
|
</ul>
|
|
@@ -17,11 +17,12 @@ import { useTypedSelector } from "@theme/ApiItem/hooks";
|
|
|
17
17
|
import merge from "lodash/merge";
|
|
18
18
|
|
|
19
19
|
export interface Language {
|
|
20
|
-
highlight
|
|
20
|
+
highlight: string;
|
|
21
21
|
language: string;
|
|
22
|
-
logoClass
|
|
23
|
-
variant
|
|
24
|
-
|
|
22
|
+
logoClass: string;
|
|
23
|
+
variant: string;
|
|
24
|
+
variants: string[];
|
|
25
|
+
options: { [key: string]: boolean };
|
|
25
26
|
source?: string;
|
|
26
27
|
}
|
|
27
28
|
|
|
@@ -36,6 +37,7 @@ export const languageSet: Language[] = [
|
|
|
36
37
|
trimRequestBody: true,
|
|
37
38
|
},
|
|
38
39
|
variant: "cURL",
|
|
40
|
+
variants: ["curl"],
|
|
39
41
|
},
|
|
40
42
|
{
|
|
41
43
|
highlight: "python",
|
|
@@ -46,6 +48,7 @@ export const languageSet: Language[] = [
|
|
|
46
48
|
trimRequestBody: true,
|
|
47
49
|
},
|
|
48
50
|
variant: "requests",
|
|
51
|
+
variants: ["requests", "http.client"],
|
|
49
52
|
},
|
|
50
53
|
{
|
|
51
54
|
highlight: "go",
|
|
@@ -56,6 +59,7 @@ export const languageSet: Language[] = [
|
|
|
56
59
|
trimRequestBody: true,
|
|
57
60
|
},
|
|
58
61
|
variant: "native",
|
|
62
|
+
variants: ["native"],
|
|
59
63
|
},
|
|
60
64
|
{
|
|
61
65
|
highlight: "javascript",
|
|
@@ -67,6 +71,7 @@ export const languageSet: Language[] = [
|
|
|
67
71
|
trimRequestBody: true,
|
|
68
72
|
},
|
|
69
73
|
variant: "axios",
|
|
74
|
+
variants: ["axios", "native", "request", "unirest"],
|
|
70
75
|
},
|
|
71
76
|
{
|
|
72
77
|
highlight: "ruby",
|
|
@@ -77,6 +82,7 @@ export const languageSet: Language[] = [
|
|
|
77
82
|
trimRequestBody: true,
|
|
78
83
|
},
|
|
79
84
|
variant: "Net::HTTP",
|
|
85
|
+
variants: ["net::http"],
|
|
80
86
|
},
|
|
81
87
|
{
|
|
82
88
|
highlight: "csharp",
|
|
@@ -87,6 +93,7 @@ export const languageSet: Language[] = [
|
|
|
87
93
|
trimRequestBody: true,
|
|
88
94
|
},
|
|
89
95
|
variant: "RestSharp",
|
|
96
|
+
variants: ["restsharp", "httpclient"],
|
|
90
97
|
},
|
|
91
98
|
{
|
|
92
99
|
highlight: "php",
|
|
@@ -97,6 +104,7 @@ export const languageSet: Language[] = [
|
|
|
97
104
|
trimRequestBody: true,
|
|
98
105
|
},
|
|
99
106
|
variant: "cURL",
|
|
107
|
+
variants: ["curl", "guzzle", "pecl_http", "http_request2"],
|
|
100
108
|
},
|
|
101
109
|
{
|
|
102
110
|
highlight: "java",
|
|
@@ -107,6 +115,7 @@ export const languageSet: Language[] = [
|
|
|
107
115
|
trimRequestBody: true,
|
|
108
116
|
},
|
|
109
117
|
variant: "OkHttp",
|
|
118
|
+
variants: ["okhttp", "unirest"],
|
|
110
119
|
},
|
|
111
120
|
{
|
|
112
121
|
highlight: "powershell",
|
|
@@ -117,6 +126,7 @@ export const languageSet: Language[] = [
|
|
|
117
126
|
trimRequestBody: true,
|
|
118
127
|
},
|
|
119
128
|
variant: "RestMethod",
|
|
129
|
+
variants: ["restmethod"],
|
|
120
130
|
},
|
|
121
131
|
];
|
|
122
132
|
|
|
@@ -173,7 +183,7 @@ function Curl({ postman, codeSamples }: Props) {
|
|
|
173
183
|
(lang) =>
|
|
174
184
|
lang.language === localStorage.getItem("docusaurus.tab.code-samples")
|
|
175
185
|
);
|
|
176
|
-
|
|
186
|
+
const [selectedVariant, setSelectedVariant] = useState();
|
|
177
187
|
const [language, setLanguage] = useState(() => {
|
|
178
188
|
// Return first index if only 1 user-defined language exists
|
|
179
189
|
if (mergedLangs.length === 1) {
|
|
@@ -182,7 +192,6 @@ function Curl({ postman, codeSamples }: Props) {
|
|
|
182
192
|
// Fall back to language in localStorage or first user-defined language
|
|
183
193
|
return defaultLang[0] ?? mergedLangs[0];
|
|
184
194
|
});
|
|
185
|
-
|
|
186
195
|
const [codeText, setCodeText] = useState("");
|
|
187
196
|
|
|
188
197
|
useEffect(() => {
|
|
@@ -198,7 +207,6 @@ function Curl({ postman, codeSamples }: Props) {
|
|
|
198
207
|
server,
|
|
199
208
|
auth,
|
|
200
209
|
});
|
|
201
|
-
|
|
202
210
|
codegen.convert(
|
|
203
211
|
language.language,
|
|
204
212
|
language.variant,
|
|
@@ -264,36 +272,90 @@ function Curl({ postman, codeSamples }: Props) {
|
|
|
264
272
|
mergedLangs,
|
|
265
273
|
]);
|
|
266
274
|
|
|
275
|
+
useEffect(() => {
|
|
276
|
+
if (selectedVariant && selectedVariant !== language.variant) {
|
|
277
|
+
const postmanRequest = buildPostmanRequest(postman, {
|
|
278
|
+
queryParams,
|
|
279
|
+
pathParams,
|
|
280
|
+
cookieParams,
|
|
281
|
+
contentType,
|
|
282
|
+
accept,
|
|
283
|
+
headerParams,
|
|
284
|
+
body,
|
|
285
|
+
server,
|
|
286
|
+
auth,
|
|
287
|
+
});
|
|
288
|
+
codegen.convert(
|
|
289
|
+
language.language,
|
|
290
|
+
selectedVariant,
|
|
291
|
+
postmanRequest,
|
|
292
|
+
language.options,
|
|
293
|
+
(error: any, snippet: string) => {
|
|
294
|
+
if (error) {
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
setCodeText(snippet);
|
|
298
|
+
}
|
|
299
|
+
);
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
|
|
267
303
|
if (language === undefined) {
|
|
268
304
|
return null;
|
|
269
305
|
}
|
|
270
306
|
|
|
271
307
|
return (
|
|
272
308
|
<>
|
|
273
|
-
<CodeTabs
|
|
309
|
+
<CodeTabs
|
|
310
|
+
groupId="code-samples"
|
|
311
|
+
action={{
|
|
312
|
+
setLanguage: setLanguage,
|
|
313
|
+
setSelectedVariant: setSelectedVariant,
|
|
314
|
+
}}
|
|
315
|
+
lazy
|
|
316
|
+
>
|
|
274
317
|
{mergedLangs.map((lang) => {
|
|
275
318
|
return (
|
|
276
319
|
<CodeTab
|
|
277
320
|
value={lang.language}
|
|
278
|
-
label={
|
|
279
|
-
key={
|
|
280
|
-
lang.variant
|
|
281
|
-
? `${lang.language}-${lang.variant}`
|
|
282
|
-
: lang.language
|
|
283
|
-
}
|
|
321
|
+
label={lang.language}
|
|
322
|
+
key={lang.language}
|
|
284
323
|
attributes={{
|
|
285
324
|
className: `openapi-tabs__code-item--${lang.logoClass}`,
|
|
286
325
|
}}
|
|
287
326
|
>
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
327
|
+
<CodeTabs
|
|
328
|
+
action={{
|
|
329
|
+
setLanguage: setLanguage,
|
|
330
|
+
setSelectedVariant: setSelectedVariant,
|
|
331
|
+
}}
|
|
332
|
+
includeVariant={true}
|
|
333
|
+
currentLanguage={lang.language}
|
|
334
|
+
defaultValue={selectedVariant}
|
|
335
|
+
lazy
|
|
294
336
|
>
|
|
295
|
-
{
|
|
296
|
-
|
|
337
|
+
{lang.variants.map((variant) => {
|
|
338
|
+
return (
|
|
339
|
+
<CodeTab
|
|
340
|
+
value={variant.toLowerCase()}
|
|
341
|
+
label={variant.toUpperCase()}
|
|
342
|
+
key={`${lang.language}-${lang.variant}`}
|
|
343
|
+
attributes={{
|
|
344
|
+
className: `openapi-tabs__code-item--variant`,
|
|
345
|
+
}}
|
|
346
|
+
>
|
|
347
|
+
{/* @ts-ignore */}
|
|
348
|
+
<ApiCodeBlock
|
|
349
|
+
language={lang.highlight}
|
|
350
|
+
className="openapi-demo__code-block"
|
|
351
|
+
showLineNumbers={true}
|
|
352
|
+
>
|
|
353
|
+
{codeText}
|
|
354
|
+
</ApiCodeBlock>
|
|
355
|
+
</CodeTab>
|
|
356
|
+
);
|
|
357
|
+
})}
|
|
358
|
+
</CodeTabs>
|
|
297
359
|
</CodeTab>
|
|
298
360
|
);
|
|
299
361
|
})}
|
package/src/theme/styles.scss
CHANGED
|
@@ -54,6 +54,27 @@
|
|
|
54
54
|
--openapi-input-border: var(--ifm-color-primary);
|
|
55
55
|
--openapi-input-background: var(--openapi-card-background-color);
|
|
56
56
|
--openapi-tree-line-color: var(--ifm-toc-border-color);
|
|
57
|
+
--openapi-code-tab-border-color: var(--ifm-toc-border-color);
|
|
58
|
+
--openapi-code-tab-border-color-python: #ffdb50;
|
|
59
|
+
--openapi-code-tab-border-color-bash: var(--ifm-color-danger);
|
|
60
|
+
--openapi-code-tab-border-color-go: var(--ifm-color-info);
|
|
61
|
+
--openapi-code-tab-border-color-js: var(--ifm-color-warning);
|
|
62
|
+
--openapi-code-tab-border-color-ruby: var(--ifm-color-danger);
|
|
63
|
+
--openapi-code-tab-border-color-csharp: #9b4f96;
|
|
64
|
+
--openapi-code-tab-border-color-nodejs: var(--ifm-color-success);
|
|
65
|
+
--openapi-code-tab-border-color-php: #6181b6;
|
|
66
|
+
--openapi-code-tab-border-color-java: #0374bd;
|
|
67
|
+
--openapi-code-tab-border-color-powershell: #00adef;
|
|
68
|
+
--openapi-code-tab-shadow-color-python: rgba(255, 219, 80, 0.25);
|
|
69
|
+
--openapi-code-tab-shadow-color-bash: rgba(250, 56, 62, 0.25);
|
|
70
|
+
--openapi-code-tab-shadow-color-go: rgba(84, 199, 236, 0.25);
|
|
71
|
+
--openapi-code-tab-shadow-color-js: rgba(255, 186, 0, 0.25);
|
|
72
|
+
--openapi-code-tab-shadow-color-ruby: rgba(250, 56, 62, 0.25);
|
|
73
|
+
--openapi-code-tab-shadow-color-csharp: rgba(155, 79, 150, 0.25);
|
|
74
|
+
--opeanpi-code-tab-shadow-color-nodejs: rgba(0, 164, 0, 0.25);
|
|
75
|
+
--openapi-code-tab-shadow-color-php: rgba(97, 129, 182, 0.25);
|
|
76
|
+
--openapi-code-tab-shadow-color-java: rgba(3, 116, 189, 0.25);
|
|
77
|
+
--opeanpi-code-tab-shadow-color-powershell: rgba(3, 116, 189, 0.25);
|
|
57
78
|
}
|
|
58
79
|
|
|
59
80
|
[data-theme="dark"] {
|