@salesforcedevs/dx-components 1.17.10-search-alpha1 → 1.17.13-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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforcedevs/dx-components",
3
- "version": "1.17.10-search-alpha1",
3
+ "version": "1.17.13-alpha",
4
4
  "description": "DX Lightning web components",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -43,6 +43,7 @@
43
43
  "luxon": "3.4.4"
44
44
  },
45
45
  "volta": {
46
- "node": "20.19.0"
46
+ "node": "20.19.0",
47
+ "yarn": "1.22.19"
47
48
  }
48
49
  }
@@ -149,7 +149,7 @@ const openOneTrustInfoDisplay = () => {
149
149
  export const termsLinks = [
150
150
  { href: privacyHref, label: "Privacy Information" },
151
151
  {
152
- href: "https://www.salesforce.com/company/legal/sfdc-website-terms-of-service/",
152
+ href: "https://www.salesforce.com/company/legal/program-agreement/",
153
153
  label: "Terms of Service"
154
154
  },
155
155
  {
@@ -58,7 +58,6 @@
58
58
  value={searchText}
59
59
  onchange={onSearchChange}
60
60
  shortcut-key="j"
61
- clearable
62
61
  ></dx-input>
63
62
  </div>
64
63
  <slot name="version-picker"></slot>
@@ -29,15 +29,6 @@ export default class Sidebar extends SidebarBase {
29
29
  this.assignFilteredTrees();
30
30
  }
31
31
 
32
- @api
33
- get emptyStateMessage(): string | undefined {
34
- return this._emptyStateMessage;
35
- }
36
-
37
- set emptyStateMessage(value: string) {
38
- this._emptyStateMessage = value;
39
- }
40
-
41
32
  private _searchTimeout?: number;
42
33
  private _trees!: Array<TreeNode>;
43
34
 
@@ -45,7 +36,6 @@ export default class Sidebar extends SidebarBase {
45
36
  private searchText: string = "";
46
37
  private matchMedia!: MediaQueryList;
47
38
  private valueToLabel: { [key: string]: string } = {};
48
- private _emptyStateMessage?: string;
49
39
 
50
40
  private get anyResultMatch() {
51
41
  return this.filteredTrees.length > 0;
@@ -75,13 +65,10 @@ export default class Sidebar extends SidebarBase {
75
65
  }
76
66
 
77
67
  private get emptyStateSuggestions(): string {
78
- return (
79
- this.emptyStateMessage ||
80
- JSON.stringify([
81
- "Please consider misspellings",
82
- "Try different search keywords"
83
- ])
84
- );
68
+ return JSON.stringify([
69
+ "Please consider misspellings",
70
+ "Try different search keywords"
71
+ ]);
85
72
  }
86
73
 
87
74
  private get isDesktop(): boolean {
@@ -44,9 +44,9 @@ export default class Tree extends LightningElement {
44
44
  onTileSelected(event: CustomEvent) {
45
45
  event.stopPropagation();
46
46
 
47
- const { key, name } = event.detail;
47
+ const { key, name, isExternalLink } = event.detail;
48
48
  this._value = name;
49
- this.selectedKey = key;
49
+ this.selectedKey = isExternalLink ? this.selectedKey : key;
50
50
  this.dispatchEvent(
51
51
  new CustomEvent("select", {
52
52
  detail: { name },
@@ -10,6 +10,7 @@
10
10
  oniconclick={onIconClick}
11
11
  show-arrow={isParent}
12
12
  target={target}
13
+ is-external-link={isExternalLink}
13
14
  ></dx-tree-tile>
14
15
  </a>
15
16
  <img
@@ -25,8 +25,16 @@ export default class TreeItem extends LightningElement {
25
25
  private isChildrenLoading: boolean = false;
26
26
  private rootParentLabel: string = "";
27
27
 
28
+ private get isExternalLink() {
29
+ return (
30
+ this._treeNode.link &&
31
+ this._treeNode.link.target &&
32
+ this._treeNode.link.target === "_blank"
33
+ );
34
+ }
35
+
28
36
  private get isSelected(): boolean {
29
- return this._treeNode.key === this.selectedKey;
37
+ return this._treeNode.key === this.selectedKey && !this.isExternalLink;
30
38
  }
31
39
 
32
40
  private get hasChildren(): boolean {
@@ -142,7 +150,10 @@ export default class TreeItem extends LightningElement {
142
150
  }
143
151
 
144
152
  this.sendGtm(event);
145
- this.fireEvent("tileselected", { name: this._treeNode.name });
153
+ this.fireEvent("tileselected", {
154
+ name: this._treeNode.name,
155
+ isExternalLink: this._treeNode.link?.target === "_blank" || false
156
+ });
146
157
  }
147
158
 
148
159
  private doExpand(isSelectAction: boolean): void {
@@ -52,6 +52,20 @@
52
52
  margin-left: auto;
53
53
  }
54
54
 
55
+ .tile-external-link-icon {
56
+ display: inline-flex;
57
+ align-items: center;
58
+ margin-left: var(--dx-g-spacing-sm);
59
+ }
60
+
61
+ .tile-with-children .tile-external-link-icon {
62
+ order: 2;
63
+ }
64
+
65
+ .whitespace-nowrap {
66
+ white-space: nowrap;
67
+ }
68
+
55
69
  .tile-with-children .tile-label {
56
70
  order: 2;
57
71
  }
@@ -14,7 +14,19 @@
14
14
  class="tile-label sidebar-item-truncate-text"
15
15
  title={treeNode.label}
16
16
  >
17
- {treeNode.label}
17
+ <span if:true={getModifiedLabel.restOfLabelWithSpace.length}>
18
+ {getModifiedLabel.restOfLabelWithSpace}
19
+ </span>
20
+ <span class="whitespace-nowrap">
21
+ {getModifiedLabel.lastWord}
22
+ <dx-icon
23
+ if:true={isExternalLink}
24
+ class="tile-external-link-icon"
25
+ symbol="external-link-alt"
26
+ sprite="general"
27
+ size="xsmall"
28
+ ></dx-icon>
29
+ </span>
18
30
  </span>
19
31
  <dx-metadata-badge
20
32
  if:true={showMethod}
@@ -31,6 +31,7 @@ export default class TreeTile extends LightningElement {
31
31
  @api href!: string;
32
32
  @api showArrow = false;
33
33
  @api target!: string;
34
+ @api isExternalLink = false;
34
35
 
35
36
  get tileAriaLevel() {
36
37
  return this.treeNode.level + 2;
@@ -58,6 +59,22 @@ export default class TreeTile extends LightningElement {
58
59
  return "";
59
60
  }
60
61
 
62
+ // in case of multiline label, external link icon should not leave alone.
63
+ private get getModifiedLabel() {
64
+ const label = this.treeNode.label;
65
+ const labelArr = label.trim().split(" ");
66
+ const lastWord = labelArr.pop();
67
+ const restOfLabel = labelArr.join(" ");
68
+ const restOfLabelWithSpace = restOfLabel.length
69
+ ? `${restOfLabel} `
70
+ : "";
71
+
72
+ return {
73
+ lastWord,
74
+ restOfLabelWithSpace
75
+ };
76
+ }
77
+
61
78
  private get tileClass() {
62
79
  return cx("tile", "sidebar-item", {
63
80
  "tile-root": this.isRoot,