@salesforcedevs/dx-components 1.3.228 → 1.3.229-docheader1-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 -1
- package/package.json +2 -3
- package/src/modules/dx/dropdownOption/dropdownOption.css +5 -3
- package/src/modules/dx/headerNav/headerNav.css +9 -0
- package/src/modules/dx/popover/popover.css +2 -2
- package/src/modules/dx/sidebar/sidebar.css +8 -5
- package/src/modules/dx/sidebar/sidebar.html +30 -4
- package/src/modules/dx/sidebar/sidebar.ts +2 -42
- package/src/modules/dx/sidebarFooterNav/sidebarFooterNav.css +52 -0
- package/src/modules/dx/sidebarFooterNav/sidebarFooterNav.html +55 -0
- package/src/modules/dx/sidebarFooterNav/sidebarFooterNav.ts +106 -0
- package/src/modules/dx/sidebarOld/sidebarOld.css +1 -0
- package/src/modules/dx/sidebarOld/sidebarOld.html +24 -3
- package/src/modules/dx/sidebarOld/sidebarOld.ts +0 -38
- package/src/modules/dx/sidebarSearchResult/sidebarSearchResult.css +26 -4
- package/src/modules/dx/tab/tab.css +48 -19
- package/src/modules/dx/trafficLabeler/trafficLabeler.html +1 -6
- package/src/modules/dx/trafficLabeler/trafficLabeler.ts +3 -0
- package/src/modules/dx/treeItem/treeItem.css +2 -2
- package/src/modules/dx/treeTile/treeTile.css +37 -28
- package/src/modules/dx/treeTile/treeTile.html +6 -6
- package/src/modules/dx/treeTile/treeTile.ts +2 -1
- package/src/modules/dxBaseElements/sidebarBase/sidebarBase.ts +96 -1
- package/src/modules/dxHelpers/commonHeader/commonHeader.css +6 -2
- package/src/modules/dxHelpers/commonSidebar/commonSidebar.css +36 -13
- package/src/modules/dxHelpers/commonTreeItem/commonTreeItem.css +45 -3
- package/LICENSE +0 -12
- package/src/modules/dx/coveoLabeler/coveoLabeler.html +0 -1
- package/src/modules/dx/coveoLabeler/coveoLabeler.ts +0 -11
package/lwc.config.json
CHANGED
|
@@ -33,7 +33,6 @@
|
|
|
33
33
|
"dx/checkboxGroup",
|
|
34
34
|
"dx/checkboxNative",
|
|
35
35
|
"dx/codeBlock",
|
|
36
|
-
"dx/coveoLabeler",
|
|
37
36
|
"dx/dropdown",
|
|
38
37
|
"dx/emptyState",
|
|
39
38
|
"dx/faq",
|
|
@@ -78,6 +77,7 @@
|
|
|
78
77
|
"dx/select",
|
|
79
78
|
"dx/sidebar",
|
|
80
79
|
"dx/sidebarOld",
|
|
80
|
+
"dx/sidebarFooterNav",
|
|
81
81
|
"dx/skipNavLink",
|
|
82
82
|
"dx/socials",
|
|
83
83
|
"dx/spinner",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforcedevs/dx-components",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.229-docheader1-alpha",
|
|
4
4
|
"description": "DX Lightning web components",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"engines": {
|
|
@@ -43,6 +43,5 @@
|
|
|
43
43
|
},
|
|
44
44
|
"volta": {
|
|
45
45
|
"node": "16.19.1"
|
|
46
|
-
}
|
|
47
|
-
"gitHead": "99f47bf1370b03cd8a24791b3114a1ebe26e25d8"
|
|
46
|
+
}
|
|
48
47
|
}
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
.option:active {
|
|
41
|
-
background: var(--dx-g-blue-vibrant-95) !important;
|
|
41
|
+
background: var(--dx-g-cloud-blue-vibrant-95) !important;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
.option:not(.option-active):hover {
|
|
@@ -46,7 +46,9 @@
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
.option-active {
|
|
49
|
-
|
|
49
|
+
--dx-c-dropdown-option-label-color: var(--dx-g-blue-vibrant-50);
|
|
50
|
+
|
|
51
|
+
background: var(--dx-g-cloud-blue-vibrant-95);
|
|
50
52
|
}
|
|
51
53
|
|
|
52
54
|
.option_details {
|
|
@@ -67,7 +69,7 @@
|
|
|
67
69
|
color: var(--dx-c-dropdown-option-label-color, var(--dx-g-blue-vibrant-50));
|
|
68
70
|
display: flex;
|
|
69
71
|
align-items: center;
|
|
70
|
-
font-weight: var(--dx-g-font-bold);
|
|
72
|
+
font-weight: var(--dx-c-dropdown-option-font-weight, var(--dx-g-font-bold));
|
|
71
73
|
font-size: var(--dx-c-dropdown-option-font-size, var(--dx-g-text-base));
|
|
72
74
|
}
|
|
73
75
|
|
|
@@ -10,17 +10,26 @@ nav {
|
|
|
10
10
|
|
|
11
11
|
.nav-list {
|
|
12
12
|
display: flex;
|
|
13
|
+
margin-top: calc(var(--dx-g-spacing-2xs) + 1px);
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
.nav-list li {
|
|
16
17
|
position: relative;
|
|
17
18
|
}
|
|
18
19
|
|
|
20
|
+
.nav-list li:not(:last-child) {
|
|
21
|
+
margin-right: var(--dx-g-spacing-md);
|
|
22
|
+
}
|
|
23
|
+
|
|
19
24
|
.nav-list-item-nav-menu {
|
|
20
25
|
display: none;
|
|
21
26
|
}
|
|
22
27
|
|
|
23
28
|
@media (max-width: 768px) {
|
|
29
|
+
.nav-list {
|
|
30
|
+
margin-top: 0;
|
|
31
|
+
}
|
|
32
|
+
|
|
24
33
|
.nav-list-item-nav-menu {
|
|
25
34
|
display: flex;
|
|
26
35
|
}
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
max-height: 65vh;
|
|
29
29
|
padding: var(--popover-padding);
|
|
30
30
|
overflow-y: auto;
|
|
31
|
-
transition:
|
|
31
|
+
transition: var(--popover-transition);
|
|
32
32
|
transition-delay: 0.02s;
|
|
33
33
|
transform: translateY(var(--dx-g-spacing-xs));
|
|
34
34
|
opacity: 0;
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
|
|
42
42
|
.popover-container_open .popover {
|
|
43
43
|
opacity: 1;
|
|
44
|
-
transform:
|
|
44
|
+
transform: var(--popover-container-open-transform);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
.popover-overridewidth {
|
|
@@ -15,7 +15,7 @@ dx-empty-state {
|
|
|
15
15
|
|
|
16
16
|
.sidebar-content {
|
|
17
17
|
overflow-y: auto;
|
|
18
|
-
padding
|
|
18
|
+
padding: var(--dx-g-spacing-sm) 0 var(--dx-g-spacing-md);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
.loading-skeleton {
|
|
@@ -53,6 +53,13 @@ dx-empty-state {
|
|
|
53
53
|
--dx-c-button-secondary-color-hover: var(--dx-g-gray-80);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
+
.results-heading {
|
|
57
|
+
--dx-g-text-body-color: var(--sds-g-gray-14);
|
|
58
|
+
|
|
59
|
+
margin-bottom: var(--dx-g-spacing-sm);
|
|
60
|
+
font-weight: var(--dx-g-font-bold);
|
|
61
|
+
}
|
|
62
|
+
|
|
56
63
|
@media (max-width: 768px) {
|
|
57
64
|
:host {
|
|
58
65
|
width: 100%;
|
|
@@ -61,8 +68,4 @@ dx-empty-state {
|
|
|
61
68
|
.loading-skeleton {
|
|
62
69
|
width: 100%;
|
|
63
70
|
}
|
|
64
|
-
|
|
65
|
-
.sidebar-content-tree {
|
|
66
|
-
padding: 0 var(--dx-g-spacing-sm);
|
|
67
|
-
}
|
|
68
71
|
}
|
|
@@ -16,13 +16,17 @@
|
|
|
16
16
|
<dx-icon
|
|
17
17
|
sprite="utility"
|
|
18
18
|
symbol={menuSymbol}
|
|
19
|
-
color="blue-vibrant-
|
|
19
|
+
color="blue-vibrant-50"
|
|
20
|
+
size="medium"
|
|
20
21
|
></dx-icon>
|
|
21
22
|
</dx-button>
|
|
22
23
|
</div>
|
|
23
24
|
</div>
|
|
24
25
|
|
|
25
|
-
<div
|
|
26
|
+
<div
|
|
27
|
+
class="sidebar-header padding-horizontal"
|
|
28
|
+
show-shadow={showBoxShadow}
|
|
29
|
+
>
|
|
26
30
|
<div class="header" if:false={mobile}>
|
|
27
31
|
<h2 class="dx-text-display-6 header-title">{header}</h2>
|
|
28
32
|
<slot name="header"></slot>
|
|
@@ -42,7 +46,7 @@
|
|
|
42
46
|
></dx-sidebar-search>
|
|
43
47
|
</div>
|
|
44
48
|
<h2
|
|
45
|
-
class="results-heading dx-text-
|
|
49
|
+
class="results-heading dx-text-body-3"
|
|
46
50
|
if:true={showResultsHeading}
|
|
47
51
|
>
|
|
48
52
|
Results
|
|
@@ -83,7 +87,7 @@
|
|
|
83
87
|
size="small"
|
|
84
88
|
></dx-empty-state>
|
|
85
89
|
</div>
|
|
86
|
-
<div class=
|
|
90
|
+
<div class={sidebarContentClass} onscroll={handleScroll}>
|
|
87
91
|
<dx-tree
|
|
88
92
|
for:each={trees}
|
|
89
93
|
for:item="tree"
|
|
@@ -95,5 +99,27 @@
|
|
|
95
99
|
onselecteditemrendered={onSelectedItemRendered}
|
|
96
100
|
></dx-tree>
|
|
97
101
|
</div>
|
|
102
|
+
|
|
103
|
+
<template if:false={mobile}>
|
|
104
|
+
<div if:true={hasSidebarFooter} class="footer-nav">
|
|
105
|
+
<dx-sidebar-footer-nav
|
|
106
|
+
lang-value-path={langValuePath}
|
|
107
|
+
language={language}
|
|
108
|
+
languages={languages}
|
|
109
|
+
bail-href={bailHref}
|
|
110
|
+
bail-label={bailLabel}
|
|
111
|
+
></dx-sidebar-footer-nav>
|
|
112
|
+
</div>
|
|
113
|
+
</template>
|
|
114
|
+
|
|
115
|
+
<template if:true={mobile}>
|
|
116
|
+
<div if:true={hasMobileSidebarFooter} class="footer-nav">
|
|
117
|
+
<dx-sidebar-footer-nav
|
|
118
|
+
lang-value-path={langValuePath}
|
|
119
|
+
language={language}
|
|
120
|
+
languages={languages}
|
|
121
|
+
></dx-sidebar-footer-nav>
|
|
122
|
+
</div>
|
|
123
|
+
</template>
|
|
98
124
|
</div>
|
|
99
125
|
</template>
|
|
@@ -15,15 +15,6 @@ export default class Sidebar extends SidebarBase {
|
|
|
15
15
|
@api coveoAdvancedQueryConfig!: string;
|
|
16
16
|
@api header: string = "";
|
|
17
17
|
|
|
18
|
-
@api
|
|
19
|
-
get value() {
|
|
20
|
-
return this._value;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
set value(value) {
|
|
24
|
-
this._value = value;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
18
|
@api
|
|
28
19
|
get trees() {
|
|
29
20
|
return this._trees;
|
|
@@ -52,16 +43,10 @@ export default class Sidebar extends SidebarBase {
|
|
|
52
43
|
)?.setInputValue(searchTerm);
|
|
53
44
|
}
|
|
54
45
|
|
|
55
|
-
private expanded: boolean = true;
|
|
56
|
-
private _value?: string = undefined;
|
|
57
|
-
|
|
58
46
|
@track
|
|
59
47
|
private _trees!: Array<TreeNode>;
|
|
60
|
-
|
|
61
|
-
private mobile: boolean = true;
|
|
62
48
|
private matchMedia!: MediaQueryList;
|
|
63
49
|
private valueToLabel: { [key: string]: string } = {};
|
|
64
|
-
|
|
65
50
|
private isSearchLoading: boolean = false;
|
|
66
51
|
private searchValue: string | null = null;
|
|
67
52
|
private searchResults: SidebarSearchResult[] = [];
|
|
@@ -171,32 +156,6 @@ export default class Sidebar extends SidebarBase {
|
|
|
171
156
|
this.matchMedia.removeEventListener("change", this.onMediaChange);
|
|
172
157
|
}
|
|
173
158
|
|
|
174
|
-
private onMediaChange = (event: MediaQueryListEvent | MediaQueryList) => {
|
|
175
|
-
this.mobile = event.matches;
|
|
176
|
-
this.expanded = !this.mobile;
|
|
177
|
-
};
|
|
178
|
-
|
|
179
|
-
private onSelect(event: CustomEvent) {
|
|
180
|
-
this._value = event.detail.name;
|
|
181
|
-
|
|
182
|
-
if (this.mobile) {
|
|
183
|
-
this.onToggleClick();
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
private onToggleClick() {
|
|
188
|
-
this.expanded = !this.expanded;
|
|
189
|
-
this.dispatchEvent(
|
|
190
|
-
new CustomEvent("togglesidebar", {
|
|
191
|
-
detail: {
|
|
192
|
-
open: this.expanded,
|
|
193
|
-
bubbles: true,
|
|
194
|
-
composed: true
|
|
195
|
-
}
|
|
196
|
-
})
|
|
197
|
-
);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
159
|
private makeKey(): string {
|
|
201
160
|
return Math.random().toString(36).substring(7);
|
|
202
161
|
}
|
|
@@ -216,7 +175,7 @@ export default class Sidebar extends SidebarBase {
|
|
|
216
175
|
this.isSearchLoading = e.detail;
|
|
217
176
|
}
|
|
218
177
|
|
|
219
|
-
private onSidebarSearchContentScroll() {
|
|
178
|
+
private onSidebarSearchContentScroll(scrollEvent) {
|
|
220
179
|
if (this.isSearchLoading) {
|
|
221
180
|
return;
|
|
222
181
|
}
|
|
@@ -233,6 +192,7 @@ export default class Sidebar extends SidebarBase {
|
|
|
233
192
|
this.requestedFetchMoreResults = true;
|
|
234
193
|
search.fetchMoreResults();
|
|
235
194
|
}
|
|
195
|
+
this.handleScroll(scrollEvent);
|
|
236
196
|
}
|
|
237
197
|
|
|
238
198
|
private initializeSearchScrollPosition() {
|
|
@@ -0,0 +1,52 @@
|
|
|
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
|
+
--popover-container-open-transform: translateX(-4px) translateY(-8px);
|
|
7
|
+
--popover-transition: none;
|
|
8
|
+
--dx-c-dropdown-option-font-weight: normal;
|
|
9
|
+
--dx-c-dropdown-option-label-color: var(--dx-g-gray-10);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.footer-display {
|
|
13
|
+
display: flex;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.footer_lang-dropdown {
|
|
17
|
+
--dx-c-button-primary-color: var(--button-primary-color);
|
|
18
|
+
--border-color: var(--button-primary-color);
|
|
19
|
+
|
|
20
|
+
display: flex;
|
|
21
|
+
padding: 0 var(--dx-g-spacing-md);
|
|
22
|
+
height: var(--dx-g-spacing-xl);
|
|
23
|
+
border-radius: var(--dx-g-spacing-xs);
|
|
24
|
+
align-items: center;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.footer_lang-dropdown[aria-expanded="true"] {
|
|
28
|
+
background-color: var(--dx-g-cloud-blue-vibrant-95);
|
|
29
|
+
|
|
30
|
+
--border-color: var(--dx-g-cloud-blue-vibrant-95);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.footer_lang-dropdown:hover,
|
|
34
|
+
.footer_lang-dropdown:active,
|
|
35
|
+
.footer_lang-dropdown:focus,
|
|
36
|
+
.pdf_bail-link:hover {
|
|
37
|
+
background-color: var(--button-primary-color-hover);
|
|
38
|
+
|
|
39
|
+
--border-color: var(--button-primary-color-hover);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.pdf_bail-link {
|
|
43
|
+
--dx-c-button-horizontal-spacing: var(--dx-g-spacing-sm);
|
|
44
|
+
--dx-c-button-priamry-color-hover: var(--dx-g-cloud-blue-vibrant-95);
|
|
45
|
+
|
|
46
|
+
padding: 0 var(--dx-g-spacing-md);
|
|
47
|
+
border-radius: var(--dx-g-spacing-xs);
|
|
48
|
+
margin-right: var(--dx-g-spacing-sm);
|
|
49
|
+
display: flex;
|
|
50
|
+
height: var(--dx-g-spacing-xl);
|
|
51
|
+
align-items: center;
|
|
52
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div if:false={mobile} class="footer-display">
|
|
3
|
+
<dx-button
|
|
4
|
+
if:true={hasBailLink}
|
|
5
|
+
aria-label={bailLabel}
|
|
6
|
+
class="pdf_bail-link"
|
|
7
|
+
href={bailHref}
|
|
8
|
+
onclick={handleBailClick}
|
|
9
|
+
variant="inline"
|
|
10
|
+
icon-size="medium"
|
|
11
|
+
icon-symbol="new_window"
|
|
12
|
+
target="_blank"
|
|
13
|
+
>
|
|
14
|
+
{bailLabel}
|
|
15
|
+
</dx-button>
|
|
16
|
+
<dx-dropdown
|
|
17
|
+
if:true={hasLanguages}
|
|
18
|
+
options={languages}
|
|
19
|
+
small
|
|
20
|
+
value-path={langValuePath}
|
|
21
|
+
value={language}
|
|
22
|
+
onchange={onLangChange}
|
|
23
|
+
>
|
|
24
|
+
<dx-button
|
|
25
|
+
class="footer_lang-dropdown"
|
|
26
|
+
aria-label="Select Language"
|
|
27
|
+
variant="inline"
|
|
28
|
+
icon-size="medium"
|
|
29
|
+
icon-symbol="world"
|
|
30
|
+
>
|
|
31
|
+
{languageLabel}
|
|
32
|
+
</dx-button>
|
|
33
|
+
</dx-dropdown>
|
|
34
|
+
</div>
|
|
35
|
+
<div if:true={mobile} class="footer-display">
|
|
36
|
+
<dx-dropdown
|
|
37
|
+
if:true={hasLanguages}
|
|
38
|
+
options={languages}
|
|
39
|
+
small
|
|
40
|
+
value-path={langValuePath}
|
|
41
|
+
value={language}
|
|
42
|
+
onchange={onLangChange}
|
|
43
|
+
>
|
|
44
|
+
<dx-button
|
|
45
|
+
class="footer_lang-dropdown"
|
|
46
|
+
aria-label="Select Language"
|
|
47
|
+
variant="inline"
|
|
48
|
+
icon-size="small"
|
|
49
|
+
icon-symbol="world"
|
|
50
|
+
>
|
|
51
|
+
{languageLabel}
|
|
52
|
+
</dx-button>
|
|
53
|
+
</dx-dropdown>
|
|
54
|
+
</div>
|
|
55
|
+
</template>
|
|
@@ -0,0 +1,106 @@
|
|
|
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
|
+
const MOBILE_SIZE_MATCH = "768px";
|
|
9
|
+
|
|
10
|
+
export default class SidebarFooterNav extends LightningElement {
|
|
11
|
+
@api langValuePath: string = "id";
|
|
12
|
+
@api bailHref?: string | null = null;
|
|
13
|
+
@api bailLabel?: string | null = null;
|
|
14
|
+
|
|
15
|
+
@api
|
|
16
|
+
get languages() {
|
|
17
|
+
return this._languages;
|
|
18
|
+
}
|
|
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
|
+
this._language = value;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
private _languages!: OptionWithLink[];
|
|
34
|
+
private _language: string | null = null;
|
|
35
|
+
private mobile: boolean = false;
|
|
36
|
+
private matchMedia!: MediaQueryList;
|
|
37
|
+
|
|
38
|
+
private get hasLanguages(): boolean {
|
|
39
|
+
return this.languages?.length > 1;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
private get languageLabel(): string {
|
|
43
|
+
const matchingLanguageData = this.language
|
|
44
|
+
? this.languages.find(
|
|
45
|
+
(lang) => get(lang, this.langValuePath) === this.language
|
|
46
|
+
)
|
|
47
|
+
: null;
|
|
48
|
+
return matchingLanguageData?.label || this.languages[0].label;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
get hasBailLink(): boolean {
|
|
52
|
+
return !!(this.bailHref && this.bailLabel);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
private onLangChange(event: CustomEvent<string>): void {
|
|
56
|
+
const { detail } = event;
|
|
57
|
+
this._language = detail;
|
|
58
|
+
|
|
59
|
+
this.dispatchEvent(
|
|
60
|
+
new CustomEvent("langchange", {
|
|
61
|
+
detail,
|
|
62
|
+
bubbles: true,
|
|
63
|
+
composed: true
|
|
64
|
+
})
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
private getFilename = function (path: string) {
|
|
69
|
+
return path.substring(path.lastIndexOf("/") + 1);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
private handleBailClick(event: Event) {
|
|
73
|
+
const payload = {
|
|
74
|
+
click_text: "pdf",
|
|
75
|
+
click_url: this.bailHref,
|
|
76
|
+
element_title: "pdf",
|
|
77
|
+
element_type: "link",
|
|
78
|
+
content_category: "download"
|
|
79
|
+
};
|
|
80
|
+
track(event.target!, "custEv_pdfDownload", {
|
|
81
|
+
...payload,
|
|
82
|
+
file_name: this.getFilename(this.bailHref!),
|
|
83
|
+
file_extension: "pdf"
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
track(event.target!, "custEv_linkClick", {
|
|
87
|
+
...payload
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
connectedCallback() {
|
|
92
|
+
this.matchMedia = window.matchMedia(
|
|
93
|
+
`(max-width: ${MOBILE_SIZE_MATCH})`
|
|
94
|
+
);
|
|
95
|
+
this.onMediaChange(this.matchMedia);
|
|
96
|
+
this.matchMedia.addEventListener("change", this.onMediaChange);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
disconnectedCallback() {
|
|
100
|
+
this.matchMedia.removeEventListener("change", this.onMediaChange);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
private onMediaChange = (event: MediaQueryListEvent | MediaQueryList) => {
|
|
104
|
+
this.mobile = event.matches;
|
|
105
|
+
};
|
|
106
|
+
}
|
|
@@ -16,14 +16,15 @@
|
|
|
16
16
|
<dx-icon
|
|
17
17
|
sprite="utility"
|
|
18
18
|
symbol={menuSymbol}
|
|
19
|
-
color="blue-vibrant-
|
|
19
|
+
color="blue-vibrant-50"
|
|
20
|
+
size="medium"
|
|
20
21
|
></dx-icon>
|
|
21
22
|
</dx-button>
|
|
22
23
|
</div>
|
|
23
24
|
</div>
|
|
24
25
|
|
|
25
26
|
<template if:true={expanded}>
|
|
26
|
-
<div class="padding-horizontal">
|
|
27
|
+
<div class="padding-horizontal" show-shadow={showBoxShadow}>
|
|
27
28
|
<div class="header" if:false={mobile}>
|
|
28
29
|
<h2 class="dx-text-display-6 header-title">{header}</h2>
|
|
29
30
|
<slot name="header"></slot>
|
|
@@ -48,8 +49,9 @@
|
|
|
48
49
|
</div>
|
|
49
50
|
</div>
|
|
50
51
|
<div
|
|
51
|
-
class=
|
|
52
|
+
class={sidebarContentClass}
|
|
52
53
|
if:true={anyResultMatch}
|
|
54
|
+
onscroll={handleScroll}
|
|
53
55
|
>
|
|
54
56
|
<dx-tree
|
|
55
57
|
for:each={filteredTrees}
|
|
@@ -70,6 +72,25 @@
|
|
|
70
72
|
suggestions={emptyStateSuggestions}
|
|
71
73
|
if:false={anyResultMatch}
|
|
72
74
|
></dx-empty-state>
|
|
75
|
+
<div if:true={hasMobileSidebarFooter} class="footer-nav">
|
|
76
|
+
<dx-sidebar-footer-nav
|
|
77
|
+
lang-value-path={langValuePath}
|
|
78
|
+
language={language}
|
|
79
|
+
languages={languages}
|
|
80
|
+
></dx-sidebar-footer-nav>
|
|
81
|
+
</div>
|
|
82
|
+
</template>
|
|
83
|
+
|
|
84
|
+
<template if:false={mobile}>
|
|
85
|
+
<div if:true={hasSidebarFooter} class="footer-nav">
|
|
86
|
+
<dx-sidebar-footer-nav
|
|
87
|
+
lang-value-path={langValuePath}
|
|
88
|
+
language={language}
|
|
89
|
+
languages={languages}
|
|
90
|
+
bail-href={bailHref}
|
|
91
|
+
bail-label={bailLabel}
|
|
92
|
+
></dx-sidebar-footer-nav>
|
|
93
|
+
</div>
|
|
73
94
|
</template>
|
|
74
95
|
</div>
|
|
75
96
|
</template>
|
|
@@ -11,15 +11,6 @@ const MOBILE_SIZE_MATCH = "768px";
|
|
|
11
11
|
export default class Sidebar extends SidebarBase {
|
|
12
12
|
@api header: string = "";
|
|
13
13
|
|
|
14
|
-
@api
|
|
15
|
-
get value() {
|
|
16
|
-
return this._value;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
set value(value) {
|
|
20
|
-
this._value = value;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
14
|
@api
|
|
24
15
|
get trees() {
|
|
25
16
|
return this._trees;
|
|
@@ -37,13 +28,10 @@ export default class Sidebar extends SidebarBase {
|
|
|
37
28
|
this.assignFilteredTrees();
|
|
38
29
|
}
|
|
39
30
|
|
|
40
|
-
private expanded: boolean = true;
|
|
41
31
|
private _searchTimeout?: number;
|
|
42
|
-
private _value?: string = undefined;
|
|
43
32
|
private _trees!: Array<TreeNode>;
|
|
44
33
|
|
|
45
34
|
private filteredTrees: Array<{ key: string; tree: TreeNode }> = [];
|
|
46
|
-
private mobile: boolean = true;
|
|
47
35
|
private searchText: string = "";
|
|
48
36
|
private matchMedia!: MediaQueryList;
|
|
49
37
|
private valueToLabel: { [key: string]: string } = {};
|
|
@@ -101,32 +89,6 @@ export default class Sidebar extends SidebarBase {
|
|
|
101
89
|
this.matchMedia.removeEventListener("change", this.onMediaChange);
|
|
102
90
|
}
|
|
103
91
|
|
|
104
|
-
private onMediaChange = (event: MediaQueryListEvent | MediaQueryList) => {
|
|
105
|
-
this.mobile = event.matches;
|
|
106
|
-
this.expanded = !this.mobile;
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
private onSelect(event: CustomEvent) {
|
|
110
|
-
this._value = event.detail.name;
|
|
111
|
-
|
|
112
|
-
if (this.mobile) {
|
|
113
|
-
this.onToggleClick();
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
private onToggleClick() {
|
|
118
|
-
this.expanded = !this.expanded;
|
|
119
|
-
this.dispatchEvent(
|
|
120
|
-
new CustomEvent("togglesidebar", {
|
|
121
|
-
detail: {
|
|
122
|
-
open: this.expanded,
|
|
123
|
-
bubbles: true,
|
|
124
|
-
composed: true
|
|
125
|
-
}
|
|
126
|
-
})
|
|
127
|
-
);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
92
|
/*
|
|
131
93
|
* Debouncing this method: Do not apply searchText filter as long as this
|
|
132
94
|
* function is being called to avoid running the recursivity logic very often.
|
|
@@ -8,29 +8,51 @@ a {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
.sidebar-item {
|
|
11
|
-
padding: var(--dx-g-spacing-smd) var(--dx-g-spacing-
|
|
11
|
+
padding: var(--dx-g-spacing-smd) var(--dx-g-spacing-lg)
|
|
12
|
+
var(--dx-g-spacing-smd) var(--dx-g-spacing-2xl);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.sidebar-item:focus-visible {
|
|
16
|
+
margin: 0 calc(var(--dx-g-spacing-2xs) + 1px);
|
|
17
|
+
outline: 2px solid var(--dx-g-blue-vibrant-40);
|
|
18
|
+
border-radius: 2px;
|
|
12
19
|
}
|
|
13
20
|
|
|
14
21
|
.search-text {
|
|
15
|
-
font-size: var(--dx-g-text-
|
|
22
|
+
font-size: var(--dx-g-text-sm);
|
|
16
23
|
font-family: var(--dx-g-font-sans);
|
|
17
|
-
line-height:
|
|
24
|
+
line-height: var(--dx-g-text-lg);
|
|
25
|
+
font-weight: var(--dx-g-font-bold);
|
|
18
26
|
overflow-wrap: break-word;
|
|
19
27
|
}
|
|
20
28
|
|
|
21
29
|
.description {
|
|
22
30
|
-webkit-line-clamp: 3;
|
|
23
31
|
overflow-wrap: break-word;
|
|
32
|
+
|
|
33
|
+
--dx-g-text-body-color: var(--dx-g-blue-vibrant-20);
|
|
34
|
+
|
|
35
|
+
font-weight: var(--dx-g-font-normal);
|
|
24
36
|
}
|
|
25
37
|
|
|
26
38
|
.title {
|
|
27
39
|
color: var(--dx-g-text-heading-color);
|
|
28
40
|
}
|
|
29
41
|
|
|
42
|
+
.title:hover {
|
|
43
|
+
color: var(--dx-g-blue-vibrant-50);
|
|
44
|
+
}
|
|
45
|
+
|
|
30
46
|
.bold {
|
|
31
47
|
font-weight: 700;
|
|
32
48
|
}
|
|
33
49
|
|
|
34
50
|
a > *:not(:last-child) {
|
|
35
|
-
margin-bottom:
|
|
51
|
+
margin-bottom: var(--dx-g-spacing-xs);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@media (max-width: 768px) {
|
|
55
|
+
.sidebar-item {
|
|
56
|
+
padding: var(--dx-g-spacing-smd) var(--dx-g-spacing-lg);
|
|
57
|
+
}
|
|
36
58
|
}
|