@digi-frontend/dgate-api-documentation 1.0.31 → 1.0.32

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 (104) hide show
  1. package/.editorconfig +12 -12
  2. package/.prettierignore +7 -7
  3. package/.prettierrc +15 -15
  4. package/dist/{2e10bbdb265df50e.svg → 43595976d1fdccbf.svg} +4 -4
  5. package/dist/{8789eb84283ea95b.svg → 56dc416b683db280.svg} +5 -5
  6. package/dist/{bb8b87cace25e052.svg → 64efc2716808c4a4.svg} +3 -3
  7. package/dist/{d32ce84bbd78babd.svg → 72db3b05a96dd600.svg} +3 -3
  8. package/dist/{d501922060662842.svg → 844eba3f2e42a9eb.svg} +3 -3
  9. package/dist/_virtual/index3.js +1 -1
  10. package/dist/_virtual/index4.js +1 -1
  11. package/dist/_virtual/index5.js +1 -1
  12. package/dist/_virtual/index6.js +1 -1
  13. package/dist/{070dc6ecd197bc80.svg → a7568b270e175038.svg} +8 -8
  14. package/dist/{9bdff13f8d8fa48a.svg → af16a554be8c4d69.svg} +3 -3
  15. package/dist/{7f54eeb0bb2d1150.svg → b82c7612e73342f3.svg} +3 -3
  16. package/dist/node_modules/toposort/index.js +1 -1
  17. package/dist/node_modules/yup/index.esm.js +1 -1
  18. package/dist/src/assets/icons/AddRow.svg.js +1 -1
  19. package/dist/src/assets/icons/AddRow.svg.js.map +1 -1
  20. package/dist/src/assets/icons/CheckMarkSquare.svg.js +1 -1
  21. package/dist/src/assets/icons/CheckMarkSquare.svg.js.map +1 -1
  22. package/dist/src/assets/icons/CloseIcon.svg.js +1 -1
  23. package/dist/src/assets/icons/CloseIcon.svg.js.map +1 -1
  24. package/dist/src/assets/icons/DeleteIcon.svg.js +1 -1
  25. package/dist/src/assets/icons/DeleteIcon.svg.js.map +1 -1
  26. package/dist/src/assets/icons/DownArrow.svg.js +1 -1
  27. package/dist/src/assets/icons/DownArrow.svg.js.map +1 -1
  28. package/dist/src/assets/icons/EditIcon.svg.js +1 -1
  29. package/dist/src/assets/icons/EditIcon.svg.js.map +1 -1
  30. package/dist/src/assets/icons/UpArrow.svg.js +1 -1
  31. package/dist/src/assets/icons/UpArrow.svg.js.map +1 -1
  32. package/dist/src/assets/icons/deleteOutlinedIcon.svg.js +1 -1
  33. package/dist/src/assets/icons/deleteOutlinedIcon.svg.js.map +1 -1
  34. package/dist/src/components/Chips/Chips.js.map +1 -1
  35. package/dist/src/components/InfoForm/InfoForm.js +1 -1
  36. package/dist/src/components/InfoForm/InfoForm.js.map +1 -1
  37. package/dist/src/components/JsonInput/JsonInput.js.map +1 -1
  38. package/dist/src/components/LivePreview/LivePreview.js.map +1 -1
  39. package/dist/src/components/MethodAccordion/MethodAccordion.js.map +1 -1
  40. package/dist/src/components/SVGLoader/SVGLoader.js.map +1 -1
  41. package/dist/src/components/SectionHead/SectionHead.js.map +1 -1
  42. package/dist/src/components/SimpleLabelValue/SimpleLabelValue.js.map +1 -1
  43. package/dist/src/components/Tooltip/Tooltip.js.map +1 -1
  44. package/dist/src/components/dialog/index.js.map +1 -1
  45. package/dist/src/components/table/table.js.map +1 -1
  46. package/dist/src/components/table/tags-table.js +1 -1
  47. package/dist/src/components/table/tags-table.js.map +1 -1
  48. package/dist/src/constants/index.js.map +1 -1
  49. package/dist/src/constants/regex.js +1 -1
  50. package/dist/src/constants/regex.js.map +1 -1
  51. package/dist/src/helpers/layout.helper.js.map +1 -1
  52. package/dist/src/helpers/methodAccordion.helper.js.map +1 -1
  53. package/dist/src/layout/layout.js.map +1 -1
  54. package/dist/src/validator/form.scheme.js.map +1 -1
  55. package/dist/styles.css +335 -335
  56. package/package.json +43 -43
  57. package/rollup.config.js +35 -35
  58. package/src/assets/icons/AddRow.svg +3 -3
  59. package/src/assets/icons/CheckMarkSquare.svg +5 -5
  60. package/src/assets/icons/CloseIcon.svg +4 -4
  61. package/src/assets/icons/DeleteIcon.svg +3 -3
  62. package/src/assets/icons/DownArrow.svg +3 -3
  63. package/src/assets/icons/EditIcon.svg +3 -3
  64. package/src/assets/icons/UpArrow.svg +3 -3
  65. package/src/assets/icons/deleteOutlinedIcon.svg +8 -8
  66. package/src/assets/icons/index.ts +8 -8
  67. package/src/components/Chips/Chips.tsx +87 -87
  68. package/src/components/Chips/style.scss +147 -147
  69. package/src/components/InfoForm/InfoForm.module.scss +165 -165
  70. package/src/components/InfoForm/InfoForm.tsx +424 -426
  71. package/src/components/JsonInput/JsonInput.tsx +149 -149
  72. package/src/components/JsonInput/style.module.scss +133 -133
  73. package/src/components/LivePreview/LivePreview.module.scss +24 -24
  74. package/src/components/LivePreview/LivePreview.tsx +184 -184
  75. package/src/components/MethodAccordion/MethodAccordion.module.scss +338 -338
  76. package/src/components/MethodAccordion/MethodAccordion.tsx +515 -515
  77. package/src/components/SVGLoader/SVGLoader.tsx +94 -94
  78. package/src/components/SectionHead/SectionHead.scss +29 -29
  79. package/src/components/SectionHead/SectionHead.tsx +22 -22
  80. package/src/components/SimpleLabelValue/SimpleLabelValue.tsx +31 -31
  81. package/src/components/SimpleLabelValue/index.ts +1 -1
  82. package/src/components/SimpleLabelValue/style.scss +30 -30
  83. package/src/components/Tooltip/Tooltip.scss +133 -133
  84. package/src/components/Tooltip/Tooltip.tsx +85 -85
  85. package/src/components/_global.scss +337 -337
  86. package/src/components/dialog/dialog.ts +54 -54
  87. package/src/components/dialog/index.tsx +85 -85
  88. package/src/components/dialog/style.scss +104 -104
  89. package/src/components/table/style.scss +190 -190
  90. package/src/components/table/table.tsx +327 -327
  91. package/src/components/table/tags-table.tsx +348 -348
  92. package/src/constants/index.ts +93 -93
  93. package/src/constants/regex.ts +7 -7
  94. package/src/global.d.ts +13 -13
  95. package/src/helpers/layout.helper.ts +162 -162
  96. package/src/helpers/methodAccordion.helper.ts +19 -19
  97. package/src/index.ts +1 -1
  98. package/src/layout/layout.module.css +61 -61
  99. package/src/layout/layout.tsx +150 -150
  100. package/src/types/layout.type.ts +30 -30
  101. package/src/types/openApi.ts +108 -108
  102. package/src/types/transformedOpenApi.ts +52 -52
  103. package/src/validator/form.scheme.ts +70 -70
  104. package/tsconfig.json +33 -33
@@ -1,184 +1,184 @@
1
- import React, { useEffect, useState } from 'react'
2
- import styles from './LivePreview.module.scss'
3
- import SimpleLabelValue from '../../components/SimpleLabelValue'
4
- import MethodsAccordion from '../../components/MethodAccordion/MethodAccordion'
5
- import { TransformedOpenApi } from '../../types/transformedOpenApi'
6
- import { useFormikContext } from 'formik'
7
- import { methodColorMapping, tagsTableHeaders } from '../../constants/index'
8
- import TagsTable from '../table/tags-table'
9
- import { Button, Chip } from 'digitinary-ui'
10
- import Tooltip from '../../components/Tooltip/Tooltip'
11
-
12
- interface LivePreviewProps {
13
- transformedData?: TransformedOpenApi
14
- }
15
-
16
- const LivePreview: React.FC<LivePreviewProps> = ({ transformedData }) => {
17
- const [tableRecords, setTableRecords] = useState()
18
- const [tooltipRefs, setTooltipRefs] = useState<{ [key: number]: any }>({})
19
- const [tableData, setTableData] = useState([])
20
- const [externalTooltipRefs, setExternalTooltipRefs] = useState<{ [key: number]: any }>({})
21
- const { values } = useFormikContext<TransformedOpenApi>()
22
- const { info, components, tags } = values
23
- const { securitySchemes } = components
24
- const securityKey =
25
- securitySchemes && typeof securitySchemes == 'object' && Object.keys(securitySchemes).length
26
- ? Object.keys(securitySchemes)[0]
27
- : null
28
-
29
- useEffect(() => {
30
- if (values.tags) {
31
- setTableRecords(generateTableData(values.tags, true))
32
- setTableData(values.tags)
33
- }
34
- }, [values.tags])
35
-
36
- const generateTableData = (items, readOnly) => {
37
- return items.map((item, index) => ({
38
- id: index,
39
- tagName: item.name,
40
- description: (
41
- <Tooltip
42
- key={`${index}-description`}
43
- allowHTML
44
- disabled={item.description?.length <= 12}
45
- content={<div style={{ padding: '0.625rem' }}>{item.description}</div>}
46
- arrowWithBorder
47
- placement="bottom-end"
48
- type="function"
49
- delay={[0, 0]}
50
- >
51
- <div className={styles.paramDescContainer}>
52
- <p className={styles.editDescBtn}>
53
- {item.description ? item.description.substring(0, 12) : '-'}
54
- {item.description && item.description.length > 12 ? '...' : ''}
55
- </p>
56
- </div>
57
- </Tooltip>
58
- ),
59
- externalDocs: (
60
- <div className={styles.paramDescContainer}>
61
- {item.externalDocs && item.externalDocs.url && item.externalDocs.url != '-' ? (
62
- <a
63
- className={styles.editDescBtn}
64
- href={
65
- item.externalDocs?.url && item.externalDocs?.url.indexOf('http') > -1
66
- ? item.externalDocs?.url
67
- : `https://${item.externalDocs?.url}`
68
- }
69
- rel="noopener noreferrer"
70
- target="_blank"
71
- >
72
- {item?.externalDocs?.description
73
- ? item?.externalDocs?.description?.substring(0, 12)
74
- : '-'}
75
- {item?.externalDocs?.description && item?.externalDocs?.description?.length > 12
76
- ? '...'
77
- : ''}
78
- </a>
79
- ) : (
80
- <Button className={styles.editDescBtn} variant="link" color="action">
81
- {item.externalDocs?.description
82
- ? item.externalDocs?.description.substring(0, 12)
83
- : '-'}
84
- {item.externalDocs?.description && item.externalDocs?.description.length > 12
85
- ? '...'
86
- : ''}
87
- </Button>
88
- )}
89
-
90
- {/* </Tooltip> */}
91
-
92
- {!readOnly && <div className={styles.paramDescContainer_separator}></div>}
93
-
94
- {!readOnly && (
95
- <Button
96
- className={styles.deleteParamBtn}
97
- variant="link"
98
- color="error"
99
- onClick={() => null}
100
- ></Button>
101
- )}
102
- </div>
103
- ),
104
- }))
105
- }
106
-
107
- return (
108
- <div className={styles.livePreviewContainer}>
109
- <div className="row">
110
- <div className="col-md-12">
111
- <div className={styles.titleContainer}>
112
- <p className={styles.apiName}>{info?.title?.trim() || '-'}</p>
113
- <Chip className={styles.livePreviewChip}>Live Preview</Chip>
114
- </div>
115
- <SimpleLabelValue
116
- key={'APIAuthenticationType'}
117
- label={'API authentication type: '}
118
- value={
119
- !!securityKey
120
- ? securitySchemes[securityKey].scheme || securitySchemes[securityKey].type
121
- : '-'
122
- }
123
- />
124
- <SimpleLabelValue key={'version'} label={'Version: '} value={info?.version || '-'} />
125
- <SimpleLabelValue
126
- key={'description'}
127
- label={'Description: '}
128
- value={info?.description?.trim() || '-'}
129
- />
130
-
131
- <SimpleLabelValue key={'tags'} label={'Tags: '} />
132
- <TagsTable
133
- id="tags-table"
134
- data={tableRecords}
135
- headCells={tagsTableHeaders}
136
- isFormOpen={false}
137
- setIsFormOpen={() => null}
138
- saveNewRow={() => null}
139
- readOnly={true}
140
- />
141
-
142
- <SimpleLabelValue key={'endpoints'} label={'Endpoints '} />
143
- {values.paths.map((path) => (
144
- <div className={styles.methodsContainer} key={path.path}>
145
- {Object.entries(
146
- path.methods
147
- .sort(
148
- (a, b) => methodColorMapping[a.type].order + methodColorMapping[b.type].order
149
- )
150
- .reduce((groupedMethods, method) => {
151
- // Handle methods without tags
152
- const tags = method.tags?.length ? method?.tags : ['default']
153
-
154
- tags.forEach((tag) => {
155
- if (!groupedMethods[tag]) {
156
- groupedMethods[tag] = []
157
- }
158
- groupedMethods[tag].push(method)
159
- })
160
-
161
- return groupedMethods
162
- }, {})
163
- ).map(([tag, methods]) => (
164
- <div key={tag}>
165
- <h3>{tag}</h3>
166
- {methods?.map((method, methodIndex) => (
167
- <MethodsAccordion
168
- readOnly
169
- method={method}
170
- path={path.path}
171
- tags={values.tags}
172
- />
173
- ))}
174
- </div>
175
- ))}
176
- </div>
177
- ))}
178
- </div>
179
- </div>
180
- </div>
181
- )
182
- }
183
-
184
- export default LivePreview
1
+ import React, { useEffect, useState } from 'react'
2
+ import styles from './LivePreview.module.scss'
3
+ import SimpleLabelValue from '../../components/SimpleLabelValue'
4
+ import MethodsAccordion from '../../components/MethodAccordion/MethodAccordion'
5
+ import { TransformedOpenApi } from '../../types/transformedOpenApi'
6
+ import { useFormikContext } from 'formik'
7
+ import { methodColorMapping, tagsTableHeaders } from '../../constants/index'
8
+ import TagsTable from '../table/tags-table'
9
+ import { Button, Chip } from 'digitinary-ui'
10
+ import Tooltip from '../../components/Tooltip/Tooltip'
11
+
12
+ interface LivePreviewProps {
13
+ transformedData?: TransformedOpenApi
14
+ }
15
+
16
+ const LivePreview: React.FC<LivePreviewProps> = ({ transformedData }) => {
17
+ const [tableRecords, setTableRecords] = useState()
18
+ const [tooltipRefs, setTooltipRefs] = useState<{ [key: number]: any }>({})
19
+ const [tableData, setTableData] = useState([])
20
+ const [externalTooltipRefs, setExternalTooltipRefs] = useState<{ [key: number]: any }>({})
21
+ const { values } = useFormikContext<TransformedOpenApi>()
22
+ const { info, components, tags } = values
23
+ const { securitySchemes } = components
24
+ const securityKey =
25
+ securitySchemes && typeof securitySchemes == 'object' && Object.keys(securitySchemes).length
26
+ ? Object.keys(securitySchemes)[0]
27
+ : null
28
+
29
+ useEffect(() => {
30
+ if (values.tags) {
31
+ setTableRecords(generateTableData(values.tags, true))
32
+ setTableData(values.tags)
33
+ }
34
+ }, [values.tags])
35
+
36
+ const generateTableData = (items, readOnly) => {
37
+ return items.map((item, index) => ({
38
+ id: index,
39
+ tagName: item.name,
40
+ description: (
41
+ <Tooltip
42
+ key={`${index}-description`}
43
+ allowHTML
44
+ disabled={item.description?.length <= 12}
45
+ content={<div style={{ padding: '0.625rem' }}>{item.description}</div>}
46
+ arrowWithBorder
47
+ placement="bottom-end"
48
+ type="function"
49
+ delay={[0, 0]}
50
+ >
51
+ <div className={styles.paramDescContainer}>
52
+ <p className={styles.editDescBtn}>
53
+ {item.description ? item.description.substring(0, 12) : '-'}
54
+ {item.description && item.description.length > 12 ? '...' : ''}
55
+ </p>
56
+ </div>
57
+ </Tooltip>
58
+ ),
59
+ externalDocs: (
60
+ <div className={styles.paramDescContainer}>
61
+ {item.externalDocs && item.externalDocs.url && item.externalDocs.url != '-' ? (
62
+ <a
63
+ className={styles.editDescBtn}
64
+ href={
65
+ item.externalDocs?.url && item.externalDocs?.url.indexOf('http') > -1
66
+ ? item.externalDocs?.url
67
+ : `https://${item.externalDocs?.url}`
68
+ }
69
+ rel="noopener noreferrer"
70
+ target="_blank"
71
+ >
72
+ {item?.externalDocs?.description
73
+ ? item?.externalDocs?.description?.substring(0, 12)
74
+ : '-'}
75
+ {item?.externalDocs?.description && item?.externalDocs?.description?.length > 12
76
+ ? '...'
77
+ : ''}
78
+ </a>
79
+ ) : (
80
+ <Button className={styles.editDescBtn} variant="link" color="action">
81
+ {item.externalDocs?.description
82
+ ? item.externalDocs?.description.substring(0, 12)
83
+ : '-'}
84
+ {item.externalDocs?.description && item.externalDocs?.description.length > 12
85
+ ? '...'
86
+ : ''}
87
+ </Button>
88
+ )}
89
+
90
+ {/* </Tooltip> */}
91
+
92
+ {!readOnly && <div className={styles.paramDescContainer_separator}></div>}
93
+
94
+ {!readOnly && (
95
+ <Button
96
+ className={styles.deleteParamBtn}
97
+ variant="link"
98
+ color="error"
99
+ onClick={() => null}
100
+ ></Button>
101
+ )}
102
+ </div>
103
+ ),
104
+ }))
105
+ }
106
+
107
+ return (
108
+ <div className={styles.livePreviewContainer}>
109
+ <div className="row">
110
+ <div className="col-md-12">
111
+ <div className={styles.titleContainer}>
112
+ <p className={styles.apiName}>{info?.title?.trim() || '-'}</p>
113
+ <Chip className={styles.livePreviewChip}>Live Preview</Chip>
114
+ </div>
115
+ <SimpleLabelValue
116
+ key={'APIAuthenticationType'}
117
+ label={'API authentication type: '}
118
+ value={
119
+ !!securityKey
120
+ ? securitySchemes[securityKey].scheme || securitySchemes[securityKey].type
121
+ : '-'
122
+ }
123
+ />
124
+ <SimpleLabelValue key={'version'} label={'Version: '} value={info?.version || '-'} />
125
+ <SimpleLabelValue
126
+ key={'description'}
127
+ label={'Description: '}
128
+ value={info?.description?.trim() || '-'}
129
+ />
130
+
131
+ <SimpleLabelValue key={'tags'} label={'Tags: '} />
132
+ <TagsTable
133
+ id="tags-table"
134
+ data={tableRecords}
135
+ headCells={tagsTableHeaders}
136
+ isFormOpen={false}
137
+ setIsFormOpen={() => null}
138
+ saveNewRow={() => null}
139
+ readOnly={true}
140
+ />
141
+
142
+ <SimpleLabelValue key={'endpoints'} label={'Endpoints '} />
143
+ {values.paths.map((path) => (
144
+ <div className={styles.methodsContainer} key={path.path}>
145
+ {Object.entries(
146
+ path.methods
147
+ .sort(
148
+ (a, b) => methodColorMapping[a.type].order + methodColorMapping[b.type].order
149
+ )
150
+ .reduce((groupedMethods, method) => {
151
+ // Handle methods without tags
152
+ const tags = method.tags?.length ? method?.tags : ['default']
153
+
154
+ tags.forEach((tag) => {
155
+ if (!groupedMethods[tag]) {
156
+ groupedMethods[tag] = []
157
+ }
158
+ groupedMethods[tag].push(method)
159
+ })
160
+
161
+ return groupedMethods
162
+ }, {})
163
+ ).map(([tag, methods]) => (
164
+ <div key={tag}>
165
+ <h3>{tag}</h3>
166
+ {methods?.map((method, methodIndex) => (
167
+ <MethodsAccordion
168
+ readOnly
169
+ method={method}
170
+ path={path.path}
171
+ tags={values.tags}
172
+ />
173
+ ))}
174
+ </div>
175
+ ))}
176
+ </div>
177
+ ))}
178
+ </div>
179
+ </div>
180
+ </div>
181
+ )
182
+ }
183
+
184
+ export default LivePreview