@digi-frontend/dgate-api-documentation 1.0.0 → 1.0.4

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 (214) hide show
  1. package/.editorconfig +13 -0
  2. package/.prettierignore +8 -0
  3. package/.prettierrc +15 -0
  4. package/dist/_virtual/index5.js +1 -1
  5. package/dist/_virtual/index6.js +1 -1
  6. package/dist/a7568b270e175038.svg +8 -0
  7. package/dist/b82c7612e73342f3.svg +3 -0
  8. package/dist/node_modules/@popperjs/core/lib/createPopper.js +2 -0
  9. package/dist/node_modules/@popperjs/core/lib/createPopper.js.map +1 -0
  10. package/dist/node_modules/@popperjs/core/lib/dom-utils/contains.js +2 -0
  11. package/dist/node_modules/@popperjs/core/lib/dom-utils/contains.js.map +1 -0
  12. package/dist/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js +2 -0
  13. package/dist/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js.map +1 -0
  14. package/dist/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js +2 -0
  15. package/dist/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js.map +1 -0
  16. package/dist/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js +2 -0
  17. package/dist/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js.map +1 -0
  18. package/dist/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js +2 -0
  19. package/dist/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js.map +1 -0
  20. package/dist/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js +2 -0
  21. package/dist/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js.map +1 -0
  22. package/dist/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js +2 -0
  23. package/dist/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js.map +1 -0
  24. package/dist/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js +2 -0
  25. package/dist/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js.map +1 -0
  26. package/dist/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js +2 -0
  27. package/dist/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js.map +1 -0
  28. package/dist/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js +2 -0
  29. package/dist/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js.map +1 -0
  30. package/dist/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js +2 -0
  31. package/dist/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js.map +1 -0
  32. package/dist/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js +2 -0
  33. package/dist/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js.map +1 -0
  34. package/dist/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js +2 -0
  35. package/dist/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js.map +1 -0
  36. package/dist/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js +2 -0
  37. package/dist/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js.map +1 -0
  38. package/dist/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js +2 -0
  39. package/dist/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js.map +1 -0
  40. package/dist/node_modules/@popperjs/core/lib/dom-utils/getWindow.js +2 -0
  41. package/dist/node_modules/@popperjs/core/lib/dom-utils/getWindow.js.map +1 -0
  42. package/dist/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js +2 -0
  43. package/dist/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js.map +1 -0
  44. package/dist/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js +2 -0
  45. package/dist/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js.map +1 -0
  46. package/dist/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js +2 -0
  47. package/dist/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js.map +1 -0
  48. package/dist/node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js +2 -0
  49. package/dist/node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js.map +1 -0
  50. package/dist/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js +2 -0
  51. package/dist/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js.map +1 -0
  52. package/dist/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js +2 -0
  53. package/dist/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js.map +1 -0
  54. package/dist/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js +2 -0
  55. package/dist/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js.map +1 -0
  56. package/dist/node_modules/@popperjs/core/lib/enums.js +2 -0
  57. package/dist/node_modules/@popperjs/core/lib/enums.js.map +1 -0
  58. package/dist/node_modules/@popperjs/core/lib/modifiers/applyStyles.js +2 -0
  59. package/dist/node_modules/@popperjs/core/lib/modifiers/applyStyles.js.map +1 -0
  60. package/dist/node_modules/@popperjs/core/lib/modifiers/arrow.js +2 -0
  61. package/dist/node_modules/@popperjs/core/lib/modifiers/arrow.js.map +1 -0
  62. package/dist/node_modules/@popperjs/core/lib/modifiers/computeStyles.js +2 -0
  63. package/dist/node_modules/@popperjs/core/lib/modifiers/computeStyles.js.map +1 -0
  64. package/dist/node_modules/@popperjs/core/lib/modifiers/eventListeners.js +2 -0
  65. package/dist/node_modules/@popperjs/core/lib/modifiers/eventListeners.js.map +1 -0
  66. package/dist/node_modules/@popperjs/core/lib/modifiers/flip.js +2 -0
  67. package/dist/node_modules/@popperjs/core/lib/modifiers/flip.js.map +1 -0
  68. package/dist/node_modules/@popperjs/core/lib/modifiers/hide.js +2 -0
  69. package/dist/node_modules/@popperjs/core/lib/modifiers/hide.js.map +1 -0
  70. package/dist/node_modules/@popperjs/core/lib/modifiers/offset.js +2 -0
  71. package/dist/node_modules/@popperjs/core/lib/modifiers/offset.js.map +1 -0
  72. package/dist/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js +2 -0
  73. package/dist/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js.map +1 -0
  74. package/dist/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js +2 -0
  75. package/dist/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js.map +1 -0
  76. package/dist/node_modules/@popperjs/core/lib/popper.js +2 -0
  77. package/dist/node_modules/@popperjs/core/lib/popper.js.map +1 -0
  78. package/dist/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js +2 -0
  79. package/dist/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js.map +1 -0
  80. package/dist/node_modules/@popperjs/core/lib/utils/computeOffsets.js +2 -0
  81. package/dist/node_modules/@popperjs/core/lib/utils/computeOffsets.js.map +1 -0
  82. package/dist/node_modules/@popperjs/core/lib/utils/debounce.js +2 -0
  83. package/dist/node_modules/@popperjs/core/lib/utils/debounce.js.map +1 -0
  84. package/dist/node_modules/@popperjs/core/lib/utils/detectOverflow.js +2 -0
  85. package/dist/node_modules/@popperjs/core/lib/utils/detectOverflow.js.map +1 -0
  86. package/dist/node_modules/@popperjs/core/lib/utils/expandToHashMap.js +2 -0
  87. package/dist/node_modules/@popperjs/core/lib/utils/expandToHashMap.js.map +1 -0
  88. package/dist/node_modules/@popperjs/core/lib/utils/getAltAxis.js +2 -0
  89. package/dist/node_modules/@popperjs/core/lib/utils/getAltAxis.js.map +1 -0
  90. package/dist/node_modules/@popperjs/core/lib/utils/getBasePlacement.js +2 -0
  91. package/dist/node_modules/@popperjs/core/lib/utils/getBasePlacement.js.map +1 -0
  92. package/dist/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js +2 -0
  93. package/dist/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js.map +1 -0
  94. package/dist/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js +2 -0
  95. package/dist/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js.map +1 -0
  96. package/dist/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js +2 -0
  97. package/dist/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js.map +1 -0
  98. package/dist/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js +2 -0
  99. package/dist/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js.map +1 -0
  100. package/dist/node_modules/@popperjs/core/lib/utils/getVariation.js +2 -0
  101. package/dist/node_modules/@popperjs/core/lib/utils/getVariation.js.map +1 -0
  102. package/dist/node_modules/@popperjs/core/lib/utils/math.js +2 -0
  103. package/dist/node_modules/@popperjs/core/lib/utils/math.js.map +1 -0
  104. package/dist/node_modules/@popperjs/core/lib/utils/mergeByName.js +2 -0
  105. package/dist/node_modules/@popperjs/core/lib/utils/mergeByName.js.map +1 -0
  106. package/dist/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js +2 -0
  107. package/dist/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js.map +1 -0
  108. package/dist/node_modules/@popperjs/core/lib/utils/orderModifiers.js +2 -0
  109. package/dist/node_modules/@popperjs/core/lib/utils/orderModifiers.js.map +1 -0
  110. package/dist/node_modules/@popperjs/core/lib/utils/rectToClientRect.js +2 -0
  111. package/dist/node_modules/@popperjs/core/lib/utils/rectToClientRect.js.map +1 -0
  112. package/dist/node_modules/@popperjs/core/lib/utils/userAgent.js +2 -0
  113. package/dist/node_modules/@popperjs/core/lib/utils/userAgent.js.map +1 -0
  114. package/dist/node_modules/@popperjs/core/lib/utils/within.js +2 -0
  115. package/dist/node_modules/@popperjs/core/lib/utils/within.js.map +1 -0
  116. package/dist/node_modules/@tippyjs/react/dist/tippy-react.esm.js +2 -0
  117. package/dist/node_modules/@tippyjs/react/dist/tippy-react.esm.js.map +1 -0
  118. package/dist/node_modules/digitinary-ui/dist/index.js +1 -1
  119. package/dist/node_modules/digitinary-ui/dist/index.js.map +1 -1
  120. package/dist/node_modules/formik/dist/formik.esm.js +1 -1
  121. package/dist/node_modules/formik/dist/formik.esm.js.map +1 -1
  122. package/dist/node_modules/tippy.js/dist/tippy.css.js +2 -0
  123. package/dist/node_modules/tippy.js/dist/tippy.css.js.map +1 -0
  124. package/dist/node_modules/tippy.js/dist/tippy.esm.js +7 -0
  125. package/dist/node_modules/tippy.js/dist/tippy.esm.js.map +1 -0
  126. package/dist/node_modules/yup/index.esm.js +1 -1
  127. package/dist/node_modules/yup/index.esm.js.map +1 -1
  128. package/dist/src/assets/icons/AddRow.svg.js +2 -0
  129. package/dist/src/assets/icons/AddRow.svg.js.map +1 -0
  130. package/dist/src/assets/icons/deleteOutlinedIcon.svg.js +2 -0
  131. package/dist/src/assets/icons/deleteOutlinedIcon.svg.js.map +1 -0
  132. package/dist/src/components/InfoForm/InfoForm.js +1 -1
  133. package/dist/src/components/InfoForm/InfoForm.js.map +1 -1
  134. package/dist/src/components/LivePreview/LivePreview.js +2 -0
  135. package/dist/src/components/LivePreview/LivePreview.js.map +1 -0
  136. package/dist/src/components/LivePreview/LivePreview.module.scss.js +2 -0
  137. package/dist/src/components/LivePreview/LivePreview.module.scss.js.map +1 -0
  138. package/dist/src/components/MethodAccordion/MethodAccordion.js +1 -1
  139. package/dist/src/components/MethodAccordion/MethodAccordion.js.map +1 -1
  140. package/dist/src/components/SimpleLabelValue/SimpleLabelValue.js +2 -0
  141. package/dist/src/components/SimpleLabelValue/SimpleLabelValue.js.map +1 -0
  142. package/dist/src/components/Tooltip/Tooltip.js +2 -0
  143. package/dist/src/components/Tooltip/Tooltip.js.map +1 -0
  144. package/dist/src/components/dialog/index.js +2 -0
  145. package/dist/src/components/dialog/index.js.map +1 -0
  146. package/dist/src/components/table/table.js +2 -0
  147. package/dist/src/components/table/table.js.map +1 -0
  148. package/dist/src/constants/index.js +1 -1
  149. package/dist/src/constants/index.js.map +1 -1
  150. package/dist/src/helpers/layout.helper.js +2 -0
  151. package/dist/src/helpers/layout.helper.js.map +1 -0
  152. package/dist/src/helpers/methodAccordion.helper.js +2 -0
  153. package/dist/src/helpers/methodAccordion.helper.js.map +1 -0
  154. package/dist/src/layout/layout.js +1 -1
  155. package/dist/src/layout/layout.js.map +1 -1
  156. package/dist/src/layout/layout.module.css.js +1 -1
  157. package/dist/src/validator/form.scheme.js +2 -0
  158. package/dist/src/validator/form.scheme.js.map +1 -0
  159. package/dist/styles.css +673 -63
  160. package/dist/types/assets/icons/index.d.ts +2 -0
  161. package/dist/types/components/LivePreview/LivePreview.d.ts +7 -0
  162. package/dist/types/components/MethodAccordion/MethodAccordion.d.ts +8 -1
  163. package/dist/types/components/SimpleLabelValue/SimpleLabelValue.d.ts +11 -0
  164. package/dist/types/components/SimpleLabelValue/index.d.ts +1 -0
  165. package/dist/types/components/Tooltip/Tooltip.d.ts +19 -0
  166. package/dist/types/components/dialog/dialog.d.ts +41 -0
  167. package/dist/types/components/dialog/index.d.ts +4 -0
  168. package/dist/types/components/table/table.d.ts +11 -0
  169. package/dist/types/constants/index.d.ts +20 -4
  170. package/dist/types/helpers/layout.helper.d.ts +7 -0
  171. package/dist/types/helpers/methodAccordion.helper.d.ts +2 -0
  172. package/dist/types/layout/layout.d.ts +5 -1
  173. package/dist/types/types/layout.type.d.ts +19 -0
  174. package/dist/types/types/openApi.d.ts +85 -0
  175. package/dist/types/types/transformedOpenApi.d.ts +50 -0
  176. package/dist/types/validator/form.scheme.d.ts +40 -0
  177. package/package.json +1 -1
  178. package/src/assets/icons/AddRow.svg +3 -0
  179. package/src/assets/icons/deleteOutlinedIcon.svg +8 -0
  180. package/src/assets/icons/index.ts +2 -0
  181. package/src/components/Chips/style.scss +1 -1
  182. package/src/components/InfoForm/InfoForm.module.scss +1 -0
  183. package/src/components/InfoForm/InfoForm.tsx +94 -59
  184. package/src/components/LivePreview/LivePreview.module.scss +5 -0
  185. package/src/components/LivePreview/LivePreview.tsx +80 -0
  186. package/src/components/MethodAccordion/MethodAccordion.module.scss +232 -125
  187. package/src/components/MethodAccordion/MethodAccordion.tsx +404 -57
  188. package/src/components/SimpleLabelValue/SimpleLabelValue.tsx +31 -0
  189. package/src/components/SimpleLabelValue/index.ts +1 -0
  190. package/src/components/SimpleLabelValue/style.scss +30 -0
  191. package/src/components/Tooltip/Tooltip.scss +130 -0
  192. package/src/components/Tooltip/Tooltip.tsx +86 -0
  193. package/src/components/_global.scss +338 -0
  194. package/src/components/dialog/dialog.ts +54 -0
  195. package/src/components/dialog/index.tsx +85 -0
  196. package/src/components/dialog/style.scss +104 -0
  197. package/src/components/table/style.scss +179 -0
  198. package/src/components/table/table.tsx +307 -0
  199. package/src/constants/index.ts +23 -6
  200. package/src/helpers/layout.helper.ts +118 -0
  201. package/src/helpers/methodAccordion.helper.ts +20 -0
  202. package/src/layout/layout.module.css +1 -0
  203. package/src/layout/layout.tsx +57 -9
  204. package/src/types/index.ts +0 -20
  205. package/src/types/layout.type.ts +22 -0
  206. package/src/types/openApi.ts +95 -0
  207. package/src/types/transformedOpenApi.ts +52 -0
  208. package/src/validator/form.scheme.ts +70 -0
  209. package/tsconfig.json +4 -1
  210. package/dist/src/components/Button/Button.js +0 -2
  211. package/dist/src/components/Button/Button.js.map +0 -1
  212. package/dist/src/components/Button/Button.module.css.js +0 -2
  213. package/dist/src/components/Button/Button.module.css.js.map +0 -1
  214. package/dist/types/components/Button/Button.d.ts +0 -7
@@ -1,81 +1,428 @@
1
- import React from 'react'
2
- import { Accordion, Button, SelectGroup, Switch, Table, TextArea } from 'digitinary-ui'
1
+ import React, { useEffect, useState } from 'react'
2
+ import { Accordion, Button, Input, SelectGroup, Switch, TextArea } from 'digitinary-ui'
3
3
  import SVGLoader from '../../components/SVGLoader/SVGLoader'
4
- import { DeleteIcon, DownArrowIcon, EditIcon } from '../../assets/icons'
4
+ import {
5
+ CheckMarkSquare,
6
+ DeleteIcon,
7
+ DownArrowIcon,
8
+ EditIcon,
9
+ deleteOutlinedIcon,
10
+ } from '../../assets/icons'
5
11
  import { httpStatusCodes, methodColorMapping, paramsTableHeaders } from '../../constants/index'
12
+ import Tooltip from '../../components/Tooltip/Tooltip'
13
+ import { TransformedMethod } from '../../types/layout.type'
6
14
  import styles from './MethodAccordion.module.scss'
15
+ import SimpleLabelValue from '../../components/SimpleLabelValue'
16
+ import { capitalize, handleStatusColor } from '../../helpers/methodAccordion.helper'
17
+ import ParamterTable from '../table/table'
18
+ import CommonDialog from '../../components/dialog'
7
19
 
8
- const data = Array(4).fill({
9
- paramName: 'search',
10
- paramType: 'Query',
11
- schemaType: 'String',
12
- isRequired: <Switch checked />,
13
- description: (
14
- <div className={styles.paramDescContainer}>
15
- <Button className={styles.editDescBtn} variant='link' color='action' endIcon={<SVGLoader src={EditIcon} width='1.5rem' height='1.5rem' />}>
16
- Add Description
17
- </Button>
18
- <div className={styles.paramDescContainer_separator}></div>
19
- <Button className={styles.deleteParamBtn} variant='link' color='error' endIcon={<SVGLoader src={DeleteIcon} width='1.125rem' height='1.125rem' />}></Button>
20
+ const httpStatusCodeOptions = httpStatusCodes.map((code) => ({
21
+ label: (
22
+ <div className={styles.statusCodeOptionContainer}>
23
+ <div
24
+ className={styles.statusCodeOptionCircle}
25
+ style={{ backgroundColor: handleStatusColor(code) }}
26
+ ></div>
27
+ <span>{code}</span>
20
28
  </div>
21
29
  ),
22
- })
30
+ value: code,
31
+ }))
32
+
33
+ const MethodsAccordion = ({
34
+ method,
35
+ path,
36
+ setFieldValue,
37
+ readOnly,
38
+ handleSave,
39
+ }: {
40
+ method: TransformedMethod
41
+ path: string
42
+ setFieldValue: (key: string, value: string) => void
43
+ readOnly?: boolean
44
+ handleSave: (data: any) => unknown
45
+ }) => {
46
+ const [isExpanded, setIsExpanded] = useState({
47
+ request: false,
48
+ response: false,
49
+ method: false,
50
+ })
51
+ const [isFormOpen, setIsFormOpen] = useState(false)
52
+ const [tooltipRefs, setTooltipRefs] = useState<{ [key: number]: any }>({})
53
+ const [tableData, setTableData] = useState([])
54
+ const [openDeleteDialog, setOpenDeleteDialog] = useState(false)
55
+ const [selectedParamIndex, setSelectedParamIndex] = useState<number | null>(null)
56
+ const [selectedParamName, setSelectedParamName] = useState<string | null>(null)
57
+
58
+ const onTableChange = (key, value, index) => {
59
+ const newTableData = tableData.map((item, tIndex) => {
60
+ if (tIndex === index) {
61
+ return { ...item, [key]: value }
62
+ } else {
63
+ return item
64
+ }
65
+ })
66
+
67
+ setTableData(newTableData)
68
+ }
69
+
70
+ const generateTableData = (items) => {
71
+ return items.map((item, index) => {
72
+ return {
73
+ id: index,
74
+ paramName: item.name,
75
+ paramType: capitalize(item.in),
76
+ schemaType: capitalize(item.schema?.type) || '',
77
+ required: (
78
+ <>
79
+ {readOnly ? (
80
+ item.required ? (
81
+ 'True'
82
+ ) : (
83
+ 'False'
84
+ )
85
+ ) : (
86
+ <Switch
87
+ checked={item.required}
88
+ onClick={() => {
89
+ if (readOnly) {
90
+ return null
91
+ }
92
+ onTableChange('required', !item.required, index)
93
+ setFieldValue(`parameters[${index}][required]`, !item.required)
94
+ }}
95
+ />
96
+ )}
97
+ </>
98
+ ),
99
+ description: (
100
+ <div className={styles.paramDescContainer}>
101
+ <Tooltip
102
+ arrowWithBorder
103
+ placement="bottom-end"
104
+ type="function"
105
+ trigger="click"
106
+ delay={[0, 0]}
107
+ onCreate={(instance) =>
108
+ setTooltipRefs((prev) => ({
109
+ ...prev,
110
+ [index]: instance,
111
+ }))
112
+ }
113
+ content={
114
+ <div className={styles.editDescTooltipContent}>
115
+ <p className={styles.editDescTooltipContent_header}>Description</p>
116
+ <TextArea
117
+ placeholder="Describe parameter..."
118
+ value={item.description}
119
+ disabled={readOnly}
120
+ onChange={(value) => onTableChange('description', value, index)}
121
+ />
122
+ {!readOnly && (
123
+ <Button
124
+ className={styles.editDescTooltipContent_btn}
125
+ variant="outlined"
126
+ size="small"
127
+ onClick={() => {
128
+ setFieldValue(`parameters[${index}].description`, item.description)
129
+ tooltipRefs[index]?.hide()
130
+ }}
131
+ >
132
+ Apply
133
+ </Button>
134
+ )}
135
+ </div>
136
+ }
137
+ >
138
+ {readOnly ? (
139
+ <Button
140
+ className={styles.editDescBtn}
141
+ variant="link"
142
+ color="action"
143
+ // endIcon={<SVGLoader src={EditIcon} width="1.5rem" height="1.5rem" />}
144
+ >
145
+ {item.description ? item.description.substring(0, 12) : '-'}
146
+ {item.description && item.description.length > 12 ? '...' : ''}
147
+ </Button>
148
+ ) : (
149
+ <Button
150
+ className={styles.editDescBtn}
151
+ variant="link"
152
+ color="action"
153
+ endIcon={<SVGLoader src={EditIcon} width="1.5rem" height="1.5rem" />}
154
+ >
155
+ {readOnly ? 'View ' : 'Add '} Description
156
+ </Button>
157
+ )}
158
+ </Tooltip>
159
+
160
+ {
161
+ !readOnly&&
162
+ <div className={styles.paramDescContainer_separator}></div>
163
+ }
164
+
165
+ {!readOnly && (
166
+ <Button
167
+ className={styles.deleteParamBtn}
168
+ variant="link"
169
+ color="error"
170
+ endIcon={<SVGLoader src={DeleteIcon} width="1.125rem" height="1.125rem" />}
171
+ onClick={() => handleDeleteClick(index, item.name)}
172
+ ></Button>
173
+ )}
174
+ </div>
175
+ ),
176
+ }
177
+ })
178
+ }
179
+
180
+ const [tableRecords, setTableRecords] = useState()
181
+
182
+ const confirmDeleteParameter = () => {
183
+ if (selectedParamIndex !== null) {
184
+ setTableData((prev) => prev.filter((_, i) => i !== selectedParamIndex))
185
+ setFieldValue(
186
+ `parameters`,
187
+ method?.parameters?.filter((_, i) => i !== selectedParamIndex)
188
+ )
189
+ }
190
+ setOpenDeleteDialog(false)
191
+ setSelectedParamIndex(null)
192
+ }
193
+
194
+ const handleDeleteClick = (id: number, name: string) => {
195
+ setSelectedParamIndex(id)
196
+ setSelectedParamName(name)
197
+
198
+ setOpenDeleteDialog(true)
199
+ }
200
+
201
+ const saveNewRow = (values) => {
202
+ setTableData([...tableData, values])
203
+ setFieldValue(`parameters`, [...method.parameters, values])
204
+ }
205
+
206
+ useEffect(() => {
207
+ setTableRecords(generateTableData(tableData))
208
+ }, [tableData])
209
+
210
+ useEffect(() => {
211
+ if (method?.parameters) {
212
+ setTableRecords(generateTableData(method.parameters))
213
+ setTableData(method.parameters)
214
+ }
215
+ }, [method, path])
23
216
 
24
- const MethodsAccordion = () => {
25
217
  return (
26
- <div className={styles.methodAccordionContainer}>
218
+ <div>
27
219
  <Accordion
220
+ expanded={isExpanded.method}
221
+ onChange={() => setIsExpanded((prev) => ({ ...prev, method: !prev.method }))}
28
222
  className={styles.methodAccordion}
29
- children={<TextArea label='Description' />}
30
223
  summary={
31
224
  <div className={styles.methodSummaryContainer}>
32
225
  <div className={styles.methodSummary}>
33
- <span style={{ backgroundColor: methodColorMapping?.POST?.color ?? '#3A6CD1' }} className={styles.methodLabel}>
34
- {methodColorMapping.POST.label}
226
+ <span
227
+ style={{
228
+ backgroundColor: methodColorMapping?.[method?.type]?.color || '#3A6CD1',
229
+ }}
230
+ className={styles.methodLabel}
231
+ >
232
+ {methodColorMapping?.[method?.type]?.label || method?.type}
35
233
  </span>
36
- <span className={styles.methodPath}>/auth/login</span>
234
+ <span className={styles.methodPath}>{path}</span>
37
235
  </div>
38
- <div className={styles.methodExpandArrowContainer}>
39
- <SVGLoader src={DownArrowIcon} width='2rem' height='2rem' />
236
+ <div
237
+ className={`${styles.methodExpandArrowContainer} ${
238
+ isExpanded.method ? styles.expanded : ''
239
+ }`}
240
+ >
241
+ <SVGLoader src={DownArrowIcon} width="2rem" height="2rem" />
40
242
  </div>
41
243
  </div>
42
244
  }
43
- />
44
- <div className={styles.paramsTable}>
45
- <Table data={data} headCells={paramsTableHeaders} />
46
- </div>
47
- <Accordion
48
- className={styles.requestAccordion}
49
- summary={
50
- <span className={styles.requestAccordionSummary}>
51
- Request<span style={{ color: 'red' }}>*</span>
52
- </span>
245
+ children={
246
+ <div className={styles.methodAccordionContent}>
247
+ {!readOnly ? (
248
+ <TextArea
249
+ className={styles.methodDesc}
250
+ label="Description"
251
+ placeholder="Describe the endpoint's purpose and functionality..."
252
+ value={method?.description}
253
+ onChange={(value) => setFieldValue('description', value)}
254
+ />
255
+ ) : (
256
+ <SimpleLabelValue
257
+ key={'description'}
258
+ label={'Description: '}
259
+ value={method?.description || '-'}
260
+ />
261
+ )}
262
+ <div className={styles.paramsTable}>
263
+ <ParamterTable
264
+ id="paramter-table"
265
+ data={tableRecords}
266
+ headCells={paramsTableHeaders}
267
+ isFormOpen={isFormOpen}
268
+ setIsFormOpen={setIsFormOpen}
269
+ saveNewRow={saveNewRow}
270
+ readOnly={readOnly}
271
+ />
272
+ </div>
273
+
274
+ {method?.type !== 'get' && (
275
+ <Accordion
276
+ expanded={isExpanded.request}
277
+ onChange={() => null}
278
+ className={styles.requestAccordion}
279
+ summary={
280
+ <span className={styles.requestAccordionSummary}>
281
+ <div
282
+ className={styles.requestAccordionSummary_title}
283
+ onClick={() =>
284
+ setIsExpanded((prev) => ({
285
+ ...prev,
286
+ request: !prev.request,
287
+ }))
288
+ }
289
+ >
290
+ <SVGLoader
291
+ className={isExpanded.request ? styles.expanded : ''}
292
+ src={DownArrowIcon}
293
+ width="2rem"
294
+ height="2rem"
295
+ />
296
+ Request
297
+ {method?.type !== 'delete' && <span style={{ color: 'red' }}>*</span>}
298
+ </div>
299
+ </span>
300
+ }
301
+ children={
302
+ <TextArea
303
+ disabled={readOnly}
304
+ value={(() => {
305
+ const requestBody = method?.requestBody?.at(0)?.content?.schema?.properties
306
+
307
+ if (typeof requestBody !== 'string') {
308
+ return JSON.stringify(requestBody)
309
+ } else return requestBody
310
+ })()}
311
+ onChange={(value) => {
312
+ setFieldValue('requestBody[0].content.schema.properties', value)
313
+ }}
314
+ placeholder="Enter your request body as a JSON object..."
315
+ />
316
+ }
317
+ />
318
+ )}
319
+
320
+ <Accordion
321
+ expanded={isExpanded.response}
322
+ onChange={() => null}
323
+ className={styles.responseAccordion}
324
+ summary={
325
+ <span className={styles.responseAccordionSummary}>
326
+ <div
327
+ className={styles.responseAccordionSummary_title}
328
+ onClick={() =>
329
+ setIsExpanded((prev) => ({
330
+ ...prev,
331
+ response: !prev.response,
332
+ }))
333
+ }
334
+ >
335
+ <SVGLoader
336
+ className={isExpanded.response ? styles.expanded : ''}
337
+ src={DownArrowIcon}
338
+ width="2rem"
339
+ height="2rem"
340
+ />
341
+ Response<span style={{ color: 'red' }}>*</span>
342
+ </div>
343
+
344
+ <SelectGroup
345
+ withSearch={false}
346
+ isMultiple={false}
347
+ placeholder="200"
348
+ disabled={true}
349
+ options={[
350
+ {
351
+ list: httpStatusCodeOptions,
352
+ },
353
+ ]}
354
+ value={httpStatusCodeOptions[4]}
355
+ />
356
+ </span>
357
+ }
358
+ children={
359
+ <TextArea
360
+ disabled={readOnly}
361
+ value={
362
+ typeof method.responses?.at(0)?.content.schema.properties !== 'string'
363
+ ? JSON.stringify(method.responses?.at(0)?.content.schema.properties)
364
+ : method.responses?.at(0)?.content.schema.properties
365
+ }
366
+ onChange={(value) => {
367
+ let parsedValue = { content: '' }
368
+ try {
369
+ parsedValue = JSON.parse(value)
370
+ } catch (err) {
371
+ console.log(err)
372
+ }
373
+ setFieldValue('responses[0].content.schema.properties', parsedValue as any)
374
+ }}
375
+ placeholder="Enter your response as a JSON object..."
376
+ />
377
+ }
378
+ />
379
+ {!readOnly && (
380
+ <Button
381
+ className={styles.methodForm_submitBtn}
382
+ size="small"
383
+ fullWidth={false}
384
+ type="submit"
385
+ variant="link"
386
+ color="success"
387
+ onClick={handleSave}
388
+ startIcon={<SVGLoader src={CheckMarkSquare} width="1.5rem" height="1.5rem" />}
389
+ >
390
+ Save
391
+ </Button>
392
+ )}
393
+ </div>
53
394
  }
54
- children={<TextArea />}
55
395
  />
56
- <Accordion
57
- className={styles.responseAccordion}
58
- summary={
59
- <span className={styles.responseAccordionSummary}>
60
- Response<span style={{ color: 'red' }}>*</span>
61
- <SelectGroup
62
- options={[
63
- {
64
- list: httpStatusCodes.map((code) => ({
65
- label: (
66
- <div className='statusCodeOptionContainer'>
67
- <div className='statusCodeOptionCircle'></div>
68
- <span>{code}</span>
69
- </div>
70
- ),
71
- value: code,
72
- })),
73
- },
74
- ]}
75
- />
76
- </span>
396
+ <CommonDialog
397
+ status="error"
398
+ content={
399
+ <p
400
+ style={{
401
+ textAlign: 'center',
402
+ fontWeight: 400,
403
+ fontSize: '1rem',
404
+ lineHeight: '1.4375rem',
405
+ }}
406
+ className="delete-msg-container"
407
+ >
408
+ Are you sure you want to delete
409
+ <span className="plan-name">{` Parameter ${selectedParamName} `}</span>?
410
+ </p>
77
411
  }
78
- children={<TextArea />}
412
+ onSubmit={{
413
+ onClick: confirmDeleteParameter,
414
+ text: 'Yes',
415
+ color: 'error',
416
+ fullWidth: true,
417
+ }}
418
+ onCancel={{
419
+ text: 'No',
420
+ color: 'normal',
421
+ fullWidth: true,
422
+ }}
423
+ onClose={() => setOpenDeleteDialog(false)}
424
+ open={openDeleteDialog}
425
+ icon={<SVGLoader src={deleteOutlinedIcon} width="4.0625rem" height="4.0625rem" />}
79
426
  />
80
427
  </div>
81
428
  )
@@ -0,0 +1,31 @@
1
+ import React from 'react'
2
+ import './style.scss'
3
+
4
+ type SimpleLabelValueProps = {
5
+ label?: string | JSX.Element
6
+ value?: string | number | JSX.Element | JSX.Element[]
7
+ color?: string
8
+ className?: string
9
+ dataId?: string
10
+ }
11
+
12
+ const SimpleLabelValue: React.FC<SimpleLabelValueProps> = ({
13
+ label,
14
+ value,
15
+ color,
16
+ className = '',
17
+ dataId,
18
+ }: SimpleLabelValueProps) => {
19
+ const dataIdLabel =
20
+ typeof label === 'string' ? label?.toUpperCase()?.replaceAll(' ', '_') + '_LABEL_ID' : dataId
21
+ return (
22
+ <div className={`drawerItemContainer ${className}`}>
23
+ <span className="title" data-id={dataIdLabel}>
24
+ {label}
25
+ </span>
26
+ <span className={`text ${color ? `color-${color}` : ''}`}>{value}</span>
27
+ </div>
28
+ )
29
+ }
30
+
31
+ export default SimpleLabelValue
@@ -0,0 +1 @@
1
+ export { default } from './SimpleLabelValue'
@@ -0,0 +1,30 @@
1
+ @import '../global';
2
+
3
+ .drawerItemContainer {
4
+ display: flex;
5
+ flex-direction: column;
6
+
7
+ .title {
8
+ color: #000;
9
+ font-weight: 600;
10
+ font-size: 24px;
11
+ line-height: 35px;
12
+ margin-bottom: 3px;
13
+ margin-top: 1.5rem;
14
+ }
15
+
16
+ .text {
17
+ color: #000;
18
+ font-weight: 400;
19
+ font-size: 24px;
20
+ line-height: 25px;
21
+ }
22
+
23
+ .color-green {
24
+ color: $success-static;
25
+ }
26
+
27
+ .color-red {
28
+ color: $error-static;
29
+ }
30
+ }
@@ -0,0 +1,130 @@
1
+ .tooltip-custom-wrapper {
2
+ display: flex;
3
+ }
4
+
5
+ .tippy-box {
6
+ background-color: #202f5b;
7
+ font-size: 0.875rem;
8
+ border-radius: 0.3125rem;
9
+ width: max-content;
10
+ max-width: 100%;
11
+ overflow-wrap: break-word;
12
+ word-break: break-word;
13
+ position: relative;
14
+ border: 1px solid #d8dae5;
15
+
16
+ &.function {
17
+ .tippy-content {
18
+ background-color: #fff !important;
19
+ color: #000 !important;
20
+ }
21
+ }
22
+
23
+ &[data-placement] > .tippy-arrow:before {
24
+ color: #fff !important;
25
+ }
26
+
27
+ &.info {
28
+ .tippy-arrow {
29
+ color: #202f5b;
30
+ }
31
+ }
32
+
33
+ &.success {
34
+ border-radius: 1.875rem;
35
+ background-color: #3aaa35;
36
+ padding-inline: 0.625rem;
37
+ }
38
+
39
+ .tippy-content {
40
+ text-align: justify;
41
+ font-size: 0.875rem;
42
+ line-height: 1.25rem;
43
+ padding: 0.625rem;
44
+ }
45
+
46
+ .tippy-arrow {
47
+ position: relative;
48
+ width: 1rem;
49
+ height: 1rem;
50
+ }
51
+
52
+ &[data-placement^='top'] {
53
+ .tippy-arrow:before {
54
+ bottom: -0.4375rem;
55
+ border-width: 0.5rem 0.5rem 0 !important;
56
+ }
57
+ }
58
+
59
+ &[data-placement^='right'] {
60
+ .tippy-arrow:before {
61
+ left: -0.4375rem;
62
+ border-width: 0.5rem 0.5rem 0.5rem 0 !important;
63
+ }
64
+ }
65
+
66
+ &[data-placement^='bottom'] {
67
+ .tippy-arrow:before {
68
+ top: -0.4375rem;
69
+ border-width: 0 0.5rem 0.5rem !important;
70
+ }
71
+ }
72
+
73
+ &[data-placement^='left'] {
74
+ .tippy-arrow:before {
75
+ right: -0.4375rem;
76
+ border-width: 0.5rem 0 0.5rem 0.5rem !important;
77
+ }
78
+ }
79
+
80
+ &[data-placement^='bottom-start'] {
81
+ .tippy-arrow {
82
+ transform: translate(0.937rem, 0) !important;
83
+ }
84
+ }
85
+
86
+ &[data-placement^='bottom-end'] {
87
+ .tippy-arrow {
88
+ margin-left: calc(100% - 1.937rem);
89
+ transform: translate(0, 0) !important;
90
+ }
91
+ }
92
+
93
+ &[data-placement^='top-start'] {
94
+ .tippy-arrow {
95
+ transform: translate(0.937rem, 0) !important;
96
+ }
97
+ }
98
+
99
+ &[data-placement^='top-end'] {
100
+ .tippy-arrow {
101
+ transform: translate(0.937rem, 0) !important;
102
+ }
103
+ }
104
+
105
+ &.arrow-with-border {
106
+ border: 1px solid #d8dae5;
107
+
108
+ &[data-placement] {
109
+ .tippy-arrow {
110
+ top: 1px;
111
+ background-color: white;
112
+ z-index: 9999;
113
+ height: 1px;
114
+
115
+ &:before {
116
+ width: 1rem;
117
+ height: 1rem;
118
+ background-color: white;
119
+ transform: rotate(45deg);
120
+ border: none;
121
+ border-left: 1px solid #d8dae5 !important;
122
+ border-top: 1px solid #d8dae5 !important;
123
+ z-index: 20000000000;
124
+ top: -0.6rem;
125
+ transform-origin: center !important;
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }