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

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 (353) hide show
  1. package/.editorconfig +12 -12
  2. package/.prettierignore +7 -7
  3. package/.prettierrc +15 -15
  4. package/dist/{a7568b270e175038.svg → 070dc6ecd197bc80.svg} +8 -8
  5. package/dist/16702d92fd6d1730.svg +6 -0
  6. package/dist/2b546d6e9fdf604a.svg +3 -0
  7. package/dist/2c3c6c2c3b835504.svg +5 -0
  8. package/dist/{43595976d1fdccbf.svg → 2e10bbdb265df50e.svg} +4 -4
  9. package/dist/55b5994c5781482b.svg +5 -0
  10. package/dist/60bef8083c55f46b.svg +6 -0
  11. package/dist/68c710e0583e19e6.svg +5 -0
  12. package/dist/731221b3f242672d.svg +4 -0
  13. package/dist/{b82c7612e73342f3.svg → 7f54eeb0bb2d1150.svg} +3 -3
  14. package/dist/8520b6792278d9df.svg +6 -0
  15. package/dist/{56dc416b683db280.svg → 8789eb84283ea95b.svg} +5 -5
  16. package/dist/9506ef7a26a74147.svg +12 -0
  17. package/dist/9b7aee27757b5036.svg +3 -0
  18. package/dist/{af16a554be8c4d69.svg → 9bdff13f8d8fa48a.svg} +3 -3
  19. package/dist/_virtual/index3.js +1 -1
  20. package/dist/_virtual/index4.js +1 -1
  21. package/dist/_virtual/index5.js +1 -1
  22. package/dist/{64efc2716808c4a4.svg → bb8b87cace25e052.svg} +3 -3
  23. package/dist/cceb1e5dc06b0b85.svg +4 -0
  24. package/dist/d140a601c85bac25.svg +3 -0
  25. package/dist/{72db3b05a96dd600.svg → d32ce84bbd78babd.svg} +3 -3
  26. package/dist/{844eba3f2e42a9eb.svg → d501922060662842.svg} +3 -3
  27. package/dist/d6d0a98ec38e6b77.svg +3 -0
  28. package/dist/e04479ad425e7d58.svg +4 -0
  29. package/dist/f4a32992f02af522.svg +5 -0
  30. package/dist/node_modules/dom-serializer/lib/foreignNames.js +2 -0
  31. package/dist/node_modules/dom-serializer/lib/foreignNames.js.map +1 -0
  32. package/dist/node_modules/dom-serializer/lib/index.js +2 -0
  33. package/dist/node_modules/dom-serializer/lib/index.js.map +1 -0
  34. package/dist/node_modules/dom-serializer/node_modules/entities/lib/decode.js +2 -0
  35. package/dist/node_modules/dom-serializer/node_modules/entities/lib/decode.js.map +1 -0
  36. package/dist/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js +2 -0
  37. package/dist/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js.map +1 -0
  38. package/dist/node_modules/dom-serializer/node_modules/entities/lib/encode.js +2 -0
  39. package/dist/node_modules/dom-serializer/node_modules/entities/lib/encode.js.map +1 -0
  40. package/dist/node_modules/dom-serializer/node_modules/entities/lib/escape.js +2 -0
  41. package/dist/node_modules/dom-serializer/node_modules/entities/lib/escape.js.map +1 -0
  42. package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-html.js +2 -0
  43. package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-html.js.map +1 -0
  44. package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-xml.js +2 -0
  45. package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-xml.js.map +1 -0
  46. package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/encode-html.js +2 -0
  47. package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/encode-html.js.map +1 -0
  48. package/dist/node_modules/dom-serializer/node_modules/entities/lib/index.js +2 -0
  49. package/dist/node_modules/dom-serializer/node_modules/entities/lib/index.js.map +1 -0
  50. package/dist/node_modules/domhandler/lib/index.js +2 -0
  51. package/dist/node_modules/domhandler/lib/index.js.map +1 -0
  52. package/dist/node_modules/domhandler/lib/node.js +2 -0
  53. package/dist/node_modules/domhandler/lib/node.js.map +1 -0
  54. package/dist/node_modules/domutils/lib/feeds.js +2 -0
  55. package/dist/node_modules/domutils/lib/feeds.js.map +1 -0
  56. package/dist/node_modules/domutils/lib/helpers.js +2 -0
  57. package/dist/node_modules/domutils/lib/helpers.js.map +1 -0
  58. package/dist/node_modules/domutils/lib/index.js +2 -0
  59. package/dist/node_modules/domutils/lib/index.js.map +1 -0
  60. package/dist/node_modules/domutils/lib/legacy.js +2 -0
  61. package/dist/node_modules/domutils/lib/legacy.js.map +1 -0
  62. package/dist/node_modules/domutils/lib/manipulation.js +2 -0
  63. package/dist/node_modules/domutils/lib/manipulation.js.map +1 -0
  64. package/dist/node_modules/domutils/lib/querying.js +2 -0
  65. package/dist/node_modules/domutils/lib/querying.js.map +1 -0
  66. package/dist/node_modules/domutils/lib/stringify.js +2 -0
  67. package/dist/node_modules/domutils/lib/stringify.js.map +1 -0
  68. package/dist/node_modules/domutils/lib/traversal.js +2 -0
  69. package/dist/node_modules/domutils/lib/traversal.js.map +1 -0
  70. package/dist/node_modules/entities/dist/commonjs/decode-codepoint.js +2 -0
  71. package/dist/node_modules/entities/dist/commonjs/decode-codepoint.js.map +1 -0
  72. package/dist/node_modules/entities/dist/commonjs/decode.js +2 -0
  73. package/dist/node_modules/entities/dist/commonjs/decode.js.map +1 -0
  74. package/dist/node_modules/entities/dist/commonjs/generated/decode-data-html.js +2 -0
  75. package/dist/node_modules/entities/dist/commonjs/generated/decode-data-html.js.map +1 -0
  76. package/dist/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +2 -0
  77. package/dist/node_modules/entities/dist/commonjs/generated/decode-data-xml.js.map +1 -0
  78. package/dist/node_modules/html-dom-parser/lib/server/html-to-dom.js +1 -1
  79. package/dist/node_modules/html-dom-parser/lib/server/html-to-dom.js.map +1 -1
  80. package/dist/node_modules/html-react-parser/lib/index.js +1 -1
  81. package/dist/node_modules/html-react-parser/lib/index.js.map +1 -1
  82. package/dist/node_modules/htmlparser2/dist/commonjs/Parser.js +1 -1
  83. package/dist/node_modules/htmlparser2/dist/commonjs/Parser.js.map +1 -1
  84. package/dist/node_modules/htmlparser2/dist/commonjs/Tokenizer.js +1 -1
  85. package/dist/node_modules/htmlparser2/dist/commonjs/Tokenizer.js.map +1 -1
  86. package/dist/node_modules/htmlparser2/dist/commonjs/index.js +1 -1
  87. package/dist/node_modules/htmlparser2/dist/commonjs/index.js.map +1 -1
  88. package/dist/node_modules/style-to-object/cjs/index.js +1 -1
  89. package/dist/node_modules/toposort/index.js +1 -1
  90. package/dist/node_modules/yup/index.esm.js +1 -1
  91. package/dist/src/assets/icons/AddRow.svg.js +1 -1
  92. package/dist/src/assets/icons/AddRow.svg.js.map +1 -1
  93. package/dist/src/assets/icons/ApiIcon.svg.js +2 -0
  94. package/dist/src/assets/icons/ApiIcon.svg.js.map +1 -0
  95. package/dist/src/assets/icons/ArrowBack.svg.js +2 -0
  96. package/dist/src/assets/icons/ArrowBack.svg.js.map +1 -0
  97. package/dist/src/assets/icons/BookIcon.svg.js +2 -0
  98. package/dist/src/assets/icons/BookIcon.svg.js.map +1 -0
  99. package/dist/src/assets/icons/CopySticker.svg.js +2 -0
  100. package/dist/src/assets/icons/CopySticker.svg.js.map +1 -0
  101. package/dist/src/assets/icons/DeleteIcon.svg.js +1 -1
  102. package/dist/src/assets/icons/DeleteIcon.svg.js.map +1 -1
  103. package/dist/src/assets/icons/DeleteOutlinedIcon.svg.js +2 -0
  104. package/dist/src/assets/icons/DeleteOutlinedIcon.svg.js.map +1 -0
  105. package/dist/src/assets/icons/DownArrow.svg.js +1 -1
  106. package/dist/src/assets/icons/DownArrow.svg.js.map +1 -1
  107. package/dist/src/assets/icons/EditIcon.svg.js +1 -1
  108. package/dist/src/assets/icons/EditIcon.svg.js.map +1 -1
  109. package/dist/src/assets/icons/FilterIcon.svg.js +2 -0
  110. package/dist/src/assets/icons/FilterIcon.svg.js.map +1 -0
  111. package/dist/src/assets/icons/Plus.svg.js +2 -0
  112. package/dist/src/assets/icons/Plus.svg.js.map +1 -0
  113. package/dist/src/assets/icons/PlusSquare.svg.js +2 -0
  114. package/dist/src/assets/icons/PlusSquare.svg.js.map +1 -0
  115. package/dist/src/assets/icons/RequestOption.svg.js +2 -0
  116. package/dist/src/assets/icons/RequestOption.svg.js.map +1 -0
  117. package/dist/src/assets/icons/arrowDownGray.svg.js +2 -0
  118. package/dist/src/assets/icons/arrowDownGray.svg.js.map +1 -0
  119. package/dist/src/assets/icons/arrowRightGray.svg.js +2 -0
  120. package/dist/src/assets/icons/arrowRightGray.svg.js.map +1 -0
  121. package/dist/src/assets/icons/close-circle.svg.js +2 -0
  122. package/dist/src/assets/icons/close-circle.svg.js.map +1 -0
  123. package/dist/src/assets/icons/document.svg.js +2 -0
  124. package/dist/src/assets/icons/document.svg.js.map +1 -0
  125. package/dist/src/assets/icons/eye.svg.js +2 -0
  126. package/dist/src/assets/icons/eye.svg.js.map +1 -0
  127. package/dist/src/assets/icons/infoIcon.svg.js +2 -0
  128. package/dist/src/assets/icons/infoIcon.svg.js.map +1 -0
  129. package/dist/src/assets/icons/searchIcon.svg.js +2 -0
  130. package/dist/src/assets/icons/searchIcon.svg.js.map +1 -0
  131. package/dist/src/components/InfoForm/InfoForm.js +1 -1
  132. package/dist/src/components/InfoForm/InfoForm.js.map +1 -1
  133. package/dist/src/components/JsonInput/JsonInput.js.map +1 -1
  134. package/dist/src/components/LivePreview/LivePreview.js +1 -1
  135. package/dist/src/components/LivePreview/LivePreview.js.map +1 -1
  136. package/dist/src/components/MethodAccordion/MethodAccordion.js +1 -1
  137. package/dist/src/components/MethodAccordion/MethodAccordion.js.map +1 -1
  138. package/dist/src/components/SVGLoader/SVGLoader.js.map +1 -1
  139. package/dist/src/components/SectionHead/SectionHead.js.map +1 -1
  140. package/dist/src/components/SimpleLabelValue/SimpleLabelValue.js.map +1 -1
  141. package/dist/src/components/Tooltip/Tooltip.js.map +1 -1
  142. package/dist/src/components/dialog/index.js +1 -1
  143. package/dist/src/components/dialog/index.js.map +1 -1
  144. package/dist/src/components/table/table.js +1 -1
  145. package/dist/src/components/table/table.js.map +1 -1
  146. package/dist/src/components/table/tags-table.js.map +1 -1
  147. package/dist/src/constants/index.js +1 -1
  148. package/dist/src/constants/index.js.map +1 -1
  149. package/dist/src/constants/methods.constant.js +2 -0
  150. package/dist/src/constants/methods.constant.js.map +1 -0
  151. package/dist/src/constants/regex.js.map +1 -1
  152. package/dist/src/helpers/layout.helper.js +1 -1
  153. package/dist/src/helpers/layout.helper.js.map +1 -1
  154. package/dist/src/helpers/methodAccordion.helper.js.map +1 -1
  155. package/dist/src/index.js +1 -1
  156. package/dist/src/layout/docsComponents/DocsAside/DocsAside.js +2 -0
  157. package/dist/src/layout/docsComponents/DocsAside/DocsAside.js.map +1 -0
  158. package/dist/src/layout/docsComponents/DocsContent/DocsContent.js +2 -0
  159. package/dist/src/layout/docsComponents/DocsContent/DocsContent.js.map +1 -0
  160. package/dist/src/layout/docsComponents/DocsContent/EndpointPage/index.js +2 -0
  161. package/dist/src/layout/docsComponents/DocsContent/EndpointPage/index.js.map +1 -0
  162. package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.js +2 -0
  163. package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.js.map +1 -0
  164. package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.module.scss.js +2 -0
  165. package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.module.scss.js.map +1 -0
  166. package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js +2 -0
  167. package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js.map +1 -0
  168. package/dist/src/layout/docsComponents/index.js +2 -0
  169. package/dist/src/layout/docsComponents/index.js.map +1 -0
  170. package/dist/src/layout/docsLayout.js +2 -0
  171. package/dist/src/layout/docsLayout.js.map +1 -0
  172. package/dist/src/layout/layout.js +1 -1
  173. package/dist/src/layout/layout.js.map +1 -1
  174. package/dist/src/validator/form.scheme.js +1 -1
  175. package/dist/src/validator/form.scheme.js.map +1 -1
  176. package/dist/styles.css +1436 -368
  177. package/dist/types/assets/icons/index.d.ts +16 -1
  178. package/dist/types/components/LivePreview/LivePreview.d.ts +1 -0
  179. package/dist/types/components/MethodAccordion/MethodAccordion.d.ts +2 -1
  180. package/dist/types/components/dialog/dialog.d.ts +3 -0
  181. package/dist/types/components/table/table.d.ts +2 -1
  182. package/dist/types/constants/methods.constant.d.ts +16 -0
  183. package/dist/types/helpers/docs.helper.d.ts +3 -0
  184. package/dist/types/index.d.ts +1 -0
  185. package/dist/types/layout/docsComponents/DocsAside/DocsAside.d.ts +3 -0
  186. package/dist/types/layout/docsComponents/DocsContent/DocsContent.d.ts +3 -0
  187. package/dist/types/layout/docsComponents/DocsContent/EndpointPage/index.d.ts +2 -0
  188. package/dist/types/layout/docsComponents/DocsContent/TagPage/index.d.ts +2 -0
  189. package/dist/types/layout/docsComponents/DocsHeader/DocsHeader.d.ts +3 -0
  190. package/dist/types/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.d.ts +8 -0
  191. package/dist/types/layout/docsComponents/index.d.ts +17 -0
  192. package/dist/types/layout/docsLayout.d.ts +33 -0
  193. package/dist/types/layout/layout.d.ts +2 -1
  194. package/dist/types/types/layout.type.d.ts +1 -0
  195. package/dist/types/types/openApi.d.ts +4 -4
  196. package/dist/types/validator/form.scheme.d.ts +10 -2
  197. package/package.json +45 -43
  198. package/rollup.config.js +35 -35
  199. package/src/assets/icons/AddRow.svg +3 -3
  200. package/src/assets/icons/ApiIcon.svg +12 -0
  201. package/src/assets/icons/ArrowBack.svg +3 -0
  202. package/src/assets/icons/BookIcon.svg +6 -0
  203. package/src/assets/icons/CheckMarkSquare.svg +5 -5
  204. package/src/assets/icons/CloseIcon.svg +4 -4
  205. package/src/assets/icons/CopySticker.svg +6 -0
  206. package/src/assets/icons/DeleteIcon.svg +3 -3
  207. package/src/assets/icons/DeleteOutlinedIcon.svg +8 -0
  208. package/src/assets/icons/DownArrow.svg +3 -3
  209. package/src/assets/icons/EditIcon.svg +3 -3
  210. package/src/assets/icons/FilterIcon.svg +4 -0
  211. package/src/assets/icons/Plus.svg +5 -0
  212. package/src/assets/icons/PlusSquare.svg +3 -0
  213. package/src/assets/icons/RequestOption.svg +5 -0
  214. package/src/assets/icons/UpArrow.svg +3 -3
  215. package/src/assets/icons/arrowDownGray.svg +3 -0
  216. package/src/assets/icons/arrowRightGray.svg +3 -0
  217. package/src/assets/icons/close-circle.svg +5 -0
  218. package/src/assets/icons/deleteOutlinedIcon.svg +8 -8
  219. package/src/assets/icons/document.svg +6 -0
  220. package/src/assets/icons/eye.svg +4 -0
  221. package/src/assets/icons/index.ts +23 -8
  222. package/src/assets/icons/infoIcon.svg +5 -0
  223. package/src/assets/icons/searchIcon.svg +4 -0
  224. package/src/components/Chips/Chips.tsx +87 -87
  225. package/src/components/Chips/style.scss +147 -147
  226. package/src/components/InfoForm/InfoForm.module.scss +165 -165
  227. package/src/components/InfoForm/InfoForm.tsx +423 -428
  228. package/src/components/JsonInput/JsonInput.tsx +149 -149
  229. package/src/components/JsonInput/style.module.scss +133 -133
  230. package/src/components/LivePreview/LivePreview.module.scss +180 -24
  231. package/src/components/LivePreview/LivePreview.tsx +226 -191
  232. package/src/components/MethodAccordion/MethodAccordion.module.scss +386 -338
  233. package/src/components/MethodAccordion/MethodAccordion.tsx +670 -514
  234. package/src/components/SVGLoader/SVGLoader.tsx +96 -94
  235. package/src/components/SectionHead/SectionHead.scss +29 -29
  236. package/src/components/SectionHead/SectionHead.tsx +22 -22
  237. package/src/components/SimpleLabelValue/SimpleLabelValue.tsx +31 -31
  238. package/src/components/SimpleLabelValue/index.ts +1 -1
  239. package/src/components/SimpleLabelValue/style.scss +30 -30
  240. package/src/components/Tooltip/Tooltip.scss +133 -133
  241. package/src/components/Tooltip/Tooltip.tsx +85 -85
  242. package/src/components/_global.scss +337 -337
  243. package/src/components/dialog/dialog.ts +57 -54
  244. package/src/components/dialog/index.tsx +86 -85
  245. package/src/components/dialog/style.scss +188 -104
  246. package/src/components/table/style.scss +217 -190
  247. package/src/components/table/table.tsx +489 -327
  248. package/src/components/table/tags-table.tsx +348 -348
  249. package/src/constants/index.ts +95 -93
  250. package/src/constants/methods.constant.ts +26 -0
  251. package/src/constants/regex.ts +7 -7
  252. package/src/global.d.ts +13 -13
  253. package/src/helpers/docs.helper.ts +28 -0
  254. package/src/helpers/layout.helper.ts +176 -174
  255. package/src/helpers/methodAccordion.helper.ts +19 -19
  256. package/src/index.ts +2 -1
  257. package/src/layout/docsComponents/DocsAside/DocsAside.tsx +8 -0
  258. package/src/layout/docsComponents/DocsAside/style.scss +3 -0
  259. package/src/layout/docsComponents/DocsContent/DocsContent.tsx +13 -0
  260. package/src/layout/docsComponents/DocsContent/EndpointPage/index.tsx +183 -0
  261. package/src/layout/docsComponents/DocsContent/EndpointPage/style.scss +230 -0
  262. package/src/layout/docsComponents/DocsContent/TagPage/index.tsx +111 -0
  263. package/src/layout/docsComponents/DocsContent/TagPage/style.scss +246 -0
  264. package/src/layout/docsComponents/DocsContent/style.scss +0 -0
  265. package/src/layout/docsComponents/DocsHeader/DocsHeader.module.scss +198 -0
  266. package/src/layout/docsComponents/DocsHeader/DocsHeader.tsx +119 -0
  267. package/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.tsx +183 -0
  268. package/src/layout/docsComponents/DocsSideMenuTree/style.scss +195 -0
  269. package/src/layout/docsComponents/index.scss +47 -0
  270. package/src/layout/docsComponents/index.tsx +28 -0
  271. package/src/layout/docsLayout.tsx +69 -0
  272. package/src/layout/layout.module.css +61 -61
  273. package/src/layout/layout.tsx +162 -150
  274. package/src/types/layout.type.ts +31 -30
  275. package/src/types/openApi.ts +108 -108
  276. package/src/types/transformedOpenApi.ts +52 -52
  277. package/src/validator/form.scheme.ts +88 -70
  278. package/tsconfig.json +33 -33
  279. package/dist/_virtual/index20.js +0 -2
  280. package/dist/_virtual/index20.js.map +0 -1
  281. package/dist/_virtual/index21.js +0 -2
  282. package/dist/_virtual/index21.js.map +0 -1
  283. package/dist/_virtual/node2.js +0 -2
  284. package/dist/_virtual/node2.js.map +0 -1
  285. package/dist/_virtual/node3.js +0 -2
  286. package/dist/_virtual/node3.js.map +0 -1
  287. package/dist/node_modules/html-dom-parser/node_modules/domhandler/lib/index.js +0 -2
  288. package/dist/node_modules/html-dom-parser/node_modules/domhandler/lib/index.js.map +0 -1
  289. package/dist/node_modules/html-dom-parser/node_modules/domhandler/lib/node.js +0 -2
  290. package/dist/node_modules/html-dom-parser/node_modules/domhandler/lib/node.js.map +0 -1
  291. package/dist/node_modules/html-react-parser/node_modules/domhandler/lib/index.js +0 -2
  292. package/dist/node_modules/html-react-parser/node_modules/domhandler/lib/index.js.map +0 -1
  293. package/dist/node_modules/html-react-parser/node_modules/domhandler/lib/node.js +0 -2
  294. package/dist/node_modules/html-react-parser/node_modules/domhandler/lib/node.js.map +0 -1
  295. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/lib/foreignNames.js +0 -2
  296. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/lib/foreignNames.js.map +0 -1
  297. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/lib/index.js +0 -2
  298. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/lib/index.js.map +0 -1
  299. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/decode.js +0 -2
  300. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/decode.js.map +0 -1
  301. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js +0 -2
  302. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js.map +0 -1
  303. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/encode.js +0 -2
  304. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/encode.js.map +0 -1
  305. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/escape.js +0 -2
  306. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/escape.js.map +0 -1
  307. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-html.js +0 -2
  308. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-html.js.map +0 -1
  309. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-xml.js +0 -2
  310. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-xml.js.map +0 -1
  311. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/generated/encode-html.js +0 -2
  312. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/generated/encode-html.js.map +0 -1
  313. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/index.js +0 -2
  314. package/dist/node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities/lib/index.js.map +0 -1
  315. package/dist/node_modules/htmlparser2/node_modules/domhandler/lib/index.js +0 -2
  316. package/dist/node_modules/htmlparser2/node_modules/domhandler/lib/index.js.map +0 -1
  317. package/dist/node_modules/htmlparser2/node_modules/domhandler/lib/node.js +0 -2
  318. package/dist/node_modules/htmlparser2/node_modules/domhandler/lib/node.js.map +0 -1
  319. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/feeds.js +0 -2
  320. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/feeds.js.map +0 -1
  321. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/helpers.js +0 -2
  322. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/helpers.js.map +0 -1
  323. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/index.js +0 -2
  324. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/index.js.map +0 -1
  325. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/legacy.js +0 -2
  326. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/legacy.js.map +0 -1
  327. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/manipulation.js +0 -2
  328. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/manipulation.js.map +0 -1
  329. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/querying.js +0 -2
  330. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/querying.js.map +0 -1
  331. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/stringify.js +0 -2
  332. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/stringify.js.map +0 -1
  333. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/traversal.js +0 -2
  334. package/dist/node_modules/htmlparser2/node_modules/domutils/lib/traversal.js.map +0 -1
  335. package/dist/node_modules/htmlparser2/node_modules/entities/dist/commonjs/decode-codepoint.js +0 -2
  336. package/dist/node_modules/htmlparser2/node_modules/entities/dist/commonjs/decode-codepoint.js.map +0 -1
  337. package/dist/node_modules/htmlparser2/node_modules/entities/dist/commonjs/decode.js +0 -2
  338. package/dist/node_modules/htmlparser2/node_modules/entities/dist/commonjs/decode.js.map +0 -1
  339. package/dist/node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-html.js +0 -2
  340. package/dist/node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-html.js.map +0 -1
  341. package/dist/node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +0 -2
  342. package/dist/node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-xml.js.map +0 -1
  343. package/dist/src/assets/icons/CheckMarkSquare.svg.js +0 -2
  344. package/dist/src/assets/icons/CheckMarkSquare.svg.js.map +0 -1
  345. package/dist/src/assets/icons/CloseIcon.svg.js +0 -2
  346. package/dist/src/assets/icons/CloseIcon.svg.js.map +0 -1
  347. package/dist/src/assets/icons/UpArrow.svg.js +0 -2
  348. package/dist/src/assets/icons/UpArrow.svg.js.map +0 -1
  349. package/dist/src/assets/icons/deleteOutlinedIcon.svg.js +0 -2
  350. package/dist/src/assets/icons/deleteOutlinedIcon.svg.js.map +0 -1
  351. package/dist/src/components/Chips/Chips.js +0 -2
  352. package/dist/src/components/Chips/Chips.js.map +0 -1
  353. package/dist/types/types/index.d.ts +0 -18
@@ -1,514 +1,670 @@
1
- import { useEffect, useState } from 'react'
2
- import { Accordion, Button, SelectGroup, SelectGroupV2, Switch, TextArea } from 'digitinary-ui'
3
- import SVGLoader from '../../components/SVGLoader/SVGLoader'
4
- import { DeleteIcon, DownArrowIcon, EditIcon, deleteOutlinedIcon } from '../../assets/icons'
5
- import { httpStatusCodes, methodColorMapping, paramsTableHeaders } from '../../constants/index'
6
- import Tooltip from '../../components/Tooltip/Tooltip'
7
- import { TransformedMethod } from '../../types/layout.type'
8
- import SimpleLabelValue from '../../components/SimpleLabelValue'
9
- import { capitalize, handleStatusColor } from '../../helpers/methodAccordion.helper'
10
- import ParamterTable from '../table/table'
11
- import CommonDialog from '../../components/dialog'
12
- import JsonInput from '../../components/JsonInput/JsonInput'
13
- import styles from './MethodAccordion.module.scss'
14
- import { Tags } from '@entities/openApi'
15
- import regex from '../../constants/regex'
16
-
17
- const httpStatusCodeOptions = httpStatusCodes.map((code) => ({
18
- label: (
19
- <div className={styles.statusCodeOptionContainer}>
20
- <div
21
- className={styles.statusCodeOptionCircle}
22
- style={{ backgroundColor: handleStatusColor(code) }}
23
- ></div>
24
- <span>{code}</span>
25
- </div>
26
- ),
27
- value: code,
28
- }))
29
-
30
- const MethodsAccordion = ({
31
- method,
32
- path,
33
- setFieldValue,
34
- readOnly,
35
- tags,
36
- isOpen,
37
- setIsOpen,
38
- }: {
39
- method: TransformedMethod
40
- path: string
41
- setFieldValue?: (key: string, value: string | string[]) => void
42
- readOnly?: boolean
43
- tags: Tags[]
44
- isOpen: boolean
45
- setIsOpen: (open: boolean) => void
46
- }) => {
47
- const [isExpanded, setIsExpanded] = useState({
48
- request: false,
49
- response: false,
50
- method: false,
51
- })
52
- const [isFormOpen, setIsFormOpen] = useState(false)
53
- const [tooltipRefs, setTooltipRefs] = useState<{ [key: number]: any }>({})
54
- const [tableData, setTableData] = useState([])
55
- const [openDeleteDialog, setOpenDeleteDialog] = useState(false)
56
- const [selectedParamIndex, setSelectedParamIndex] = useState<number | null>(null)
57
- const [selectedParamName, setSelectedParamName] = useState<string | null>(null)
58
- const [tableRecords, setTableRecords] = useState()
59
- const [selectionTags, setSelectionTags] = useState([])
60
- const [selectedStatusCode, setSelectedStatusCode] = useState(httpStatusCodeOptions[4])
61
- const currentResponse =
62
- method.responses.find((res) => Number(res.code) === selectedStatusCode.value) || '{}'
63
-
64
- const onTableChange = (key, value, index) => {
65
- const newTableData = tableData.map((item, tIndex) => {
66
- if (tIndex === index) {
67
- return { ...item, [key]: value }
68
- } else {
69
- return item
70
- }
71
- })
72
-
73
- setTableData(newTableData)
74
- }
75
-
76
- const generateTableData = (items) => {
77
- return items.map((item, index) => {
78
- return {
79
- id: index,
80
- paramName: item.name,
81
- paramType: capitalize(item.in),
82
- schemaType: capitalize(item.schema?.type) || '',
83
- required: (
84
- <>
85
- {readOnly ? (
86
- item.required ? (
87
- 'True'
88
- ) : (
89
- 'False'
90
- )
91
- ) : (
92
- <Switch
93
- checked={item.required}
94
- onClick={() => {
95
- if (readOnly) {
96
- return null
97
- }
98
- onTableChange('required', !item.required, index)
99
- setFieldValue(`parameters[${index}][required]`, !item.required)
100
- }}
101
- />
102
- )}
103
- </>
104
- ),
105
- description: (
106
- <div className={styles.paramDescContainer}>
107
- <Tooltip
108
- key={`${index}-description`}
109
- allowHTML
110
- disabled={method.parameters[index].description?.length <= 12}
111
- content={
112
- <div style={{ padding: '0.625rem' }}>{method.parameters[index].description}</div>
113
- }
114
- arrowWithBorder
115
- placement="bottom-end"
116
- type="function"
117
- delay={[0, 0]}
118
- onShow={() => tooltipRefs[index]?.hide()}
119
- >
120
- <p style={{ alignSelf: 'center' }}>
121
- {method.parameters[index].description
122
- ? method.parameters[index].description.substring(0, 12)
123
- : readOnly && '-'}
124
- {method.parameters[index].description &&
125
- method.parameters[index].description.length > 12
126
- ? '...'
127
- : ''}
128
- </p>
129
- </Tooltip>
130
- {!readOnly && (
131
- <Tooltip
132
- key={`${index}-add-edit-description`}
133
- allowHTML
134
- arrowWithBorder
135
- placement="bottom-end"
136
- type="function"
137
- trigger="click"
138
- delay={[0, 0]}
139
- onCreate={(instance) =>
140
- setTooltipRefs((prev) => ({
141
- ...prev,
142
- [index]: instance,
143
- }))
144
- }
145
- content={
146
- <div className={styles.editDescTooltipContent}>
147
- <p className={styles.editDescTooltipContent_header}>Description</p>
148
- <TextArea
149
- placeholder="Describe parameter..."
150
- value={item.description}
151
- disabled={readOnly}
152
- maxLength={120}
153
- onChange={(value) => {
154
- if (value === '' || regex.ASCII.test(value))
155
- onTableChange('description', value, index)
156
- }}
157
- />
158
- {!readOnly && (
159
- <Button
160
- className={styles.editDescTooltipContent_btn}
161
- variant="outlined"
162
- size="small"
163
- onClick={() => {
164
- setFieldValue(
165
- `parameters[${index}].description`,
166
- item.description?.trim()
167
- )
168
- tooltipRefs[index]?.hide()
169
- }}
170
- disabled={!item.description?.trim()}
171
- >
172
- Apply
173
- </Button>
174
- )}
175
- </div>
176
- }
177
- >
178
- {readOnly || method.parameters[index].description?.length > 0 ? (
179
- <Button
180
- className={styles.editDescBtn}
181
- variant="link"
182
- color="action"
183
- endIcon={<SVGLoader src={EditIcon} width="1.5rem" height="1.5rem" />}
184
- ></Button>
185
- ) : (
186
- <Button
187
- className={styles.editDescBtn}
188
- variant="link"
189
- color="action"
190
- endIcon={<SVGLoader src={EditIcon} width="1.5rem" height="1.5rem" />}
191
- >
192
- {readOnly ? 'View ' : 'Add '} Description
193
- </Button>
194
- )}
195
- </Tooltip>
196
- )}
197
-
198
- {!readOnly && <div className={styles.paramDescContainer_separator}></div>}
199
-
200
- {!readOnly && (
201
- <Button
202
- className={styles.deleteParamBtn}
203
- variant="link"
204
- color="error"
205
- endIcon={<SVGLoader src={DeleteIcon} width="1.125rem" height="1.125rem" />}
206
- onClick={() => handleDeleteClick(index, item.name)}
207
- ></Button>
208
- )}
209
- </div>
210
- ),
211
- }
212
- })
213
- }
214
-
215
- const confirmDeleteParameter = () => {
216
- if (selectedParamIndex !== null) {
217
- setTableData((prev) => prev.filter((_, i) => i !== selectedParamIndex))
218
- setFieldValue(
219
- `parameters`,
220
- method?.parameters?.filter((_, i) => i !== selectedParamIndex)
221
- )
222
- }
223
- setOpenDeleteDialog(false)
224
- setSelectedParamIndex(null)
225
- }
226
-
227
- const handleDeleteClick = (id: number, name: string) => {
228
- setSelectedParamIndex(id)
229
- setSelectedParamName(name)
230
-
231
- setOpenDeleteDialog(true)
232
- }
233
-
234
- const saveNewRow = (values) => {
235
- setTableData([...tableData, values])
236
- setFieldValue(`parameters`, [...method.parameters, values])
237
- }
238
-
239
- useEffect(() => {
240
- setTableRecords(generateTableData(tableData))
241
- }, [tableData])
242
-
243
- useEffect(() => {
244
- if (method?.parameters) {
245
- setTableData(method.parameters)
246
- }
247
- }, [method, path])
248
-
249
- useEffect(() => {
250
- // prepare tags selection list
251
- if (method?.tags.length || tags?.length) {
252
- const convertedStringArray = (method?.tags || [])?.map((item) => ({
253
- label: capitalize(item),
254
- value: item,
255
- }))
256
- const mergedArray = [
257
- ...convertedStringArray,
258
- ...(tags || []).map((item) => ({ label: capitalize(item.name), value: item.name })),
259
- ]
260
-
261
- const filteredArray = mergedArray.filter(
262
- (value, index, self) => index === self.findIndex((t) => t.value === value.value)
263
- )
264
-
265
- setSelectionTags(filteredArray)
266
- }
267
- }, [tags, method])
268
-
269
- return (
270
- <div>
271
- <Accordion
272
- expanded={isOpen}
273
- onChange={() => setIsOpen(!isOpen)}
274
- className={`${styles.methodAccordion} ${readOnly ? styles.readOnly : ''}`}
275
- summary={
276
- <div className={styles.methodSummaryContainer}>
277
- <div className={styles.methodSummary}>
278
- <span
279
- style={{
280
- backgroundColor: methodColorMapping?.[method?.type]?.color || '#3A6CD1',
281
- }}
282
- className={styles.methodLabel}
283
- >
284
- {methodColorMapping?.[method?.type]?.label || method?.type}
285
- </span>
286
- <span className={styles.methodPath}>{path}</span>
287
- </div>
288
- <div
289
- className={`${styles.methodExpandArrowContainer} ${isOpen ? styles.expanded : ''}`}
290
- >
291
- <SVGLoader src={DownArrowIcon} width="2rem" height="2rem" />
292
- </div>
293
- </div>
294
- }
295
- children={
296
- <div className={styles.methodAccordionContent}>
297
- <SelectGroup
298
- className={styles.methodDesc}
299
- disabled={readOnly}
300
- placeholder="Select Tags"
301
- label="Tags"
302
- value={method.tags?.map((t) => ({
303
- label: capitalize(t),
304
- value: t,
305
- }))}
306
- onChange={(item) => {
307
- setFieldValue(
308
- 'tags',
309
- item.map((i) => i.value)
310
- )
311
- }}
312
- options={[
313
- {
314
- list: selectionTags,
315
- },
316
- ]}
317
- isMultiple={true}
318
- withSearch={false}
319
- clearable={false}
320
- />
321
- {!readOnly ? (
322
- <TextArea
323
- className={styles.methodDesc}
324
- label="Description"
325
- placeholder="Describe the method's purpose and functionality..."
326
- maxLength={120}
327
- value={method?.description}
328
- onChange={(value) => {
329
- if (value === '' || regex.ASCII.test(value)) setFieldValue('description', value)
330
- }}
331
- />
332
- ) : (
333
- <SimpleLabelValue
334
- key={'description'}
335
- label={'Description: '}
336
- value={method?.description || '-'}
337
- />
338
- )}
339
- <div className={styles.paramsTable}>
340
- <ParamterTable
341
- id="paramter-table"
342
- data={tableRecords}
343
- headCells={paramsTableHeaders}
344
- isFormOpen={isFormOpen}
345
- setIsFormOpen={setIsFormOpen}
346
- saveNewRow={saveNewRow}
347
- readOnly={readOnly}
348
- />
349
- </div>
350
- {method?.type !== 'get' && (
351
- <Accordion
352
- expanded={isExpanded.request}
353
- onChange={() => null}
354
- className={styles.requestAccordion}
355
- summary={
356
- <span className={styles.requestAccordionSummary}>
357
- <div
358
- className={styles.requestAccordionSummary_title}
359
- onClick={() =>
360
- setIsExpanded((prev) => ({
361
- ...prev,
362
- request: !prev.request,
363
- }))
364
- }
365
- >
366
- <SVGLoader
367
- className={isExpanded.request ? styles.expanded : ''}
368
- src={DownArrowIcon}
369
- width="2rem"
370
- height="2rem"
371
- />
372
- Request
373
- {method?.type !== 'delete' && <span style={{ color: 'red' }}>*</span>}
374
- </div>
375
- </span>
376
- }
377
- children={
378
- <JsonInput
379
- acceptType="JSON"
380
- withFooter={!readOnly}
381
- className={'jsonField'}
382
- placeholder="Enter your request body as a JSON object...."
383
- fieldIsDisabled={readOnly}
384
- value={method?.requestBody?.content?.schema?.properties || '{}'}
385
- onChange={(value: string) => {
386
- setFieldValue('requestBody.content.schema.properties', value)
387
- }}
388
- onValidation={() => null}
389
- />
390
- }
391
- />
392
- )}
393
- <Accordion
394
- expanded={isExpanded.response}
395
- onChange={() => null}
396
- className={styles.responseAccordion}
397
- summary={
398
- <span className={styles.responseAccordionSummary}>
399
- <div
400
- className={styles.responseAccordionSummary_title}
401
- onClick={() =>
402
- setIsExpanded((prev) => ({
403
- ...prev,
404
- response: !prev.response,
405
- }))
406
- }
407
- >
408
- <SVGLoader
409
- className={isExpanded.response ? styles.expanded : ''}
410
- src={DownArrowIcon}
411
- width="2rem"
412
- height="2rem"
413
- />
414
- Response<span style={{ color: 'red' }}>*</span>
415
- </div>
416
-
417
- <SelectGroup
418
- withSearch={false}
419
- isMultiple={false}
420
- clearable={false}
421
- placeholder="200"
422
- options={[
423
- {
424
- list: httpStatusCodeOptions,
425
- },
426
- ]}
427
- value={selectedStatusCode}
428
- onChange={(value) => {
429
- setSelectedStatusCode(value)
430
- }}
431
- />
432
- </span>
433
- }
434
- children={
435
- <JsonInput
436
- acceptType="JSON"
437
- withFooter={!readOnly}
438
- className={'jsonField'}
439
- placeholder="Enter your response as a JSON object..."
440
- fieldIsDisabled={readOnly}
441
- value={currentResponse?.content?.schema?.properties || '{}'}
442
- onChange={(value) => {
443
- const currentResIndex = method.responses.findIndex(
444
- (res) => res.code === currentResponse.code
445
- )
446
- if (currentResIndex !== -1) {
447
- setFieldValue(
448
- `responses[${currentResIndex}].content.schema.properties`,
449
- value
450
- )
451
- } else {
452
- const clonedResponses = structuredClone(method.responses)
453
-
454
- clonedResponses.push({
455
- code: selectedStatusCode.value.toString(),
456
- content: {
457
- contentType: 'application/json',
458
- schema: {
459
- type: 'object',
460
- properties: value,
461
- },
462
- },
463
- })
464
-
465
- setFieldValue('responses', clonedResponses)
466
- }
467
- }}
468
- onValidation={(valid) => null}
469
- />
470
- }
471
- />
472
- </div>
473
- }
474
- />
475
- <CommonDialog
476
- status="error"
477
- content={
478
- <p
479
- style={{
480
- textAlign: 'center',
481
- fontWeight: 400,
482
- fontSize: '1rem',
483
- lineHeight: '1.4375rem',
484
- }}
485
- className="delete-msg-container"
486
- >
487
- Are you sure you want to delete
488
- <span className="plan-name">
489
- {' '}
490
- Parameter <strong>{selectedParamName}</strong>
491
- </span>
492
- ?
493
- </p>
494
- }
495
- onSubmit={{
496
- onClick: confirmDeleteParameter,
497
- text: 'Delete',
498
- color: 'error',
499
- fullWidth: true,
500
- }}
501
- onCancel={{
502
- text: 'Cancel',
503
- color: 'normal',
504
- fullWidth: true,
505
- }}
506
- onClose={() => setOpenDeleteDialog(false)}
507
- open={openDeleteDialog}
508
- icon={<SVGLoader src={deleteOutlinedIcon} width="4.0625rem" height="4.0625rem" />}
509
- />
510
- </div>
511
- )
512
- }
513
-
514
- export default MethodsAccordion
1
+ import { useEffect, useRef, useState } from 'react'
2
+ import {
3
+ Accordion,
4
+ Button,
5
+ Input,
6
+ SelectGroup,
7
+ SelectGroupV2,
8
+ Switch,
9
+ TextArea,
10
+ } from 'digitinary-ui'
11
+ import SVGLoader from '../../components/SVGLoader/SVGLoader'
12
+ import { DeleteIcon, DownArrowIcon, EditIcon, DeleteOutlinedIcon } from '../../assets/icons'
13
+ import PlusIcon from '../../assets/icons/Plus.svg'
14
+ import PlusSquare from '../../assets/icons/PlusSquare.svg'
15
+ import { httpStatusCodes, methodColorMapping, paramsTableHeaders } from '../../constants/index'
16
+ import Tooltip from '../../components/Tooltip/Tooltip'
17
+ import { TransformedMethod } from '../../types/layout.type'
18
+ import SimpleLabelValue from '../../components/SimpleLabelValue'
19
+ import { capitalize, handleStatusColor } from '../../helpers/methodAccordion.helper'
20
+ import ParamterTable from '../table/table'
21
+ import CommonDialog from '../../components/dialog'
22
+ import JsonInput from '../../components/JsonInput/JsonInput'
23
+ import styles from './MethodAccordion.module.scss'
24
+ import { Tags } from '@entities/openApi'
25
+ import regex from '../../constants/regex'
26
+
27
+ const httpStatusCodeOptions = httpStatusCodes.map((code) => ({
28
+ label: (
29
+ <div className={styles.statusCodeOptionContainer}>
30
+ <div
31
+ className={styles.statusCodeOptionCircle}
32
+ style={{ backgroundColor: handleStatusColor(code) }}
33
+ ></div>
34
+ <span>{code}</span>
35
+ </div>
36
+ ),
37
+ value: code,
38
+ }))
39
+
40
+ const MethodsAccordion = ({
41
+ method,
42
+ path,
43
+ setFieldValue,
44
+ readOnly,
45
+ tags,
46
+ isOpen,
47
+ setIsOpen,
48
+ errors,
49
+ }: {
50
+ method: TransformedMethod
51
+ path: string
52
+ setFieldValue?: (key: string, value: string | string[]) => void
53
+ readOnly?: boolean
54
+ tags: Tags[]
55
+ isOpen: boolean
56
+ setIsOpen: (open: boolean) => void
57
+ errors?: string
58
+ }) => {
59
+ const [isExpanded, setIsExpanded] = useState({
60
+ request: false,
61
+ response: false,
62
+ method: false,
63
+ })
64
+ const [isFormOpen, setIsFormOpen] = useState<'Req' | 'Res'>(undefined)
65
+ const [tooltipRefs, setTooltipRefs] = useState<{ [key: number]: any }>({})
66
+ const [tableData, setTableData] = useState([])
67
+ const [openDeleteDialog, setOpenDeleteDialog] = useState(false)
68
+ const [selectedParamIndex, setSelectedParamIndex] = useState<number | null>(null)
69
+ const [selectedParamName, setSelectedParamName] = useState<string | null>(null)
70
+ const [tableRecords, setTableRecords] = useState()
71
+ const [tableResponseRecords, setTableResponseRecords] = useState()
72
+ const [selectionTags, setSelectionTags] = useState([])
73
+ const [selectedStatusCode, setSelectedStatusCode] = useState(httpStatusCodeOptions[4])
74
+ const [enumFields, setEnumFields] = useState([])
75
+ const [tooltipEnumRef, setTooltipEnumRef] = useState(null)
76
+ const currentResponse =
77
+ method.responses.find((res) => Number(res.code) === selectedStatusCode.value) || '{}'
78
+
79
+ const onTableChange = (key, value, index) => {
80
+ const newTableData = tableData.map((item, tIndex) => {
81
+ if (tIndex === index) {
82
+ return { ...item, [key]: value }
83
+ } else {
84
+ return item
85
+ }
86
+ })
87
+
88
+ setTableData(newTableData)
89
+ }
90
+
91
+ const generateTableData = (items, isForRequest?: boolean) => {
92
+ const data = isForRequest
93
+ ? items.filter((item) => item.in && item.in.toLowerCase() != 'header')
94
+ : items.filter((item) => item.in && item.in.toLowerCase() == 'header')
95
+ return data.map((item, index) => {
96
+ return {
97
+ id: index,
98
+ paramName: item.name,
99
+ paramType: capitalize(item.in),
100
+ schemaType: capitalize(item.schema?.type) || '',
101
+ required: (
102
+ <>
103
+ {readOnly ? (
104
+ item.required ? (
105
+ 'True'
106
+ ) : (
107
+ 'False'
108
+ )
109
+ ) : (
110
+ <Switch
111
+ checked={item.required}
112
+ onClick={() => {
113
+ if (readOnly) {
114
+ return null
115
+ }
116
+ onTableChange('required', !item.required, index)
117
+ setFieldValue(`parameters[${index}][required]`, !item.required)
118
+ }}
119
+ />
120
+ )}
121
+ </>
122
+ ),
123
+ description: (
124
+ <div className={styles.paramDescContainer}>
125
+ <Tooltip
126
+ key={`${index}-description`}
127
+ allowHTML
128
+ disabled={method.parameters[index].description?.length <= 12}
129
+ content={
130
+ <div style={{ padding: '0.625rem' }}>{method.parameters[index].description}</div>
131
+ }
132
+ arrowWithBorder
133
+ placement="bottom-end"
134
+ type="function"
135
+ delay={[0, 0]}
136
+ onShow={() => tooltipRefs[index]?.hide()}
137
+ >
138
+ <p style={{ alignSelf: 'center' }}>
139
+ {method.parameters[index].description
140
+ ? method.parameters[index].description.substring(0, 12)
141
+ : readOnly && '-'}
142
+ {method.parameters[index].description &&
143
+ method.parameters[index].description.length > 12
144
+ ? '...'
145
+ : ''}
146
+ </p>
147
+ </Tooltip>
148
+ {!readOnly && (
149
+ <Tooltip
150
+ key={`${index}-add-edit-description`}
151
+ allowHTML
152
+ arrowWithBorder
153
+ placement="bottom-end"
154
+ type="function"
155
+ trigger="click"
156
+ delay={[0, 0]}
157
+ onCreate={(instance) =>
158
+ setTooltipRefs((prev) => ({
159
+ ...prev,
160
+ [index]: instance,
161
+ }))
162
+ }
163
+ content={
164
+ <div className={styles.editDescTooltipContent}>
165
+ <p className={styles.editDescTooltipContent_header}>Description</p>
166
+ <TextArea
167
+ placeholder="Describe parameter..."
168
+ value={item.description}
169
+ disabled={readOnly}
170
+ maxLength={120}
171
+ onChange={(value) => {
172
+ if (value === '' || regex.ASCII.test(value))
173
+ onTableChange('description', value, index)
174
+ }}
175
+ />
176
+ {!readOnly && (
177
+ <Button
178
+ className={styles.editDescTooltipContent_btn}
179
+ variant="outlined"
180
+ size="small"
181
+ onClick={() => {
182
+ setFieldValue(
183
+ `parameters[${index}].description`,
184
+ item.description?.trim()
185
+ )
186
+ tooltipRefs[index]?.hide()
187
+ }}
188
+ disabled={!item.description?.trim()}
189
+ >
190
+ Apply
191
+ </Button>
192
+ )}
193
+ </div>
194
+ }
195
+ >
196
+ {readOnly || method.parameters[index].description?.length > 0 ? (
197
+ <Button
198
+ className={styles.editDescBtn}
199
+ variant="link"
200
+ color="action"
201
+ endIcon={<SVGLoader src={EditIcon} width="1.5rem" height="1.5rem" />}
202
+ ></Button>
203
+ ) : (
204
+ <Button
205
+ className={styles.editDescBtn}
206
+ variant="link"
207
+ color="action"
208
+ endIcon={<SVGLoader src={EditIcon} width="1.5rem" height="1.5rem" />}
209
+ >
210
+ {readOnly ? 'View ' : 'Add '} Description
211
+ </Button>
212
+ )}
213
+ </Tooltip>
214
+ )}
215
+
216
+ {!readOnly && <div className={styles.paramDescContainer_separator}></div>}
217
+
218
+ {!readOnly && (
219
+ <Button
220
+ className={styles.deleteParamBtn}
221
+ variant="link"
222
+ color="error"
223
+ endIcon={<SVGLoader src={DeleteIcon} width="1.125rem" height="1.125rem" />}
224
+ onClick={() => handleDeleteClick(index, item.name)}
225
+ ></Button>
226
+ )}
227
+ </div>
228
+ ),
229
+ enum: (
230
+ <>
231
+ {readOnly ? (
232
+ item?.schema?.enum?.join(' / ')
233
+ ) : (
234
+ <div data-id="TEXT_DESCRIPTION" className="tableData">
235
+ {method.parameters[index]?.schema &&
236
+ method.parameters[index]?.schema?.type?.toLowerCase() != 'array' &&
237
+ method.parameters[index]?.schema?.type?.toLowerCase() != 'object' ? (
238
+ <Tooltip
239
+ disabled={
240
+ method.parameters[index]?.schema?.type?.toLowerCase() == 'array' ||
241
+ method.parameters[index]?.schema?.type?.toLowerCase() == 'object'
242
+ }
243
+ arrowWithBorder
244
+ placement="bottom-end"
245
+ type="function"
246
+ trigger="click"
247
+ delay={[0, 0]}
248
+ onCreate={(instance) => setTooltipEnumRef(instance)}
249
+ content={
250
+ <div className={styles.editDescTooltipContent}>
251
+ <p className={styles.editDescTooltipContent_header}>Enum</p>
252
+ {!!method.parameters[index]?.schema?.enum &&
253
+ !!method.parameters[index]?.schema?.enum.length &&
254
+ method.parameters[index]?.schema?.enum?.map((item, _index) => (
255
+ <Input
256
+ key={index}
257
+ className={'methodDescForEnum'}
258
+ required
259
+ clearable={false}
260
+ placeholder="Enter Enum value..."
261
+ value={item}
262
+ onChange={(value) => {
263
+ setFieldValue(`parameters[${index}].schema.enum[${_index}]`, value)
264
+ }}
265
+ />
266
+ ))}
267
+ <p
268
+ className={'addEnumButton'}
269
+ onClick={() => {
270
+ setFieldValue(`parameters[${index}].schema.enum`, [
271
+ ...method.parameters[index]?.schema?.enum,
272
+ '',
273
+ ])
274
+ }}
275
+ >
276
+ <SVGLoader src={PlusSquare} />
277
+ Add New Enum
278
+ </p>
279
+ {!readOnly && (
280
+ <Button
281
+ className={styles.editDescTooltipContent_btn}
282
+ variant="outlined"
283
+ size="small"
284
+ type="button"
285
+ onClick={() => {
286
+ setFieldValue(`parameters[${index}].schema.enum`, [
287
+ ...method.parameters[index].schema.enum,
288
+ ])
289
+ setEnumFields([])
290
+ tooltipEnumRef?.hide()
291
+ }}
292
+ disabled={
293
+ (enumFields.length > 0 &&
294
+ enumFields?.filter((item) => !item).length) ||
295
+ (method?.parameters[index]?.schema?.enum &&
296
+ method?.parameters[index]?.schema?.enum?.length > 0 &&
297
+ method?.parameters[index]?.schema?.enum?.filter((item) => !item).length)
298
+ }
299
+ >
300
+ Apply
301
+ </Button>
302
+ )}
303
+ </div>
304
+ }
305
+ >
306
+ <Button
307
+ className={styles.editDescBtn}
308
+ id="EnumButton"
309
+ variant="link"
310
+ color="action"
311
+ endIcon={
312
+ <SVGLoader id="enumIcon" src={PlusIcon} width="1.5rem" height="1.5rem" />
313
+ }
314
+ >
315
+ Add
316
+ </Button>
317
+ </Tooltip>
318
+ ) : (
319
+ '-'
320
+ )}{' '}
321
+ </div>
322
+ )}
323
+ </>
324
+ ),
325
+ }
326
+ })
327
+ }
328
+
329
+ const confirmDeleteParameter = () => {
330
+ if (selectedParamIndex !== null) {
331
+ setTableData((prev) => prev.filter((_, i) => i !== selectedParamIndex))
332
+ setFieldValue(
333
+ `parameters`,
334
+ method?.parameters?.filter((_, i) => i !== selectedParamIndex)
335
+ )
336
+ }
337
+ setOpenDeleteDialog(false)
338
+ setSelectedParamIndex(null)
339
+ }
340
+
341
+ const handleDeleteClick = (id: number, name: string) => {
342
+ setSelectedParamIndex(id)
343
+ setSelectedParamName(name)
344
+
345
+ setOpenDeleteDialog(true)
346
+ }
347
+
348
+ const saveNewRow = (values) => {
349
+ setTableData([...tableData, values])
350
+ setFieldValue(`parameters`, [...method.parameters, values])
351
+ }
352
+
353
+ useEffect(() => {
354
+ setTableRecords(generateTableData(tableData, true))
355
+ setTableResponseRecords(generateTableData(tableData, false))
356
+ }, [tableData])
357
+
358
+ useEffect(() => {
359
+ if (method?.parameters) {
360
+ setTableData(method.parameters)
361
+ }
362
+ }, [method, path])
363
+
364
+ useEffect(() => {
365
+ // prepare tags selection list
366
+ if (method?.tags.length || tags?.length) {
367
+ const convertedStringArray = (method?.tags || [])?.map((item) => ({
368
+ label: capitalize(item),
369
+ value: item,
370
+ }))
371
+ const mergedArray = [
372
+ ...convertedStringArray,
373
+ ...(tags || []).map((item) => ({ label: capitalize(item.name), value: item.name })),
374
+ ]
375
+
376
+ const filteredArray = mergedArray.filter(
377
+ (value, index, self) => index === self.findIndex((t) => t.value === value.value)
378
+ )
379
+
380
+ setSelectionTags(filteredArray)
381
+ }
382
+ }, [tags, method])
383
+
384
+ return (
385
+ <div>
386
+ <Accordion
387
+ expanded={isOpen}
388
+ onChange={() => setIsOpen(!isOpen)}
389
+ className={`${styles.methodAccordion} ${readOnly ? styles.readOnly : ''}`}
390
+ summary={
391
+ <div className={styles.methodSummaryContainer}>
392
+ <div className={styles.methodSummary}>
393
+ <span
394
+ style={{
395
+ backgroundColor: methodColorMapping?.[method?.type]?.color || '#3A6CD1',
396
+ }}
397
+ className={styles.methodLabel}
398
+ >
399
+ {methodColorMapping?.[method?.type]?.label || method?.type}
400
+ </span>
401
+ <span className={styles.methodPath}>{path}</span>
402
+ </div>
403
+ <div
404
+ className={`${styles.methodExpandArrowContainer} ${isOpen ? styles.expanded : ''}`}
405
+ >
406
+ <SVGLoader src={DownArrowIcon} width="2rem" height="2rem" />
407
+ </div>
408
+ </div>
409
+ }
410
+ children={
411
+ <div className={styles.methodAccordionContent}>
412
+ {!readOnly ? (
413
+ <Input
414
+ className={styles.methodDesc}
415
+ label="Endpoint Name"
416
+ required
417
+ placeholder="Endpoint name..."
418
+ value={method?.summary}
419
+ onChange={(value) => {
420
+ value = value || ''
421
+ if (value === '' || regex.ASCII.test(value)) {
422
+ setFieldValue('summary', value)
423
+ }
424
+ }}
425
+ onClear={() => {
426
+ setFieldValue('summary', '')
427
+ }}
428
+ errorMsg={errors?.summary}
429
+ />
430
+ ) : (
431
+ <SimpleLabelValue
432
+ key={'summary'}
433
+ label={'Endpoint Name: '}
434
+ value={method?.summary || '-'}
435
+ />
436
+ )}
437
+ <SelectGroup
438
+ className={styles.methodDesc}
439
+ disabled={readOnly}
440
+ placeholder="Select Tags"
441
+ label="Tags"
442
+ value={method.tags?.map((t) => ({
443
+ label: capitalize(t),
444
+ value: t,
445
+ }))}
446
+ onChange={(item) => {
447
+ setFieldValue(
448
+ 'tags',
449
+ item.map((i) => i.value)
450
+ )
451
+ }}
452
+ options={[
453
+ {
454
+ list: selectionTags,
455
+ },
456
+ ]}
457
+ isMultiple={true}
458
+ withSearch={false}
459
+ clearable={false}
460
+ />
461
+ {!readOnly ? (
462
+ <TextArea
463
+ className={styles.methodDesc}
464
+ label="Description"
465
+ placeholder="Describe the method's purpose and functionality..."
466
+ maxLength={120}
467
+ value={method?.description}
468
+ onChange={(value) => {
469
+ if (value === '' || regex.ASCII.test(value)) setFieldValue('description', value)
470
+ }}
471
+ />
472
+ ) : (
473
+ <SimpleLabelValue
474
+ key={'description'}
475
+ label={'Description: '}
476
+ value={method?.description || '-'}
477
+ />
478
+ )}
479
+ <div className={styles.paramsTable}>
480
+ <h4 className={styles.paramsTableBodyHead}>Request Details</h4>
481
+ <ParamterTable
482
+ id="paramter-request-table"
483
+ data={tableRecords}
484
+ headCells={paramsTableHeaders}
485
+ isFormOpen={isFormOpen && isFormOpen == 'Req'}
486
+ setIsFormOpen={setIsFormOpen}
487
+ saveNewRow={saveNewRow}
488
+ readOnly={readOnly}
489
+ isRequest={true}
490
+ />
491
+ {method?.type !== 'get' && method?.type !== 'delete' && (
492
+ <Accordion
493
+ expanded={isExpanded.request}
494
+ onChange={() => null}
495
+ className={styles.requestAccordion}
496
+ summary={
497
+ <span className={styles.requestAccordionSummary}>
498
+ <div
499
+ className={styles.requestAccordionSummary_title}
500
+ onClick={() =>
501
+ setIsExpanded((prev) => ({
502
+ ...prev,
503
+ request: !prev.request,
504
+ }))
505
+ }
506
+ >
507
+ <SVGLoader
508
+ className={isExpanded.request ? styles.expanded : ''}
509
+ src={DownArrowIcon}
510
+ width="2rem"
511
+ height="2rem"
512
+ />
513
+ Request
514
+ {method?.type !== 'delete' && <span style={{ color: 'red' }}>*</span>}
515
+ </div>
516
+ </span>
517
+ }
518
+ children={
519
+ <JsonInput
520
+ acceptType="JSON"
521
+ withFooter={!readOnly}
522
+ className={'jsonField'}
523
+ placeholder="Enter your request body as a JSON object...."
524
+ fieldIsDisabled={readOnly}
525
+ value={method?.requestBody?.content?.schema?.properties || '{}'}
526
+ onChange={(value: string) => {
527
+ setFieldValue('requestBody.content.schema.properties', value)
528
+ }}
529
+ onValidation={() => null}
530
+ />
531
+ }
532
+ />
533
+ )}
534
+ </div>
535
+ <div className={styles.paramsTable}>
536
+ <div className={styles.responseHeader}>
537
+ <h4 className={styles.paramsTableBodyHead}>Response Details</h4>
538
+ <SelectGroup
539
+ withSearch={false}
540
+ isMultiple={false}
541
+ clearable={false}
542
+ placeholder="200"
543
+ options={[
544
+ {
545
+ list: httpStatusCodeOptions,
546
+ },
547
+ ]}
548
+ value={selectedStatusCode}
549
+ onChange={(value) => {
550
+ setSelectedStatusCode(value)
551
+ }}
552
+ />
553
+ </div>
554
+ <ParamterTable
555
+ id="paramter-response-table"
556
+ data={tableResponseRecords}
557
+ headCells={paramsTableHeaders}
558
+ isFormOpen={isFormOpen && isFormOpen == 'Res'}
559
+ setIsFormOpen={setIsFormOpen}
560
+ saveNewRow={saveNewRow}
561
+ readOnly={readOnly}
562
+ isRequest={false}
563
+ />
564
+ <Accordion
565
+ expanded={isExpanded.response}
566
+ onChange={() => null}
567
+ className={styles.responseAccordion}
568
+ summary={
569
+ <span className={styles.responseAccordionSummary}>
570
+ <div
571
+ className={styles.responseAccordionSummary_title}
572
+ onClick={() =>
573
+ setIsExpanded((prev) => ({
574
+ ...prev,
575
+ response: !prev.response,
576
+ }))
577
+ }
578
+ >
579
+ <SVGLoader
580
+ className={isExpanded.response ? styles.expanded : ''}
581
+ src={DownArrowIcon}
582
+ width="2rem"
583
+ height="2rem"
584
+ />
585
+ Response<span style={{ color: 'red' }}>*</span>
586
+ </div>
587
+ </span>
588
+ }
589
+ children={
590
+ <JsonInput
591
+ acceptType="JSON"
592
+ withFooter={!readOnly}
593
+ className={'jsonField'}
594
+ placeholder="Enter your response as a JSON object..."
595
+ fieldIsDisabled={readOnly}
596
+ value={currentResponse?.content?.schema?.properties || '{}'}
597
+ onChange={(value) => {
598
+ const currentResIndex = method.responses.findIndex(
599
+ (res) => res.code === currentResponse.code
600
+ )
601
+ if (currentResIndex !== -1) {
602
+ setFieldValue(
603
+ `responses[${currentResIndex}].content.schema.properties`,
604
+ value
605
+ )
606
+ } else {
607
+ const clonedResponses = structuredClone(method.responses)
608
+
609
+ clonedResponses.push({
610
+ code: selectedStatusCode.value.toString(),
611
+ content: {
612
+ contentType: 'application/json',
613
+ schema: {
614
+ type: 'object',
615
+ properties: value,
616
+ },
617
+ },
618
+ })
619
+
620
+ setFieldValue('responses', clonedResponses)
621
+ }
622
+ }}
623
+ onValidation={(valid) => null}
624
+ />
625
+ }
626
+ />
627
+ </div>
628
+ </div>
629
+ }
630
+ />
631
+ <CommonDialog
632
+ status="error"
633
+ content={
634
+ <p
635
+ style={{
636
+ textAlign: 'center',
637
+ fontWeight: 400,
638
+ fontSize: '1rem',
639
+ lineHeight: '1.4375rem',
640
+ }}
641
+ className="delete-msg-container"
642
+ >
643
+ Are you sure you want to delete
644
+ <span className="plan-name">
645
+ {' '}
646
+ Parameter <strong>{selectedParamName}</strong>
647
+ </span>
648
+ ?
649
+ </p>
650
+ }
651
+ onSubmit={{
652
+ onClick: confirmDeleteParameter,
653
+ text: 'Delete',
654
+ color: 'error',
655
+ fullWidth: true,
656
+ }}
657
+ onCancel={{
658
+ text: 'Cancel',
659
+ color: 'normal',
660
+ fullWidth: true,
661
+ }}
662
+ onClose={() => setOpenDeleteDialog(false)}
663
+ open={openDeleteDialog}
664
+ icon={<SVGLoader src={DeleteOutlinedIcon} width="4.0625rem" height="4.0625rem" />}
665
+ />
666
+ </div>
667
+ )
668
+ }
669
+
670
+ export default MethodsAccordion