@salesforcedevs/docs-components 1.3.194-langpicker1-alpha → 1.3.194-langpicker10-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/lwc.config.json CHANGED
@@ -18,6 +18,7 @@
18
18
  "doc/overview",
19
19
  "doc/phase",
20
20
  "doc/xmlContent",
21
+ "doc/footerNav",
21
22
  "docUtils/utils"
22
23
  ]
23
24
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforcedevs/docs-components",
3
- "version": "1.3.194-langpicker1-alpha",
3
+ "version": "1.3.194-langpicker10-alpha",
4
4
  "description": "Docs Lightning web components for DSC",
5
5
  "license": "MIT",
6
6
  "main": "index.js",
@@ -16,6 +16,8 @@
16
16
  toc-title={tocTitle}
17
17
  toc-options={tocOptions}
18
18
  enable-slot-change="true"
19
+ languages={languages}
20
+ language={language}
19
21
  >
20
22
  <doc-phase
21
23
  slot="doc-phase"
@@ -4,6 +4,7 @@ import { sentenceCase } from "sentence-case";
4
4
  import qs from "query-string";
5
5
  import { AmfModelParser } from "doc/amfModelParser";
6
6
  import { normalizeBoolean } from "dxUtils/normalizers";
7
+ import type { OptionWithLink } from "typings/custom";
7
8
  import type {
8
9
  AmfConfig,
9
10
  AmfMetadataTopic,
@@ -48,6 +49,8 @@ export default class AmfReference extends LightningElement {
48
49
  @api useOldSidebar: boolean = false;
49
50
  @api tocTitle?: string;
50
51
  @api tocOptions?: string;
52
+ @api languages!: OptionWithLink[];
53
+ @api language!: string;
51
54
  @track navigation = [] as NavigationItem[];
52
55
  @track versions: Array<ReferenceVersion> = [];
53
56
  @track showVersionBanner = false;
@@ -9,6 +9,8 @@
9
9
  ontogglesidebar={onToggleSidebar}
10
10
  languages={languages}
11
11
  language={language}
12
+ bail-href={bailHref}
13
+ bail-label={bailLabel}
12
14
  >
13
15
  <slot name="sidebar-header" slot="header"></slot>
14
16
  </dx-sidebar-old>
@@ -24,6 +26,8 @@
24
26
  coveo-search-hub={coveoSearchHub}
25
27
  coveo-advanced-query-config={coveoAdvancedQueryConfig}
26
28
  ontogglesidebar={onToggleSidebar}
29
+ languages={languages}
30
+ language={language}
27
31
  >
28
32
  <slot name="sidebar-header" slot="header"></slot>
29
33
  </dx-sidebar>
@@ -37,6 +37,10 @@ export default class ContentLayout extends LightningElement {
37
37
  @api coveoSearchHub!: string;
38
38
  @api coveoAdvancedQueryConfig!: string;
39
39
  @api useOldSidebar?: boolean = false;
40
+ @api languages!: OptionWithLink[];
41
+ @api language!: string;
42
+ @api bailHref!: string;
43
+ @api bailLabel!: string;
40
44
 
41
45
  @api
42
46
  get breadcrumbs() {
@@ -74,26 +78,6 @@ export default class ContentLayout extends LightningElement {
74
78
  );
75
79
  }
76
80
 
77
- @api
78
- get languages() {
79
- return this._languages;
80
- }
81
-
82
- set languages(value) {
83
- this._languages = toJson(value);
84
- }
85
-
86
- @api
87
- get language() {
88
- return this._language;
89
- }
90
-
91
- set language(value) {
92
- if (this._language !== value) {
93
- this._language = value;
94
- }
95
- }
96
-
97
81
  @track
98
82
  private _sidebarContent: unknown;
99
83
 
@@ -109,8 +93,6 @@ export default class ContentLayout extends LightningElement {
109
93
  private hasRendered: boolean = false;
110
94
  private contentLoaded: boolean = false;
111
95
  private sidebarOpen: boolean = false;
112
- private _languages!: OptionWithLink[];
113
- private _language: string | null = null;
114
96
 
115
97
  get shouldDisplayFeedback() {
116
98
  return this.contentLoaded && typeof Sprig !== "undefined";
@@ -0,0 +1,33 @@
1
+ @import "dxHelpers/reset";
2
+
3
+ :host {
4
+ --button-primary-color: var(--dx-g-blue-vibrant-50);
5
+ --button-primary-color-hover: var(--dx-g-cloud-blue-vibrant-95);
6
+ }
7
+
8
+ .footer-display {
9
+ display: flex;
10
+ }
11
+
12
+ .footer_lang-dropdown {
13
+ padding: var(--dx-g-spacing-2xs) var(--dx-g-spacing-md);
14
+ }
15
+
16
+ .footer_lang-dropdown > dx-button {
17
+ --dx-c-button-primary-color: var(--button-primary-color);
18
+ --dx-c-slot-empty-width: min-content;
19
+ --border-color: var(--button-primary-color);
20
+ }
21
+
22
+ .footer_lang-dropdown:hover,
23
+ .footer_lang-dropdown:active,
24
+ .footer_lang-dropdown:focus,
25
+ .header_bail-link:hover {
26
+ background-color: var(--button-primary-color-hover);
27
+
28
+ --border-color: var(--button-primary-color-hover);
29
+ }
30
+
31
+ .header_bail-link {
32
+ --dx-c-button-horizontal-spacing: var(--dx-g-spacing-sm);
33
+ }
@@ -0,0 +1,35 @@
1
+ <template>
2
+ <div if:false={mobile} class="footer-display">
3
+ <dx-button
4
+ if:true={hasBailLink}
5
+ aria-label={bailLabel}
6
+ class="header_bail-link"
7
+ href={bailHref}
8
+ onclick={handleBailClick}
9
+ variant="tertiary"
10
+ icon-symbol="new_window"
11
+ target="_blank"
12
+ >
13
+ {bailLabel}
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="small"
29
+ icon-symbol="world"
30
+ >
31
+ {languageLabel}
32
+ </dx-button>
33
+ </dx-dropdown>
34
+ </div>
35
+ </template>
@@ -0,0 +1,84 @@
1
+ /* eslint-disable @lwc/lwc/no-document-query */
2
+ import { LightningElement, api } from "lwc";
3
+ import type { OptionWithLink } from "typings/custom";
4
+ import { toJson } from "dxUtils/normalizers";
5
+ import get from "lodash.get";
6
+ import { track } from "dxUtils/analytics";
7
+
8
+ export default class ContentLayout extends LightningElement {
9
+ @api langValuePath: string = "id";
10
+ @api bailHref?: string | null = null;
11
+ @api bailLabel?: string | null = null;
12
+
13
+ @api
14
+ get languages() {
15
+ return this._languages;
16
+ }
17
+
18
+ set languages(value) {
19
+ this._languages = toJson(value);
20
+ }
21
+
22
+ @api
23
+ get language() {
24
+ return this._language;
25
+ }
26
+
27
+ set language(value) {
28
+ if (this._language !== value) {
29
+ this._language = value;
30
+ }
31
+ }
32
+
33
+ private _languages!: OptionWithLink[];
34
+ private _language: string | null = null;
35
+
36
+ private get hasLanguages(): boolean {
37
+ return !!(this.languages && this.languages.length > 1);
38
+ }
39
+
40
+ private get languageLabel(): string {
41
+ return (
42
+ (this.language &&
43
+ this.languages.find(
44
+ (lang) => get(lang, this.langValuePath) === this.language
45
+ )?.label) ||
46
+ this.languages[0].label
47
+ );
48
+ }
49
+
50
+ get hasBailLink(): boolean {
51
+ return !!(this.bailHref && this.bailLabel);
52
+ }
53
+
54
+ private onLangChange(event: CustomEvent<string>): void {
55
+ const { detail } = event;
56
+ this._language = detail;
57
+
58
+ const docElement = document.querySelector("doc-header");
59
+ docElement?.dispatchEvent(new CustomEvent("langchange", { detail }));
60
+ }
61
+
62
+ private getFilename = function (path: string) {
63
+ return path.substring(path.lastIndexOf("/") + 1);
64
+ };
65
+
66
+ private handleBailClick(event: Event) {
67
+ const payload = {
68
+ click_text: "pdf",
69
+ click_url: this.bailHref,
70
+ element_title: "pdf",
71
+ element_type: "link",
72
+ content_category: "download"
73
+ };
74
+ track(event.target!, "custEv_pdfDownload", {
75
+ ...payload,
76
+ file_name: this.getFilename(this.bailHref!),
77
+ file_extension: "pdf"
78
+ });
79
+
80
+ track(event.target!, "custEv_linkClick", {
81
+ ...payload
82
+ });
83
+ }
84
+ }
@@ -49,24 +49,6 @@ header:not(.has-brand) > .header_l2 {
49
49
  margin-left: var(--dx-g-spacing-sm);
50
50
  }
51
51
 
52
- .header_lang-dropdown {
53
- --button-primary-color: var(--dx-g-blue-vibrant-40);
54
- --button-primary-color-hover: var(--dx-g-blue-vibrant-30);
55
- }
56
-
57
- .header_lang-dropdown > dx-button {
58
- --dx-c-button-primary-color: var(--button-primary-color);
59
- --dx-c-button-primary-color-hover: var(--button-primary-color-hover);
60
- --dx-c-slot-empty-width: min-content;
61
- --border-color: var(--button-primary-color);
62
-
63
- border-bottom: 1px dashed var(--border-color);
64
- }
65
-
66
- .header_lang-dropdown > dx-button:hover {
67
- --border-color: var(--button-primary-color-hover);
68
- }
69
-
70
52
  .has-brand .header_l2_group-title {
71
53
  padding-bottom: calc(var(--dx-g-spacing-md) + 2px);
72
54
  }
@@ -52,41 +52,6 @@
52
52
  ></dx-header-nav>
53
53
  </div>
54
54
  </div>
55
- <div
56
- if:false={smallMobile}
57
- class="header_l2_group header_l2_group-right-ctas"
58
- >
59
- <dx-dropdown
60
- if:true={hasLanguages}
61
- class="header_lang-dropdown"
62
- options={languages}
63
- small
64
- value-path={langValuePath}
65
- value={language}
66
- onchange={onLangChange}
67
- >
68
- <dx-button
69
- aria-label="Select Language"
70
- variant="inline"
71
- icon-size="small"
72
- icon-symbol="world"
73
- >
74
- {languageLabel}
75
- </dx-button>
76
- </dx-dropdown>
77
- <dx-button
78
- if:true={hasBailLink}
79
- aria-label={bailLabel}
80
- class="header_bail-link"
81
- href={bailHref}
82
- onclick={handleBailClick}
83
- variant="tertiary"
84
- icon-symbol="new_window"
85
- target="_blank"
86
- >
87
- {bailLabel}
88
- </dx-button>
89
- </div>
90
55
  </div>
91
56
  </header>
92
57
  </dx-brand-theme-provider>
@@ -11,6 +11,10 @@
11
11
  sidebar-value={sidebarValue}
12
12
  onselect={handleSelect}
13
13
  use-old-sidebar={useOldSidebar}
14
+ languages={availableLanguages}
15
+ language={language.id}
16
+ bail-href={pageHeader.bailHref}
17
+ bail-label={pageHeader.bailLabel}
14
18
  >
15
19
  <doc-phase
16
20
  slot="version-banner"