@salesforcedevs/dx-components 1.3.241-ux-alpha → 1.3.241-ux-alpha1

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/dx-components",
3
- "version": "1.3.241-ux-alpha",
3
+ "version": "1.3.241-ux-alpha1",
4
4
  "description": "DX Lightning web components",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -15,7 +15,7 @@ dx-empty-state {
15
15
 
16
16
  .sidebar-content {
17
17
  overflow-y: auto;
18
- padding-bottom: var(--dx-g-spacing-md);
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
  }
@@ -22,7 +22,10 @@
22
22
  </div>
23
23
  </div>
24
24
 
25
- <div class="sidebar-header padding-horizontal">
25
+ <div
26
+ class="sidebar-header padding-horizontal"
27
+ show-shadow={showBoxShadow}
28
+ >
26
29
  <div class="header" if:false={mobile}>
27
30
  <h2 class="dx-text-display-6 header-title">{header}</h2>
28
31
  <slot name="header"></slot>
@@ -42,7 +45,7 @@
42
45
  ></dx-sidebar-search>
43
46
  </div>
44
47
  <h2
45
- class="results-heading dx-text-display-8"
48
+ class="results-heading dx-text-body-3"
46
49
  if:true={showResultsHeading}
47
50
  >
48
51
  Results
@@ -83,7 +86,7 @@
83
86
  size="small"
84
87
  ></dx-empty-state>
85
88
  </div>
86
- <div class="sidebar-content sidebar-content-tree">
89
+ <div class={sidebarContentClass} onscroll={handleScroll}>
87
90
  <dx-tree
88
91
  for:each={trees}
89
92
  for:item="tree"
@@ -175,7 +175,7 @@ export default class Sidebar extends SidebarBase {
175
175
  this.isSearchLoading = e.detail;
176
176
  }
177
177
 
178
- private onSidebarSearchContentScroll() {
178
+ private onSidebarSearchContentScroll(scrollEvent) {
179
179
  if (this.isSearchLoading) {
180
180
  return;
181
181
  }
@@ -192,6 +192,7 @@ export default class Sidebar extends SidebarBase {
192
192
  this.requestedFetchMoreResults = true;
193
193
  search.fetchMoreResults();
194
194
  }
195
+ this.handleScroll(scrollEvent);
195
196
  }
196
197
 
197
198
  private initializeSearchScrollPosition() {
@@ -2,6 +2,7 @@
2
2
 
3
3
  .sidebar-content {
4
4
  overflow-y: auto;
5
+ padding-top: var(--dx-g-spacing-sm);
5
6
  }
6
7
 
7
8
  dx-empty-state {
@@ -23,7 +23,7 @@
23
23
  </div>
24
24
 
25
25
  <template if:true={expanded}>
26
- <div class="padding-horizontal">
26
+ <div class="padding-horizontal" show-shadow={showBoxShadow}>
27
27
  <div class="header" if:false={mobile}>
28
28
  <h2 class="dx-text-display-6 header-title">{header}</h2>
29
29
  <slot name="header"></slot>
@@ -48,8 +48,9 @@
48
48
  </div>
49
49
  </div>
50
50
  <div
51
- class="sidebar-content sidebar-content-tree"
51
+ class={sidebarContentClass}
52
52
  if:true={anyResultMatch}
53
+ onscroll={handleScroll}
53
54
  >
54
55
  <dx-tree
55
56
  for:each={filteredTrees}
@@ -8,29 +8,51 @@ a {
8
8
  }
9
9
 
10
10
  .sidebar-item {
11
- padding: var(--dx-g-spacing-smd) var(--dx-g-spacing-md);
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-xs);
22
+ font-size: var(--dx-g-text-sm);
16
23
  font-family: var(--dx-g-font-sans);
17
- line-height: 18px;
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: 2px;
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
  }
@@ -14,8 +14,8 @@ button:focus {
14
14
  }
15
15
 
16
16
  .tree-children-loading {
17
- margin: var(--dx-g-spacing-sm) var(--dx-g-spacing-md) var(--dx-g-spacing-md)
18
- var(--dx-g-spacing-md);
17
+ margin: var(--dx-g-spacing-sm) var(--dx-g-spacing-lg) var(--dx-g-spacing-md)
18
+ var(--dx-g-spacing-2xl);
19
19
  }
20
20
 
21
21
  @media (max-width: 768px) {
@@ -23,21 +23,23 @@
23
23
  --tile-height: 20px;
24
24
 
25
25
  font-family: var(--dx-g-font-sans);
26
- font-size: 13px;
26
+ font-size: 14px;
27
27
  line-height: var(--tile-height);
28
+ font-weight: var(--dx-g-font-normal);
28
29
  }
29
30
 
30
31
  .tile-root {
31
- font-family: var(--dx-g-font-display);
32
+ font-family: var(--dx-g-font-sans);
32
33
  font-size: var(--dx-g-text-sm);
33
- font-weight: var(--dx-g-font-demi);
34
- color: var(--dx-g-blue-vibrant-30);
34
+ font-weight: var(--dx-g-font-bold);
35
+ color: var(--dx-g-blue-vibrant-20);
35
36
  display: block;
36
37
  }
37
38
 
38
39
  .tile-icon {
39
40
  align-items: center;
40
41
  height: var(--tile-height);
42
+ padding-right: calc(var(--dx-g-spacing-xs) + 2px);
41
43
  }
42
44
 
43
45
  .tile-label {
@@ -54,95 +56,102 @@
54
56
 
55
57
  .tile-with-children .tile-expand-icon {
56
58
  order: 1;
57
- padding-right: var(--dx-g-spacing-xs);
58
59
  }
59
60
 
60
61
  .indentation {
61
- padding-left: var(--indentation);
62
+ padding-left: calc(var(--indentation) + var(--dx-g-spacing-2xs));
62
63
  }
63
64
 
64
65
  .tile-with-children .indentation {
65
66
  padding-left: calc(var(--indentation) - var(--base-indentation));
66
67
  }
67
68
 
69
+ .tile-root-with-child .indentation {
70
+ padding-left: 0;
71
+ }
72
+
73
+ [aria-level="2"] {
74
+ --indentation: var(--dx-g-spacing-md);
75
+ }
76
+
68
77
  [aria-level="3"] {
69
- --indentation: var(--base-indentation);
78
+ --indentation: calc(2 * var(--base-indentation));
70
79
  }
71
80
 
72
81
  [aria-level="4"] {
73
- --indentation: calc(2 * var(--base-indentation));
82
+ --indentation: calc(3 * var(--base-indentation));
74
83
  }
75
84
 
76
85
  [aria-level="5"] {
77
- --indentation: calc(3 * var(--base-indentation));
86
+ --indentation: calc(4 * var(--base-indentation));
78
87
  }
79
88
 
80
89
  [aria-level="6"] {
81
- --indentation: calc(4 * var(--base-indentation));
90
+ --indentation: calc(5 * var(--base-indentation));
82
91
  }
83
92
 
84
93
  [aria-level="7"] {
85
- --indentation: calc(5 * var(--base-indentation));
94
+ --indentation: calc(6 * var(--base-indentation));
86
95
  }
87
96
 
88
97
  [aria-level="8"] {
89
- --indentation: calc(6 * var(--base-indentation));
98
+ --indentation: calc(7 * var(--base-indentation));
90
99
  }
91
100
 
92
101
  [aria-level="9"] {
93
- --indentation: calc(7 * var(--base-indentation));
102
+ --indentation: calc(8 * var(--base-indentation));
94
103
  }
95
104
 
96
105
  [aria-level="10"] {
97
- --indentation: calc(8 * var(--base-indentation));
106
+ --indentation: calc(9 * var(--base-indentation));
98
107
  }
99
108
 
100
109
  [aria-level="11"] {
101
- --indentation: calc(9 * var(--base-indentation));
110
+ --indentation: calc(10 * var(--base-indentation));
102
111
  }
103
112
 
104
113
  [aria-level="12"] {
105
- --indentation: calc(10 * var(--base-indentation));
114
+ --indentation: calc(11 * var(--base-indentation));
106
115
  }
107
116
 
108
117
  [aria-level="13"] {
109
- --indentation: calc(11 * var(--base-indentation));
118
+ --indentation: calc(12 * var(--base-indentation));
110
119
  }
111
120
 
112
121
  [aria-level="14"] {
113
- --indentation: calc(12 * var(--base-indentation));
122
+ --indentation: calc(13 * var(--base-indentation));
114
123
  }
115
124
 
116
125
  [aria-level="15"] {
117
- --indentation: calc(13 * var(--base-indentation));
126
+ --indentation: calc(14 * var(--base-indentation));
118
127
  }
119
128
 
120
129
  [aria-level="16"] {
121
- --indentation: calc(14 * var(--base-indentation));
130
+ --indentation: calc(15 * var(--base-indentation));
122
131
  }
123
132
 
124
133
  [aria-level="17"] {
125
- --indentation: calc(15 * var(--base-indentation));
134
+ --indentation: calc(16 * var(--base-indentation));
126
135
  }
127
136
 
128
137
  [aria-level="18"] {
129
- --indentation: calc(16 * var(--base-indentation));
138
+ --indentation: calc(17 * var(--base-indentation));
130
139
  }
131
140
 
132
141
  [aria-level="19"] {
133
- --indentation: calc(17 * var(--base-indentation));
142
+ --indentation: calc(18 * var(--base-indentation));
134
143
  }
135
144
 
136
145
  [aria-level="20"] {
137
- --indentation: calc(18 * var(--base-indentation));
146
+ --indentation: calc(19 * var(--base-indentation));
138
147
  }
139
148
 
140
149
  [aria-level="21"] {
141
- --indentation: calc(19 * var(--base-indentation));
150
+ --indentation: calc(20 * var(--base-indentation));
142
151
  }
143
152
 
144
153
  [aria-level="22"] {
145
- --indentation: calc(20 * var(--base-indentation));
154
+ --indentation: calc(21 * var(--base-indentation));
146
155
  }
147
156
 
148
157
  dx-metadata-badge {
@@ -181,10 +190,10 @@ a {
181
190
 
182
191
  a:link,
183
192
  a:visited {
184
- color: var(--dx-g-gray-10);
193
+ color: var(--dx-g-blue-vibrant-20);
185
194
  }
186
195
 
187
196
  a:visited.tile-root,
188
197
  a:link.tile-root {
189
- color: var(--dx-g-blue-vibrant-30);
198
+ color: var(--dx-g-blue-vibrant-20);
190
199
  }
@@ -1,12 +1,6 @@
1
1
  <template>
2
2
  <a href={href} class={tileClass} target={target}>
3
3
  <div class="flex indentation" role="heading" aria-level={tileAriaLevel}>
4
- <span
5
- class="tile-label sidebar-item-truncate-text"
6
- title={treeNode.label}
7
- >
8
- {treeNode.label}
9
- </span>
10
4
  <div class="flex tile-expand-icon tile-icon" if:true={showArrow}>
11
5
  <dx-icon
12
6
  aria-expanded={isExpanded}
@@ -16,6 +10,12 @@
16
10
  onclick={onClickIcon}
17
11
  ></dx-icon>
18
12
  </div>
13
+ <span
14
+ class="tile-label sidebar-item-truncate-text"
15
+ title={treeNode.label}
16
+ >
17
+ {treeNode.label}
18
+ </span>
19
19
  <dx-metadata-badge
20
20
  if:true={showMethod}
21
21
  class="flex tile-icon"
@@ -37,7 +37,7 @@ export default class TreeTile extends LightningElement {
37
37
  }
38
38
 
39
39
  private get iconSize() {
40
- return this.isRoot ? "small" : "xsmall";
40
+ return "xsmall";
41
41
  }
42
42
 
43
43
  private get metadataBadgeColor(): string | undefined {
@@ -62,6 +62,7 @@ export default class TreeTile extends LightningElement {
62
62
  return cx("tile", "sidebar-item", {
63
63
  "tile-root": this.isRoot,
64
64
  "tile-with-children": !this.isRoot && this.hasChildren,
65
+ "tile-root-with-child": this.isRoot && this.showArrow,
65
66
  "sidebar-item-selected": this.isSelected
66
67
  });
67
68
  }
@@ -14,6 +14,8 @@ export class SidebarBase extends LightningElement {
14
14
  mobile: boolean = true;
15
15
  expanded: boolean = true;
16
16
  _value?: string = undefined;
17
+ showBoxShadow: boolean = false;
18
+ private scrolling: boolean = false;
17
19
 
18
20
  @api langValuePath: string = "id";
19
21
  @api language!: string;
@@ -47,6 +49,29 @@ export class SidebarBase extends LightningElement {
47
49
  return this._sidebarContent;
48
50
  }
49
51
 
52
+ /**
53
+ * This method is to handle the scroll event for LNB and show box shadow
54
+ * @param scrollEvent
55
+ */
56
+ handleScroll(scrollEvent: any) {
57
+ const lnb = scrollEvent.target;
58
+
59
+ if (!this.scrolling) {
60
+ this.scrolling = true;
61
+ // Set a timeout to handle scroll event after a delay
62
+ setTimeout(() => {
63
+ // Check if lnb is scrolled
64
+ if (lnb.scrollTop > 0 && lnb.scrollHeight > lnb.clientHeight) {
65
+ this.showBoxShadow = true;
66
+ } else {
67
+ this.showBoxShadow = false;
68
+ }
69
+ // Reset scrolling back to false after handling the scroll
70
+ this.scrolling = false;
71
+ }, 200);
72
+ }
73
+ }
74
+
50
75
  renderedCallback(): void {
51
76
  /**
52
77
  * Implementing debouncing kind of logic here to scroll to selected element once tree rendering is done
@@ -125,4 +150,11 @@ export class SidebarBase extends LightningElement {
125
150
  private get hasSidebarFooter(): boolean {
126
151
  return this.languages?.length > 1 || Boolean(this.bailHref);
127
152
  }
153
+
154
+ private get sidebarContentClass(): string {
155
+ const sidebarConterCss = "sidebar-content sidebar-content-tree";
156
+ return this.hasSidebarFooter || this.hasMobileSidebarFooter
157
+ ? sidebarConterCss + " sidebar-content-hasfooter"
158
+ : sidebarConterCss;
159
+ }
128
160
  }
@@ -2,7 +2,7 @@
2
2
  @import "dxHelpers/text";
3
3
 
4
4
  :host {
5
- --dx-c-sidebar-width: 275px;
5
+ --dx-c-sidebar-width: 337px;
6
6
  --dx-c-sidebar-button-color: var(--dx-g-blue-vibrant-50);
7
7
  --dx-c-sidebar-button-background: white;
8
8
  --dx-c-sidebar-button-border: white;
@@ -13,15 +13,6 @@
13
13
  --dx-c-sidebar-vertical-padding: var(--dx-g-spacing-md);
14
14
  }
15
15
 
16
- dx-tree {
17
- border-top: 1px solid var(--dx-g-gray-90);
18
- }
19
-
20
- dx-tree:last-child {
21
- border-bottom: 1px solid var(--dx-g-gray-90);
22
- margin-bottom: var(--dx-g-spacing-sm);
23
- }
24
-
25
16
  .header {
26
17
  box-sizing: content-box;
27
18
  display: flex;
@@ -36,8 +27,11 @@ dx-tree:last-child {
36
27
  }
37
28
 
38
29
  .padding-horizontal {
39
- padding-left: var(--dx-g-spacing-md);
40
- padding-right: var(--dx-g-spacing-md);
30
+ padding: 0 var(--dx-g-spacing-lg) 0 var(--dx-g-spacing-2xl);
31
+ }
32
+
33
+ .padding-horizontal[show-shadow="true"] {
34
+ box-shadow: 0 4px 4px -2px var(--dx-g-gray-90);
41
35
  }
42
36
 
43
37
  .header-title {
@@ -119,7 +113,7 @@ dx-tree:last-child {
119
113
  }
120
114
 
121
115
  .search {
122
- padding-bottom: var(--dx-g-spacing-md);
116
+ padding-bottom: var(--dx-g-spacing-smd);
123
117
  }
124
118
 
125
119
  .search-box {
@@ -147,9 +141,18 @@ dx-tree:last-child {
147
141
  align-items: center;
148
142
  }
149
143
 
150
- @media screen and (max-width: 768px) {
144
+ .sidebar-content-hasfooter {
145
+ margin-bottom: var(--dx-g-spacing-2xl);
146
+ }
147
+
148
+ @media screen and (max-width: 1279px) {
149
+ .padding-horizontal {
150
+ padding-left: var(--dx-g-spacing-xl);
151
+ }
152
+ }
153
+
154
+ @media screen and (max-width: 767px) {
151
155
  .padding-horizontal {
152
156
  padding-left: var(--dx-g-spacing-lg);
153
- padding-right: var(--dx-g-spacing-md);
154
157
  }
155
158
  }
@@ -10,12 +10,31 @@
10
10
  background: var(--dx-g-cloud-blue-vibrant-95);
11
11
  box-shadow: inset var(--dx-g-spacing-xs) 0 0 0 var(--dx-g-blue-vibrant-40);
12
12
  border-radius: 0;
13
+ color: var(--dx-g-blue-vibrant-40) !important;
13
14
  }
14
15
 
15
16
  .sidebar-item {
16
- padding: 6px var(--dx-g-spacing-xl);
17
+ padding: 6px var(--dx-g-spacing-lg) 6px var(--dx-g-spacing-2xl);
18
+ }
19
+
20
+ .sidebar-item:focus-visible {
21
+ margin: 0 calc(var(--dx-g-spacing-2xs) + 1px);
22
+ outline: 2px solid var(--dx-g-blue-vibrant-40);
23
+ border-radius: 2px;
17
24
  }
18
25
 
19
26
  .sidebar-item:not(.sidebar-item-selected):hover {
20
27
  color: var(--dx-g-blue-vibrant-50);
21
28
  }
29
+
30
+ @media (max-width: 1279px) {
31
+ .sidebar-item {
32
+ padding: 6px var(--dx-g-spacing-lg) 6px var(--dx-g-spacing-xl);
33
+ }
34
+ }
35
+
36
+ @media (max-width: 767px) {
37
+ .sidebar-item {
38
+ padding: 6px var(--dx-g-spacing-lg) 6px var(--dx-g-spacing-lg);
39
+ }
40
+ }