@salesforcedevs/docs-components 1.3.65 → 1.3.71
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/package.json +2 -2
- package/src/modules/doc/amfReference/amfReference.ts +24 -16
- package/src/modules/doc/breadcrumbItem/breadcrumbItem.ts +3 -2
- package/src/modules/doc/breadcrumbs/breadcrumbs.html +4 -0
- package/src/modules/doc/breadcrumbs/breadcrumbs.ts +4 -0
- package/src/modules/doc/content/content.ts +3 -2
- package/src/modules/doc/contentLayout/contentLayout.html +0 -2
- package/src/modules/doc/contentLayout/contentLayout.ts +5 -78
- package/src/modules/doc/header/header.ts +1 -1
- package/src/modules/doc/phase/phase.ts +3 -2
- package/src/modules/doc/toc/toc.html +1 -3
- package/src/modules/doc/toolbar/toolbar.ts +6 -6
- package/src/modules/doc/xmlContent/utils.ts +3 -1
- package/src/modules/doc/xmlContent/xmlContent.ts +14 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforcedevs/docs-components",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.71",
|
|
4
4
|
"description": "Docs Lightning web components for DSC",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "index.js",
|
|
@@ -24,5 +24,5 @@
|
|
|
24
24
|
"@types/lodash.orderby": "^4.6.7",
|
|
25
25
|
"@types/lodash.uniqby": "^4.7.7"
|
|
26
26
|
},
|
|
27
|
-
"gitHead": "
|
|
27
|
+
"gitHead": "2189b873b414cccf79905cf0b1401db76abbd9d0"
|
|
28
28
|
}
|
|
@@ -167,10 +167,12 @@ export default class AmfReference extends LightningElement {
|
|
|
167
167
|
constructor() {
|
|
168
168
|
super();
|
|
169
169
|
|
|
170
|
-
this._boundOnApiNavigationChanged =
|
|
171
|
-
this
|
|
172
|
-
|
|
173
|
-
|
|
170
|
+
this._boundOnApiNavigationChanged = this.onApiNavigationChanged.bind(
|
|
171
|
+
this
|
|
172
|
+
);
|
|
173
|
+
this._boundUpdateSelectedItemFromUrlQuery = this.updateSelectedItemFromUrlQuery.bind(
|
|
174
|
+
this
|
|
175
|
+
);
|
|
174
176
|
}
|
|
175
177
|
|
|
176
178
|
connectedCallback(): void {
|
|
@@ -226,8 +228,9 @@ export default class AmfReference extends LightningElement {
|
|
|
226
228
|
const updatedReferenceId =
|
|
227
229
|
oldReferenceIdNewReferenceIdMap[referenceId];
|
|
228
230
|
const newReferenceId = updatedReferenceId || referenceId;
|
|
229
|
-
const referenceItemConfig =
|
|
230
|
-
|
|
231
|
+
const referenceItemConfig = this.getAmfConfigWithId(
|
|
232
|
+
newReferenceId
|
|
233
|
+
);
|
|
231
234
|
if (referenceItemConfig) {
|
|
232
235
|
hashBasedRedirectUrl = `${referenceItemConfig.href}?meta=${encodedMeta}`;
|
|
233
236
|
}
|
|
@@ -296,8 +299,9 @@ export default class AmfReference extends LightningElement {
|
|
|
296
299
|
for (let i = 0; i < allVersions.length; i++) {
|
|
297
300
|
const versionItem = allVersions[i];
|
|
298
301
|
const referenceLink = versionItem.link.href;
|
|
299
|
-
const referenceId =
|
|
300
|
-
|
|
302
|
+
const referenceId = this.getReferenceIdFromUrl(
|
|
303
|
+
referenceLink
|
|
304
|
+
);
|
|
301
305
|
if (this._currentReferenceId === referenceId) {
|
|
302
306
|
// This is to navigate to respective topic in the changed version
|
|
303
307
|
versionItem.link.href = `${referenceLink}/${currentRefMeta}`;
|
|
@@ -1222,10 +1226,12 @@ export default class AmfReference extends LightningElement {
|
|
|
1222
1226
|
}
|
|
1223
1227
|
if (!isRedirecting) {
|
|
1224
1228
|
const currentReferenceUrl = window.location.href;
|
|
1225
|
-
const referenceMeta =
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
+
const referenceMeta = this.getMarkdownReferenceMeta(
|
|
1230
|
+
currentReferenceUrl
|
|
1231
|
+
);
|
|
1232
|
+
const selectedItemRefId = this.getReferenceIdFromUrl(
|
|
1233
|
+
currentReferenceUrl
|
|
1234
|
+
);
|
|
1229
1235
|
const referenceDetails = this.getRefDetailsForGivenTopicMeta(
|
|
1230
1236
|
selectedItemRefId,
|
|
1231
1237
|
referenceMeta
|
|
@@ -1264,8 +1270,9 @@ export default class AmfReference extends LightningElement {
|
|
|
1264
1270
|
const name = event.detail.name;
|
|
1265
1271
|
if (name) {
|
|
1266
1272
|
const urlReferenceId = this.getReferenceIdFromUrl(name);
|
|
1267
|
-
const specBasedReference =
|
|
1268
|
-
|
|
1273
|
+
const specBasedReference = this.isSpecBasedReference(
|
|
1274
|
+
urlReferenceId
|
|
1275
|
+
);
|
|
1269
1276
|
if (specBasedReference) {
|
|
1270
1277
|
const metaVal = this.getMetaFromUrl(name);
|
|
1271
1278
|
const currentSelectedMeta = this.selectedTopic
|
|
@@ -1315,8 +1322,9 @@ export default class AmfReference extends LightningElement {
|
|
|
1315
1322
|
const currentReferenceId = this.getReferenceIdFromUrl(currentUrl);
|
|
1316
1323
|
//No need to do anything if user is expanding currently selected reference
|
|
1317
1324
|
if (referenceId !== currentReferenceId) {
|
|
1318
|
-
const isSpecBasedReference =
|
|
1319
|
-
|
|
1325
|
+
const isSpecBasedReference = this.isSpecBasedReference(
|
|
1326
|
+
referenceId
|
|
1327
|
+
);
|
|
1320
1328
|
if (isSpecBasedReference) {
|
|
1321
1329
|
// Perform functionality same as item selection
|
|
1322
1330
|
this.onNavSelect(event);
|
|
@@ -9,6 +9,7 @@ const LONG_LABEL_NUMBER = 30;
|
|
|
9
9
|
export default class BreadcrumbItem extends LightningElement {
|
|
10
10
|
@api href?: string;
|
|
11
11
|
@api level?: string;
|
|
12
|
+
@api breadcrumbLabels?: string;
|
|
12
13
|
|
|
13
14
|
@api
|
|
14
15
|
get label() {
|
|
@@ -56,13 +57,13 @@ export default class BreadcrumbItem extends LightningElement {
|
|
|
56
57
|
element_type: "link",
|
|
57
58
|
nav_type: "breadcrumb",
|
|
58
59
|
nav_level: this.level ? this.level + 1 : 1,
|
|
59
|
-
nav_item: this.
|
|
60
|
+
nav_item: this.breadcrumbLabels
|
|
60
61
|
});
|
|
61
62
|
|
|
62
63
|
track(event.target!, "custEv_linkClick", {
|
|
63
64
|
click_text: this.label,
|
|
64
65
|
click_url: this.href,
|
|
65
|
-
element_title:
|
|
66
|
+
element_title: this.label,
|
|
66
67
|
element_type: "link",
|
|
67
68
|
content_category: "cta"
|
|
68
69
|
});
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
<doc-breadcrumb-item
|
|
6
6
|
href={firstCrumb.href}
|
|
7
7
|
label={firstCrumb.label}
|
|
8
|
+
breadcrumb-labels={breadcrumbLabels}
|
|
8
9
|
></doc-breadcrumb-item>
|
|
9
10
|
<span class="breadcrumb-item_slash">/</span>
|
|
10
11
|
<template if:true={renderDropdown}>
|
|
@@ -33,6 +34,7 @@
|
|
|
33
34
|
key={breadcrumb.id}
|
|
34
35
|
label={breadcrumb.label}
|
|
35
36
|
level={breadcrumb.level}
|
|
37
|
+
breadcrumb-labels={breadcrumbLabels}
|
|
36
38
|
></doc-breadcrumb-item>
|
|
37
39
|
<span class="breadcrumb-item_slash" key={breadcrumb.label}>
|
|
38
40
|
/
|
|
@@ -40,12 +42,14 @@
|
|
|
40
42
|
</template>
|
|
41
43
|
<doc-breadcrumb-item
|
|
42
44
|
label={lastCrumb.label}
|
|
45
|
+
breadcrumb-labels={breadcrumbLabels}
|
|
43
46
|
></doc-breadcrumb-item>
|
|
44
47
|
</template>
|
|
45
48
|
<template if:true={renderSmallVariant}>
|
|
46
49
|
<doc-breadcrumb-item
|
|
47
50
|
href={lastLinkCrump.href}
|
|
48
51
|
label={lastLinkCrump.label}
|
|
52
|
+
breadcrumb-labels={breadcrumbLabels}
|
|
49
53
|
variant="back-arrow"
|
|
50
54
|
></doc-breadcrumb-item>
|
|
51
55
|
</template>
|
|
@@ -93,6 +93,10 @@ export default class Breadcrumbs extends LightningElement {
|
|
|
93
93
|
return this.breadcrumbs[0];
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
+
private get breadcrumbLabels(): string {
|
|
97
|
+
return this.breadcrumbs.map((crumb) => crumb.label).join(":");
|
|
98
|
+
}
|
|
99
|
+
|
|
96
100
|
private get lastCrumb(): Breadcrumb {
|
|
97
101
|
return this.breadcrumbs[this.breadcrumbs.length - 1];
|
|
98
102
|
}
|
|
@@ -324,8 +324,9 @@ export default class Content extends LightningElement {
|
|
|
324
324
|
event.preventDefault();
|
|
325
325
|
// eslint-disable-next-line no-use-before-define
|
|
326
326
|
const target = event.currentTarget.dataset.id;
|
|
327
|
-
const [page, docId, deliverable, tempContentDocumentId] =
|
|
328
|
-
|
|
327
|
+
const [page, docId, deliverable, tempContentDocumentId] = target.split(
|
|
328
|
+
"/"
|
|
329
|
+
);
|
|
329
330
|
const [contentDocumentId, hash] = tempContentDocumentId.split("#");
|
|
330
331
|
const newPageReference = {
|
|
331
332
|
page: page,
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
trees={sidebarContent}
|
|
7
7
|
value={sidebarValue}
|
|
8
8
|
header={sidebarHeader}
|
|
9
|
-
onsidebarclick={onSidebarClick}
|
|
10
9
|
>
|
|
11
10
|
<slot name="sidebar-header" slot="header"></slot>
|
|
12
11
|
</dx-sidebar-old>
|
|
@@ -21,7 +20,6 @@
|
|
|
21
20
|
coveo-public-access-token={coveoPublicAccessToken}
|
|
22
21
|
coveo-search-hub={coveoSearchHub}
|
|
23
22
|
coveo-advanced-query-config={coveoAdvancedQueryConfig}
|
|
24
|
-
onsidebarclick={onSidebarClick}
|
|
25
23
|
>
|
|
26
24
|
<slot name="sidebar-header" slot="header"></slot>
|
|
27
25
|
</dx-sidebar>
|
|
@@ -3,7 +3,6 @@ import { closest } from "kagekiri";
|
|
|
3
3
|
import { toJson } from "dxUtils/normalizers";
|
|
4
4
|
import { highlightTerms } from "dxUtils/highlight";
|
|
5
5
|
import { SearchSyncer } from "docUtils/SearchSyncer";
|
|
6
|
-
import { track as sendGtm } from "dxUtils/analytics";
|
|
7
6
|
|
|
8
7
|
type AnchorMap = { [key: string]: { intersect: boolean; id: string } };
|
|
9
8
|
|
|
@@ -109,12 +108,6 @@ export default class ContentLayout extends LightningElement {
|
|
|
109
108
|
private observerTimerId = null;
|
|
110
109
|
private didScrollToSelectedHash = false;
|
|
111
110
|
private _scrollInterval = 0;
|
|
112
|
-
private scrollPosition = 0;
|
|
113
|
-
|
|
114
|
-
private scrolledTwentyFivePercent = false;
|
|
115
|
-
private scrolledFiftyPercent = false;
|
|
116
|
-
private scrolledSevenFivePercent = false;
|
|
117
|
-
private scrolledOneHundredPercent = false;
|
|
118
111
|
|
|
119
112
|
get showToc(): boolean {
|
|
120
113
|
return this.tocOptions && this.tocOptions.length > 0;
|
|
@@ -143,11 +136,6 @@ export default class ContentLayout extends LightningElement {
|
|
|
143
136
|
);
|
|
144
137
|
this.searchSyncer.init();
|
|
145
138
|
}
|
|
146
|
-
|
|
147
|
-
document.body.addEventListener(
|
|
148
|
-
"scroll",
|
|
149
|
-
this.scrollThresholdHandler.bind(this)
|
|
150
|
-
);
|
|
151
139
|
}
|
|
152
140
|
|
|
153
141
|
renderedCallback(): void {
|
|
@@ -176,8 +164,6 @@ export default class ContentLayout extends LightningElement {
|
|
|
176
164
|
this.clearRenderObserverTimer();
|
|
177
165
|
|
|
178
166
|
window.clearInterval(this._scrollInterval);
|
|
179
|
-
|
|
180
|
-
document.removeEventListener("scroll", this.scrollThresholdHandler);
|
|
181
167
|
}
|
|
182
168
|
|
|
183
169
|
restoreScroll() {
|
|
@@ -233,82 +219,23 @@ export default class ContentLayout extends LightningElement {
|
|
|
233
219
|
this.resetScrollThreshold();
|
|
234
220
|
}
|
|
235
221
|
|
|
236
|
-
sendGtmScrollThresholdEvent(threshold: "25" | "50" | "75" | "100") {
|
|
237
|
-
sendGtm(document.body, "custEv_scroll", {
|
|
238
|
-
scrollDepth: threshold
|
|
239
|
-
});
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
resetScrollThreshold() {
|
|
243
|
-
this.scrolledTwentyFivePercent = false;
|
|
244
|
-
this.scrolledFiftyPercent = false;
|
|
245
|
-
this.scrolledSevenFivePercent = false;
|
|
246
|
-
this.scrolledOneHundredPercent = false;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
scrollThresholdHandler() {
|
|
250
|
-
this.scrollPosition =
|
|
251
|
-
(document.body.scrollTop /
|
|
252
|
-
(document.body.scrollHeight - window.innerHeight)) *
|
|
253
|
-
100;
|
|
254
|
-
|
|
255
|
-
if (this.scrollPosition > 25 && !this.scrolledTwentyFivePercent) {
|
|
256
|
-
this.scrolledTwentyFivePercent = true;
|
|
257
|
-
this.sendGtmScrollThresholdEvent("25");
|
|
258
|
-
} else if (this.scrollPosition > 50 && !this.scrolledFiftyPercent) {
|
|
259
|
-
this.scrolledFiftyPercent = true;
|
|
260
|
-
this.sendGtmScrollThresholdEvent("50");
|
|
261
|
-
} else if (this.scrollPosition > 75 && !this.scrolledSevenFivePercent) {
|
|
262
|
-
this.scrolledSevenFivePercent = true;
|
|
263
|
-
this.sendGtmScrollThresholdEvent("75");
|
|
264
|
-
} else if (
|
|
265
|
-
this.scrollPosition === 100 &&
|
|
266
|
-
!this.scrolledOneHundredPercent
|
|
267
|
-
) {
|
|
268
|
-
this.scrolledOneHundredPercent = true;
|
|
269
|
-
this.sendGtmScrollThresholdEvent("100");
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
|
|
273
222
|
onSlotChange(event: Event): void {
|
|
274
|
-
const slotElements = (
|
|
275
|
-
event.target as HTMLSlotElement
|
|
276
|
-
).assignedElements();
|
|
223
|
+
const slotElements = (event.target as HTMLSlotElement).assignedElements();
|
|
277
224
|
|
|
278
225
|
if (slotElements.length) {
|
|
279
226
|
this.contentLoaded = true;
|
|
280
227
|
const slotContentElement = slotElements[0];
|
|
281
|
-
const headingElements =
|
|
282
|
-
|
|
283
|
-
TOC_HEADER_TAG
|
|
284
|
-
);
|
|
285
|
-
|
|
286
|
-
const docContentEl = slotElements.find(
|
|
287
|
-
(el) => el.tagName === "DOC-CONTENT"
|
|
228
|
+
const headingElements = slotContentElement.ownerDocument?.getElementsByTagName(
|
|
229
|
+
TOC_HEADER_TAG
|
|
288
230
|
);
|
|
289
|
-
const topicTitleEl =
|
|
290
|
-
docContentEl?.shadowRoot?.getElementById("topic-title");
|
|
291
|
-
const anchorElements =
|
|
292
|
-
docContentEl?.shadowRoot?.querySelectorAll("a[href]");
|
|
293
|
-
|
|
294
|
-
// Attach click listeners to all anchor elements for analytics
|
|
295
|
-
anchorElements?.forEach((anchorElement) => {
|
|
296
|
-
anchorElement.addEventListener("click", () => {
|
|
297
|
-
sendGtm(anchorElement, "custEv_docContentClick", {
|
|
298
|
-
clickText: anchorElement.textContent,
|
|
299
|
-
clickUrl: anchorElement.getAttribute("href"),
|
|
300
|
-
elementType: "link",
|
|
301
|
-
locationOnPage: "docContent",
|
|
302
|
-
itemTitle: topicTitleEl?.textContent
|
|
303
|
-
});
|
|
304
|
-
});
|
|
305
|
-
});
|
|
306
231
|
|
|
307
232
|
for (const headingElement of headingElements) {
|
|
308
233
|
// Sometimes elements hash is not being set when slot content is wrapped with div
|
|
309
234
|
headingElement.hash = headingElement.attributes.hash?.nodeValue;
|
|
310
235
|
}
|
|
236
|
+
|
|
311
237
|
const tocOptions = [];
|
|
238
|
+
|
|
312
239
|
for (const headingElement of headingElements) {
|
|
313
240
|
headingElement.id = headingElement.hash;
|
|
314
241
|
|
|
@@ -43,8 +43,9 @@ export default class Phase extends LightningElement {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
renderedCallback() {
|
|
46
|
-
const phaseBodyContainer =
|
|
47
|
-
|
|
46
|
+
const phaseBodyContainer = this.template.querySelector(
|
|
47
|
+
".doc-phase-body"
|
|
48
|
+
);
|
|
48
49
|
if (phaseBodyContainer && this.docPhaseInfo) {
|
|
49
50
|
// eslint-disable-next-line @lwc/lwc/no-inner-html
|
|
50
51
|
phaseBodyContainer.innerHTML = this.docPhaseInfo.body;
|
|
@@ -40,9 +40,9 @@ export default class Toolbar extends LightningElement {
|
|
|
40
40
|
"select[name=languages]"
|
|
41
41
|
) as HTMLSelectElement;
|
|
42
42
|
if (languageEl) {
|
|
43
|
-
const languageValue = (
|
|
44
|
-
languageEl
|
|
45
|
-
).value;
|
|
43
|
+
const languageValue = (languageEl[
|
|
44
|
+
languageEl.selectedIndex
|
|
45
|
+
] as HTMLOptionElement).value;
|
|
46
46
|
this.dispatchEvent(
|
|
47
47
|
new CustomEvent("languageselected", {
|
|
48
48
|
detail: {
|
|
@@ -61,9 +61,9 @@ export default class Toolbar extends LightningElement {
|
|
|
61
61
|
"select[name=versions]"
|
|
62
62
|
) as HTMLSelectElement;
|
|
63
63
|
if (versionEl) {
|
|
64
|
-
const versionValue = (
|
|
65
|
-
versionEl
|
|
66
|
-
).value;
|
|
64
|
+
const versionValue = (versionEl[
|
|
65
|
+
versionEl.selectedIndex
|
|
66
|
+
] as HTMLOptionElement).value;
|
|
67
67
|
this.dispatchEvent(
|
|
68
68
|
new CustomEvent("versionselected", {
|
|
69
69
|
detail: {
|
|
@@ -355,8 +355,12 @@ export default class DocXmlContent extends LightningElementWithState<{
|
|
|
355
355
|
}
|
|
356
356
|
|
|
357
357
|
getReferenceFromUrl(): PageReference {
|
|
358
|
-
const [
|
|
359
|
-
|
|
358
|
+
const [
|
|
359
|
+
page,
|
|
360
|
+
docId,
|
|
361
|
+
deliverable,
|
|
362
|
+
contentDocumentId
|
|
363
|
+
] = window.location.pathname.substr(1).split("/");
|
|
360
364
|
|
|
361
365
|
const { origin: domain, hash, search } = window.location;
|
|
362
366
|
|
|
@@ -523,8 +527,14 @@ export default class DocXmlContent extends LightningElementWithState<{
|
|
|
523
527
|
}
|
|
524
528
|
|
|
525
529
|
private pageReferenceToString(reference: PageReference): string {
|
|
526
|
-
const {
|
|
527
|
-
|
|
530
|
+
const {
|
|
531
|
+
page,
|
|
532
|
+
docId,
|
|
533
|
+
deliverable,
|
|
534
|
+
contentDocumentId,
|
|
535
|
+
hash,
|
|
536
|
+
search
|
|
537
|
+
} = reference;
|
|
528
538
|
return `/${page}/${docId}/${deliverable}/${contentDocumentId}${this.normalizeSearch(
|
|
529
539
|
search
|
|
530
540
|
)}${this.normalizeHash(hash)}`;
|