@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,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[]