@salesforcedevs/docs-components 1.3.55 → 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/LICENSE ADDED
@@ -0,0 +1,12 @@
1
+ Copyright (c) 2020, Salesforce.com, Inc.
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
5
+
6
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7
+
8
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
9
+
10
+ * Neither the name of Salesforce.com nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
11
+
12
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforcedevs/docs-components",
3
- "version": "1.3.55",
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": "4629fdd9ca18a13480044ad43515b91945d16aad"
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.onApiNavigationChanged.bind(this);
172
- this._boundUpdateSelectedItemFromUrlQuery =
173
- this.updateSelectedItemFromUrlQuery.bind(this);
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
- this.getAmfConfigWithId(newReferenceId);
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
- this.getReferenceIdFromUrl(referenceLink);
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
- this.getMarkdownReferenceMeta(currentReferenceUrl);
1227
- const selectedItemRefId =
1228
- this.getReferenceIdFromUrl(currentReferenceUrl);
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
- this.isSpecBasedReference(urlReferenceId);
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
- this.isSpecBasedReference(referenceId);
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.label
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: "a",
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
- target.split("/");
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
- slotContentElement.ownerDocument?.getElementsByTagName(
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
 
@@ -149,7 +149,7 @@ export default class Header extends HeaderBase {
149
149
  const payload = {
150
150
  click_text: "pdf",
151
151
  click_url: this.bailHref,
152
- element_title: "dx-button",
152
+ element_title: "pdf",
153
153
  element_type: "link",
154
154
  content_category: "download"
155
155
  };
@@ -43,8 +43,9 @@ export default class Phase extends LightningElement {
43
43
  }
44
44
 
45
45
  renderedCallback() {
46
- const phaseBodyContainer =
47
- this.template.querySelector(".doc-phase-body");
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;
@@ -96,9 +96,7 @@
96
96
  <a
97
97
  href={child5.a_attr.href}
98
98
  data-id={child5.id}
99
- class="
100
- nav1
101
- "
99
+ class="nav1"
102
100
  onclick={handleNavClick}
103
101
  >
104
102
  {child5.text}
@@ -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[languageEl.selectedIndex] as HTMLOptionElement
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[versionEl.selectedIndex] as HTMLOptionElement
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: {
@@ -87,7 +87,9 @@ export class FetchContent {
87
87
  return json;
88
88
  }
89
89
 
90
- private normalizeToc(apiToc: Array<ApiNavItem>): {
90
+ private normalizeToc(
91
+ apiToc: Array<ApiNavItem>
92
+ ): {
91
93
  tocMap: { [key: string]: TreeNode };
92
94
  normalizedToc: Array<TreeNode>;
93
95
  } {
@@ -355,8 +355,12 @@ export default class DocXmlContent extends LightningElementWithState<{
355
355
  }
356
356
 
357
357
  getReferenceFromUrl(): PageReference {
358
- const [page, docId, deliverable, contentDocumentId] =
359
- window.location.pathname.substr(1).split("/");
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 { page, docId, deliverable, contentDocumentId, hash, search } =
527
- reference;
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)}`;