@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,62 +1,62 @@
1
- .docsLayout {
2
- display: flex;
3
- flex-direction: column;
4
- overflow: hidden;
5
- height: 100vh;
6
- max-height: 100%;
7
-
8
- .apiDocAlert {
9
- border-radius: 0;
10
- z-index: 3;
11
- }
12
-
13
- .layoutContainer {
14
- display: grid;
15
- grid-template-columns: 60% 40%;
16
- width: 100%;
17
- height: 100%;
18
- max-width: 100%;
19
- max-height: 100%;
20
- overflow: hidden;
21
-
22
- .editorSide {
23
- background-color: #fff;
24
- padding-bottom: 1.25rem;
25
-
26
- .editorSectionHead {
27
-
28
- span {
29
- width: 100%;
30
- }
31
-
32
- .editorSectionHead_content {
33
- display: flex;
34
- justify-content: space-between;
35
- align-items: center;
36
-
37
- button {
38
- width: 6.25rem;
39
- }
40
- }
41
-
42
- }
43
- }
44
-
45
- .livePreviewSide {
46
- background-color: #f8f9fb;
47
- padding: 1.25rem 1.875rem;
48
- }
49
-
50
- .docSide {
51
- max-height: 100%;
52
- overflow-y: overlay;
53
- overflow-x: clip;
54
- scroll-behavior: smooth;
55
- }
56
- }
57
-
58
- :global(.textArea .inputField),
59
- :global(.inputContainer .inputWrapper .innerInputContainer .input) {
60
- padding-inline-end: 2.5rem;
61
- }
1
+ .docsLayout {
2
+ display: flex;
3
+ flex-direction: column;
4
+ overflow: hidden;
5
+ height: 100vh;
6
+ max-height: 100%;
7
+
8
+ .apiDocAlert {
9
+ border-radius: 0;
10
+ z-index: 3;
11
+ }
12
+
13
+ .layoutContainer {
14
+ display: grid;
15
+ grid-template-columns: 60% 40%;
16
+ width: 100%;
17
+ height: 100%;
18
+ max-width: 100%;
19
+ max-height: 100%;
20
+ overflow: hidden;
21
+
22
+ .editorSide {
23
+ background-color: #fff;
24
+ padding-bottom: 1.25rem;
25
+
26
+ .editorSectionHead {
27
+
28
+ span {
29
+ width: 100%;
30
+ }
31
+
32
+ .editorSectionHead_content {
33
+ display: flex;
34
+ justify-content: space-between;
35
+ align-items: center;
36
+
37
+ button {
38
+ width: 6.25rem;
39
+ }
40
+ }
41
+
42
+ }
43
+ }
44
+
45
+ .livePreviewSide {
46
+ background-color: #f8f9fb;
47
+ padding: 1.25rem 1.875rem;
48
+ }
49
+
50
+ .docSide {
51
+ max-height: 100%;
52
+ overflow-y: overlay;
53
+ overflow-x: clip;
54
+ scroll-behavior: smooth;
55
+ }
56
+ }
57
+
58
+ :global(.textArea .inputField),
59
+ :global(.inputContainer .inputWrapper .innerInputContainer .input) {
60
+ padding-inline-end: 2.5rem;
61
+ }
62
62
  }
@@ -1,150 +1,150 @@
1
- import { JSX, useEffect, useState } from 'react'
2
- import { Alert, Button } from 'digitinary-ui'
3
- import MethodsAccordion from '../components/MethodAccordion/MethodAccordion'
4
- import styles from './layout.module.css'
5
- import InfoForm from '../components/InfoForm/InfoForm'
6
- import SectionHead from '../components/SectionHead/SectionHead'
7
- import { transformOpenApiObject, transformOpenApiObjectToOrigin } from '../helpers/layout.helper'
8
- import { OpenAPIFile } from '../types/openApi'
9
- import LivePreview from '../components/LivePreview/LivePreview'
10
- import { FormikProvider, useFormik } from 'formik'
11
- import { schemaValidation } from '../validator/form.scheme'
12
- import { TransformedOpenApi } from '@entities/transformedOpenApi'
13
- import { methodColorMapping } from '../constants/index'
14
- import CommonDialog from '../components/dialog'
15
-
16
- interface ILayoutProps {
17
- openApiJson?: OpenAPIFile
18
- handleSave?: (values: unknown) => unknown
19
- setIsFormDirty?: any
20
- }
21
-
22
- const Layout = ({ openApiJson, handleSave, setIsFormDirty }: ILayoutProps): JSX.Element => {
23
- const clonedOpenApiJson = structuredClone(openApiJson)
24
- const transformedOpenApi = transformOpenApiObject(clonedOpenApiJson)
25
- const formik = useFormik<TransformedOpenApi>({
26
- initialValues: structuredClone(transformedOpenApi),
27
- validationSchema: schemaValidation,
28
- validateOnMount: true,
29
- onSubmit: (values, { validateForm, resetForm }) => {
30
- // Handle save logic
31
- const originalOpenApiForm = transformOpenApiObjectToOrigin(values)
32
- handleSave(originalOpenApiForm)
33
- resetForm({
34
- values: values, // You can reset it to the same values if you want
35
- })
36
-
37
- validateForm(values)
38
- },
39
- })
40
- const { dirty, isValid, isSubmitting, values, setFieldValue, handleSubmit } = formik
41
- const [isPublishDialogOpen, setIsPublishDialogOpen] = useState(false)
42
- const [openMethodIndex, setOpenMethodIndex] = useState<number | null>(null)
43
-
44
- useEffect(() => {
45
- if (setIsFormDirty) {
46
- setIsFormDirty(dirty)
47
- }
48
- }, [dirty])
49
-
50
- return (
51
- <div className={styles.docsLayout}>
52
- {dirty && (
53
- <Alert className={styles.apiDocAlert} color="warning" severity="warning">
54
- There are changes you made may not be saved
55
- </Alert>
56
- )}
57
- <div className={styles.layoutContainer}>
58
- <div className={`${styles.editorSide} ${styles.docSide}`}>
59
- <SectionHead
60
- className={styles.editorSectionHead}
61
- text={
62
- <div className={styles.editorSectionHead_content}>
63
- API Information
64
- <Button
65
- className={styles.methodForm_submitBtn}
66
- size="medium"
67
- fullWidth={false}
68
- type="submit"
69
- variant="contained"
70
- color="primary"
71
- onClick={() => setIsPublishDialogOpen(true)}
72
- disabled={!isValid || isSubmitting || !dirty}
73
- >
74
- Save
75
- </Button>
76
- </div>
77
- }
78
- />
79
- <FormikProvider value={formik}>
80
- <InfoForm />
81
- </FormikProvider>
82
- <SectionHead className={styles.editorSectionHead} text="Endpoints" />
83
- <FormikProvider value={formik}>
84
- {values.paths.map((path, pathIndex) => (
85
- <>
86
- {path.methods
87
- .sort(
88
- (a, b) => methodColorMapping[a.type].order - methodColorMapping[b.type].order
89
- )
90
- .map((method, methodIndex) => (
91
- <MethodsAccordion
92
- tags={values.tags}
93
- method={method}
94
- path={path.path}
95
- setFieldValue={(key, value) => {
96
- const h = `paths[${pathIndex}].methods[${methodIndex}].${key}`
97
- setFieldValue(h, value)
98
- }}
99
- isOpen={openMethodIndex === methodIndex}
100
- setIsOpen={(open) => setOpenMethodIndex(open ? methodIndex : null)}
101
- />
102
- ))}
103
- </>
104
- ))}
105
- </FormikProvider>
106
- </div>
107
- <div className={`${styles.livePreviewSide} ${styles.docSide}`}>
108
- {transformedOpenApi && (
109
- <FormikProvider value={formik}>
110
- <LivePreview transformedData={transformedOpenApi} />
111
- </FormikProvider>
112
- )}
113
- </div>
114
- </div>
115
- <CommonDialog
116
- status="warning"
117
- content={
118
- <p
119
- style={{
120
- textAlign: 'center',
121
- fontWeight: 400,
122
- fontSize: '1rem',
123
- lineHeight: '1.4375rem',
124
- }}
125
- >
126
- Are you sure you want to Publish your changes?
127
- </p>
128
- }
129
- onSubmit={{
130
- onClick: () => {
131
- handleSubmit()
132
- setIsPublishDialogOpen(false)
133
- },
134
- text: 'Publish',
135
- color: 'warning',
136
- fullWidth: true,
137
- }}
138
- onCancel={{
139
- text: 'Cancel',
140
- color: 'normal',
141
- fullWidth: true,
142
- }}
143
- onClose={() => setIsPublishDialogOpen(false)}
144
- open={isPublishDialogOpen}
145
- />
146
- </div>
147
- )
148
- }
149
-
150
- export default Layout
1
+ import { JSX, useEffect, useState } from 'react'
2
+ import { Alert, Button } from 'digitinary-ui'
3
+ import MethodsAccordion from '../components/MethodAccordion/MethodAccordion'
4
+ import styles from './layout.module.css'
5
+ import InfoForm from '../components/InfoForm/InfoForm'
6
+ import SectionHead from '../components/SectionHead/SectionHead'
7
+ import { transformOpenApiObject, transformOpenApiObjectToOrigin } from '../helpers/layout.helper'
8
+ import { OpenAPIFile } from '../types/openApi'
9
+ import LivePreview from '../components/LivePreview/LivePreview'
10
+ import { FormikProvider, useFormik } from 'formik'
11
+ import { schemaValidation } from '../validator/form.scheme'
12
+ import { TransformedOpenApi } from '@entities/transformedOpenApi'
13
+ import { methodColorMapping } from '../constants/index'
14
+ import CommonDialog from '../components/dialog'
15
+
16
+ interface ILayoutProps {
17
+ openApiJson?: OpenAPIFile
18
+ handleSave?: (values: unknown) => unknown
19
+ setIsFormDirty?: any
20
+ }
21
+
22
+ const Layout = ({ openApiJson, handleSave, setIsFormDirty }: ILayoutProps): JSX.Element => {
23
+ const clonedOpenApiJson = structuredClone(openApiJson)
24
+ const transformedOpenApi = transformOpenApiObject(clonedOpenApiJson)
25
+ const formik = useFormik<TransformedOpenApi>({
26
+ initialValues: structuredClone(transformedOpenApi),
27
+ validationSchema: schemaValidation,
28
+ validateOnMount: true,
29
+ onSubmit: (values, { validateForm, resetForm }) => {
30
+ // Handle save logic
31
+ const originalOpenApiForm = transformOpenApiObjectToOrigin(values)
32
+ handleSave(originalOpenApiForm)
33
+ resetForm({
34
+ values: values, // You can reset it to the same values if you want
35
+ })
36
+
37
+ validateForm(values)
38
+ },
39
+ })
40
+ const { dirty, isValid, isSubmitting, values, setFieldValue, handleSubmit } = formik
41
+ const [isPublishDialogOpen, setIsPublishDialogOpen] = useState(false)
42
+ const [openMethodIndex, setOpenMethodIndex] = useState<number | null>(null)
43
+
44
+ useEffect(() => {
45
+ if (setIsFormDirty) {
46
+ setIsFormDirty(dirty)
47
+ }
48
+ }, [dirty])
49
+
50
+ return (
51
+ <div className={styles.docsLayout}>
52
+ {dirty && (
53
+ <Alert className={styles.apiDocAlert} color="warning" severity="warning">
54
+ There are changes you made may not be saved
55
+ </Alert>
56
+ )}
57
+ <div className={styles.layoutContainer}>
58
+ <div className={`${styles.editorSide} ${styles.docSide}`}>
59
+ <SectionHead
60
+ className={styles.editorSectionHead}
61
+ text={
62
+ <div className={styles.editorSectionHead_content}>
63
+ API Information
64
+ <Button
65
+ className={styles.methodForm_submitBtn}
66
+ size="medium"
67
+ fullWidth={false}
68
+ type="submit"
69
+ variant="contained"
70
+ color="primary"
71
+ onClick={() => setIsPublishDialogOpen(true)}
72
+ disabled={!isValid || isSubmitting || !dirty}
73
+ >
74
+ Save
75
+ </Button>
76
+ </div>
77
+ }
78
+ />
79
+ <FormikProvider value={formik}>
80
+ <InfoForm />
81
+ </FormikProvider>
82
+ <SectionHead className={styles.editorSectionHead} text="Endpoints" />
83
+ <FormikProvider value={formik}>
84
+ {values.paths.map((path, pathIndex) => (
85
+ <>
86
+ {path.methods
87
+ .sort(
88
+ (a, b) => methodColorMapping[a.type].order - methodColorMapping[b.type].order
89
+ )
90
+ .map((method, methodIndex) => (
91
+ <MethodsAccordion
92
+ tags={values.tags}
93
+ method={method}
94
+ path={path.path}
95
+ setFieldValue={(key, value) => {
96
+ const h = `paths[${pathIndex}].methods[${methodIndex}].${key}`
97
+ setFieldValue(h, value)
98
+ }}
99
+ isOpen={openMethodIndex === methodIndex}
100
+ setIsOpen={(open) => setOpenMethodIndex(open ? methodIndex : null)}
101
+ />
102
+ ))}
103
+ </>
104
+ ))}
105
+ </FormikProvider>
106
+ </div>
107
+ <div className={`${styles.livePreviewSide} ${styles.docSide}`}>
108
+ {transformedOpenApi && (
109
+ <FormikProvider value={formik}>
110
+ <LivePreview transformedData={transformedOpenApi} />
111
+ </FormikProvider>
112
+ )}
113
+ </div>
114
+ </div>
115
+ <CommonDialog
116
+ status="warning"
117
+ content={
118
+ <p
119
+ style={{
120
+ textAlign: 'center',
121
+ fontWeight: 400,
122
+ fontSize: '1rem',
123
+ lineHeight: '1.4375rem',
124
+ }}
125
+ >
126
+ Are you sure you want to Publish your changes?
127
+ </p>
128
+ }
129
+ onSubmit={{
130
+ onClick: () => {
131
+ handleSubmit()
132
+ setIsPublishDialogOpen(false)
133
+ },
134
+ text: 'Publish',
135
+ color: 'warning',
136
+ fullWidth: true,
137
+ }}
138
+ onCancel={{
139
+ text: 'Cancel',
140
+ color: 'normal',
141
+ fullWidth: true,
142
+ }}
143
+ onClose={() => setIsPublishDialogOpen(false)}
144
+ open={isPublishDialogOpen}
145
+ />
146
+ </div>
147
+ )
148
+ }
149
+
150
+ export default Layout
@@ -1,30 +1,30 @@
1
- import { HTTPMethod } from './openApi'
2
-
3
- export type TransformedMethod = {
4
- type: HTTPMethod
5
- tags: string[]
6
- parameters: any
7
- requestBody: {
8
- content: {
9
- contentType: string
10
- schema: {
11
- properties: string
12
- type: string
13
- }
14
- }
15
- }
16
- responses: {
17
- code: string
18
- content: {
19
- contentType?: string
20
- schema?: unknown
21
- }
22
- }[]
23
- }
24
-
25
- export type TransformedPath = {
26
- path: string
27
- methods: TransformedMethod[]
28
- }
29
-
30
- export type TransformedPathsArray = TransformedPath[]
1
+ import { HTTPMethod } from './openApi'
2
+
3
+ export type TransformedMethod = {
4
+ type: HTTPMethod
5
+ tags: string[]
6
+ parameters: any
7
+ requestBody: {
8
+ content: {
9
+ contentType: string
10
+ schema: {
11
+ properties: string
12
+ type: string
13
+ }
14
+ }
15
+ }
16
+ responses: {
17
+ code: string
18
+ content: {
19
+ contentType?: string
20
+ schema?: unknown
21
+ }
22
+ }[]
23
+ }
24
+
25
+ export type TransformedPath = {
26
+ path: string
27
+ methods: TransformedMethod[]
28
+ }
29
+
30
+ export type TransformedPathsArray = TransformedPath[]