@salesforcedevs/docs-components 1.3.194-langpicker18-alpha → 1.3.194-langpicker19-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,7 +18,7 @@
18
18
  "doc/overview",
19
19
  "doc/phase",
20
20
  "doc/xmlContent",
21
- "doc/footerNav",
21
+ "doc/sidebarFooterNav",
22
22
  "docUtils/utils"
23
23
  ]
24
24
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforcedevs/docs-components",
3
- "version": "1.3.194-langpicker18-alpha",
3
+ "version": "1.3.194-langpicker19-alpha",
4
4
  "description": "Docs Lightning web components for DSC",
5
5
  "license": "MIT",
6
6
  "main": "index.js",
@@ -7,10 +7,7 @@
7
7
  value={sidebarValue}
8
8
  header={sidebarHeader}
9
9
  ontogglesidebar={onToggleSidebar}
10
- languages={languages}
11
- language={language}
12
- bail-href={bailHref}
13
- bail-label={bailLabel}
10
+ sidebar-footer-content={sidebarFooterContent}
14
11
  >
15
12
  <slot name="sidebar-header" slot="header"></slot>
16
13
  </dx-sidebar-old>
@@ -26,10 +23,7 @@
26
23
  coveo-search-hub={coveoSearchHub}
27
24
  coveo-advanced-query-config={coveoAdvancedQueryConfig}
28
25
  ontogglesidebar={onToggleSidebar}
29
- languages={languages}
30
- language={language}
31
- bail-href={bailHref}
32
- bail-label={bailLabel}
26
+ sidebar-footer-content={sidebarFooterContent}
33
27
  >
34
28
  <slot name="sidebar-header" slot="header"></slot>
35
29
  </dx-sidebar>
@@ -4,7 +4,7 @@ import { closest } from "kagekiri";
4
4
  import { toJson } from "dxUtils/normalizers";
5
5
  import { highlightTerms } from "dxUtils/highlight";
6
6
  import { SearchSyncer } from "docUtils/searchSyncer";
7
- import type { OptionWithLink } from "typings/custom";
7
+ import type { SidebarFooter } from "typings/custom";
8
8
 
9
9
  type AnchorMap = { [key: string]: { intersect: boolean; id: string } };
10
10
 
@@ -37,10 +37,7 @@ 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
+ @api sidebarFooterContent!: SidebarFooter;
44
41
 
45
42
  @api
46
43
  get breadcrumbs() {
@@ -1,66 +1,52 @@
1
1
  /* eslint-disable @lwc/lwc/no-document-query */
2
2
  import { LightningElement, api } from "lwc";
3
- import type { OptionWithLink } from "typings/custom";
4
- import { toJson } from "dxUtils/normalizers";
3
+ import type { DocLanguage, SidebarFooter } from "typings/custom";
5
4
  import get from "lodash.get";
6
5
  import { track } from "dxUtils/analytics";
7
6
 
8
7
  const MOBILE_SIZE_MATCH = "768px";
9
8
 
10
- export default class ContentLayout extends LightningElement {
9
+ export default class SidebarFooterNav extends LightningElement {
11
10
  @api langValuePath: string = "id";
12
- @api bailHref?: string | null = null;
13
- @api bailLabel?: string | null = null;
14
11
 
15
12
  @api
16
- get languages() {
17
- return this._languages;
13
+ set sidebarFooterContent(values: SidebarFooter) {
14
+ this._languages = values?.languages;
15
+ this._language = values?.language || null;
16
+ this._bailHref = values?.bailHref;
17
+ this._bailLabel = values?.bailLabel;
18
18
  }
19
19
 
20
- set languages(value) {
21
- this._languages = toJson(value);
22
- }
23
-
24
- @api
25
- get language() {
26
- return this._language;
27
- }
28
-
29
- set language(value) {
30
- if (this._language !== value) {
31
- this._language = value;
32
- }
33
- }
34
-
35
- private _languages!: OptionWithLink[];
20
+ private _languages!: DocLanguage[];
36
21
  private _language: string | null = null;
22
+ private _bailHref?: string | null = null;
23
+ private _bailLabel?: string | null = null;
37
24
  private mobile: boolean = false;
38
25
  private matchMedia!: MediaQueryList;
39
26
 
40
27
  private get hasLanguages(): boolean {
41
- return !!(this.languages && this.languages.length > 1);
28
+ return !!(this._languages && this._languages.length > 1);
42
29
  }
43
30
 
44
31
  private get languageLabel(): string {
45
32
  return (
46
- (this.language &&
47
- this.languages.find(
48
- (lang) => get(lang, this.langValuePath) === this.language
33
+ (this._language &&
34
+ this._languages.find(
35
+ (lang) => get(lang, this.langValuePath) === this._language
49
36
  )?.label) ||
50
- this.languages[0].label
37
+ this._languages[0].label
51
38
  );
52
39
  }
53
40
 
54
41
  get hasBailLink(): boolean {
55
- return !!(this.bailHref && this.bailLabel);
42
+ return !!(this._bailHref && this._bailLabel);
56
43
  }
57
44
 
58
45
  private onLangChange(event: CustomEvent<string>): void {
59
46
  const { detail } = event;
60
47
  this._language = detail;
61
48
 
62
- const docElement = document.querySelector("doc-header");
63
- docElement?.dispatchEvent(new CustomEvent("langchange", { detail }));
49
+ this.dispatchEvent(new CustomEvent("langchange", { detail }));
64
50
  }
65
51
 
66
52
  private getFilename = function (path: string) {
@@ -70,14 +56,14 @@ export default class ContentLayout extends LightningElement {
70
56
  private handleBailClick(event: Event) {
71
57
  const payload = {
72
58
  click_text: "pdf",
73
- click_url: this.bailHref,
59
+ click_url: this._bailHref,
74
60
  element_title: "pdf",
75
61
  element_type: "link",
76
62
  content_category: "download"
77
63
  };
78
64
  track(event.target!, "custEv_pdfDownload", {
79
65
  ...payload,
80
- file_name: this.getFilename(this.bailHref!),
66
+ file_name: this.getFilename(this._bailHref!),
81
67
  file_extension: "pdf"
82
68
  });
83
69
 
@@ -59,14 +59,14 @@ export type ApiDocLanguage = {
59
59
  url: string;
60
60
  };
61
61
 
62
- export interface Header extends Element {
62
+ export type SidebarFooter = {
63
63
  subtitle: string;
64
64
  bailHref: string;
65
65
  bailLabel: string;
66
66
  languages: Array<DocLanguage>;
67
67
  language?: string;
68
68
  headerHref: string;
69
- }
69
+ };
70
70
 
71
71
  export type ApiNavItem = {
72
72
  children: Array<ApiNavItem>;
@@ -11,10 +11,8 @@
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
+ onlangchange={handleLanguageChange}
15
+ sidebar-footer-content={sidebarFooterObj}
18
16
  >
19
17
  <doc-phase
20
18
  slot="version-banner"
@@ -7,7 +7,7 @@ import {
7
7
  DocLanguage,
8
8
  DocVersion,
9
9
  TreeNode,
10
- Header,
10
+ SidebarFooter,
11
11
  HistoryState,
12
12
  PageReference,
13
13
  TocMap
@@ -70,7 +70,7 @@ export default class DocXmlContent extends LightningElementWithState<{
70
70
  private version: DocVersion | null = null;
71
71
  private docTitle = "";
72
72
  private _pathName = "";
73
- private _pageHeader?: Header;
73
+ private sidebarFooterObj?: SidebarFooter | null = null;
74
74
  private listenerAttached = false;
75
75
  private _enableCoveo?: boolean = false;
76
76
 
@@ -214,13 +214,6 @@ export default class DocXmlContent extends LightningElementWithState<{
214
214
  disconnectedCallback(): void {
215
215
  window.removeEventListener("popstate", this.handlePopState);
216
216
  this.searchSyncer.dispose();
217
- if (this.listenerAttached) {
218
- this.pageHeader.removeEventListener(
219
- "langchange",
220
- this.handleLanguageChange
221
- );
222
- this.listenerAttached = false;
223
- }
224
217
  }
225
218
 
226
219
  private get languageId(): string | undefined {
@@ -265,14 +258,6 @@ export default class DocXmlContent extends LightningElementWithState<{
265
258
  return config;
266
259
  }
267
260
 
268
- private get pageHeader(): Header {
269
- if (!this._pageHeader) {
270
- this._pageHeader = document.querySelector("doc-header")!;
271
- }
272
-
273
- return this._pageHeader;
274
- }
275
-
276
261
  private get sidebarValue(): string {
277
262
  if (this.pageReference?.contentDocumentId) {
278
263
  const hashedUri = `${
@@ -527,33 +512,21 @@ export default class DocXmlContent extends LightningElementWithState<{
527
512
  }
528
513
 
529
514
  updateHeader(): void {
530
- if (!this.pageHeader) {
531
- return;
532
- }
533
-
534
515
  if (this.docTitle) {
535
- this.pageHeader.subtitle = this.docTitle;
516
+ this.sidebarFooterObj!.subtitle = this.docTitle;
536
517
  }
537
518
 
538
519
  if (this.pdfUrl) {
539
- this.pageHeader.bailHref = this.pdfUrl;
540
- this.pageHeader.bailLabel = "PDF";
541
- }
542
-
543
- if (!this.listenerAttached) {
544
- this.pageHeader.addEventListener(
545
- "langchange",
546
- this.handleLanguageChange
547
- );
548
- this.listenerAttached = true;
520
+ this.sidebarFooterObj!.bailHref = this.pdfUrl;
521
+ this.sidebarFooterObj!.bailLabel = "PDF";
549
522
  }
550
523
 
551
- this.pageHeader.languages = this.availableLanguages;
552
- this.pageHeader.language = this.language?.id;
524
+ this.sidebarFooterObj!.languages = this.availableLanguages;
525
+ this.sidebarFooterObj!.language = this.language?.id;
553
526
 
554
527
  if (this.pageReference) {
555
528
  const { docId, deliverable, page } = this.pageReference;
556
- this.pageHeader.headerHref = `/${page}/${docId}/${deliverable}/`;
529
+ this.sidebarFooterObj!.headerHref = `/${page}/${docId}/${deliverable}/`;
557
530
  }
558
531
  }
559
532