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
@@ -29,7 +29,7 @@ function ApiDemoPanel({
29
29
  codeSamples={(item as any)["x-code-samples"] ?? []}
30
30
  />
31
31
  <Request item={item} />
32
- <Response />
32
+ <Response item={item} />
33
33
  </>
34
34
  );
35
35
  }
@@ -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;
@@ -54,10 +54,37 @@
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);
78
+ --openapi-demo-font-size-input: 12px;
79
+ --openapi-demo-font-size-code: 12px;
80
+ --openapi-demo-padding-input: 0.5rem;
81
+ --openapi-demo-border-color: var(--ifm-toc-border-color);
82
+ --openapi-demo-caret-bg: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16px" height="16px" viewBox="0 0 24 24"><path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path></svg>');
57
83
  }
58
84
 
59
85
  [data-theme="dark"] {
60
86
  --openapi-card-background-color: var(--ifm-color-gray-900) !important;
87
+ --openapi-demo-caret-bg: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16px" height="16px" viewBox="0 0 24 24" fill="white"><path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path></svg>') !important;
61
88
  }
62
89
 
63
90
  .docs-wrapper {
@@ -190,8 +190,41 @@ declare module "@theme/ApiDemoPanel/ParamOptions" {
190
190
  export default function ParamOptions(props: ParamProps): JSX.Element;
191
191
  }
192
192
 
193
+ declare module "@theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamMultiSelectFormItem" {
194
+ import { ParamProps } from "@theme/ApiDemoPanel/ParamOptions";
195
+
196
+ export default function ParamMultiSelectFormItem(
197
+ props: ParamProps
198
+ ): JSX.Element;
199
+ }
200
+
201
+ declare module "@theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamArrayFormItem" {
202
+ import { ParamProps } from "@theme/ApiDemoPanel/ParamOptions";
203
+
204
+ export default function ParamArrayFormItem(props: ParamProps): JSX.Element;
205
+ }
206
+
207
+ declare module "@theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamSelectFormItem" {
208
+ import { ParamProps } from "@theme/ApiDemoPanel/ParamOptions";
209
+
210
+ export default function ParamSelectFormItem(props: ParamProps): JSX.Element;
211
+ }
212
+
213
+ declare module "@theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamBooleanFormItem" {
214
+ import { ParamProps } from "@theme/ApiDemoPanel/ParamOptions";
215
+
216
+ export default function ParamBooleanFormItem(props: ParamProps): JSX.Element;
217
+ }
218
+
219
+ declare module "@theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamTextFormItem" {
220
+ import { ParamProps } from "@theme/ApiDemoPanel/ParamOptions";
221
+
222
+ export default function ParamTextFormItem(props: ParamProps): JSX.Element;
223
+ }
224
+
193
225
  declare module "@theme/ApiDemoPanel/ParamOptions/slice" {
194
226
  export type { Param };
227
+ export const setParam;
195
228
  export default params as Reducer<State, AnyAction>;
196
229
  }
197
230
 
@@ -209,7 +242,13 @@ declare module "@theme/ApiDemoPanel/Request" {
209
242
  }
210
243
 
211
244
  declare module "@theme/ApiDemoPanel/Response" {
212
- export default function Response(): JSX.Element;
245
+ import { ApiItem } from "docusaurus-plugin-openapi-docs/src/types";
246
+
247
+ export interface ResponseProps {
248
+ item: NonNullable<ApiItem>;
249
+ }
250
+
251
+ export default function Response(props: ResponseProps): JSX.Element;
213
252
  }
214
253
 
215
254
  declare module "@theme/ApiDemoPanel/Response/slice" {
@@ -1,8 +0,0 @@
1
- /// <reference types="react" />
2
- import sdk from "@paloaltonetworks/postman-collection";
3
- export interface Props {
4
- postman: sdk.Request;
5
- proxy?: string;
6
- }
7
- declare function Execute({ postman, proxy }: Props): JSX.Element;
8
- export default Execute;
@@ -1,213 +0,0 @@
1
- "use strict";
2
- /* ============================================================================
3
- * Copyright (c) Palo Alto Networks
4
- *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
7
- * ========================================================================== */
8
- var __importDefault =
9
- (this && this.__importDefault) ||
10
- function (mod) {
11
- return mod && mod.__esModule ? mod : { default: mod };
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- const react_1 = __importDefault(require("react"));
15
- const buildPostmanRequest_1 = __importDefault(
16
- require("@theme/ApiDemoPanel/buildPostmanRequest")
17
- );
18
- const slice_1 = require("@theme/ApiDemoPanel/Response/slice");
19
- const hooks_1 = require("@theme/ApiItem/hooks");
20
- const react_modal_1 = __importDefault(require("react-modal"));
21
- const makeRequest_1 = __importDefault(require("./makeRequest"));
22
- function validateRequest(params) {
23
- for (let paramList of Object.values(params)) {
24
- for (let param of paramList) {
25
- if (param.required && !param.value) {
26
- return false;
27
- }
28
- }
29
- }
30
- return true;
31
- }
32
- function Execute({ postman, proxy }) {
33
- const pathParams = (0, hooks_1.useTypedSelector)(
34
- (state) => state.params.path
35
- );
36
- const queryParams = (0, hooks_1.useTypedSelector)(
37
- (state) => state.params.query
38
- );
39
- const cookieParams = (0, hooks_1.useTypedSelector)(
40
- (state) => state.params.cookie
41
- );
42
- const headerParams = (0, hooks_1.useTypedSelector)(
43
- (state) => state.params.header
44
- );
45
- const contentType = (0, hooks_1.useTypedSelector)(
46
- (state) => state.contentType.value
47
- );
48
- const body = (0, hooks_1.useTypedSelector)((state) => state.body);
49
- const accept = (0, hooks_1.useTypedSelector)((state) => state.accept.value);
50
- const server = (0, hooks_1.useTypedSelector)((state) => state.server.value);
51
- const params = (0, hooks_1.useTypedSelector)((state) => state.params);
52
- const auth = (0, hooks_1.useTypedSelector)((state) => state.auth);
53
- const isValidRequest = validateRequest(params);
54
- const dispatch = (0, hooks_1.useTypedDispatch)();
55
- const postmanRequest = (0, buildPostmanRequest_1.default)(postman, {
56
- queryParams,
57
- pathParams,
58
- cookieParams,
59
- contentType,
60
- accept,
61
- headerParams,
62
- body,
63
- server,
64
- auth,
65
- });
66
- const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
67
- function openModal() {
68
- setIsOpen(true);
69
- }
70
- function closeModal() {
71
- setIsOpen(false);
72
- }
73
- function acceptAgreement() {
74
- setIsOpen(false);
75
- setAgreementAccepted(true);
76
- sessionStorage.setItem("agreement-ack", "true");
77
- }
78
- const [modalIsOpen, setIsOpen] = react_1.default.useState(false);
79
- // Set the following as default value to persist to session and enable modal
80
- // sessionStorage.getItem("agreement-ack") === "true"
81
- const [agreementAccepted, setAgreementAccepted] =
82
- react_1.default.useState(true);
83
- const customStyles = {
84
- overlay: {
85
- backdropFilter: "blur(10px)",
86
- backgroundColor: "transparent",
87
- },
88
- content: {
89
- top: "50%",
90
- left: "50%",
91
- right: "auto",
92
- bottom: "auto",
93
- marginRight: "-50%",
94
- border: "none",
95
- padding: "none",
96
- borderRadius: "var(--openapi-card-border-radius)",
97
- background: "var(--ifm-card-background-color)",
98
- transform: "translate(-50%, -50%)",
99
- maxWidth: "550px",
100
- },
101
- };
102
- if (agreementAccepted) {
103
- return react_1.default.createElement(
104
- "button",
105
- {
106
- className: "button button--sm button--secondary",
107
- disabled: !isValidRequest,
108
- style: !isValidRequest ? { pointerEvents: "all" } : {},
109
- onClick: async () => {
110
- dispatch((0, slice_1.setResponse)("Fetching..."));
111
- try {
112
- await delay(1200);
113
- const res = await (0, makeRequest_1.default)(
114
- postmanRequest,
115
- proxy,
116
- body
117
- );
118
- dispatch((0, slice_1.setResponse)(await res.text()));
119
- dispatch((0, slice_1.setCode)(res.status));
120
- res.headers &&
121
- dispatch(
122
- (0, slice_1.setHeaders)(Object.fromEntries(res.headers))
123
- );
124
- } catch (e) {
125
- console.log(e);
126
- dispatch((0, slice_1.setResponse)("Connection failed"));
127
- dispatch((0, slice_1.clearCode)());
128
- dispatch((0, slice_1.clearHeaders)());
129
- }
130
- },
131
- },
132
- "Send API Request"
133
- );
134
- } else {
135
- return react_1.default.createElement(
136
- react_1.default.Fragment,
137
- null,
138
- react_1.default.createElement(
139
- "button",
140
- {
141
- className: "button button--sm button--secondary",
142
- onClick: openModal,
143
- },
144
- "Send API Request"
145
- ),
146
- react_1.default.createElement(
147
- react_modal_1.default,
148
- {
149
- isOpen: modalIsOpen,
150
- onRequestClose: closeModal,
151
- style: customStyles,
152
- contentLabel: "Terms of Use",
153
- },
154
- react_1.default.createElement(
155
- "form",
156
- null,
157
- react_1.default.createElement(
158
- "div",
159
- { className: "card" },
160
- react_1.default.createElement(
161
- "div",
162
- { className: "card__header" },
163
- react_1.default.createElement("h2", null, "Terms of Use"),
164
- react_1.default.createElement("hr", null)
165
- ),
166
- react_1.default.createElement(
167
- "div",
168
- { className: "card__body" },
169
- react_1.default.createElement(
170
- "p",
171
- null,
172
- "By accepting this agreement the end user acknowledges the risks of performing authenticated and non-authenticated API requests from the browser."
173
- ),
174
- react_1.default.createElement(
175
- "p",
176
- null,
177
- "The end user also accepts the responsibility of safeguarding API credentials and any potentially sensitive data returned by the API."
178
- ),
179
- react_1.default.createElement("br", null)
180
- ),
181
- react_1.default.createElement(
182
- "div",
183
- { className: "card__footer" },
184
- react_1.default.createElement(
185
- "div",
186
- { className: "button-group button-group--block" },
187
- react_1.default.createElement(
188
- "button",
189
- {
190
- className:
191
- "button button--sm button--outline button--success",
192
- onClick: acceptAgreement,
193
- },
194
- "AGREE"
195
- ),
196
- react_1.default.createElement(
197
- "button",
198
- {
199
- className:
200
- "button button--sm button--outline button--danger",
201
- onClick: closeModal,
202
- },
203
- "DISAGREE"
204
- )
205
- )
206
- )
207
- )
208
- )
209
- )
210
- );
211
- }
212
- }
213
- exports.default = Execute;
@@ -1,200 +0,0 @@
1
- /* ============================================================================
2
- * Copyright (c) Palo Alto Networks
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- * ========================================================================== */
7
-
8
- import React from "react";
9
-
10
- import sdk from "@paloaltonetworks/postman-collection";
11
- import buildPostmanRequest from "@theme/ApiDemoPanel/buildPostmanRequest";
12
- import { Param } from "@theme/ApiDemoPanel/ParamOptions/slice";
13
- import {
14
- setResponse,
15
- setCode,
16
- clearCode,
17
- setHeaders,
18
- clearHeaders,
19
- } from "@theme/ApiDemoPanel/Response/slice";
20
- import { useTypedDispatch, useTypedSelector } from "@theme/ApiItem/hooks";
21
- import Modal from "react-modal";
22
-
23
- import makeRequest from "./makeRequest";
24
-
25
- function validateRequest(params: {
26
- path: Param[];
27
- query: Param[];
28
- header: Param[];
29
- cookie: Param[];
30
- }) {
31
- for (let paramList of Object.values(params)) {
32
- for (let param of paramList) {
33
- if (param.required && !param.value) {
34
- return false;
35
- }
36
- }
37
- }
38
- return true;
39
- }
40
-
41
- export interface Props {
42
- postman: sdk.Request;
43
- proxy?: string;
44
- }
45
-
46
- function Execute({ postman, proxy }: Props) {
47
- const pathParams = useTypedSelector((state: any) => state.params.path);
48
- const queryParams = useTypedSelector((state: any) => state.params.query);
49
- const cookieParams = useTypedSelector((state: any) => state.params.cookie);
50
- const headerParams = useTypedSelector((state: any) => state.params.header);
51
- const contentType = useTypedSelector((state: any) => state.contentType.value);
52
- const body = useTypedSelector((state: any) => state.body);
53
- const accept = useTypedSelector((state: any) => state.accept.value);
54
- const server = useTypedSelector((state: any) => state.server.value);
55
- const params = useTypedSelector((state: any) => state.params);
56
- const auth = useTypedSelector((state: any) => state.auth);
57
-
58
- const isValidRequest = validateRequest(params);
59
-
60
- const dispatch = useTypedDispatch();
61
-
62
- const postmanRequest = buildPostmanRequest(postman, {
63
- queryParams,
64
- pathParams,
65
- cookieParams,
66
- contentType,
67
- accept,
68
- headerParams,
69
- body,
70
- server,
71
- auth,
72
- });
73
-
74
- const delay = (ms: number) =>
75
- new Promise((resolve) => setTimeout(resolve, ms));
76
-
77
- function openModal() {
78
- setIsOpen(true);
79
- }
80
-
81
- function closeModal() {
82
- setIsOpen(false);
83
- }
84
-
85
- function acceptAgreement() {
86
- setIsOpen(false);
87
- setAgreementAccepted(true);
88
- sessionStorage.setItem("agreement-ack", "true");
89
- }
90
-
91
- const [modalIsOpen, setIsOpen] = React.useState(false);
92
- // Set the following as default value to persist to session and enable modal
93
- // sessionStorage.getItem("agreement-ack") === "true"
94
- const [agreementAccepted, setAgreementAccepted] = React.useState(true);
95
-
96
- const customStyles = {
97
- overlay: {
98
- backdropFilter: "blur(10px)",
99
- backgroundColor: "transparent",
100
- },
101
- content: {
102
- top: "50%",
103
- left: "50%",
104
- right: "auto",
105
- bottom: "auto",
106
- marginRight: "-50%",
107
- border: "none",
108
- padding: "none",
109
- borderRadius: "var(--openapi-card-border-radius)",
110
- background: "var(--ifm-card-background-color)",
111
- transform: "translate(-50%, -50%)",
112
- maxWidth: "550px",
113
- },
114
- };
115
-
116
- if (agreementAccepted) {
117
- return (
118
- <button
119
- className="button button--sm button--secondary"
120
- disabled={!isValidRequest}
121
- style={!isValidRequest ? { pointerEvents: "all" } : {}}
122
- onClick={async () => {
123
- dispatch(setResponse("Fetching..."));
124
- try {
125
- await delay(1200);
126
- const res = await makeRequest(postmanRequest, proxy, body);
127
- dispatch(setResponse(await res.text()));
128
- dispatch(setCode(res.status));
129
- res.headers &&
130
- dispatch(setHeaders(Object.fromEntries(res.headers)));
131
- } catch (e: any) {
132
- console.log(e);
133
- dispatch(setResponse("Connection failed"));
134
- dispatch(clearCode());
135
- dispatch(clearHeaders());
136
- }
137
- }}
138
- >
139
- Send API Request
140
- </button>
141
- );
142
- } else {
143
- return (
144
- <React.Fragment>
145
- <button
146
- className="button button--sm button--secondary"
147
- onClick={openModal}
148
- >
149
- Send API Request
150
- </button>
151
- <Modal
152
- isOpen={modalIsOpen}
153
- onRequestClose={closeModal}
154
- style={customStyles}
155
- contentLabel="Terms of Use"
156
- >
157
- <form>
158
- <div className="card">
159
- <div className="card__header">
160
- <h2>Terms of Use</h2>
161
- <hr></hr>
162
- </div>
163
- <div className="card__body">
164
- <p>
165
- By accepting this agreement the end user acknowledges the
166
- risks of performing authenticated and non-authenticated API
167
- requests from the browser.
168
- </p>
169
- <p>
170
- The end user also accepts the responsibility of safeguarding
171
- API credentials and any potentially sensitive data returned by
172
- the API.
173
- </p>
174
- <br></br>
175
- </div>
176
- <div className="card__footer">
177
- <div className="button-group button-group--block">
178
- <button
179
- className="button button--sm button--outline button--success"
180
- onClick={acceptAgreement}
181
- >
182
- AGREE
183
- </button>
184
- <button
185
- className="button button--sm button--outline button--danger"
186
- onClick={closeModal}
187
- >
188
- DISAGREE
189
- </button>
190
- </div>
191
- </div>
192
- </div>
193
- </form>
194
- </Modal>
195
- </React.Fragment>
196
- );
197
- }
198
- }
199
-
200
- export default Execute;