@salesforcedevs/docs-components 0.54.0 → 0.54.1-a01
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.
- package/lwc.config.json +6 -2
- package/package.json +12 -4
- package/src/modules/README.md +41 -0
- package/src/modules/doc/amfReference/amfReference.css +5 -0
- package/src/modules/doc/amfReference/amfReference.html +47 -0
- package/src/modules/doc/amfReference/amfReference.ts +1309 -0
- package/src/modules/doc/amfReference/constants.ts +76 -0
- package/src/modules/doc/amfReference/types.ts +133 -0
- package/src/modules/doc/amfReference/utils.ts +669 -0
- package/src/modules/doc/amfTopic/amfTopic.css +1 -0
- package/src/modules/doc/amfTopic/amfTopic.html +3 -0
- package/src/modules/doc/amfTopic/amfTopic.ts +94 -0
- package/src/modules/doc/amfTopic/types.ts +54 -0
- package/src/modules/doc/amfTopic/utils.ts +130 -0
- package/src/modules/doc/breadcrumbItem/breadcrumbItem.css +4 -3
- package/src/modules/doc/breadcrumbItem/breadcrumbItem.html +1 -1
- package/src/modules/doc/breadcrumbItem/breadcrumbItem.ts +17 -1
- package/src/modules/doc/breadcrumbs/breadcrumbs.css +11 -3
- package/src/modules/doc/breadcrumbs/breadcrumbs.html +12 -2
- package/src/modules/doc/breadcrumbs/breadcrumbs.ts +50 -9
- package/src/modules/doc/content/content.css +35 -11
- package/src/modules/doc/content/content.ts +18 -3
- package/src/modules/doc/contentCallout/contentCallout.css +4 -4
- package/src/modules/doc/contentCallout/contentCallout.ts +5 -0
- package/src/modules/doc/contentLayout/contentLayout.css +98 -0
- package/src/modules/doc/contentLayout/contentLayout.html +48 -0
- package/src/modules/doc/contentLayout/contentLayout.ts +287 -0
- package/src/modules/doc/header/header.css +1 -1
- package/src/modules/doc/header/header.ts +5 -5
- package/src/modules/doc/headingAnchor/headingAnchor.css +1 -1
- package/src/modules/doc/headingContent/headingContent.css +5 -1
- package/src/modules/doc/phase/phase.css +3 -3
- package/src/modules/doc/phase/phase.ts +1 -1
- package/src/modules/doc/xmlContent/types.ts +114 -0
- package/src/modules/doc/xmlContent/utils.ts +161 -0
- package/src/modules/doc/xmlContent/xmlContent.css +32 -0
- package/src/modules/doc/xmlContent/xmlContent.html +39 -0
- package/src/modules/doc/xmlContent/xmlContent.ts +651 -0
- package/src/modules/docBaseElements/lightningElementWithState/lightningElementWithState.ts +93 -0
- package/src/modules/docHelpers/amfStyle/amfStyle.css +390 -0
- package/src/modules/docHelpers/phaseContentLayout/phaseContentLayout.css +39 -0
- package/src/modules/{helpers → docHelpers}/status/status.css +0 -0
- package/src/modules/docUtils/SearchSyncer/SearchSyncer.ts +85 -0
- package/LICENSE +0 -12
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ApiDocData,
|
|
3
|
+
ApiDocLanguage,
|
|
4
|
+
ApiDocVersion,
|
|
5
|
+
ApiNavItem,
|
|
6
|
+
ContentApiOptions,
|
|
7
|
+
ContentData,
|
|
8
|
+
DocumentData,
|
|
9
|
+
DocLanguage,
|
|
10
|
+
DocVersion,
|
|
11
|
+
TreeNode,
|
|
12
|
+
TocMap
|
|
13
|
+
} from "./types";
|
|
14
|
+
import { Language } from "typings/custom";
|
|
15
|
+
import { getLanguageDisplayTextById } from "dxUtils/language";
|
|
16
|
+
|
|
17
|
+
export class FetchContent {
|
|
18
|
+
private apiDomain: string;
|
|
19
|
+
private languages: Array<Language> = [];
|
|
20
|
+
|
|
21
|
+
constructor(apiDomain: string, languages: Array<Language>) {
|
|
22
|
+
this.apiDomain = apiDomain;
|
|
23
|
+
this.languages = languages;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
async fetchDocumentData(docId: string): Promise<DocumentData | null> {
|
|
27
|
+
try {
|
|
28
|
+
const {
|
|
29
|
+
available_languages,
|
|
30
|
+
available_versions,
|
|
31
|
+
toc,
|
|
32
|
+
content,
|
|
33
|
+
version,
|
|
34
|
+
language,
|
|
35
|
+
content_document_id,
|
|
36
|
+
title,
|
|
37
|
+
doc_title,
|
|
38
|
+
pdf_url,
|
|
39
|
+
deliverable
|
|
40
|
+
} = await this.fetchResource<ApiDocData>(
|
|
41
|
+
`${this.apiDomain}/docs/get_document/${docId}`
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
const { normalizedToc, tocMap } = this.normalizeToc(toc);
|
|
45
|
+
return {
|
|
46
|
+
availableLanguages:
|
|
47
|
+
available_languages &&
|
|
48
|
+
available_languages.map(this.normalizeLanguage.bind(this)),
|
|
49
|
+
availableVersions:
|
|
50
|
+
available_versions &&
|
|
51
|
+
available_versions.map(this.normalizeVersion.bind(this)),
|
|
52
|
+
content,
|
|
53
|
+
version: this.normalizeVersion(version),
|
|
54
|
+
id: content_document_id,
|
|
55
|
+
language: this.normalizeLanguage(language),
|
|
56
|
+
title,
|
|
57
|
+
toc: normalizedToc,
|
|
58
|
+
tocMap,
|
|
59
|
+
docTitle: doc_title,
|
|
60
|
+
pdfUrl: pdf_url,
|
|
61
|
+
deliverable
|
|
62
|
+
};
|
|
63
|
+
} catch (error) {
|
|
64
|
+
console.log(error);
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
fetchContent(
|
|
70
|
+
deliverable: string,
|
|
71
|
+
contentId: string,
|
|
72
|
+
options: ContentApiOptions
|
|
73
|
+
): Promise<ContentData> {
|
|
74
|
+
return this.fetchResource<ContentData>(
|
|
75
|
+
`${this.apiDomain}/docs/get_document_content/${deliverable}/${contentId}/${options.language}/${options.version}`
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
private async fetchResource<T>(url: string): Promise<T> {
|
|
80
|
+
const response = await fetch(url);
|
|
81
|
+
if (!response.ok) {
|
|
82
|
+
throw new Error(response.statusText);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const json = await response.json();
|
|
86
|
+
|
|
87
|
+
return json;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
private normalizeToc(apiToc: Array<ApiNavItem>): {
|
|
91
|
+
tocMap: { [key: string]: TreeNode };
|
|
92
|
+
normalizedToc: Array<TreeNode>;
|
|
93
|
+
} {
|
|
94
|
+
const tocMap = {};
|
|
95
|
+
const normalizedToc =
|
|
96
|
+
apiToc &&
|
|
97
|
+
apiToc.map((navItem) => this.normalizeNavItem(navItem, tocMap));
|
|
98
|
+
|
|
99
|
+
return { normalizedToc, tocMap };
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
private normalizeNavItem(
|
|
103
|
+
navItem: ApiNavItem,
|
|
104
|
+
tocMap: TocMap,
|
|
105
|
+
parentNavItem?: TreeNode
|
|
106
|
+
): TreeNode {
|
|
107
|
+
const name = this.calculateNavItemName(navItem, tocMap);
|
|
108
|
+
const node: TreeNode = {
|
|
109
|
+
label: navItem.text,
|
|
110
|
+
name,
|
|
111
|
+
parent: parentNavItem
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
if (name) {
|
|
115
|
+
tocMap[name] = node;
|
|
116
|
+
}
|
|
117
|
+
node.children = navItem.children?.map((child) =>
|
|
118
|
+
this.normalizeNavItem(child, tocMap, node)
|
|
119
|
+
);
|
|
120
|
+
return node;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
private calculateNavItemName(navItem: ApiNavItem, tocMap: TocMap): string {
|
|
124
|
+
let href = navItem.a_attr?.href || "";
|
|
125
|
+
if (href.includes("#")) {
|
|
126
|
+
const [pathUrl] = href.split("#");
|
|
127
|
+
href = pathUrl in tocMap ? href : pathUrl;
|
|
128
|
+
}
|
|
129
|
+
return href || navItem.id;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
private normalizeVersion(version: ApiDocVersion): DocVersion {
|
|
133
|
+
return (
|
|
134
|
+
version && {
|
|
135
|
+
label: version.version_text,
|
|
136
|
+
releaseVersion:
|
|
137
|
+
version.release_version &&
|
|
138
|
+
!version.release_version.startsWith("v")
|
|
139
|
+
? `v${version.release_version}`
|
|
140
|
+
: version.release_version,
|
|
141
|
+
id: version.doc_version,
|
|
142
|
+
url: version.version_url
|
|
143
|
+
}
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
private normalizeLanguage(language: ApiDocLanguage): DocLanguage {
|
|
148
|
+
return (
|
|
149
|
+
language && {
|
|
150
|
+
label:
|
|
151
|
+
getLanguageDisplayTextById(
|
|
152
|
+
this.languages,
|
|
153
|
+
language.locale
|
|
154
|
+
) || language.label,
|
|
155
|
+
id: language.locale,
|
|
156
|
+
code: language.code,
|
|
157
|
+
url: language.url
|
|
158
|
+
}
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
--button-primary-color: var(--dx-g-blue-vibrant-50);
|
|
3
|
+
--button-primary-color-hover: var(--dx-g-blue-vibrant-40);
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
doc-breadcrumbs {
|
|
7
|
+
--dx-c-popover-z-index: 5;
|
|
8
|
+
|
|
9
|
+
display: block;
|
|
10
|
+
margin-bottom: var(--dx-g-spacing-2xl);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
dx-dropdown {
|
|
14
|
+
--dx-c-dropdown-option-font-size: var(--dx-g-text-sm);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
dx-dropdown > dx-button {
|
|
18
|
+
--dx-c-button-primary-color: var(--button-primary-color);
|
|
19
|
+
--dx-c-button-primary-color-hover: var(--button-primary-color-hover);
|
|
20
|
+
--border-color: var(--button-primary-color);
|
|
21
|
+
|
|
22
|
+
border-bottom: 1px dashed var(--border-color);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
dx-dropdown > dx-button:hover {
|
|
26
|
+
--border-color: var(--button-primary-color-hover);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.document-pickers {
|
|
30
|
+
margin-left: auto;
|
|
31
|
+
margin-right: var(--dx-g-spacing-sm);
|
|
32
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<doc-content-layout
|
|
3
|
+
if:true={loaded}
|
|
4
|
+
coveo-organization-id={coveoOrganizationId}
|
|
5
|
+
coveo-public-access-token={coveoPublicAccessToken}
|
|
6
|
+
coveo-search-hub="Developer_Docs_SS"
|
|
7
|
+
coveo-advanced-query-config={coveoAdvancedQueryConfig}
|
|
8
|
+
sidebar-header="Pages"
|
|
9
|
+
sidebar-content={sidebarContent}
|
|
10
|
+
sidebar-value={sidebarValue}
|
|
11
|
+
onselect={handleSelect}
|
|
12
|
+
use-old-sidebar={useOldSidebar}
|
|
13
|
+
>
|
|
14
|
+
<div slot="sidebar-header" class="document-pickers">
|
|
15
|
+
<dx-dropdown
|
|
16
|
+
data-type="version"
|
|
17
|
+
suppress-gtm-nav-headings
|
|
18
|
+
analytics-event={analyticsEvent}
|
|
19
|
+
options={versionOptions}
|
|
20
|
+
value={version.id}
|
|
21
|
+
width="290px"
|
|
22
|
+
>
|
|
23
|
+
<dx-button variant="inline" disabled={disableVersion}>
|
|
24
|
+
{version.releaseVersion}
|
|
25
|
+
</dx-button>
|
|
26
|
+
</dx-dropdown>
|
|
27
|
+
</div>
|
|
28
|
+
<doc-breadcrumbs
|
|
29
|
+
if:true={breadcrumbs}
|
|
30
|
+
breadcrumbs={breadcrumbs}
|
|
31
|
+
pixel-per-character={breadcrumbPixelPerCharacter}
|
|
32
|
+
></doc-breadcrumbs>
|
|
33
|
+
<doc-content
|
|
34
|
+
docs-data={docContent}
|
|
35
|
+
page-reference={pageReference}
|
|
36
|
+
onnavclick={handleNavClick}
|
|
37
|
+
></doc-content>
|
|
38
|
+
</doc-content-layout>
|
|
39
|
+
</template>
|