@digi-frontend/dgate-api-documentation 1.1.12 → 1.3.0

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 (240) hide show
  1. package/.editorconfig +13 -0
  2. package/.prettierignore +8 -0
  3. package/.prettierrc +15 -0
  4. package/dist/_virtual/index4.js +1 -1
  5. package/dist/_virtual/index5.js +1 -1
  6. package/dist/_virtual/index6.js +1 -1
  7. package/dist/_virtual/index7.js +1 -1
  8. package/dist/node_modules/@popperjs/core/lib/createPopper.js +1 -1
  9. package/dist/node_modules/@popperjs/core/lib/createPopper.js.map +1 -1
  10. package/dist/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js +1 -1
  11. package/dist/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js.map +1 -1
  12. package/dist/node_modules/@popperjs/core/lib/enums.js +1 -1
  13. package/dist/node_modules/@popperjs/core/lib/enums.js.map +1 -1
  14. package/dist/node_modules/@popperjs/core/lib/modifiers/applyStyles.js +1 -1
  15. package/dist/node_modules/@popperjs/core/lib/modifiers/applyStyles.js.map +1 -1
  16. package/dist/node_modules/@popperjs/core/lib/modifiers/eventListeners.js +1 -1
  17. package/dist/node_modules/@popperjs/core/lib/modifiers/eventListeners.js.map +1 -1
  18. package/dist/node_modules/@popperjs/core/lib/modifiers/flip.js +1 -1
  19. package/dist/node_modules/@popperjs/core/lib/modifiers/flip.js.map +1 -1
  20. package/dist/node_modules/@popperjs/core/lib/modifiers/hide.js +1 -1
  21. package/dist/node_modules/@popperjs/core/lib/modifiers/hide.js.map +1 -1
  22. package/dist/node_modules/@popperjs/core/lib/modifiers/offset.js +1 -1
  23. package/dist/node_modules/@popperjs/core/lib/modifiers/offset.js.map +1 -1
  24. package/dist/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js +1 -1
  25. package/dist/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js.map +1 -1
  26. package/dist/node_modules/@popperjs/core/lib/utils/debounce.js +1 -1
  27. package/dist/node_modules/@popperjs/core/lib/utils/debounce.js.map +1 -1
  28. package/dist/node_modules/@popperjs/core/lib/utils/detectOverflow.js +1 -1
  29. package/dist/node_modules/@popperjs/core/lib/utils/detectOverflow.js.map +1 -1
  30. package/dist/node_modules/@popperjs/core/lib/utils/expandToHashMap.js +1 -1
  31. package/dist/node_modules/@popperjs/core/lib/utils/expandToHashMap.js.map +1 -1
  32. package/dist/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js +1 -1
  33. package/dist/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js.map +1 -1
  34. package/dist/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js +1 -1
  35. package/dist/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js.map +1 -1
  36. package/dist/node_modules/@popperjs/core/lib/utils/mergeByName.js +1 -1
  37. package/dist/node_modules/@popperjs/core/lib/utils/mergeByName.js.map +1 -1
  38. package/dist/node_modules/@popperjs/core/lib/utils/orderModifiers.js +1 -1
  39. package/dist/node_modules/@popperjs/core/lib/utils/orderModifiers.js.map +1 -1
  40. package/dist/node_modules/@popperjs/core/lib/utils/userAgent.js +1 -1
  41. package/dist/node_modules/@popperjs/core/lib/utils/userAgent.js.map +1 -1
  42. package/dist/node_modules/@tippyjs/react/dist/tippy-react.esm.js +1 -1
  43. package/dist/node_modules/@tippyjs/react/dist/tippy-react.esm.js.map +1 -1
  44. package/dist/node_modules/digitinary-ui/dist/index.js +1 -1
  45. package/dist/node_modules/digitinary-ui/dist/index.js.map +1 -1
  46. package/dist/node_modules/dom-serializer/lib/foreignNames.js +1 -1
  47. package/dist/node_modules/dom-serializer/lib/foreignNames.js.map +1 -1
  48. package/dist/node_modules/dom-serializer/lib/index.js +1 -1
  49. package/dist/node_modules/dom-serializer/lib/index.js.map +1 -1
  50. package/dist/node_modules/dom-serializer/node_modules/entities/lib/decode.js +1 -1
  51. package/dist/node_modules/dom-serializer/node_modules/entities/lib/decode.js.map +1 -1
  52. package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-html.js +1 -1
  53. package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-html.js.map +1 -1
  54. package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-xml.js +1 -1
  55. package/dist/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-xml.js.map +1 -1
  56. package/dist/node_modules/domhandler/lib/node.js +1 -1
  57. package/dist/node_modules/domhandler/lib/node.js.map +1 -1
  58. package/dist/node_modules/domutils/lib/feeds.js +1 -1
  59. package/dist/node_modules/domutils/lib/feeds.js.map +1 -1
  60. package/dist/node_modules/domutils/lib/helpers.js +1 -1
  61. package/dist/node_modules/domutils/lib/helpers.js.map +1 -1
  62. package/dist/node_modules/domutils/lib/legacy.js +1 -1
  63. package/dist/node_modules/domutils/lib/legacy.js.map +1 -1
  64. package/dist/node_modules/domutils/lib/querying.js +1 -1
  65. package/dist/node_modules/domutils/lib/querying.js.map +1 -1
  66. package/dist/node_modules/domutils/lib/stringify.js +1 -1
  67. package/dist/node_modules/domutils/lib/stringify.js.map +1 -1
  68. package/dist/node_modules/entities/dist/commonjs/decode.js +1 -1
  69. package/dist/node_modules/entities/dist/commonjs/decode.js.map +1 -1
  70. package/dist/node_modules/entities/dist/commonjs/generated/decode-data-html.js +1 -1
  71. package/dist/node_modules/entities/dist/commonjs/generated/decode-data-html.js.map +1 -1
  72. package/dist/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +1 -1
  73. package/dist/node_modules/entities/dist/commonjs/generated/decode-data-xml.js.map +1 -1
  74. package/dist/node_modules/formik/dist/formik.esm.js +1 -1
  75. package/dist/node_modules/formik/dist/formik.esm.js.map +1 -1
  76. package/dist/node_modules/formik/node_modules/deepmerge/dist/es.js +1 -1
  77. package/dist/node_modules/formik/node_modules/deepmerge/dist/es.js.map +1 -1
  78. package/dist/node_modules/highlight.js/lib/core.js +1 -1
  79. package/dist/node_modules/highlight.js/lib/core.js.map +1 -1
  80. package/dist/node_modules/highlight.js/lib/languages/json.js +1 -1
  81. package/dist/node_modules/highlight.js/lib/languages/json.js.map +1 -1
  82. package/dist/node_modules/html-react-parser/lib/utilities.js.map +1 -1
  83. package/dist/node_modules/htmlparser2/dist/commonjs/Tokenizer.js +1 -1
  84. package/dist/node_modules/htmlparser2/dist/commonjs/Tokenizer.js.map +1 -1
  85. package/dist/node_modules/htmlparser2/dist/commonjs/index.js +1 -1
  86. package/dist/node_modules/htmlparser2/dist/commonjs/index.js.map +1 -1
  87. package/dist/node_modules/js-yaml/dist/js-yaml.mjs.js +1 -1
  88. package/dist/node_modules/js-yaml/dist/js-yaml.mjs.js.map +1 -1
  89. package/dist/node_modules/lodash-es/_baseClone.js +1 -1
  90. package/dist/node_modules/lodash-es/_baseClone.js.map +1 -1
  91. package/dist/node_modules/lodash-es/_getSymbols.js +1 -1
  92. package/dist/node_modules/lodash-es/_getSymbols.js.map +1 -1
  93. package/dist/node_modules/lodash-es/_memoizeCapped.js +1 -1
  94. package/dist/node_modules/lodash-es/_memoizeCapped.js.map +1 -1
  95. package/dist/node_modules/lodash-es/_stringToPath.js +1 -1
  96. package/dist/node_modules/lodash-es/_stringToPath.js.map +1 -1
  97. package/dist/node_modules/property-expr/index.js +1 -1
  98. package/dist/node_modules/property-expr/index.js.map +1 -1
  99. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js +1 -1
  100. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -1
  101. package/dist/node_modules/react-property/lib/index.js +1 -1
  102. package/dist/node_modules/react-property/lib/index.js.map +1 -1
  103. package/dist/node_modules/react-syntax-highlighter/dist/esm/create-element.js +1 -1
  104. package/dist/node_modules/react-syntax-highlighter/dist/esm/create-element.js.map +1 -1
  105. package/dist/node_modules/react-syntax-highlighter/dist/esm/highlight.js +1 -1
  106. package/dist/node_modules/react-syntax-highlighter/dist/esm/highlight.js.map +1 -1
  107. package/dist/node_modules/react-toastify/dist/index.mjs.js +1 -1
  108. package/dist/node_modules/react-toastify/dist/index.mjs.js.map +1 -1
  109. package/dist/node_modules/style-to-js/cjs/index.js +1 -1
  110. package/dist/node_modules/style-to-js/cjs/index.js.map +1 -1
  111. package/dist/node_modules/style-to-object/cjs/index.js +1 -1
  112. package/dist/node_modules/style-to-object/cjs/index.js.map +1 -1
  113. package/dist/node_modules/tiny-case/index.js +1 -1
  114. package/dist/node_modules/tiny-case/index.js.map +1 -1
  115. package/dist/node_modules/tippy.js/dist/tippy.esm.js +1 -1
  116. package/dist/node_modules/tippy.js/dist/tippy.esm.js.map +1 -1
  117. package/dist/node_modules/toposort/index.js +1 -1
  118. package/dist/node_modules/toposort/index.js.map +1 -1
  119. package/dist/node_modules/tslib/tslib.es6.js +1 -1
  120. package/dist/node_modules/tslib/tslib.es6.js.map +1 -1
  121. package/dist/node_modules/yup/index.esm.js +1 -1
  122. package/dist/node_modules/yup/index.esm.js.map +1 -1
  123. package/dist/src/components/InfoForm/InfoForm.js +1 -1
  124. package/dist/src/components/InfoForm/InfoForm.js.map +1 -1
  125. package/dist/src/components/JsonInput/JsonInput.js +1 -1
  126. package/dist/src/components/JsonInput/JsonInput.js.map +1 -1
  127. package/dist/src/components/LivePreview/LivePreview.js +1 -1
  128. package/dist/src/components/LivePreview/LivePreview.js.map +1 -1
  129. package/dist/src/components/MethodAccordion/MethodAccordion.js +1 -1
  130. package/dist/src/components/MethodAccordion/MethodAccordion.js.map +1 -1
  131. package/dist/src/components/SVGLoader/SVGLoader.js +1 -1
  132. package/dist/src/components/SVGLoader/SVGLoader.js.map +1 -1
  133. package/dist/src/components/Tooltip/Tooltip.js +1 -1
  134. package/dist/src/components/Tooltip/Tooltip.js.map +1 -1
  135. package/dist/src/components/table/table.js +1 -1
  136. package/dist/src/components/table/table.js.map +1 -1
  137. package/dist/src/components/table/tags-table.js +1 -1
  138. package/dist/src/components/table/tags-table.js.map +1 -1
  139. package/dist/src/constants/methods.constant.js +1 -1
  140. package/dist/src/constants/methods.constant.js.map +1 -1
  141. package/dist/src/context/SectionToggleContext.js +1 -1
  142. package/dist/src/context/SectionToggleContext.js.map +1 -1
  143. package/dist/src/helpers/docs.helper.js +1 -1
  144. package/dist/src/helpers/docs.helper.js.map +1 -1
  145. package/dist/src/helpers/layout.helper.js +1 -1
  146. package/dist/src/helpers/layout.helper.js.map +1 -1
  147. package/dist/src/layout/docsComponents/DocsAside/DocsAside.js +1 -1
  148. package/dist/src/layout/docsComponents/DocsAside/DocsAside.js.map +1 -1
  149. package/dist/src/layout/docsComponents/DocsContent/DocsContent.js +1 -1
  150. package/dist/src/layout/docsComponents/DocsContent/DocsContent.js.map +1 -1
  151. package/dist/src/layout/docsComponents/DocsContent/EndpointPage/index.js +1 -1
  152. package/dist/src/layout/docsComponents/DocsContent/EndpointPage/index.js.map +1 -1
  153. package/dist/src/layout/docsComponents/DocsContent/OverviewPage/index.js +1 -1
  154. package/dist/src/layout/docsComponents/DocsContent/OverviewPage/index.js.map +1 -1
  155. package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.js +1 -1
  156. package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.js.map +1 -1
  157. package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js +1 -1
  158. package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js.map +1 -1
  159. package/dist/src/layout/docsLayout.js +1 -1
  160. package/dist/src/layout/docsLayout.js.map +1 -1
  161. package/dist/src/layout/layout.js +1 -1
  162. package/dist/src/layout/layout.js.map +1 -1
  163. package/dist/src/utils/index.js +1 -1
  164. package/dist/src/utils/index.js.map +1 -1
  165. package/dist/src/validator/form.scheme.js +1 -1
  166. package/dist/src/validator/form.scheme.js.map +1 -1
  167. package/dist/styles.css +773 -773
  168. package/index.ts +2 -0
  169. package/package.json +4 -9
  170. package/rollup.config.js +37 -0
  171. package/src/assets/icons/AddRow.svg +3 -0
  172. package/src/assets/icons/ApiIcon.svg +12 -0
  173. package/src/assets/icons/ArrowBack.svg +3 -0
  174. package/src/assets/icons/BookIcon.svg +6 -0
  175. package/src/assets/icons/CheckMarkSquare.svg +5 -0
  176. package/src/assets/icons/CloseIcon.svg +4 -0
  177. package/src/assets/icons/CopySticker.svg +6 -0
  178. package/src/assets/icons/DeleteIcon.svg +3 -0
  179. package/src/assets/icons/DownArrow.svg +3 -0
  180. package/src/assets/icons/EditIcon.svg +3 -0
  181. package/src/assets/icons/FilterIcon.svg +4 -0
  182. package/src/assets/icons/Plus.svg +5 -0
  183. package/src/assets/icons/PlusSquare.svg +3 -0
  184. package/src/assets/icons/RequestOption.svg +5 -0
  185. package/src/assets/icons/UpArrow.svg +3 -0
  186. package/src/assets/icons/arrow-down.svg +3 -0
  187. package/src/assets/icons/arrow-up.svg +10 -0
  188. package/src/assets/icons/arrowDownGray.svg +3 -0
  189. package/src/assets/icons/arrowRightGray.svg +3 -0
  190. package/src/assets/icons/close-circle.svg +5 -0
  191. package/src/assets/icons/copy.svg +4 -0
  192. package/src/assets/icons/deleteOutlinedIcon.svg +8 -0
  193. package/src/assets/icons/document.svg +6 -0
  194. package/src/assets/icons/eye.svg +4 -0
  195. package/src/assets/icons/index.ts +27 -0
  196. package/src/assets/icons/infoIcon.svg +5 -0
  197. package/src/assets/icons/newCopyIcon.svg +4 -0
  198. package/src/assets/icons/searchIcon.svg +4 -0
  199. package/src/components/Chips/Chips.tsx +87 -0
  200. package/src/components/InfoForm/InfoForm.tsx +432 -0
  201. package/src/components/JsonInput/JsonInput.tsx +149 -0
  202. package/src/components/LivePreview/LivePreview.tsx +224 -0
  203. package/src/components/MethodAccordion/MethodAccordion.tsx +1070 -0
  204. package/src/components/SVGLoader/SVGLoader.tsx +96 -0
  205. package/src/components/SectionHead/SectionHead.tsx +22 -0
  206. package/src/components/SimpleLabelValue/SimpleLabelValue.tsx +31 -0
  207. package/src/components/SimpleLabelValue/index.ts +1 -0
  208. package/src/components/Tooltip/Tooltip.tsx +85 -0
  209. package/src/components/dialog/dialog.ts +61 -0
  210. package/src/components/dialog/index.tsx +88 -0
  211. package/src/components/table/table.tsx +508 -0
  212. package/src/components/table/tags-table.tsx +348 -0
  213. package/src/constants/index.ts +95 -0
  214. package/src/constants/methods.constant.ts +26 -0
  215. package/src/constants/regex.ts +7 -0
  216. package/src/context/SectionToggleContext.tsx +121 -0
  217. package/src/global.d.ts +13 -0
  218. package/src/helpers/docs.helper.ts +42 -0
  219. package/src/helpers/layout.helper.ts +290 -0
  220. package/src/helpers/methodAccordion.helper.ts +20 -0
  221. package/src/index.ts +2 -0
  222. package/src/layout/docsComponents/Codebox/Codebox.tsx +61 -0
  223. package/src/layout/docsComponents/DocsAside/DocsAside.tsx +112 -0
  224. package/src/layout/docsComponents/DocsContent/DocsContent.tsx +51 -0
  225. package/src/layout/docsComponents/DocsContent/EndpointPage/index.tsx +307 -0
  226. package/src/layout/docsComponents/DocsContent/OverviewPage/index.tsx +223 -0
  227. package/src/layout/docsComponents/DocsHeader/DocsHeader.tsx +188 -0
  228. package/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.tsx +229 -0
  229. package/src/layout/docsComponents/index.tsx +28 -0
  230. package/src/layout/docsLayout.tsx +123 -0
  231. package/src/layout/layout.module.css +65 -0
  232. package/src/layout/layout.tsx +177 -0
  233. package/src/types/docsLayout.type.ts +7 -0
  234. package/src/types/index.ts +28 -0
  235. package/src/types/layout.type.ts +32 -0
  236. package/src/types/openApi.ts +109 -0
  237. package/src/types/transformedOpenApi.ts +52 -0
  238. package/src/utils/index.ts +15 -0
  239. package/src/validator/form.scheme.ts +96 -0
  240. package/tsconfig.json +33 -0
@@ -0,0 +1,508 @@
1
+ import React, { useState } from 'react'
2
+ import './style.scss'
3
+ import { Button, Input, SelectGroupV2, Switch, TextArea } from 'digitinary-ui'
4
+ import Tooltip from '../Tooltip/Tooltip'
5
+ import SVGLoader from '../SVGLoader/SVGLoader'
6
+ import { AddRow, EditIcon, DeleteIcon } from '../../assets/icons'
7
+ import PlusIcon from '../../assets/icons/Plus.svg'
8
+ import PlusSquare from '../../assets/icons/PlusSquare.svg'
9
+ import styles from '../MethodAccordion/MethodAccordion.module.scss'
10
+ import { useFormik } from 'formik'
11
+ import * as yup from 'yup'
12
+ import { capitalize } from '../../helpers/methodAccordion.helper'
13
+ import regex from '../../constants/regex'
14
+
15
+ const ParamterTable = ({
16
+ id,
17
+ headCells,
18
+ data,
19
+ isFormOpen,
20
+ setIsFormOpen,
21
+ saveNewRow,
22
+ readOnly,
23
+ isRequest = true,
24
+ }) => {
25
+ const [text, setText] = useState('')
26
+ const [tooltipRef, setTooltipRef] = useState(null)
27
+ const [tooltipEnumRef, setTooltipEnumRef] = useState(null)
28
+ const [enumFields, setEnumFields] = useState<string[]>([])
29
+ const { values, errors, setFieldValue, isValid, submitForm, resetForm } = useFormik({
30
+ validateOnMount: true,
31
+ initialValues: {
32
+ name: '',
33
+ in: isRequest ? 'query' : 'header',
34
+ schema: {
35
+ type: 'string',
36
+ enum: [],
37
+ items: {
38
+ type: 'string',
39
+ },
40
+ },
41
+ required: true,
42
+ description: '',
43
+ },
44
+ validationSchema: yup.object().shape({
45
+ name: yup.string().default('').trim().required('Parameter name is required'),
46
+ in: yup.string().required('Paramter type is required'),
47
+ schema: yup.object().shape({
48
+ type: yup.string().required('Parameter schema type is required'),
49
+ enum: yup.array(yup.string()).optional(),
50
+ items: yup.object().shape({
51
+ type: yup.string().optional(),
52
+ }),
53
+ }),
54
+ required: yup.boolean().when('in', {
55
+ is: 'path',
56
+ then: (schema) => schema.oneOf([true], 'Path parameters must be required.'),
57
+ otherwise: (schema) => schema.optional(),
58
+ }),
59
+ description: yup.string().default('').trim().optional(),
60
+ }),
61
+ onSubmit: (values) => {
62
+ if (values && !values?.schema?.items?.type) {
63
+ delete values?.schema?.items?.type
64
+ }
65
+ saveNewRow(values)
66
+ setIsFormOpen(undefined)
67
+ setText('')
68
+ resetForm()
69
+ },
70
+ })
71
+
72
+ return (
73
+ <div className="tableSectionContainer">
74
+ <div className="tableContainer">
75
+ <table id={id || ''} className={`table borderRadiusTop borderRadiusBottom`}>
76
+ <thead className="tableHead">
77
+ <tr>
78
+ {headCells?.map((headCell) => (
79
+ <th
80
+ key={headCell.id}
81
+ className={`tableHeadCell ${headCell.classes || ''}`}
82
+ style={{ width: headCell.width, minWidth: headCell.minWidth }}
83
+ >
84
+ <div
85
+ className="headContainer"
86
+ data-id={`${
87
+ typeof headCell.label === 'string'
88
+ ? headCell.label.toUpperCase().replace(/[^a-zA-Z0-9]+/g, '_')
89
+ : 'UNKNOWN_LABEL'
90
+ }_COLUMN`}
91
+ >
92
+ {headCell.label}
93
+ </div>
94
+ </th>
95
+ ))}
96
+ </tr>
97
+ </thead>
98
+ <tbody className="tableBody" data-id="TABLE_BODY">
99
+ {data?.map((row, rowIndex) => {
100
+ return (
101
+ <tr key={rowIndex} data-i={rowIndex} className={`row`}>
102
+ {headCells?.map((headCell) => {
103
+ const cellContent = row[headCell.id] !== '_' && (
104
+ <div
105
+ data-id="TEXT_DESCRIPTION"
106
+ className="tableData"
107
+ style={{
108
+ width: headCell.width,
109
+ minWidth: headCell.minWidth,
110
+ }}
111
+ >
112
+ {row[headCell.id]}
113
+ </div>
114
+ )
115
+
116
+ return (
117
+ <td
118
+ key={headCell.id}
119
+ style={{
120
+ width: headCell.width,
121
+ minWidth: headCell.minWidth,
122
+ }}
123
+ >
124
+ {cellContent}
125
+ </td>
126
+ )
127
+ })}
128
+ </tr>
129
+ )
130
+ })}
131
+ {data?.length === 0 && readOnly && (
132
+ <tr className="fallbackTableRow">
133
+ <td className="fallbackContainer" colSpan={headCells?.length}>
134
+ <div className="fallbackTextContainer">
135
+ <span className="fallbackText"> No Data Available</span>
136
+ </div>
137
+ </td>
138
+ </tr>
139
+ )}
140
+
141
+ {isFormOpen && !readOnly ? (
142
+ <tr className={`row`}>
143
+ <td key={'Parameter name'}>
144
+ <div data-id="TEXT_DESCRIPTION" className="tableData">
145
+ <Input
146
+ placeholder="Parameter name"
147
+ size="large"
148
+ type="text"
149
+ onChange={(value) => {
150
+ if (value === '' || regex.ASCII.test(value as string))
151
+ setFieldValue('name', value)
152
+ }}
153
+ value={values.name}
154
+ disabled={readOnly}
155
+ />
156
+ </div>
157
+ </td>
158
+
159
+ <td key={'parameter in'}>
160
+ <div data-id="TEXT_DESCRIPTION" className="tableData">
161
+ <SelectGroupV2
162
+ disabled={readOnly}
163
+ value={{
164
+ label: capitalize(values.in),
165
+ value: values.in,
166
+ }}
167
+ onChange={(item) => {
168
+ setFieldValue('in', item?.value?.toLowerCase())
169
+ if (item?.value == 'in') {
170
+ setFieldValue('required', true)
171
+ }
172
+ }} // Updates state on selection
173
+ options={[
174
+ {
175
+ list: isRequest
176
+ ? [
177
+ { label: 'Query', value: 'query' },
178
+ { label: 'Header', value: 'header' },
179
+ { label: 'Path', value: 'path' },
180
+ ]
181
+ : [{ label: 'Header', value: 'header' }],
182
+ },
183
+ ]}
184
+ errorMsg={!!errors.in && errors.in}
185
+ isMultiple={false}
186
+ withSearch={false}
187
+ clearable={false}
188
+ />{' '}
189
+ </div>
190
+ </td>
191
+
192
+ <td key={'parameter schema type'}>
193
+ <div data-id="TEXT_DESCRIPTION" className="tableData select-inputs">
194
+ <SelectGroupV2
195
+ disabled={readOnly}
196
+ clearable={false}
197
+ value={{
198
+ label: capitalize(values?.schema?.type),
199
+ value: values?.schema?.type,
200
+ }}
201
+ errorMsg={!!errors.schema && errors.schema}
202
+ onChange={(item) => {
203
+ setFieldValue('schema.type', item?.value?.toLowerCase())
204
+ if (item.value?.toLowerCase() == 'array' && !values.schema.items) {
205
+ setFieldValue('schema.items', {})
206
+ }
207
+ if (item.value?.toLowerCase() != 'array' && values.schema.items) {
208
+ const newVal = { ...values.schema }
209
+ delete newVal.items
210
+ setFieldValue('schema', newVal)
211
+ }
212
+ }} // Updates state on selection
213
+ options={[
214
+ {
215
+ list: [
216
+ { label: 'String', value: 'string' },
217
+ { label: 'Integer', value: 'integer' },
218
+ { label: 'Boolean', value: 'boolean' },
219
+ { label: 'Object', value: 'object' },
220
+ { label: 'Array', value: 'array' },
221
+ { label: 'Number', value: 'number' },
222
+ ],
223
+ },
224
+ ]}
225
+ isMultiple={false}
226
+ withSearch={false}
227
+ />{' '}
228
+ {!!values?.schema?.type && values?.schema?.type.toLowerCase() === 'array' ? (
229
+ <SelectGroupV2
230
+ disabled={readOnly}
231
+ clearable={false}
232
+ value={{
233
+ label: capitalize(values?.schema?.items?.type),
234
+ value: values.schema?.items?.type,
235
+ }}
236
+ errorMsg={!!errors?.schema?.items?.type && errors?.schema?.items?.type}
237
+ onChange={(item) => {
238
+ setFieldValue('schema.items.type', item?.value?.toLowerCase())
239
+ if (item.value?.toLowerCase() == 'array' && !values.schema.items?.items) {
240
+ setFieldValue('schema.items.items', {})
241
+ }
242
+ if (item.value?.toLowerCase() != 'array' && values.schema.items?.items) {
243
+ const newVal = { ...values.schema.items }
244
+ delete newVal?.items
245
+ setFieldValue('schema.items', newVal)
246
+ }
247
+ }} // Updates state on selection
248
+ options={[
249
+ {
250
+ list: [
251
+ { label: 'String', value: 'string' },
252
+ { label: 'Integer', value: 'integer' },
253
+ { label: 'Boolean', value: 'boolean' },
254
+ { label: 'Object', value: 'object' },
255
+ { label: 'Array', value: 'array' },
256
+ { label: 'Number', value: 'number' },
257
+ ],
258
+ },
259
+ ]}
260
+ isMultiple={false}
261
+ withSearch={false}
262
+ />
263
+ ) : (
264
+ ''
265
+ )}
266
+ </div>
267
+ </td>
268
+
269
+ <td key={'parameter enum'}>
270
+ <div data-id="TEXT_DESCRIPTION" className="tableData">
271
+ <Tooltip
272
+ disabled={
273
+ values?.schema?.type?.toLowerCase() == 'array' ||
274
+ values?.schema?.type?.toLowerCase() == 'object'
275
+ }
276
+ arrowWithBorder
277
+ placement="bottom-end"
278
+ type="function"
279
+ trigger="click"
280
+ delay={[0, 0]}
281
+ onCreate={(instance) => setTooltipEnumRef(instance)}
282
+ content={
283
+ <div className={styles.editDescTooltipContent}>
284
+ <p className={styles.editDescTooltipContent_header}>Enum</p>
285
+ {!!values?.schema?.enum &&
286
+ !!values?.schema?.enum.length &&
287
+ values?.schema?.enum?.map((item, index) => (
288
+ <Input
289
+ key={index}
290
+ className={'methodDescForEnum'}
291
+ required
292
+ clearable={false}
293
+ placeholder="Enter Enum value..."
294
+ value={item}
295
+ onChange={(value) => {
296
+ setFieldValue(`schema.enum[${index}]`, value)
297
+ }}
298
+ />
299
+ ))}
300
+ {enumFields &&
301
+ enumFields?.map((item, index) => (
302
+ <Input
303
+ key={index}
304
+ className={'methodDescForEnum'}
305
+ required
306
+ clearable={false}
307
+ placeholder={`Enter Enum value...`}
308
+ value={item}
309
+ onChange={(value) => {
310
+ let _values = [...enumFields]
311
+ _values[index] = value
312
+ setEnumFields(_values)
313
+ }}
314
+ />
315
+ ))}
316
+ <p
317
+ className={'addEnumButton'}
318
+ onClick={() => {
319
+ setEnumFields((prev) => [...prev, ''])
320
+ }}
321
+ >
322
+ <SVGLoader src={PlusSquare} />
323
+ Add New Enum
324
+ </p>
325
+ {!readOnly && (
326
+ <Button
327
+ className={styles.editDescTooltipContent_btn}
328
+ variant="outlined"
329
+ size="small"
330
+ type="button"
331
+ onClick={() => {
332
+ setFieldValue('schema.enum', [
333
+ ...values?.schema?.enum,
334
+ ...enumFields,
335
+ ])
336
+ setEnumFields([])
337
+ tooltipEnumRef?.hide()
338
+ }}
339
+ disabled={
340
+ (enumFields.length > 0 &&
341
+ enumFields?.filter((item) => !item).length) ||
342
+ (values?.schema?.enum.length > 0 &&
343
+ values?.schema?.enum?.filter((item) => !item).length)
344
+ }
345
+ >
346
+ Apply
347
+ </Button>
348
+ )}
349
+ </div>
350
+ }
351
+ >
352
+ <Button
353
+ className={styles.editDescBtn}
354
+ id="EnumButton"
355
+ variant="link"
356
+ color="action"
357
+ disabled={
358
+ values?.schema?.type?.toLowerCase() == 'array' ||
359
+ values?.schema?.type?.toLowerCase() == 'object'
360
+ }
361
+ endIcon={
362
+ <SVGLoader id="enumIcon" src={PlusIcon} width="1.5rem" height="1.5rem" />
363
+ }
364
+ >
365
+ Add
366
+ </Button>
367
+ </Tooltip>
368
+ </div>
369
+ </td>
370
+
371
+ <td key={'parameter required'}>
372
+ <div data-id="is required" className="tableData">
373
+ {readOnly ? (
374
+ <>{values.required ? 'True' : 'False'}</>
375
+ ) : (
376
+ <Switch
377
+ checked={
378
+ values && values.in && values.in.toLowerCase() == 'path'
379
+ ? true
380
+ : values.required
381
+ }
382
+ disabled={values && values.in && values.in.toLowerCase() == 'path'}
383
+ onClick={() => {
384
+ if (readOnly) {
385
+ return
386
+ }
387
+ setFieldValue('required', !values.required)
388
+ }}
389
+ />
390
+ )}
391
+ </div>
392
+ </td>
393
+
394
+ <td key={'parameter schema desc'}>
395
+ <div data-id="TEXT_DESCRIPTION" className="tableData">
396
+ <div className={styles.paramDescContainer}>
397
+ <Tooltip
398
+ arrowWithBorder
399
+ placement="bottom-end"
400
+ type="function"
401
+ trigger="click"
402
+ delay={[0, 0]}
403
+ onCreate={(instance) => setTooltipRef(instance)}
404
+ content={
405
+ <div className={styles.editDescTooltipContent}>
406
+ <p className={styles.editDescTooltipContent_header}>Description</p>
407
+ <TextArea
408
+ value={text || values.description}
409
+ onChange={(value) => {
410
+ if (value === '' || regex.ASCII.test(value)) setText(value)
411
+ }}
412
+ disabled={readOnly}
413
+ placeholder="Describe parameter..."
414
+ maxLength={120}
415
+ />
416
+ {!readOnly && (
417
+ <Button
418
+ className={styles.editDescTooltipContent_btn}
419
+ variant="outlined"
420
+ size="small"
421
+ onClick={() => {
422
+ setFieldValue('description', text?.trim())
423
+ tooltipRef?.hide()
424
+ }}
425
+ disabled={text?.trim() === ''}
426
+ >
427
+ Apply
428
+ </Button>
429
+ )}
430
+ </div>
431
+ }
432
+ >
433
+ <Button
434
+ className={styles.editDescBtn}
435
+ variant="link"
436
+ color="action"
437
+ endIcon={<SVGLoader src={EditIcon} width="1.5rem" height="1.5rem" />}
438
+ >
439
+ {readOnly ? 'View ' : 'Add '} Description
440
+ </Button>
441
+ </Tooltip>
442
+
443
+ <div className={styles.paramDescContainer_separator}></div>
444
+ {!readOnly && (
445
+ <Button
446
+ className={styles.deleteParamBtn}
447
+ variant="link"
448
+ color="error"
449
+ endIcon={
450
+ <SVGLoader src={DeleteIcon} width="1.125rem" height="1.125rem" />
451
+ }
452
+ onClick={() => {
453
+ resetForm()
454
+ setText('')
455
+ setIsFormOpen(undefined)
456
+ }} // Correctly delete the new row
457
+ />
458
+ )}
459
+
460
+ {!readOnly && (
461
+ <Tooltip
462
+ disabled={!!values.name.trim()}
463
+ content={`Parameter name can't be empty `}
464
+ >
465
+ <Button
466
+ className={styles.deleteParamBtn}
467
+ variant="link"
468
+ color="success"
469
+ disabled={!values.name.trim()}
470
+ endIcon={<SVGLoader src={AddRow} width="0.125rem" height="0.125rem" />}
471
+ onClick={() => {
472
+ setText('')
473
+ submitForm()
474
+ }} // Save the new row when clicked
475
+ />
476
+ </Tooltip>
477
+ )}
478
+ </div>{' '}
479
+ </div>
480
+ </td>
481
+ </tr>
482
+ ) : (
483
+ <>
484
+ {!readOnly && (
485
+ <tr key={'addNew'} data-i={'addNew'} className={`row`}>
486
+ <td colSpan={6}>
487
+ <Button
488
+ variant="link"
489
+ color="primary"
490
+ onClick={() => {
491
+ setIsFormOpen((prev) => (!prev ? (isRequest ? 'Req' : 'Res') : undefined))
492
+ }}
493
+ >
494
+ + Add Parameter
495
+ </Button>
496
+ </td>
497
+ </tr>
498
+ )}
499
+ </>
500
+ )}
501
+ </tbody>
502
+ </table>
503
+ </div>
504
+ </div>
505
+ )
506
+ }
507
+
508
+ export default ParamterTable