@salesforcedevs/docs-components 0.7.0 → 0.7.59-sppage-alpha1

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 (102) hide show
  1. package/lwc.config.json +17 -3
  2. package/package.json +16 -6
  3. package/src/modules/README.md +41 -0
  4. package/src/modules/doc/amfModelParser/amfModelParser.ts +674 -0
  5. package/src/modules/doc/amfReference/amfReference.css +25 -0
  6. package/src/modules/doc/amfReference/amfReference.html +60 -0
  7. package/src/modules/doc/amfReference/amfReference.ts +1494 -0
  8. package/src/modules/doc/amfReference/constants.ts +76 -0
  9. package/src/modules/doc/amfReference/types.ts +125 -0
  10. package/src/modules/doc/amfTopic/amfTopic.css +21 -0
  11. package/src/modules/doc/amfTopic/amfTopic.html +3 -0
  12. package/src/modules/doc/amfTopic/amfTopic.ts +111 -0
  13. package/src/modules/doc/amfTopic/types.ts +56 -0
  14. package/src/modules/doc/amfTopic/utils.ts +136 -0
  15. package/src/modules/doc/breadcrumbItem/breadcrumbItem.css +51 -0
  16. package/src/modules/doc/breadcrumbItem/breadcrumbItem.html +5 -0
  17. package/src/modules/doc/breadcrumbItem/breadcrumbItem.ts +71 -0
  18. package/src/modules/doc/breadcrumbs/breadcrumbs.css +27 -0
  19. package/src/modules/doc/breadcrumbs/breadcrumbs.html +58 -0
  20. package/src/modules/doc/breadcrumbs/breadcrumbs.ts +192 -0
  21. package/src/modules/doc/content/content.css +94 -70
  22. package/src/modules/doc/content/content.ts +233 -169
  23. package/src/modules/doc/contentCallout/contentCallout.css +17 -23
  24. package/src/modules/doc/contentCallout/contentCallout.html +13 -4
  25. package/src/modules/doc/contentCallout/contentCallout.ts +16 -3
  26. package/src/modules/doc/contentLayout/contentLayout.css +131 -0
  27. package/src/modules/doc/contentLayout/contentLayout.html +64 -0
  28. package/src/modules/doc/contentLayout/contentLayout.ts +610 -0
  29. package/src/modules/doc/doDont/doDont.css +47 -0
  30. package/src/modules/doc/doDont/doDont.html +27 -0
  31. package/src/modules/doc/doDont/doDont.ts +17 -0
  32. package/src/modules/doc/header/header.css +70 -37
  33. package/src/modules/doc/header/header.html +40 -135
  34. package/src/modules/doc/header/header.ts +29 -78
  35. package/src/modules/doc/heading/heading.css +33 -0
  36. package/src/modules/doc/heading/heading.html +14 -0
  37. package/src/modules/doc/heading/heading.ts +67 -0
  38. package/src/modules/doc/headingAnchor/headingAnchor.css +33 -0
  39. package/src/modules/doc/headingAnchor/headingAnchor.html +19 -0
  40. package/src/modules/doc/headingAnchor/headingAnchor.ts +43 -0
  41. package/src/modules/doc/headingContent/headingContent.css +53 -0
  42. package/src/modules/doc/headingContent/headingContent.html +13 -0
  43. package/src/modules/doc/headingContent/headingContent.ts +30 -0
  44. package/src/modules/doc/overview/overview.css +40 -0
  45. package/src/modules/doc/overview/overview.html +34 -0
  46. package/src/modules/doc/overview/overview.ts +12 -0
  47. package/src/modules/doc/phase/phase.css +70 -0
  48. package/src/modules/doc/phase/phase.html +38 -0
  49. package/src/modules/doc/phase/phase.ts +93 -0
  50. package/src/modules/doc/specificationContent/specificationContent.css +3 -0
  51. package/src/modules/doc/specificationContent/specificationContent.html +99 -0
  52. package/src/modules/doc/specificationContent/specificationContent.ts +56 -0
  53. package/src/modules/doc/sprigSurvey/sprigSurvey.html +20 -0
  54. package/src/modules/doc/sprigSurvey/sprigSurvey.scoped.css +16 -0
  55. package/src/modules/doc/sprigSurvey/sprigSurvey.ts +16 -0
  56. package/src/modules/doc/toc/toc.ts +1 -1
  57. package/src/modules/doc/versionPicker/versionPicker.css +64 -0
  58. package/src/modules/doc/versionPicker/versionPicker.html +38 -0
  59. package/src/modules/doc/versionPicker/versionPicker.ts +65 -0
  60. package/src/modules/doc/xmlContent/types.ts +120 -0
  61. package/src/modules/doc/xmlContent/utils.ts +163 -0
  62. package/src/modules/doc/xmlContent/xmlContent.css +54 -0
  63. package/src/modules/doc/xmlContent/xmlContent.html +52 -0
  64. package/src/modules/doc/xmlContent/xmlContent.ts +780 -0
  65. package/src/modules/docHelpers/amfStyle/amfStyle.css +355 -0
  66. package/src/modules/docHelpers/imgStyle/imgStyle.css +59 -0
  67. package/src/modules/docHelpers/status/status.css +22 -0
  68. package/src/modules/docUtils/searchSyncer/searchSyncer.ts +86 -0
  69. package/src/modules/docUtils/utils/utils.ts +32 -0
  70. package/LICENSE +0 -12
  71. package/src/modules/doc/content/__tests__/content.test.ts +0 -120
  72. package/src/modules/doc/content/__tests__/mockDocContent.ts +0 -292
  73. package/src/modules/doc/content/__tests__/mockPageReference.ts +0 -8
  74. package/src/modules/doc/content/content.stories.ts +0 -108
  75. package/src/modules/doc/contentCallout/__tests__/contentCallout.test.ts +0 -80
  76. package/src/modules/doc/contentCallout/__tests__/mockProps.ts +0 -14
  77. package/src/modules/doc/contentCallout/contentCallout.stories.ts +0 -29
  78. package/src/modules/doc/contentMedia/__tests__/contentMedia.test.ts +0 -97
  79. package/src/modules/doc/contentMedia/contentMedia.stories.ts +0 -113
  80. package/src/modules/doc/header/__tests__/coveoConfig.ts +0 -12
  81. package/src/modules/doc/header/__tests__/header.test.ts +0 -434
  82. package/src/modules/doc/header/__tests__/mockNavDevelopers.ts +0 -427
  83. package/src/modules/doc/header/__tests__/mockNavs.ts +0 -115
  84. package/src/modules/doc/header/__tests__/mockProps.ts +0 -149
  85. package/src/modules/doc/header/header.stories.ts +0 -160
  86. package/src/modules/doc/nav/__tests__/mockAvailableLanguages.ts +0 -8
  87. package/src/modules/doc/nav/__tests__/mockAvailableVersions.ts +0 -122
  88. package/src/modules/doc/nav/__tests__/mockPageReference.ts +0 -8
  89. package/src/modules/doc/nav/__tests__/mockPdfUrl.ts +0 -1
  90. package/src/modules/doc/nav/__tests__/mockSelectedLanguage.ts +0 -8
  91. package/src/modules/doc/nav/__tests__/mockSelectedVersion.ts +0 -8
  92. package/src/modules/doc/nav/__tests__/mockToc.ts +0 -146
  93. package/src/modules/doc/nav/__tests__/nav.test.ts +0 -58
  94. package/src/modules/doc/toc/__tests__/mockPageReference.ts +0 -8
  95. package/src/modules/doc/toc/__tests__/mockToc.ts +0 -146
  96. package/src/modules/doc/toc/__tests__/toc.test.ts +0 -29
  97. package/src/modules/doc/toolbar/__tests__/mockAvailableLanguages.ts +0 -8
  98. package/src/modules/doc/toolbar/__tests__/mockAvailableVersions.ts +0 -122
  99. package/src/modules/doc/toolbar/__tests__/mockPdfUrl.ts +0 -1
  100. package/src/modules/doc/toolbar/__tests__/mockSelectedLanguage.ts +0 -8
  101. package/src/modules/doc/toolbar/__tests__/mockSelectedVersion.ts +0 -8
  102. package/src/modules/doc/toolbar/__tests__/toolbar.test.ts +0 -44
@@ -0,0 +1,64 @@
1
+ @import "dxHelpers/reset";
2
+
3
+ /* NOTE: doc-version-picker-width width variable is used by both dx-button and dx-dropdown to maintain a consistent width. */
4
+ :host {
5
+ --dx-c-dropdown-option-font-weight: normal;
6
+ --dx-c-dropdown-option-label-color: var(--dx-g-gray-10);
7
+ --popover-container-open-transform: translateY(4px);
8
+ }
9
+
10
+ .version-picker-container {
11
+ padding: 8px var(--dx-g-spacing-lg) 8px
12
+ var(--dx-g-global-header-padding-horizontal);
13
+ border-top: 1px solid var(--dx-g-gray-90);
14
+ border-bottom: 1px solid var(--dx-g-gray-90);
15
+ }
16
+
17
+ .version-picker-button {
18
+ display: flex;
19
+ width: var(--doc-version-picker-width, 296px);
20
+ }
21
+
22
+ .version-picker-button:hover,
23
+ .version-picker-button:active,
24
+ .version-picker-button:focus {
25
+ --dx-c-button-secondary-color-hover: var(--dx-g-cloud-blue-vibrant-95);
26
+ --dx-c-button-primary-color: var(--dx-g-blue-vibrant-40);
27
+ }
28
+
29
+ /**
30
+ * NOTE: This CSS ensures the span inside the button stays within the parent's width, avoiding overflow.
31
+ * Not keeping this in common component to ensure that existing functionality works as it is.
32
+ */
33
+ dx-button::part(content) {
34
+ width: inherit;
35
+ overflow: hidden;
36
+ }
37
+
38
+ .selected-version {
39
+ display: flex;
40
+ flex-direction: row;
41
+ align-items: center;
42
+ }
43
+
44
+ .selected-version-label {
45
+ flex: 1;
46
+ overflow: hidden;
47
+ text-align: left;
48
+ text-overflow: ellipsis;
49
+ white-space: nowrap;
50
+ }
51
+
52
+ dx-type-badge.latest-badge {
53
+ --dx-c-type-badge-color: var(--dx-g-green-vibrant-40);
54
+ --dx-c-type-badge-background: var(--dx-g-green-vibrant-95);
55
+
56
+ margin-left: var(--dx-g-spacing-sm);
57
+ }
58
+
59
+ dx-type-badge.not-latest-badge {
60
+ --dx-c-type-badge-color: var(--dx-g-red-vibrant-40);
61
+ --dx-c-type-badge-background: var(--dx-g-red-vibrant-95);
62
+
63
+ margin-left: var(--dx-g-spacing-sm);
64
+ }
@@ -0,0 +1,38 @@
1
+ <template>
2
+ <div lwc:if={showVersionPicker} class="version-picker-container">
3
+ <dx-dropdown
4
+ options={versions}
5
+ value={selectedVersion.id}
6
+ width="var(--doc-version-picker-width)"
7
+ onchange={onVersionChange}
8
+ >
9
+ <dx-button
10
+ class="version-picker-button"
11
+ variant="tertiary"
12
+ size="small"
13
+ icon-symbol="chevrondown"
14
+ icon-size="medium"
15
+ >
16
+ <div class="selected-version">
17
+ <p class="selected-version-label">
18
+ {selectedVersion.label}
19
+ </p>
20
+ <template lwc:if={showLatestTag}>
21
+ <dx-type-badge
22
+ class="latest-badge"
23
+ lwc:if={latestVersion}
24
+ value="Latest"
25
+ size="small"
26
+ ></dx-type-badge>
27
+ <dx-type-badge
28
+ class="not-latest-badge"
29
+ lwc:else
30
+ value="Not Latest"
31
+ size="small"
32
+ ></dx-type-badge>
33
+ </template>
34
+ </div>
35
+ </dx-button>
36
+ </dx-dropdown>
37
+ </div>
38
+ </template>
@@ -0,0 +1,65 @@
1
+ import { LightningElement, api, track } from "lwc";
2
+
3
+ import { AnalyticsPayload, OptionWithNested } from "typings/custom";
4
+
5
+ import { toJson, normalizeBoolean } from "dxUtils/normalizers";
6
+
7
+ export default class VersionPicker extends LightningElement {
8
+ @api analyticsEvent?: string;
9
+ @api analyticsPayload?: AnalyticsPayload;
10
+
11
+ @track private _versions!: OptionWithNested[];
12
+ private _selectedVersion?: OptionWithNested;
13
+ private _latestVersion: boolean = false;
14
+ private _hideBadge: boolean = false;
15
+
16
+ @api
17
+ get versions() {
18
+ return this._versions;
19
+ }
20
+
21
+ set versions(value: OptionWithNested[]) {
22
+ this._versions = toJson(value);
23
+ }
24
+
25
+ @api
26
+ get selectedVersion(): OptionWithNested | undefined {
27
+ return this._selectedVersion || this.versions[0];
28
+ }
29
+
30
+ set selectedVersion(value: OptionWithNested) {
31
+ if (value) {
32
+ this._selectedVersion = toJson(value);
33
+ }
34
+ }
35
+
36
+ @api
37
+ get latestVersion() {
38
+ return this._latestVersion;
39
+ }
40
+
41
+ set latestVersion(value) {
42
+ this._latestVersion = normalizeBoolean(value);
43
+ }
44
+
45
+ @api
46
+ get hideBadge() {
47
+ return this._hideBadge;
48
+ }
49
+
50
+ set hideBadge(value) {
51
+ this._hideBadge = normalizeBoolean(value);
52
+ }
53
+
54
+ private get showVersionPicker() {
55
+ return this._versions && this._versions.length !== 0;
56
+ }
57
+
58
+ private get showLatestTag(): boolean {
59
+ return !this.hideBadge;
60
+ }
61
+
62
+ private onVersionChange(e: CustomEvent) {
63
+ this.dispatchEvent(new CustomEvent("change", { detail: e.detail }));
64
+ }
65
+ }
@@ -0,0 +1,120 @@
1
+ export type CoveoAdvancedQueryXMLConfig = {
2
+ locale?: string;
3
+ version?: string;
4
+ topicid?: string;
5
+ };
6
+
7
+ export type PageReference = {
8
+ domain?: string;
9
+ page?: string;
10
+ docId?: string;
11
+ deliverable?: string;
12
+ contentDocumentId?: string;
13
+ hash?: string;
14
+ search?: string;
15
+ };
16
+
17
+ export enum HistoryState {
18
+ PUSH_STATE = "pushState",
19
+ REPLACE_STATE = "replaceState"
20
+ }
21
+
22
+ export type TreeNode = {
23
+ label: string;
24
+ name: string;
25
+ children?: Array<TreeNode>;
26
+ isExpanded?: boolean;
27
+ parent?: TreeNode;
28
+ };
29
+
30
+ type DropdownOption = {
31
+ id: string;
32
+ label: string;
33
+ };
34
+
35
+ export type DocVersion = DropdownOption & {
36
+ releaseVersion: string;
37
+ url: string;
38
+ link?: {
39
+ href: string;
40
+ };
41
+ };
42
+
43
+ export type DocLanguage = DropdownOption & {
44
+ code: string;
45
+ url: string;
46
+ };
47
+
48
+ export type ApiDocVersion = {
49
+ version_text: string;
50
+ release_version: string;
51
+ doc_version: string;
52
+ version_url: string;
53
+ };
54
+
55
+ export type ApiDocLanguage = {
56
+ code: string;
57
+ label: string;
58
+ locale: string;
59
+ url: string;
60
+ };
61
+
62
+ export interface Header extends Element {
63
+ subtitle: string;
64
+ headerHref: string;
65
+ }
66
+
67
+ export type SiderbarFooter = {
68
+ bailHref: string;
69
+ bailLabel: string;
70
+ languages: Array<DocLanguage>;
71
+ language?: string;
72
+ };
73
+
74
+ export type ApiNavItem = {
75
+ children: Array<ApiNavItem>;
76
+ text: string;
77
+ a_attr: {
78
+ href: string;
79
+ };
80
+ id: string;
81
+ };
82
+
83
+ export type ApiDocData = {
84
+ available_languages: Array<ApiDocLanguage>;
85
+ available_versions: Array<ApiDocVersion>;
86
+ content: string;
87
+ content_document_id: string;
88
+ deliverable: string;
89
+ doc_title: string;
90
+ language: ApiDocLanguage;
91
+ title: string;
92
+ toc: Array<ApiNavItem>;
93
+ version: ApiDocVersion;
94
+ pdf_url: string;
95
+ };
96
+
97
+ export type ContentData = {
98
+ content: string;
99
+ id: string;
100
+ title: string;
101
+ };
102
+
103
+ export type DocumentData = ContentData & {
104
+ availableLanguages: Array<DocLanguage>;
105
+ availableVersions: Array<DocVersion>;
106
+ deliverable: string;
107
+ docTitle: string;
108
+ language: DocLanguage;
109
+ toc: Array<TreeNode>;
110
+ tocMap: { [key: string]: TreeNode };
111
+ version: DocVersion;
112
+ pdfUrl: string;
113
+ };
114
+
115
+ export type ContentApiOptions = {
116
+ version: string;
117
+ language: string;
118
+ };
119
+
120
+ export type TocMap = { [key: string]: TreeNode };
@@ -0,0 +1,163 @@
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(
91
+ apiToc: Array<ApiNavItem>
92
+ ): {
93
+ tocMap: { [key: string]: TreeNode };
94
+ normalizedToc: Array<TreeNode>;
95
+ } {
96
+ const tocMap = {};
97
+ const normalizedToc =
98
+ apiToc &&
99
+ apiToc.map((navItem) => this.normalizeNavItem(navItem, tocMap));
100
+
101
+ return { normalizedToc, tocMap };
102
+ }
103
+
104
+ private normalizeNavItem(
105
+ navItem: ApiNavItem,
106
+ tocMap: TocMap,
107
+ parentNavItem?: TreeNode
108
+ ): TreeNode {
109
+ const name = this.calculateNavItemName(navItem, tocMap);
110
+ const node: TreeNode = {
111
+ label: navItem.text,
112
+ name,
113
+ parent: parentNavItem
114
+ };
115
+
116
+ if (name) {
117
+ tocMap[name] = node;
118
+ }
119
+ node.children = navItem.children?.map((child) =>
120
+ this.normalizeNavItem(child, tocMap, node)
121
+ );
122
+ return node;
123
+ }
124
+
125
+ private calculateNavItemName(navItem: ApiNavItem, tocMap: TocMap): string {
126
+ let href = navItem.a_attr?.href || "";
127
+ if (href.includes("#")) {
128
+ const [pathUrl] = href.split("#");
129
+ href = pathUrl in tocMap ? href : pathUrl;
130
+ }
131
+ return href || navItem.id;
132
+ }
133
+
134
+ private normalizeVersion(version: ApiDocVersion): DocVersion {
135
+ return (
136
+ version && {
137
+ label: version.version_text,
138
+ releaseVersion:
139
+ version.release_version &&
140
+ !version.release_version.startsWith("v")
141
+ ? `v${version.release_version}`
142
+ : version.release_version,
143
+ id: version.doc_version,
144
+ url: version.version_url
145
+ }
146
+ );
147
+ }
148
+
149
+ private normalizeLanguage(language: ApiDocLanguage): DocLanguage {
150
+ return (
151
+ language && {
152
+ label:
153
+ getLanguageDisplayTextById(
154
+ this.languages,
155
+ language.locale
156
+ ) || language.label,
157
+ id: language.locale,
158
+ code: language.code,
159
+ url: language.url
160
+ }
161
+ );
162
+ }
163
+ }
@@ -0,0 +1,54 @@
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-content-layout {
7
+ --dx-c-content-sidebar-sticky-top: var(--dx-g-global-header-height);
8
+ --dx-c-sidebar-height: calc(100vh - var(--dx-g-global-header-height));
9
+ }
10
+
11
+ doc-breadcrumbs {
12
+ --dx-c-popover-z-index: 5;
13
+
14
+ display: block;
15
+ margin-bottom: var(--dx-g-spacing-md);
16
+ }
17
+
18
+ dx-dropdown {
19
+ --dx-c-dropdown-option-font-size: var(--dx-g-text-sm);
20
+ }
21
+
22
+ dx-dropdown > dx-button {
23
+ --dx-c-button-primary-color: var(--button-primary-color);
24
+ --dx-c-button-primary-color-hover: var(--button-primary-color-hover);
25
+ --border-color: var(--button-primary-color);
26
+
27
+ border-bottom: 1px dashed var(--border-color);
28
+ }
29
+
30
+ dx-dropdown > dx-button:hover {
31
+ --border-color: var(--button-primary-color-hover);
32
+ }
33
+
34
+ doc-phase {
35
+ --doc-c-phase-top: var(--dx-g-global-header-height);
36
+ }
37
+
38
+ @media screen and (max-width: 768px) {
39
+ doc-content-layout {
40
+ --dx-g-doc-header-main-nav-height: 41px;
41
+ --dx-g-doc-header-height: calc(
42
+ var(--dx-g-doc-header-main-nav-height) + 40px
43
+ );
44
+ --dx-c-content-sidebar-sticky-top: calc(
45
+ var(--dx-g-global-header-height) + var(--dx-g-doc-header-height)
46
+ );
47
+ }
48
+
49
+ doc-phase {
50
+ --doc-c-phase-top: calc(
51
+ var(--dx-g-global-header-height) + var(--dx-g-doc-header-height)
52
+ );
53
+ }
54
+ }
@@ -0,0 +1,52 @@
1
+ <template>
2
+ <doc-content-layout
3
+ lwc:if={loaded}
4
+ lwc:ref="docContentLayout"
5
+ coveo-organization-id={coveoOrganizationId}
6
+ coveo-public-access-token={coveoPublicAccessToken}
7
+ coveo-analytics-token={coveoAnalyticsToken}
8
+ coveo-search-hub={coveoSearchHub}
9
+ coveo-advanced-query-config={coveoAdvancedQueryConfig}
10
+ sidebar-header={docTitle}
11
+ sidebar-content={sidebarContent}
12
+ sidebar-value={sidebarValue}
13
+ onselect={handleSelect}
14
+ use-old-sidebar={useOldSidebar}
15
+ onlangchange={handleLanguageChange}
16
+ languages={sidebarFooterContent.languages}
17
+ language={sidebarFooterContent.language}
18
+ bail-href={sidebarFooterContent.bailHref}
19
+ bail-label={sidebarFooterContent.bailLabel}
20
+ show-footer={enableFooter}
21
+ >
22
+ <doc-phase
23
+ slot="version-banner"
24
+ lwc:if={showVersionBanner}
25
+ doc-phase-info={oldVersionInfo}
26
+ icon-name="warning"
27
+ dismissible="true"
28
+ ondismissphase={handleDismissVersionBanner}
29
+ ></doc-phase>
30
+ <div lwc:if={showVersionPicker} slot="sidebar-header">
31
+ <doc-version-picker
32
+ data-type="version"
33
+ analytics-event="custEv_ctaLinkClick"
34
+ analytics-payload={ANALYTICS_PAYLOAD}
35
+ versions={versionOptions}
36
+ selected-version={version}
37
+ latest-version={latestVersion}
38
+ hide-badge={previewVersion}
39
+ ></doc-version-picker>
40
+ </div>
41
+ <doc-breadcrumbs
42
+ lwc:if={showBreadcrumbs}
43
+ breadcrumbs={breadcrumbs}
44
+ pixel-per-character={breadcrumbPixelPerCharacter}
45
+ ></doc-breadcrumbs>
46
+ <doc-content
47
+ docs-data={docContent}
48
+ page-reference={pageReference}
49
+ onnavclick={handleNavClick}
50
+ ></doc-content>
51
+ </doc-content-layout>
52
+ </template>