@salesforcedevs/docs-components 1.3.194-docfooter9-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 +1 -0
- package/package.json +1 -1
- package/src/modules/doc/amfReference/amfReference.html +2 -0
- package/src/modules/doc/amfReference/amfReference.ts +3 -0
- package/src/modules/doc/contentLayout/contentLayout.css +3 -1
- package/src/modules/doc/contentLayout/contentLayout.html +6 -0
- package/src/modules/doc/contentLayout/contentLayout.ts +5 -0
- package/src/modules/doc/footerNav/footerNav.css +33 -0
- package/src/modules/doc/footerNav/footerNav.html +35 -0
- package/src/modules/doc/footerNav/footerNav.ts +84 -0
- package/src/modules/doc/header/header.css +0 -18
- package/src/modules/doc/header/header.html +0 -35
- package/src/modules/doc/xmlContent/xmlContent.html +4 -0
package/lwc.config.json
CHANGED
package/package.json
CHANGED
|
@@ -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;
|
|
@@ -61,7 +61,9 @@ dx-toc {
|
|
|
61
61
|
flex-direction: row;
|
|
62
62
|
justify-content: center;
|
|
63
63
|
max-width: var(--dx-g-doc-content-max-width);
|
|
64
|
-
|
|
64
|
+
|
|
65
|
+
/* Derived this manually by substracting (topHeader, doc header, banner and the content). */
|
|
66
|
+
min-height: 62vh;
|
|
65
67
|
margin: auto;
|
|
66
68
|
padding: 0 var(--dx-g-global-header-padding-horizontal);
|
|
67
69
|
margin-bottom: calc(2 * (var(--dx-g-spacing-5xl) + 4px));
|
|
@@ -7,6 +7,10 @@
|
|
|
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
14
|
>
|
|
11
15
|
<slot name="sidebar-header" slot="header"></slot>
|
|
12
16
|
</dx-sidebar-old>
|
|
@@ -22,6 +26,8 @@
|
|
|
22
26
|
coveo-search-hub={coveoSearchHub}
|
|
23
27
|
coveo-advanced-query-config={coveoAdvancedQueryConfig}
|
|
24
28
|
ontogglesidebar={onToggleSidebar}
|
|
29
|
+
languages={languages}
|
|
30
|
+
language={language}
|
|
25
31
|
>
|
|
26
32
|
<slot name="sidebar-header" slot="header"></slot>
|
|
27
33
|
</dx-sidebar>
|
|
@@ -4,6 +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
8
|
|
|
8
9
|
type AnchorMap = { [key: string]: { intersect: boolean; id: string } };
|
|
9
10
|
|
|
@@ -36,6 +37,10 @@ export default class ContentLayout extends LightningElement {
|
|
|
36
37
|
@api coveoSearchHub!: string;
|
|
37
38
|
@api coveoAdvancedQueryConfig!: string;
|
|
38
39
|
@api useOldSidebar?: boolean = false;
|
|
40
|
+
@api languages!: OptionWithLink[];
|
|
41
|
+
@api language!: string;
|
|
42
|
+
@api bailHref!: string;
|
|
43
|
+
@api bailLabel!: string;
|
|
39
44
|
|
|
40
45
|
@api
|
|
41
46
|
get breadcrumbs() {
|
|
@@ -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"
|