@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
@@ -0,0 +1,179 @@
1
+ @import '../_global';
2
+
3
+ .tableSectionContainer {
4
+ .tableContainer {
5
+ max-width: 100%;
6
+ overflow-x: overlay;
7
+
8
+ &.tableContainer * {
9
+ font-family: 'Cairo';
10
+ }
11
+
12
+ .table {
13
+ width: 100%;
14
+ border-spacing: 0;
15
+ border: none;
16
+ border-right: 1px solid var(--border-color-neutral);
17
+ border-left: 1px solid var(--border-color-neutral);
18
+
19
+ &.borderRadiusTop {
20
+ border-top-left-radius: 0.625rem;
21
+ border-top-right-radius: 0.625rem;
22
+ }
23
+
24
+ &.borderRadiusBottom {
25
+ border-bottom-left-radius: 0.625rem;
26
+ border-bottom-right-radius: 0.625rem;
27
+ }
28
+
29
+ .tableHead {
30
+ border: 1px solid var(--Gray-10);
31
+ margin: 0rem !important;
32
+ background-color: var(--background-color-header);
33
+ width: max-content;
34
+ min-width: 100%;
35
+ color: var(--Gray-50);
36
+ font-weight: 400;
37
+
38
+ .tableHeadCell {
39
+ border-bottom: 1px solid var(--border-color-neutral);
40
+ border-top: 1px solid var(--border-color-neutral);
41
+ font-style: normal;
42
+ font-size: 0.875rem;
43
+ padding: 0.75rem 1.875rem;
44
+ text-align: start;
45
+ white-space: nowrap;
46
+ color: inherit;
47
+ font-weight: inherit;
48
+
49
+ .sortIcon {
50
+ padding: 0rem 0.25rem;
51
+ height: 1.875rem;
52
+ cursor: pointer;
53
+ }
54
+ }
55
+
56
+ .headContainer {
57
+ display: flex;
58
+ flex-direction: row;
59
+ align-items: center;
60
+ text-overflow: ellipsis;
61
+ }
62
+ }
63
+
64
+ .tableBody {
65
+ tr {
66
+ background-color: var(--background-color-white-secondary);
67
+ overflow: visible !important;
68
+
69
+ .tippy-content {
70
+ background-color: var(--border-color-hover);
71
+ color: var(--text-color-disabled);
72
+ border-radius: 5px;
73
+ font-size: 14px;
74
+ font-weight: 400;
75
+ line-height: 20px;
76
+ text-align: left;
77
+ }
78
+ .tippy-box[data-placement^='bottom'] > .tippy-arrow:before {
79
+ color: var(--border-color-hover);
80
+ }
81
+
82
+ &.rowSelected {
83
+ background-color: var(--background-color-gray-40);
84
+ }
85
+ td {
86
+ font-weight: 400;
87
+ font-size: 0.875rem;
88
+ text-align: start;
89
+ color: var(--text-color-primary);
90
+ border-bottom: 1px solid var(--border-color-gray);
91
+ width: max-content;
92
+ white-space: nowrap;
93
+ height: 3.75rem;
94
+ padding: 0.75rem 1.875rem;
95
+ overflow: visible !important;
96
+
97
+ .tableData {
98
+ max-width: 100%;
99
+ width: fit-content;
100
+ white-space: nowrap;
101
+ text-overflow: ellipsis;
102
+ overflow: visible !important;
103
+ }
104
+ }
105
+
106
+ &:hover {
107
+ background-color: var(--background-color-gray-10);
108
+ }
109
+ }
110
+
111
+ .fallbackTableRow {
112
+ background-color: var(--background-color-white-secondary);
113
+ height: 4.375rem;
114
+
115
+ &:hover {
116
+ background-color: var(--background-color-white-secondary);
117
+ }
118
+
119
+ .fallbackContainer {
120
+ width: 100%;
121
+ height: 100%;
122
+ color: var(--text-color-quaternary);
123
+ .fallbackTextContainer {
124
+ display: flex;
125
+ flex-direction: row;
126
+ align-items: center;
127
+ justify-content: center;
128
+ width: 100%;
129
+ height: 100%;
130
+
131
+ .fallbackText {
132
+ font-style: normal;
133
+ font-weight: 400;
134
+ font-size: 0.875rem;
135
+ line-height: 1.25rem;
136
+ }
137
+ }
138
+ }
139
+ }
140
+ }
141
+
142
+ th,
143
+ td {
144
+ text-align: left;
145
+ }
146
+ }
147
+ }
148
+
149
+ .tableFooterContainer {
150
+ display: flex;
151
+ width: 100%;
152
+ height: auto;
153
+ }
154
+
155
+ .ascArrow {
156
+ height: 0.8125rem;
157
+ margin-bottom: 0.4375rem;
158
+ cursor: pointer;
159
+ }
160
+
161
+ .descArrow {
162
+ height: 0.8125rem;
163
+ margin-top: 0.4375rem;
164
+ cursor: pointer;
165
+ }
166
+
167
+ .defaultSortArrow {
168
+ height: 1.25rem;
169
+ cursor: pointer;
170
+ }
171
+
172
+ .ascArrow,
173
+ .descArrow,
174
+ .defaultSortArrow {
175
+ path {
176
+ fill: var(--Gray-50);
177
+ }
178
+ }
179
+ }
@@ -0,0 +1,307 @@
1
+ import React, { useState } from 'react'
2
+ import './style.scss'
3
+ import { Button, Input, SelectGroup, 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 styles from '../MethodAccordion/MethodAccordion.module.scss'
8
+ import { useFormik } from 'formik'
9
+ import * as yup from 'yup'
10
+ import { capitalize } from '../../helpers/methodAccordion.helper'
11
+
12
+ const ParamterTable = ({
13
+ id,
14
+ headCells,
15
+ data,
16
+ isFormOpen,
17
+ setIsFormOpen,
18
+ saveNewRow,
19
+ readOnly,
20
+ }) => {
21
+ const [text, setText] = useState('')
22
+ const [tooltipRef, setTooltipRef] = useState(null)
23
+ const { values, errors, setFieldValue, isValid, submitForm, resetForm } = useFormik({
24
+ initialValues: {
25
+ name: '',
26
+ in: 'Query',
27
+ schema: {
28
+ type: 'String',
29
+ },
30
+ required: true,
31
+ description: '',
32
+ },
33
+ validationSchema: yup.object().shape({
34
+ name: yup.string().required('Parameter name is required'),
35
+ in: yup.string().required('Paramter type is required'),
36
+ schema: yup.object().shape({
37
+ type: yup.string().required('Parameter schema type is required'),
38
+ }),
39
+ required: yup.boolean().optional(),
40
+ description: yup.string().optional(),
41
+ }),
42
+ onSubmit: (values) => {
43
+ saveNewRow(values)
44
+ setIsFormOpen(false)
45
+ setText('')
46
+ resetForm()
47
+ },
48
+ })
49
+ return (
50
+ <div className="tableSectionContainer">
51
+ <div className="tableContainer">
52
+ <table id={id || ''} className={`table borderRadiusTop borderRadiusBottom`}>
53
+ <thead className="tableHead">
54
+ <tr>
55
+ {headCells?.map((headCell) => (
56
+ <th
57
+ key={headCell.id}
58
+ className={`tableHeadCell ${headCell.classes || ''}`}
59
+ style={{ width: headCell.width, minWidth: headCell.minWidth }}
60
+ >
61
+ <div
62
+ className="headContainer"
63
+ data-id={`${
64
+ typeof headCell.label === 'string'
65
+ ? headCell.label.toUpperCase().replace(/[^a-zA-Z0-9]+/g, '_')
66
+ : 'UNKNOWN_LABEL'
67
+ }_COLUMN`}
68
+ >
69
+ {headCell.label}
70
+ </div>
71
+ </th>
72
+ ))}
73
+ </tr>
74
+ </thead>
75
+ <tbody className="tableBody" data-id="TABLE_BODY">
76
+ {data?.map((row, rowIndex) => {
77
+ return (
78
+ <tr key={rowIndex} data-i={rowIndex} className={`row`}>
79
+ {headCells?.map((headCell) => {
80
+ const cellContent = row[headCell.id] !== '_' && (
81
+ <div
82
+ data-id="TEXT_DESCRIPTION"
83
+ className="tableData"
84
+ style={{
85
+ width: headCell.width,
86
+ minWidth: headCell.minWidth,
87
+ }}
88
+ >
89
+ {row[headCell.id]}
90
+ </div>
91
+ )
92
+
93
+ return (
94
+ <td
95
+ key={headCell.id}
96
+ style={{
97
+ width: headCell.width,
98
+ minWidth: headCell.minWidth,
99
+ }}
100
+ >
101
+ {cellContent}
102
+ </td>
103
+ )
104
+ })}
105
+ </tr>
106
+ )
107
+ })}
108
+ {isFormOpen ? (
109
+ <tr key={''} data-i={''} className={`row`}>
110
+ <td key={'Parameter name'}>
111
+ <div data-id="TEXT_DESCRIPTION" className="tableData">
112
+ <Input
113
+ placeholder="paramter name"
114
+ size="large"
115
+ type="text"
116
+ // errorMsg={!!errors.name && errors.name}
117
+ onChange={(value) => {
118
+ setFieldValue('name', value)
119
+ }} // Pass the value directly
120
+ value={values.name} // Bind value to the state
121
+ disabled={readOnly}
122
+ />
123
+ </div>
124
+ </td>
125
+
126
+ <td key={'parameter in'}>
127
+ <div data-id="TEXT_DESCRIPTION" className="tableData">
128
+ <SelectGroup
129
+ disabled={readOnly}
130
+ value={{
131
+ label: capitalize(values.in),
132
+ value: capitalize(values.in),
133
+ }}
134
+ onChange={(item) => setFieldValue('in', item?.value?.toLowerCase())} // Updates state on selection
135
+ options={[
136
+ {
137
+ list: [
138
+ { label: 'Query', value: 'query' },
139
+ { label: 'Header', value: 'header' },
140
+ { label: 'Path', value: 'path' },
141
+ { label: 'Body', value: 'body' },
142
+ ],
143
+ },
144
+ ]}
145
+ errorMsg={!!errors.in && errors.in}
146
+ isMultiple={false}
147
+ withSearch={false}
148
+ clearable={false}
149
+ />{' '}
150
+ </div>
151
+ </td>
152
+
153
+ <td key={'parameter schema type'}>
154
+ <div data-id="TEXT_DESCRIPTION" className="tableData">
155
+ <SelectGroup
156
+ disabled={readOnly}
157
+ value={{
158
+ label: capitalize(values.schema.type),
159
+ value: capitalize(values.schema.type),
160
+ }}
161
+ errorMsg={!!errors.schema && errors.schema}
162
+ onChange={(item) => setFieldValue('schema.type', item?.value?.toLowerCase())} // Updates state on selection
163
+ options={[
164
+ {
165
+ list: [
166
+ { label: 'String', value: 'string' },
167
+ { label: 'Integer', value: 'integer' },
168
+ { label: 'Boolean', value: 'boolean' },
169
+ { label: 'Object', value: 'object' },
170
+ { label: 'Array', value: 'array' },
171
+ { label: 'Number', value: 'number' },
172
+ ],
173
+ },
174
+ ]}
175
+ isMultiple={false}
176
+ withSearch={false}
177
+ />{' '}
178
+ </div>
179
+ </td>
180
+
181
+ <td key={'parameter required'}>
182
+ <div data-id="is required" className="tableData">
183
+ {
184
+ readOnly ?
185
+ <>{values.required ? 'True': 'False'}</>
186
+ :
187
+ <Switch
188
+ checked={values.required}
189
+ onClick={() => {
190
+ if (readOnly) {
191
+ return
192
+ }
193
+ setFieldValue('required', !values.required)
194
+ }}
195
+ />
196
+ }
197
+ </div>
198
+ </td>
199
+
200
+ <td key={'parameter schema desc'}>
201
+ <div data-id="TEXT_DESCRIPTION" className="tableData">
202
+ <div className={styles.paramDescContainer}>
203
+ <Tooltip
204
+ arrowWithBorder
205
+ placement="bottom-end"
206
+ type="function"
207
+ trigger="click"
208
+ delay={[0, 0]}
209
+ onCreate={(instance) => setTooltipRef(instance)}
210
+ content={
211
+ <div className={styles.editDescTooltipContent}>
212
+ <p className={styles.editDescTooltipContent_header}>Description</p>
213
+ <TextArea
214
+ value={text || values.description}
215
+ onChange={(value) => {
216
+ setText(value)
217
+ }}
218
+ disabled={readOnly}
219
+ placeholder="Describe parameter..."
220
+ />
221
+ {!readOnly && (
222
+ <Button
223
+ className={styles.editDescTooltipContent_btn}
224
+ variant="outlined"
225
+ size="small"
226
+ onClick={() => {
227
+ setFieldValue('description', text)
228
+ tooltipRef?.hide()
229
+ }}
230
+ >
231
+ Apply
232
+ </Button>
233
+ )}
234
+ </div>
235
+ }
236
+ >
237
+ <Button
238
+ className={styles.editDescBtn}
239
+ variant="link"
240
+ color="action"
241
+ endIcon={<SVGLoader src={EditIcon} width="1.5rem" height="1.5rem" />}
242
+ >
243
+ {readOnly ? 'View ' : 'Add '} Description
244
+ </Button>
245
+ </Tooltip>
246
+
247
+ <div className={styles.paramDescContainer_separator}></div>
248
+ {!readOnly && (
249
+ <Button
250
+ className={styles.deleteParamBtn}
251
+ variant="link"
252
+ color="error"
253
+ endIcon={
254
+ <SVGLoader src={DeleteIcon} width="1.125rem" height="1.125rem" />
255
+ }
256
+ onClick={() => {
257
+ resetForm()
258
+ setText('')
259
+ setIsFormOpen(false)
260
+ }} // Correctly delete the new row
261
+ />
262
+ )}
263
+
264
+ {!readOnly && (
265
+ <Button
266
+ className={styles.deleteParamBtn}
267
+ variant="link"
268
+ color="success"
269
+ disabled={!isValid}
270
+ endIcon={<SVGLoader src={AddRow} width="0.125rem" height="0.125rem" />}
271
+ onClick={() => {
272
+ setText('')
273
+ submitForm()
274
+ }} // Save the new row when clicked
275
+ />
276
+ )}
277
+ </div>{' '}
278
+ </div>
279
+ </td>
280
+ </tr>
281
+ ) : (
282
+ <>
283
+ {!readOnly && (
284
+ <tr key={'addNew'} data-i={'addNew'} className={`row`}>
285
+ <td colSpan={5}>
286
+ <Button
287
+ variant="link"
288
+ color="primary"
289
+ onClick={() => {
290
+ setIsFormOpen((prev) => !prev)
291
+ }}
292
+ >
293
+ + Add Parameter
294
+ </Button>
295
+ </td>
296
+ </tr>
297
+ )}
298
+ </>
299
+ )}
300
+ </tbody>
301
+ </table>
302
+ </div>
303
+ </div>
304
+ )
305
+ }
306
+
307
+ export default ParamterTable
@@ -1,20 +1,36 @@
1
1
  export const methodColorMapping = {
2
- GET: {
2
+ get: {
3
3
  label: 'Get',
4
4
  color: '#3A6CD1',
5
5
  },
6
- POST: {
6
+ post: {
7
7
  label: 'Post',
8
8
  color: '#3AAA35',
9
9
  },
10
- PUT: {
10
+ put: {
11
11
  label: 'Put',
12
12
  color: '#FAAD14',
13
13
  },
14
- DELETE: {
14
+ delete: {
15
15
  label: 'Delete',
16
16
  color: '#DA3F3F',
17
17
  },
18
+ PATCH: {
19
+ label: 'Patch',
20
+ color: '#FAAD14',
21
+ },
22
+ OPTIONS: {
23
+ label: 'Options',
24
+ color: '#FAAD14',
25
+ },
26
+ TRACE: {
27
+ label: 'Trace',
28
+ color: '#FAAD14',
29
+ },
30
+ HEAD: {
31
+ label: 'Head',
32
+ color: '#FAAD14',
33
+ },
18
34
  }
19
35
 
20
36
  export const paramsTableHeaders = [
@@ -27,7 +43,7 @@ export const paramsTableHeaders = [
27
43
  },
28
44
  { id: 'paramType', label: 'In', sortable: false, classes: 'requiredParam' },
29
45
  { id: 'schemaType', label: 'Schema-Type', sortable: false, classes: 'requiredParam' },
30
- { id: 'isRequired', label: 'Required', sortable: false, classes: 'requiredParam' },
46
+ { id: 'required', label: 'Required', sortable: false, classes: 'requiredParam' },
31
47
  { id: 'description', label: 'Description', sortable: false },
32
48
  ]
33
49
 
@@ -42,7 +58,8 @@ export const httpStatusCodes = [
42
58
  300, 301, 302, 303, 304, 305, 306, 307, 308,
43
59
 
44
60
  // 4xx: Client errors
45
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, 429, 431, 451,
61
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
62
+ 421, 422, 423, 424, 425, 426, 428, 429, 431, 451,
46
63
 
47
64
  // 5xx: Server errors
48
65
  500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511,
@@ -0,0 +1,118 @@
1
+ import { TransformedPathsArray } from '@entities/layout.type'
2
+ import { OpenAPIFile } from '@entities/openApi'
3
+ import { TransformedOpenApi } from '@entities/transformedOpenApi'
4
+
5
+ export const transformOpenApiObject = (openApiJson: OpenAPIFile): TransformedOpenApi => {
6
+ if (openApiJson.components && openApiJson.components.securitySchemes) {
7
+ const authKey = Object.keys(openApiJson.components.securitySchemes)
8
+ if (authKey && authKey.length) {
9
+ openApiJson.components.securitySchemes[authKey[0]].type =
10
+ openApiJson?.components?.securitySchemes?.[authKey[0]]?.type?.toUpperCase()
11
+ }
12
+ }
13
+ return {
14
+ ...openApiJson,
15
+ paths: transformPathsToArray(openApiJson.paths),
16
+ } as TransformedOpenApi
17
+ }
18
+
19
+ export const transformOpenApiObjectToOrigin = (values: TransformedOpenApi): OpenAPIFile => {
20
+ const object = {
21
+ ...values,
22
+ paths: transformPathsArrayToOrigin(values.paths),
23
+ }
24
+ if (object.components && object.components.securitySchemes) {
25
+ const authKey = Object.keys(object.components.securitySchemes)
26
+ if (authKey && authKey.length) {
27
+ if (
28
+ object.components.securitySchemes[authKey[0]].type.toLowerCase() == 'APIKEY'.toLowerCase()
29
+ ) {
30
+ object.components.securitySchemes[authKey[0]].in =
31
+ object.components.securitySchemes[authKey[0]].in.toUpperCase()
32
+ }
33
+ object.components.securitySchemes[authKey[0]].type =
34
+ object?.components?.securitySchemes?.[authKey[0]]?.type?.toUpperCase()
35
+ }
36
+ }
37
+ return object
38
+ }
39
+
40
+ export const transformPathsToArray = (paths: OpenAPIFile['paths']): TransformedPathsArray | any => {
41
+ const transformedPaths = Object.entries(paths).map(([path, methods]) => ({
42
+ path,
43
+ methods: Object.entries(methods).map(([method, methodProps]) => {
44
+ const obj: any = {
45
+ ...methodProps,
46
+ type: method,
47
+ tags: methodProps.tags,
48
+ responses: Object.entries(methodProps.responses).map(([code, codeProps]) => {
49
+ const contentType = Object.keys(codeProps.content || {})[0]
50
+ return {
51
+ code,
52
+ content: {
53
+ contentType,
54
+ schema: codeProps.content?.[contentType]?.schema,
55
+ },
56
+ }
57
+ }),
58
+ }
59
+ if (method.toLowerCase() != 'get') {
60
+ obj['requestBody'] = methodProps.requestBody
61
+ ? Object.entries(methodProps.responses).map(([_, codeProps]) => {
62
+ const contentType = Object.keys(codeProps.content || {})[0]
63
+ return {
64
+ content: {
65
+ contentType,
66
+ schema: codeProps.content?.[contentType]?.schema,
67
+ },
68
+ }
69
+ })
70
+ : {}
71
+ }
72
+ return obj
73
+ }),
74
+ }))
75
+ return transformedPaths
76
+ }
77
+
78
+ export const transformPathsArrayToOrigin = (paths: TransformedPathsArray): OpenAPIFile['paths'] => {
79
+ return paths.reduce((acc, { path, methods }) => {
80
+ acc[path] = methods.reduce((methodAcc, { type, tags, responses, requestBody, ...rest }) => {
81
+ // Initialize the method object
82
+ methodAcc[type] = {
83
+ ...rest,
84
+ tags,
85
+ responses: responses.reduce((respAcc, { code, content }) => {
86
+ respAcc[code] = {
87
+ description: 'Success', // Assuming this is static from the original data
88
+ content: content.contentType
89
+ ? { [content.contentType]: { schema: content.schema } }
90
+ : {},
91
+ }
92
+ return respAcc
93
+ }, {} as Record<string, any>),
94
+ }
95
+
96
+ // Add requestBody for non-GET methods
97
+ if (type !== 'get' && requestBody?.length > 0) {
98
+ methodAcc[type].requestBody = {
99
+ content: {
100
+ [requestBody[0].content.contentType]: {
101
+ schema: {
102
+ ...requestBody[0].content.schema,
103
+ properties:
104
+ typeof requestBody[0].content.schema.properties === 'string'
105
+ ? JSON.parse(requestBody[0].content.schema.properties)
106
+ : requestBody[0].content.schema.properties,
107
+ },
108
+ },
109
+ },
110
+ }
111
+ }
112
+
113
+ return methodAcc
114
+ }, {} as Record<string, any>)
115
+
116
+ return acc
117
+ }, {} as OpenAPIFile['paths'])
118
+ }
@@ -0,0 +1,20 @@
1
+ export const handleStatusColor = (code: number): string => {
2
+ if (code >= 200 && code < 300) {
3
+ return 'green' // 2xx codes
4
+ } else if (code >= 400 && code < 500) {
5
+ return 'red' // 4xx codes
6
+ } else if (code >= 500 && code < 600) {
7
+ return 'red' // 5xx codes
8
+ } else if (code >= 100 && code < 200) {
9
+ return 'blue' // 1xx codes (Informational)
10
+ } else if (code >= 300 && code < 400) {
11
+ return 'orange' // 3xx codes (Redirection)
12
+ } else {
13
+ return 'gray' // Default or invalid status codes
14
+ }
15
+ }
16
+
17
+ export const capitalize = (str)=> {
18
+ if (!str) return "";
19
+ return str.charAt(0).toUpperCase() + str.slice(1);
20
+ }
@@ -20,6 +20,7 @@
20
20
 
21
21
  .editorSide {
22
22
  background-color: #fff;
23
+ padding-bottom: 1.25rem;
23
24
  }
24
25
 
25
26
  .livePreviewSide {