@salesforcedevs/dx-components 1.3.79 → 1.3.82
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 +7 -3
- package/package.json +3 -2
- package/src/assets/shiki/languages/amp.tmLanguage.json +205 -0
- package/src/assets/shiki/themes/codey-highnoon.json +650 -0
- package/src/assets/shiki/themes/codey-midnight.json +622 -0
- package/src/modules/dx/audio/audio.css +16 -0
- package/src/modules/dx/audio/audio.html +8 -0
- package/src/modules/dx/audio/audio.ts +5 -0
- package/src/modules/dx/breadcrumbs/breadcrumbs.ts +8 -10
- package/src/modules/dx/cardContent/cardContent.html +4 -1
- package/src/modules/dx/cardDocs/cardDocs.html +4 -1
- package/src/modules/dx/codeBlock/codeBlock.css +23 -7
- package/src/modules/dx/codeBlock/codeBlock.html +0 -19
- package/src/modules/dx/codeBlock/codeBlock.ts +70 -110
- package/src/modules/dx/dropdown/dropdown.ts +2 -3
- package/src/modules/dx/filterMenu/filterMenu.html +7 -2
- package/src/modules/dx/filterMenu/filterMenu.ts +4 -3
- package/src/modules/dx/footer/links.ts +2 -4
- package/src/modules/dx/grid/grid.ts +3 -1
- package/src/modules/dx/popover/popover.ts +3 -3
- package/src/modules/dx/searchResults/searchResults.ts +1 -3
- package/src/modules/dx/select/select.ts +2 -3
- package/src/modules/dx/sidebar/sidebar.ts +7 -5
- package/src/modules/dx/sidebarSearch/sidebarSearch.ts +2 -5
- package/src/modules/dx/tabPanelList/tabPanelList.ts +2 -2
- package/src/modules/dxBaseElements/matchMediaElement/matchMediaElement.ts +2 -4
- package/src/modules/dxUtils/prismjs/prismjs.ts +287 -167
- package/src/modules/dxUtils/shiki/languages.ts +18 -0
- package/src/modules/dxUtils/shiki/shiki.ts +75 -0
- package/src/modules/dxHelpers/code/code.css +0 -296
- package/src/modules/dxUtils/prismjs/prismjs.html +0 -3
|
@@ -7,7 +7,10 @@
|
|
|
7
7
|
class="image dx-card-base_image"
|
|
8
8
|
/>
|
|
9
9
|
<div
|
|
10
|
-
class="
|
|
10
|
+
class="
|
|
11
|
+
dx-card-base_section-vertical dx-card-base_column
|
|
12
|
+
card_section-text
|
|
13
|
+
"
|
|
11
14
|
>
|
|
12
15
|
<span class="dx-text-label-3">{label}</span>
|
|
13
16
|
<dx-card-title
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
@import "dxHelpers/code";
|
|
2
1
|
@import "dxHelpers/text";
|
|
3
2
|
@import "./darkTheme.css";
|
|
4
3
|
@import "./lightTheme.css";
|
|
@@ -102,7 +101,7 @@ div.code-block-content {
|
|
|
102
101
|
background: var(--dx-g-gray-95);
|
|
103
102
|
}
|
|
104
103
|
|
|
105
|
-
code[class*="
|
|
104
|
+
code[class*="shiki"] {
|
|
106
105
|
margin-left: -11px;
|
|
107
106
|
}
|
|
108
107
|
|
|
@@ -110,19 +109,36 @@ code[class*="language-"] {
|
|
|
110
109
|
margin-right: var(--dx-g-spacing-xs);
|
|
111
110
|
}
|
|
112
111
|
|
|
113
|
-
|
|
112
|
+
.italic {
|
|
113
|
+
font-style: italic;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
pre[class*="shiki"] {
|
|
117
|
+
font-size: 14px;
|
|
114
118
|
border-radius: 0 0 0.3em 0.3em;
|
|
115
119
|
padding-bottom: var(--dx-g-spacing-smd);
|
|
116
120
|
background-color: unset;
|
|
117
121
|
padding-top: var(--dx-g-spacing-sm);
|
|
118
122
|
}
|
|
119
123
|
|
|
120
|
-
pre[class*="language-"].line-numbers {
|
|
121
|
-
padding-left: 56px;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
124
|
@media screen and (max-width: 640px) {
|
|
125
125
|
.dx-code-block-heading {
|
|
126
126
|
display: none;
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
|
+
|
|
130
|
+
/* Adding line numbers via CSS counters */
|
|
131
|
+
code {
|
|
132
|
+
counter-reset: step;
|
|
133
|
+
counter-increment: step 0;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
code .line::before {
|
|
137
|
+
content: counter(step);
|
|
138
|
+
counter-increment: step;
|
|
139
|
+
width: 1rem;
|
|
140
|
+
margin-right: 1.5rem;
|
|
141
|
+
display: inline-block;
|
|
142
|
+
text-align: right;
|
|
143
|
+
color: rgba(115, 138, 148, 0.4);
|
|
144
|
+
}
|
|
@@ -7,25 +7,6 @@
|
|
|
7
7
|
{ title }
|
|
8
8
|
</div>
|
|
9
9
|
</div>
|
|
10
|
-
<template if:true={showLanguageDropdown}>
|
|
11
|
-
<div class="toolbar-item">
|
|
12
|
-
<dx-dropdown
|
|
13
|
-
small="true"
|
|
14
|
-
options={allLanguages}
|
|
15
|
-
value={selectedLanguageId}
|
|
16
|
-
onchange={onLanguageChange}
|
|
17
|
-
>
|
|
18
|
-
<dx-button
|
|
19
|
-
icon-symbol="chevrondown"
|
|
20
|
-
class="btn language-btn"
|
|
21
|
-
variant="custom"
|
|
22
|
-
>
|
|
23
|
-
{ selectedLanguageLabel }
|
|
24
|
-
</dx-button>
|
|
25
|
-
</dx-dropdown>
|
|
26
|
-
</div>
|
|
27
|
-
<div class="divider"></div>
|
|
28
|
-
</template>
|
|
29
10
|
<template if:true={showCodeSourceBtn}>
|
|
30
11
|
<div class="toolbar-item">
|
|
31
12
|
<dx-tooltip
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { LightningElement, api, wire, track } from "lwc";
|
|
2
|
-
import { CodeBlockTheme
|
|
2
|
+
import { CodeBlockTheme } from "typings/custom";
|
|
3
3
|
import cx from "classnames";
|
|
4
|
-
import
|
|
4
|
+
import { Shiki } from "dxUtils/shiki";
|
|
5
5
|
import {
|
|
6
6
|
getLocalStorageData,
|
|
7
7
|
setLocalStorageData
|
|
@@ -24,39 +24,6 @@ export default class CodeBlock extends LightningElement {
|
|
|
24
24
|
// if it is true, it renders code as is coming instead of wrapping it into html/xml comments tags.
|
|
25
25
|
@api isEncoded = false;
|
|
26
26
|
|
|
27
|
-
private markupLangs = ["visualforce", "html", "xml"];
|
|
28
|
-
private _codeBlockRendered: boolean = false;
|
|
29
|
-
private componentLoaded: boolean = false;
|
|
30
|
-
private showLanguageDropdown: boolean = false;
|
|
31
|
-
private copyBtnText: string = "Click to copy";
|
|
32
|
-
private selectedLanguageLabel: string = "";
|
|
33
|
-
private selectedLanguageId: string = "";
|
|
34
|
-
private selectedLanguage: CodeBlockLanguage = { label: "Language", id: "" };
|
|
35
|
-
private allLanguages: CodeBlockLanguage[] = [
|
|
36
|
-
{ label: "Language", id: "" },
|
|
37
|
-
{ label: "Apex", id: "apex" },
|
|
38
|
-
{ label: "Java", id: "java" },
|
|
39
|
-
{ label: "Javascript", id: "javascript" },
|
|
40
|
-
{ label: "CSS", id: "css" },
|
|
41
|
-
{ label: "Visualforce", id: "visualforce" },
|
|
42
|
-
{ label: "Html", id: "html" },
|
|
43
|
-
{ label: "xml", id: "xml" },
|
|
44
|
-
{ label: "TypeScript", id: "typescript" },
|
|
45
|
-
{ label: "PHP", id: "php" },
|
|
46
|
-
{ label: "JSON", id: "json" },
|
|
47
|
-
{ label: "Swift", id: "swift" },
|
|
48
|
-
{ label: "Kotlin", id: "kotlin" },
|
|
49
|
-
{ label: "Python", id: "python" },
|
|
50
|
-
{ label: "Bash", id: "bash" },
|
|
51
|
-
{ label: "Shell", id: "shell" },
|
|
52
|
-
{ label: "Shell", id: "sh" },
|
|
53
|
-
{ label: "SQL", id: "sql" },
|
|
54
|
-
{ label: "YAML", id: "yaml" },
|
|
55
|
-
{ label: "Markdown", id: "markdown" },
|
|
56
|
-
{ label: "Markdown", id: "md" },
|
|
57
|
-
{ label: "JSX", id: "jsx" }
|
|
58
|
-
];
|
|
59
|
-
|
|
60
27
|
connectedCallback() {
|
|
61
28
|
if (!this.theme) {
|
|
62
29
|
this.theme = this.defaultTheme;
|
|
@@ -66,11 +33,11 @@ export default class CodeBlock extends LightningElement {
|
|
|
66
33
|
_codeBlock: string = "";
|
|
67
34
|
@api
|
|
68
35
|
set codeBlock(value: string) {
|
|
69
|
-
this._codeBlockRendered = false;
|
|
70
36
|
let match;
|
|
71
|
-
this._codeBlock = (
|
|
72
|
-
|
|
73
|
-
|
|
37
|
+
this._codeBlock = (
|
|
38
|
+
(match = preTagRegexp.exec(value.trim())) === null
|
|
39
|
+
? value.trim()
|
|
40
|
+
: match[1]
|
|
74
41
|
).trim();
|
|
75
42
|
}
|
|
76
43
|
|
|
@@ -78,12 +45,16 @@ export default class CodeBlock extends LightningElement {
|
|
|
78
45
|
return this._codeBlock;
|
|
79
46
|
}
|
|
80
47
|
|
|
48
|
+
private copyBtnText = "Click to copy";
|
|
81
49
|
@track private theme: CodeBlockTheme | null = null;
|
|
82
50
|
|
|
83
51
|
@wire(getLocalStorageData, { key: "dx-codeblock-theme" })
|
|
84
52
|
updateThemeForCodeblock(value: any) {
|
|
85
53
|
if (themes.includes(value)) {
|
|
86
54
|
this.theme = value;
|
|
55
|
+
// As styles computation is static the code needs to be reformatted after a theme change
|
|
56
|
+
Shiki.setTheme(this.theme!);
|
|
57
|
+
this.formatCodeBlock();
|
|
87
58
|
} else {
|
|
88
59
|
setLocalStorageData(
|
|
89
60
|
LOCAL_STORAGE_KEY,
|
|
@@ -104,7 +75,7 @@ export default class CodeBlock extends LightningElement {
|
|
|
104
75
|
return cx(`dx-theme-${this.theme}`);
|
|
105
76
|
}
|
|
106
77
|
|
|
107
|
-
formatCodeBlock() {
|
|
78
|
+
async formatCodeBlock() {
|
|
108
79
|
const divEl = this.template.querySelector("div.code-block-content");
|
|
109
80
|
const templateEl = document.createElement("template");
|
|
110
81
|
|
|
@@ -117,17 +88,13 @@ export default class CodeBlock extends LightningElement {
|
|
|
117
88
|
"vvvvv$1vvvvv"
|
|
118
89
|
);
|
|
119
90
|
|
|
120
|
-
if (
|
|
121
|
-
|
|
122
|
-
this.markupLangs.includes(this.selectedLanguage.id || "")
|
|
123
|
-
) {
|
|
124
|
-
// Temporarily replace HTML comment characters, which Prism would also strip
|
|
125
|
-
cleanCodeBlock = `<!--${cleanCodeBlock.replace(
|
|
91
|
+
if (!this.isEncoded && Shiki.isMarkupLanguage(this.language)) {
|
|
92
|
+
cleanCodeBlock = `${cleanCodeBlock.replace(
|
|
126
93
|
/<!--(.*?)-->/gs,
|
|
127
94
|
"@@$1##"
|
|
128
|
-
)}
|
|
95
|
+
)}`;
|
|
129
96
|
} else {
|
|
130
|
-
// If this is a non-encoded markup language, encode angle brackets
|
|
97
|
+
// If this is a non-encoded markup language, encode angle brackets
|
|
131
98
|
cleanCodeBlock = this.isEncoded
|
|
132
99
|
? cleanCodeBlock
|
|
133
100
|
: cleanCodeBlock.replace(/</g, "<").replace(/>/g, ">");
|
|
@@ -136,42 +103,62 @@ export default class CodeBlock extends LightningElement {
|
|
|
136
103
|
// eslint-disable-next-line
|
|
137
104
|
templateEl.innerHTML = `<pre class='codeblock'>${cleanCodeBlock}</pre>`;
|
|
138
105
|
|
|
139
|
-
const codeBlockEls =
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
this.markupLangs.includes(this.selectedLanguage.id || "")
|
|
148
|
-
? "markup"
|
|
149
|
-
: this.selectedLanguage.id
|
|
150
|
-
}`
|
|
151
|
-
);
|
|
152
|
-
// for custom markup content, it is a workaround to be refactored later.
|
|
153
|
-
// eslint-disable-next-line
|
|
154
|
-
this.language !== "text"
|
|
155
|
-
? // eslint-disable-next-line
|
|
156
|
-
(codeEl.innerHTML = codeHTML)
|
|
157
|
-
: (codeEl.textContent = this._codeBlock.trim());
|
|
158
|
-
// eslint-disable-next-line
|
|
159
|
-
codeBlockEl.innerHTML = "";
|
|
160
|
-
codeBlockEl.appendChild(codeEl);
|
|
161
|
-
Prism.highlightAllUnder(codeBlockEl);
|
|
162
|
-
// Italicize anything marked as a "variable" by the docs team
|
|
106
|
+
const codeBlockEls = Array.from(
|
|
107
|
+
templateEl.content.querySelectorAll("pre")
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
// temporary hack to avoid prismjs tokens from showing up in markup languages
|
|
111
|
+
const isDocs = window.location.href.includes("/docs/");
|
|
112
|
+
|
|
113
|
+
const promisesForHighlighted = codeBlockEls.map((codeBlockEl) =>
|
|
163
114
|
// eslint-disable-next-line
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
115
|
+
Shiki.codeToHtml(
|
|
116
|
+
Shiki.isMarkupLanguage(this.language) && !isDocs
|
|
117
|
+
? codeBlockEl.innerHTML
|
|
118
|
+
: codeBlockEl.textContent,
|
|
119
|
+
{
|
|
120
|
+
lang: this.language
|
|
121
|
+
}
|
|
122
|
+
)
|
|
123
|
+
.then((highlightedCode) => {
|
|
124
|
+
codeBlockEl.classList.add("line-numbers");
|
|
125
|
+
// for custom markup content, it is a workaround to be refactored later.
|
|
126
|
+
const codeEl = document.createElement("code");
|
|
127
|
+
// eslint-disable-next-line
|
|
128
|
+
this.language !== "text"
|
|
129
|
+
? // eslint-disable-next-line
|
|
130
|
+
(codeEl.innerHTML = highlightedCode)
|
|
131
|
+
: (codeEl.textContent = highlightedCode.trim());
|
|
132
|
+
// eslint-disable-next-line
|
|
133
|
+
codeBlockEl.innerHTML = "";
|
|
134
|
+
codeBlockEl.appendChild(codeEl);
|
|
135
|
+
|
|
136
|
+
// Italicize anything marked as a "variable" by the docs team
|
|
137
|
+
// eslint-disable-next-line
|
|
138
|
+
codeBlockEl.innerHTML = codeBlockEl.innerHTML.replace(
|
|
139
|
+
/vvvvv(.+?)vvvvv/g,
|
|
140
|
+
"<span class='token italic'>$1</span>"
|
|
141
|
+
);
|
|
142
|
+
})
|
|
143
|
+
.catch((error) => {
|
|
144
|
+
console.error(error);
|
|
145
|
+
// Italicize anything marked as a "variable" by the docs team
|
|
146
|
+
// eslint-disable-next-line
|
|
147
|
+
codeBlockEl.innerHTML = codeBlockEl.innerHTML.replace(
|
|
148
|
+
/vvvvv(.+?)vvvvv/g,
|
|
149
|
+
"<span class='token italic'>$1</span>"
|
|
150
|
+
);
|
|
151
|
+
})
|
|
152
|
+
);
|
|
153
|
+
|
|
154
|
+
await Promise.all(promisesForHighlighted);
|
|
169
155
|
|
|
170
156
|
if (divEl) {
|
|
171
157
|
// eslint-disable-next-line
|
|
172
158
|
divEl.innerHTML = "";
|
|
173
159
|
divEl.append(templateEl.content);
|
|
174
|
-
|
|
160
|
+
|
|
161
|
+
if (Shiki.isMarkupLanguage(this.language)) {
|
|
175
162
|
const res = this.template.querySelector(`code.language-markup`);
|
|
176
163
|
if (res) {
|
|
177
164
|
// Restore any temporarily replaced HTML comment characters
|
|
@@ -185,25 +172,6 @@ export default class CodeBlock extends LightningElement {
|
|
|
185
172
|
}
|
|
186
173
|
}
|
|
187
174
|
|
|
188
|
-
onLanguageChange(newLang: any) {
|
|
189
|
-
this.selectedLanguage =
|
|
190
|
-
this.allLanguages.find(
|
|
191
|
-
(lang: CodeBlockLanguage) => lang.id === newLang.detail
|
|
192
|
-
) || this.allLanguages[0];
|
|
193
|
-
this.selectedLanguageLabel = this.selectedLanguage.label;
|
|
194
|
-
this.selectedLanguageId = this.selectedLanguage.id;
|
|
195
|
-
this.formatCodeBlock();
|
|
196
|
-
|
|
197
|
-
gtmTrack(newLang, "custEv_ctaLinkClick", {
|
|
198
|
-
event: "custEv_ctaLinkClick",
|
|
199
|
-
click_text: newLang.detail,
|
|
200
|
-
element_title: "dx-dropdown",
|
|
201
|
-
click_url: this.selectedLanguageId,
|
|
202
|
-
element_type: "link",
|
|
203
|
-
content_category: "code block"
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
|
|
207
175
|
/**
|
|
208
176
|
* Note: There is a known issue in storybook@6.1.13 where some apis are not available if you access Storybook through IP address.
|
|
209
177
|
* https://github.com/storybookjs/storybook/issues/13529
|
|
@@ -217,9 +185,8 @@ export default class CodeBlock extends LightningElement {
|
|
|
217
185
|
});
|
|
218
186
|
|
|
219
187
|
try {
|
|
220
|
-
const snippetContainer: HTMLElement | null =
|
|
221
|
-
".code-block-content"
|
|
222
|
-
);
|
|
188
|
+
const snippetContainer: HTMLElement | null =
|
|
189
|
+
this.template.querySelector(".code-block-content");
|
|
223
190
|
if (snippetContainer && snippetContainer.textContent) {
|
|
224
191
|
await navigator.clipboard.writeText(
|
|
225
192
|
snippetContainer.textContent
|
|
@@ -236,6 +203,9 @@ export default class CodeBlock extends LightningElement {
|
|
|
236
203
|
|
|
237
204
|
updateTheme(event: any) {
|
|
238
205
|
this.theme = this.theme === DARK ? LIGHT : DARK;
|
|
206
|
+
// As styles computation is static the code needs to be reformatted after a theme change
|
|
207
|
+
Shiki.setTheme(this.theme);
|
|
208
|
+
this.formatCodeBlock();
|
|
239
209
|
setLocalStorageData(LOCAL_STORAGE_KEY, this.theme);
|
|
240
210
|
|
|
241
211
|
gtmTrack(event.target, "custEv_iconClick", {
|
|
@@ -247,16 +217,6 @@ export default class CodeBlock extends LightningElement {
|
|
|
247
217
|
}
|
|
248
218
|
|
|
249
219
|
renderedCallback() {
|
|
250
|
-
if (this._codeBlockRendered) {
|
|
251
|
-
return;
|
|
252
|
-
}
|
|
253
|
-
this.selectedLanguage =
|
|
254
|
-
this.allLanguages.find(
|
|
255
|
-
(l: CodeBlockLanguage) => l.id === this.language
|
|
256
|
-
) || this.allLanguages[0];
|
|
257
|
-
this.selectedLanguageLabel = this.selectedLanguage.label;
|
|
258
|
-
this.selectedLanguageId = this.selectedLanguage.id;
|
|
259
220
|
this.formatCodeBlock();
|
|
260
|
-
this._codeBlockRendered = true;
|
|
261
221
|
}
|
|
262
222
|
}
|
|
@@ -172,9 +172,8 @@ export default class Dropdown extends LightningElement {
|
|
|
172
172
|
? this.findOptionElementIndex(this.value)
|
|
173
173
|
: 0;
|
|
174
174
|
|
|
175
|
-
const optionToFocus: any =
|
|
176
|
-
defaultIndex < 0 ? 0 : defaultIndex
|
|
177
|
-
];
|
|
175
|
+
const optionToFocus: any =
|
|
176
|
+
this.optionsElements[defaultIndex < 0 ? 0 : defaultIndex];
|
|
178
177
|
if (optionToFocus) {
|
|
179
178
|
optionToFocus.focus();
|
|
180
179
|
this._focusedValue = optionToFocus.option.id;
|
|
@@ -62,7 +62,10 @@
|
|
|
62
62
|
stroke-width="2"
|
|
63
63
|
stroke-linecap="round"
|
|
64
64
|
stroke-linejoin="round"
|
|
65
|
-
class="
|
|
65
|
+
class="
|
|
66
|
+
feather feather-chevron-down
|
|
67
|
+
year-caret
|
|
68
|
+
"
|
|
66
69
|
>
|
|
67
70
|
<polyline
|
|
68
71
|
points="6 9 12 15 18 9"
|
|
@@ -85,7 +88,9 @@
|
|
|
85
88
|
{month.id}
|
|
86
89
|
<span
|
|
87
90
|
if:true={filtersDatesLoading}
|
|
88
|
-
class="
|
|
91
|
+
class="
|
|
92
|
+
filters-dates-loading
|
|
93
|
+
"
|
|
89
94
|
></span>
|
|
90
95
|
<span
|
|
91
96
|
if:false={filtersDatesLoading}
|
|
@@ -80,9 +80,10 @@ export default class FilterMenu extends LightningElement {
|
|
|
80
80
|
|
|
81
81
|
private setIntedeterminateStatus(checkbox: any, value: boolean) {
|
|
82
82
|
if ("isYear" in checkbox.value && !checkbox.value.isYear) {
|
|
83
|
-
const yearCheckBox: any =
|
|
84
|
-
|
|
85
|
-
|
|
83
|
+
const yearCheckBox: any =
|
|
84
|
+
checkbox.parentElement.parentElement.parentElement.querySelector(
|
|
85
|
+
".checkbox-year"
|
|
86
|
+
);
|
|
86
87
|
yearCheckBox.indeterminate = value;
|
|
87
88
|
}
|
|
88
89
|
}
|
|
@@ -81,8 +81,7 @@ export const generalLinksRaw: OptionWithRequiredNested[] = [
|
|
|
81
81
|
options: [
|
|
82
82
|
{
|
|
83
83
|
link: {
|
|
84
|
-
href:
|
|
85
|
-
"https://trailhead.salesforce.com/trailblazer-community/feed"
|
|
84
|
+
href: "https://trailhead.salesforce.com/trailblazer-community/feed"
|
|
86
85
|
},
|
|
87
86
|
label: "Trailblazer Community",
|
|
88
87
|
id: "Trailblazer Community"
|
|
@@ -159,8 +158,7 @@ export const termsLinks = [
|
|
|
159
158
|
label: "Legal"
|
|
160
159
|
},
|
|
161
160
|
{
|
|
162
|
-
href:
|
|
163
|
-
"https://www.salesforce.com/company/privacy/full_privacy/#nav_info",
|
|
161
|
+
href: "https://www.salesforce.com/company/privacy/full_privacy/#nav_info",
|
|
164
162
|
label: "Use of Cookies"
|
|
165
163
|
},
|
|
166
164
|
{ href: "https://trust.salesforce.com/en/", label: "Trust" },
|
|
@@ -67,6 +67,8 @@ export default class Grid extends LightningElement {
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
onSlotChange(e: Event) {
|
|
70
|
-
this._itemCount = (
|
|
70
|
+
this._itemCount = (
|
|
71
|
+
e.target as LightningSlotElement
|
|
72
|
+
).assignedElements().length;
|
|
71
73
|
}
|
|
72
74
|
}
|
|
@@ -246,9 +246,9 @@ export default class Popover extends LightningElement {
|
|
|
246
246
|
const elements = slot.assignedElements();
|
|
247
247
|
const slotted = elements.length === 0 ? null : elements[0];
|
|
248
248
|
// allows dropdown/select to compose popover
|
|
249
|
-
const slotElement = (
|
|
250
|
-
? slotted.firstChild
|
|
251
|
-
|
|
249
|
+
const slotElement = (
|
|
250
|
+
slotted?.tagName === "SLOT" ? slotted.firstChild : slotted
|
|
251
|
+
) as HTMLElement | null;
|
|
252
252
|
const isWorkToDo =
|
|
253
253
|
slotElement &&
|
|
254
254
|
(!this.control || !slotElement.isSameNode(this.control));
|
|
@@ -19,9 +19,7 @@ interface CoveoSearch {
|
|
|
19
19
|
|
|
20
20
|
declare const Coveo: CoveoSearch;
|
|
21
21
|
|
|
22
|
-
function getPaginationState(
|
|
23
|
-
event: CoveoSDK.IQuerySuccessEventArgs
|
|
24
|
-
): {
|
|
22
|
+
function getPaginationState(event: CoveoSDK.IQuerySuccessEventArgs): {
|
|
25
23
|
numberOfPages: number;
|
|
26
24
|
currentPage: number;
|
|
27
25
|
} {
|
|
@@ -79,9 +79,8 @@ export default class Select extends LightningElement {
|
|
|
79
79
|
|
|
80
80
|
get selectElement() {
|
|
81
81
|
if (!this._selectElement) {
|
|
82
|
-
this._selectElement =
|
|
83
|
-
"select"
|
|
84
|
-
);
|
|
82
|
+
this._selectElement =
|
|
83
|
+
this.template.querySelector<HTMLSelectElement>("select");
|
|
85
84
|
}
|
|
86
85
|
return this._selectElement;
|
|
87
86
|
}
|
|
@@ -51,9 +51,11 @@ export default class Sidebar extends SidebarBase {
|
|
|
51
51
|
|
|
52
52
|
@api
|
|
53
53
|
setInputValue(searchTerm: string) {
|
|
54
|
-
(
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
(
|
|
55
|
+
this.template.querySelector(
|
|
56
|
+
"dx-sidebar-search"
|
|
57
|
+
) as unknown as SidebarSearch
|
|
58
|
+
)?.setInputValue(searchTerm);
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
private expanded: boolean = true;
|
|
@@ -213,9 +215,9 @@ export default class Sidebar extends SidebarBase {
|
|
|
213
215
|
return;
|
|
214
216
|
}
|
|
215
217
|
|
|
216
|
-
const search =
|
|
218
|
+
const search = this.template.querySelector(
|
|
217
219
|
"dx-sidebar-search"
|
|
218
|
-
) as unknown
|
|
220
|
+
) as unknown as SidebarSearch;
|
|
219
221
|
|
|
220
222
|
if (
|
|
221
223
|
this.isNearBottomOfSearchResults &&
|
|
@@ -247,11 +247,8 @@ export default class SidebarSearch extends LightningElement {
|
|
|
247
247
|
return;
|
|
248
248
|
}
|
|
249
249
|
|
|
250
|
-
const {
|
|
251
|
-
|
|
252
|
-
firstSearchExecuted,
|
|
253
|
-
results
|
|
254
|
-
} = this.resultList.state;
|
|
250
|
+
const { isLoading, firstSearchExecuted, results } =
|
|
251
|
+
this.resultList.state;
|
|
255
252
|
|
|
256
253
|
if ((!firstSearchExecuted && !isLoading) || !this.value) {
|
|
257
254
|
// coveo search is firing off some unwanted payloads on startup
|
|
@@ -123,8 +123,8 @@ export default class TabPanelList extends LightningElement {
|
|
|
123
123
|
"dx-tab-panel-item:not(.more-btn-container)"
|
|
124
124
|
);
|
|
125
125
|
const moreBtn = this.template.querySelector(".more-btn-container")!;
|
|
126
|
-
const containerWidth =
|
|
127
|
-
.offsetWidth;
|
|
126
|
+
const containerWidth =
|
|
127
|
+
this.template.querySelector(".tablist")!.offsetWidth;
|
|
128
128
|
let stopWidth = this.template.querySelector(
|
|
129
129
|
"dx-tab-panel-item.more-btn-container"
|
|
130
130
|
)!.offsetWidth;
|
|
@@ -19,10 +19,8 @@ const breakpointConfigs = [
|
|
|
19
19
|
];
|
|
20
20
|
|
|
21
21
|
export abstract class MatchMediaElement extends LightningElement {
|
|
22
|
-
private deviceType:
|
|
23
|
-
|
|
24
|
-
| DEVICE_TABLET
|
|
25
|
-
| DEVICE_DESKTOP = DEVICE_DESKTOP;
|
|
22
|
+
private deviceType: DEVICE_MOBILE | DEVICE_TABLET | DEVICE_DESKTOP =
|
|
23
|
+
DEVICE_DESKTOP;
|
|
26
24
|
private matches: {
|
|
27
25
|
match: MediaQueryList;
|
|
28
26
|
callback: (e: MediaQueryListEvent | MediaQueryList) => void;
|