@salesforcedevs/arch-components 1.20.17-alpha13 → 1.20.17-alpha15
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 +1 -1
- package/src/assets/css/arch-variables.css +512 -0
- package/src/modules/arch/badge/badge.css +22 -0
- package/src/modules/arch/badge/badge.html +5 -0
- package/src/modules/arch/badge/badge.ts +9 -0
- package/src/modules/arch/button/button.css +1 -0
- package/src/modules/arch/button/button.html +20 -0
- package/src/modules/arch/button/button.ts +67 -0
- package/src/modules/arch/buttonLink/buttonLink.css +1 -0
- package/src/modules/arch/buttonLink/buttonLink.html +19 -0
- package/src/modules/arch/buttonLink/buttonLink.stories.js +24 -0
- package/src/modules/arch/buttonLink/buttonLink.ts +8 -0
- package/src/modules/arch/buttonStyles/buttonStyles.css +220 -0
- package/src/modules/arch/card/card.css +128 -0
- package/src/modules/arch/card/card.html +85 -0
- package/src/modules/arch/card/card.ts +277 -0
- package/src/modules/arch/cardBase/cardBase.css +11 -0
- package/src/modules/arch/cardBase/cardBase.html +2 -0
- package/src/modules/arch/cardGridA/cardGridA.css +11 -0
- package/src/modules/arch/cardGridA/cardGridA.html +21 -0
- package/src/modules/arch/cardGridA/cardGridA.stories.js +107 -0
- package/src/modules/arch/cardGridA/cardGridA.ts +24 -0
- package/src/modules/arch/cardGridC/cardGridC.css +24 -0
- package/src/modules/arch/cardGridC/cardGridC.html +22 -0
- package/src/modules/arch/cardGridC/cardGridC.stories.js +42 -0
- package/src/modules/arch/cardGridC/cardGridC.ts +11 -0
- package/src/modules/arch/cardGridD/cardGridD.css +17 -0
- package/src/modules/arch/cardGridD/cardGridD.html +20 -0
- package/src/modules/arch/cardGridD/cardGridD.stories.js +34 -0
- package/src/modules/arch/cardGridD/cardGridD.ts +7 -0
- package/src/modules/arch/cardNew/cardNew.css +31 -0
- package/src/modules/arch/cardNew/cardNew.html +32 -0
- package/src/modules/arch/cardNew/cardNew.ts +66 -0
- package/src/modules/arch/children/children.html +2 -0
- package/src/modules/arch/children/children.ts +31 -0
- package/src/modules/arch/color/color.ts +59 -0
- package/src/modules/arch/content/__fixtures__/index.ts +884 -0
- package/src/modules/arch/content/content.css +643 -0
- package/src/modules/arch/content/content.html +65 -0
- package/src/modules/arch/content/content.stories.js +14 -0
- package/src/modules/arch/content/content.ts +169 -0
- package/src/modules/arch/contentIcon/contentIcon.css +48 -0
- package/src/modules/arch/contentIcon/contentIcon.html +15 -0
- package/src/modules/arch/contentIcon/contentIcon.stories.js +110 -0
- package/src/modules/arch/contentIcon/contentIcon.ts +68 -0
- package/src/modules/arch/context/context.ts +21 -19
- package/src/modules/arch/contextAdapter/constants.ts +1 -0
- package/src/modules/arch/contextAdapter/contextAdapter.html +1 -0
- package/src/modules/arch/contextAdapter/contextAdapter.ts +54 -0
- package/src/modules/arch/debounce/debounce.ts +32 -0
- package/src/modules/arch/dialog/dialog.ts +154 -0
- package/src/modules/arch/dialogStyles/dialogStyles.css +90 -0
- package/src/modules/arch/effectAdapter/effectAdapter.ts +19 -9
- package/src/modules/arch/explorer/explorer.css +301 -0
- package/src/modules/arch/explorer/explorer.html +418 -0
- package/src/modules/arch/explorer/explorer.ts +718 -0
- package/src/modules/arch/explorer/types.d.ts +60 -0
- package/src/modules/arch/fetch/fetch.ts +55 -0
- package/src/modules/arch/footerMfe/footerMfe.html +3 -0
- package/src/modules/arch/footerMfe/footerMfe.ts +19 -0
- package/src/modules/arch/gallery/gallery.css +365 -0
- package/src/modules/arch/gallery/gallery.html +71 -0
- package/src/modules/arch/gallery/gallery.ts +366 -0
- package/src/modules/arch/gallery/types.d.ts +35 -0
- package/src/modules/arch/heading/heading.css +1 -0
- package/src/modules/arch/heading/heading.html +9 -0
- package/src/modules/arch/heading/heading.ts +36 -0
- package/src/modules/arch/helpers/helpers.ts +141 -0
- package/src/modules/arch/heroA/heroA.css +116 -0
- package/src/modules/arch/heroA/heroA.html +28 -0
- package/src/modules/arch/heroA/heroA.stories.js +49 -0
- package/src/modules/arch/heroA/heroA.ts +53 -0
- package/src/modules/arch/heroB/heroB.css +79 -0
- package/src/modules/arch/heroB/heroB.html +27 -0
- package/src/modules/arch/heroB/heroB.stories.js +44 -0
- package/src/modules/arch/heroB/heroB.ts +26 -0
- package/src/modules/arch/i18n/i18n.ts +78 -0
- package/src/modules/arch/icon/icon.css +28 -0
- package/src/modules/arch/icon/icon.html +17 -0
- package/src/modules/arch/icon/icon.stories.js +18 -0
- package/src/modules/arch/icon/icon.ts +92 -0
- package/src/modules/arch/instrumentation/instrumentation.css +1 -0
- package/src/modules/arch/instrumentation/instrumentation.html +1 -0
- package/src/modules/arch/instrumentation/instrumentation.ts +113 -0
- package/src/modules/arch/labels/helpers.ts +25 -0
- package/src/modules/arch/labels/pointHelpers.ts +47 -0
- package/src/modules/arch/labels/timeHelpers.ts +182 -0
- package/src/modules/arch/labels/types.d.ts +5 -0
- package/src/modules/arch/logger/logger.ts +33 -0
- package/src/modules/arch/menu/menu.ts +260 -0
- package/src/modules/arch/overflow/overflow.ts +71 -0
- package/src/modules/arch/page/page.css +3 -0
- package/src/modules/arch/page/page.html +3 -0
- package/src/modules/arch/page/page.stories.js +10 -0
- package/src/modules/arch/page/page.ts +3 -0
- package/src/modules/arch/pageHeaderA/pageHeaderA.css +82 -0
- package/src/modules/arch/pageHeaderA/pageHeaderA.html +24 -0
- package/src/modules/arch/pageHeaderA/pageHeaderA.stories.js +18 -0
- package/src/modules/arch/pageHeaderA/pageHeaderA.ts +51 -0
- package/src/modules/arch/pill/pill.css +70 -0
- package/src/modules/arch/pill/pill.html +17 -0
- package/src/modules/arch/pill/pill.ts +34 -0
- package/src/modules/arch/polling-request.ts +97 -0
- package/src/modules/arch/reflectedElement/reflectedElement.html +2 -0
- package/src/modules/arch/reflectedElement/reflectedElement.ts +5 -3
- package/src/modules/arch/reset/reset.css +39 -0
- package/src/modules/arch/searchList/searchList.css +120 -0
- package/src/modules/arch/searchList/searchList.html +46 -0
- package/src/modules/arch/searchList/searchList.ts +53 -0
- package/src/modules/arch/sectionA/sectionA.css +64 -0
- package/src/modules/arch/sectionA/sectionA.html +21 -0
- package/src/modules/arch/sectionA/sectionA.stories.js +18 -0
- package/src/modules/arch/sectionA/sectionA.ts +27 -0
- package/src/modules/arch/select/select.css +40 -0
- package/src/modules/arch/select/select.html +24 -0
- package/src/modules/arch/select/select.ts +64 -0
- package/src/modules/arch/socialShare/socialShare.css +50 -0
- package/src/modules/arch/socialShare/socialShare.html +56 -0
- package/src/modules/arch/socialShare/socialShare.ts +29 -0
- package/src/modules/arch/spinner/spinner.css +195 -0
- package/src/modules/arch/spinner/spinner.html +9 -0
- package/src/modules/arch/spinner/spinner.ts +15 -0
- package/src/modules/arch/styles/styles.css +24 -0
- package/src/modules/arch/summary/summary.css +134 -0
- package/src/modules/arch/summary/summary.html +71 -0
- package/src/modules/arch/summary/summary.stories.js +148 -0
- package/src/modules/arch/summary/summary.ts +96 -0
- package/src/modules/arch/tab/tab.css +3 -0
- package/src/modules/arch/tab/tab.html +5 -0
- package/src/modules/arch/tab/tab.ts +46 -0
- package/src/modules/arch/tabset/tabset.css +112 -0
- package/src/modules/arch/tabset/tabset.html +62 -0
- package/src/modules/arch/tabset/tabset.ts +244 -0
- package/src/modules/arch/testutils.ts +118 -0
- package/src/modules/arch/threeCardGrid/threeCardGrid.css +6 -0
- package/src/modules/arch/threeCardGrid/threeCardGrid.html +5 -0
- package/src/modules/arch/threeCardGrid/threeCardGrid.ts +3 -0
- package/src/modules/arch/track/track.ts +23 -0
- package/src/modules/arch/trailhead.ts +120 -0
- package/src/modules/arch/types.d.ts +1 -0
- package/src/modules/arch/useEffectAttr.ts +16 -0
- package/src/modules/arch/utils/utils.ts +20 -0
- package/src/modules/arch/withState.ts +21 -0
- package/src/modules/arch/xsfMfeEvents/xsfMfeEvents.html +1 -0
- package/src/modules/arch/xsfMfeEvents/xsfMfeEvents.ts +47 -0
- package/src/modules/arch/slot/slot.ts +0 -20
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ul>
|
|
3
|
+
<template for:each={items} for:item="item">
|
|
4
|
+
<li key={item.ctaHref}>
|
|
5
|
+
<arch-card
|
|
6
|
+
cta-href={item.ctaHref}
|
|
7
|
+
cta-target={item.ctaTarget}
|
|
8
|
+
cta-title={item.ctaTitle}
|
|
9
|
+
img-aspect={imgAspect}
|
|
10
|
+
img-src={item.imgSrc}
|
|
11
|
+
img-variant={imgVariant}
|
|
12
|
+
description={item.description}
|
|
13
|
+
title={item.title}
|
|
14
|
+
pretitle={item.pretitle}
|
|
15
|
+
pretitle-href={item.pretitleHref}
|
|
16
|
+
pretitle-href-text={item.pretitleHrefText}
|
|
17
|
+
></arch-card>
|
|
18
|
+
</li>
|
|
19
|
+
</template>
|
|
20
|
+
</ul>
|
|
21
|
+
</template>
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { html } from 'lit-html';
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
title: 'arch/arch-card-grid-a',
|
|
5
|
+
parameters: {
|
|
6
|
+
chromatic: {
|
|
7
|
+
viewports: [450, 800, 1199]
|
|
8
|
+
},
|
|
9
|
+
modules: ['/modules/arch-card-grid-a.js']
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export const Base = () => html`
|
|
14
|
+
<arch-card-grid-a img-aspect="60%">
|
|
15
|
+
<arch-card
|
|
16
|
+
cta-href="/"
|
|
17
|
+
cta-title="Read More"
|
|
18
|
+
cta-target="_blank"
|
|
19
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
20
|
+
title="Hello A"
|
|
21
|
+
></arch-card>
|
|
22
|
+
<arch-card
|
|
23
|
+
cta-href="/"
|
|
24
|
+
cta-title="Read More"
|
|
25
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
26
|
+
title="Hello B"
|
|
27
|
+
></arch-card>
|
|
28
|
+
<arch-card
|
|
29
|
+
cta-href="/"
|
|
30
|
+
cta-title="Read More"
|
|
31
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
32
|
+
title="Hello C"
|
|
33
|
+
></arch-card>
|
|
34
|
+
<arch-card
|
|
35
|
+
cta-href="/"
|
|
36
|
+
cta-title="Read More"
|
|
37
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
38
|
+
title="Hello D"
|
|
39
|
+
></arch-card>
|
|
40
|
+
<arch-card
|
|
41
|
+
cta-href="/"
|
|
42
|
+
cta-title="Read More"
|
|
43
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
44
|
+
title="Hello E"
|
|
45
|
+
></arch-card>
|
|
46
|
+
</arch-card-grid-a>
|
|
47
|
+
`;
|
|
48
|
+
|
|
49
|
+
export const ImageFull = () => html`
|
|
50
|
+
<arch-card-grid-a img-aspect="60%" img-type="full">
|
|
51
|
+
<arch-card
|
|
52
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
53
|
+
img-src="/images/card-a.png"
|
|
54
|
+
title="Hello A"
|
|
55
|
+
></arch-card>
|
|
56
|
+
<arch-card
|
|
57
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
58
|
+
img-src="/images/card-a.png"
|
|
59
|
+
title="Hello B"
|
|
60
|
+
></arch-card>
|
|
61
|
+
<arch-card
|
|
62
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
63
|
+
img-src="/images/card-a.png"
|
|
64
|
+
title="Hello C"
|
|
65
|
+
></arch-card>
|
|
66
|
+
<arch-card
|
|
67
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
68
|
+
img-src="/images/card-a.png"
|
|
69
|
+
title="Hello D"
|
|
70
|
+
></arch-card>
|
|
71
|
+
<arch-card
|
|
72
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
73
|
+
img-src="/images/card-a.png"
|
|
74
|
+
title="Hello E"
|
|
75
|
+
></arch-card>
|
|
76
|
+
</arch-card-grid-a>
|
|
77
|
+
`;
|
|
78
|
+
|
|
79
|
+
export const ImageLeft = () => html`
|
|
80
|
+
<arch-card-grid-a img-aspect="60%" img-type="left">
|
|
81
|
+
<arch-card
|
|
82
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
83
|
+
img-src="/images/card-a.png"
|
|
84
|
+
title="Hello A"
|
|
85
|
+
></arch-card>
|
|
86
|
+
<arch-card
|
|
87
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
88
|
+
img-src="/images/card-a.png"
|
|
89
|
+
title="Hello B"
|
|
90
|
+
></arch-card>
|
|
91
|
+
<arch-card
|
|
92
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
93
|
+
img-src="/images/card-a.png"
|
|
94
|
+
title="Hello C"
|
|
95
|
+
></arch-card>
|
|
96
|
+
<arch-card
|
|
97
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
98
|
+
img-src="/images/card-a.png"
|
|
99
|
+
title="Hello D"
|
|
100
|
+
></arch-card>
|
|
101
|
+
<arch-card
|
|
102
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
103
|
+
img-src="/images/card-a.png"
|
|
104
|
+
title="Hello E"
|
|
105
|
+
></arch-card>
|
|
106
|
+
</arch-card-grid-a>
|
|
107
|
+
`;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { api } from "lwc";
|
|
2
|
+
|
|
3
|
+
import { Card, extractCardAttributes } from "arch/card";
|
|
4
|
+
|
|
5
|
+
import { ChildrenElement } from "arch/children";
|
|
6
|
+
|
|
7
|
+
export default class extends ChildrenElement<Card> {
|
|
8
|
+
@api items: Card[] = [];
|
|
9
|
+
@api imgAspect: string | null = null;
|
|
10
|
+
@api imgType: "full" | "left" | null = null;
|
|
11
|
+
|
|
12
|
+
private get imgVariant() {
|
|
13
|
+
switch (this.imgType) {
|
|
14
|
+
case "full":
|
|
15
|
+
return "top-cover";
|
|
16
|
+
case "left":
|
|
17
|
+
return "top-small";
|
|
18
|
+
default:
|
|
19
|
+
return "";
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
extractor = extractCardAttributes;
|
|
24
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
@import "arch/reset";
|
|
2
|
+
|
|
3
|
+
ul {
|
|
4
|
+
--spacing: var(--arch-spacing-6);
|
|
5
|
+
|
|
6
|
+
justify-content: center;
|
|
7
|
+
display: grid;
|
|
8
|
+
grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
|
|
9
|
+
grid-gap: var(--spacing);
|
|
10
|
+
max-width: 1280px;
|
|
11
|
+
margin: auto;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
@media screen and (max-width: 800px) {
|
|
15
|
+
ul {
|
|
16
|
+
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@media screen and (max-width: 400px) {
|
|
21
|
+
ul {
|
|
22
|
+
grid-template-columns: 1fr;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ul>
|
|
3
|
+
<template for:each={items} for:item="item">
|
|
4
|
+
<li key={item.title}>
|
|
5
|
+
<arch-card
|
|
6
|
+
class="card"
|
|
7
|
+
cta-href={item.ctaHref}
|
|
8
|
+
cta-target={item.ctaTarget}
|
|
9
|
+
cta-title={item.ctaTitle}
|
|
10
|
+
img-aspect={imgAspect}
|
|
11
|
+
img-src={item.imgSrc}
|
|
12
|
+
img-variant="top-cover"
|
|
13
|
+
description={item.description}
|
|
14
|
+
pretitle={item.pretitle}
|
|
15
|
+
pretitle-href={item.pretitleHref}
|
|
16
|
+
pretitle-href-text={item.pretitleHrefText}
|
|
17
|
+
title={item.title}
|
|
18
|
+
></arch-card>
|
|
19
|
+
</li>
|
|
20
|
+
</template>
|
|
21
|
+
</ul>
|
|
22
|
+
</template>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { html } from 'lit-html';
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
title: 'arch/arch-card-grid-c',
|
|
5
|
+
parameters: {
|
|
6
|
+
chromatic: {
|
|
7
|
+
viewports: [380, 800, 1199]
|
|
8
|
+
},
|
|
9
|
+
modules: ['/modules/arch-card-grid-c.js']
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export const Base = () => html`
|
|
14
|
+
<arch-card-grid-c img-aspect="60%">
|
|
15
|
+
<arch-card
|
|
16
|
+
cta-href="/posts/1"
|
|
17
|
+
cta-title="Read More"
|
|
18
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
19
|
+
img-src="/images/card-a.png"
|
|
20
|
+
pretitle="Blog by"
|
|
21
|
+
pretitle-href="/user/amylee"
|
|
22
|
+
pretitle-href-text="Amy Lee"
|
|
23
|
+
title="Inspire Your Peers Careers by Sharing Your #AwesomeAdmin Advice"
|
|
24
|
+
></arch-card>
|
|
25
|
+
<arch-card
|
|
26
|
+
cta-href="/posts/1"
|
|
27
|
+
cta-title="Read More"
|
|
28
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
29
|
+
img-src="/images/card-a.png"
|
|
30
|
+
pretitle="Blog by Amy Lee"
|
|
31
|
+
title="Hello B"
|
|
32
|
+
></arch-card>
|
|
33
|
+
<arch-card
|
|
34
|
+
cta-href="/posts/1"
|
|
35
|
+
cta-title="Read More"
|
|
36
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
37
|
+
img-src="/images/card-a.png"
|
|
38
|
+
pretitle="Blog by Amy Lee"
|
|
39
|
+
title="Hello C"
|
|
40
|
+
></arch-card>
|
|
41
|
+
</arch-card-grid-c>
|
|
42
|
+
`;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { api } from 'lwc';
|
|
2
|
+
|
|
3
|
+
import { Card, extractCardAttributes } from 'arch/card';
|
|
4
|
+
|
|
5
|
+
import { ChildrenElement } from 'arch/children';
|
|
6
|
+
|
|
7
|
+
export default class extends ChildrenElement<Card> {
|
|
8
|
+
@api imgAspect: string | null = null;
|
|
9
|
+
|
|
10
|
+
extractor = extractCardAttributes;
|
|
11
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
@import "arch/reset";
|
|
2
|
+
|
|
3
|
+
ul {
|
|
4
|
+
--spacing: var(--arch-spacing-6);
|
|
5
|
+
|
|
6
|
+
justify-content: center;
|
|
7
|
+
display: grid;
|
|
8
|
+
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
|
9
|
+
grid-gap: var(--spacing);
|
|
10
|
+
max-width: 1280px;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@media screen and (max-width: 800px) {
|
|
14
|
+
ul {
|
|
15
|
+
grid-template-columns: 1fr;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ul>
|
|
3
|
+
<template for:each={items} for:item="item">
|
|
4
|
+
<li key={item.title}>
|
|
5
|
+
<arch-card
|
|
6
|
+
cta-href={item.ctaHref}
|
|
7
|
+
cta-target={item.ctaTarget}
|
|
8
|
+
cta-title={item.ctaTitle}
|
|
9
|
+
img-src={item.imgSrc}
|
|
10
|
+
img-variant="right-cover"
|
|
11
|
+
description={item.description}
|
|
12
|
+
pretitle={item.pretitle}
|
|
13
|
+
pretitle-href={item.pretitleHref}
|
|
14
|
+
pretitle-href-text={item.pretitleHrefText}
|
|
15
|
+
title={item.title}
|
|
16
|
+
></arch-card>
|
|
17
|
+
</li>
|
|
18
|
+
</template>
|
|
19
|
+
</ul>
|
|
20
|
+
</template>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { html } from 'lit-html';
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
title: 'arch/arch-card-grid-d',
|
|
5
|
+
parameters: {
|
|
6
|
+
chromatic: {
|
|
7
|
+
viewports: [400, 800, 1199]
|
|
8
|
+
},
|
|
9
|
+
modules: ['/modules/arch-card-grid-d.js']
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export const Base = () => html`
|
|
14
|
+
<arch-card-grid-d>
|
|
15
|
+
<arch-card
|
|
16
|
+
cta-href="/"
|
|
17
|
+
cta-title="Start"
|
|
18
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eget velit placerat, scelerisque libero sed, mattis orci."
|
|
19
|
+
img-src="/images/card-a.png"
|
|
20
|
+
pretitle="Learning with"
|
|
21
|
+
pretitle-href="/users/astro"
|
|
22
|
+
pretitle-href-text="Astro"
|
|
23
|
+
title="Hello A"
|
|
24
|
+
></arch-card>
|
|
25
|
+
<arch-card
|
|
26
|
+
cta-href="/"
|
|
27
|
+
cta-title="Start"
|
|
28
|
+
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit."
|
|
29
|
+
img-src="/images/card-a.png"
|
|
30
|
+
pretitle="Hello"
|
|
31
|
+
title="Hello B"
|
|
32
|
+
></arch-card>
|
|
33
|
+
</arch-card-grid-d>
|
|
34
|
+
`;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
@import 'dxHelpers/text';
|
|
2
|
+
@import 'dxHelpers/card';
|
|
3
|
+
|
|
4
|
+
dx-card-title::part(title) {
|
|
5
|
+
margin-bottom: var(--arch-spacing-4);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.body {
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-direction: column;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/* The bottom item gets arch-spacing-10 margin; if the pill is at the bottom, that's the pill; if the pill is at the top, that's the subtitle */
|
|
14
|
+
.body.pill-bottom .pill,
|
|
15
|
+
.body.pill-top .subtitle {
|
|
16
|
+
margin-bottom: var(--arch-spacing-10);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.body.pill-top .pill,
|
|
20
|
+
.body.pill-bottom .subtitle {
|
|
21
|
+
margin-bottom: var(--arch-spacing-4);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.body.pill-bottom .pill {
|
|
25
|
+
order: 1; /* Setting an explicit order makes the pill appear last, since all other elements have default order 0 */
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.cta {
|
|
29
|
+
position: absolute;
|
|
30
|
+
bottom: var(--arch-spacing-4);
|
|
31
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<dx-card-content
|
|
3
|
+
borderless="false"
|
|
4
|
+
fix-orientation="true"
|
|
5
|
+
href={ctaHref}
|
|
6
|
+
href-click={handleImageClick}
|
|
7
|
+
img-link-aria-label={imgLinkAriaLabel}
|
|
8
|
+
img-src={imgSrc}
|
|
9
|
+
>
|
|
10
|
+
<div class={className} slot="body" title={header}>
|
|
11
|
+
<arch-badge class="pill" lwc:if={pill} color="blue">
|
|
12
|
+
{pill}
|
|
13
|
+
</arch-badge>
|
|
14
|
+
<div lwc:if={label} class="dx-text-label-3 card-label">{label}</div>
|
|
15
|
+
<dx-card-title
|
|
16
|
+
lwc:if={displayHeader}
|
|
17
|
+
header={header}
|
|
18
|
+
href={ctaHref}
|
|
19
|
+
onclick={handleLinkClick}
|
|
20
|
+
></dx-card-title>
|
|
21
|
+
<div class="subtitle">{subtitle}</div>
|
|
22
|
+
<dx-button
|
|
23
|
+
class="cta"
|
|
24
|
+
variant="inline"
|
|
25
|
+
href={ctaHref}
|
|
26
|
+
onclick={handleLinkClick}
|
|
27
|
+
>
|
|
28
|
+
{ctaTitle}
|
|
29
|
+
</dx-button>
|
|
30
|
+
</div>
|
|
31
|
+
</dx-card-content>
|
|
32
|
+
</template>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { api, LightningElement } from "lwc";
|
|
2
|
+
import { track } from 'arch/instrumentation';
|
|
3
|
+
|
|
4
|
+
export type PillPosition = 'top' | 'bottom';
|
|
5
|
+
|
|
6
|
+
export default class extends LightningElement {
|
|
7
|
+
@api pill: string = '';
|
|
8
|
+
@api label: string = '';
|
|
9
|
+
@api header: string = '';
|
|
10
|
+
@api subtitle: string = '';
|
|
11
|
+
@api ctaHref: string = '';
|
|
12
|
+
@api ctaTitle: string = '';
|
|
13
|
+
@api imgSrc: string = '';
|
|
14
|
+
@api imgLinkAriaLabel: string = '';
|
|
15
|
+
@api noDisplayedHeader: boolean = false;
|
|
16
|
+
|
|
17
|
+
@api get pillPosition() {
|
|
18
|
+
return this._pillPosition;
|
|
19
|
+
}
|
|
20
|
+
set pillPosition(value: PillPosition) {
|
|
21
|
+
this._pillPosition = value || 'top';
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
private _pillPosition: PillPosition = 'top';
|
|
25
|
+
|
|
26
|
+
private get className() {
|
|
27
|
+
return `body pill-${this.pillPosition}`;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
private get displayHeader() {
|
|
31
|
+
return this.header && !this.noDisplayedHeader;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
private handleImageClick(e: MouseEvent) {
|
|
35
|
+
// FIXME? sendInteractionEventwon't work with custom elements/shadow DOM. Maybe investigate or get rid of this.
|
|
36
|
+
// sendInteractionEvent('Card Image Click', InteractionEventTypes.IMAGE_CLICK, e, e.currentTarget);
|
|
37
|
+
this.handleHrefClick(e, {
|
|
38
|
+
clickUrl: this.ctaHref,
|
|
39
|
+
clickImg: this.imgSrc,
|
|
40
|
+
label: this.label,
|
|
41
|
+
title: this.header,
|
|
42
|
+
subtitle: this.subtitle,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
private handleLinkClick(e: MouseEvent) {
|
|
47
|
+
// FIXME? sendInteractionEvent won't work with custom elements/shadow DOM. Maybe investigate or get rid of this.
|
|
48
|
+
// sendInteractionEvent('Card Link Click', InteractionEventTypes.CLICK, e, e.currentTarget);
|
|
49
|
+
const currentTarget = e.currentTarget as HTMLElement;
|
|
50
|
+
const clickText = currentTarget.matches('dx-card-title') ? this.header : this.ctaTitle;
|
|
51
|
+
this.handleHrefClick(e, {
|
|
52
|
+
clickText,
|
|
53
|
+
clickUrl: this.ctaHref,
|
|
54
|
+
label: this.label,
|
|
55
|
+
title: this.header,
|
|
56
|
+
subtitle: this.subtitle,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
private handleHrefClick(e: MouseEvent, payload: Record<string, string>) {
|
|
61
|
+
const target = e.currentTarget as HTMLElement;
|
|
62
|
+
track(target, 'card_clicked', {
|
|
63
|
+
...payload,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { track, LightningElement } from 'lwc';
|
|
2
|
+
|
|
3
|
+
export abstract class ChildrenElement<T> extends LightningElement {
|
|
4
|
+
private observer!: MutationObserver;
|
|
5
|
+
|
|
6
|
+
@track items: T[] = [];
|
|
7
|
+
abstract extractor: (element: Element) => T;
|
|
8
|
+
|
|
9
|
+
connectedCallback() {
|
|
10
|
+
this.observer = new MutationObserver(() => {
|
|
11
|
+
this.setItems();
|
|
12
|
+
});
|
|
13
|
+
this.observer.observe(this.template.host, {
|
|
14
|
+
childList: true,
|
|
15
|
+
subtree: true
|
|
16
|
+
});
|
|
17
|
+
this.setItems();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
disconnectedCallback() {
|
|
21
|
+
this.observer.disconnect();
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
setItems() {
|
|
25
|
+
this.items = Array.from(this.template.host.children).map(
|
|
26
|
+
this.extractor
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export default ChildrenElement;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export function hexToRGB(h: string) {
|
|
2
|
+
let r = 0;
|
|
3
|
+
let g = 0;
|
|
4
|
+
let b = 0;
|
|
5
|
+
if (h.length === 4) {
|
|
6
|
+
r = +('0x' + h[1] + h[1]);
|
|
7
|
+
g = +('0x' + h[2] + h[2]);
|
|
8
|
+
b = +('0x' + h[3] + h[3]);
|
|
9
|
+
} else if (h.length === 7) {
|
|
10
|
+
r = +('0x' + h[1] + h[2]);
|
|
11
|
+
g = +('0x' + h[3] + h[4]);
|
|
12
|
+
b = +('0x' + h[5] + h[6]);
|
|
13
|
+
}
|
|
14
|
+
return [r, g, b];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function RGBToHSL(r: number, g: number, b: number) {
|
|
18
|
+
r /= 255;
|
|
19
|
+
g /= 255;
|
|
20
|
+
b /= 255;
|
|
21
|
+
const cmin = Math.min(r, g, b);
|
|
22
|
+
const cmax = Math.max(r, g, b);
|
|
23
|
+
const delta = cmax - cmin;
|
|
24
|
+
let h = 0;
|
|
25
|
+
let s = 0;
|
|
26
|
+
let l = 0;
|
|
27
|
+
if (delta === 0) {
|
|
28
|
+
h = 0;
|
|
29
|
+
} else if (cmax === r) {
|
|
30
|
+
h = ((g - b) / delta) % 6;
|
|
31
|
+
} else if (cmax === g) {
|
|
32
|
+
h = (b - r) / delta + 2;
|
|
33
|
+
} else {
|
|
34
|
+
h = (r - g) / delta + 4;
|
|
35
|
+
}
|
|
36
|
+
h = Math.round(h * 60);
|
|
37
|
+
if (h < 0) {
|
|
38
|
+
h += 360;
|
|
39
|
+
}
|
|
40
|
+
l = (cmax + cmin) / 2;
|
|
41
|
+
s = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));
|
|
42
|
+
s = +s.toFixed(1);
|
|
43
|
+
l = +l.toFixed(1);
|
|
44
|
+
return [h, s, l];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export function rgb(r: number, g: number, b: number) {
|
|
48
|
+
return `rgb(${r},${g},${b})`;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export function hsl(h: number, s: number, l: number) {
|
|
52
|
+
return `hsl(${h},${s * 100}%,${l * 100}%)`;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function lightenHex(hex: string, by: number) {
|
|
56
|
+
const [r, g, b] = hexToRGB(hex);
|
|
57
|
+
const [h, s, l] = RGBToHSL(r, g, b);
|
|
58
|
+
return hsl(h, s, l + by);
|
|
59
|
+
}
|