@digi-frontend/dgate-api-documentation 1.0.1 → 1.0.5

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 (475) hide show
  1. package/.editorconfig +12 -12
  2. package/.prettierignore +7 -7
  3. package/.prettierrc +15 -15
  4. package/dist/{2e10bbdb265df50e.svg → 43595976d1fdccbf.svg} +4 -4
  5. package/dist/{8789eb84283ea95b.svg → 56dc416b683db280.svg} +5 -5
  6. package/dist/{bb8b87cace25e052.svg → 64efc2716808c4a4.svg} +3 -3
  7. package/dist/{d32ce84bbd78babd.svg → 72db3b05a96dd600.svg} +3 -3
  8. package/dist/{d501922060662842.svg → 844eba3f2e42a9eb.svg} +3 -3
  9. package/dist/_virtual/index10.js +1 -1
  10. package/dist/_virtual/index21.js +2 -0
  11. package/dist/_virtual/index21.js.map +1 -0
  12. package/dist/_virtual/index3.js +1 -1
  13. package/dist/_virtual/index5.js +1 -1
  14. package/dist/_virtual/index6.js +1 -1
  15. package/dist/_virtual/index7.js +1 -1
  16. package/dist/_virtual/index8.js +1 -1
  17. package/dist/_virtual/index9.js +1 -1
  18. package/dist/_virtual/node2.js +2 -0
  19. package/dist/_virtual/node2.js.map +1 -0
  20. package/dist/_virtual/node3.js +2 -0
  21. package/dist/_virtual/node3.js.map +1 -0
  22. package/dist/{070dc6ecd197bc80.svg → a7568b270e175038.svg} +8 -8
  23. package/dist/{9bdff13f8d8fa48a.svg → af16a554be8c4d69.svg} +3 -3
  24. package/dist/{7f54eeb0bb2d1150.svg → b82c7612e73342f3.svg} +3 -3
  25. package/dist/node_modules/digitinary-ui/dist/index.js +1 -1
  26. package/dist/node_modules/digitinary-ui/dist/index.js.map +1 -1
  27. package/dist/node_modules/domelementtype/lib/index.js +1 -1
  28. package/dist/node_modules/formik/dist/formik.esm.js +1 -1
  29. package/dist/node_modules/html-dom-parser/lib/index.js +1 -1
  30. package/dist/node_modules/html-dom-parser/lib/server/html-to-dom.js +1 -1
  31. package/dist/node_modules/html-dom-parser/lib/server/html-to-dom.js.map +1 -1
  32. package/dist/node_modules/html-dom-parser/node_modules/domhandler/lib/index.js +2 -0
  33. package/dist/node_modules/html-dom-parser/node_modules/domhandler/lib/index.js.map +1 -0
  34. package/dist/node_modules/html-dom-parser/node_modules/domhandler/lib/node.js +2 -0
  35. package/dist/node_modules/html-dom-parser/node_modules/domhandler/lib/node.js.map +1 -0
  36. package/dist/node_modules/html-react-parser/esm/index.mjs.js +1 -1
  37. package/dist/node_modules/html-react-parser/esm/index.mjs.js.map +1 -1
  38. package/dist/node_modules/html-react-parser/lib/index.js +1 -1
  39. package/dist/node_modules/html-react-parser/lib/index.js.map +1 -1
  40. package/dist/node_modules/html-react-parser/node_modules/domhandler/lib/index.js +2 -0
  41. package/dist/node_modules/html-react-parser/node_modules/domhandler/lib/index.js.map +1 -0
  42. package/dist/node_modules/html-react-parser/node_modules/domhandler/lib/node.js +2 -0
  43. package/dist/node_modules/html-react-parser/node_modules/domhandler/lib/node.js.map +1 -0
  44. package/dist/node_modules/htmlparser2/dist/commonjs/Parser.js +1 -1
  45. package/dist/node_modules/htmlparser2/dist/commonjs/Parser.js.map +1 -1
  46. package/dist/node_modules/htmlparser2/dist/commonjs/Tokenizer.js +1 -1
  47. package/dist/node_modules/htmlparser2/dist/commonjs/Tokenizer.js.map +1 -1
  48. package/dist/node_modules/htmlparser2/dist/commonjs/index.js +1 -1
  49. package/dist/node_modules/htmlparser2/dist/commonjs/index.js.map +1 -1
  50. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/lib/foreignNames.js +2 -0
  51. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/lib/foreignNames.js.map +1 -0
  52. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/lib/index.js +2 -0
  53. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/lib/index.js.map +1 -0
  54. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/decode.js +2 -0
  55. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/decode.js.map +1 -0
  56. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js +2 -0
  57. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js.map +1 -0
  58. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/encode.js +2 -0
  59. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/encode.js.map +1 -0
  60. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/escape.js +2 -0
  61. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/escape.js.map +1 -0
  62. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-html.js +2 -0
  63. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-html.js.map +1 -0
  64. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-xml.js +2 -0
  65. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-xml.js.map +1 -0
  66. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/generated/encode-html.js +2 -0
  67. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/generated/encode-html.js.map +1 -0
  68. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/index.js +2 -0
  69. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/index.js.map +1 -0
  70. package/dist/node_modules/htmlparser2/node_modules/domhandler/lib/index.js +2 -0
  71. package/dist/node_modules/htmlparser2/node_modules/domhandler/lib/index.js.map +1 -0
  72. package/dist/node_modules/htmlparser2/node_modules/domhandler/lib/node.js +2 -0
  73. package/dist/node_modules/htmlparser2/node_modules/domhandler/lib/node.js.map +1 -0
  74. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/feeds.js +2 -0
  75. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/feeds.js.map +1 -0
  76. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/helpers.js +2 -0
  77. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/helpers.js.map +1 -0
  78. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/index.js +2 -0
  79. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/index.js.map +1 -0
  80. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/legacy.js +2 -0
  81. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/legacy.js.map +1 -0
  82. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/manipulation.js +2 -0
  83. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/manipulation.js.map +1 -0
  84. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/querying.js +2 -0
  85. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/querying.js.map +1 -0
  86. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/stringify.js +2 -0
  87. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/stringify.js.map +1 -0
  88. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/traversal.js +2 -0
  89. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/traversal.js.map +1 -0
  90. package/dist/node_modules/htmlparser2/node_modules/entities/dist/commonjs/decode-codepoint.js +2 -0
  91. package/dist/node_modules/htmlparser2/node_modules/entities/dist/commonjs/decode-codepoint.js.map +1 -0
  92. package/dist/node_modules/htmlparser2/node_modules/entities/dist/commonjs/decode.js +2 -0
  93. package/dist/node_modules/htmlparser2/node_modules/entities/dist/commonjs/decode.js.map +1 -0
  94. package/dist/node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-html.js +2 -0
  95. package/dist/node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-html.js.map +1 -0
  96. package/dist/node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +2 -0
  97. package/dist/node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-xml.js.map +1 -0
  98. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js +1 -1
  99. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -1
  100. package/dist/node_modules/react-fast-compare/index.js +1 -1
  101. package/dist/node_modules/react-fast-compare/index.js.map +1 -1
  102. package/dist/node_modules/react-is/index.js +1 -1
  103. package/dist/node_modules/react-property/lib/index.js +1 -1
  104. package/dist/node_modules/react-property/lib/index.js.map +1 -1
  105. package/dist/node_modules/style-to-object/cjs/index.js +1 -1
  106. package/dist/node_modules/toposort/index.js +1 -1
  107. package/dist/node_modules/yup/index.esm.js +1 -1
  108. package/dist/node_modules/yup/index.esm.js.map +1 -1
  109. package/dist/src/assets/icons/AddRow.svg.js +1 -1
  110. package/dist/src/assets/icons/AddRow.svg.js.map +1 -1
  111. package/dist/src/assets/icons/CheckMarkSquare.svg.js +2 -0
  112. package/dist/src/assets/icons/CheckMarkSquare.svg.js.map +1 -0
  113. package/dist/src/assets/icons/CloseIcon.svg.js +1 -1
  114. package/dist/src/assets/icons/CloseIcon.svg.js.map +1 -1
  115. package/dist/src/assets/icons/DeleteIcon.svg.js +1 -1
  116. package/dist/src/assets/icons/DeleteIcon.svg.js.map +1 -1
  117. package/dist/src/assets/icons/DownArrow.svg.js +1 -1
  118. package/dist/src/assets/icons/DownArrow.svg.js.map +1 -1
  119. package/dist/src/assets/icons/EditIcon.svg.js +1 -1
  120. package/dist/src/assets/icons/EditIcon.svg.js.map +1 -1
  121. package/dist/src/assets/icons/UpArrow.svg.js +1 -1
  122. package/dist/src/assets/icons/UpArrow.svg.js.map +1 -1
  123. package/dist/src/assets/icons/deleteOutlinedIcon.svg.js +2 -0
  124. package/dist/src/assets/icons/deleteOutlinedIcon.svg.js.map +1 -0
  125. package/dist/src/components/Chips/Chips.js +2 -0
  126. package/dist/src/components/Chips/Chips.js.map +1 -0
  127. package/dist/src/components/InfoForm/InfoForm.js +1 -1
  128. package/dist/src/components/InfoForm/InfoForm.js.map +1 -1
  129. package/dist/src/components/JsonInput/JsonInput.js +1 -1
  130. package/dist/src/components/JsonInput/JsonInput.js.map +1 -1
  131. package/dist/src/components/LivePreview/LivePreview.js +1 -1
  132. package/dist/src/components/LivePreview/LivePreview.js.map +1 -1
  133. package/dist/src/components/MethodAccordion/MethodAccordion.js +1 -1
  134. package/dist/src/components/MethodAccordion/MethodAccordion.js.map +1 -1
  135. package/dist/src/components/SVGLoader/SVGLoader.js.map +1 -1
  136. package/dist/src/components/SectionHead/SectionHead.js.map +1 -1
  137. package/dist/src/components/SimpleLabelValue/SimpleLabelValue.js.map +1 -1
  138. package/dist/src/components/Tooltip/Tooltip.js.map +1 -1
  139. package/dist/src/components/dialog/index.js +1 -1
  140. package/dist/src/components/dialog/index.js.map +1 -1
  141. package/dist/src/components/table/table.js +1 -1
  142. package/dist/src/components/table/table.js.map +1 -1
  143. package/dist/src/constants/index.js +1 -1
  144. package/dist/src/constants/index.js.map +1 -1
  145. package/dist/src/constants/regex.js +1 -1
  146. package/dist/src/constants/regex.js.map +1 -1
  147. package/dist/src/helpers/layout.helper.js +1 -1
  148. package/dist/src/helpers/layout.helper.js.map +1 -1
  149. package/dist/src/helpers/methodAccordion.helper.js.map +1 -1
  150. package/dist/src/index.js +1 -1
  151. package/dist/src/layout/layout.js +1 -1
  152. package/dist/src/layout/layout.js.map +1 -1
  153. package/dist/src/layout/layout.module.css.js +1 -1
  154. package/dist/src/validator/form.scheme.js +1 -1
  155. package/dist/src/validator/form.scheme.js.map +1 -1
  156. package/dist/styles.css +430 -1863
  157. package/dist/types/assets/icons/index.d.ts +1 -17
  158. package/dist/types/components/InfoForm/InfoForm.d.ts +1 -3
  159. package/dist/types/components/JsonInput/JsonInput.d.ts +1 -2
  160. package/dist/types/components/LivePreview/LivePreview.d.ts +0 -1
  161. package/dist/types/components/MethodAccordion/MethodAccordion.d.ts +2 -7
  162. package/dist/types/components/Tooltip/Tooltip.d.ts +2 -2
  163. package/dist/types/components/dialog/dialog.d.ts +0 -6
  164. package/dist/types/components/dialog/index.d.ts +1 -1
  165. package/dist/types/components/table/table.d.ts +1 -2
  166. package/dist/types/constants/index.d.ts +0 -11
  167. package/dist/types/constants/regex.d.ts +0 -2
  168. package/dist/types/index.d.ts +0 -1
  169. package/dist/types/layout/layout.d.ts +1 -4
  170. package/dist/types/types/layout.type.d.ts +1 -3
  171. package/dist/types/types/openApi.d.ts +4 -17
  172. package/dist/types/validator/form.scheme.d.ts +3 -12
  173. package/package.json +43 -47
  174. package/rollup.config.js +35 -37
  175. package/src/assets/icons/AddRow.svg +3 -3
  176. package/src/assets/icons/CheckMarkSquare.svg +5 -5
  177. package/src/assets/icons/CloseIcon.svg +4 -4
  178. package/src/assets/icons/DeleteIcon.svg +3 -3
  179. package/src/assets/icons/DownArrow.svg +3 -3
  180. package/src/assets/icons/EditIcon.svg +3 -3
  181. package/src/assets/icons/UpArrow.svg +3 -3
  182. package/src/assets/icons/deleteOutlinedIcon.svg +8 -8
  183. package/src/assets/icons/index.ts +8 -24
  184. package/src/components/Chips/Chips.tsx +87 -87
  185. package/src/components/Chips/style.scss +147 -147
  186. package/src/components/InfoForm/InfoForm.module.scss +15 -165
  187. package/src/components/InfoForm/InfoForm.tsx +124 -424
  188. package/src/components/JsonInput/JsonInput.tsx +124 -149
  189. package/src/components/JsonInput/style.module.scss +123 -133
  190. package/src/components/LivePreview/LivePreview.module.scss +5 -181
  191. package/src/components/LivePreview/LivePreview.tsx +80 -224
  192. package/src/components/MethodAccordion/MethodAccordion.module.scss +294 -399
  193. package/src/components/MethodAccordion/MethodAccordion.tsx +401 -1063
  194. package/src/components/SVGLoader/SVGLoader.tsx +94 -96
  195. package/src/components/SectionHead/SectionHead.scss +29 -29
  196. package/src/components/SectionHead/SectionHead.tsx +22 -22
  197. package/src/components/SimpleLabelValue/SimpleLabelValue.tsx +31 -31
  198. package/src/components/SimpleLabelValue/index.ts +1 -1
  199. package/src/components/SimpleLabelValue/style.scss +30 -30
  200. package/src/components/Tooltip/Tooltip.scss +130 -133
  201. package/src/components/Tooltip/Tooltip.tsx +86 -85
  202. package/src/components/_global.scss +337 -337
  203. package/src/components/dialog/dialog.ts +54 -61
  204. package/src/components/dialog/index.tsx +85 -88
  205. package/src/components/dialog/style.scss +104 -188
  206. package/src/components/table/style.scss +179 -223
  207. package/src/components/table/table.tsx +307 -490
  208. package/src/constants/index.ts +74 -95
  209. package/src/constants/regex.ts +5 -7
  210. package/src/global.d.ts +13 -13
  211. package/src/helpers/layout.helper.ts +147 -187
  212. package/src/helpers/methodAccordion.helper.ts +19 -19
  213. package/src/index.ts +1 -2
  214. package/src/layout/layout.module.css +56 -65
  215. package/src/layout/layout.tsx +99 -181
  216. package/src/types/index.ts +0 -28
  217. package/src/types/layout.type.ts +30 -32
  218. package/src/types/openApi.ts +95 -109
  219. package/src/types/transformedOpenApi.ts +52 -52
  220. package/src/validator/form.scheme.ts +70 -96
  221. package/tsconfig.json +33 -33
  222. package/dist/16702d92fd6d1730.svg +0 -6
  223. package/dist/2b546d6e9fdf604a.svg +0 -3
  224. package/dist/2c3c6c2c3b835504.svg +0 -5
  225. package/dist/55b5994c5781482b.svg +0 -5
  226. package/dist/60bef8083c55f46b.svg +0 -6
  227. package/dist/68c710e0583e19e6.svg +0 -5
  228. package/dist/731221b3f242672d.svg +0 -4
  229. package/dist/8520b6792278d9df.svg +0 -6
  230. package/dist/9506ef7a26a74147.svg +0 -12
  231. package/dist/9b7aee27757b5036.svg +0 -3
  232. package/dist/_virtual/core.js +0 -2
  233. package/dist/_virtual/core.js.map +0 -1
  234. package/dist/_virtual/core2.js +0 -2
  235. package/dist/_virtual/core2.js.map +0 -1
  236. package/dist/_virtual/format.js +0 -2
  237. package/dist/_virtual/format.js.map +0 -1
  238. package/dist/_virtual/json.js +0 -2
  239. package/dist/_virtual/json.js.map +0 -1
  240. package/dist/cceb1e5dc06b0b85.svg +0 -4
  241. package/dist/d140a601c85bac25.svg +0 -3
  242. package/dist/d6d0a98ec38e6b77.svg +0 -3
  243. package/dist/e04479ad425e7d58.svg +0 -4
  244. package/dist/f4452c3ebcf0d5da.svg +0 -4
  245. package/dist/f4a32992f02af522.svg +0 -5
  246. package/dist/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js +0 -2
  247. package/dist/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js.map +0 -1
  248. package/dist/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js +0 -2
  249. package/dist/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js.map +0 -1
  250. package/dist/node_modules/@babel/runtime/helpers/esm/defineProperty.js +0 -2
  251. package/dist/node_modules/@babel/runtime/helpers/esm/defineProperty.js.map +0 -1
  252. package/dist/node_modules/@babel/runtime/helpers/esm/extends.js +0 -2
  253. package/dist/node_modules/@babel/runtime/helpers/esm/extends.js.map +0 -1
  254. package/dist/node_modules/@babel/runtime/helpers/esm/iterableToArray.js +0 -2
  255. package/dist/node_modules/@babel/runtime/helpers/esm/iterableToArray.js.map +0 -1
  256. package/dist/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js +0 -2
  257. package/dist/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js.map +0 -1
  258. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js +0 -2
  259. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js.map +0 -1
  260. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +0 -2
  261. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js.map +0 -1
  262. package/dist/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js +0 -2
  263. package/dist/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js.map +0 -1
  264. package/dist/node_modules/@babel/runtime/helpers/esm/toPrimitive.js +0 -2
  265. package/dist/node_modules/@babel/runtime/helpers/esm/toPrimitive.js.map +0 -1
  266. package/dist/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js +0 -2
  267. package/dist/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js.map +0 -1
  268. package/dist/node_modules/@babel/runtime/helpers/esm/typeof.js +0 -2
  269. package/dist/node_modules/@babel/runtime/helpers/esm/typeof.js.map +0 -1
  270. package/dist/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js +0 -2
  271. package/dist/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js.map +0 -1
  272. package/dist/node_modules/dom-serializer/lib/foreignNames.js +0 -2
  273. package/dist/node_modules/dom-serializer/lib/foreignNames.js.map +0 -1
  274. package/dist/node_modules/dom-serializer/lib/index.js +0 -2
  275. package/dist/node_modules/dom-serializer/lib/index.js.map +0 -1
  276. package/dist/node_modules/dom-serializer/node_modules/entities/lib/decode.js +0 -2
  277. package/dist/node_modules/dom-serializer/node_modules/entities/lib/decode.js.map +0 -1
  278. package/dist/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js +0 -2
  279. package/dist/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js.map +0 -1
  280. package/dist/node_modules/dom-serializer/node_modules/entities/lib/encode.js +0 -2
  281. package/dist/node_modules/dom-serializer/node_modules/entities/lib/encode.js.map +0 -1
  282. package/dist/node_modules/dom-serializer/node_modules/entities/lib/escape.js +0 -2
  283. package/dist/node_modules/dom-serializer/node_modules/entities/lib/escape.js.map +0 -1
  284. package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-html.js +0 -2
  285. package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-html.js.map +0 -1
  286. package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-xml.js +0 -2
  287. package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-xml.js.map +0 -1
  288. package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/encode-html.js +0 -2
  289. package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/encode-html.js.map +0 -1
  290. package/dist/node_modules/dom-serializer/node_modules/entities/lib/index.js +0 -2
  291. package/dist/node_modules/dom-serializer/node_modules/entities/lib/index.js.map +0 -1
  292. package/dist/node_modules/domhandler/lib/index.js +0 -2
  293. package/dist/node_modules/domhandler/lib/index.js.map +0 -1
  294. package/dist/node_modules/domhandler/lib/node.js +0 -2
  295. package/dist/node_modules/domhandler/lib/node.js.map +0 -1
  296. package/dist/node_modules/domutils/lib/feeds.js +0 -2
  297. package/dist/node_modules/domutils/lib/feeds.js.map +0 -1
  298. package/dist/node_modules/domutils/lib/helpers.js +0 -2
  299. package/dist/node_modules/domutils/lib/helpers.js.map +0 -1
  300. package/dist/node_modules/domutils/lib/index.js +0 -2
  301. package/dist/node_modules/domutils/lib/index.js.map +0 -1
  302. package/dist/node_modules/domutils/lib/legacy.js +0 -2
  303. package/dist/node_modules/domutils/lib/legacy.js.map +0 -1
  304. package/dist/node_modules/domutils/lib/manipulation.js +0 -2
  305. package/dist/node_modules/domutils/lib/manipulation.js.map +0 -1
  306. package/dist/node_modules/domutils/lib/querying.js +0 -2
  307. package/dist/node_modules/domutils/lib/querying.js.map +0 -1
  308. package/dist/node_modules/domutils/lib/stringify.js +0 -2
  309. package/dist/node_modules/domutils/lib/stringify.js.map +0 -1
  310. package/dist/node_modules/domutils/lib/traversal.js +0 -2
  311. package/dist/node_modules/domutils/lib/traversal.js.map +0 -1
  312. package/dist/node_modules/entities/dist/commonjs/decode-codepoint.js +0 -2
  313. package/dist/node_modules/entities/dist/commonjs/decode-codepoint.js.map +0 -1
  314. package/dist/node_modules/entities/dist/commonjs/decode.js +0 -2
  315. package/dist/node_modules/entities/dist/commonjs/decode.js.map +0 -1
  316. package/dist/node_modules/entities/dist/commonjs/generated/decode-data-html.js +0 -2
  317. package/dist/node_modules/entities/dist/commonjs/generated/decode-data-html.js.map +0 -1
  318. package/dist/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +0 -2
  319. package/dist/node_modules/entities/dist/commonjs/generated/decode-data-xml.js.map +0 -1
  320. package/dist/node_modules/fast-json-stable-stringify/index.js +0 -2
  321. package/dist/node_modules/fast-json-stable-stringify/index.js.map +0 -1
  322. package/dist/node_modules/fault/index.js +0 -2
  323. package/dist/node_modules/fault/index.js.map +0 -1
  324. package/dist/node_modules/format/format.js +0 -2
  325. package/dist/node_modules/format/format.js.map +0 -1
  326. package/dist/node_modules/highlight.js/lib/core.js +0 -2
  327. package/dist/node_modules/highlight.js/lib/core.js.map +0 -1
  328. package/dist/node_modules/highlight.js/lib/languages/json.js +0 -2
  329. package/dist/node_modules/highlight.js/lib/languages/json.js.map +0 -1
  330. package/dist/node_modules/lowlight/lib/core.js +0 -2
  331. package/dist/node_modules/lowlight/lib/core.js.map +0 -1
  332. package/dist/node_modules/nanoid/index.js +0 -2
  333. package/dist/node_modules/nanoid/index.js.map +0 -1
  334. package/dist/node_modules/nanoid/url-alphabet/index.js +0 -2
  335. package/dist/node_modules/nanoid/url-alphabet/index.js.map +0 -1
  336. package/dist/node_modules/react-syntax-highlighter/dist/esm/checkForListedLanguage.js +0 -2
  337. package/dist/node_modules/react-syntax-highlighter/dist/esm/checkForListedLanguage.js.map +0 -1
  338. package/dist/node_modules/react-syntax-highlighter/dist/esm/create-element.js +0 -2
  339. package/dist/node_modules/react-syntax-highlighter/dist/esm/create-element.js.map +0 -1
  340. package/dist/node_modules/react-syntax-highlighter/dist/esm/highlight.js +0 -2
  341. package/dist/node_modules/react-syntax-highlighter/dist/esm/highlight.js.map +0 -1
  342. package/dist/node_modules/react-syntax-highlighter/dist/esm/languages/hljs/json.js +0 -2
  343. package/dist/node_modules/react-syntax-highlighter/dist/esm/languages/hljs/json.js.map +0 -1
  344. package/dist/node_modules/react-syntax-highlighter/dist/esm/light.js +0 -2
  345. package/dist/node_modules/react-syntax-highlighter/dist/esm/light.js.map +0 -1
  346. package/dist/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/stackoverflow-dark.js +0 -2
  347. package/dist/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/stackoverflow-dark.js.map +0 -1
  348. package/dist/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/stackoverflow-light.js +0 -2
  349. package/dist/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/stackoverflow-light.js.map +0 -1
  350. package/dist/src/assets/icons/ApiIcon.svg.js +0 -2
  351. package/dist/src/assets/icons/ApiIcon.svg.js.map +0 -1
  352. package/dist/src/assets/icons/ArrowBack.svg.js +0 -2
  353. package/dist/src/assets/icons/ArrowBack.svg.js.map +0 -1
  354. package/dist/src/assets/icons/BookIcon.svg.js +0 -2
  355. package/dist/src/assets/icons/BookIcon.svg.js.map +0 -1
  356. package/dist/src/assets/icons/CopySticker.svg.js +0 -2
  357. package/dist/src/assets/icons/CopySticker.svg.js.map +0 -1
  358. package/dist/src/assets/icons/DeleteOutlinedIcon.svg.js +0 -2
  359. package/dist/src/assets/icons/DeleteOutlinedIcon.svg.js.map +0 -1
  360. package/dist/src/assets/icons/FilterIcon.svg.js +0 -2
  361. package/dist/src/assets/icons/FilterIcon.svg.js.map +0 -1
  362. package/dist/src/assets/icons/Plus.svg.js +0 -2
  363. package/dist/src/assets/icons/Plus.svg.js.map +0 -1
  364. package/dist/src/assets/icons/PlusSquare.svg.js +0 -2
  365. package/dist/src/assets/icons/PlusSquare.svg.js.map +0 -1
  366. package/dist/src/assets/icons/RequestOption.svg.js +0 -2
  367. package/dist/src/assets/icons/RequestOption.svg.js.map +0 -1
  368. package/dist/src/assets/icons/arrowDownGray.svg.js +0 -2
  369. package/dist/src/assets/icons/arrowDownGray.svg.js.map +0 -1
  370. package/dist/src/assets/icons/arrowRightGray.svg.js +0 -2
  371. package/dist/src/assets/icons/arrowRightGray.svg.js.map +0 -1
  372. package/dist/src/assets/icons/close-circle.svg.js +0 -2
  373. package/dist/src/assets/icons/close-circle.svg.js.map +0 -1
  374. package/dist/src/assets/icons/copy.svg.js +0 -2
  375. package/dist/src/assets/icons/copy.svg.js.map +0 -1
  376. package/dist/src/assets/icons/document.svg.js +0 -2
  377. package/dist/src/assets/icons/document.svg.js.map +0 -1
  378. package/dist/src/assets/icons/eye.svg.js +0 -2
  379. package/dist/src/assets/icons/eye.svg.js.map +0 -1
  380. package/dist/src/assets/icons/infoIcon.svg.js +0 -2
  381. package/dist/src/assets/icons/infoIcon.svg.js.map +0 -1
  382. package/dist/src/assets/icons/searchIcon.svg.js +0 -2
  383. package/dist/src/assets/icons/searchIcon.svg.js.map +0 -1
  384. package/dist/src/components/table/tags-table.js +0 -2
  385. package/dist/src/components/table/tags-table.js.map +0 -1
  386. package/dist/src/constants/methods.constant.js +0 -2
  387. package/dist/src/constants/methods.constant.js.map +0 -1
  388. package/dist/src/context/SectionToggleContext.js +0 -2
  389. package/dist/src/context/SectionToggleContext.js.map +0 -1
  390. package/dist/src/helpers/docs.helper.js +0 -2
  391. package/dist/src/helpers/docs.helper.js.map +0 -1
  392. package/dist/src/layout/docsComponents/Codebox/Codebox.js +0 -2
  393. package/dist/src/layout/docsComponents/Codebox/Codebox.js.map +0 -1
  394. package/dist/src/layout/docsComponents/Codebox/style.module.scss.js +0 -2
  395. package/dist/src/layout/docsComponents/Codebox/style.module.scss.js.map +0 -1
  396. package/dist/src/layout/docsComponents/DocsAside/DocsAside.js +0 -2
  397. package/dist/src/layout/docsComponents/DocsAside/DocsAside.js.map +0 -1
  398. package/dist/src/layout/docsComponents/DocsAside/style.module.scss.js +0 -2
  399. package/dist/src/layout/docsComponents/DocsAside/style.module.scss.js.map +0 -1
  400. package/dist/src/layout/docsComponents/DocsContent/DocsContent.js +0 -2
  401. package/dist/src/layout/docsComponents/DocsContent/DocsContent.js.map +0 -1
  402. package/dist/src/layout/docsComponents/DocsContent/EndpointPage/index.js +0 -2
  403. package/dist/src/layout/docsComponents/DocsContent/EndpointPage/index.js.map +0 -1
  404. package/dist/src/layout/docsComponents/DocsContent/OverviewPage/index.js +0 -2
  405. package/dist/src/layout/docsComponents/DocsContent/OverviewPage/index.js.map +0 -1
  406. package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.js +0 -2
  407. package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.js.map +0 -1
  408. package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.module.scss.js +0 -2
  409. package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.module.scss.js.map +0 -1
  410. package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js +0 -2
  411. package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js.map +0 -1
  412. package/dist/src/layout/docsComponents/index.js +0 -2
  413. package/dist/src/layout/docsComponents/index.js.map +0 -1
  414. package/dist/src/layout/docsLayout.js +0 -2
  415. package/dist/src/layout/docsLayout.js.map +0 -1
  416. package/dist/src/utils/index.js +0 -2
  417. package/dist/src/utils/index.js.map +0 -1
  418. package/dist/types/components/table/tags-table.d.ts +0 -11
  419. package/dist/types/constants/methods.constant.d.ts +0 -16
  420. package/dist/types/context/SectionToggleContext.d.ts +0 -37
  421. package/dist/types/helpers/docs.helper.d.ts +0 -3
  422. package/dist/types/layout/docsComponents/Codebox/Codebox.d.ts +0 -4
  423. package/dist/types/layout/docsComponents/DocsAside/DocsAside.d.ts +0 -5
  424. package/dist/types/layout/docsComponents/DocsContent/DocsContent.d.ts +0 -12
  425. package/dist/types/layout/docsComponents/DocsContent/EndpointPage/index.d.ts +0 -7
  426. package/dist/types/layout/docsComponents/DocsContent/OverviewPage/index.d.ts +0 -9
  427. package/dist/types/layout/docsComponents/DocsHeader/DocsHeader.d.ts +0 -6
  428. package/dist/types/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.d.ts +0 -18
  429. package/dist/types/layout/docsComponents/index.d.ts +0 -17
  430. package/dist/types/layout/docsLayout.d.ts +0 -31
  431. package/dist/types/types/docsLayout.type.d.ts +0 -7
  432. package/dist/types/types/index.d.ts +0 -27
  433. package/dist/types/utils/index.d.ts +0 -2
  434. package/src/assets/icons/ApiIcon.svg +0 -12
  435. package/src/assets/icons/ArrowBack.svg +0 -3
  436. package/src/assets/icons/BookIcon.svg +0 -6
  437. package/src/assets/icons/CopySticker.svg +0 -6
  438. package/src/assets/icons/DeleteOutlinedIcon.svg +0 -8
  439. package/src/assets/icons/FilterIcon.svg +0 -4
  440. package/src/assets/icons/Plus.svg +0 -5
  441. package/src/assets/icons/PlusSquare.svg +0 -3
  442. package/src/assets/icons/RequestOption.svg +0 -5
  443. package/src/assets/icons/arrowDownGray.svg +0 -3
  444. package/src/assets/icons/arrowRightGray.svg +0 -3
  445. package/src/assets/icons/close-circle.svg +0 -5
  446. package/src/assets/icons/copy.svg +0 -4
  447. package/src/assets/icons/document.svg +0 -6
  448. package/src/assets/icons/eye.svg +0 -4
  449. package/src/assets/icons/infoIcon.svg +0 -5
  450. package/src/assets/icons/searchIcon.svg +0 -4
  451. package/src/components/table/tags-table.tsx +0 -348
  452. package/src/constants/methods.constant.ts +0 -26
  453. package/src/context/SectionToggleContext.tsx +0 -121
  454. package/src/helpers/docs.helper.ts +0 -42
  455. package/src/layout/docsComponents/Codebox/Codebox.tsx +0 -61
  456. package/src/layout/docsComponents/Codebox/style.module.scss +0 -43
  457. package/src/layout/docsComponents/DocsAside/DocsAside.tsx +0 -93
  458. package/src/layout/docsComponents/DocsAside/style.module.scss +0 -113
  459. package/src/layout/docsComponents/DocsContent/DocsContent.tsx +0 -51
  460. package/src/layout/docsComponents/DocsContent/EndpointPage/index.tsx +0 -236
  461. package/src/layout/docsComponents/DocsContent/EndpointPage/style.scss +0 -309
  462. package/src/layout/docsComponents/DocsContent/OverviewPage/index.tsx +0 -192
  463. package/src/layout/docsComponents/DocsContent/OverviewPage/style.scss +0 -284
  464. package/src/layout/docsComponents/DocsContent/style.scss +0 -0
  465. package/src/layout/docsComponents/DocsHeader/DocsHeader.module.scss +0 -270
  466. package/src/layout/docsComponents/DocsHeader/DocsHeader.tsx +0 -187
  467. package/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.tsx +0 -229
  468. package/src/layout/docsComponents/DocsSideMenuTree/style.scss +0 -195
  469. package/src/layout/docsComponents/index.scss +0 -49
  470. package/src/layout/docsComponents/index.tsx +0 -28
  471. package/src/layout/docsLayout.tsx +0 -120
  472. package/src/types/docsLayout.type.ts +0 -7
  473. package/src/utils/index.ts +0 -12
  474. package/the_npm_commands.sh +0 -12
  475. package/variables.txt +0 -4
@@ -1,1063 +1,401 @@
1
- import { useEffect, useRef, useState } from 'react'
2
- import { Accordion, Button, Input, SelectGroup, Switch, TextArea } from 'digitinary-ui'
3
- import SVGLoader from '../../components/SVGLoader/SVGLoader'
4
- import {
5
- DeleteIcon,
6
- DownArrowIcon,
7
- EditIcon,
8
- DeleteOutlinedIcon,
9
- CloseIcon,
10
- } from '../../assets/icons'
11
- import PlusIcon from '../../assets/icons/Plus.svg'
12
- import PlusSquare from '../../assets/icons/PlusSquare.svg'
13
- import { httpStatusCodes, methodColorMapping, paramsTableHeaders } from '../../constants/index'
14
- import Tooltip from '../../components/Tooltip/Tooltip'
15
- import { TransformedMethod } from '../../types/layout.type'
16
- import SimpleLabelValue from '../../components/SimpleLabelValue'
17
- import { capitalize, handleStatusColor } from '../../helpers/methodAccordion.helper'
18
- import ParamterTable from '../table/table'
19
- import CommonDialog from '../../components/dialog'
20
- import JsonInput from '../../components/JsonInput/JsonInput'
21
- import styles from './MethodAccordion.module.scss'
22
- import { Tags } from '@entities/openApi'
23
- import regex from '../../constants/regex'
24
-
25
- const httpStatusCodeOptions = httpStatusCodes.map((code) => ({
26
- label: (
27
- <div className={styles.statusCodeOptionContainer}>
28
- <div
29
- className={styles.statusCodeOptionCircle}
30
- style={{ backgroundColor: handleStatusColor(code) }}
31
- ></div>
32
- <span>{code}</span>
33
- </div>
34
- ),
35
- value: code,
36
- }))
37
-
38
- const MethodsAccordion = ({
39
- method,
40
- path,
41
- setFieldValue,
42
- readOnly,
43
- tags,
44
- isOpen,
45
- setIsOpen,
46
- errors,
47
- }: {
48
- method: TransformedMethod
49
- path: string
50
- setFieldValue?: (key: string, value: string | string[]) => void
51
- readOnly?: boolean
52
- tags: Tags[]
53
- isOpen: boolean
54
- setIsOpen: (open: boolean) => void
55
- errors?: string
56
- }) => {
57
- const [isExpanded, setIsExpanded] = useState({
58
- request: false,
59
- response: false,
60
- method: false,
61
- })
62
- const [isFormOpen, setIsFormOpen] = useState<boolean>(false)
63
- const [isHeaderFormOpen, setIsHeaderFormOpen] = useState<boolean>(false)
64
- const [tooltipRefs, setTooltipRefs] = useState<{ [key: number]: any }>({})
65
- const [tableData, setTableData] = useState([])
66
- const [tableResponseData, setTableResponseData] = useState([])
67
- const [openDeleteDialog, setOpenDeleteDialog] = useState(false)
68
- const [openHeaderDeleteDialog, setOpenHeaderDeleteDialog] = useState(false)
69
- const [selectedParamIndex, setSelectedParamIndex] = useState<number | null>(null)
70
- const [selectedHeaderIndex, setSelectedHeaderIndex] = useState<number | null>(null)
71
- const [selectedParamName, setSelectedParamName] = useState<string | null>(null)
72
- const [tableRecords, setTableRecords] = useState()
73
- const [tableResponseRecords, setTableResponseRecords] = useState([])
74
- const [selectionTags, setSelectionTags] = useState([])
75
- const [selectedStatusCode, setSelectedStatusCode] = useState(httpStatusCodeOptions[4])
76
- const [enumFields, setEnumFields] = useState([])
77
- const [tooltipEnumRef, setTooltipEnumRef] = useState(null)
78
- const [currentResponseIndex, setCurrentResponseIndex] = useState<number>(-1)
79
- const currentResponse =
80
- method.responses.find((res) => Number(res.code) === selectedStatusCode.value) || '{}'
81
- const indexRef = useRef(-1)
82
- const onTableChange = (key, value, index) => {
83
- const newTableData = tableData.map((item, tIndex) => {
84
- if (tIndex === index) {
85
- return { ...item, [key]: value }
86
- } else {
87
- return item
88
- }
89
- })
90
-
91
- setTableData(newTableData)
92
- }
93
-
94
- const generateResponseTableData = (headersObj: any, responseIndex: number) => {
95
- const headersByName = Object.keys(headersObj)
96
- return headersByName.map((item, index) => {
97
- const data = headersObj[item]
98
- return {
99
- id: `header_${index}`,
100
- paramName: item,
101
- paramType: capitalize('header'),
102
- schemaType: `${capitalize(data?.schema?.type) || ''} ${
103
- data?.schema?.type?.toLowerCase() == 'array' &&
104
- data?.schema?.items &&
105
- data?.schema?.items?.type
106
- ? ` _ ${capitalize(data?.schema?.items?.type)}`
107
- : ''
108
- }`,
109
- required: (
110
- <>
111
- {readOnly ? (
112
- data.required ? (
113
- 'True'
114
- ) : (
115
- 'False'
116
- )
117
- ) : (
118
- <Switch
119
- checked={data.required}
120
- onClick={() => {
121
- if (readOnly) {
122
- return null
123
- }
124
- setFieldValue(
125
- `responses[${responseIndex}].headers[${item}].required`,
126
- !data.required
127
- )
128
- }}
129
- />
130
- )}
131
- </>
132
- ),
133
- description: (
134
- <div className={styles.paramDescContainer}>
135
- <Tooltip
136
- key={`${index}-description`}
137
- allowHTML
138
- disabled={method.responses[responseIndex].headers[item].description?.length <= 12}
139
- content={
140
- <div style={{ padding: '0.625rem' }}>
141
- {method.responses[responseIndex].headers[item].description}
142
- </div>
143
- }
144
- arrowWithBorder
145
- placement="bottom-end"
146
- type="function"
147
- delay={[0, 0]}
148
- onShow={() => tooltipRefs[index]?.hide()}
149
- >
150
- <p style={{ alignSelf: 'center' }}>
151
- {method.responses[responseIndex].headers[item].description
152
- ? method.responses[responseIndex].headers[item].description.substring(0, 12)
153
- : readOnly && '-'}
154
- {method.responses[responseIndex].headers[item].description &&
155
- method.responses[responseIndex].headers[item].description.length > 12
156
- ? '...'
157
- : ''}
158
- </p>
159
- </Tooltip>
160
- {!readOnly && (
161
- <Tooltip
162
- key={`${index}-add-edit-description`}
163
- allowHTML
164
- arrowWithBorder
165
- placement="bottom-end"
166
- type="function"
167
- trigger="click"
168
- delay={[0, 0]}
169
- onCreate={(instance) =>
170
- setTooltipRefs((prev) => ({
171
- ...prev,
172
- [index]: instance,
173
- }))
174
- }
175
- content={
176
- <div className={styles.editDescTooltipContent}>
177
- <p className={styles.editDescTooltipContent_header}>Description</p>
178
- <TextArea
179
- placeholder="Describe parameter..."
180
- value={data.description}
181
- disabled={readOnly}
182
- maxLength={120}
183
- onChange={(value) => {
184
- if (value === '' || regex.ASCII.test(value)) {
185
- setFieldValue(
186
- `responses[${indexRef.current}].headers[${item}].description`,
187
- value
188
- )
189
- }
190
- }}
191
- />
192
- {!readOnly && (
193
- <Button
194
- className={styles.editDescTooltipContent_btn}
195
- variant="outlined"
196
- size="small"
197
- onClick={() => {
198
- setFieldValue(
199
- `responses[${responseIndex}].headers[${item}].description`,
200
- data.description?.trim()
201
- )
202
- tooltipRefs[index]?.hide()
203
- }}
204
- disabled={!data.description?.trim()}
205
- >
206
- Apply
207
- </Button>
208
- )}
209
- </div>
210
- }
211
- >
212
- {readOnly ||
213
- method.responses[responseIndex].headers[item].description?.length > 0 ? (
214
- <Button
215
- className={styles.editDescBtn}
216
- variant="link"
217
- color="action"
218
- endIcon={<SVGLoader src={EditIcon} width="1.5rem" height="1.5rem" />}
219
- ></Button>
220
- ) : (
221
- <Button
222
- className={styles.editDescBtn}
223
- variant="link"
224
- color="action"
225
- endIcon={<SVGLoader src={EditIcon} width="1.5rem" height="1.5rem" />}
226
- >
227
- {readOnly ? 'View ' : 'Add '} Description
228
- </Button>
229
- )}
230
- </Tooltip>
231
- )}
232
-
233
- {!readOnly && <div className={styles.paramDescContainer_separator}></div>}
234
-
235
- {!readOnly && (
236
- <Button
237
- className={styles.deleteParamBtn}
238
- variant="link"
239
- color="error"
240
- endIcon={<SVGLoader src={DeleteIcon} width="1.125rem" height="1.125rem" />}
241
- onClick={() => handleDeleteResponseHeader(index, item)}
242
- ></Button>
243
- )}
244
- </div>
245
- ),
246
- enum: (
247
- <>
248
- {readOnly ? (
249
- <span className="enumText">{data?.schema?.enum?.join('/\u200B')}</span>
250
- ) : (
251
- <div data-id="TEXT_DESCRIPTION" className="tableData">
252
- {(() => {
253
- const schema = method?.responses[currentResponseIndex]?.headers[item]?.schema
254
- const schemaType = schema?.type?.toLowerCase()
255
- const isComplex = schemaType === 'array' || schemaType === 'object'
256
- const enumList = schema?.enum || []
257
-
258
- if (!schema || isComplex) return '-'
259
-
260
- return (
261
- <Tooltip
262
- disabled={isComplex}
263
- arrowWithBorder
264
- placement="bottom-end"
265
- type="function"
266
- trigger="click"
267
- delay={[0, 0]}
268
- onCreate={(instance) => setTooltipEnumRef(instance)}
269
- content={
270
- <div className={styles.editDescTooltipContent}>
271
- <p className={styles.editDescTooltipContent_header}>Enum</p>
272
-
273
- {enumList.map((enumVal, enumIndex) => (
274
- <Input
275
- key={enumIndex}
276
- className="methodDescForEnum"
277
- required
278
- clearable={false}
279
- placeholder="Enter Enum value..."
280
- value={enumVal}
281
- onChange={(value) => {
282
- setFieldValue(
283
- `responses[${currentResponseIndex}].headers["${item}"].schema.enum[${enumIndex}]`,
284
- value
285
- )
286
- }}
287
- />
288
- ))}
289
-
290
- <p
291
- className="addEnumButton"
292
- onClick={() => {
293
- setFieldValue(
294
- `responses[${currentResponseIndex}].headers["${item}"].schema.enum`,
295
- [...enumList, '']
296
- )
297
- }}
298
- >
299
- <SVGLoader src={PlusSquare} />
300
- Add New Enum
301
- </p>
302
-
303
- {!readOnly && (
304
- <Button
305
- className={styles.editDescTooltipContent_btn}
306
- variant="outlined"
307
- size="small"
308
- type="button"
309
- onClick={() => {
310
- setFieldValue(
311
- `responses[${currentResponseIndex}].headers["${item}"].schema.enum`,
312
- [...enumList]
313
- )
314
- setEnumFields([])
315
- tooltipEnumRef?.hide()
316
- }}
317
- disabled={enumList.length === 0 || enumList.some((val) => !val)}
318
- >
319
- Apply
320
- </Button>
321
- )}
322
- </div>
323
- }
324
- >
325
- {enumList.length > 0 ? (
326
- <span className="enumText">{enumList.join('/\u200B')}</span>
327
- ) : (
328
- <Button
329
- className={styles.editDescBtn}
330
- id="EnumButton"
331
- variant="link"
332
- color="action"
333
- endIcon={
334
- <SVGLoader
335
- id="enumIcon"
336
- src={PlusIcon}
337
- width="1.5rem"
338
- height="1.5rem"
339
- />
340
- }
341
- >
342
- Add
343
- </Button>
344
- )}
345
- </Tooltip>
346
- )
347
- })()}
348
- </div>
349
- )}
350
- </>
351
- ),
352
- }
353
- })
354
- }
355
-
356
- const generateTableData = (items, isForRequest?: boolean) => {
357
- return items?.map((item, index) => {
358
- return {
359
- id: index,
360
- paramName: item.name,
361
- paramType: capitalize(item.in),
362
- schemaType: `${capitalize(item?.schema?.type) || ''} ${
363
- item?.schema?.type?.toLowerCase() == 'array' &&
364
- item?.schema?.items &&
365
- item?.schema?.items?.type
366
- ? ` _ ${capitalize(item?.schema?.items?.type)}`
367
- : ''
368
- }`,
369
- required: (
370
- <>
371
- {readOnly ? (
372
- item.required ? (
373
- 'True'
374
- ) : (
375
- 'False'
376
- )
377
- ) : (
378
- <Switch
379
- checked={item.required}
380
- onClick={() => {
381
- if (readOnly) {
382
- return null
383
- }
384
- onTableChange('required', !item.required, index)
385
- setFieldValue(`parameters[${index}][required]`, !item.required)
386
- }}
387
- />
388
- )}
389
- </>
390
- ),
391
- description: (
392
- <div className={styles.paramDescContainer}>
393
- <Tooltip
394
- key={`${index}-description`}
395
- allowHTML
396
- disabled={method.parameters[index].description?.length <= 12}
397
- content={
398
- <div style={{ padding: '0.625rem' }}>{method.parameters[index].description}</div>
399
- }
400
- arrowWithBorder
401
- placement="bottom-end"
402
- type="function"
403
- delay={[0, 0]}
404
- onShow={() => tooltipRefs[index]?.hide()}
405
- >
406
- <p style={{ alignSelf: 'center' }}>
407
- {method.parameters[index].description
408
- ? method.parameters[index].description.substring(0, 12)
409
- : readOnly && '-'}
410
- {method.parameters[index].description &&
411
- method.parameters[index].description.length > 12
412
- ? '...'
413
- : ''}
414
- </p>
415
- </Tooltip>
416
- {!readOnly && (
417
- <Tooltip
418
- key={`${index}-add-edit-description`}
419
- allowHTML
420
- arrowWithBorder
421
- placement="bottom-end"
422
- type="function"
423
- trigger="click"
424
- delay={[0, 0]}
425
- onCreate={(instance) =>
426
- setTooltipRefs((prev) => ({
427
- ...prev,
428
- [index]: instance,
429
- }))
430
- }
431
- content={
432
- <div className={styles.editDescTooltipContent}>
433
- <p className={styles.editDescTooltipContent_header}>Description</p>
434
- <TextArea
435
- placeholder="Describe parameter..."
436
- value={item.description}
437
- disabled={readOnly}
438
- maxLength={120}
439
- onChange={(value) => {
440
- if (value === '' || regex.ASCII.test(value))
441
- onTableChange('description', value, index)
442
- }}
443
- />
444
- {!readOnly && (
445
- <Button
446
- className={styles.editDescTooltipContent_btn}
447
- variant="outlined"
448
- size="small"
449
- onClick={() => {
450
- setFieldValue(
451
- `parameters[${index}].description`,
452
- item.description?.trim()
453
- )
454
- tooltipRefs[index]?.hide()
455
- }}
456
- disabled={!item.description?.trim()}
457
- >
458
- Apply
459
- </Button>
460
- )}
461
- </div>
462
- }
463
- >
464
- {readOnly || method.parameters[index].description?.length > 0 ? (
465
- <Button
466
- className={styles.editDescBtn}
467
- variant="link"
468
- color="action"
469
- endIcon={<SVGLoader src={EditIcon} width="1.5rem" height="1.5rem" />}
470
- ></Button>
471
- ) : (
472
- <Button
473
- className={styles.editDescBtn}
474
- variant="link"
475
- color="action"
476
- endIcon={<SVGLoader src={EditIcon} width="1.5rem" height="1.5rem" />}
477
- >
478
- {readOnly ? 'View ' : 'Add '} Description
479
- </Button>
480
- )}
481
- </Tooltip>
482
- )}
483
-
484
- {!readOnly && <div className={styles.paramDescContainer_separator}></div>}
485
-
486
- {!readOnly && (
487
- <Button
488
- className={styles.deleteParamBtn}
489
- variant="link"
490
- color="error"
491
- endIcon={<SVGLoader src={DeleteIcon} width="1.125rem" height="1.125rem" />}
492
- onClick={() => handleDeleteClick(index, item.name)}
493
- ></Button>
494
- )}
495
- </div>
496
- ),
497
- enum: (
498
- <>
499
- {readOnly ? (
500
- <span className="enumText">{item?.schema?.enum?.join('/\u200B')}</span>
501
- ) : (
502
- <div data-id="TEXT_DESCRIPTION" className="tableData">
503
- {method.parameters[index]?.schema &&
504
- method.parameters[index]?.schema?.type?.toLowerCase() != 'array' &&
505
- method.parameters[index]?.schema?.type?.toLowerCase() != 'object' ? (
506
- <Tooltip
507
- disabled={
508
- method.parameters[index]?.schema?.type?.toLowerCase() == 'array' ||
509
- method.parameters[index]?.schema?.type?.toLowerCase() == 'object'
510
- }
511
- arrowWithBorder
512
- placement="bottom-end"
513
- type="function"
514
- trigger="click"
515
- delay={[0, 0]}
516
- onCreate={(instance) => setTooltipEnumRef(instance)}
517
- content={
518
- <div className={styles.editDescTooltipContent}>
519
- <p className={styles.editDescTooltipContent_header}>Enum</p>
520
- {!!method.parameters[index]?.schema?.enum &&
521
- !!method.parameters[index]?.schema?.enum.length &&
522
- method.parameters[index]?.schema?.enum?.map((item, _index) => (
523
- <Input
524
- key={index}
525
- className={'methodDescForEnum'}
526
- required
527
- clearable={false}
528
- placeholder="Enter Enum value..."
529
- value={item}
530
- onChange={(value) => {
531
- setFieldValue(`parameters[${index}].schema.enum[${_index}]`, value)
532
- }}
533
- />
534
- ))}
535
- <p
536
- className={'addEnumButton'}
537
- onClick={() => {
538
- setFieldValue(`parameters[${index}].schema.enum`, [
539
- ...method.parameters[index]?.schema?.enum,
540
- '',
541
- ])
542
- }}
543
- >
544
- <SVGLoader src={PlusSquare} />
545
- Add New Enum
546
- </p>
547
- {!readOnly && (
548
- <Button
549
- className={styles.editDescTooltipContent_btn}
550
- variant="outlined"
551
- size="small"
552
- type="button"
553
- onClick={() => {
554
- setFieldValue(`parameters[${index}].schema.enum`, [
555
- ...method.parameters[index].schema.enum,
556
- ])
557
- setEnumFields([])
558
- tooltipEnumRef?.hide()
559
- }}
560
- disabled={
561
- (enumFields.length > 0 &&
562
- enumFields?.filter((item) => !item).length) ||
563
- (method?.parameters[index]?.schema?.enum &&
564
- method?.parameters[index]?.schema?.enum?.length > 0 &&
565
- method?.parameters[index]?.schema?.enum?.filter((item) => !item)
566
- .length)
567
- }
568
- >
569
- Apply
570
- </Button>
571
- )}
572
- </div>
573
- }
574
- >
575
- {method.parameters[index]?.schema?.enum &&
576
- method.parameters[index]?.schema?.enum?.length > 0 ? (
577
- <span className={'enumText'}>
578
- {method.parameters[index]?.schema?.enum?.join('/\u200B')}
579
- </span>
580
- ) : (
581
- <Button
582
- className={styles.editDescBtn}
583
- id="EnumButton"
584
- variant="link"
585
- color="action"
586
- endIcon={
587
- <SVGLoader id="enumIcon" src={PlusIcon} width="1.5rem" height="1.5rem" />
588
- }
589
- >
590
- Add
591
- </Button>
592
- )}
593
- </Tooltip>
594
- ) : (
595
- '-'
596
- )}{' '}
597
- </div>
598
- )}
599
- </>
600
- ),
601
- }
602
- })
603
- }
604
-
605
- const confirmDeleteParameter = () => {
606
- if (selectedParamIndex !== null) {
607
- setTableData((prev) => prev.filter((_, i) => i !== selectedParamIndex))
608
- setFieldValue(
609
- `parameters`,
610
- method?.parameters?.filter((_, i) => i !== selectedParamIndex)
611
- )
612
- }
613
- setOpenDeleteDialog(false)
614
- setSelectedParamIndex(null)
615
- }
616
-
617
- const confirmDeleteHeader = () => {
618
- if (setSelectedHeaderIndex !== null) {
619
- let headers = Object.fromEntries(
620
- Object.entries(method.responses[indexRef.current].headers).filter(
621
- ([key]) => key != selectedParamName
622
- )
623
- )
624
- setFieldValue(`responses[${indexRef.current}].headers`, headers)
625
- }
626
- setOpenHeaderDeleteDialog(false)
627
- setSelectedHeaderIndex(null)
628
- }
629
-
630
- const handleDeleteClick = (id: number, name: string) => {
631
- setSelectedParamIndex(id)
632
- setSelectedParamName(name)
633
-
634
- setOpenDeleteDialog(true)
635
- }
636
-
637
- const handleDeleteResponseHeader = (index, name) => {
638
- setSelectedHeaderIndex(index)
639
- setSelectedParamName(name)
640
-
641
- setOpenHeaderDeleteDialog(true)
642
- }
643
-
644
- const saveNewRow = (values) => {
645
- setTableData([...tableData, values])
646
- setFieldValue(`parameters`, [...method.parameters, values])
647
- }
648
-
649
- const saveNewResponseRow = (value) => {
650
- setFieldValue(`responses[${indexRef.current}].headers[${value.name}]`, value)
651
- }
652
-
653
- useEffect(() => {
654
- setTableRecords(generateTableData(tableData, true))
655
- }, [tableData])
656
-
657
- useEffect(() => {
658
- if (method?.parameters) {
659
- setTableData(method.parameters)
660
- }
661
- }, [method, path])
662
-
663
- useEffect(() => {
664
- if (selectedStatusCode && method.responses) {
665
- let responseIndex = method.responses.findIndex(
666
- (_r) => _r.code.toString() == selectedStatusCode.value.toString()
667
- )
668
- if (responseIndex < 0) {
669
- const clonedResponses = structuredClone(method.responses)
670
-
671
- clonedResponses.push({
672
- code: selectedStatusCode.value.toString(),
673
- content: {
674
- contentType: 'application/json',
675
- schema: {},
676
- },
677
- headers: {},
678
- })
679
-
680
- if (setFieldValue) {
681
- setFieldValue('responses', clonedResponses)
682
- responseIndex = 0
683
- }
684
- }
685
- setCurrentResponseIndex(responseIndex)
686
- indexRef.current = responseIndex
687
- if (responseIndex >= 0) {
688
- setTableResponseRecords(
689
- generateResponseTableData(method.responses[responseIndex].headers, responseIndex)
690
- )
691
- }
692
- }
693
- }, [selectedStatusCode, method.responses, setFieldValue])
694
-
695
- useEffect(() => {
696
- if (indexRef.current && indexRef.current > -1) {
697
- setTableResponseRecords(
698
- generateResponseTableData(method.responses[indexRef.current].headers, indexRef.current)
699
- )
700
- }
701
- }, [method.responses, indexRef.current])
702
-
703
- useEffect(() => {
704
- // prepare tags selection list
705
- if (method?.tags.length || tags?.length) {
706
- const convertedStringArray = (method?.tags || [])?.map((item) => ({
707
- label: capitalize(item),
708
- value: item,
709
- }))
710
- const mergedArray = [
711
- ...convertedStringArray,
712
- ...(tags || []).map((item) => ({ label: capitalize(item.name), value: item.name })),
713
- ]
714
-
715
- const filteredArray = mergedArray.filter(
716
- (value, index, self) => index === self.findIndex((t) => t.value === value.value)
717
- )
718
-
719
- setSelectionTags(filteredArray)
720
- }
721
- }, [tags, method])
722
-
723
- return (
724
- <div>
725
- <Accordion
726
- expanded={isOpen}
727
- onChange={() => setIsOpen(!isOpen)}
728
- className={`${styles.methodAccordion} ${readOnly ? styles.readOnly : ''}`}
729
- summary={
730
- <div className={styles.methodSummaryContainer}>
731
- <div className={styles.methodSummary}>
732
- <span
733
- style={{
734
- backgroundColor: methodColorMapping?.[method?.type]?.color || '#3A6CD1',
735
- }}
736
- className={styles.methodLabel}
737
- >
738
- {methodColorMapping?.[method?.type]?.label || method?.type}
739
- </span>
740
- <span className={styles.methodPath}>{path}</span>
741
- </div>
742
- <div
743
- className={`${styles.methodExpandArrowContainer} ${isOpen ? styles.expanded : ''}`}
744
- >
745
- <SVGLoader src={DownArrowIcon} width="2rem" height="2rem" />
746
- </div>
747
- </div>
748
- }
749
- children={
750
- <div className={styles.methodAccordionContent}>
751
- {!readOnly ? (
752
- <Input
753
- className={styles.methodDesc}
754
- label="Endpoint Name"
755
- required
756
- placeholder="Endpoint name..."
757
- value={method?.summary}
758
- onChange={(value) => {
759
- value = value || ''
760
- if (value === '' || regex.ASCII.test(value)) {
761
- setFieldValue('summary', value)
762
- }
763
- }}
764
- onClear={() => {
765
- setFieldValue('summary', '')
766
- }}
767
- errorMsg={errors?.summary}
768
- />
769
- ) : (
770
- <SimpleLabelValue
771
- key={'summary'}
772
- label={'Endpoint Name: '}
773
- value={method?.summary || '-'}
774
- />
775
- )}
776
- <SelectGroup
777
- className={styles.methodDesc}
778
- disabled={readOnly}
779
- placeholder="Select Tags"
780
- label="Tags"
781
- value={method.tags?.map((t) => ({
782
- label: capitalize(t),
783
- value: t,
784
- }))}
785
- onChange={(item) => {
786
- setFieldValue(
787
- 'tags',
788
- item.map((i) => i.value)
789
- )
790
- }}
791
- options={[
792
- {
793
- list: selectionTags,
794
- },
795
- ]}
796
- isMultiple={true}
797
- withSearch={false}
798
- clearable={false}
799
- />
800
- {!readOnly ? (
801
- <TextArea
802
- className={styles.methodDesc}
803
- label="Description"
804
- placeholder="Describe the method's purpose and functionality..."
805
- maxLength={120}
806
- value={method?.description}
807
- onChange={(value) => {
808
- if (value === '' || regex.ASCII.test(value)) setFieldValue('description', value)
809
- }}
810
- />
811
- ) : (
812
- <SimpleLabelValue
813
- key={'description'}
814
- label={'Description: '}
815
- value={method?.description || '-'}
816
- className={styles.multiLineText}
817
- />
818
- )}
819
- <div className={styles.paramsTable}>
820
- <h4 className={styles.paramsTableBodyHead}>Request Details</h4>
821
- <ParamterTable
822
- id="paramter-request-table"
823
- data={tableRecords}
824
- headCells={paramsTableHeaders}
825
- isFormOpen={isFormOpen}
826
- setIsFormOpen={setIsFormOpen}
827
- saveNewRow={saveNewRow}
828
- readOnly={readOnly}
829
- isRequest={true}
830
- />
831
- {method?.type !== 'get' && method?.type !== 'delete' && (
832
- <Accordion
833
- expanded={isExpanded.request}
834
- onChange={() => null}
835
- className={styles.requestAccordion}
836
- summary={
837
- <span className={styles.requestAccordionSummary}>
838
- <div
839
- className={styles.requestAccordionSummary_title}
840
- onClick={() =>
841
- setIsExpanded((prev) => ({
842
- ...prev,
843
- request: !prev.request,
844
- }))
845
- }
846
- >
847
- <SVGLoader
848
- className={isExpanded.request ? styles.expanded : ''}
849
- src={DownArrowIcon}
850
- width="2rem"
851
- height="2rem"
852
- />
853
- Request
854
- {method?.type !== 'delete' && <span style={{ color: 'red' }}>*</span>}
855
- </div>
856
- </span>
857
- }
858
- children={
859
- <JsonInput
860
- acceptType="JSON"
861
- withFooter={!readOnly}
862
- className={'jsonField'}
863
- placeholder="Enter your request body as a JSON object...."
864
- fieldIsDisabled={readOnly}
865
- value={method?.requestBody?.content?.schema?.properties || '{}'}
866
- onChange={(value: string) => {
867
- setFieldValue('requestBody.content.schema.properties', value)
868
- }}
869
- onValidation={() => null}
870
- />
871
- }
872
- />
873
- )}
874
- </div>
875
- <div className={styles.paramsTable}>
876
- <div className={styles.responseHeader}>
877
- <h4 className={styles.paramsTableBodyHead}>Response Details</h4>
878
- <SelectGroup
879
- withSearch={false}
880
- isMultiple={false}
881
- clearable={false}
882
- placeholder="200"
883
- options={[
884
- {
885
- list: httpStatusCodeOptions,
886
- },
887
- ]}
888
- value={selectedStatusCode}
889
- onChange={(value) => {
890
- setSelectedStatusCode(value)
891
- }}
892
- />
893
- </div>
894
- <ParamterTable
895
- id="paramter-response-table"
896
- data={tableResponseRecords}
897
- headCells={paramsTableHeaders}
898
- isFormOpen={isHeaderFormOpen}
899
- setIsFormOpen={setIsHeaderFormOpen}
900
- saveNewRow={saveNewResponseRow}
901
- readOnly={readOnly}
902
- isRequest={false}
903
- />
904
- <Accordion
905
- expanded={isExpanded.response}
906
- onChange={() => null}
907
- className={styles.responseAccordion}
908
- summary={
909
- <span className={styles.responseAccordionSummary}>
910
- <div
911
- className={styles.responseAccordionSummary_title}
912
- onClick={() =>
913
- setIsExpanded((prev) => ({
914
- ...prev,
915
- response: !prev.response,
916
- }))
917
- }
918
- >
919
- <SVGLoader
920
- className={isExpanded.response ? styles.expanded : ''}
921
- src={DownArrowIcon}
922
- width="2rem"
923
- height="2rem"
924
- />
925
- Response<span style={{ color: 'red' }}>*</span>
926
- </div>
927
- </span>
928
- }
929
- children={
930
- <JsonInput
931
- acceptType="JSON"
932
- withFooter={!readOnly}
933
- className={'jsonField'}
934
- placeholder="Enter your response as a JSON object..."
935
- fieldIsDisabled={readOnly}
936
- value={currentResponse?.content?.schema?.properties || '{}'}
937
- onChange={(value) => {
938
- const currentResIndex = method.responses.findIndex(
939
- (res) => res.code === currentResponse.code
940
- )
941
- if (currentResIndex !== -1) {
942
- setFieldValue(
943
- `responses[${currentResIndex}].content.schema.properties`,
944
- value
945
- )
946
- } else {
947
- const clonedResponses = structuredClone(method.responses)
948
-
949
- clonedResponses.push({
950
- code: selectedStatusCode.value.toString(),
951
- content: {
952
- contentType: 'application/json',
953
- schema: {
954
- type: 'object',
955
- properties: value,
956
- },
957
- },
958
- })
959
-
960
- setFieldValue('responses', clonedResponses)
961
- }
962
- }}
963
- onValidation={(valid) => null}
964
- />
965
- }
966
- />
967
- </div>
968
- </div>
969
- }
970
- />
971
- <CommonDialog
972
- status="error"
973
- content={
974
- <p
975
- style={{
976
- textAlign: 'center',
977
- fontWeight: 400,
978
- fontSize: '1rem',
979
- lineHeight: '1.4375rem',
980
- }}
981
- className="delete-msg-container"
982
- >
983
- Are you sure you want to delete
984
- <span className="plan-name">
985
- {' '}
986
- Parameter <strong>{selectedParamName}</strong>
987
- </span>
988
- ?
989
- </p>
990
- }
991
- onSubmit={{
992
- onClick: confirmDeleteParameter,
993
- text: 'Delete',
994
- color: 'error',
995
- fullWidth: true,
996
- }}
997
- onCancel={{
998
- text: 'Cancel',
999
- color: 'action',
1000
- fullWidth: true,
1001
- variant: 'outlined',
1002
- }}
1003
- onClose={() => setOpenDeleteDialog(false)}
1004
- open={openDeleteDialog}
1005
- icon={<SVGLoader src={DeleteOutlinedIcon} width="4.0625rem" height="4.0625rem" />}
1006
- closeIcon={
1007
- <SVGLoader
1008
- src={CloseIcon}
1009
- width="1.5rem"
1010
- height="1.5rem"
1011
- onClick={() => setOpenDeleteDialog(false)}
1012
- />
1013
- }
1014
- />
1015
- <CommonDialog
1016
- status="error"
1017
- content={
1018
- <p
1019
- style={{
1020
- textAlign: 'center',
1021
- fontWeight: 400,
1022
- fontSize: '1rem',
1023
- lineHeight: '1.4375rem',
1024
- }}
1025
- className="delete-msg-container"
1026
- >
1027
- Are you sure you want to delete
1028
- <span className="plan-name">
1029
- {' '}
1030
- Header <strong>{selectedParamName}</strong>
1031
- </span>
1032
- ?
1033
- </p>
1034
- }
1035
- onSubmit={{
1036
- onClick: confirmDeleteHeader,
1037
- text: 'Delete',
1038
- color: 'error',
1039
- fullWidth: true,
1040
- }}
1041
- onCancel={{
1042
- text: 'Cancel',
1043
- color: 'action',
1044
- fullWidth: true,
1045
- variant: 'outlined',
1046
- }}
1047
- onClose={() => setOpenHeaderDeleteDialog(false)}
1048
- open={openHeaderDeleteDialog}
1049
- icon={<SVGLoader src={DeleteOutlinedIcon} width="4.0625rem" height="4.0625rem" />}
1050
- closeIcon={
1051
- <SVGLoader
1052
- src={CloseIcon}
1053
- width="1.5rem"
1054
- height="1.5rem"
1055
- onClick={() => setOpenDeleteDialog(false)}
1056
- />
1057
- }
1058
- />
1059
- </div>
1060
- )
1061
- }
1062
-
1063
- export default MethodsAccordion
1
+ import React, { useEffect, useState } from 'react'
2
+ import { Accordion, Button, Input, SelectGroup, Switch, TextArea } from 'digitinary-ui'
3
+ import SVGLoader from '../../components/SVGLoader/SVGLoader'
4
+ import {
5
+ CheckMarkSquare,
6
+ DeleteIcon,
7
+ DownArrowIcon,
8
+ EditIcon,
9
+ deleteOutlinedIcon,
10
+ } from '../../assets/icons'
11
+ import { httpStatusCodes, methodColorMapping, paramsTableHeaders } from '../../constants/index'
12
+ import Tooltip from '../../components/Tooltip/Tooltip'
13
+ import { TransformedMethod } from '../../types/layout.type'
14
+ import SimpleLabelValue from '../../components/SimpleLabelValue'
15
+ import { capitalize, handleStatusColor } from '../../helpers/methodAccordion.helper'
16
+ import ParamterTable from '../table/table'
17
+ import CommonDialog from '../../components/dialog'
18
+ import JsonInput from '../../components/JsonInput/JsonInput'
19
+ import styles from './MethodAccordion.module.scss'
20
+
21
+ const httpStatusCodeOptions = httpStatusCodes.map((code) => ({
22
+ label: (
23
+ <div className={styles.statusCodeOptionContainer}>
24
+ <div
25
+ className={styles.statusCodeOptionCircle}
26
+ style={{ backgroundColor: handleStatusColor(code) }}
27
+ ></div>
28
+ <span>{code}</span>
29
+ </div>
30
+ ),
31
+ value: code,
32
+ }))
33
+
34
+ const MethodsAccordion = ({
35
+ method,
36
+ path,
37
+ setFieldValue,
38
+ readOnly,
39
+ }: {
40
+ method: TransformedMethod
41
+ path: string
42
+ setFieldValue: (key: string, value: string) => void
43
+ readOnly?: boolean
44
+ }) => {
45
+ const [isExpanded, setIsExpanded] = useState({
46
+ request: false,
47
+ response: false,
48
+ method: false,
49
+ })
50
+ const [isFormOpen, setIsFormOpen] = useState(false)
51
+ const [tooltipRefs, setTooltipRefs] = useState<{ [key: number]: any }>({})
52
+ const [tableData, setTableData] = useState([])
53
+ const [openDeleteDialog, setOpenDeleteDialog] = useState(false)
54
+ const [selectedParamIndex, setSelectedParamIndex] = useState<number | null>(null)
55
+ const [selectedParamName, setSelectedParamName] = useState<string | null>(null)
56
+
57
+ const onTableChange = (key, value, index) => {
58
+ const newTableData = tableData.map((item, tIndex) => {
59
+ if (tIndex === index) {
60
+ return { ...item, [key]: value }
61
+ } else {
62
+ return item
63
+ }
64
+ })
65
+
66
+ setTableData(newTableData)
67
+ }
68
+
69
+ const generateTableData = (items) => {
70
+ return items.map((item, index) => {
71
+ return {
72
+ id: index,
73
+ paramName: item.name,
74
+ paramType: capitalize(item.in),
75
+ schemaType: capitalize(item.schema?.type) || '',
76
+ required: (
77
+ <>
78
+ {readOnly ? (
79
+ item.required ? (
80
+ 'True'
81
+ ) : (
82
+ 'False'
83
+ )
84
+ ) : (
85
+ <Switch
86
+ checked={item.required}
87
+ onClick={() => {
88
+ if (readOnly) {
89
+ return null
90
+ }
91
+ onTableChange('required', !item.required, index)
92
+ setFieldValue(`parameters[${index}][required]`, !item.required)
93
+ }}
94
+ />
95
+ )}
96
+ </>
97
+ ),
98
+ description: (
99
+ <div className={styles.paramDescContainer}>
100
+ <Tooltip
101
+ arrowWithBorder
102
+ placement="bottom-end"
103
+ type="function"
104
+ trigger="click"
105
+ delay={[0, 0]}
106
+ onCreate={(instance) =>
107
+ setTooltipRefs((prev) => ({
108
+ ...prev,
109
+ [index]: instance,
110
+ }))
111
+ }
112
+ content={
113
+ <div className={styles.editDescTooltipContent}>
114
+ <p className={styles.editDescTooltipContent_header}>Description</p>
115
+ <TextArea
116
+ placeholder="Describe parameter..."
117
+ value={item.description}
118
+ disabled={readOnly}
119
+ onChange={(value) => onTableChange('description', value, index)}
120
+ />
121
+ {!readOnly && (
122
+ <Button
123
+ className={styles.editDescTooltipContent_btn}
124
+ variant="outlined"
125
+ size="small"
126
+ onClick={() => {
127
+ setFieldValue(`parameters[${index}].description`, item.description)
128
+ tooltipRefs[index]?.hide()
129
+ }}
130
+ >
131
+ Apply
132
+ </Button>
133
+ )}
134
+ </div>
135
+ }
136
+ >
137
+ {readOnly ? (
138
+ <Button
139
+ className={styles.editDescBtn}
140
+ variant="link"
141
+ color="action"
142
+ // endIcon={<SVGLoader src={EditIcon} width="1.5rem" height="1.5rem" />}
143
+ >
144
+ {item.description ? item.description.substring(0, 12) : '-'}
145
+ {item.description && item.description.length > 12 ? '...' : ''}
146
+ </Button>
147
+ ) : (
148
+ <Button
149
+ className={styles.editDescBtn}
150
+ variant="link"
151
+ color="action"
152
+ endIcon={<SVGLoader src={EditIcon} width="1.5rem" height="1.5rem" />}
153
+ >
154
+ {readOnly ? 'View ' : 'Add '} Description
155
+ </Button>
156
+ )}
157
+ </Tooltip>
158
+
159
+ {!readOnly && <div className={styles.paramDescContainer_separator}></div>}
160
+
161
+ {!readOnly && (
162
+ <Button
163
+ className={styles.deleteParamBtn}
164
+ variant="link"
165
+ color="error"
166
+ endIcon={<SVGLoader src={DeleteIcon} width="1.125rem" height="1.125rem" />}
167
+ onClick={() => handleDeleteClick(index, item.name)}
168
+ ></Button>
169
+ )}
170
+ </div>
171
+ ),
172
+ }
173
+ })
174
+ }
175
+
176
+ const [tableRecords, setTableRecords] = useState()
177
+
178
+ const confirmDeleteParameter = () => {
179
+ if (selectedParamIndex !== null) {
180
+ setTableData((prev) => prev.filter((_, i) => i !== selectedParamIndex))
181
+ setFieldValue(
182
+ `parameters`,
183
+ method?.parameters?.filter((_, i) => i !== selectedParamIndex)
184
+ )
185
+ }
186
+ setOpenDeleteDialog(false)
187
+ setSelectedParamIndex(null)
188
+ }
189
+
190
+ const handleDeleteClick = (id: number, name: string) => {
191
+ setSelectedParamIndex(id)
192
+ setSelectedParamName(name)
193
+
194
+ setOpenDeleteDialog(true)
195
+ }
196
+
197
+ const saveNewRow = (values) => {
198
+ setTableData([...tableData, values])
199
+ setFieldValue(`parameters`, [...method.parameters, values])
200
+ }
201
+
202
+ useEffect(() => {
203
+ setTableRecords(generateTableData(tableData))
204
+ }, [tableData])
205
+
206
+ useEffect(() => {
207
+ if (method?.parameters) {
208
+ setTableRecords(generateTableData(method.parameters))
209
+ setTableData(method.parameters)
210
+ }
211
+ }, [method, path])
212
+
213
+ return (
214
+ <div>
215
+ <Accordion
216
+ expanded={isExpanded.method}
217
+ onChange={() => setIsExpanded((prev) => ({ ...prev, method: !prev.method }))}
218
+ className={styles.methodAccordion}
219
+ summary={
220
+ <div className={styles.methodSummaryContainer}>
221
+ <div className={styles.methodSummary}>
222
+ <span
223
+ style={{
224
+ backgroundColor: methodColorMapping?.[method?.type]?.color || '#3A6CD1',
225
+ }}
226
+ className={styles.methodLabel}
227
+ >
228
+ {methodColorMapping?.[method?.type]?.label || method?.type}
229
+ </span>
230
+ <span className={styles.methodPath}>{path}</span>
231
+ </div>
232
+ <div
233
+ className={`${styles.methodExpandArrowContainer} ${
234
+ isExpanded.method ? styles.expanded : ''
235
+ }`}
236
+ >
237
+ <SVGLoader src={DownArrowIcon} width="2rem" height="2rem" />
238
+ </div>
239
+ </div>
240
+ }
241
+ children={
242
+ <div className={styles.methodAccordionContent}>
243
+ {!readOnly ? (
244
+ <TextArea
245
+ className={styles.methodDesc}
246
+ label="Description"
247
+ placeholder="Describe the endpoint's purpose and functionality..."
248
+ value={method?.description}
249
+ onChange={(value) => setFieldValue('description', value)}
250
+ />
251
+ ) : (
252
+ <SimpleLabelValue
253
+ key={'description'}
254
+ label={'Description: '}
255
+ value={method?.description || '-'}
256
+ />
257
+ )}
258
+ <div className={styles.paramsTable}>
259
+ <ParamterTable
260
+ id="paramter-table"
261
+ data={tableRecords}
262
+ headCells={paramsTableHeaders}
263
+ isFormOpen={isFormOpen}
264
+ setIsFormOpen={setIsFormOpen}
265
+ saveNewRow={saveNewRow}
266
+ readOnly={readOnly}
267
+ />
268
+ </div>
269
+
270
+ {method?.type !== 'get' && (
271
+ <Accordion
272
+ expanded={isExpanded.request}
273
+ onChange={() => null}
274
+ className={styles.requestAccordion}
275
+ summary={
276
+ <span className={styles.requestAccordionSummary}>
277
+ <div
278
+ className={styles.requestAccordionSummary_title}
279
+ onClick={() =>
280
+ setIsExpanded((prev) => ({
281
+ ...prev,
282
+ request: !prev.request,
283
+ }))
284
+ }
285
+ >
286
+ <SVGLoader
287
+ className={isExpanded.request ? styles.expanded : ''}
288
+ src={DownArrowIcon}
289
+ width="2rem"
290
+ height="2rem"
291
+ />
292
+ Request
293
+ {method?.type !== 'delete' && <span style={{ color: 'red' }}>*</span>}
294
+ </div>
295
+ </span>
296
+ }
297
+ children={
298
+ <JsonInput
299
+ className={'jsonField'}
300
+ placeholder="Enter your request body as a JSON object...."
301
+ fieldIsDisabled={readOnly}
302
+ value={method?.requestBody?.at(0)?.content?.schema?.properties || '{}'}
303
+ onChange={(value: string) => {
304
+ setFieldValue('requestBody[0].content.schema.properties', value)
305
+ }}
306
+ onValidation={() => null}
307
+ />
308
+ }
309
+ />
310
+ )}
311
+
312
+ <Accordion
313
+ expanded={isExpanded.response}
314
+ onChange={() => null}
315
+ className={styles.responseAccordion}
316
+ summary={
317
+ <span className={styles.responseAccordionSummary}>
318
+ <div
319
+ className={styles.responseAccordionSummary_title}
320
+ onClick={() =>
321
+ setIsExpanded((prev) => ({
322
+ ...prev,
323
+ response: !prev.response,
324
+ }))
325
+ }
326
+ >
327
+ <SVGLoader
328
+ className={isExpanded.response ? styles.expanded : ''}
329
+ src={DownArrowIcon}
330
+ width="2rem"
331
+ height="2rem"
332
+ />
333
+ Response<span style={{ color: 'red' }}>*</span>
334
+ </div>
335
+
336
+ <SelectGroup
337
+ withSearch={false}
338
+ isMultiple={false}
339
+ placeholder="200"
340
+ disabled={true}
341
+ options={[
342
+ {
343
+ list: httpStatusCodeOptions,
344
+ },
345
+ ]}
346
+ value={httpStatusCodeOptions[4]}
347
+ />
348
+ </span>
349
+ }
350
+ children={
351
+ <JsonInput
352
+ className={'jsonField'}
353
+ placeholder="Enter your response as a JSON object..."
354
+ fieldIsDisabled={readOnly}
355
+ value={method.responses?.at(0)?.content?.schema?.properties || '{}'}
356
+ onChange={(value) => {
357
+ setFieldValue('responses[0].content.schema.properties', value)
358
+ }}
359
+ onValidation={() => null}
360
+ />
361
+ }
362
+ />
363
+ </div>
364
+ }
365
+ />
366
+ <CommonDialog
367
+ status="error"
368
+ content={
369
+ <p
370
+ style={{
371
+ textAlign: 'center',
372
+ fontWeight: 400,
373
+ fontSize: '1rem',
374
+ lineHeight: '1.4375rem',
375
+ }}
376
+ className="delete-msg-container"
377
+ >
378
+ Are you sure you want to delete
379
+ <span className="plan-name">{` Parameter ${selectedParamName} `}</span>?
380
+ </p>
381
+ }
382
+ onSubmit={{
383
+ onClick: confirmDeleteParameter,
384
+ text: 'Yes',
385
+ color: 'error',
386
+ fullWidth: true,
387
+ }}
388
+ onCancel={{
389
+ text: 'No',
390
+ color: 'normal',
391
+ fullWidth: true,
392
+ }}
393
+ onClose={() => setOpenDeleteDialog(false)}
394
+ open={openDeleteDialog}
395
+ icon={<SVGLoader src={deleteOutlinedIcon} width="4.0625rem" height="4.0625rem" />}
396
+ />
397
+ </div>
398
+ )
399
+ }
400
+
401
+ export default MethodsAccordion