@digi-frontend/dgate-api-documentation 1.0.47 → 1.0.52
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/dist/_virtual/core.js +2 -0
- package/dist/_virtual/core.js.map +1 -0
- package/dist/_virtual/core2.js +2 -0
- package/dist/_virtual/core2.js.map +1 -0
- package/dist/_virtual/format.js +2 -0
- package/dist/_virtual/format.js.map +1 -0
- package/dist/_virtual/index3.js +1 -1
- package/dist/_virtual/index4.js +1 -1
- package/dist/_virtual/index5.js +1 -1
- package/dist/_virtual/index6.js +1 -1
- package/dist/f4452c3ebcf0d5da.svg +4 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js +2 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js +2 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/defineProperty.js +2 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/defineProperty.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/extends.js +2 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/extends.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/iterableToArray.js +2 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/iterableToArray.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js +2 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js +2 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +2 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js +2 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/toPrimitive.js +2 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/toPrimitive.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js +2 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/typeof.js +2 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/typeof.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js +2 -0
- package/dist/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js.map +1 -0
- package/dist/node_modules/fault/index.js +2 -0
- package/dist/node_modules/fault/index.js.map +1 -0
- package/dist/node_modules/format/format.js +2 -0
- package/dist/node_modules/format/format.js.map +1 -0
- package/dist/node_modules/highlight.js/lib/core.js +2 -0
- package/dist/node_modules/highlight.js/lib/core.js.map +1 -0
- package/dist/node_modules/lowlight/lib/core.js +2 -0
- package/dist/node_modules/lowlight/lib/core.js.map +1 -0
- package/dist/node_modules/nanoid/index.js +2 -0
- package/dist/node_modules/nanoid/index.js.map +1 -0
- package/dist/node_modules/nanoid/url-alphabet/index.js +2 -0
- package/dist/node_modules/nanoid/url-alphabet/index.js.map +1 -0
- package/dist/node_modules/react-syntax-highlighter/dist/esm/checkForListedLanguage.js +2 -0
- package/dist/node_modules/react-syntax-highlighter/dist/esm/checkForListedLanguage.js.map +1 -0
- package/dist/node_modules/react-syntax-highlighter/dist/esm/create-element.js +2 -0
- package/dist/node_modules/react-syntax-highlighter/dist/esm/create-element.js.map +1 -0
- package/dist/node_modules/react-syntax-highlighter/dist/esm/highlight.js +2 -0
- package/dist/node_modules/react-syntax-highlighter/dist/esm/highlight.js.map +1 -0
- package/dist/node_modules/react-syntax-highlighter/dist/esm/light.js +2 -0
- package/dist/node_modules/react-syntax-highlighter/dist/esm/light.js.map +1 -0
- package/dist/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/stackoverflow-dark.js +2 -0
- package/dist/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/stackoverflow-dark.js.map +1 -0
- package/dist/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/stackoverflow-light.js +2 -0
- package/dist/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/stackoverflow-light.js.map +1 -0
- package/dist/node_modules/toposort/index.js +1 -1
- package/dist/node_modules/yup/index.esm.js +1 -1
- package/dist/src/assets/icons/UpArrow.svg.js +2 -0
- package/dist/src/assets/icons/UpArrow.svg.js.map +1 -0
- package/dist/src/assets/icons/copy.svg.js +2 -0
- package/dist/src/assets/icons/copy.svg.js.map +1 -0
- package/dist/src/components/MethodAccordion/MethodAccordion.js +1 -1
- package/dist/src/components/MethodAccordion/MethodAccordion.js.map +1 -1
- package/dist/src/components/dialog/index.js +1 -1
- package/dist/src/components/dialog/index.js.map +1 -1
- package/dist/src/components/table/table.js +1 -1
- package/dist/src/components/table/table.js.map +1 -1
- package/dist/src/constants/methods.constant.js +1 -1
- package/dist/src/constants/methods.constant.js.map +1 -1
- package/dist/src/helpers/docs.helper.js +2 -0
- package/dist/src/helpers/docs.helper.js.map +1 -0
- package/dist/src/helpers/layout.helper.js +1 -1
- package/dist/src/helpers/layout.helper.js.map +1 -1
- package/dist/src/layout/docsComponents/Codebox/Codebox.js +2 -0
- package/dist/src/layout/docsComponents/Codebox/Codebox.js.map +1 -0
- package/dist/src/layout/docsComponents/Codebox/style.module.scss.js +2 -0
- package/dist/src/layout/docsComponents/Codebox/style.module.scss.js.map +1 -0
- package/dist/src/layout/docsComponents/DocsAside/DocsAside.js +1 -1
- package/dist/src/layout/docsComponents/DocsAside/DocsAside.js.map +1 -1
- package/dist/src/layout/docsComponents/DocsAside/style.module.scss.js +2 -0
- package/dist/src/layout/docsComponents/DocsAside/style.module.scss.js.map +1 -0
- package/dist/src/layout/docsComponents/DocsContent/DocsContent.js +1 -1
- package/dist/src/layout/docsComponents/DocsContent/DocsContent.js.map +1 -1
- package/dist/src/layout/docsComponents/DocsContent/EndpointPage/index.js +1 -1
- package/dist/src/layout/docsComponents/DocsContent/EndpointPage/index.js.map +1 -1
- package/dist/src/layout/docsComponents/DocsContent/TagPage/index.js +2 -0
- package/dist/src/layout/docsComponents/DocsContent/TagPage/index.js.map +1 -0
- package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.js +1 -1
- package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.js.map +1 -1
- package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js +1 -1
- package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js.map +1 -1
- package/dist/src/layout/docsLayout.js +1 -1
- package/dist/src/layout/docsLayout.js.map +1 -1
- package/dist/src/layout/layout.js +1 -1
- package/dist/src/layout/layout.js.map +1 -1
- package/dist/src/layout/layout.module.css.js +1 -1
- package/dist/src/utils/index.js +2 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/validator/form.scheme.js +1 -1
- package/dist/src/validator/form.scheme.js.map +1 -1
- package/dist/styles.css +1164 -892
- package/dist/types/assets/icons/index.d.ts +1 -0
- package/dist/types/components/dialog/dialog.d.ts +1 -0
- package/dist/types/components/dialog/index.d.ts +1 -1
- package/dist/types/helpers/docs.helper.d.ts +2 -2
- package/dist/types/layout/docsComponents/Codebox/Codebox.d.ts +4 -0
- package/dist/types/layout/docsComponents/DocsAside/DocsAside.d.ts +4 -2
- package/dist/types/layout/docsComponents/DocsContent/DocsContent.d.ts +5 -1
- package/dist/types/layout/docsComponents/DocsContent/EndpointPage/index.d.ts +3 -1
- package/dist/types/layout/docsComponents/DocsContent/TagPage/index.d.ts +6 -1
- package/dist/types/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.d.ts +12 -5
- package/dist/types/layout/docsLayout.d.ts +5 -4
- package/dist/types/layout/layout.d.ts +1 -1
- package/dist/types/types/index.d.ts +27 -0
- package/dist/types/types/layout.type.d.ts +1 -0
- package/dist/types/types/openApi.d.ts +1 -0
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/validator/form.scheme.d.ts +1 -0
- package/package.json +3 -3
- package/rollup.config.js +2 -0
- package/src/assets/icons/copy.svg +4 -0
- package/src/assets/icons/index.ts +1 -0
- package/src/components/MethodAccordion/MethodAccordion.module.scss +20 -11
- package/src/components/MethodAccordion/MethodAccordion.tsx +393 -17
- package/src/components/dialog/dialog.ts +1 -0
- package/src/components/dialog/index.tsx +27 -24
- package/src/components/table/table.tsx +5 -1
- package/src/constants/methods.constant.ts +1 -1
- package/src/helpers/docs.helper.ts +17 -4
- package/src/helpers/layout.helper.ts +19 -2
- package/src/layout/docsComponents/Codebox/Codebox.tsx +61 -0
- package/src/layout/docsComponents/Codebox/style.module.scss +43 -0
- package/src/layout/docsComponents/DocsAside/DocsAside.tsx +89 -4
- package/src/layout/docsComponents/DocsAside/style.module.scss +113 -0
- package/src/layout/docsComponents/DocsContent/DocsContent.tsx +25 -3
- package/src/layout/docsComponents/DocsContent/EndpointPage/index.tsx +134 -122
- package/src/layout/docsComponents/DocsContent/EndpointPage/style.scss +45 -0
- package/src/layout/docsComponents/DocsContent/TagPage/index.tsx +77 -74
- package/src/layout/docsComponents/DocsContent/TagPage/style.scss +42 -5
- package/src/layout/docsComponents/DocsHeader/DocsHeader.module.scss +78 -5
- package/src/layout/docsComponents/DocsHeader/DocsHeader.tsx +85 -15
- package/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.tsx +119 -87
- package/src/layout/docsComponents/index.scss +3 -1
- package/src/layout/docsLayout.tsx +47 -18
- package/src/layout/layout.module.css +8 -5
- package/src/layout/layout.tsx +39 -21
- package/src/types/index.ts +28 -0
- package/src/types/layout.type.ts +1 -0
- package/src/types/openApi.ts +1 -0
- package/src/utils/index.ts +7 -0
- package/src/validator/form.scheme.ts +9 -1
- package/src/layout/docsComponents/DocsAside/style.scss +0 -3
|
@@ -7,42 +7,42 @@ import {
|
|
|
7
7
|
RequestOption,
|
|
8
8
|
} from '../../../../assets/icons/index'
|
|
9
9
|
import { ArrowIcon, SelectGroup } from 'digitinary-ui'
|
|
10
|
-
import { useState } from 'react'
|
|
10
|
+
import { useEffect, useState } from 'react'
|
|
11
|
+
import { EndpointData } from 'src/layout/docsLayout'
|
|
12
|
+
import { handleStatusColor } from '../../../../helpers/methodAccordion.helper'
|
|
13
|
+
import { httpStatusCodes } from '../../../../constants/index'
|
|
14
|
+
import styles from '../../Codebox/style.module.scss'
|
|
15
|
+
import Tooltip from '../../../../components/Tooltip/Tooltip'
|
|
16
|
+
|
|
17
|
+
export const EndpointPage = ({ data }) => {
|
|
18
|
+
const [activeTab, setActiveTab] = useState('header')
|
|
19
|
+
|
|
20
|
+
const httpStatusCodeOptions = httpStatusCodes.map((code) => ({
|
|
21
|
+
label: (
|
|
22
|
+
<div className={'statusCodeOptionContainer'}>
|
|
23
|
+
<div
|
|
24
|
+
className={'statusCodeOptionCircle'}
|
|
25
|
+
style={{ backgroundColor: handleStatusColor(code) }}
|
|
26
|
+
></div>
|
|
27
|
+
<span>{code}</span>
|
|
28
|
+
</div>
|
|
29
|
+
),
|
|
30
|
+
value: code,
|
|
31
|
+
}))
|
|
11
32
|
|
|
12
|
-
export const EndpointPage = () => {
|
|
13
33
|
const [expanded, setExpanded] = useState(null)
|
|
34
|
+
const [selectedResStatusCode, setSelectedResStatusCode] = useState(httpStatusCodeOptions[4])
|
|
35
|
+
const [headersList, setHeadersList] = useState({})
|
|
36
|
+
const requestTableData = (data?.parameters || []).filter(
|
|
37
|
+
(param) => param.in?.toLowerCase() === activeTab.toLowerCase()
|
|
38
|
+
)
|
|
14
39
|
|
|
15
|
-
|
|
16
|
-
{
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
description:
|
|
22
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit, Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit, Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
name: 'Parameter Name',
|
|
26
|
-
required: 'False',
|
|
27
|
-
type: 'Boolean',
|
|
28
|
-
enum: 'Active/Expired/Cancelled',
|
|
29
|
-
description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.sssssss',
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
name: 'Parameter Name',
|
|
33
|
-
required: 'True',
|
|
34
|
-
type: 'Object',
|
|
35
|
-
enum: '-',
|
|
36
|
-
description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.sssssss',
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
name: 'Parameter Name',
|
|
40
|
-
required: 'True',
|
|
41
|
-
type: 'Array_String',
|
|
42
|
-
enum: '-',
|
|
43
|
-
description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.sssssss',
|
|
44
|
-
},
|
|
45
|
-
]
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (selectedResStatusCode && selectedResStatusCode.value) {
|
|
42
|
+
const headerObj = data?.responses[selectedResStatusCode.value]
|
|
43
|
+
setHeadersList(headerObj?.headers)
|
|
44
|
+
}
|
|
45
|
+
}, [selectedResStatusCode])
|
|
46
46
|
|
|
47
47
|
return (
|
|
48
48
|
<div className="api-details-expanded">
|
|
@@ -51,99 +51,116 @@ export const EndpointPage = () => {
|
|
|
51
51
|
<SVGLoader src={ArrowBack} />
|
|
52
52
|
</button>
|
|
53
53
|
|
|
54
|
-
<
|
|
54
|
+
<Tooltip content="Comming soon">
|
|
55
|
+
<button className="disabled">Test</button>
|
|
56
|
+
</Tooltip>
|
|
55
57
|
</div>
|
|
56
58
|
<h3> Api Name</h3>
|
|
57
|
-
<h1 className="api-title">
|
|
59
|
+
<h1 className="api-title">{data?.api?.title}</h1>
|
|
58
60
|
<div className="url-box">
|
|
59
61
|
<div style={{ textAlign: 'center' }}>
|
|
60
|
-
<span className=
|
|
61
|
-
<span className="url-text">
|
|
62
|
+
<span className={`method-label ${data?.method?.toLowerCase()}`}>{data.method}</span>
|
|
63
|
+
<span className="url-text">{data?.path}</span>
|
|
62
64
|
</div>
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
<span className="icon" onClick={() => navigator.clipboard.writeText(data?.path)}>
|
|
66
|
+
<SVGLoader src={CopySticker} />
|
|
67
|
+
</span>
|
|
65
68
|
</div>
|
|
66
69
|
|
|
67
|
-
<p className="api-desc">
|
|
70
|
+
<p className="api-desc">{data?.api?.description || 'No Description'}</p>
|
|
68
71
|
|
|
69
72
|
<h3>Request</h3>
|
|
70
73
|
|
|
71
74
|
<div className="request-section">
|
|
72
75
|
<div className="request-tabs">
|
|
73
|
-
|
|
74
|
-
<
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
Request Body
|
|
88
|
-
</button>
|
|
76
|
+
{['header', 'path', 'query', 'Body'].map((tab) => (
|
|
77
|
+
<button
|
|
78
|
+
key={tab}
|
|
79
|
+
className={`tab ${activeTab === tab ? 'active' : ''}`}
|
|
80
|
+
onClick={() => setActiveTab(tab)}
|
|
81
|
+
>
|
|
82
|
+
<SVGLoader src={RequestOption} className="icon-left" />
|
|
83
|
+
<span className="tab-label">
|
|
84
|
+
{tab === 'requestBody'
|
|
85
|
+
? 'Request Body'
|
|
86
|
+
: tab.charAt(0).toUpperCase() + tab.slice(1)}
|
|
87
|
+
</span>
|
|
88
|
+
</button>
|
|
89
|
+
))}
|
|
89
90
|
</div>
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
<
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
<tbody>
|
|
102
|
-
{requestTableData.map((row, index) => (
|
|
103
|
-
<tr key={index}>
|
|
104
|
-
<td>{row.name}</td>
|
|
105
|
-
<td>{row.required}</td>
|
|
106
|
-
<td>{row.type}</td>
|
|
107
|
-
<td>{row.enum}</td>
|
|
108
|
-
<td className="desc-cell">
|
|
109
|
-
<div className={`desc-text ${expanded === index ? 'expanded' : ''}`}>
|
|
110
|
-
{row.description}
|
|
111
|
-
</div>
|
|
112
|
-
<button
|
|
113
|
-
className="desc-toggle"
|
|
114
|
-
onClick={() => setExpanded(expanded === index ? null : index)}
|
|
115
|
-
>
|
|
116
|
-
<SVGLoader
|
|
117
|
-
src={DownArrowIcon}
|
|
118
|
-
className={expanded === index ? 'rotated' : ''}
|
|
119
|
-
/>
|
|
120
|
-
</button>
|
|
121
|
-
</td>
|
|
91
|
+
|
|
92
|
+
{
|
|
93
|
+
<div className="table-wrapper">
|
|
94
|
+
<table className="param-table">
|
|
95
|
+
<thead>
|
|
96
|
+
<tr>
|
|
97
|
+
<th className="head-table-label">Parameter Name</th>
|
|
98
|
+
<th className="head-table-label">Required</th>
|
|
99
|
+
<th className="head-table-label">Type</th>
|
|
100
|
+
<th className="head-table-label">Enum</th>
|
|
101
|
+
<th className="head-table-label">Description</th>
|
|
122
102
|
</tr>
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
103
|
+
</thead>
|
|
104
|
+
<tbody>
|
|
105
|
+
{data.parameters
|
|
106
|
+
?.filter((p) => p.in?.toLowerCase() === activeTab.toLowerCase())
|
|
107
|
+
.map((row, index) => (
|
|
108
|
+
<tr key={index}>
|
|
109
|
+
<td>{row.name}</td>
|
|
110
|
+
<td>{row.required ? 'True' : 'False'}</td>
|
|
111
|
+
<td>{row.schema?.type || '-'}</td>
|
|
112
|
+
<td>{Array.isArray(row.schema?.enum) ? row.schema.enum.join(' / ') : '-'}</td>
|
|
113
|
+
<td className="desc-cell">
|
|
114
|
+
<div className={`desc-text ${expanded === index ? 'expanded' : ''}`}>
|
|
115
|
+
{row.description || 'No description'}
|
|
116
|
+
</div>
|
|
117
|
+
<button
|
|
118
|
+
className="desc-toggle"
|
|
119
|
+
onClick={() => setExpanded(expanded === index ? null : index)}
|
|
120
|
+
>
|
|
121
|
+
<SVGLoader
|
|
122
|
+
src={DownArrowIcon}
|
|
123
|
+
className={expanded === index ? 'rotated' : ''}
|
|
124
|
+
/>
|
|
125
|
+
</button>
|
|
126
|
+
</td>
|
|
127
|
+
</tr>
|
|
128
|
+
))}
|
|
129
|
+
</tbody>
|
|
130
|
+
</table>
|
|
131
|
+
</div>
|
|
132
|
+
}
|
|
127
133
|
</div>
|
|
128
134
|
|
|
129
135
|
<div className="response-section">
|
|
130
|
-
<
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
136
|
+
<h3>Response</h3>
|
|
137
|
+
|
|
138
|
+
<div style={{ width: '7.5rem', marginLeft: 'auto' }}>
|
|
139
|
+
{Object.keys(data?.responses || {})?.length > 0 && (
|
|
140
|
+
<div className={styles.codeboxSection}>
|
|
141
|
+
<div className={`${styles.codeboxHeader}`}>
|
|
142
|
+
<SelectGroup
|
|
143
|
+
size="small"
|
|
144
|
+
withSearch={false}
|
|
145
|
+
isMultiple={false}
|
|
146
|
+
clearable={false}
|
|
147
|
+
placeholder="200"
|
|
148
|
+
options={[
|
|
149
|
+
{
|
|
150
|
+
list: httpStatusCodeOptions,
|
|
151
|
+
},
|
|
152
|
+
]}
|
|
153
|
+
value={selectedResStatusCode}
|
|
154
|
+
onChange={(value) => {
|
|
155
|
+
setSelectedResStatusCode(value)
|
|
156
|
+
}}
|
|
157
|
+
/>
|
|
158
|
+
</div>
|
|
159
|
+
</div>
|
|
160
|
+
)}
|
|
143
161
|
</div>
|
|
144
162
|
|
|
145
|
-
<
|
|
146
|
-
<button className="tab">
|
|
163
|
+
<button className="tab active ">
|
|
147
164
|
<SVGLoader src={RequestOption} className="icon-left" />
|
|
148
165
|
Header
|
|
149
166
|
</button>
|
|
@@ -152,7 +169,7 @@ export const EndpointPage = () => {
|
|
|
152
169
|
<table className="param-table">
|
|
153
170
|
<thead>
|
|
154
171
|
<tr>
|
|
155
|
-
<th className="head-table-label">
|
|
172
|
+
<th className="head-table-label">Header Name</th>
|
|
156
173
|
<th className="head-table-label">Required</th>
|
|
157
174
|
<th className="head-table-label">Type</th>
|
|
158
175
|
<th className="head-table-label">Enum</th>
|
|
@@ -160,20 +177,15 @@ export const EndpointPage = () => {
|
|
|
160
177
|
</tr>
|
|
161
178
|
</thead>
|
|
162
179
|
<tbody>
|
|
163
|
-
|
|
164
|
-
<
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
<td>True</td>
|
|
173
|
-
<td>Array_Object</td>
|
|
174
|
-
<td>-</td>
|
|
175
|
-
<td>Borem taciti dolor ...</td>
|
|
176
|
-
</tr>
|
|
180
|
+
{Object.keys(headersList).map((key, index) => (
|
|
181
|
+
<tr>
|
|
182
|
+
<td>{key}</td>
|
|
183
|
+
<td>{headersList[key]?.required.toString()}</td>
|
|
184
|
+
<td>{headersList[key]?.schema?.type}</td>
|
|
185
|
+
<td>{headersList[key]?.schema?.enum?.join('/')}</td>
|
|
186
|
+
<td>{headersList[key]?.description}</td>
|
|
187
|
+
</tr>
|
|
188
|
+
))}
|
|
177
189
|
</tbody>
|
|
178
190
|
</table>
|
|
179
191
|
</div>
|
|
@@ -62,6 +62,7 @@ main {
|
|
|
62
62
|
font-weight: 400;
|
|
63
63
|
letter-spacing: 0px;
|
|
64
64
|
line-height: 1.5rem;
|
|
65
|
+
margin-top: 1.5rem;
|
|
65
66
|
margin-bottom: 0.5rem;
|
|
66
67
|
}
|
|
67
68
|
|
|
@@ -86,6 +87,31 @@ main {
|
|
|
86
87
|
text-transform: uppercase;
|
|
87
88
|
color: #3aaa35;
|
|
88
89
|
text-decoration: underline;
|
|
90
|
+
|
|
91
|
+
&.get {
|
|
92
|
+
color: #3a6cd1;
|
|
93
|
+
}
|
|
94
|
+
&.post {
|
|
95
|
+
color: #3aaa35;
|
|
96
|
+
}
|
|
97
|
+
&.put {
|
|
98
|
+
color: #faad14;
|
|
99
|
+
}
|
|
100
|
+
&.patch {
|
|
101
|
+
color: #58e2c2;
|
|
102
|
+
}
|
|
103
|
+
&.delete {
|
|
104
|
+
color: #da3f3f;
|
|
105
|
+
}
|
|
106
|
+
&.head {
|
|
107
|
+
color: #9461c9;
|
|
108
|
+
}
|
|
109
|
+
&.trace {
|
|
110
|
+
color: #ffa28f;
|
|
111
|
+
}
|
|
112
|
+
&.options {
|
|
113
|
+
color: #495d97;
|
|
114
|
+
}
|
|
89
115
|
}
|
|
90
116
|
|
|
91
117
|
.url-box {
|
|
@@ -127,13 +153,31 @@ main {
|
|
|
127
153
|
cursor: pointer;
|
|
128
154
|
font-size: 0.875rem;
|
|
129
155
|
color: #000000;
|
|
156
|
+
display: flex;
|
|
157
|
+
align-items: center;
|
|
158
|
+
gap: 0.375rem;
|
|
130
159
|
}
|
|
131
160
|
|
|
132
161
|
.tab {
|
|
162
|
+
background: white;
|
|
163
|
+
border: 1px solid #d1d3d8;
|
|
164
|
+
padding: 0.375rem 0.75rem;
|
|
165
|
+
border-radius: 6px;
|
|
166
|
+
cursor: pointer;
|
|
167
|
+
font-size: 0.875rem;
|
|
168
|
+
color: #000000;
|
|
133
169
|
display: flex;
|
|
134
170
|
align-items: center;
|
|
135
171
|
gap: 0.375rem;
|
|
172
|
+
|
|
173
|
+
&.active {
|
|
174
|
+
background-color: #e5edff;
|
|
175
|
+
border-color: #4d75d9;
|
|
176
|
+
color: #000000;
|
|
177
|
+
font-weight: 400;
|
|
178
|
+
}
|
|
136
179
|
}
|
|
180
|
+
|
|
137
181
|
.icon-left {
|
|
138
182
|
width: 0.875rem;
|
|
139
183
|
height: 0.875rem;
|
|
@@ -145,6 +189,7 @@ main {
|
|
|
145
189
|
border-radius: 0.8rem;
|
|
146
190
|
background: white;
|
|
147
191
|
border: 1px #bbbec5 solid;
|
|
192
|
+
margin-bottom: 2rem;
|
|
148
193
|
}
|
|
149
194
|
|
|
150
195
|
.param-table {
|
|
@@ -1,24 +1,51 @@
|
|
|
1
1
|
import './style.scss'
|
|
2
2
|
import SVGLoader from '../../../../components/SVGLoader/SVGLoader'
|
|
3
|
-
import { CopySticker } from '../../../../assets/icons/index'
|
|
3
|
+
import { arrowRightGray, CopySticker } from '../../../../assets/icons/index'
|
|
4
|
+
import { OverviewData } from 'src/layout/docsLayout'
|
|
4
5
|
|
|
5
|
-
export const TagPage = () => {
|
|
6
|
+
export const TagPage = ({ data, setActiveItemData, setActiveType, setExpandedSections }) => {
|
|
7
|
+
const handleClick = (endpoint) => {
|
|
8
|
+
setActiveItemData({
|
|
9
|
+
...endpoint,
|
|
10
|
+
api: {
|
|
11
|
+
id: data.apiSpecId,
|
|
12
|
+
title: data.title,
|
|
13
|
+
description: data.description,
|
|
14
|
+
version: data.version,
|
|
15
|
+
...data,
|
|
16
|
+
},
|
|
17
|
+
})
|
|
18
|
+
setActiveType('ENDPOINT')
|
|
19
|
+
|
|
20
|
+
setExpandedSections((prev) => ({
|
|
21
|
+
...prev,
|
|
22
|
+
[`api-${data.apiSpecId}-section`]: true,
|
|
23
|
+
[`api-${data.apiSpecId}-endpoints`]: true,
|
|
24
|
+
[`api-${data.apiSpecId}-resource-${endpoint.id}`]: true,
|
|
25
|
+
}))
|
|
26
|
+
}
|
|
6
27
|
return (
|
|
7
28
|
<div className="api-details-page">
|
|
8
29
|
<h2 className="welcome">Welcome to</h2>
|
|
9
|
-
<h1 className="api-title">
|
|
30
|
+
<h1 className="api-title">{data?.title}</h1>
|
|
10
31
|
<p className="api-version">
|
|
11
|
-
API Version: <span>
|
|
32
|
+
API Version: <span>{data?.version}</span>
|
|
12
33
|
</p>
|
|
13
34
|
|
|
14
35
|
<div className="custom-url-input">
|
|
15
36
|
<label className="input-label">API Base URL</label>
|
|
16
37
|
<div className="input-wrapper">
|
|
17
|
-
<input
|
|
38
|
+
<input
|
|
39
|
+
type="text"
|
|
40
|
+
value={!!data && !!data.servers && data.servers.length > 0 ? data.servers[0]?.url : '-'}
|
|
41
|
+
readOnly
|
|
42
|
+
/>
|
|
18
43
|
<span
|
|
19
44
|
className="icon"
|
|
20
45
|
onClick={() =>
|
|
21
|
-
navigator.clipboard.writeText(
|
|
46
|
+
navigator.clipboard.writeText(
|
|
47
|
+
`${!!data && !!data.servers && data.servers.length > 0 ? data.servers[0]?.url : '-'}`
|
|
48
|
+
)
|
|
22
49
|
}
|
|
23
50
|
>
|
|
24
51
|
<SVGLoader src={CopySticker} />
|
|
@@ -28,84 +55,60 @@ export const TagPage = () => {
|
|
|
28
55
|
|
|
29
56
|
<p className="api-desc">API Description</p>
|
|
30
57
|
<div className="api-product-tag">
|
|
31
|
-
Product with this API <span className="product-tag">
|
|
58
|
+
Product with this API <span className="product-tag">{data.associatedProduct.name}</span>
|
|
32
59
|
</div>
|
|
33
60
|
|
|
34
61
|
<h3 className="section-title">Endpoints</h3>
|
|
35
62
|
|
|
36
|
-
|
|
37
|
-
<
|
|
38
|
-
|
|
39
|
-
<div className="endpoint-
|
|
40
|
-
|
|
41
|
-
<
|
|
42
|
-
|
|
43
|
-
|
|
63
|
+
{Object.entries(data?.tags).map(([tag, endpoints]) => (
|
|
64
|
+
<div className="endpoint-group" key={tag}>
|
|
65
|
+
<h4 className="tag-title">{tag}</h4>
|
|
66
|
+
<div className="endpoint-list">
|
|
67
|
+
{endpoints.map((endpoint, idx) => (
|
|
68
|
+
<div
|
|
69
|
+
className="endpoint-card"
|
|
70
|
+
onClick={() => handleClick(endpoint)}
|
|
71
|
+
key={`${tag}-${idx}`}
|
|
72
|
+
>
|
|
73
|
+
<div>
|
|
74
|
+
<div className="endpoint-card-header">
|
|
75
|
+
<span className={`method-label ${endpoint.method.toLowerCase()}`}>
|
|
76
|
+
{endpoint.method}
|
|
77
|
+
</span>
|
|
78
|
+
<div className="title-wrapper">
|
|
79
|
+
<h5>
|
|
80
|
+
{(endpoint.summary || 'Endpoint Name').slice(0, 17)}
|
|
81
|
+
{(endpoint.summary?.length ?? 0) > 17 && '...'}
|
|
82
|
+
</h5>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
<div className="endpoint-meta">
|
|
86
|
+
<p>{endpoint.path}</p>
|
|
87
|
+
<p className="description">{endpoint.description ?? 'No Description '}</p>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
44
90
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
<div className="endpoint-card">
|
|
51
|
-
<div className="endpoint-card-header">
|
|
52
|
-
<span className="method-label patch">PATCH</span>
|
|
53
|
-
<h5>Endpoint Name</h5>
|
|
54
|
-
</div>
|
|
55
|
-
<div className="endpoint-meta">
|
|
56
|
-
<p>/auth/login/</p>
|
|
57
|
-
<p className="description">Update login info</p>
|
|
58
|
-
</div>
|
|
91
|
+
<div className="endpoint-arrow">
|
|
92
|
+
<SVGLoader src={arrowRightGray} />
|
|
93
|
+
</div>
|
|
94
|
+
</div>
|
|
95
|
+
))}
|
|
59
96
|
</div>
|
|
60
97
|
</div>
|
|
61
|
-
|
|
98
|
+
))}
|
|
62
99
|
|
|
63
|
-
|
|
64
|
-
<
|
|
65
|
-
|
|
66
|
-
<div className="
|
|
67
|
-
|
|
68
|
-
<
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
<p>/auth/login/</p>
|
|
73
|
-
<p className="description">Create login session</p>
|
|
74
|
-
</div>
|
|
75
|
-
</div>
|
|
76
|
-
<div className="endpoint-card">
|
|
77
|
-
<div className="endpoint-card-header">
|
|
78
|
-
<span className="method-label put">PUT</span>
|
|
79
|
-
<h5>Endpoint Name</h5>
|
|
80
|
-
</div>
|
|
81
|
-
<div className="endpoint-meta">
|
|
82
|
-
<p>/auth/login/</p>
|
|
83
|
-
<p className="description">Replace login session</p>
|
|
84
|
-
</div>
|
|
85
|
-
</div>
|
|
86
|
-
<div className="endpoint-card">
|
|
87
|
-
<div className="endpoint-card-header">
|
|
88
|
-
<span className="method-label delete">DELETE</span>
|
|
89
|
-
<h5>Endpoint Name</h5>
|
|
90
|
-
</div>
|
|
91
|
-
<div className="endpoint-meta">
|
|
92
|
-
<p>/auth/login/</p>
|
|
93
|
-
<p className="description">Delete login session</p>
|
|
94
|
-
</div>
|
|
100
|
+
{data.apiVersions?.length > 0 && (
|
|
101
|
+
<div className="versions-section">
|
|
102
|
+
<h4>API Versions</h4>
|
|
103
|
+
<div className="version-list">
|
|
104
|
+
{data.apiVersions.map((verObj, index) => (
|
|
105
|
+
<button key={index} className="version-btn">
|
|
106
|
+
{verObj.metaData?.version || 'N/A'}
|
|
107
|
+
</button>
|
|
108
|
+
))}
|
|
95
109
|
</div>
|
|
96
110
|
</div>
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
<div className="versions-section">
|
|
100
|
-
<h4>API Versions</h4>
|
|
101
|
-
<div className="version-list">
|
|
102
|
-
{['1.2.0', '1.3.0', '1.4.0', '1.5.0', '2.2.0'].map((ver) => (
|
|
103
|
-
<button key={ver} className="version-btn">
|
|
104
|
-
{ver}
|
|
105
|
-
</button>
|
|
106
|
-
))}
|
|
107
|
-
</div>
|
|
108
|
-
</div>
|
|
111
|
+
)}
|
|
109
112
|
</div>
|
|
110
113
|
)
|
|
111
114
|
}
|
|
@@ -135,21 +135,36 @@
|
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
.endpoint-card {
|
|
138
|
-
|
|
139
|
-
|
|
138
|
+
display: flex;
|
|
139
|
+
align-items: center;
|
|
140
|
+
justify-content: space-between;
|
|
140
141
|
padding: 1rem;
|
|
142
|
+
border: 1px solid #e5e7eb;
|
|
143
|
+
border-radius: 0.5rem;
|
|
141
144
|
background-color: #fff;
|
|
145
|
+
margin-bottom: 1rem;
|
|
146
|
+
transition: box-shadow 0.2s ease;
|
|
142
147
|
|
|
143
148
|
.endpoint-card-header {
|
|
144
149
|
display: flex;
|
|
145
150
|
gap: 1.5rem;
|
|
146
151
|
align-items: flex-start;
|
|
147
152
|
|
|
153
|
+
.title-wrapper {
|
|
154
|
+
flex: 1;
|
|
155
|
+
width: 8rem;
|
|
156
|
+
min-width: 0;
|
|
157
|
+
}
|
|
158
|
+
|
|
148
159
|
h5 {
|
|
149
160
|
font-size: 1rem;
|
|
150
161
|
font-weight: 400;
|
|
151
162
|
line-height: 1.25rem;
|
|
152
163
|
letter-spacing: 0px;
|
|
164
|
+
white-space: nowrap;
|
|
165
|
+
overflow: hidden;
|
|
166
|
+
text-overflow: ellipsis;
|
|
167
|
+
max-width: 100%;
|
|
153
168
|
}
|
|
154
169
|
}
|
|
155
170
|
|
|
@@ -161,7 +176,7 @@
|
|
|
161
176
|
padding: 0.275rem 1.563rem;
|
|
162
177
|
border-radius: 0.188rem;
|
|
163
178
|
display: inline-block;
|
|
164
|
-
margin-bottom:
|
|
179
|
+
margin-bottom: 1rem;
|
|
165
180
|
text-transform: uppercase;
|
|
166
181
|
|
|
167
182
|
&.get {
|
|
@@ -184,6 +199,18 @@
|
|
|
184
199
|
background-color: #da3f3f;
|
|
185
200
|
color: #ffffff;
|
|
186
201
|
}
|
|
202
|
+
&.head {
|
|
203
|
+
background-color: #9461c9;
|
|
204
|
+
color: #ffffff;
|
|
205
|
+
}
|
|
206
|
+
&.trace {
|
|
207
|
+
background-color: #ffa28f;
|
|
208
|
+
color: #ffffff;
|
|
209
|
+
}
|
|
210
|
+
&.options {
|
|
211
|
+
background-color: #495d97;
|
|
212
|
+
color: #ffffff;
|
|
213
|
+
}
|
|
187
214
|
}
|
|
188
215
|
|
|
189
216
|
.endpoint-meta {
|
|
@@ -208,9 +235,16 @@
|
|
|
208
235
|
line-height: 1rem;
|
|
209
236
|
font-weight: 400;
|
|
210
237
|
letter-spacing: 0px;
|
|
211
|
-
margin-top:
|
|
238
|
+
margin-top: 1.5rem;
|
|
212
239
|
}
|
|
213
240
|
}
|
|
241
|
+
.endpoint-arrow {
|
|
242
|
+
align-content: center;
|
|
243
|
+
width: 1rem;
|
|
244
|
+
height: 1rem;
|
|
245
|
+
flex-shrink: 0;
|
|
246
|
+
margin-left: 1rem;
|
|
247
|
+
}
|
|
214
248
|
}
|
|
215
249
|
}
|
|
216
250
|
|
|
@@ -230,9 +264,11 @@
|
|
|
230
264
|
.version-list {
|
|
231
265
|
display: flex;
|
|
232
266
|
flex-wrap: wrap;
|
|
233
|
-
gap:
|
|
267
|
+
gap: 1rem;
|
|
234
268
|
|
|
235
269
|
.version-btn {
|
|
270
|
+
width: 3.9375rem;
|
|
271
|
+
height: 3rem;
|
|
236
272
|
padding: 0.4rem 0.8rem;
|
|
237
273
|
border: 1px solid #4d75d9;
|
|
238
274
|
border-radius: 0.375rem;
|
|
@@ -240,6 +276,7 @@
|
|
|
240
276
|
cursor: pointer;
|
|
241
277
|
font-size: 0.875rem;
|
|
242
278
|
color: #4d75d9;
|
|
279
|
+
box-shadow: inset 0 1px 3px #00000040;
|
|
243
280
|
}
|
|
244
281
|
}
|
|
245
282
|
}
|