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

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 (103) hide show
  1. package/.editorconfig +12 -12
  2. package/.prettierignore +7 -7
  3. package/.prettierrc +15 -15
  4. package/dist/{a7568b270e175038.svg → 070dc6ecd197bc80.svg} +8 -8
  5. package/dist/{43595976d1fdccbf.svg → 2e10bbdb265df50e.svg} +4 -4
  6. package/dist/{b82c7612e73342f3.svg → 7f54eeb0bb2d1150.svg} +3 -3
  7. package/dist/{56dc416b683db280.svg → 8789eb84283ea95b.svg} +5 -5
  8. package/dist/{af16a554be8c4d69.svg → 9bdff13f8d8fa48a.svg} +3 -3
  9. package/dist/_virtual/index4.js +1 -1
  10. package/dist/_virtual/index5.js +1 -1
  11. package/dist/_virtual/index6.js +1 -1
  12. package/dist/{64efc2716808c4a4.svg → bb8b87cace25e052.svg} +3 -3
  13. package/dist/{72db3b05a96dd600.svg → d32ce84bbd78babd.svg} +3 -3
  14. package/dist/{844eba3f2e42a9eb.svg → d501922060662842.svg} +3 -3
  15. package/dist/node_modules/toposort/index.js +1 -1
  16. package/dist/node_modules/yup/index.esm.js +1 -1
  17. package/dist/src/assets/icons/AddRow.svg.js +1 -1
  18. package/dist/src/assets/icons/AddRow.svg.js.map +1 -1
  19. package/dist/src/assets/icons/CheckMarkSquare.svg.js +1 -1
  20. package/dist/src/assets/icons/CheckMarkSquare.svg.js.map +1 -1
  21. package/dist/src/assets/icons/CloseIcon.svg.js +1 -1
  22. package/dist/src/assets/icons/CloseIcon.svg.js.map +1 -1
  23. package/dist/src/assets/icons/DeleteIcon.svg.js +1 -1
  24. package/dist/src/assets/icons/DeleteIcon.svg.js.map +1 -1
  25. package/dist/src/assets/icons/DownArrow.svg.js +1 -1
  26. package/dist/src/assets/icons/DownArrow.svg.js.map +1 -1
  27. package/dist/src/assets/icons/EditIcon.svg.js +1 -1
  28. package/dist/src/assets/icons/EditIcon.svg.js.map +1 -1
  29. package/dist/src/assets/icons/UpArrow.svg.js +1 -1
  30. package/dist/src/assets/icons/UpArrow.svg.js.map +1 -1
  31. package/dist/src/assets/icons/deleteOutlinedIcon.svg.js +1 -1
  32. package/dist/src/assets/icons/deleteOutlinedIcon.svg.js.map +1 -1
  33. package/dist/src/components/Chips/Chips.js.map +1 -1
  34. package/dist/src/components/InfoForm/InfoForm.js.map +1 -1
  35. package/dist/src/components/JsonInput/JsonInput.js.map +1 -1
  36. package/dist/src/components/LivePreview/LivePreview.js.map +1 -1
  37. package/dist/src/components/MethodAccordion/MethodAccordion.js +1 -1
  38. package/dist/src/components/MethodAccordion/MethodAccordion.js.map +1 -1
  39. package/dist/src/components/SVGLoader/SVGLoader.js.map +1 -1
  40. package/dist/src/components/SectionHead/SectionHead.js.map +1 -1
  41. package/dist/src/components/SimpleLabelValue/SimpleLabelValue.js.map +1 -1
  42. package/dist/src/components/Tooltip/Tooltip.js.map +1 -1
  43. package/dist/src/components/dialog/index.js.map +1 -1
  44. package/dist/src/components/table/table.js +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.map +1 -1
  50. package/dist/src/helpers/layout.helper.js.map +1 -1
  51. package/dist/src/helpers/methodAccordion.helper.js.map +1 -1
  52. package/dist/src/layout/layout.js.map +1 -1
  53. package/dist/src/validator/form.scheme.js.map +1 -1
  54. package/dist/styles.css +212 -212
  55. package/package.json +43 -43
  56. package/rollup.config.js +35 -35
  57. package/src/assets/icons/AddRow.svg +3 -3
  58. package/src/assets/icons/CheckMarkSquare.svg +5 -5
  59. package/src/assets/icons/CloseIcon.svg +4 -4
  60. package/src/assets/icons/DeleteIcon.svg +3 -3
  61. package/src/assets/icons/DownArrow.svg +3 -3
  62. package/src/assets/icons/EditIcon.svg +3 -3
  63. package/src/assets/icons/UpArrow.svg +3 -3
  64. package/src/assets/icons/deleteOutlinedIcon.svg +8 -8
  65. package/src/assets/icons/index.ts +8 -8
  66. package/src/components/Chips/Chips.tsx +87 -87
  67. package/src/components/Chips/style.scss +147 -147
  68. package/src/components/InfoForm/InfoForm.module.scss +165 -165
  69. package/src/components/InfoForm/InfoForm.tsx +426 -426
  70. package/src/components/JsonInput/JsonInput.tsx +149 -149
  71. package/src/components/JsonInput/style.module.scss +133 -133
  72. package/src/components/LivePreview/LivePreview.module.scss +24 -24
  73. package/src/components/LivePreview/LivePreview.tsx +184 -184
  74. package/src/components/MethodAccordion/MethodAccordion.module.scss +338 -338
  75. package/src/components/MethodAccordion/MethodAccordion.tsx +515 -514
  76. package/src/components/SVGLoader/SVGLoader.tsx +94 -94
  77. package/src/components/SectionHead/SectionHead.scss +29 -29
  78. package/src/components/SectionHead/SectionHead.tsx +22 -22
  79. package/src/components/SimpleLabelValue/SimpleLabelValue.tsx +31 -31
  80. package/src/components/SimpleLabelValue/index.ts +1 -1
  81. package/src/components/SimpleLabelValue/style.scss +30 -30
  82. package/src/components/Tooltip/Tooltip.scss +133 -133
  83. package/src/components/Tooltip/Tooltip.tsx +85 -85
  84. package/src/components/_global.scss +337 -337
  85. package/src/components/dialog/dialog.ts +54 -54
  86. package/src/components/dialog/index.tsx +85 -85
  87. package/src/components/dialog/style.scss +104 -104
  88. package/src/components/table/style.scss +190 -190
  89. package/src/components/table/table.tsx +327 -322
  90. package/src/components/table/tags-table.tsx +348 -341
  91. package/src/constants/index.ts +93 -93
  92. package/src/constants/regex.ts +7 -7
  93. package/src/global.d.ts +13 -13
  94. package/src/helpers/layout.helper.ts +162 -162
  95. package/src/helpers/methodAccordion.helper.ts +19 -19
  96. package/src/index.ts +1 -1
  97. package/src/layout/layout.module.css +61 -61
  98. package/src/layout/layout.tsx +150 -150
  99. package/src/types/layout.type.ts +30 -30
  100. package/src/types/openApi.ts +108 -108
  101. package/src/types/transformedOpenApi.ts +52 -52
  102. package/src/validator/form.scheme.ts +70 -70
  103. 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