@salesforcedevs/dx-components 1.3.384-alpha2 → 1.3.384-alpha5
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-lock.json +2 -2
- package/package.json +1 -1
- package/src/modules/dx/audio/audio.css +7 -2
- package/src/modules/dx/codeBlock/codeBlock.css +11 -1
- package/src/modules/dx/codeBlock/codeBlock.ts +12 -20
- package/src/modules/dx/darkModeManager/darkModeManager.ts +14 -5
- package/src/modules/dx/featureFlag/featureFlag.ts +2 -14
- package/src/modules/dx/featuredContentHeader/featuredContentHeader.css +1 -1
- package/src/modules/dx/featuredContentHeader/featuredContentHeader.html +2 -2
- package/src/modules/dx/featuredContentHeader/featuredContentHeader.ts +8 -1
- package/src/modules/dx/podcastHost/podcastHost.css +3 -2
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforcedevs/dx-components",
|
|
3
|
-
"version": "1.3.384-
|
|
3
|
+
"version": "1.3.384-alpha2",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@salesforcedevs/dx-components",
|
|
9
|
-
"version": "1.3.384-
|
|
9
|
+
"version": "1.3.384-alpha2",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@coveo/headless": "2.32.0",
|
package/package.json
CHANGED
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
--dx-c-track-thumb-size: 10px;
|
|
7
7
|
--dx-c-threedot-menu-item-padding: 14px;
|
|
8
8
|
--dx-c-audio-player-padding: 6px 13px 13px;
|
|
9
|
+
--dx-c-audio-background-color: var(--dx-g-audio-background-color, #e0e5f8);
|
|
10
|
+
--dx-c-audio-inner-div-background-color: var(
|
|
11
|
+
--dx-g-audio-inner-div-background-color,
|
|
12
|
+
#e0e5f8
|
|
13
|
+
);
|
|
9
14
|
}
|
|
10
15
|
|
|
11
16
|
dx-icon {
|
|
@@ -14,7 +19,7 @@ dx-icon {
|
|
|
14
19
|
|
|
15
20
|
/* Outermost container/border */
|
|
16
21
|
.custom-audio-player {
|
|
17
|
-
background-color: var(--dx-
|
|
22
|
+
background-color: var(--dx-c-audio-background-color);
|
|
18
23
|
border-radius: 12px;
|
|
19
24
|
padding: var(--dx-c-audio-player-padding);
|
|
20
25
|
}
|
|
@@ -45,7 +50,7 @@ dx-icon {
|
|
|
45
50
|
--dx-c-popover-padding: 0;
|
|
46
51
|
|
|
47
52
|
align-items: center;
|
|
48
|
-
background-color: var(--dx-
|
|
53
|
+
background-color: var(--dx-c-audio-inner-div-background-color, #fff);
|
|
49
54
|
border-radius: 5px;
|
|
50
55
|
display: flex;
|
|
51
56
|
margin-top: 8px;
|
|
@@ -31,6 +31,11 @@ pre {
|
|
|
31
31
|
background-color: var(--dx-g-gray-90);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
div.dx-theme-dark {
|
|
35
|
+
border: var(--dx-g-dark-mode-toggle-button-border);
|
|
36
|
+
border-radius: var(--dx-code-block-toolbar-border-radius, 0.3em);
|
|
37
|
+
}
|
|
38
|
+
|
|
34
39
|
.dx-theme-dark .toolbar {
|
|
35
40
|
background-color: var(--dx-g-blue-natural-20);
|
|
36
41
|
}
|
|
@@ -65,7 +70,8 @@ pre {
|
|
|
65
70
|
}
|
|
66
71
|
|
|
67
72
|
.toolbar-item {
|
|
68
|
-
display:
|
|
73
|
+
display: flex;
|
|
74
|
+
align-items: center;
|
|
69
75
|
}
|
|
70
76
|
|
|
71
77
|
.toolbar-item:first-child {
|
|
@@ -127,3 +133,7 @@ pre[class*="language-"].line-numbers {
|
|
|
127
133
|
display: none;
|
|
128
134
|
}
|
|
129
135
|
}
|
|
136
|
+
|
|
137
|
+
dx-button {
|
|
138
|
+
--dx-g-button-icon-color: var(--dx-g-cloud-blue-vibrant-50);
|
|
139
|
+
}
|
|
@@ -4,13 +4,6 @@ import cx from "classnames";
|
|
|
4
4
|
import { track as gtmTrack } from "dxUtils/analytics";
|
|
5
5
|
import prism from "dxUtils/prismjs";
|
|
6
6
|
import { ampscript, sqlDocsTemplate } from "./customLanguages";
|
|
7
|
-
import {
|
|
8
|
-
DARK_MODE_THEMES,
|
|
9
|
-
DARKMODE_TOGGLE_EVENT_NAME,
|
|
10
|
-
dispatchDarkModeToggleEvent,
|
|
11
|
-
getLocalStorageDarkModeSetting,
|
|
12
|
-
setLocalStorageDarkModeSetting
|
|
13
|
-
} from "dx/darkModeManager";
|
|
14
7
|
|
|
15
8
|
/*
|
|
16
9
|
Here we create custom syntax highlighting rules for proprietary languages
|
|
@@ -44,6 +37,8 @@ const preTagRegexp: RegExp = /^<pre.*?>(.*)<\/pre>$/is;
|
|
|
44
37
|
|
|
45
38
|
export const LIGHT = "light";
|
|
46
39
|
export const DARK = "dark";
|
|
40
|
+
export const EVENT_NAME = "dx-codeblock-theme";
|
|
41
|
+
const THEMES = [LIGHT, DARK];
|
|
47
42
|
|
|
48
43
|
export default class CodeBlock extends LightningElement {
|
|
49
44
|
@api defaultTheme: CodeBlockTheme = LIGHT;
|
|
@@ -99,18 +94,18 @@ export default class CodeBlock extends LightningElement {
|
|
|
99
94
|
];
|
|
100
95
|
|
|
101
96
|
private initializeDarkMode() {
|
|
102
|
-
window.addEventListener(
|
|
103
|
-
const darkModeSetting =
|
|
104
|
-
|
|
105
|
-
|
|
97
|
+
window.addEventListener(EVENT_NAME, this.toggleTheme);
|
|
98
|
+
const darkModeSetting = localStorage.getItem(
|
|
99
|
+
EVENT_NAME
|
|
100
|
+
) as CodeBlockTheme;
|
|
101
|
+
if (THEMES.includes(darkModeSetting)) {
|
|
106
102
|
this.theme = darkModeSetting;
|
|
103
|
+
} else {
|
|
104
|
+
this.theme = this.defaultTheme;
|
|
107
105
|
}
|
|
108
106
|
}
|
|
109
107
|
|
|
110
108
|
connectedCallback() {
|
|
111
|
-
if (!this.theme) {
|
|
112
|
-
this.theme = this.defaultTheme;
|
|
113
|
-
}
|
|
114
109
|
this.initializeDarkMode();
|
|
115
110
|
}
|
|
116
111
|
|
|
@@ -278,12 +273,12 @@ export default class CodeBlock extends LightningElement {
|
|
|
278
273
|
element_title: this.updateThemeBtnText,
|
|
279
274
|
content_category: "code block"
|
|
280
275
|
});
|
|
281
|
-
|
|
276
|
+
window.dispatchEvent(new Event(EVENT_NAME));
|
|
282
277
|
}
|
|
283
278
|
|
|
284
279
|
private toggleTheme = () => {
|
|
285
280
|
this.theme = this.theme === DARK ? LIGHT : DARK;
|
|
286
|
-
|
|
281
|
+
localStorage.setItem(EVENT_NAME, this.theme);
|
|
287
282
|
};
|
|
288
283
|
|
|
289
284
|
renderedCallback() {
|
|
@@ -301,9 +296,6 @@ export default class CodeBlock extends LightningElement {
|
|
|
301
296
|
}
|
|
302
297
|
|
|
303
298
|
disconnectedCallback(): void {
|
|
304
|
-
window.removeEventListener(
|
|
305
|
-
DARKMODE_TOGGLE_EVENT_NAME,
|
|
306
|
-
this.toggleTheme
|
|
307
|
-
);
|
|
299
|
+
window.removeEventListener(EVENT_NAME, this.toggleTheme);
|
|
308
300
|
}
|
|
309
301
|
}
|
|
@@ -30,6 +30,10 @@ declare module globalThis {
|
|
|
30
30
|
export const DARK_MODE_THEMES = ["dark", "light"];
|
|
31
31
|
export const DARKMODE_TOGGLE_EVENT_NAME = "UPDATE_DARK_MODE";
|
|
32
32
|
|
|
33
|
+
export const isDarkModeEnabled = () => {
|
|
34
|
+
return process.env.DARK_MODE;
|
|
35
|
+
};
|
|
36
|
+
|
|
33
37
|
export const dispatchDarkModeToggleEvent = () => {
|
|
34
38
|
window.dispatchEvent(new Event(DARKMODE_TOGGLE_EVENT_NAME));
|
|
35
39
|
};
|
|
@@ -44,7 +48,10 @@ export const setLocalStorageDarkModeSetting = (theme: string) => {
|
|
|
44
48
|
|
|
45
49
|
export default class DarkModeManager extends LightningElement {
|
|
46
50
|
renderedCallback(): void {
|
|
47
|
-
if (
|
|
51
|
+
if (
|
|
52
|
+
isDarkModeEnabled() &&
|
|
53
|
+
!globalThis.singletonDarkModeManagerRendered
|
|
54
|
+
) {
|
|
48
55
|
const theme = getLocalStorageDarkModeSetting();
|
|
49
56
|
if (theme) {
|
|
50
57
|
if (DARK_MODE_THEMES.includes(theme)) {
|
|
@@ -60,9 +67,11 @@ export default class DarkModeManager extends LightningElement {
|
|
|
60
67
|
}
|
|
61
68
|
|
|
62
69
|
disconnectedCallback(): void {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
70
|
+
if (isDarkModeEnabled()) {
|
|
71
|
+
window.removeEventListener(
|
|
72
|
+
DARKMODE_TOGGLE_EVENT_NAME,
|
|
73
|
+
onDarkModeToggle
|
|
74
|
+
);
|
|
75
|
+
}
|
|
67
76
|
}
|
|
68
77
|
}
|
|
@@ -3,8 +3,7 @@ import optimizelySdk from "@optimizely/optimizely-sdk";
|
|
|
3
3
|
|
|
4
4
|
// This is needed to specify user context (such as logged in, admin, ...etc).
|
|
5
5
|
// leave this as hard-coded for now until we create audiences in Optimizely.
|
|
6
|
-
const userId = "
|
|
7
|
-
const LOCAL_ENVIRONMENT_SDK_KEY = "Nnshyv1nTg7DWexu5rEeT";
|
|
6
|
+
const userId = "user123";
|
|
8
7
|
|
|
9
8
|
export default class FeatureFlag extends LightningElement {
|
|
10
9
|
@api flag!: string;
|
|
@@ -16,19 +15,8 @@ export default class FeatureFlag extends LightningElement {
|
|
|
16
15
|
}
|
|
17
16
|
|
|
18
17
|
connectedCallback(): void {
|
|
19
|
-
const sdkKey = process.env.OPTIMIZELY_SDK_KEY;
|
|
20
|
-
const datafileAccessToken =
|
|
21
|
-
process.env.OPTIMIZELY_DATAFILE_ACCESS_TOKEN;
|
|
22
|
-
const datafileOptions =
|
|
23
|
-
sdkKey && datafileAccessToken
|
|
24
|
-
? {
|
|
25
|
-
urlTemplate: `https://config.optimizely.com/datafiles/auth/${sdkKey}.json`,
|
|
26
|
-
datafileAccessToken: datafileAccessToken
|
|
27
|
-
}
|
|
28
|
-
: undefined;
|
|
29
18
|
this.optimizelyInstance = optimizelySdk.createInstance({
|
|
30
|
-
sdkKey:
|
|
31
|
-
datafileOptions
|
|
19
|
+
sdkKey: process.env.OPTIMIZELY_SDK_KEY
|
|
32
20
|
});
|
|
33
21
|
}
|
|
34
22
|
|
|
@@ -13,14 +13,14 @@
|
|
|
13
13
|
<div>
|
|
14
14
|
<slot name="language-selector"></slot>
|
|
15
15
|
</div>
|
|
16
|
-
<
|
|
16
|
+
<template lwc:if={isDarkModeEnabled}>
|
|
17
17
|
<div
|
|
18
18
|
class="dark-mode-button"
|
|
19
19
|
onclick={onDarkModeButtonClick}
|
|
20
20
|
>
|
|
21
21
|
<div class="dark-mode-icon"></div>
|
|
22
22
|
</div>
|
|
23
|
-
</
|
|
23
|
+
</template>
|
|
24
24
|
</div>
|
|
25
25
|
</div>
|
|
26
26
|
<div class="container-layout">
|
|
@@ -5,7 +5,10 @@ import { toJson } from "dxUtils/normalizers";
|
|
|
5
5
|
import { track } from "dxUtils/analytics";
|
|
6
6
|
import svgs from "./svgs";
|
|
7
7
|
import ImageAndLabel from "dx/imageAndLabel";
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
dispatchDarkModeToggleEvent,
|
|
10
|
+
isDarkModeEnabled
|
|
11
|
+
} from "dx/darkModeManager";
|
|
9
12
|
|
|
10
13
|
export default class FeaturedContentHeader extends LightningElement {
|
|
11
14
|
@api label?: string | null = null;
|
|
@@ -90,6 +93,10 @@ export default class FeaturedContentHeader extends LightningElement {
|
|
|
90
93
|
);
|
|
91
94
|
}
|
|
92
95
|
|
|
96
|
+
private get isDarkModeEnabled() {
|
|
97
|
+
return isDarkModeEnabled();
|
|
98
|
+
}
|
|
99
|
+
|
|
93
100
|
private get hasPlainImage() {
|
|
94
101
|
return this.imgSrc && !this.href;
|
|
95
102
|
}
|
|
@@ -13,7 +13,7 @@ dx-icon {
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
.container {
|
|
16
|
-
background:
|
|
16
|
+
background: var(--dx-g-body-background-color);
|
|
17
17
|
box-shadow: var(--dx-g-box-shadow-sm);
|
|
18
18
|
border-radius: 16px;
|
|
19
19
|
padding: 36px;
|
|
@@ -37,10 +37,11 @@ dx-icon {
|
|
|
37
37
|
|
|
38
38
|
.host-bio > p {
|
|
39
39
|
margin: 16px 0;
|
|
40
|
+
color: var(--dx-g-blog-post-hr-color);
|
|
40
41
|
}
|
|
41
42
|
|
|
42
43
|
.dx-text-label-2 {
|
|
43
|
-
color: var(--dx-g-
|
|
44
|
+
color: var(--dx-g-text-label-color);
|
|
44
45
|
}
|
|
45
46
|
|
|
46
47
|
@media (min-width: 640px) {
|