@salesforcedevs/docs-components 1.3.50 → 1.3.53

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforcedevs/docs-components",
3
- "version": "1.3.50",
3
+ "version": "1.3.53",
4
4
  "description": "Docs Lightning web components for DSC",
5
5
  "license": "MIT",
6
6
  "main": "index.js",
@@ -22,7 +22,6 @@
22
22
  <div slot="sidebar-header" class="version-picker">
23
23
  <template if:true={isVersionEnabled}>
24
24
  <dx-dropdown
25
- suppress-gtm-nav-headings
26
25
  onchange={handleVersionChange}
27
26
  data-type="version"
28
27
  options={versions}
@@ -1,6 +1,6 @@
1
1
  import { track } from "dxUtils/analytics";
2
2
  import { LightningElement, api } from "lwc";
3
- import { AnalyticsPayload, BreadcrumbItemVariant } from "typings/custom";
3
+ import { BreadcrumbItemVariant } from "typings/custom";
4
4
 
5
5
  const BREADCRUMB_LONG = "breadcrumb_long";
6
6
  const BREADCRUMB_BACK_ARROW = "breadcrumb_back-arrow";
@@ -8,8 +8,7 @@ const BREADCRUMB_BACK_ARROW = "breadcrumb_back-arrow";
8
8
  const LONG_LABEL_NUMBER = 30;
9
9
  export default class BreadcrumbItem extends LightningElement {
10
10
  @api href?: string;
11
- @api analyticsEvent!: string;
12
- @api analyticsBasePayload!: AnalyticsPayload;
11
+ @api level?: string;
13
12
 
14
13
  @api
15
14
  get label() {
@@ -51,14 +50,21 @@ export default class BreadcrumbItem extends LightningElement {
51
50
  }
52
51
 
53
52
  private onLinkClick(event: Event): void {
54
- if (!this.analyticsEvent) {
55
- return;
56
- }
53
+ track(event.target!, "custEv_breadcrumbClick", {
54
+ click_text: this.label,
55
+ click_url: this.href,
56
+ element_type: "link",
57
+ nav_type: "breadcrumb",
58
+ nav_level: this.level ? this.level + 1 : 1,
59
+ nav_item: this.label
60
+ });
57
61
 
58
- track(event.target!, this.analyticsEvent, {
59
- ...this.analyticsBasePayload,
60
- clickText: this.label,
61
- clickUrl: this.href
62
+ track(event.target!, "custEv_linkClick", {
63
+ click_text: this.label,
64
+ click_url: this.href,
65
+ element_title: "a",
66
+ element_type: "link",
67
+ content_category: "cta"
62
68
  });
63
69
  }
64
70
  }
@@ -3,21 +3,18 @@
3
3
  <template if:true={displayCrumbs}>
4
4
  <template if:false={renderSmallVariant}>
5
5
  <doc-breadcrumb-item
6
- analytics-event={analyticsEventName}
7
- analytics-base-payload={analyticsBasePayload}
8
6
  href={firstCrumb.href}
9
7
  label={firstCrumb.label}
10
8
  ></doc-breadcrumb-item>
11
9
  <span class="breadcrumb-item_slash">/</span>
12
10
  <template if:true={renderDropdown}>
13
11
  <dx-dropdown
12
+ analytics-event="custEv_breadcrumbClick"
13
+ analytics-payload={ANALYTICS_PAYLOAD}
14
14
  if:true={renderDropdown}
15
- analytics-event={analyticsEventName}
16
- analytics-base-payload={analyticsBasePayload}
17
15
  options={dropdownOptions}
18
16
  open-on-hover
19
17
  placement="bottom"
20
- suppress-gtm-nav-headings
21
18
  variant="indented"
22
19
  width="fit-content"
23
20
  >
@@ -32,11 +29,10 @@
32
29
  </template>
33
30
  <template for:each={breadcrumbItems} for:item="breadcrumb">
34
31
  <doc-breadcrumb-item
35
- analytics-event={analyticsEventName}
36
- analytics-base-payload={analyticsBasePayload}
37
32
  href={breadcrumb.href}
38
33
  key={breadcrumb.id}
39
34
  label={breadcrumb.label}
35
+ level={breadcrumb.level}
40
36
  ></doc-breadcrumb-item>
41
37
  <span class="breadcrumb-item_slash" key={breadcrumb.label}>
42
38
  /
@@ -48,8 +44,6 @@
48
44
  </template>
49
45
  <template if:true={renderSmallVariant}>
50
46
  <doc-breadcrumb-item
51
- analytics-event={analyticsEventName}
52
- analytics-base-payload={analyticsBasePayload}
53
47
  href={lastLinkCrump.href}
54
48
  label={lastLinkCrump.label}
55
49
  variant="back-arrow"
@@ -17,11 +17,6 @@ const CONSTANTS = {
17
17
  dropdownWidth: 32
18
18
  };
19
19
 
20
- export const ANALYTICS_EVENT_NAME = "custEv_breadcrumbNavClick";
21
- export const ANALYTICS_BASE_PAYLOAD = {
22
- navType: "breadcrumb"
23
- };
24
-
25
20
  export default class Breadcrumbs extends LightningElement {
26
21
  @api ariaLabel: string = "Documentation Breadcrumbs";
27
22
 
@@ -102,14 +97,12 @@ export default class Breadcrumbs extends LightningElement {
102
97
  return this.breadcrumbs[this.breadcrumbs.length - 1];
103
98
  }
104
99
 
105
- private get analyticsEventName() {
106
- return ANALYTICS_EVENT_NAME;
107
- }
108
-
109
- private get analyticsBasePayload() {
100
+ // this payload is only used for breadcrumb dropdown
101
+ private get ANALYTICS_PAYLOAD() {
110
102
  return {
111
- ...ANALYTICS_BASE_PAYLOAD,
112
- navItem: this.breadcrumbs.map((crumb) => crumb.label).join("/")
103
+ element_type: "link",
104
+ nav_type: "breadcrumb",
105
+ nav_level: 1
113
106
  };
114
107
  }
115
108
 
@@ -137,10 +130,13 @@ export default class Breadcrumbs extends LightningElement {
137
130
  return;
138
131
  }
139
132
 
140
- this._breadcrumbs = toJson(breadcrumbs).map((crumb: Breadcrumb) => ({
141
- ...crumb,
142
- id: crumb.id || crumb.href
143
- }));
133
+ this._breadcrumbs = toJson(breadcrumbs).map(
134
+ (crumb: Breadcrumb, index: number) => ({
135
+ ...crumb,
136
+ id: crumb.id || crumb.href,
137
+ level: index
138
+ })
139
+ );
144
140
  }
145
141
 
146
142
  private updateDropdownOptionAmount(): void {
@@ -144,7 +144,7 @@ export default class ContentLayout extends LightningElement {
144
144
  this.searchSyncer.init();
145
145
  }
146
146
 
147
- document.addEventListener(
147
+ document.body.addEventListener(
148
148
  "scroll",
149
149
  this.scrollThresholdHandler.bind(this)
150
150
  );
@@ -248,9 +248,8 @@ export default class ContentLayout extends LightningElement {
248
248
 
249
249
  scrollThresholdHandler() {
250
250
  this.scrollPosition =
251
- ((document.documentElement.scrollTop + document.body.scrollTop) /
252
- (document.documentElement.scrollHeight -
253
- document.documentElement.clientHeight)) *
251
+ (document.body.scrollTop /
252
+ (document.body.scrollHeight - window.innerHeight)) *
254
253
  100;
255
254
 
256
255
  if (this.scrollPosition > 25 && !this.scrolledTwentyFivePercent) {
@@ -147,6 +147,7 @@
147
147
  aria-label={bailLabel}
148
148
  class="header_bail-link"
149
149
  href={bailHref}
150
+ onclick={handleBailClick}
150
151
  variant="tertiary"
151
152
  icon-symbol="new_window"
152
153
  target="_blank"
@@ -4,6 +4,7 @@ import type { OptionWithNested, OptionWithLink } from "typings/custom";
4
4
  import { HeaderBase } from "dxBaseElements/headerBase";
5
5
  import { toJson } from "dxUtils/normalizers";
6
6
  import get from "lodash.get";
7
+ import { track } from "dxUtils/analytics";
7
8
 
8
9
  const TABLET_MATCH = "980px";
9
10
  const MOBILE_MATCH = "880px";
@@ -143,4 +144,27 @@ export default class Header extends HeaderBase {
143
144
  this._language = detail;
144
145
  this.dispatchEvent(new CustomEvent("langchange", { detail }));
145
146
  }
147
+
148
+ private handleBailClick(event: Event) {
149
+ const payload = {
150
+ click_text: "pdf",
151
+ click_url: this.bailHref,
152
+ element_title: "dx-button",
153
+ element_type: "link",
154
+ content_category: "download"
155
+ };
156
+ track(event.target!, "custEv_pdfDownload", {
157
+ ...payload,
158
+ file_name: this.getFilename(this.bailHref!),
159
+ file_extension: "pdf"
160
+ });
161
+
162
+ track(event.target!, "custEv_linkClick", {
163
+ ...payload
164
+ });
165
+ }
166
+
167
+ private getFilename = function (path: string) {
168
+ return path.substring(path.lastIndexOf("/") + 1);
169
+ };
146
170
  }
@@ -14,8 +14,8 @@
14
14
  <div slot="sidebar-header" class="document-pickers">
15
15
  <dx-dropdown
16
16
  data-type="version"
17
- suppress-gtm-nav-headings
18
- analytics-event={analyticsEvent}
17
+ analytics-event="custEv_ctaLinkClick"
18
+ analytics-payload={ANALYTICS_PAYLOAD}
19
19
  options={versionOptions}
20
20
  value={version.id}
21
21
  width="290px"
@@ -63,7 +63,6 @@ export default class DocXmlContent extends LightningElementWithState<{
63
63
  private sidebarContent: Array<TreeNode> = null;
64
64
  private version: DocVersion = null;
65
65
  private docTitle = "";
66
- private analyticsEvent = "custEv_ctaLinkClick";
67
66
  private _pathName = "";
68
67
  private _pageHeader?: Header;
69
68
  private listenerAttached = false;
@@ -281,6 +280,13 @@ export default class DocXmlContent extends LightningElementWithState<{
281
280
  );
282
281
  }
283
282
 
283
+ private get ANALYTICS_PAYLOAD() {
284
+ return {
285
+ element_title: "version picker",
286
+ content_category: "cta"
287
+ };
288
+ }
289
+
284
290
  private handlePopState = (): void =>
285
291
  this.updatePageReference(this.getReferenceFromUrl());
286
292