@salesforcedevs/docs-components 1.3.194-langpicker11-alpha → 1.3.194-langpicker13-alpha

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.194-langpicker11-alpha",
3
+ "version": "1.3.194-langpicker13-alpha",
4
4
  "description": "Docs Lightning web components for DSC",
5
5
  "license": "MIT",
6
6
  "main": "index.js",
@@ -12,6 +12,27 @@
12
12
  >
13
13
  {bailLabel}
14
14
  </dx-button>
15
+ <dx-dropdown
16
+ if:true={hasLanguages}
17
+ class="footer_lang-dropdown"
18
+ options={languages}
19
+ small
20
+ value-path={langValuePath}
21
+ value={language}
22
+ onchange={onLangChange}
23
+ variant="docoption"
24
+ >
25
+ <dx-button
26
+ aria-label="Select Language"
27
+ variant="inline"
28
+ icon-size="large"
29
+ icon-symbol="world"
30
+ >
31
+ {languageLabel}
32
+ </dx-button>
33
+ </dx-dropdown>
34
+ </div>
35
+ <div if:true={mobile} class="footer-display">
15
36
  <dx-dropdown
16
37
  if:true={hasLanguages}
17
38
  class="footer_lang-dropdown"
@@ -5,6 +5,8 @@ import { toJson } from "dxUtils/normalizers";
5
5
  import get from "lodash.get";
6
6
  import { track } from "dxUtils/analytics";
7
7
 
8
+ const MOBILE_SIZE_MATCH = "768px";
9
+
8
10
  export default class ContentLayout extends LightningElement {
9
11
  @api langValuePath: string = "id";
10
12
  @api bailHref?: string | null = null;
@@ -32,6 +34,8 @@ export default class ContentLayout extends LightningElement {
32
34
 
33
35
  private _languages!: OptionWithLink[];
34
36
  private _language: string | null = null;
37
+ private mobile: boolean = false;
38
+ private matchMedia!: MediaQueryList;
35
39
 
36
40
  private get hasLanguages(): boolean {
37
41
  return !!(this.languages && this.languages.length > 1);
@@ -81,4 +85,20 @@ export default class ContentLayout extends LightningElement {
81
85
  ...payload
82
86
  });
83
87
  }
88
+
89
+ connectedCallback() {
90
+ this.matchMedia = window.matchMedia(
91
+ `(max-width: ${MOBILE_SIZE_MATCH})`
92
+ );
93
+ this.onMediaChange(this.matchMedia);
94
+ this.matchMedia.addEventListener("change", this.onMediaChange);
95
+ }
96
+
97
+ disconnectedCallback() {
98
+ this.matchMedia.removeEventListener("change", this.onMediaChange);
99
+ }
100
+
101
+ private onMediaChange = (event: MediaQueryListEvent | MediaQueryList) => {
102
+ this.mobile = event.matches;
103
+ };
84
104
  }
@@ -1,10 +1,8 @@
1
1
  import { api } from "lwc";
2
2
  import cx from "classnames";
3
- import type { OptionWithNested, OptionWithLink } from "typings/custom";
3
+ import type { OptionWithNested } from "typings/custom";
4
4
  import { HeaderBase } from "dxBaseElements/headerBase";
5
5
  import { toJson } from "dxUtils/normalizers";
6
- import get from "lodash.get";
7
- import { track } from "dxUtils/analytics";
8
6
 
9
7
  const TABLET_MATCH = "980px";
10
8
  const MOBILE_MATCH = "880px";
@@ -23,28 +21,6 @@ export default class Header extends HeaderBase {
23
21
  this._scopedNavItems = toJson(value);
24
22
  }
25
23
 
26
- @api
27
- get languages() {
28
- return this._languages;
29
- }
30
-
31
- set languages(value) {
32
- this._languages = toJson(value);
33
- }
34
-
35
- @api
36
- get language() {
37
- return this._language;
38
- }
39
-
40
- set language(value) {
41
- if (this._language !== value) {
42
- this._language = value;
43
- }
44
- }
45
-
46
- private _language: string | null = null;
47
- private _languages!: OptionWithLink[];
48
24
  private _scopedNavItems!: OptionWithNested[];
49
25
  private smallMobile = false;
50
26
  private smallMobileMatchMedia!: MediaQueryList;
@@ -60,24 +36,6 @@ export default class Header extends HeaderBase {
60
36
  return this.scopedNavItems && this.scopedNavItems.length > 0;
61
37
  }
62
38
 
63
- private get hasLanguages(): boolean {
64
- return !!(this.languages && this.languages.length);
65
- }
66
-
67
- private get showMobileLanguages(): boolean {
68
- return this.smallMobile && this.hasLanguages;
69
- }
70
-
71
- private get languageLabel(): string {
72
- return (
73
- (this.language &&
74
- this.languages.find(
75
- (lang) => get(lang, this.langValuePath) === this.language
76
- )?.label) ||
77
- this.languages[0].label
78
- );
79
- }
80
-
81
39
  connectedCallback(): void {
82
40
  super.connectedCallback();
83
41
  this.tabletMatchMedia = window.matchMedia(
@@ -129,34 +87,4 @@ export default class Header extends HeaderBase {
129
87
  this.hasScopedNavItems && "has-scoped-nav-items"
130
88
  );
131
89
  }
132
-
133
- private onLangChange(event: CustomEvent<string>): void {
134
- const { detail } = event;
135
- this._language = detail;
136
-
137
- this.dispatchEvent(new CustomEvent("langchange", { detail }));
138
- }
139
-
140
- private handleBailClick(event: Event) {
141
- const payload = {
142
- click_text: "pdf",
143
- click_url: this.bailHref,
144
- element_title: "pdf",
145
- element_type: "link",
146
- content_category: "download"
147
- };
148
- track(event.target!, "custEv_pdfDownload", {
149
- ...payload,
150
- file_name: this.getFilename(this.bailHref!),
151
- file_extension: "pdf"
152
- });
153
-
154
- track(event.target!, "custEv_linkClick", {
155
- ...payload
156
- });
157
- }
158
-
159
- private getFilename = function (path: string) {
160
- return path.substring(path.lastIndexOf("/") + 1);
161
- };
162
90
  }