@salesforcedevs/dx-components 0.26.2 → 0.26.3-alpha.1
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 +2 -1
- package/package.json +2 -7
- package/src/modules/{utils-internal → base-elements}/archiveCard/archiveCard.ts +0 -0
- package/src/modules/{utils-internal → base-elements}/headerBase/headerBase.ts +0 -0
- package/src/modules/dx/cardBlogPostProvider/cardBlogPostProvider.ts +1 -1
- package/src/modules/dx/cardCallout/cardCallout.ts +1 -1
- package/src/modules/dx/cardContent/cardContent.ts +2 -2
- package/src/modules/dx/cardDocs/cardDocs.ts +1 -1
- package/src/modules/dx/cardExpanded/cardExpanded.ts +1 -1
- package/src/modules/dx/cardMinimal/cardMinimal.ts +1 -1
- package/src/modules/dx/cardNews/cardNews.ts +1 -1
- package/src/modules/dx/cardPodcastEpisodeProvider/cardPodcastEpisodeProvider.ts +1 -1
- package/src/modules/dx/cardSmall/cardSmall.ts +1 -1
- package/src/modules/dx/codeBlock/codeBlock.ts +1 -1
- package/src/modules/dx/dropdown/dropdown.ts +1 -1
- package/src/modules/dx/featuredContentHeader/featuredContentHeader.ts +1 -1
- package/src/modules/dx/groupText/groupText.ts +1 -1
- package/src/modules/dx/header/header.ts +1 -1
- package/src/modules/dx/headerMobileNavMenu/headerMobileNavMenu.ts +1 -1
- package/src/modules/dx/headerSearch/headerSearch.ts +1 -1
- package/src/modules/dx/icon/icon.ts +1 -1
- package/src/modules/dx/iconBadge/iconBadge.ts +1 -1
- package/src/modules/dx/input/input.ts +1 -1
- package/src/modules/dx/modalDrawer/modalDrawer.css +40 -0
- package/src/modules/dx/modalDrawer/modalDrawer.html +11 -0
- package/src/modules/dx/modalDrawer/modalDrawer.ts +27 -0
- package/src/modules/dx/newsletterForm/newsletterForm.html +3 -3
- package/src/modules/dx/popover/popover.ts +1 -1
- package/src/modules/dx/section/section.ts +1 -1
- package/src/modules/dx/sidebar/sidebar.ts +1 -1
- package/src/modules/dx/sidebarOld/sidebarOld.html +1 -1
- package/src/modules/dx/sidebarOld/sidebarOld.ts +22 -7
- package/src/modules/dx/sidebarSearch/sidebarSearch.ts +41 -25
- package/src/modules/dx/slackCta/slackCta.css +1 -1
- package/src/modules/dx/tooltip/microtip.css +1 -0
- package/src/modules/dx/tooltip/tooltip.css +1 -0
- package/src/modules/dx/typeBadge/typeBadge.ts +1 -1
- package/src/modules/{utils-internal → utils}/coveo/coveo.ts +0 -0
- package/src/modules/{utils-internal → utils}/css/css.ts +0 -0
- package/src/modules/{utils-internal → utils}/devices/devices.ts +0 -0
- package/src/modules/utils/highlight/highlight.ts +28 -15
- package/src/modules/{utils-internal → utils}/options/options.ts +0 -0
- package/src/modules/{utils-internal → utils}/prismjs/prismjs.html +0 -0
- package/src/modules/{utils-internal → utils}/prismjs/prismjs.ts +0 -0
- package/src/modules/{utils-internal → utils}/recentSearches/recentSearches.ts +0 -0
- package/src/modules/utils/regexps/regexps.ts +12 -0
- package/src/modules/{utils-internal → utils}/seo/seo.ts +0 -0
- package/src/modules/{utils-internal → utils}/slot/slot.ts +0 -0
- package/src/modules/{utils-internal → utils}/wordpress/wordpress.ts +0 -0
- package/LICENSE +0 -12
- package/src/modules/dx/banner/__tests__/banner.test.ts +0 -33
- package/src/modules/dx/brandThemeProvider/__tests__/brandThemeProvider.test.ts +0 -49
- package/src/modules/dx/brandThemeProvider/brandThemeProvider.stories.ts +0 -321
- package/src/modules/dx/breadcrumbs/__tests__/breadcrumbs.test.ts +0 -140
- package/src/modules/dx/breadcrumbs/__tests__/mockProps.ts +0 -28
- package/src/modules/dx/breadcrumbs/breadcrumbs.stories.ts +0 -39
- package/src/modules/dx/button/__tests__/button.test.ts +0 -107
- package/src/modules/dx/button/button.stories.ts +0 -150
- package/src/modules/dx/cardBlogPost/__tests__/cardBlogPost.test.ts +0 -26
- package/src/modules/dx/cardBlogPost/__tests__/mockProps.ts +0 -12
- package/src/modules/dx/cardBlogPost/cardBlogPost.stories.ts +0 -164
- package/src/modules/dx/cardBlogPostProvider/__tests__/cardBlogPostProvider.test.ts +0 -34
- package/src/modules/dx/cardBlogPostProvider/__tests__/mockWordpressPosts.ts +0 -44
- package/src/modules/dx/cardCallout/__tests__/cardCallout.test.ts +0 -20
- package/src/modules/dx/cardCallout/__tests__/mockProps.ts +0 -7
- package/src/modules/dx/cardCallout/cardCallout.stories.ts +0 -33
- package/src/modules/dx/cardContent/__tests__/cardContent.test.ts +0 -100
- package/src/modules/dx/cardContent/__tests__/mockProps.ts +0 -13
- package/src/modules/dx/cardContent/cardContent.stories.ts +0 -127
- package/src/modules/dx/cardDemo/cardDemo.stories.ts +0 -115
- package/src/modules/dx/cardDocs/__tests__/cardDocs.test.ts +0 -48
- package/src/modules/dx/cardDocs/__tests__/mockProps.ts +0 -9
- package/src/modules/dx/cardDocs/cardDocs.stories.ts +0 -299
- package/src/modules/dx/cardEvent/__tests__/cardEvent.test.ts +0 -95
- package/src/modules/dx/cardEvent/__tests__/mockProps.ts +0 -10
- package/src/modules/dx/cardEvent/cardEvent.stories.ts +0 -153
- package/src/modules/dx/cardExpanded/__tests__/cardExpanded.test.ts +0 -193
- package/src/modules/dx/cardExpanded/__tests__/mockProps.ts +0 -21
- package/src/modules/dx/cardExpanded/cardExpanded.stories.ts +0 -59
- package/src/modules/dx/cardGrid/__tests__/cardMockProps.ts +0 -431
- package/src/modules/dx/cardGrid/__tests__/mockProps.ts +0 -15
- package/src/modules/dx/cardGrid/cardGrid.stories.ts +0 -111
- package/src/modules/dx/cardMinimal/__tests__/cardMinimal.test.ts +0 -87
- package/src/modules/dx/cardMinimal/__tests__/mockProps.ts +0 -10
- package/src/modules/dx/cardMinimal/cardMinimal.stories.ts +0 -32
- package/src/modules/dx/cardNews/__tests__/cardNews.test.ts +0 -58
- package/src/modules/dx/cardNews/__tests__/mockProps.ts +0 -7
- package/src/modules/dx/cardNews/cardNews.stories.ts +0 -115
- package/src/modules/dx/cardPodcastEpisode/__tests__/cardPodcastEpisode.test.ts +0 -68
- package/src/modules/dx/cardPodcastEpisode/cardPodcastEpisode.stories.ts +0 -31
- package/src/modules/dx/cardPodcastEpisodeProvider/__tests__/cardPodcastEpisodeProvider.test.ts +0 -36
- package/src/modules/dx/cardPodcastEpisodeProvider/__tests__/mockWordpressEpisodes.ts +0 -50
- package/src/modules/dx/cardSmall/__tests__/cardSmall.test.ts +0 -66
- package/src/modules/dx/cardSmall/__tests__/mockProps.ts +0 -8
- package/src/modules/dx/cardSmall/cardSmall.stories.ts +0 -166
- package/src/modules/dx/cardTitle/__tests__/cardTitle.test.ts +0 -46
- package/src/modules/dx/cardTrailheadModule/__tests__/cardTrailheadModule.test.ts +0 -18
- package/src/modules/dx/cardTrailheadModule/__tests__/mockProps.ts +0 -11
- package/src/modules/dx/cardTrailheadModule/cardTrailheadModule.stories.ts +0 -122
- package/src/modules/dx/cardVideoPreview/__tests__/cardVideoPreview.test.ts +0 -22
- package/src/modules/dx/cardVideoPreview/__tests__/mockProps.ts +0 -11
- package/src/modules/dx/cardVideoPreview/cardVideoPreview.stories.ts +0 -147
- package/src/modules/dx/checkbox/__tests__/checkbox.test.ts +0 -85
- package/src/modules/dx/checkbox/__tests__/mockProps.ts +0 -5
- package/src/modules/dx/checkbox/checkbox.stories.ts +0 -38
- package/src/modules/dx/checkboxGroup/__tests__/checkboxGroup.test.ts +0 -80
- package/src/modules/dx/checkboxGroup/__tests__/mockProps.ts +0 -14
- package/src/modules/dx/checkboxGroup/checkboxGroup.stories.ts +0 -33
- package/src/modules/dx/codeBlock/__tests__/codeBlock.test.ts +0 -238
- package/src/modules/dx/codeBlock/__tests__/mockProps.ts +0 -160
- package/src/modules/dx/codeBlock/codeBlock.stories.ts +0 -143
- package/src/modules/dx/dropdown/__tests__/dropdown.test.ts +0 -165
- package/src/modules/dx/dropdown/__tests__/mockNestedOptions.ts +0 -96
- package/src/modules/dx/dropdown/__tests__/mockOptions.ts +0 -10
- package/src/modules/dx/dropdown/__tests__/mockProps.ts +0 -6
- package/src/modules/dx/dropdown/dropdown.stories.ts +0 -89
- package/src/modules/dx/dropdownOption/__tests__/dropdownOption.test.ts +0 -112
- package/src/modules/dx/dropdownOption/__tests__/mockProps.ts +0 -20
- package/src/modules/dx/emptyState/__tests__/emptyState.test.ts +0 -52
- package/src/modules/dx/emptyState/__tests__/mockProps.ts +0 -4
- package/src/modules/dx/emptyState/emptyState.stories.ts +0 -45
- package/src/modules/dx/feature/__tests__/feature.test.ts +0 -51
- package/src/modules/dx/feature/__tests__/mockProps.ts +0 -8
- package/src/modules/dx/featureGrid/__tests__/featureGrid.test.ts +0 -21
- package/src/modules/dx/featureGrid/featureGrid.stories.ts +0 -120
- package/src/modules/dx/featuredContentHeader/__tests__/featuredContentHeader.test.ts +0 -178
- package/src/modules/dx/featuredContentHeader/__tests__/mockProps.ts +0 -73
- package/src/modules/dx/featuredContentHeader/featuredContentHeader.stories.ts +0 -153
- package/src/modules/dx/featuresList/__tests__/featuresList.test.ts +0 -43
- package/src/modules/dx/featuresList/__tests__/mockProps.ts +0 -17
- package/src/modules/dx/featuresList/featuresList.stories.ts +0 -30
- package/src/modules/dx/footer/__tests__/footer.test.ts +0 -147
- package/src/modules/dx/footer/__tests__/mockLocales.ts +0 -7
- package/src/modules/dx/footer/footer.stories.ts +0 -88
- package/src/modules/dx/footerOption/__tests__/footerOption.test.ts +0 -34
- package/src/modules/dx/footerOption/__tests__/mockProps.ts +0 -7
- package/src/modules/dx/formattedDateTime/__tests__/formattedDateTime.test.ts +0 -25
- package/src/modules/dx/formattedDateTime/__tests__/mockProps.ts +0 -13
- package/src/modules/dx/formattedDateTime/formattedDateTime.stories.ts +0 -103
- package/src/modules/dx/grid/__tests__/grid.test.ts +0 -32
- package/src/modules/dx/grid/grid.stories.ts +0 -134
- package/src/modules/dx/groupBio/__tests__/groupBio.test.ts +0 -82
- package/src/modules/dx/groupBio/__tests__/mockProps.ts +0 -15
- package/src/modules/dx/groupBio/groupBio.stories.ts +0 -66
- package/src/modules/dx/groupText/__tests__/groupText.test.ts +0 -69
- package/src/modules/dx/groupText/__tests__/mockProps.ts +0 -35
- package/src/modules/dx/groupText/groupText.stories.ts +0 -81
- package/src/modules/dx/header/__tests__/header.test.ts +0 -236
- package/src/modules/dx/header/__tests__/mockNavArchitects.ts +0 -169
- package/src/modules/dx/header/__tests__/mockNavDevelopers.ts +0 -419
- package/src/modules/dx/header/__tests__/mockNavs.ts +0 -115
- package/src/modules/dx/header/__tests__/mockProps.ts +0 -164
- package/src/modules/dx/header/header.stories.ts +0 -172
- package/src/modules/dx/headerMobileNavMenu/__tests__/headerMobileNavMenu.test.ts +0 -123
- package/src/modules/dx/headerMobileNavMenuOption/__tests__/headerMobileNavMenuOption.test.ts +0 -38
- package/src/modules/dx/headerNav/__tests__/headerNav.test.ts +0 -49
- package/src/modules/dx/headerSearch/__tests__/headerSearch.test.ts +0 -182
- package/src/modules/dx/headerSearch/__tests__/mockData.ts +0 -11
- package/src/modules/dx/headerSearch/__tests__/mockProps.ts +0 -6
- package/src/modules/dx/helmet/__tests__/helmet.test.ts +0 -52
- package/src/modules/dx/helmet/helmet.stories.ts +0 -53
- package/src/modules/dx/hr/__tests__/hr.test.ts +0 -53
- package/src/modules/dx/hr/__tests__/mockProps.ts +0 -16
- package/src/modules/dx/hr/hr.stories.ts +0 -50
- package/src/modules/dx/icon/__tests__/icon.test.ts +0 -54
- package/src/modules/dx/icon/icon.stories.ts +0 -100
- package/src/modules/dx/iconBadge/__tests__/iconBadge.test.ts +0 -17
- package/src/modules/dx/iconBadge/iconBadge.stories.ts +0 -32
- package/src/modules/dx/imageAndLabel/__tests__/imageAndLabel.test.ts +0 -39
- package/src/modules/dx/imageAndLabel/__tests__/mockProps.ts +0 -6
- package/src/modules/dx/imageAndLabel/imageAndLabel.stories.ts +0 -48
- package/src/modules/dx/input/__tests__/input.test.ts +0 -357
- package/src/modules/dx/input/input.stories.ts +0 -102
- package/src/modules/dx/instrumentation/__tests__/instrumentation.test.ts +0 -86
- package/src/modules/dx/interactiveImage/__tests__/interactiveImage.test.ts +0 -83
- package/src/modules/dx/interactiveImage/__tests__/mockProps.ts +0 -39
- package/src/modules/dx/interactiveImage/interactiveImage.stories.ts +0 -31
- package/src/modules/dx/lazy/__tests__/lazy.test.ts +0 -43
- package/src/modules/dx/lazy/lazy.stories.ts +0 -132
- package/src/modules/dx/pagination/__tests__/pagination.test.ts +0 -121
- package/src/modules/dx/pagination/pagination.stories.ts +0 -88
- package/src/modules/dx/podcastHost/__tests__/mockProps.ts +0 -8
- package/src/modules/dx/podcastHost/__tests__/podcastHost.test.ts +0 -21
- package/src/modules/dx/podcastHost/podcastHost.stories.ts +0 -17
- package/src/modules/dx/podcastPlayer/__tests__/podcastPlayer.test.ts +0 -20
- package/src/modules/dx/podcastPlayer/podcastPlayer.stories.ts +0 -13
- package/src/modules/dx/podcastSubscription/__tests__/podcastSubscription.test.ts +0 -16
- package/src/modules/dx/podcastSubscription/podcastSubscription.stories.ts +0 -23
- package/src/modules/dx/popover/__tests__/mockProps.ts +0 -8
- package/src/modules/dx/popover/__tests__/popover.test.ts +0 -313
- package/src/modules/dx/popover/popover.stories.ts +0 -82
- package/src/modules/dx/radioGroup/__tests__/mockProps.ts +0 -12
- package/src/modules/dx/radioGroup/__tests__/radioGroup.test.ts +0 -42
- package/src/modules/dx/radioGroup/radioGroup.stories.ts +0 -25
- package/src/modules/dx/relativeDateTime/__tests__/mockProps.ts +0 -55
- package/src/modules/dx/relativeDateTime/__tests__/relativeDateTime.test.ts +0 -52
- package/src/modules/dx/relativeDateTime/relativeDateTime.stories.ts +0 -83
- package/src/modules/dx/searchResults/searchResults.stories.ts +0 -36
- package/src/modules/dx/section/__tests__/section.test.ts +0 -17
- package/src/modules/dx/section/section.stories.ts +0 -381
- package/src/modules/dx/sectionSignup/__tests__/sectionSignup.test.ts +0 -66
- package/src/modules/dx/sectionSignup/sectionSignup.stories.ts +0 -49
- package/src/modules/dx/select/select.stories.ts +0 -59
- package/src/modules/dx/sidebar/__tests__/mockProps.ts +0 -181
- package/src/modules/dx/sidebar/__tests__/mockSearchChangeEmptyEvent.ts +0 -6
- package/src/modules/dx/sidebar/__tests__/mockSearchChangeEvent.ts +0 -527
- package/src/modules/dx/sidebar/__tests__/sidebar.test.ts +0 -568
- package/src/modules/dx/sidebar/sidebar.stories.ts +0 -188
- package/src/modules/dx/sidebarOld/__tests__/mockProps.ts +0 -178
- package/src/modules/dx/sidebarOld/__tests__/sidebarOld.test.ts +0 -570
- package/src/modules/dx/sidebarOld/sidebarOld.stories.ts +0 -139
- package/src/modules/dx/sidebarSearch/__tests__/mockPreloadedState.ts +0 -1686
- package/src/modules/dx/sidebarSearch/__tests__/sidebarSearch.test.ts +0 -175
- package/src/modules/dx/sidebarSearchResult/__tests__/sidebarSearchResult.test.ts +0 -96
- package/src/modules/dx/slackCta/__tests__/slackCta.test.ts +0 -36
- package/src/modules/dx/slackCta/slackCta.stories.ts +0 -25
- package/src/modules/dx/socials/__tests__/socials.test.ts +0 -114
- package/src/modules/dx/socials/socials.stories.ts +0 -24
- package/src/modules/dx/spinner/__tests__/spinner.test.ts +0 -37
- package/src/modules/dx/spinner/spinner.stories.ts +0 -69
- package/src/modules/dx/tab/__tests__/tab.test.ts +0 -129
- package/src/modules/dx/tab/tab.stories.ts +0 -57
- package/src/modules/dx/toc/__tests__/mockProps.ts +0 -28
- package/src/modules/dx/toc/__tests__/toc.test.ts +0 -109
- package/src/modules/dx/toc/toc.stories.ts +0 -26
- package/src/modules/dx/tooltip/__tests__/tooltip.test.ts +0 -22
- package/src/modules/dx/tooltip/tooltip.stories.ts +0 -46
- package/src/modules/dx/topics/__tests__/mockProps.ts +0 -3
- package/src/modules/dx/topics/__tests__/topics.test.ts +0 -31
- package/src/modules/dx/tree/__tests__/mockProps.ts +0 -215
- package/src/modules/dx/tree/__tests__/tree.test.ts +0 -346
- package/src/modules/dx/tree/__tests__/treeHandler.test.ts +0 -194
- package/src/modules/dx/tree/tree.stories.ts +0 -65
- package/src/modules/dx/treeItem/__tests__/mockProps.ts +0 -46
- package/src/modules/dx/treeItem/__tests__/treeItem.test.ts +0 -377
- package/src/modules/dx/treeTile/__tests__/mockProps.ts +0 -16
- package/src/modules/dx/treeTile/__tests__/treeTile.test.ts +0 -168
- package/src/modules/dx/typeBadge/__tests__/typeBadge.test.ts +0 -77
- package/src/modules/dx/typeBadge/typeBadge.stories.ts +0 -114
- package/src/modules/dx/typeBadgeGroup/__tests__/mockProps.ts +0 -11
- package/src/modules/dx/typeBadgeGroup/__tests__/typeBadgeGroup.test.ts +0 -72
- package/src/modules/dx/typeBadgeGroup/typeBadgeGroup.stories.ts +0 -19
- package/src/modules/test-components/buttonTest/buttonTest.html +0 -3
- package/src/modules/test-components/buttonTest/buttonTest.ts +0 -3
- package/src/modules/test-components/codeBlockTest/codeBlockTest.js +0 -4
- package/src/modules/test-components/featureGridTest/featureGridTest.html +0 -7
- package/src/modules/test-components/featureGridTest/featureGridTest.ts +0 -5
- package/src/modules/test-components/instrumentationTest/instrumentationTest.html +0 -4
- package/src/modules/test-components/instrumentationTest/instrumentationTest.ts +0 -8
- package/src/modules/test-components/popoverTest/popoverTest.html +0 -6
- package/src/modules/test-components/popoverTest/popoverTest.ts +0 -5
- package/src/modules/test-components/slackCtaTest/slackCtaTest.html +0 -3
- package/src/modules/test-components/slackCtaTest/slackCtaTest.ts +0 -3
- package/src/modules/utils/highlight/__tests__/highlight.test.ts +0 -108
- package/src/modules/utils/highlight/__tests__/mockProps.ts +0 -45
- package/src/modules/utils-internal/jest/jest.ts +0 -58
- package/src/modules/utils-internal/recentSearches/__tests__/recentSearches.test.ts +0 -83
- package/src/modules/utils-internal/regexps/regexps.ts +0 -5
- package/src/modules/utils-internal/storybook/storybook.ts +0 -32
- package/src/modules/utils-internal/tests/tests.ts +0 -38
- package/src/modules/utils-internal/wordpress/__tests__/wordpress.test.ts +0 -15
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
export default [
|
|
2
|
-
{
|
|
3
|
-
label: "Products",
|
|
4
|
-
id: "brands",
|
|
5
|
-
calloutLink: {
|
|
6
|
-
href: "www.google.com",
|
|
7
|
-
target: "_blank",
|
|
8
|
-
label: "View all Products"
|
|
9
|
-
},
|
|
10
|
-
options: [
|
|
11
|
-
{
|
|
12
|
-
label: "Heroku",
|
|
13
|
-
id: "heroku",
|
|
14
|
-
iconSymbol: "heroku",
|
|
15
|
-
iconSprite: "salesforcebrand"
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
label: "Tableau",
|
|
19
|
-
id: "tableau",
|
|
20
|
-
iconSymbol: "analytics",
|
|
21
|
-
iconSprite: "salesforcebrand"
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
label: "Quip",
|
|
25
|
-
id: "quip",
|
|
26
|
-
iconSymbol: "collaboration",
|
|
27
|
-
iconSprite: "salesforcebrand"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
label: "MuleSoft",
|
|
31
|
-
id: "mulesoft",
|
|
32
|
-
iconSymbol: "integration",
|
|
33
|
-
iconSprite: "salesforcebrand"
|
|
34
|
-
}
|
|
35
|
-
]
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
label: "Platform",
|
|
39
|
-
id: "platform",
|
|
40
|
-
options: [
|
|
41
|
-
{
|
|
42
|
-
label: "Apex",
|
|
43
|
-
id: "apex"
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
label: "Lightning Web Components",
|
|
47
|
-
id: "LWC"
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
label: "Mobile",
|
|
51
|
-
id: "mobile"
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
label: "Apex Other",
|
|
55
|
-
id: "apex2"
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
label: "Lightning Web Runtime",
|
|
59
|
-
id: "LWR"
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
label: "Apex Legends",
|
|
63
|
-
id: "legends"
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
label: "Einstein",
|
|
67
|
-
id: "einstein"
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
label: "Mobile SDK",
|
|
71
|
-
id: "mobilesdk"
|
|
72
|
-
}
|
|
73
|
-
]
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
label: "Sandwich",
|
|
77
|
-
id: "sandwich",
|
|
78
|
-
options: [
|
|
79
|
-
{
|
|
80
|
-
label: "Bread",
|
|
81
|
-
description: "Lets get this bread.",
|
|
82
|
-
id: "bread"
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
label: "Peanut Butter",
|
|
86
|
-
description: "This is tasty PB.",
|
|
87
|
-
id: "pb"
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
label: "Jelly",
|
|
91
|
-
description: "This is jelly, maybe grape jelly.",
|
|
92
|
-
id: "jelly"
|
|
93
|
-
}
|
|
94
|
-
]
|
|
95
|
-
}
|
|
96
|
-
];
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export default [
|
|
2
|
-
{ label: "Banana", id: "banana" },
|
|
3
|
-
{ label: "Orange", id: "orange" },
|
|
4
|
-
{ label: "Potato", id: "potato" },
|
|
5
|
-
{ label: "Shoe", id: "shoe" },
|
|
6
|
-
{ label: "Broom", id: "broom" },
|
|
7
|
-
{ label: "Spaghetti", id: "spaghetti" },
|
|
8
|
-
{ label: "Tater Tot", id: "tater" },
|
|
9
|
-
{ label: "Lint", id: "lint" }
|
|
10
|
-
];
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { html } from "lit-html";
|
|
2
|
-
import mockOptions from "./__tests__/mockOptions";
|
|
3
|
-
import mockNestedOptions from "./__tests__/mockNestedOptions";
|
|
4
|
-
|
|
5
|
-
export default {
|
|
6
|
-
title: "dx/dx-dropdown",
|
|
7
|
-
component: "dx-dropdown"
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
const options = JSON.stringify(mockOptions);
|
|
11
|
-
const nestedOptions = JSON.stringify(mockNestedOptions);
|
|
12
|
-
const nestedOptionsTwoItems = JSON.stringify(mockNestedOptions.slice(0, 2));
|
|
13
|
-
|
|
14
|
-
// prettier-ignore
|
|
15
|
-
const styles = () => html`
|
|
16
|
-
<style>
|
|
17
|
-
#root {
|
|
18
|
-
display: grid;
|
|
19
|
-
grid-template-columns: repeat(3, 1fr);
|
|
20
|
-
grid-gap: 20px;
|
|
21
|
-
justify-items: center;
|
|
22
|
-
}
|
|
23
|
-
</style>
|
|
24
|
-
`;
|
|
25
|
-
|
|
26
|
-
// prettier-ignore
|
|
27
|
-
export const Base = () => html`
|
|
28
|
-
${styles()}
|
|
29
|
-
<dx-dropdown options="${options}">
|
|
30
|
-
<dx-button icon-symbol="chevrondown">
|
|
31
|
-
Default
|
|
32
|
-
</dx-button>
|
|
33
|
-
</dx-dropdown>
|
|
34
|
-
|
|
35
|
-
<br />
|
|
36
|
-
|
|
37
|
-
<dx-dropdown stay-open-after-change="true" options="${options}">
|
|
38
|
-
<dx-button icon-symbol="chevrondown">
|
|
39
|
-
Stay Open After Change
|
|
40
|
-
</dx-button>
|
|
41
|
-
</dx-dropdown>
|
|
42
|
-
|
|
43
|
-
<br />
|
|
44
|
-
|
|
45
|
-
<dx-dropdown
|
|
46
|
-
options="${nestedOptions}"
|
|
47
|
-
placement="bottom"
|
|
48
|
-
offset="medium"
|
|
49
|
-
>
|
|
50
|
-
<dx-button icon-symbol="chevrondown">
|
|
51
|
-
Nested Options
|
|
52
|
-
</dx-button>
|
|
53
|
-
</dx-dropdown>
|
|
54
|
-
|
|
55
|
-
<br />
|
|
56
|
-
|
|
57
|
-
<dx-dropdown
|
|
58
|
-
options="${nestedOptionsTwoItems}"
|
|
59
|
-
placement="bottom"
|
|
60
|
-
offset="medium"
|
|
61
|
-
>
|
|
62
|
-
<dx-button icon-symbol="chevrondown">
|
|
63
|
-
Nested Options 2 Items
|
|
64
|
-
</dx-button>
|
|
65
|
-
</dx-dropdown>
|
|
66
|
-
|
|
67
|
-
<br />
|
|
68
|
-
|
|
69
|
-
<dx-dropdown
|
|
70
|
-
options="${nestedOptionsTwoItems}"
|
|
71
|
-
placement="bottom"
|
|
72
|
-
offset="medium"
|
|
73
|
-
open-on-hover="true"
|
|
74
|
-
stay-open-after-change="true"
|
|
75
|
-
>
|
|
76
|
-
<dx-button icon-symbol="chevrondown">
|
|
77
|
-
Hover Me
|
|
78
|
-
</dx-button>
|
|
79
|
-
</dx-dropdown>
|
|
80
|
-
`;
|
|
81
|
-
|
|
82
|
-
export const DisabledControl = () => html`
|
|
83
|
-
${styles()}
|
|
84
|
-
<dx-dropdown options="${options}">
|
|
85
|
-
<dx-button icon-symbol="chevrondown" disabled="true">
|
|
86
|
-
I'm disabled
|
|
87
|
-
</dx-button>
|
|
88
|
-
</dx-dropdown>
|
|
89
|
-
`;
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import DropdownOption from "dx/dropdownOption";
|
|
2
|
-
import { createRenderComponent } from "utils-internal/tests";
|
|
3
|
-
import { MOCK_BUTTON_PROPS, MOCK_LINK_PROPS } from "./mockProps";
|
|
4
|
-
import * as instrumentation from "dx/instrumentation";
|
|
5
|
-
|
|
6
|
-
const TAG = "dx-dropdown-option";
|
|
7
|
-
const render = createRenderComponent(TAG, DropdownOption);
|
|
8
|
-
|
|
9
|
-
const appendToMenu = (element: HTMLElement) => {
|
|
10
|
-
const menu = document.createElement("DIV");
|
|
11
|
-
document.body.appendChild(menu);
|
|
12
|
-
menu.setAttribute("role", "menu");
|
|
13
|
-
menu.appendChild(element);
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
describe(TAG, () => {
|
|
17
|
-
beforeEach(() => {
|
|
18
|
-
jest.clearAllMocks();
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it("renders a button by default", () => {
|
|
22
|
-
const component = render(MOCK_BUTTON_PROPS);
|
|
23
|
-
expect(component.shadowRoot.querySelector("button")).not.toBeNull();
|
|
24
|
-
|
|
25
|
-
appendToMenu(component);
|
|
26
|
-
return expect(component).toBeAccessible();
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it("renders the correct label, description, and img", () => {
|
|
30
|
-
const component = render(MOCK_BUTTON_PROPS);
|
|
31
|
-
const label =
|
|
32
|
-
component.shadowRoot.querySelector(".option_label").textContent;
|
|
33
|
-
expect(label).toEqual(MOCK_BUTTON_PROPS.option.label);
|
|
34
|
-
|
|
35
|
-
const description = component.shadowRoot.querySelector(
|
|
36
|
-
".option_description"
|
|
37
|
-
).textContent;
|
|
38
|
-
expect(description).toEqual(MOCK_BUTTON_PROPS.option.description);
|
|
39
|
-
|
|
40
|
-
const img = component.shadowRoot.querySelector(".option_icon");
|
|
41
|
-
expect(img).not.toBeNull();
|
|
42
|
-
|
|
43
|
-
appendToMenu(component);
|
|
44
|
-
return expect(component).toBeAccessible();
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
it("renders a link with the correct href when given link props", () => {
|
|
48
|
-
const component = render(MOCK_LINK_PROPS);
|
|
49
|
-
|
|
50
|
-
const href = component.shadowRoot
|
|
51
|
-
.querySelector("a")
|
|
52
|
-
.getAttribute("href");
|
|
53
|
-
expect(href).toEqual(MOCK_LINK_PROPS.option.link.href);
|
|
54
|
-
|
|
55
|
-
appendToMenu(component);
|
|
56
|
-
return expect(component).toBeAccessible();
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it("applies the active class correctly", () => {
|
|
60
|
-
const component = render({ ...MOCK_BUTTON_PROPS, active: true });
|
|
61
|
-
const optionEl = component.shadowRoot.querySelector(".option-active");
|
|
62
|
-
expect(optionEl).not.toBeNull();
|
|
63
|
-
|
|
64
|
-
appendToMenu(component);
|
|
65
|
-
return expect(component).toBeAccessible();
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
it("can focus itself", () => {
|
|
69
|
-
const component = render(MOCK_BUTTON_PROPS);
|
|
70
|
-
component.focus();
|
|
71
|
-
|
|
72
|
-
expect(document.activeElement).toEqual(component);
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
it("onClick function is fired when button is clicked", () => {
|
|
76
|
-
const onClickMock = jest.fn();
|
|
77
|
-
const component = render({
|
|
78
|
-
...MOCK_BUTTON_PROPS,
|
|
79
|
-
onclick: onClickMock
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
const option = component.shadowRoot.querySelector(".option");
|
|
83
|
-
option.click();
|
|
84
|
-
|
|
85
|
-
expect(onClickMock).toBeCalled();
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
it("fires analytics when given an analytics event", () => {
|
|
89
|
-
const track = jest.spyOn(instrumentation, "track");
|
|
90
|
-
|
|
91
|
-
const component = render({
|
|
92
|
-
...MOCK_BUTTON_PROPS,
|
|
93
|
-
analyticsEvent: "mock"
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
const option = component.shadowRoot.querySelector(".option");
|
|
97
|
-
option.click();
|
|
98
|
-
|
|
99
|
-
expect(track).toHaveBeenCalledTimes(1);
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
it("doesn't fire analytics when not given an analytics event", () => {
|
|
103
|
-
const track = jest.spyOn(instrumentation, "track");
|
|
104
|
-
|
|
105
|
-
const component = render(MOCK_BUTTON_PROPS);
|
|
106
|
-
|
|
107
|
-
const option = component.shadowRoot.querySelector(".option");
|
|
108
|
-
option.click();
|
|
109
|
-
|
|
110
|
-
expect(track).not.toHaveBeenCalled();
|
|
111
|
-
});
|
|
112
|
-
});
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export const MOCK_BUTTON_PROPS = {
|
|
2
|
-
option: {
|
|
3
|
-
id: "documentation",
|
|
4
|
-
label: "Documentation",
|
|
5
|
-
description: "Documentation is kewl",
|
|
6
|
-
iconSymbol: "heroku",
|
|
7
|
-
iconSprite: "salesforcebrand"
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export const MOCK_LINK_PROPS = {
|
|
12
|
-
option: {
|
|
13
|
-
id: "documentation",
|
|
14
|
-
label: "Documentation",
|
|
15
|
-
link: {
|
|
16
|
-
href: "/documentation",
|
|
17
|
-
target: null
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
};
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import EmptyState from "dx/emptyState";
|
|
2
|
-
import { createRenderComponent } from "utils-internal/tests";
|
|
3
|
-
import mockProps from "./mockProps";
|
|
4
|
-
|
|
5
|
-
const TAG = "dx-empty-state";
|
|
6
|
-
const render = createRenderComponent(TAG, EmptyState);
|
|
7
|
-
|
|
8
|
-
describe(TAG, () => {
|
|
9
|
-
it("renders", () => {
|
|
10
|
-
const element = render(mockProps);
|
|
11
|
-
const container: HTMLElement =
|
|
12
|
-
element.shadowRoot.querySelector(".container");
|
|
13
|
-
const renderedTitle: HTMLElement =
|
|
14
|
-
element.shadowRoot.querySelector("h3");
|
|
15
|
-
const renderedSubTitle: HTMLElement =
|
|
16
|
-
element.shadowRoot.querySelector("p");
|
|
17
|
-
const image: HTMLImageElement = element.shadowRoot.querySelector("img");
|
|
18
|
-
|
|
19
|
-
expect(renderedTitle).not.toBeNull();
|
|
20
|
-
expect(renderedSubTitle).not.toBeNull();
|
|
21
|
-
expect(container).not.toBeNull();
|
|
22
|
-
expect(image).not.toBeNull();
|
|
23
|
-
|
|
24
|
-
expect(renderedSubTitle.textContent).toEqual(mockProps.subtitle);
|
|
25
|
-
expect(renderedTitle.textContent).toEqual(mockProps.title);
|
|
26
|
-
|
|
27
|
-
return expect(element).toBeAccessible();
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it("renders as the large variant by default", () => {
|
|
31
|
-
const element = render(mockProps);
|
|
32
|
-
const container: HTMLElement =
|
|
33
|
-
element.shadowRoot.querySelector(".container");
|
|
34
|
-
const image: HTMLImageElement = element.shadowRoot.querySelector("img");
|
|
35
|
-
expect(container.classList).toContain("size-large");
|
|
36
|
-
expect(container.classList).toHaveLength(2);
|
|
37
|
-
expect(image.src).not.toContain("-small.svg");
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it("renders as the small variant when specified", () => {
|
|
41
|
-
const element = render({
|
|
42
|
-
...mockProps,
|
|
43
|
-
size: "small"
|
|
44
|
-
});
|
|
45
|
-
const container: HTMLElement =
|
|
46
|
-
element.shadowRoot.querySelector(".container");
|
|
47
|
-
const image: HTMLImageElement = element.shadowRoot.querySelector("img");
|
|
48
|
-
expect(container.classList).toContain("size-small");
|
|
49
|
-
expect(container.classList).toHaveLength(2);
|
|
50
|
-
expect(image.src).toContain("-small.svg");
|
|
51
|
-
});
|
|
52
|
-
});
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { html } from "lit-html";
|
|
2
|
-
|
|
3
|
-
export default {
|
|
4
|
-
title: "dx/dx-empty-state",
|
|
5
|
-
component: "dx-empty-state"
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
const createStyles = () => html`
|
|
9
|
-
<style>
|
|
10
|
-
body {
|
|
11
|
-
padding: 12px !important;
|
|
12
|
-
}
|
|
13
|
-
.title {
|
|
14
|
-
font-weight: bold;
|
|
15
|
-
margin: 24px;
|
|
16
|
-
}
|
|
17
|
-
#styled {
|
|
18
|
-
--dx-c-empty-state-background: var(--sds-g-gray-2);
|
|
19
|
-
--dx-c-empty-state-image-width: 400px;
|
|
20
|
-
width: 300px;
|
|
21
|
-
display: block;
|
|
22
|
-
}
|
|
23
|
-
.small-container {
|
|
24
|
-
width: 250px;
|
|
25
|
-
}
|
|
26
|
-
</style>
|
|
27
|
-
`;
|
|
28
|
-
|
|
29
|
-
const title = (value: string) => html`<p class="title">${value}</p>`;
|
|
30
|
-
|
|
31
|
-
export const Base = () => html`
|
|
32
|
-
${createStyles()} ${title("Default")}
|
|
33
|
-
<dx-empty-state
|
|
34
|
-
title="Beep boop. That did not compute."
|
|
35
|
-
subtitle="No results"
|
|
36
|
-
></dx-empty-state>
|
|
37
|
-
|
|
38
|
-
${title("No subtitle and customized with style hooks")}
|
|
39
|
-
<dx-empty-state id="styled" title="No Results"></dx-empty-state>
|
|
40
|
-
|
|
41
|
-
${title("Small variant")}
|
|
42
|
-
<div class="small-container">
|
|
43
|
-
<dx-empty-state title="No Results" size="small"></dx-empty-state>
|
|
44
|
-
</div>
|
|
45
|
-
`;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import Feature from "dx/feature";
|
|
2
|
-
import { createRenderComponent } from "utils-internal/tests";
|
|
3
|
-
import mockProps from "./mockProps";
|
|
4
|
-
|
|
5
|
-
const TAG = "dx-feature";
|
|
6
|
-
const render = createRenderComponent(TAG, Feature);
|
|
7
|
-
|
|
8
|
-
const dataCodeSample = {
|
|
9
|
-
title: "Redwoods Insurance",
|
|
10
|
-
label: "Featured Demo",
|
|
11
|
-
buttonHref: "https://github.com/trailheadapps/ebikes-lwc",
|
|
12
|
-
buttonLabel: "Explore on Github",
|
|
13
|
-
imageSrc:
|
|
14
|
-
"https://d12fd6m9xo0jeo.cloudfront.net/0953ee82-173a-484d-b4f4-7467bce5e200.jpg",
|
|
15
|
-
isExternalLink: "true",
|
|
16
|
-
variant: "display"
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
describe(TAG, () => {
|
|
20
|
-
it("renders an accessible feature with description on the left by default", () => {
|
|
21
|
-
const element = render(mockProps);
|
|
22
|
-
const sectionEl = element.shadowRoot.querySelector("section");
|
|
23
|
-
expect(sectionEl).not.toBeNull();
|
|
24
|
-
expect(sectionEl.className).toBe("description-left");
|
|
25
|
-
expect(element.shadowRoot.querySelector(".image-container")).toBe(null);
|
|
26
|
-
return expect(sectionEl).toBeAccessible();
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it("renders a feature with description on the rigth", () => {
|
|
30
|
-
const element = render(mockProps);
|
|
31
|
-
element.descriptionPosition = "right";
|
|
32
|
-
document.body.appendChild(element);
|
|
33
|
-
const sectionEl = element.shadowRoot.querySelector("section");
|
|
34
|
-
expect(sectionEl).not.toBeNull();
|
|
35
|
-
expect(sectionEl.className).toBe("description-right");
|
|
36
|
-
expect(element.shadowRoot.querySelector(".image-container")).toBe(null);
|
|
37
|
-
return expect(element).toBeAccessible();
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it("renders a feature for code-samples", () => {
|
|
41
|
-
const element = render(dataCodeSample);
|
|
42
|
-
document.body.appendChild(element);
|
|
43
|
-
const sectionEl = element.shadowRoot.querySelector("section");
|
|
44
|
-
expect(sectionEl).not.toBeNull();
|
|
45
|
-
expect(sectionEl.className).toBe("description-left");
|
|
46
|
-
const imgContainer =
|
|
47
|
-
element.shadowRoot.querySelector(".image-container");
|
|
48
|
-
expect(imgContainer).not.toBe(null);
|
|
49
|
-
return expect(element).toBeAccessible();
|
|
50
|
-
});
|
|
51
|
-
});
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
title: "Einstein Prediction Builder",
|
|
3
|
-
buttonHref: "https://lmgtfy.app",
|
|
4
|
-
buttonLabel: "Build a predictive app",
|
|
5
|
-
imageSrc: "https://i.imgur.com/FUsyxR5.jpg",
|
|
6
|
-
body:
|
|
7
|
-
"Build AI predictions into your <b>Salesforce</b> app for data stored in standard or custom objects using only clicks—then deploy and embed predictions onto any page in Salesforce."
|
|
8
|
-
};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
// This test requires a wrapper component that's not exposed in the build.
|
|
2
|
-
import FeatureGridTest from "test-components/featureGridTest";
|
|
3
|
-
import { createRenderComponent } from "utils-internal/tests";
|
|
4
|
-
|
|
5
|
-
const TAG = "dx-feature-grid";
|
|
6
|
-
const render = createRenderComponent(TAG, FeatureGridTest);
|
|
7
|
-
|
|
8
|
-
describe(TAG, () => {
|
|
9
|
-
it("renders a feature grid with mixed description positions", async () => {
|
|
10
|
-
const gridTestEl = render();
|
|
11
|
-
const featureEls = gridTestEl.shadowRoot.querySelectorAll("dx-feature");
|
|
12
|
-
|
|
13
|
-
await Promise.resolve();
|
|
14
|
-
expect(featureEls.length).toBe(3);
|
|
15
|
-
expect(featureEls[0].descriptionPosition).toBe("left");
|
|
16
|
-
expect(featureEls[1].descriptionPosition).toBe("right");
|
|
17
|
-
expect(featureEls[2].descriptionPosition).toBe("left");
|
|
18
|
-
|
|
19
|
-
return expect(gridTestEl).toBeAccessible();
|
|
20
|
-
});
|
|
21
|
-
});
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { html } from "lit-html";
|
|
2
|
-
|
|
3
|
-
export default {
|
|
4
|
-
title: "dx/dx-feature-grid",
|
|
5
|
-
component: "dx-feature-grid"
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const codeSampleStyles = () => html `
|
|
11
|
-
<style>
|
|
12
|
-
.code-samples-feature {
|
|
13
|
-
--dx-c-feature-img-box-shadow: unset;
|
|
14
|
-
--dx-c-feature-description-left-img-src: unset;
|
|
15
|
-
--dx-c-feature-description-max-width: 100%;
|
|
16
|
-
--dx-c-feature-description-font-size: 20px;
|
|
17
|
-
--dx-c-feature-img-margin-left: -40px;
|
|
18
|
-
--dx-c-feature-img-container-padding: 0px;
|
|
19
|
-
--dx-c-feature-image-max-width: 110%;
|
|
20
|
-
}
|
|
21
|
-
</style>`
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
export const Base = () => html`
|
|
25
|
-
<dx-feature-grid>
|
|
26
|
-
<dx-feature
|
|
27
|
-
title="Einstein Prediction Builder"
|
|
28
|
-
button-href="https://lmgtfy.app"
|
|
29
|
-
button-label="Build a predictive app"
|
|
30
|
-
image-src="https://i.imgur.com/FUsyxR5.jpg"
|
|
31
|
-
>
|
|
32
|
-
Build AI predictions into your Salesforce app for data stored in
|
|
33
|
-
standard or custom objects using only clicks—then deploy and embed
|
|
34
|
-
predictions onto any page in Salesforce.
|
|
35
|
-
</dx-feature>
|
|
36
|
-
|
|
37
|
-
<dx-feature
|
|
38
|
-
title="Einstein Next Best Action"
|
|
39
|
-
button-href="https://lmgtfy.app"
|
|
40
|
-
button-label="Learn how Next Best Action works"
|
|
41
|
-
image-src="https://i.imgur.com/FUsyxR5.jpg"
|
|
42
|
-
>
|
|
43
|
-
Make predictions actionable by unifying data from your organization
|
|
44
|
-
and other sources to create optimal recommendations, and then
|
|
45
|
-
automate them using flows.
|
|
46
|
-
</dx-feature>
|
|
47
|
-
|
|
48
|
-
<dx-feature
|
|
49
|
-
title="Einstein Chatbots"
|
|
50
|
-
button-href="https://lmgtfy.app"
|
|
51
|
-
button-label="Learn chatbot basics"
|
|
52
|
-
image-src="https://i.imgur.com/FUsyxR5.jpg"
|
|
53
|
-
>
|
|
54
|
-
Automate support with an Einstein chatbot to make your apps smarter
|
|
55
|
-
without code, and extend the functionality of your chatbot using
|
|
56
|
-
Lightning Web Components, Apex, or external integrations.
|
|
57
|
-
</dx-feature>
|
|
58
|
-
</dx-feature-grid>
|
|
59
|
-
`
|
|
60
|
-
|
|
61
|
-
export const CodeSamples = () => html `
|
|
62
|
-
${codeSampleStyles()}
|
|
63
|
-
<dx-feature-grid>
|
|
64
|
-
<dx-feature
|
|
65
|
-
class="code-samples-feature"
|
|
66
|
-
title="E-Bikes"
|
|
67
|
-
label="Featured Demo"
|
|
68
|
-
button-href="https://github.com/trailheadapps/ebikes-lwc"
|
|
69
|
-
button-label="Explore on Github"
|
|
70
|
-
image-src="https://trailhead-sample-apps-temp.s3.amazonaws.com/ecars.png"
|
|
71
|
-
is-external-link="true"
|
|
72
|
-
variant="display"
|
|
73
|
-
>
|
|
74
|
-
Sample retail application. This application helps E-Bikes, a fictitious electric
|
|
75
|
-
bicycle manufacturer, manage their products and reseller orders using a rich User
|
|
76
|
-
Experience. Explore this application, that also integrates with Salesfoce
|
|
77
|
-
Communities, and learn how to build rich User Experiences with Lightning Web
|
|
78
|
-
Components using different data access strategies.
|
|
79
|
-
</dx-feature>
|
|
80
|
-
|
|
81
|
-
<dx-feature
|
|
82
|
-
class="code-samples-feature"
|
|
83
|
-
title="Easy Spaces"
|
|
84
|
-
label="Featured Demo"
|
|
85
|
-
button-href="https://github.com/trailheadapps/easy-spaces-lwc"
|
|
86
|
-
button-label="Explore on Github"
|
|
87
|
-
image-src="https://d12fd6m9xo0jeo.cloudfront.net/cdb2ca7c-824f-4037-9187-dab8b58ff50c.jpg"
|
|
88
|
-
is-external-link="true"
|
|
89
|
-
variant="display"
|
|
90
|
-
>
|
|
91
|
-
Sample event management application. Easy Spaces is a fictitious event management company.
|
|
92
|
-
This application helps Easy Spaces event coordinators manage reservations and find the
|
|
93
|
-
right theme for their customers. Regardless of the industry you work in,
|
|
94
|
-
this app demonstrates how to build flexible, user-centric experiences with dynamic flows,
|
|
95
|
-
Flow Actions, and object-agnostic Lightning components. This app also demonstrates how
|
|
96
|
-
to structure your source code for modular distribution using unlocked packages.
|
|
97
|
-
</dx-feature>
|
|
98
|
-
|
|
99
|
-
<dx-feature
|
|
100
|
-
class="code-samples-feature"
|
|
101
|
-
title="Redwoods Insurance"
|
|
102
|
-
label="Featured Demo"
|
|
103
|
-
button-href="https://github.com/trailheadapps/ebikes-lwc"
|
|
104
|
-
button-label="Explore on Github"
|
|
105
|
-
image-src="https://d12fd6m9xo0jeo.cloudfront.net/0953ee82-173a-484d-b4f4-7467bce5e200.jpg"
|
|
106
|
-
is-external-link="true"
|
|
107
|
-
variant="display"
|
|
108
|
-
>
|
|
109
|
-
Sample car insurance app. Redwoods Insurance is a fictitious car insurance company.
|
|
110
|
-
This application, which consists of a Salesforce Lightning Console app and a mobile
|
|
111
|
-
application for iOS, helps agents and customers with insurance claims.
|
|
112
|
-
Customers use the mobile application to capture pictures and other
|
|
113
|
-
details about accidents. The sample iOS application uses the new Mobile SDK
|
|
114
|
-
to provide rich, native connections to a customer's device.
|
|
115
|
-
Redwoods Insurance claims adjusters use the Salesforce console app to view
|
|
116
|
-
multimedia files uploaded by customers and manage the claims process.
|
|
117
|
-
</dx-feature>
|
|
118
|
-
</dx-feature-grid>`;
|
|
119
|
-
|
|
120
|
-
|