@salesforcedevs/dx-components 0.26.1-alpha.10 → 0.26.1-alpha.14
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 +1 -1
- package/package.json +1 -7
- package/src/assets/icons/action-sprite/svg/symbols.svg +1 -0
- package/src/assets/icons/brand-sprite/svg/symbols.svg +1381 -0
- package/src/assets/icons/custom-sprite/svg/symbols.svg +1 -0
- package/src/assets/icons/doctype-sprite/svg/symbols.svg +1 -0
- package/src/assets/icons/general-sprite/svg/symbols.svg +3013 -0
- package/src/assets/icons/salesforcebrand-sprite/svg/symbols.svg +257 -0
- package/src/assets/icons/standard-sprite/svg/symbols.svg +1 -0
- package/src/assets/icons/utility-sprite/svg/symbols.svg +1 -0
- package/src/assets/svg/card-news-learn-moar.svg +415 -0
- package/src/assets/svg/cloud-1.svg +24 -0
- package/src/assets/svg/cloud-2.svg +18 -0
- package/src/assets/svg/codey.svg +93 -0
- package/src/assets/svg/command.svg +9 -0
- package/src/assets/svg/control.svg +10 -0
- package/src/assets/svg/docs-empty-state-small.svg +72 -0
- package/src/assets/svg/docs-empty-state.svg +86 -0
- package/src/assets/svg/dsc-home-news-bear.svg +3 -0
- package/src/assets/svg/dsc-home-news-community.png +0 -0
- package/src/assets/svg/dsc-home-news-goatbear.svg +257 -0
- package/src/assets/svg/dsc-home-news-samplegallery.svg +76 -0
- package/src/assets/svg/empty-state-assistant.svg +1 -0
- package/src/assets/svg/fch-blog-cloud-1.png +0 -0
- package/src/assets/svg/fch-blog-cloud-2.png +0 -0
- package/src/assets/svg/fch-blog-planet.png +0 -0
- package/src/assets/svg/feature-backdrop1.svg +10 -0
- package/src/assets/svg/feature-backdrop2.svg +10 -0
- package/src/assets/svg/featured-demo-art-blank.svg +76 -0
- package/src/assets/svg/featured-demo-art-eBikes.svg +77 -0
- package/src/assets/svg/footer-graphic-large.svg +207 -0
- package/src/assets/svg/footer-graphic-mountains-small.svg +17 -0
- package/src/assets/svg/footer-graphic-mountains.svg +21 -0
- package/src/assets/svg/footer-graphic-trees-small.svg +33 -0
- package/src/assets/svg/footer-graphic-trees.svg +62 -0
- package/src/assets/svg/lake-mountain.svg +79 -0
- package/src/assets/svg/podcast-subscription-clouds-small.svg +49 -0
- package/src/assets/svg/podcast-subscription-clouds.svg +57 -0
- package/src/assets/svg/podcasts-subscription-apple.svg +164 -0
- package/src/assets/svg/podcasts-subscription-google.svg +29 -0
- package/src/assets/svg/podcasts-subscription-spotify.svg +11 -0
- package/src/assets/svg/salesforce-cloud.svg +7 -0
- package/src/assets/svg/salesforce-logo-corporate.svg +21 -0
- package/src/assets/svg/salesforce-logo.svg +14 -0
- package/src/assets/svg/sidebar-loading.svg +34 -0
- package/src/assets/svg/slack-cta-podcast-background-left.svg +28 -0
- package/src/assets/svg/slack-cta-podcast-background-right.svg +38 -0
- package/src/assets/svg/trees.svg +42 -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/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/sidebarSearch/sidebarSearch.ts +2 -2
- package/src/modules/dx/typeBadge/typeBadge.ts +1 -1
- package/src/modules/utils/archiveCard/archiveCard.ts +35 -0
- package/src/modules/utils/coveo/coveo.ts +70 -0
- package/src/modules/utils/css/css.ts +43 -0
- package/src/modules/utils/devices/devices.ts +1 -0
- package/src/modules/utils/headerBase/headerBase.ts +204 -0
- package/src/modules/utils/highlight/highlight.ts +1 -1
- package/src/modules/utils/options/options.ts +39 -0
- package/src/modules/utils/prismjs/prismjs.html +3 -0
- package/src/modules/utils/prismjs/prismjs.ts +3321 -0
- package/src/modules/utils/recentSearches/recentSearches.ts +57 -0
- package/src/modules/utils/regexps/regexps.ts +5 -0
- package/src/modules/utils/seo/seo.ts +4 -0
- package/src/modules/utils/slot/slot.ts +17 -0
- package/src/modules/utils/wordpress/wordpress.ts +13 -0
- package/src/modules/dx/.DS_Store +0 -0
- 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 -48
- 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/utils/highlight/__tests__/highlight.test.ts +0 -108
- package/src/modules/utils/highlight/__tests__/mockProps.ts +0 -45
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { LightningElement, api } from "lwc";
|
|
2
|
+
import cx from "classnames";
|
|
3
|
+
import { Brand, Option } from "typings/custom";
|
|
4
|
+
import { toJson } from "utils/normalizers";
|
|
5
|
+
import { track } from "dx/instrumentation";
|
|
6
|
+
|
|
7
|
+
const VALID_BRANDS = [
|
|
8
|
+
"analytics",
|
|
9
|
+
"commerce",
|
|
10
|
+
"employees",
|
|
11
|
+
"industries",
|
|
12
|
+
"integration",
|
|
13
|
+
"learning",
|
|
14
|
+
"marketing",
|
|
15
|
+
"partners",
|
|
16
|
+
"platform",
|
|
17
|
+
"sales",
|
|
18
|
+
"service",
|
|
19
|
+
"success"
|
|
20
|
+
];
|
|
21
|
+
|
|
22
|
+
export const ANALYTICS_INFO = {
|
|
23
|
+
clickText: "Sign Up",
|
|
24
|
+
itemTitle: "Sign Up Header Button",
|
|
25
|
+
elementType: "button",
|
|
26
|
+
destinationType: "internal",
|
|
27
|
+
ctaClick: true
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export abstract class HeaderBase extends LightningElement {
|
|
31
|
+
@api bailHref?: string | null = null;
|
|
32
|
+
@api bailLabel?: string | null = null;
|
|
33
|
+
@api brand: Brand | null = null;
|
|
34
|
+
@api coveoOrganizationId: string | null = null;
|
|
35
|
+
@api coveoPublicAccessToken: string | null = null;
|
|
36
|
+
@api coveoSearchHub: string | null = null;
|
|
37
|
+
@api coveoSearchPipeline: string | null = null;
|
|
38
|
+
@api signupLink?: string | null = null;
|
|
39
|
+
@api href = null;
|
|
40
|
+
@api subtitle!: string;
|
|
41
|
+
@api title: string = "Salesforce";
|
|
42
|
+
@api version?: string | null = null;
|
|
43
|
+
@api bannerMarkup =
|
|
44
|
+
'<span><a href="https://forms.gle/TdSyKFPHXoBx7seM9" target="blank">Share your feedback</a>about our new site.</span>';
|
|
45
|
+
|
|
46
|
+
@api
|
|
47
|
+
get navItems() {
|
|
48
|
+
return this._navItems;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
set navItems(value) {
|
|
52
|
+
this._navItems = toJson(value);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@api
|
|
56
|
+
get versions() {
|
|
57
|
+
return this._versions;
|
|
58
|
+
}
|
|
59
|
+
set versions(value) {
|
|
60
|
+
this._versions = toJson(value);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
private _navItems!: Option[];
|
|
64
|
+
private _versions!: Option[];
|
|
65
|
+
private matchMedia!: MediaQueryList;
|
|
66
|
+
protected mobile: boolean = false;
|
|
67
|
+
private mobileNavMenuValue: string | null = null;
|
|
68
|
+
private showMobileNavMenu: boolean = false;
|
|
69
|
+
private showNavScrollShadow: boolean = false;
|
|
70
|
+
protected isSearchOpen: boolean = false;
|
|
71
|
+
|
|
72
|
+
get url() {
|
|
73
|
+
return this.href ? new URL(this.href!) : window.location;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
get hasBailLink(): boolean {
|
|
77
|
+
return !!(this.bailHref && this.bailLabel);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
get hasSearch() {
|
|
81
|
+
return (
|
|
82
|
+
this.coveoOrganizationId &&
|
|
83
|
+
this.coveoPublicAccessToken &&
|
|
84
|
+
this.coveoSearchHub &&
|
|
85
|
+
this.coveoSearchPipeline
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
get pathname() {
|
|
90
|
+
return this.url.pathname;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
get className() {
|
|
94
|
+
return cx(
|
|
95
|
+
this.hasNavItems && "has-nav-items",
|
|
96
|
+
this.showMobileNavMenu && "state-show-mobile-nav",
|
|
97
|
+
this.showNavScrollShadow &&
|
|
98
|
+
!this.showMobileNavMenu &&
|
|
99
|
+
"has-navscrollshadow",
|
|
100
|
+
this.additionalClasses()
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
get versionLabel() {
|
|
105
|
+
const selectedVersion = (this.versions || []).find(
|
|
106
|
+
(v) => v.id === this.version
|
|
107
|
+
);
|
|
108
|
+
return selectedVersion ? selectedVersion.label : "";
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
get mobileMenuIconSymbol() {
|
|
112
|
+
return this.showMobileNavMenu ? "close" : "rows";
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
get isValidBrand() {
|
|
116
|
+
return this.brand && VALID_BRANDS.includes(this.brand);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
get hasNavItems(): boolean {
|
|
120
|
+
return this.navItems && this.navItems.length > 0;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
connectedCallback() {
|
|
124
|
+
this.matchMedia = window.matchMedia(
|
|
125
|
+
`(max-width: ${this.mobileBreakpoint()})`
|
|
126
|
+
);
|
|
127
|
+
this.onMediaChange(this.matchMedia);
|
|
128
|
+
this.matchMedia.addEventListener("change", this.onMediaChange);
|
|
129
|
+
this.hashLinkScroll();
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
disconnectedCallback() {
|
|
133
|
+
this.matchMedia.removeEventListener("change", this.onMediaChange);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Temporary solution to restore native anchor scrolling
|
|
137
|
+
private hashLinkScroll() {
|
|
138
|
+
const hash = window.location.hash;
|
|
139
|
+
|
|
140
|
+
if (hash !== "") {
|
|
141
|
+
// Push onto callback queue so it runs after the DOM is updated
|
|
142
|
+
setTimeout(() => {
|
|
143
|
+
const id = hash.replace("#", "");
|
|
144
|
+
const element = document.getElementById(id);
|
|
145
|
+
if (element && element.scrollIntoView) {
|
|
146
|
+
element.scrollIntoView();
|
|
147
|
+
}
|
|
148
|
+
}, 0);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
private handleStateChange(event: CustomEvent<boolean>) {
|
|
153
|
+
event.stopPropagation();
|
|
154
|
+
this.isSearchOpen = event.detail;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
onVersionChange(e: CustomEvent) {
|
|
158
|
+
this.dispatchEvent(
|
|
159
|
+
new CustomEvent("versionchange", {
|
|
160
|
+
detail: e.detail
|
|
161
|
+
})
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
onRequestOpenNavMenu(e: { detail: string }) {
|
|
166
|
+
this.mobileNavMenuValue = e.detail;
|
|
167
|
+
this.showMobileNavMenu = true;
|
|
168
|
+
}
|
|
169
|
+
private onMobileNavMenuChange(e: { detail: string }) {
|
|
170
|
+
this.mobileNavMenuValue = e.detail;
|
|
171
|
+
}
|
|
172
|
+
private toggleMobileNavMenu() {
|
|
173
|
+
this.showMobileNavMenu = !this.showMobileNavMenu;
|
|
174
|
+
}
|
|
175
|
+
private closeMobileNavMenu() {
|
|
176
|
+
this.showMobileNavMenu = false;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
private onNavScroll(e: Event) {
|
|
180
|
+
this.showNavScrollShadow =
|
|
181
|
+
(<HTMLElement>e.currentTarget).scrollLeft > 4;
|
|
182
|
+
}
|
|
183
|
+
private onMediaChange = (e: MediaQueryListEvent | MediaQueryList) => {
|
|
184
|
+
if (!e.matches) {
|
|
185
|
+
this.mobile = false;
|
|
186
|
+
this.closeMobileNavMenu();
|
|
187
|
+
} else {
|
|
188
|
+
this.mobile = true;
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
private handleSignUpClick(e: PointerEvent) {
|
|
193
|
+
track(e.currentTarget!, "custEv_signupStart", {
|
|
194
|
+
...ANALYTICS_INFO,
|
|
195
|
+
clickUrl: this.signupLink
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
protected additionalClasses(): string {
|
|
200
|
+
return "";
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
protected abstract mobileBreakpoint(): string;
|
|
204
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Option } from "typings/custom";
|
|
2
|
+
|
|
3
|
+
const deepmapper = (
|
|
4
|
+
_options: Option[],
|
|
5
|
+
_callback: (option: Option, lavel: number) => Option,
|
|
6
|
+
level: number = 0
|
|
7
|
+
): Option[] => {
|
|
8
|
+
const _level = level + 1;
|
|
9
|
+
return _options?.map((option: Option) =>
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
11
|
+
option.options
|
|
12
|
+
? {
|
|
13
|
+
...option,
|
|
14
|
+
options: deepmapper(option.options, _callback, _level)
|
|
15
|
+
}
|
|
16
|
+
: _callback(option, _level)
|
|
17
|
+
);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const deepmapOptions = (
|
|
21
|
+
options: Option[],
|
|
22
|
+
callback: (option: Option, index: number, level: number) => Option
|
|
23
|
+
): Option[] => {
|
|
24
|
+
let index = 0;
|
|
25
|
+
return deepmapper(options, (option, level) => {
|
|
26
|
+
const newOption = callback(option, index, level);
|
|
27
|
+
index += 1;
|
|
28
|
+
return newOption;
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export const getOptionsCount = (options: Option[]) => {
|
|
33
|
+
let count = 0;
|
|
34
|
+
deepmapper(options, (option) => {
|
|
35
|
+
count += 1;
|
|
36
|
+
return option;
|
|
37
|
+
});
|
|
38
|
+
return count;
|
|
39
|
+
};
|