@digi-frontend/dgate-api-documentation 1.0.57 → 1.0.60

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 (81) hide show
  1. package/dist/_virtual/index4.js +1 -1
  2. package/dist/_virtual/index5.js +1 -1
  3. package/dist/_virtual/index6.js +1 -1
  4. package/dist/_virtual/index7.js +1 -1
  5. package/dist/node_modules/digitinary-ui/dist/index.js.map +1 -1
  6. package/dist/node_modules/highlight.js/lib/core.js.map +1 -1
  7. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js +1 -1
  8. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -1
  9. package/dist/node_modules/react-fast-compare/index.js +1 -1
  10. package/dist/node_modules/react-fast-compare/index.js.map +1 -1
  11. package/dist/node_modules/react-property/lib/index.js.map +1 -1
  12. package/dist/node_modules/toposort/index.js +1 -1
  13. package/dist/node_modules/yup/index.esm.js +1 -1
  14. package/dist/node_modules/yup/index.esm.js.map +1 -1
  15. package/dist/src/components/InfoForm/InfoForm.js +1 -1
  16. package/dist/src/components/InfoForm/InfoForm.js.map +1 -1
  17. package/dist/src/components/JsonInput/JsonInput.js.map +1 -1
  18. package/dist/src/components/LivePreview/LivePreview.js.map +1 -1
  19. package/dist/src/components/MethodAccordion/MethodAccordion.js.map +1 -1
  20. package/dist/src/components/SVGLoader/SVGLoader.js.map +1 -1
  21. package/dist/src/components/SectionHead/SectionHead.js.map +1 -1
  22. package/dist/src/components/SimpleLabelValue/SimpleLabelValue.js.map +1 -1
  23. package/dist/src/components/Tooltip/Tooltip.js.map +1 -1
  24. package/dist/src/components/dialog/index.js.map +1 -1
  25. package/dist/src/components/table/table.js +1 -1
  26. package/dist/src/components/table/table.js.map +1 -1
  27. package/dist/src/components/table/tags-table.js.map +1 -1
  28. package/dist/src/context/SectionToggleContext.js +2 -0
  29. package/dist/src/context/SectionToggleContext.js.map +1 -0
  30. package/dist/src/helpers/docs.helper.js +1 -1
  31. package/dist/src/helpers/docs.helper.js.map +1 -1
  32. package/dist/src/helpers/layout.helper.js.map +1 -1
  33. package/dist/src/layout/docsComponents/Codebox/Codebox.js.map +1 -1
  34. package/dist/src/layout/docsComponents/DocsAside/DocsAside.js +1 -1
  35. package/dist/src/layout/docsComponents/DocsAside/DocsAside.js.map +1 -1
  36. package/dist/src/layout/docsComponents/DocsContent/DocsContent.js +1 -1
  37. package/dist/src/layout/docsComponents/DocsContent/DocsContent.js.map +1 -1
  38. package/dist/src/layout/docsComponents/DocsContent/EndpointPage/index.js +1 -1
  39. package/dist/src/layout/docsComponents/DocsContent/EndpointPage/index.js.map +1 -1
  40. package/dist/src/layout/docsComponents/DocsContent/OverviewPage/index.js +1 -1
  41. package/dist/src/layout/docsComponents/DocsContent/OverviewPage/index.js.map +1 -1
  42. package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.js.map +1 -1
  43. package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js +1 -1
  44. package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js.map +1 -1
  45. package/dist/src/layout/docsLayout.js +1 -1
  46. package/dist/src/layout/docsLayout.js.map +1 -1
  47. package/dist/src/layout/layout.js +1 -1
  48. package/dist/src/layout/layout.js.map +1 -1
  49. package/dist/src/utils/index.js +1 -1
  50. package/dist/src/utils/index.js.map +1 -1
  51. package/dist/styles.css +753 -753
  52. package/dist/types/context/SectionToggleContext.d.ts +37 -0
  53. package/dist/types/layout/docsComponents/DocsContent/DocsContent.d.ts +2 -3
  54. package/dist/types/layout/docsComponents/DocsContent/EndpointPage/index.d.ts +4 -2
  55. package/dist/types/layout/docsComponents/DocsContent/OverviewPage/index.d.ts +2 -2
  56. package/dist/types/layout/docsComponents/DocsHeader/DocsHeader.d.ts +5 -2
  57. package/dist/types/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.d.ts +3 -4
  58. package/dist/types/layout/docsLayout.d.ts +1 -6
  59. package/dist/types/types/docsLayout.type.d.ts +7 -0
  60. package/dist/types/utils/index.d.ts +1 -0
  61. package/package.json +1 -1
  62. package/src/components/InfoForm/InfoForm.tsx +2 -1
  63. package/src/components/table/table.tsx +1 -3
  64. package/src/context/SectionToggleContext.tsx +121 -0
  65. package/src/helpers/docs.helper.ts +1 -1
  66. package/src/layout/docsComponents/DocsAside/DocsAside.tsx +3 -3
  67. package/src/layout/docsComponents/DocsAside/style.module.scss +3 -3
  68. package/src/layout/docsComponents/DocsContent/DocsContent.tsx +18 -7
  69. package/src/layout/docsComponents/DocsContent/EndpointPage/index.tsx +46 -10
  70. package/src/layout/docsComponents/DocsContent/OverviewPage/index.tsx +37 -30
  71. package/src/layout/docsComponents/DocsHeader/DocsHeader.tsx +4 -3
  72. package/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.tsx +68 -44
  73. package/src/layout/docsLayout.tsx +35 -96
  74. package/src/layout/layout.tsx +1 -0
  75. package/src/types/docsLayout.type.ts +7 -0
  76. package/src/utils/index.ts +5 -0
  77. package/the_npm_commands.sh +12 -0
  78. package/variables.txt +4 -0
  79. package/dist/src/layout/docsComponents/DocsContent/TagPage/index.js +0 -2
  80. package/dist/src/layout/docsComponents/DocsContent/TagPage/index.js.map +0 -1
  81. package/dist/types/layout/docsComponents/DocsContent/TagPage/index.d.ts +0 -8
@@ -3,56 +3,74 @@ import React, { useEffect, useRef } from 'react'
3
3
  import SVGLoader from '../../../components/SVGLoader/SVGLoader'
4
4
  import { arrowDownGray, arrowRightGray, document, eye } from '../../../assets/icons'
5
5
  import { EndpointData, OverviewData } from 'src/layout/docsLayout'
6
+ import { SectionEnum, useSectionToggle } from '../../../../src/context/SectionToggleContext'
6
7
 
7
8
  const DocsSideMenuTree = ({
8
9
  apis,
9
10
  setActiveItemData,
10
- activeItemData,
11
- activeType,
12
- expandedSections,
13
- setExpandedSections,
14
11
  isFirstApiExpanded,
15
12
  setIsFirstApiExpanded,
16
13
  setActiveType,
17
- toggleSection,
18
14
  canSelectFirstApi,
19
15
  canFocusSection,
20
16
  setCanFocusSection,
17
+ activeApiId,
18
+ setCanSelectFirstApi,
21
19
  }: {
22
20
  apis: OverviewData[]
23
21
  setActiveItemData: React.Dispatch<React.SetStateAction<OverviewData | EndpointData>>
24
22
  activeItemData: OverviewData | EndpointData
25
- expandedSections: Record<string, boolean>
26
- setExpandedSections: (newSections: Record<string, boolean>) => void
27
23
  isFirstApiExpanded: boolean
28
24
  setIsFirstApiExpanded: React.Dispatch<React.SetStateAction<boolean>>
29
25
  setActiveType: React.Dispatch<React.SetStateAction<'OVERVIEW' | 'ENDPOINT'>>
30
26
  activeType: 'OVERVIEW' | 'ENDPOINT'
31
- toggleSection: (apiId: string, sectionId: string, resetOthers?: boolean, key?: string[]) => void
32
27
  canSelectFirstApi?: boolean
33
28
  canFocusSection: boolean
34
29
  setCanFocusSection: React.Dispatch<React.SetStateAction<boolean>>
30
+ activeApiId: string
31
+ setCanSelectFirstApi: React.Dispatch<React.SetStateAction<boolean>>
35
32
  }) => {
33
+ const { expandedSections, toggleSection, generateSectionKey } = useSectionToggle()
34
+ const sectionRefs = useRef<Record<string, HTMLDivElement | null>>({})
35
+
36
36
  // Auto-expand first API only once
37
37
  useEffect(() => {
38
38
  if (canSelectFirstApi || !apis?.length || !isFirstApiExpanded) return
39
39
 
40
40
  const firstApi = apis[0]
41
- const sectionKey = `api-${firstApi.apiSpecId}-section`
42
- const overviewKey = `api-${firstApi.apiSpecId}-overview`
41
+ toggleSection(firstApi?.apiSpecId, [
42
+ { type: SectionEnum.API_SECTION, setTo: true },
43
+ { type: SectionEnum.OVERVIEW, setTo: true },
44
+ ])
43
45
 
44
- setExpandedSections({
45
- [sectionKey]: true,
46
- [overviewKey]: true,
47
- })
48
46
  setActiveItemData(firstApi)
49
47
  setActiveType('OVERVIEW')
50
48
  setIsFirstApiExpanded(false)
51
49
  }, [apis, isFirstApiExpanded])
52
50
 
51
+ useEffect(() => {
52
+ const activeApi = apis?.find((api) => api.apiSpecId === activeApiId)
53
+ if (activeApiId && apis.length > 0 && !!activeApi) {
54
+ toggleSection(activeApi.apiSpecId, [
55
+ { type: SectionEnum.API_SECTION, setTo: true },
56
+ { type: SectionEnum.OVERVIEW, setTo: true },
57
+ ])
58
+
59
+ setActiveItemData(activeApi)
60
+ setActiveType('OVERVIEW')
61
+ setIsFirstApiExpanded(false)
62
+ setCanSelectFirstApi(true)
63
+ setCanFocusSection(true)
64
+ }
65
+ }, [activeApiId, apis])
66
+
53
67
  const renderEndpoints = (endpoints: EndpointData[], api: OverviewData) =>
54
68
  endpoints.map((endpoint, index) => {
55
- const key = `api-${api.apiSpecId}-resource-${endpoint.id}`
69
+ const key = generateSectionKey({
70
+ apiId: api.apiSpecId,
71
+ type: SectionEnum.RESOURCE,
72
+ id: endpoint.id,
73
+ })
56
74
  const isExpanded = expandedSections[key]
57
75
 
58
76
  return (
@@ -63,16 +81,13 @@ const DocsSideMenuTree = ({
63
81
  if (!isExpanded) {
64
82
  setActiveItemData({
65
83
  ...endpoint,
66
- api: {
67
- id: api.apiSpecId,
68
- title: api.title,
69
- description: api.description,
70
- version: api.version,
71
- ...api,
72
- },
84
+ api,
73
85
  })
74
86
  setActiveType('ENDPOINT')
75
- toggleSection(api.apiSpecId, key, true, ['resource', 'overview'])
87
+ toggleSection(api.apiSpecId, [{ type: SectionEnum.RESOURCE, id: endpoint.id }], {
88
+ resetOthers: true,
89
+ filterKeys: [SectionEnum.RESOURCE, SectionEnum.OVERVIEW],
90
+ })
76
91
  }
77
92
  }}
78
93
  data-active={isExpanded}
@@ -89,14 +104,20 @@ const DocsSideMenuTree = ({
89
104
  api: OverviewData,
90
105
  sectionIndex: number
91
106
  ) => {
92
- const sectionKey = `api-${api.apiSpecId}-section-${sectionIndex}`
107
+ const sectionKey = generateSectionKey({
108
+ apiId: api.apiSpecId,
109
+ type: SectionEnum.TAG_SECTION,
110
+ index: sectionIndex,
111
+ })
93
112
  const isSectionExpanded = expandedSections[sectionKey]
94
113
 
95
114
  return (
96
115
  <div key={sectionKey} className="api-docs-api-tree__subsection">
97
116
  <div
98
117
  className="api-docs-api-tree__subsection-header"
99
- onClick={() => toggleSection(api.apiSpecId, sectionKey)}
118
+ onClick={() =>
119
+ toggleSection(api.apiSpecId, [{ type: SectionEnum.TAG_SECTION, index: sectionIndex }])
120
+ }
100
121
  >
101
122
  {isSectionExpanded ? (
102
123
  <SVGLoader src={arrowDownGray} />
@@ -114,24 +135,20 @@ const DocsSideMenuTree = ({
114
135
  }
115
136
 
116
137
  const renderApiSection = (api: OverviewData) => {
117
- const sectionKey = `api-${api.apiSpecId}-section`
118
- const endpointsKey = `api-${api.apiSpecId}-endpoints`
119
- const overviewKey = `api-${api.apiSpecId}-overview`
138
+ const sectionKey = generateSectionKey({ apiId: api.apiSpecId, type: SectionEnum.API_SECTION })
139
+ const endpointsKey = generateSectionKey({
140
+ apiId: api.apiSpecId,
141
+ type: SectionEnum.ENDPOINTS_SECTION,
142
+ })
143
+ const overviewKey = generateSectionKey({ apiId: api.apiSpecId, type: SectionEnum.OVERVIEW })
120
144
 
121
145
  const isApiExpanded = expandedSections[sectionKey]
122
- const isOverviewExpanded =
123
- 'apiSpecId' in activeItemData &&
124
- activeItemData.apiSpecId === api.apiSpecId &&
125
- activeType === 'OVERVIEW'
126
- const isEndpointActive =
127
- 'api' in activeItemData &&
128
- activeItemData.api.id === api.apiSpecId &&
129
- 'path' in activeItemData &&
130
- 'method' in activeItemData
131
- const sectionRef = useRef<HTMLDivElement>(null)
146
+ const isEndpointActive = expandedSections[endpointsKey]
147
+ const isOverviewExpanded = expandedSections[overviewKey]
132
148
  // Scroll to the section if it's expanded
133
- if (canFocusSection && sectionRef?.current) {
134
- sectionRef.current.scrollIntoView({ behavior: 'smooth', block: 'start' })
149
+ if (canFocusSection) {
150
+ const sectionEl = sectionRefs.current[api.apiSpecId]
151
+ sectionEl?.scrollIntoView({ behavior: 'smooth', block: 'start' })
135
152
  setCanFocusSection(false)
136
153
  }
137
154
 
@@ -140,11 +157,13 @@ const DocsSideMenuTree = ({
140
157
  key={api.apiSpecId}
141
158
  className="api-docs-api-tree__section"
142
159
  data-active={isEndpointActive || isOverviewExpanded}
143
- ref={sectionRef}
160
+ ref={(el) => {
161
+ sectionRefs.current[api.apiSpecId] = el
162
+ }}
144
163
  >
145
164
  <div
146
165
  className="api-docs-api-tree__section-header"
147
- onClick={() => toggleSection(api.apiSpecId, sectionKey)}
166
+ onClick={() => toggleSection(api.apiSpecId, [{ type: SectionEnum.API_SECTION }])}
148
167
  >
149
168
  {isApiExpanded ? <SVGLoader src={arrowDownGray} /> : <SVGLoader src={arrowRightGray} />}
150
169
  <SVGLoader src={document} />
@@ -157,7 +176,10 @@ const DocsSideMenuTree = ({
157
176
  className="api-docs-api-tree__section__overview"
158
177
  onClick={() => {
159
178
  if (!isOverviewExpanded) {
160
- toggleSection(api.apiSpecId, overviewKey, true, ['resource'])
179
+ toggleSection(api.apiSpecId, [{ type: SectionEnum.OVERVIEW }], {
180
+ resetOthers: true,
181
+ filterKeys: [SectionEnum.RESOURCE],
182
+ })
161
183
  setActiveItemData(api)
162
184
  setActiveType('OVERVIEW')
163
185
  }
@@ -170,7 +192,9 @@ const DocsSideMenuTree = ({
170
192
 
171
193
  <div
172
194
  className="api-docs-api-tree__section__endpoints"
173
- onClick={() => toggleSection(api.apiSpecId, endpointsKey)}
195
+ onClick={() =>
196
+ toggleSection(api.apiSpecId, [{ type: SectionEnum.ENDPOINTS_SECTION }])
197
+ }
174
198
  data-active={isEndpointActive && !isOverviewExpanded}
175
199
  >
176
200
  {expandedSections[endpointsKey] ? (
@@ -4,6 +4,7 @@ import { HTTPMethod, OpenAPIFile, Parameter, RequestBody, Responses } from '@ent
4
4
  import { transformOpenApiToDocs } from '../helpers/docs.helper'
5
5
  import { ApiSpecModel } from '@entities/index'
6
6
  import stableStringify from 'fast-json-stable-stringify'
7
+ import { SectionToggleProvider } from '../../src/context/SectionToggleContext'
7
8
 
8
9
  interface ILayoutProps {
9
10
  apis?: ApiSpecModel[]
@@ -24,12 +25,7 @@ export interface TagData {
24
25
  }
25
26
 
26
27
  export interface EndpointData extends TagData {
27
- api: {
28
- id: string
29
- description: string
30
- title: string
31
- version: string
32
- }
28
+ api: OverviewData
33
29
  }
34
30
 
35
31
  export interface OverviewData extends Omit<ApiSpecModel, 'metaData'> {
@@ -54,44 +50,11 @@ const DocsLayout = ({ apis, activeApiId, onProductNavigate }: ILayoutProps): JSX
54
50
  OverviewData | EndpointData | Record<string, never>
55
51
  >({})
56
52
  const [activeType, setActiveType] = useState<'OVERVIEW' | 'ENDPOINT'>('OVERVIEW')
57
- const [expandedSections, setExpandedSections] = useState<Record<string, boolean>>({})
58
53
  const allData = useRef([])
59
54
  const [pending, setPending] = useState(true)
60
55
  const [canSelectFirstApi, setCanSelectFirstApi] = useState(false)
61
56
  const [canFocusSection, setCanFocusSection] = useState(false)
62
57
 
63
- const toggleSection = (
64
- apiId: string,
65
- sectionId: string,
66
- resetOthers?: boolean,
67
- key?: string[]
68
- ) => {
69
- setCanSelectFirstApi(false)
70
- if (resetOthers && key) {
71
- const filteredExpandedSections = Object.fromEntries(
72
- Object.entries({ ...expandedSections }).filter(([expandKey]) => {
73
- // Close other APIs sections
74
- if (!expandKey.includes(apiId)) return false
75
- // always return the clicked on section
76
- if (expandKey === sectionId) return true
77
- // filter all sections containing the key
78
- if (key.some((k) => expandKey.includes(k))) return false
79
- return true
80
- })
81
- )
82
-
83
- setExpandedSections({
84
- ...filteredExpandedSections,
85
- [sectionId]: !expandedSections[sectionId],
86
- })
87
- } else {
88
- setExpandedSections((prev) => ({
89
- ...prev,
90
- [sectionId]: !expandedSections[sectionId],
91
- }))
92
- }
93
- }
94
-
95
58
  useEffect(() => {
96
59
  if (transformedOpenApis.length === 0) {
97
60
  setCanSelectFirstApi(!!activeApiId)
@@ -106,7 +69,7 @@ const DocsLayout = ({ apis, activeApiId, onProductNavigate }: ILayoutProps): JSX
106
69
  }
107
70
  }, [apis])
108
71
 
109
- const updateFilteredData = (filteredItems, isReset = false) => {
72
+ const updateFilteredData = (filteredItems: OverviewData[], isReset = false) => {
110
73
  if (isReset) {
111
74
  setTransformedOpenApis(allData.current)
112
75
  return
@@ -114,66 +77,42 @@ const DocsLayout = ({ apis, activeApiId, onProductNavigate }: ILayoutProps): JSX
114
77
  setTransformedOpenApis(filteredItems)
115
78
  }
116
79
 
117
- useEffect(() => {
118
- if (activeApiId && transformedOpenApis.length > 0) {
119
- const activeApi = transformedOpenApis.find((api) => api.apiSpecId === activeApiId)
120
- const sectionKey = `api-${activeApi.apiSpecId}-section`
121
- const overviewKey = `api-${activeApi.apiSpecId}-overview`
122
-
123
- setExpandedSections((prev) => ({
124
- ...prev,
125
- [sectionKey]: true,
126
- [overviewKey]: true,
127
- }))
128
- setActiveItemData(activeApi)
129
- setActiveType('OVERVIEW')
130
- setIsFirstApiExpanded(false)
131
- setCanSelectFirstApi(true)
132
- setCanFocusSection(true)
133
- }
134
- }, [activeApiId, transformedOpenApis])
135
-
136
80
  return (
137
81
  <Layout>
138
- <Layout.DocsHeader
139
- transformedOpenApis={transformedOpenApis}
140
- updateFilteredData={updateFilteredData}
141
- />
142
- {!pending && (
143
- <Layout.DocsSideMenuTree
144
- apis={transformedOpenApis}
145
- setActiveItemData={setActiveItemData}
146
- activeItemData={activeItemData as OverviewData | EndpointData}
147
- expandedSections={expandedSections}
148
- setExpandedSections={(newExpandedSections) =>
149
- setExpandedSections((prev) => ({
150
- ...prev,
151
- ...newExpandedSections,
152
- }))
153
- }
154
- isFirstApiExpanded={isFirstApiExpanded}
155
- activeType={activeType}
156
- setIsFirstApiExpanded={setIsFirstApiExpanded}
157
- setActiveType={setActiveType}
158
- toggleSection={toggleSection}
159
- canSelectFirstApi={canSelectFirstApi}
160
- canFocusSection={canFocusSection}
161
- setCanFocusSection={setCanFocusSection}
82
+ <SectionToggleProvider>
83
+ <Layout.DocsHeader
84
+ transformedOpenApis={transformedOpenApis}
85
+ updateFilteredData={updateFilteredData}
162
86
  />
163
- )}
87
+ {!pending && (
88
+ <Layout.DocsSideMenuTree
89
+ apis={transformedOpenApis}
90
+ setActiveItemData={setActiveItemData}
91
+ activeItemData={activeItemData as OverviewData | EndpointData}
92
+ isFirstApiExpanded={isFirstApiExpanded}
93
+ activeType={activeType}
94
+ setIsFirstApiExpanded={setIsFirstApiExpanded}
95
+ setActiveType={setActiveType}
96
+ canSelectFirstApi={canSelectFirstApi}
97
+ canFocusSection={canFocusSection}
98
+ setCanFocusSection={setCanFocusSection}
99
+ activeApiId={activeApiId}
100
+ setCanSelectFirstApi={setCanSelectFirstApi}
101
+ />
102
+ )}
164
103
 
165
- {!pending && Object.keys(activeItemData).length > 0 && (
166
- <Layout.DocsContent
167
- data={activeItemData as OverviewData | EndpointData}
168
- activeType={activeType}
169
- setActiveItemData={setActiveItemData}
170
- setActiveType={setActiveType}
171
- setExpandedSections={setExpandedSections}
172
- toggleSection={toggleSection}
173
- onProductNavigate={onProductNavigate}
174
- />
175
- )}
176
- {activeType === 'ENDPOINT' && <Layout.DocsAside data={activeItemData as EndpointData} />}
104
+ {!pending && Object.keys(activeItemData).length > 0 && (
105
+ <Layout.DocsContent
106
+ data={activeItemData as OverviewData | EndpointData}
107
+ activeType={activeType}
108
+ setActiveItemData={setActiveItemData}
109
+ setActiveType={setActiveType}
110
+ onProductNavigate={onProductNavigate}
111
+ apis={transformedOpenApis}
112
+ />
113
+ )}
114
+ {activeType === 'ENDPOINT' && <Layout.DocsAside data={activeItemData as EndpointData} />}
115
+ </SectionToggleProvider>
177
116
  </Layout>
178
117
  )
179
118
  }
@@ -169,6 +169,7 @@ const Layout = ({
169
169
  text: 'Cancel',
170
170
  color: 'action',
171
171
  fullWidth: true,
172
+ variant: 'outlined',
172
173
  }}
173
174
  onClose={() => setIsPublishDialogOpen(false)}
174
175
  open={isPublishDialogOpen}
@@ -0,0 +1,7 @@
1
+ export enum SectionEnum {
2
+ OVERVIEW = 'overview',
3
+ RESOURCE = 'resource',
4
+ API_SECTION = 'apiSection',
5
+ TAG_SECTION = 'tagSection',
6
+ ENDPOINTS_SECTION = 'endpointsSection',
7
+ }
@@ -5,3 +5,8 @@ export const copyToClipboard = async (text: string) => {
5
5
  return err
6
6
  }
7
7
  }
8
+
9
+ export const capitalizeFirstLetter = (text: string) => {
10
+ if (!text) return ''
11
+ return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase()
12
+ }
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env bash
2
+ #export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain digitinary --domain-owner 650046438355 --region eu-central-1 --query authorizationToken --output text`
3
+
4
+ set -e
5
+
6
+ npm install
7
+
8
+ npm version patch --no-git-tag-version
9
+
10
+ npm run build
11
+
12
+ npm publish
package/variables.txt ADDED
@@ -0,0 +1,4 @@
1
+ export APP_VERSION=1.0.59
2
+ export ECR_IMAGE=650046438355.dkr.ecr.eu-central-1.amazonaws.com/dgate-api-documentation:1.0.59-31042-develop
3
+ export IMAGE_TAG=1.0.59-31042-develop
4
+ export TARGET_ENV=dev
@@ -1,2 +0,0 @@
1
- import{j as s}from"../../../../../_virtual/jsx-runtime.js";import e from"../../../../components/SVGLoader/SVGLoader.js";import i from"../../../../assets/icons/CopySticker.svg.js";import a from"../../../../assets/icons/arrowRightGray.svg.js";const n=({data:n,setActiveItemData:r,setActiveType:t,setExpandedSections:c})=>{var d,l;return s.jsxs("div",{className:"api-details-page",children:[s.jsx("h2",{className:"welcome",children:"Welcome to"}),s.jsx("h1",{className:"api-title",children:null==n?void 0:n.title}),s.jsxs("p",{className:"api-version",children:["API Version: ",s.jsx("span",{children:null==n?void 0:n.version})]}),s.jsxs("div",{className:"custom-url-input",children:[s.jsx("label",{className:"input-label",children:"API Base URL"}),s.jsxs("div",{className:"input-wrapper",children:[s.jsx("input",{type:"text",value:n&&n.servers&&n.servers.length>0?null===(d=n.servers[0])||void 0===d?void 0:d.url:"-",readOnly:!0}),s.jsx("span",{className:"icon",onClick:()=>{var s;return navigator.clipboard.writeText(`${n&&n.servers&&n.servers.length>0?null===(s=n.servers[0])||void 0===s?void 0:s.url:"-"}`)},children:s.jsx(e,{src:i})})]})]}),s.jsx("p",{className:"api-desc",children:"API Description"}),s.jsxs("div",{className:"api-product-tag",children:["Product with this API ",s.jsx("span",{className:"product-tag",children:n.associatedProduct.name})]}),s.jsx("h3",{className:"section-title",children:"Endpoints"}),Object.entries(null==n?void 0:n.tags).map((([i,d])=>s.jsxs("div",{className:"endpoint-group",children:[s.jsx("h4",{className:"tag-title",children:i}),s.jsx("div",{className:"endpoint-list",children:d.map(((d,l)=>{var o,p,v;return s.jsxs("div",{className:"endpoint-card",onClick:()=>(s=>{r(Object.assign(Object.assign({},s),{api:Object.assign({id:n.apiSpecId,title:n.title,description:n.description,version:n.version},n)})),t("ENDPOINT"),c((e=>Object.assign(Object.assign({},e),{[`api-${n.apiSpecId}-section`]:!0,[`api-${n.apiSpecId}-endpoints`]:!0,[`api-${n.apiSpecId}-resource-${s.id}`]:!0})))})(d),children:[s.jsxs("div",{children:[s.jsxs("div",{className:"endpoint-card-header",children:[s.jsx("span",{className:`method-label ${d.method.toLowerCase()}`,children:d.method}),s.jsx("div",{className:"title-wrapper",children:s.jsxs("h5",{children:[(d.summary||"Endpoint Name").slice(0,17),(null!==(p=null===(o=d.summary)||void 0===o?void 0:o.length)&&void 0!==p?p:0)>17&&"..."]})})]}),s.jsxs("div",{className:"endpoint-meta",children:[s.jsx("p",{children:d.path}),s.jsx("p",{className:"description",children:null!==(v=d.description)&&void 0!==v?v:"No Description "})]})]}),s.jsx("div",{className:"endpoint-arrow",children:s.jsx(e,{src:a})})]},`${i}-${l}`)}))})]},i))),(null===(l=n.apiVersions)||void 0===l?void 0:l.length)>0&&s.jsxs("div",{className:"versions-section",children:[s.jsx("h4",{children:"API Versions"}),s.jsx("div",{className:"version-list",children:n.apiVersions.map(((e,i)=>{var a;return s.jsx("button",{className:"version-btn",onClick:()=>(s=>{var e;if(s.apiSpecId===n.apiSpecId)return void t("OVERVIEW");const i=n.apiVersions.find((e=>e.apiSpecId===s.apiSpecId));if(!i)return;const a=Object.assign(Object.assign(Object.assign({},n),i),{version:(null===(e=i.metaData)||void 0===e?void 0:e.version)||"",title:i.name||"",apiSpecId:i.apiSpecId});r(Object.assign(Object.assign({},a),{api:Object.assign({id:a.apiSpecId,title:a.title,description:a.description,version:a.version},a)})),t("OVERVIEW"),c((s=>Object.assign(Object.assign({},s),{[`api-${a.apiSpecId}-section`]:!0})))})(e),children:(null===(a=e.metaData)||void 0===a?void 0:a.version)||"N/A"},i)}))})]})]})};export{n as TagPage};
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../src/layout/docsComponents/DocsContent/TagPage/index.tsx"],"sourcesContent":["import './style.scss'\nimport SVGLoader from '../../../../components/SVGLoader/SVGLoader'\nimport { arrowRightGray, CopySticker } from '../../../../assets/icons/index'\nimport { EndpointData, OverviewData } from 'src/layout/docsLayout'\n\nexport const TagPage = ({\n data,\n setActiveItemData,\n setActiveType,\n setExpandedSections,\n}: {\n data: OverviewData\n setActiveItemData: React.Dispatch<React.SetStateAction<OverviewData | EndpointData>>\n setActiveType: React.Dispatch<React.SetStateAction<'OVERVIEW' | 'ENDPOINT'>>\n setExpandedSections: React.Dispatch<React.SetStateAction<Record<string, boolean>>>\n}) => {\n const handleVersionClick = (verObj) => {\n if (verObj.apiSpecId === data.apiSpecId) {\n setActiveType('OVERVIEW')\n return\n }\n\n const matchedVersion = data.apiVersions.find((v) => v.apiSpecId === verObj.apiSpecId)\n\n if (!matchedVersion) {\n return\n }\n\n const newData = {\n ...data,\n ...matchedVersion,\n version: matchedVersion.metaData?.version || '',\n title: matchedVersion.name || '',\n apiSpecId: matchedVersion.apiSpecId,\n }\n\n setActiveItemData({\n ...newData,\n api: {\n id: newData.apiSpecId,\n title: newData.title,\n description: newData.description,\n version: newData.version,\n ...newData,\n },\n })\n\n setActiveType('OVERVIEW')\n setExpandedSections((prev) => ({\n ...prev,\n [`api-${newData.apiSpecId}-section`]: true,\n }))\n }\n\n const handleClick = (endpoint) => {\n setActiveItemData({\n ...endpoint,\n api: {\n id: data.apiSpecId,\n title: data.title,\n description: data.description,\n version: data.version,\n ...data,\n },\n })\n setActiveType('ENDPOINT')\n\n setExpandedSections((prev) => ({\n ...prev,\n [`api-${data.apiSpecId}-section`]: true,\n [`api-${data.apiSpecId}-endpoints`]: true,\n [`api-${data.apiSpecId}-resource-${endpoint.id}`]: true,\n }))\n }\n return (\n <div className=\"api-details-page\">\n <h2 className=\"welcome\">Welcome to</h2>\n <h1 className=\"api-title\">{data?.title}</h1>\n <p className=\"api-version\">\n API Version: <span>{data?.version}</span>\n </p>\n\n <div className=\"custom-url-input\">\n <label className=\"input-label\">API Base URL</label>\n <div className=\"input-wrapper\">\n <input\n type=\"text\"\n value={!!data && !!data.servers && data.servers.length > 0 ? data.servers[0]?.url : '-'}\n readOnly\n />\n <span\n className=\"icon\"\n onClick={() =>\n navigator.clipboard.writeText(\n `${\n !!data && !!data.servers && data.servers.length > 0 ? data.servers[0]?.url : '-'\n }`\n )\n }\n >\n <SVGLoader src={CopySticker} />\n </span>\n </div>\n </div>\n\n <p className=\"api-desc\">API Description</p>\n <div className=\"api-product-tag\">\n Product with this API <span className=\"product-tag\">{data.associatedProduct.name}</span>\n </div>\n\n <h3 className=\"section-title\">Endpoints</h3>\n\n {Object.entries(data?.tags).map(([tag, endpoints]) => (\n <div className=\"endpoint-group\" key={tag}>\n <h4 className=\"tag-title\">{tag}</h4>\n <div className=\"endpoint-list\">\n {endpoints.map((endpoint, idx) => (\n <div\n className=\"endpoint-card\"\n onClick={() => handleClick(endpoint)}\n key={`${tag}-${idx}`}\n >\n <div>\n <div className=\"endpoint-card-header\">\n <span className={`method-label ${endpoint.method.toLowerCase()}`}>\n {endpoint.method}\n </span>\n <div className=\"title-wrapper\">\n <h5>\n {(endpoint.summary || 'Endpoint Name').slice(0, 17)}\n {(endpoint.summary?.length ?? 0) > 17 && '...'}\n </h5>\n </div>\n </div>\n <div className=\"endpoint-meta\">\n <p>{endpoint.path}</p>\n <p className=\"description\">{endpoint.description ?? 'No Description '}</p>\n </div>\n </div>\n\n <div className=\"endpoint-arrow\">\n <SVGLoader src={arrowRightGray} />\n </div>\n </div>\n ))}\n </div>\n </div>\n ))}\n\n {data.apiVersions?.length > 0 && (\n <div className=\"versions-section\">\n <h4>API Versions</h4>\n <div className=\"version-list\">\n {data.apiVersions.map((verObj, index) => (\n <button\n key={index}\n className=\"version-btn\"\n onClick={() => handleVersionClick(verObj)}\n >\n {verObj.metaData?.version || 'N/A'}\n </button>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n}\n"],"names":["TagPage","data","setActiveItemData","setActiveType","setExpandedSections","_jsxs","className","_jsx","children","title","version","jsxs","jsx","type","value","servers","length","_a","url","readOnly","onClick","navigator","clipboard","writeText","SVGLoader","src","CopySticker","associatedProduct","name","Object","entries","tags","map","tag","endpoints","endpoint","idx","assign","api","id","apiSpecId","description","prev","handleClick","method","toLowerCase","summary","slice","_b","path","_c","arrowRightGray","apiVersions","verObj","index","matchedVersion","find","v","newData","metaData","handleVersionClick"],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import './style.scss';
2
- import { EndpointData, OverviewData } from 'src/layout/docsLayout';
3
- export declare const TagPage: ({ data, setActiveItemData, setActiveType, setExpandedSections, }: {
4
- data: OverviewData;
5
- setActiveItemData: React.Dispatch<React.SetStateAction<OverviewData | EndpointData>>;
6
- setActiveType: React.Dispatch<React.SetStateAction<"OVERVIEW" | "ENDPOINT">>;
7
- setExpandedSections: React.Dispatch<React.SetStateAction<Record<string, boolean>>>;
8
- }) => import("react/jsx-runtime").JSX.Element;