@digi-frontend/dgate-api-documentation 1.0.47 → 1.0.50

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 (138) hide show
  1. package/dist/_virtual/core.js +2 -0
  2. package/dist/_virtual/core.js.map +1 -0
  3. package/dist/_virtual/core2.js +2 -0
  4. package/dist/_virtual/core2.js.map +1 -0
  5. package/dist/_virtual/format.js +2 -0
  6. package/dist/_virtual/format.js.map +1 -0
  7. package/dist/_virtual/index3.js +1 -1
  8. package/dist/_virtual/index4.js +1 -1
  9. package/dist/_virtual/index5.js +1 -1
  10. package/dist/_virtual/index6.js +1 -1
  11. package/dist/f4452c3ebcf0d5da.svg +4 -0
  12. package/dist/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js +2 -0
  13. package/dist/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js.map +1 -0
  14. package/dist/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js +2 -0
  15. package/dist/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js.map +1 -0
  16. package/dist/node_modules/@babel/runtime/helpers/esm/defineProperty.js +2 -0
  17. package/dist/node_modules/@babel/runtime/helpers/esm/defineProperty.js.map +1 -0
  18. package/dist/node_modules/@babel/runtime/helpers/esm/extends.js +2 -0
  19. package/dist/node_modules/@babel/runtime/helpers/esm/extends.js.map +1 -0
  20. package/dist/node_modules/@babel/runtime/helpers/esm/iterableToArray.js +2 -0
  21. package/dist/node_modules/@babel/runtime/helpers/esm/iterableToArray.js.map +1 -0
  22. package/dist/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js +2 -0
  23. package/dist/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js.map +1 -0
  24. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js +2 -0
  25. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js.map +1 -0
  26. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +2 -0
  27. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js.map +1 -0
  28. package/dist/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js +2 -0
  29. package/dist/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js.map +1 -0
  30. package/dist/node_modules/@babel/runtime/helpers/esm/toPrimitive.js +2 -0
  31. package/dist/node_modules/@babel/runtime/helpers/esm/toPrimitive.js.map +1 -0
  32. package/dist/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js +2 -0
  33. package/dist/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js.map +1 -0
  34. package/dist/node_modules/@babel/runtime/helpers/esm/typeof.js +2 -0
  35. package/dist/node_modules/@babel/runtime/helpers/esm/typeof.js.map +1 -0
  36. package/dist/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js +2 -0
  37. package/dist/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js.map +1 -0
  38. package/dist/node_modules/fault/index.js +2 -0
  39. package/dist/node_modules/fault/index.js.map +1 -0
  40. package/dist/node_modules/format/format.js +2 -0
  41. package/dist/node_modules/format/format.js.map +1 -0
  42. package/dist/node_modules/highlight.js/lib/core.js +2 -0
  43. package/dist/node_modules/highlight.js/lib/core.js.map +1 -0
  44. package/dist/node_modules/lowlight/lib/core.js +2 -0
  45. package/dist/node_modules/lowlight/lib/core.js.map +1 -0
  46. package/dist/node_modules/nanoid/index.js +2 -0
  47. package/dist/node_modules/nanoid/index.js.map +1 -0
  48. package/dist/node_modules/nanoid/url-alphabet/index.js +2 -0
  49. package/dist/node_modules/nanoid/url-alphabet/index.js.map +1 -0
  50. package/dist/node_modules/react-syntax-highlighter/dist/esm/checkForListedLanguage.js +2 -0
  51. package/dist/node_modules/react-syntax-highlighter/dist/esm/checkForListedLanguage.js.map +1 -0
  52. package/dist/node_modules/react-syntax-highlighter/dist/esm/create-element.js +2 -0
  53. package/dist/node_modules/react-syntax-highlighter/dist/esm/create-element.js.map +1 -0
  54. package/dist/node_modules/react-syntax-highlighter/dist/esm/highlight.js +2 -0
  55. package/dist/node_modules/react-syntax-highlighter/dist/esm/highlight.js.map +1 -0
  56. package/dist/node_modules/react-syntax-highlighter/dist/esm/light.js +2 -0
  57. package/dist/node_modules/react-syntax-highlighter/dist/esm/light.js.map +1 -0
  58. package/dist/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/stackoverflow-dark.js +2 -0
  59. package/dist/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/stackoverflow-dark.js.map +1 -0
  60. package/dist/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/stackoverflow-light.js +2 -0
  61. package/dist/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/stackoverflow-light.js.map +1 -0
  62. package/dist/node_modules/toposort/index.js +1 -1
  63. package/dist/node_modules/yup/index.esm.js +1 -1
  64. package/dist/src/assets/icons/UpArrow.svg.js +2 -0
  65. package/dist/src/assets/icons/UpArrow.svg.js.map +1 -0
  66. package/dist/src/assets/icons/copy.svg.js +2 -0
  67. package/dist/src/assets/icons/copy.svg.js.map +1 -0
  68. package/dist/src/components/MethodAccordion/MethodAccordion.js +1 -1
  69. package/dist/src/components/MethodAccordion/MethodAccordion.js.map +1 -1
  70. package/dist/src/components/dialog/index.js +1 -1
  71. package/dist/src/components/dialog/index.js.map +1 -1
  72. package/dist/src/components/table/table.js +1 -1
  73. package/dist/src/components/table/table.js.map +1 -1
  74. package/dist/src/constants/methods.constant.js +1 -1
  75. package/dist/src/constants/methods.constant.js.map +1 -1
  76. package/dist/src/helpers/docs.helper.js +2 -0
  77. package/dist/src/helpers/docs.helper.js.map +1 -0
  78. package/dist/src/layout/docsComponents/Codebox/Codebox.js +2 -0
  79. package/dist/src/layout/docsComponents/Codebox/Codebox.js.map +1 -0
  80. package/dist/src/layout/docsComponents/Codebox/style.module.scss.js +2 -0
  81. package/dist/src/layout/docsComponents/Codebox/style.module.scss.js.map +1 -0
  82. package/dist/src/layout/docsComponents/DocsAside/DocsAside.js +1 -1
  83. package/dist/src/layout/docsComponents/DocsAside/DocsAside.js.map +1 -1
  84. package/dist/src/layout/docsComponents/DocsAside/style.module.scss.js +2 -0
  85. package/dist/src/layout/docsComponents/DocsAside/style.module.scss.js.map +1 -0
  86. package/dist/src/layout/docsComponents/DocsContent/DocsContent.js +1 -1
  87. package/dist/src/layout/docsComponents/DocsContent/DocsContent.js.map +1 -1
  88. package/dist/src/layout/docsComponents/DocsContent/TagPage/index.js +2 -0
  89. package/dist/src/layout/docsComponents/DocsContent/TagPage/index.js.map +1 -0
  90. package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.js +1 -1
  91. package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.js.map +1 -1
  92. package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js +1 -1
  93. package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js.map +1 -1
  94. package/dist/src/layout/docsLayout.js +1 -1
  95. package/dist/src/layout/docsLayout.js.map +1 -1
  96. package/dist/src/layout/layout.js +1 -1
  97. package/dist/src/layout/layout.js.map +1 -1
  98. package/dist/src/layout/layout.module.css.js +1 -1
  99. package/dist/src/utils/index.js +2 -0
  100. package/dist/src/utils/index.js.map +1 -0
  101. package/dist/styles.css +659 -429
  102. package/dist/types/assets/icons/index.d.ts +1 -0
  103. package/dist/types/components/dialog/dialog.d.ts +1 -0
  104. package/dist/types/components/dialog/index.d.ts +1 -1
  105. package/dist/types/layout/docsComponents/Codebox/Codebox.d.ts +4 -0
  106. package/dist/types/layout/docsComponents/DocsAside/DocsAside.d.ts +4 -2
  107. package/dist/types/layout/docsComponents/DocsContent/DocsContent.d.ts +4 -1
  108. package/dist/types/layout/docsComponents/DocsContent/EndpointPage/index.d.ts +3 -1
  109. package/dist/types/layout/docsComponents/DocsContent/TagPage/index.d.ts +3 -1
  110. package/dist/types/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.d.ts +2 -1
  111. package/dist/types/utils/index.d.ts +1 -0
  112. package/package.json +4 -3
  113. package/rollup.config.js +2 -0
  114. package/src/assets/icons/copy.svg +4 -0
  115. package/src/assets/icons/index.ts +1 -0
  116. package/src/components/MethodAccordion/MethodAccordion.module.scss +20 -11
  117. package/src/components/MethodAccordion/MethodAccordion.tsx +21 -13
  118. package/src/components/dialog/dialog.ts +1 -0
  119. package/src/components/dialog/index.tsx +27 -24
  120. package/src/components/table/table.tsx +5 -1
  121. package/src/constants/methods.constant.ts +1 -1
  122. package/src/layout/docsComponents/Codebox/Codebox.tsx +61 -0
  123. package/src/layout/docsComponents/Codebox/style.module.scss +43 -0
  124. package/src/layout/docsComponents/DocsAside/DocsAside.tsx +90 -4
  125. package/src/layout/docsComponents/DocsAside/style.module.scss +113 -0
  126. package/src/layout/docsComponents/DocsContent/DocsContent.tsx +3 -2
  127. package/src/layout/docsComponents/DocsContent/EndpointPage/index.tsx +2 -1
  128. package/src/layout/docsComponents/DocsContent/TagPage/index.tsx +34 -63
  129. package/src/layout/docsComponents/DocsContent/TagPage/style.scss +42 -5
  130. package/src/layout/docsComponents/DocsHeader/DocsHeader.module.scss +78 -5
  131. package/src/layout/docsComponents/DocsHeader/DocsHeader.tsx +51 -14
  132. package/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.tsx +17 -12
  133. package/src/layout/docsComponents/index.scss +3 -1
  134. package/src/layout/docsLayout.tsx +15 -12
  135. package/src/layout/layout.module.css +8 -5
  136. package/src/layout/layout.tsx +3 -3
  137. package/src/utils/index.ts +7 -0
  138. package/src/layout/docsComponents/DocsAside/style.scss +0 -3
@@ -4,10 +4,11 @@ import SVGLoader from '../../../components/SVGLoader/SVGLoader'
4
4
  import { CopySticker } from '../../../assets/icons/index'
5
5
  import { TagPage } from './TagPage'
6
6
  import { EndpointPage } from './EndpointPage'
7
+ import { EndpointData, OverviewData } from 'src/layout/docsLayout'
7
8
 
8
- const DocsContent = () => {
9
+ const DocsContent = ({ data }: { data: OverviewData | EndpointData }) => {
9
10
  const isTagPage = false
10
- return <main>{isTagPage ? <TagPage /> : <EndpointPage />}</main>
11
+ return <main>{!isTagPage ? <TagPage data={data} /> : <EndpointPage data={data} />}</main>
11
12
  }
12
13
 
13
14
  export default DocsContent
@@ -8,8 +8,9 @@ import {
8
8
  } from '../../../../assets/icons/index'
9
9
  import { ArrowIcon, SelectGroup } from 'digitinary-ui'
10
10
  import { useState } from 'react'
11
+ import { EndpointData } from 'src/layout/docsLayout'
11
12
 
12
- export const EndpointPage = () => {
13
+ export const EndpointPage = ({ data }) => {
13
14
  const [expanded, setExpanded] = useState(null)
14
15
 
15
16
  const requestTableData = [
@@ -1,14 +1,15 @@
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 }) => {
6
7
  return (
7
8
  <div className="api-details-page">
8
9
  <h2 className="welcome">Welcome to</h2>
9
- <h1 className="api-title">API Name</h1>
10
+ <h1 className="api-title">{data.title}</h1>
10
11
  <p className="api-version">
11
- API Version: <span>2.3.0</span>
12
+ API Version: <span>{data.version}</span>
12
13
  </p>
13
14
 
14
15
  <div className="custom-url-input">
@@ -33,68 +34,38 @@ export const TagPage = () => {
33
34
 
34
35
  <h3 className="section-title">Endpoints</h3>
35
36
 
36
- <div className="endpoint-group">
37
- <h4 className="tag-title">Tag 01</h4>
38
- <div className="endpoint-list">
39
- <div className="endpoint-card">
40
- <div className="endpoint-card-header">
41
- <span className="method-label get">GET</span>
42
- <h5>Endpoint Name</h5>
43
- </div>
37
+ {Object.entries(data.tags).map(([tag, endpoints]) => (
38
+ <div className="endpoint-group" key={tag}>
39
+ <h4 className="tag-title">{tag}</h4>
40
+ <div className="endpoint-list">
41
+ {endpoints.map((endpoint, idx) => (
42
+ <div className="endpoint-card" key={`${tag}-${idx}`}>
43
+ <div>
44
+ <div className="endpoint-card-header">
45
+ <span className={`method-label ${endpoint.method.toLowerCase()}`}>
46
+ {endpoint.method}
47
+ </span>
48
+ <div className="title-wrapper">
49
+ <h5>
50
+ {(endpoint.summary || 'Endpoint Name').slice(0, 17)}
51
+ {(endpoint.summary?.length ?? 0) > 17 && '...'}
52
+ </h5>
53
+ </div>
54
+ </div>
55
+ <div className="endpoint-meta">
56
+ <p>{endpoint.path}</p>
57
+ <p className="description">{endpoint.description ?? 'No Description '}</p>
58
+ </div>
59
+ </div>
44
60
 
45
- <div className="endpoint-meta">
46
- <p>/auth/login/</p>
47
- <p className="description">Login endpoint</p>
48
- </div>
49
- </div>
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>
59
- </div>
60
- </div>
61
- </div>
62
-
63
- <div className="endpoint-group">
64
- <h4 className="tag-title">Tag 02</h4>
65
- <div className="endpoint-list">
66
- <div className="endpoint-card">
67
- <div className="endpoint-card-header">
68
- <span className="method-label post">POST</span>
69
- <h5>Endpoint Name</h5>
70
- </div>
71
- <div className="endpoint-meta">
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>
61
+ <div className="endpoint-arrow">
62
+ <SVGLoader src={arrowRightGray} />
63
+ </div>
64
+ </div>
65
+ ))}
95
66
  </div>
96
67
  </div>
97
- </div>
68
+ ))}
98
69
 
99
70
  <div className="versions-section">
100
71
  <h4>API Versions</h4>
@@ -135,21 +135,36 @@
135
135
  }
136
136
 
137
137
  .endpoint-card {
138
- border: 1px solid #ddd;
139
- border-radius: 0.5rem;
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: 0.5rem;
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: 1rem;
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: 0.5rem;
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
  }
@@ -17,7 +17,7 @@
17
17
  margin-left: 2.9375rem;
18
18
  }
19
19
 
20
- :global(.search-filter-btn) {
20
+ .search_filter_btn {
21
21
  background-color: #ffffff !important;
22
22
  border: 1px solid #e8e9ee !important;
23
23
  width: 10.4375rem;
@@ -30,6 +30,10 @@
30
30
  color: #000000;
31
31
  }
32
32
 
33
+ &:hover {
34
+ color: #000;
35
+ }
36
+
33
37
  svg {
34
38
  margin-left: 0.5rem;
35
39
  }
@@ -55,13 +59,16 @@
55
59
  }
56
60
  }
57
61
 
58
- :global(.api-btn) {
62
+ .api_btn {
59
63
  background-color: #ffffff !important;
64
+ display: flex;
65
+ flex-direction: row;
66
+ align-items: center;
60
67
  border: none !important;
61
68
  box-shadow: 0px 1px 2px rgba(16, 24, 40, 0.05);
62
69
  padding: 0.4rem;
63
- width: 8.5rem;
64
- font-size: 0.9175rem;
70
+ width: 8.4875rem;
71
+ font-size: 0.8125rem;
65
72
  font-weight: 400;
66
73
  line-height: 1.234rem;
67
74
  height: 2.25rem;
@@ -135,12 +142,78 @@
135
142
  cursor: pointer;
136
143
  }
137
144
 
145
+ .name-input {
146
+ // border-color: #bbbec5 !important;
147
+ width: 27.875rem;
148
+ height: 2.5rem;
149
+ border-radius: 0.5rem;
150
+ border: 0.0625rem solid #bbbec5;
151
+ padding-top: 0.5rem;
152
+ padding-bottom: 0.5rem;
153
+
154
+ > div.inputWrapper {
155
+ border: 0px !important;
156
+ }
157
+ }
158
+
159
+ .methodList {
160
+ width: 27.875rem;
161
+ border-radius: 0.5rem;
162
+ border: 0.0625rem solid #f0f1f2;
163
+
164
+ .method-item {
165
+ display: flex;
166
+ flex-direction: row;
167
+ justify-content: flex-start;
168
+ align-items: center;
169
+ gap: 0.5rem;
170
+ padding-left: 0.75rem;
171
+ padding-right: 0.75rem;
172
+ padding-top: 0.5rem;
173
+ border-radius: 0.5rem;
174
+ padding-bottom: 0.5rem;
175
+ border-bottom: 1px solid #f0f1f2;
176
+ span {
177
+ font-weight: 400;
178
+ font-size: 0.875rem;
179
+ }
180
+ input {
181
+ cursor: pointer;
182
+ width: 1.25rem;
183
+ height: 1.25rem;
184
+ border-radius: 0.25rem;
185
+ border: 1px solid #64748b;
186
+ }
187
+ }
188
+ }
189
+
138
190
  .method-container {
139
191
  display: flex;
140
192
  flex-direction: column;
141
193
  gap: 0.5rem;
142
194
  position: relative;
143
195
  z-index: 10;
196
+
197
+ .typeDdl {
198
+ cursor: pointer;
199
+ width: 27.875rem;
200
+ height: 2.5rem;
201
+ border-radius: 0.5rem;
202
+ border: 0.0625rem solid #bbbec5;
203
+ padding-top: 0.5rem;
204
+ padding-bottom: 0.5rem;
205
+ padding-left: 1.3rem;
206
+ padding-right: 0.75rem;
207
+ display: flex;
208
+ justify-content: space-between;
209
+ align-items: center;
210
+
211
+ span {
212
+ font-weight: 400;
213
+ font-size: 0.875rem;
214
+ color: #8390a2;
215
+ }
216
+ }
144
217
  }
145
218
 
146
219
  .method-container label {
@@ -157,7 +230,7 @@
157
230
  display: flex;
158
231
  justify-content: center;
159
232
  width: 100%;
160
- margin-top: auto;
233
+ padding-top: 0 !important;
161
234
  padding: 1.5rem 0;
162
235
  }
163
236
 
@@ -1,7 +1,15 @@
1
1
  import React, { useState, useRef } from 'react'
2
2
  import { Button, Size, Input, SelectGroup } from 'digitinary-ui'
3
3
  import SVGLoader from '../../../components/SVGLoader/SVGLoader'
4
- import { FilterIcon, BookIcon, ApiIcon, SearchIcon } from '../../../assets/icons'
4
+ import {
5
+ FilterIcon,
6
+ BookIcon,
7
+ ApiIcon,
8
+ SearchIcon,
9
+ arrowDownGray,
10
+ UpArrowIcon,
11
+ DownArrowIcon,
12
+ } from '../../../assets/icons'
5
13
  import Tooltip from '../../../components/Tooltip/Tooltip'
6
14
  import CommonDialog from '../../../components/dialog/index'
7
15
  import { METHOD_OPTIONS } from '../../../constants/methods.constant'
@@ -11,6 +19,7 @@ const DocsHeader: React.FC = () => {
11
19
  const [showSearchFilter, setShowSearchFilter] = useState<boolean>(false)
12
20
  const [apiName, setApiName] = useState<string>('')
13
21
  const [selectedMethods, setSelectedMethods] = useState<any[]>([])
22
+ const [methodListOpened, setMethodListOpened] = useState(false)
14
23
  const [isMethodDropdownOpen, setIsMethodDropdownOpen] = useState<boolean>(false)
15
24
  const selectRef = useRef<any>(null)
16
25
 
@@ -27,6 +36,19 @@ const DocsHeader: React.FC = () => {
27
36
  setShowSearchFilter(false)
28
37
  }
29
38
 
39
+ const handleCheckMethod = (e, method: (typeof METHOD_OPTIONS)[0]) => {
40
+ const {
41
+ target: { checked },
42
+ } = e
43
+ if (checked) {
44
+ setSelectedMethods((prev) => [...prev, method.value])
45
+ } else {
46
+ if (selectedMethods.includes(method.value)) {
47
+ setSelectedMethods((prev) => prev.filter((_m) => _m != method.value))
48
+ }
49
+ }
50
+ }
51
+
30
52
  return (
31
53
  <>
32
54
  <header className={styles.api_docs_header}>
@@ -34,7 +56,7 @@ const DocsHeader: React.FC = () => {
34
56
  <Button
35
57
  variant="outlined"
36
58
  size="small"
37
- className="search-filter-btn"
59
+ className={styles.search_filter_btn}
38
60
  onClick={handleOpenSearchFilter}
39
61
  >
40
62
  Search & Filter
@@ -52,9 +74,8 @@ const DocsHeader: React.FC = () => {
52
74
  GUIDES
53
75
  </Button>
54
76
  </Tooltip>
55
- <Button variant="outlined" size="small" className="api-btn">
56
- <SVGLoader src={ApiIcon} />
57
- API reference
77
+ <Button variant="outlined" size="small" className={styles.api_btn}>
78
+ <SVGLoader src={ApiIcon} /> &nbsp; API reference
58
79
  </Button>
59
80
  </div>
60
81
  </div>
@@ -65,12 +86,14 @@ const DocsHeader: React.FC = () => {
65
86
  onClose={handleCloseSearchFilter}
66
87
  icon={false}
67
88
  withClose={false}
89
+ noActions
68
90
  content={
69
91
  <div className={`search-filter-form ${isMethodDropdownOpen ? 'expanded' : ''}`}>
70
92
  <div className="search-filter-form__header">
71
93
  <p className="search-filter-form__header__title">Search & Filter</p>
72
94
  </div>
73
95
  <Input
96
+ className="name-input"
74
97
  placeholder="Search by API name"
75
98
  value={apiName}
76
99
  onChange={(value) => setApiName(value as string)}
@@ -80,23 +103,37 @@ const DocsHeader: React.FC = () => {
80
103
  />
81
104
  <div className="method-container">
82
105
  <label>Method</label>
83
- <SelectGroup
106
+ {/* <SelectGroup
84
107
  isMultiple={true}
85
108
  size={Size.Medium}
86
109
  placeholder="Select Method"
87
110
  value={selectedMethods}
88
111
  onChange={(value) => setSelectedMethods(value || [])}
89
112
  options={[
90
- {
91
- list: METHOD_OPTIONS.map((method) => ({
92
- label: <span style={{ color: method.color }}>{method.label}</span>,
93
- value: method.value,
94
- data: method,
95
- })),
96
- },
113
+
97
114
  ]}
115
+ withSearch={false}
98
116
  className="method-select custom-select-border"
99
- />
117
+ /> */}
118
+ <div className="typeDdl" onClick={() => setIsMethodDropdownOpen((prev) => !prev)}>
119
+ <span>Select Method</span>
120
+ <SVGLoader src={!isMethodDropdownOpen ? DownArrowIcon : UpArrowIcon} />
121
+ </div>
122
+ {isMethodDropdownOpen && (
123
+ <div className="methodList">
124
+ {METHOD_OPTIONS.map((_m) => (
125
+ <div className="method-item">
126
+ <input
127
+ type="checkbox"
128
+ className="agreement-checkbox"
129
+ checked={selectedMethods.includes(_m.value)}
130
+ onChange={(e) => handleCheckMethod(e, _m)}
131
+ />
132
+ <span style={{ color: _m.color }}>{_m.label}</span>
133
+ </div>
134
+ ))}
135
+ </div>
136
+ )}
100
137
  </div>
101
138
  <div className="button-container">
102
139
  <Button
@@ -8,6 +8,7 @@ const DocsSideMenuTree = ({
8
8
  setActiveItemData,
9
9
  isFirstApiExpanded,
10
10
  setIsFirstApiExpanded,
11
+ setActiveType,
11
12
  }) => {
12
13
  const [expandedSections, setExpandedSections] = useState({})
13
14
 
@@ -47,17 +48,17 @@ const DocsSideMenuTree = ({
47
48
  key={index}
48
49
  className={`api-docs-api-tree__endpoint api-docs-api-tree__endpoint--${endpoint.method.toLowerCase()}`}
49
50
  onClick={() => {
50
- setActiveItemData({
51
- ...endpoint,
52
- api: {
53
- id: api.id,
54
- title: api.title,
55
- description: api.description,
56
- version: api.version,
57
- },
58
- })
59
-
60
51
  if (!isResourceExpanded) {
52
+ setActiveItemData({
53
+ ...endpoint,
54
+ api: {
55
+ id: api.id,
56
+ title: api.title,
57
+ description: api.description,
58
+ version: api.version,
59
+ },
60
+ })
61
+ setActiveType('ENDPOINT')
61
62
  toggleSection(api.id, `api-${api.id}-resource-${endpoint.id}`, true, [
62
63
  'resource',
63
64
  'overview',
@@ -85,6 +86,7 @@ const DocsSideMenuTree = ({
85
86
  toggleSection(api.id, `api-${api.id}-section`)
86
87
  toggleSection(api.id, `api-${api.id}-overview`)
87
88
  setActiveItemData(api)
89
+ setActiveType('OVERVIEW')
88
90
  }
89
91
 
90
92
  return (
@@ -107,8 +109,11 @@ const DocsSideMenuTree = ({
107
109
  <div
108
110
  className={`api-docs-api-tree__section__overview`}
109
111
  onClick={() => {
110
- toggleSection(api.id, `api-${api.id}-overview`, true, ['resource'])
111
- setActiveItemData(api)
112
+ if (!isOverviewExpanded) {
113
+ toggleSection(api.id, `api-${api.id}-overview`, true, ['resource'])
114
+ setActiveItemData(api)
115
+ setActiveType('OVERVIEW')
116
+ }
112
117
  }}
113
118
  data-active={isOverviewExpanded}
114
119
  >
@@ -1,10 +1,12 @@
1
1
  .api-docs-layout {
2
+ @import url('https://fonts.googleapis.com/css2?family=Cascadia+Code:ital,wght@0,200..700;1,200..700&display=swap');
3
+
2
4
  display: grid;
3
5
  height: 100vh;
4
6
  max-height: 100%;
5
7
  width: 100%;
6
8
  overflow: hidden;
7
- grid-template: 3.125rem auto / 12.5rem 1fr auto;
9
+ grid-template: 2.625rem auto / 12.5rem 1fr auto;
8
10
  padding: 0 !important;
9
11
 
10
12
  * {
@@ -40,16 +40,18 @@ const DocsLayout = ({ openApiJson }: ILayoutProps): JSX.Element => {
40
40
  const [transformedOpenApis, setTransformedOpenApis] = useState([])
41
41
  const [isFirstApiExpanded, setIsFirstApiExpanded] = useState(true)
42
42
  const [activeItemData, setActiveItemData] = useState<OverviewData | EndpointData>()
43
-
44
- // useEffect(() => {
45
- // if (transformedOpenApis.length === 0) {
46
- // setTransformedOpenApis(
47
- // structuredClone(openApiJson)
48
- // ?.map((o3) => transformOpenApiToDocs(o3))
49
- // .sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase()))
50
- // )
51
- // }
52
- // }, [openApiJson])
43
+ const [activeType, setActiveType] = useState<'OVERVIEW' | 'ENDPOINT'>()
44
+ const [pending, setPending] = useState(true)
45
+ useEffect(() => {
46
+ if (transformedOpenApis.length === 0) {
47
+ setTransformedOpenApis(
48
+ structuredClone(openApiJson)
49
+ ?.map((o3) => transformOpenApiToDocs(o3))
50
+ .sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase()))
51
+ )
52
+ setPending(false)
53
+ }
54
+ }, [openApiJson])
53
55
 
54
56
  return (
55
57
  <Layout>
@@ -59,9 +61,10 @@ const DocsLayout = ({ openApiJson }: ILayoutProps): JSX.Element => {
59
61
  setActiveItemData={setActiveItemData}
60
62
  isFirstApiExpanded={isFirstApiExpanded}
61
63
  setIsFirstApiExpanded={setIsFirstApiExpanded}
64
+ setActiveType={setActiveType}
62
65
  />
63
- <Layout.DocsContent data={activeItemData} />
64
- <Layout.DocsAside />
66
+ {!pending && <Layout.DocsContent data={activeItemData} />}
67
+ {activeType === 'ENDPOINT' && <Layout.DocsAside data={activeItemData} />}
65
68
  </Layout>
66
69
  )
67
70
  }
@@ -22,9 +22,13 @@
22
22
  .editorSide {
23
23
  background-color: #fff;
24
24
  padding-bottom: 1.25rem;
25
-
26
- .editorSectionHead {
27
-
25
+ .editorSectionHead_title {
26
+ position: sticky;
27
+ top: 0;
28
+ z-index: 99999 !important;
29
+ }
30
+ .editorSectionHead,
31
+ .editorSectionHead_title {
28
32
  span {
29
33
  width: 100%;
30
34
  }
@@ -38,7 +42,6 @@
38
42
  width: 6.25rem;
39
43
  }
40
44
  }
41
-
42
45
  }
43
46
  }
44
47
 
@@ -59,4 +62,4 @@
59
62
  :global(.inputContainer .inputWrapper .innerInputContainer .input) {
60
63
  padding-inline-end: 2.5rem;
61
64
  }
62
- }
65
+ }
@@ -58,10 +58,10 @@ const Layout = ({ openApiJson, handleSave, setIsFormDirty, openApiErrors }: ILay
58
58
  <div className={styles.layoutContainer}>
59
59
  <div className={`${styles.editorSide} ${styles.docSide}`}>
60
60
  <SectionHead
61
- className={styles.editorSectionHead}
61
+ className={styles.editorSectionHead_title}
62
62
  text={
63
63
  <div className={styles.editorSectionHead_content}>
64
- API Information
64
+ API Documentation
65
65
  <Button
66
66
  className={styles.methodForm_submitBtn}
67
67
  size="medium"
@@ -99,7 +99,7 @@ const Layout = ({ openApiJson, handleSave, setIsFormDirty, openApiErrors }: ILay
99
99
  }}
100
100
  isOpen={openMethodIndex === methodIndex}
101
101
  setIsOpen={(open) => setOpenMethodIndex(open ? methodIndex : null)}
102
- errors={formik.errors.paths?.[pathIndex]?.methods?.[methodIndex]}
102
+ errors={(formik.errors.paths?.[pathIndex] as any)?.methods?.[methodIndex]}
103
103
  />
104
104
  ))}
105
105
  </>
@@ -0,0 +1,7 @@
1
+ export const copyToClipboard = async (text: string) => {
2
+ try {
3
+ await navigator.clipboard.writeText(text)
4
+ } catch (err) {
5
+ return err
6
+ }
7
+ }
@@ -1,3 +0,0 @@
1
- .api-docs-aside {
2
- background-color: #f0f1f2;
3
- }