@salesforcedevs/dx-components 1.3.6-alpha.0 → 1.3.7
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/LICENSE +12 -0
- package/package.json +4 -3
- package/src/modules/dx/featuredContentHeader/featuredContentHeader.css +18 -10
- package/src/modules/dx/featuredContentHeader/featuredContentHeader.html +109 -107
- package/src/modules/dx/featuredContentHeader/featuredContentHeader.ts +16 -8
- package/yarn-error.log +0 -18471
package/LICENSE
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Copyright (c) 2020, Salesforce.com, Inc.
|
|
2
|
+
All rights reserved.
|
|
3
|
+
|
|
4
|
+
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
|
5
|
+
|
|
6
|
+
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
|
7
|
+
|
|
8
|
+
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
|
9
|
+
|
|
10
|
+
* Neither the name of Salesforce.com nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
|
11
|
+
|
|
12
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforcedevs/dx-components",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.7",
|
|
4
4
|
"description": "DX Lightning web components",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"engines": {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@coveo/headless": "^1.32.0",
|
|
14
|
-
"@floating-ui/dom": "^
|
|
14
|
+
"@floating-ui/dom": "^0.5.3",
|
|
15
15
|
"@sfdocs-internal/wires": "^0.6.3",
|
|
16
16
|
"@vimeo/player": "^2.16.4",
|
|
17
17
|
"classnames": "^2.2.6",
|
|
@@ -35,5 +35,6 @@
|
|
|
35
35
|
"@types/uuid": "^8.3.4",
|
|
36
36
|
"@types/vimeo__player": "^2.16.2",
|
|
37
37
|
"eventsourcemock": "^2.0.0"
|
|
38
|
-
}
|
|
38
|
+
},
|
|
39
|
+
"gitHead": "0b86eff133bbe5624afe4442c3f358a920d9d4a6"
|
|
39
40
|
}
|
|
@@ -36,26 +36,34 @@
|
|
|
36
36
|
--swoop-height: var(--dx-c-featured-content-header-swoop-height);
|
|
37
37
|
--swoop-inset: calc(2.5 * var(--vertical-padding));
|
|
38
38
|
--swoop-z-index: 11;
|
|
39
|
+
--label-color: var(--dx-g-indigo-vibrant-40);
|
|
39
40
|
|
|
40
41
|
position: relative;
|
|
41
|
-
padding: var(--dx-c-featured-content-header-padding-vertical)
|
|
42
|
-
var(--dx-c-featured-content-header-padding-horizontal);
|
|
43
42
|
background: var(
|
|
44
43
|
--dx-c-featured-content-header-background-color,
|
|
45
44
|
var(--dx-g-indigo-vibrant-90)
|
|
46
45
|
);
|
|
47
46
|
}
|
|
48
47
|
|
|
48
|
+
.container-layout {
|
|
49
|
+
padding: var(--dx-c-featured-content-header-padding-vertical)
|
|
50
|
+
var(--dx-c-featured-content-header-padding-horizontal);
|
|
51
|
+
background-image: var(--background-image);
|
|
52
|
+
background-repeat: no-repeat;
|
|
53
|
+
background-position: top right;
|
|
54
|
+
background-size: contain;
|
|
55
|
+
}
|
|
56
|
+
|
|
49
57
|
/* LAYOUTS */
|
|
50
58
|
|
|
51
|
-
.img-placement_inline {
|
|
59
|
+
.img-placement_inline .container-layout {
|
|
52
60
|
display: grid;
|
|
53
61
|
grid-template-areas: "label label" "main image";
|
|
54
62
|
grid-template-columns: 50% auto;
|
|
55
63
|
grid-gap: 0 80px;
|
|
56
64
|
}
|
|
57
65
|
|
|
58
|
-
.img-placement_below {
|
|
66
|
+
.img-placement_below .container-layout {
|
|
59
67
|
--swoop-inset: calc(80px + 38vw);
|
|
60
68
|
|
|
61
69
|
margin-bottom: calc(var(--dx-c-bottom-image-height) / 2);
|
|
@@ -278,6 +286,7 @@
|
|
|
278
286
|
left: unset;
|
|
279
287
|
width: 126px;
|
|
280
288
|
height: 126px;
|
|
289
|
+
z-index: 1;
|
|
281
290
|
}
|
|
282
291
|
|
|
283
292
|
@media screen and (max-width: 1230px) {
|
|
@@ -356,7 +365,7 @@ a.image-container > img {
|
|
|
356
365
|
|
|
357
366
|
.label {
|
|
358
367
|
grid-area: label;
|
|
359
|
-
color: var(--dx-
|
|
368
|
+
color: var(--dx-c-featured-content-label-color, var(--label-color));
|
|
360
369
|
padding-bottom: var(--dx-g-spacing-lg);
|
|
361
370
|
}
|
|
362
371
|
|
|
@@ -380,7 +389,10 @@ dx-image-and-label {
|
|
|
380
389
|
}
|
|
381
390
|
|
|
382
391
|
/* DARK VARIANT */
|
|
392
|
+
|
|
383
393
|
.variant_dark {
|
|
394
|
+
--label-color: rgb(190, 199, 246);
|
|
395
|
+
|
|
384
396
|
background: var(
|
|
385
397
|
--dx-c-featured-content-header-background-color,
|
|
386
398
|
linear-gradient(-180deg, rgb(40, 23, 153) 0%, rgb(46, 43, 182) 100%)
|
|
@@ -391,10 +403,6 @@ dx-image-and-label {
|
|
|
391
403
|
--dx-c-image-and-label-text-color: white;
|
|
392
404
|
}
|
|
393
405
|
|
|
394
|
-
.variant_dark .label {
|
|
395
|
-
color: rgb(190, 199, 246);
|
|
396
|
-
}
|
|
397
|
-
|
|
398
406
|
.variant_dark .title,
|
|
399
407
|
.variant_dark .body {
|
|
400
408
|
color: white;
|
|
@@ -457,7 +465,7 @@ dx-image-and-label {
|
|
|
457
465
|
--swoop-inset: 64px;
|
|
458
466
|
}
|
|
459
467
|
|
|
460
|
-
.img-placement_inline {
|
|
468
|
+
.img-placement_inline .container-layout {
|
|
461
469
|
display: grid;
|
|
462
470
|
grid-template-areas: "label" "image" "main";
|
|
463
471
|
grid-template-columns: 100%;
|
|
@@ -1,117 +1,119 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class={classname} part="container">
|
|
3
|
-
<
|
|
4
|
-
<h1 if:true={label} class="label dx-text-heading-4">{label}</h1>
|
|
5
|
-
</template>
|
|
6
|
-
<template if:false={labelAsPrimaryHeading}>
|
|
7
|
-
<p if:true={label} class="label dx-text-heading-4">{label}</p>
|
|
8
|
-
</template>
|
|
9
|
-
<div class="featured-content-main-content">
|
|
10
|
-
<template if:false={labelAsPrimaryHeading}>
|
|
11
|
-
<h1 class="title dx-text-heading-2">
|
|
12
|
-
<a
|
|
13
|
-
class="title-link"
|
|
14
|
-
if:true={href}
|
|
15
|
-
href={href}
|
|
16
|
-
target={target}
|
|
17
|
-
onmouseenter={setLinkHovered}
|
|
18
|
-
onmouseleave={setLinkInactive}
|
|
19
|
-
>
|
|
20
|
-
{title}
|
|
21
|
-
</a>
|
|
22
|
-
<template if:false={href}>{title}</template>
|
|
23
|
-
</h1>
|
|
24
|
-
</template>
|
|
2
|
+
<div class={classname} part="container" style={style}>
|
|
3
|
+
<div class="container-layout">
|
|
25
4
|
<template if:true={labelAsPrimaryHeading}>
|
|
26
|
-
<
|
|
27
|
-
<a
|
|
28
|
-
class="title-link"
|
|
29
|
-
if:true={href}
|
|
30
|
-
href={href}
|
|
31
|
-
target={target}
|
|
32
|
-
onmouseenter={setLinkHovered}
|
|
33
|
-
onmouseleave={setLinkInactive}
|
|
34
|
-
>
|
|
35
|
-
{title}
|
|
36
|
-
</a>
|
|
37
|
-
<template if:false={href}>{title}</template>
|
|
38
|
-
</h2>
|
|
5
|
+
<h1 if:true={label} class="label dx-text-heading-4">{label}</h1>
|
|
39
6
|
</template>
|
|
40
|
-
<
|
|
41
|
-
<
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
7
|
+
<template if:false={labelAsPrimaryHeading}>
|
|
8
|
+
<p if:true={label} class="label dx-text-heading-4">{label}</p>
|
|
9
|
+
</template>
|
|
10
|
+
<div class="featured-content-main-content">
|
|
11
|
+
<template if:false={labelAsPrimaryHeading}>
|
|
12
|
+
<h1 class="title dx-text-heading-2">
|
|
13
|
+
<a
|
|
14
|
+
class="title-link"
|
|
15
|
+
if:true={href}
|
|
16
|
+
href={href}
|
|
17
|
+
target={target}
|
|
18
|
+
onmouseenter={setLinkHovered}
|
|
19
|
+
onmouseleave={setLinkInactive}
|
|
20
|
+
>
|
|
21
|
+
{title}
|
|
22
|
+
</a>
|
|
23
|
+
<template if:false={href}>{title}</template>
|
|
24
|
+
</h1>
|
|
25
|
+
</template>
|
|
26
|
+
<template if:true={labelAsPrimaryHeading}>
|
|
27
|
+
<h2 class="title dx-text-heading-2">
|
|
28
|
+
<a
|
|
29
|
+
class="title-link"
|
|
30
|
+
if:true={href}
|
|
31
|
+
href={href}
|
|
32
|
+
target={target}
|
|
33
|
+
onmouseenter={setLinkHovered}
|
|
34
|
+
onmouseleave={setLinkInactive}
|
|
35
|
+
>
|
|
36
|
+
{title}
|
|
37
|
+
</a>
|
|
38
|
+
<template if:false={href}>{title}</template>
|
|
39
|
+
</h2>
|
|
49
40
|
</template>
|
|
41
|
+
<div class="authors" if:true={authors}>
|
|
42
|
+
<template for:each={authors} for:item="author">
|
|
43
|
+
<dx-image-and-label
|
|
44
|
+
key={author.key}
|
|
45
|
+
img-src={author.imgSrc}
|
|
46
|
+
img-size={author.imgSize}
|
|
47
|
+
label={author.name}
|
|
48
|
+
href={author.href}
|
|
49
|
+
></dx-image-and-label>
|
|
50
|
+
</template>
|
|
51
|
+
</div>
|
|
52
|
+
<span class="body dx-text-body-1">{body}</span>
|
|
53
|
+
<div class="slot-container">
|
|
54
|
+
<slot onslotchange={onSlotChange}></slot>
|
|
55
|
+
</div>
|
|
56
|
+
<div
|
|
57
|
+
class={backgroundImageClass}
|
|
58
|
+
if:true={hasBackgroundImage}
|
|
59
|
+
lwc:dom="manual"
|
|
60
|
+
></div>
|
|
50
61
|
</div>
|
|
51
|
-
<
|
|
52
|
-
|
|
53
|
-
<slot onslotchange={onSlotChange}></slot>
|
|
62
|
+
<div if:true={hasPlainImage} class="image-container">
|
|
63
|
+
<img src={imgSrc} alt={imgAlt} />
|
|
54
64
|
</div>
|
|
55
|
-
<
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
<img src={imgSrc} alt={imgAlt} />
|
|
63
|
-
</div>
|
|
64
|
-
<a
|
|
65
|
-
if:true={hasLinkedImage}
|
|
66
|
-
href={href}
|
|
67
|
-
target={target}
|
|
68
|
-
class="image-container"
|
|
69
|
-
onmouseenter={setLinkHovered}
|
|
70
|
-
onmouseleave={setLinkInactive}
|
|
71
|
-
>
|
|
72
|
-
<img src={imgSrc} alt={imgAlt} />
|
|
73
|
-
</a>
|
|
74
|
-
<template if:false={noSwoop}>
|
|
75
|
-
<svg
|
|
76
|
-
class="swoop-silhouette"
|
|
77
|
-
width="1920px"
|
|
78
|
-
height="331px"
|
|
79
|
-
viewBox="0 0 1920 331"
|
|
80
|
-
version="1.1"
|
|
81
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
82
|
-
preserveAspectRatio="none"
|
|
65
|
+
<a
|
|
66
|
+
if:true={hasLinkedImage}
|
|
67
|
+
href={href}
|
|
68
|
+
target={target}
|
|
69
|
+
class="image-container"
|
|
70
|
+
onmouseenter={setLinkHovered}
|
|
71
|
+
onmouseleave={setLinkInactive}
|
|
83
72
|
>
|
|
84
|
-
<
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
fill-rule="evenodd"
|
|
73
|
+
<img src={imgSrc} alt={imgAlt} />
|
|
74
|
+
</a>
|
|
75
|
+
<template if:false={noSwoop}>
|
|
76
|
+
<svg
|
|
77
|
+
class="swoop-silhouette"
|
|
78
|
+
width="1920px"
|
|
79
|
+
height="331px"
|
|
80
|
+
viewBox="0 0 1920 331"
|
|
81
|
+
version="1.1"
|
|
82
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
83
|
+
preserveAspectRatio="none"
|
|
96
84
|
>
|
|
97
|
-
<
|
|
98
|
-
<
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
85
|
+
<defs>
|
|
86
|
+
<path
|
|
87
|
+
d="M1920,330 L76.7313881,330.008182 C51.2800917,330.255837 25.7029624,330.372286 0,330.357528 L0,330 L76.7313881,330.008182 C789.975765,323.067922 1404.39864,213.086385 1920,0.0635708029 L1920,0.0635708029 L1920,330 Z"
|
|
88
|
+
id="path-1"
|
|
89
|
+
></path>
|
|
90
|
+
</defs>
|
|
91
|
+
<g
|
|
92
|
+
id="Documentation-landing-page"
|
|
93
|
+
stroke="none"
|
|
94
|
+
stroke-width="1"
|
|
95
|
+
fill="none"
|
|
96
|
+
fill-rule="evenodd"
|
|
97
|
+
>
|
|
98
|
+
<mask id="mask-2" fill="white">
|
|
99
|
+
<use xlink:href="#path-1"></use>
|
|
100
|
+
</mask>
|
|
101
|
+
<use
|
|
102
|
+
id="Combined-Shape"
|
|
103
|
+
fill="#FFFFFF"
|
|
104
|
+
xlink:href="#path-1"
|
|
105
|
+
></use>
|
|
106
|
+
</g>
|
|
107
|
+
</svg>
|
|
108
|
+
</template>
|
|
109
|
+
</div>
|
|
110
|
+
<div class="blue-circle" if:true={hasIcon}>
|
|
111
|
+
<dx-icon
|
|
112
|
+
class="icon"
|
|
113
|
+
size="2xlarge"
|
|
114
|
+
symbol={icon}
|
|
115
|
+
sprite="salesforcebrand"
|
|
116
|
+
></dx-icon>
|
|
117
|
+
</div>
|
|
116
118
|
</div>
|
|
117
119
|
</template>
|
|
@@ -17,7 +17,8 @@ export default class FeaturedContentHeader extends LightningElement {
|
|
|
17
17
|
@api href?: string;
|
|
18
18
|
@api target?: string | null = null;
|
|
19
19
|
@api title!: string;
|
|
20
|
-
@api backgroundImg?:
|
|
20
|
+
@api backgroundImg?: string;
|
|
21
|
+
@api backgroundImgId?:
|
|
21
22
|
| "trees"
|
|
22
23
|
| "codey"
|
|
23
24
|
| "blog"
|
|
@@ -58,7 +59,14 @@ export default class FeaturedContentHeader extends LightningElement {
|
|
|
58
59
|
this.dark && "variant_dark",
|
|
59
60
|
this.isLinkHovered && "link-hovered",
|
|
60
61
|
!this.isSlotEmpty && "has-slotted",
|
|
61
|
-
this.
|
|
62
|
+
this.backgroundImgId && `custom-bg-${this.backgroundImgId}`
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
private get style() {
|
|
67
|
+
return cx(
|
|
68
|
+
this.backgroundImg &&
|
|
69
|
+
`--background-image: url(${this.backgroundImg});`
|
|
62
70
|
);
|
|
63
71
|
}
|
|
64
72
|
|
|
@@ -71,17 +79,17 @@ export default class FeaturedContentHeader extends LightningElement {
|
|
|
71
79
|
}
|
|
72
80
|
|
|
73
81
|
private get hasBackgroundImage() {
|
|
74
|
-
return this.
|
|
82
|
+
return this.backgroundImgId !== null;
|
|
75
83
|
}
|
|
76
84
|
|
|
77
85
|
private get hasIcon(): boolean {
|
|
78
|
-
return this.icon !== "" && this.
|
|
86
|
+
return this.icon !== "" && this.backgroundImgId === "big-moon";
|
|
79
87
|
}
|
|
80
88
|
|
|
81
89
|
private get backgroundImageClass() {
|
|
82
90
|
return cx(
|
|
83
91
|
"bg-image-container",
|
|
84
|
-
this.
|
|
92
|
+
this.backgroundImgId && `bg-${this.backgroundImgId}`
|
|
85
93
|
);
|
|
86
94
|
}
|
|
87
95
|
|
|
@@ -100,13 +108,13 @@ export default class FeaturedContentHeader extends LightningElement {
|
|
|
100
108
|
renderedCallback(): void {
|
|
101
109
|
// Setting the svgs with innerHTML prevents their IDs from being rewritten
|
|
102
110
|
// which is necessary to preserve the svg masking and other effects
|
|
103
|
-
if (this.
|
|
111
|
+
if (this.backgroundImgId && svgs[this.backgroundImgId]) {
|
|
104
112
|
const bgSvg = this.template.querySelector(".bg-image-container");
|
|
105
113
|
if (bgSvg) {
|
|
106
114
|
// eslint-disable-next-line @lwc/lwc/no-inner-html
|
|
107
115
|
bgSvg.innerHTML = `
|
|
108
|
-
${svgs[this.
|
|
109
|
-
${svgs[this.
|
|
116
|
+
${svgs[this.backgroundImgId].desktop}
|
|
117
|
+
${svgs[this.backgroundImgId].mobile}
|
|
110
118
|
`;
|
|
111
119
|
}
|
|
112
120
|
}
|