@salesforcedevs/dx-components 0.17.0 → 0.17.1-review-diff1
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 +85 -26
- package/package.json +34 -19
- package/src/assets/icons/brand-sprite/svg/symbols.svg +23 -5
- package/src/assets/icons/salesforcebrand-sprite/svg/symbols.svg +909 -107
- package/src/assets/icons/utility-sprite/svg/symbols.svg +2 -1
- package/src/modules/dx/agenda/agenda.css +97 -0
- package/src/modules/dx/agenda/agenda.html +32 -0
- package/src/modules/dx/agenda/agenda.ts +26 -0
- package/src/modules/dx/alert/alert.css +103 -0
- package/src/modules/dx/alert/alert.html +37 -0
- package/src/modules/dx/alert/alert.ts +137 -0
- package/src/modules/dx/audio/audio.css +276 -0
- package/src/modules/dx/audio/audio.html +158 -0
- package/src/modules/dx/audio/audio.ts +484 -0
- package/src/modules/dx/banner/banner.css +3 -3
- package/src/modules/dx/banner/banner.ts +3 -5
- package/src/modules/dx/brandThemeProvider/brandThemeProvider.ts +1 -1
- package/src/modules/dx/breadcrumbs/breadcrumbs.css +4 -4
- package/src/modules/dx/breadcrumbs/breadcrumbs.html +1 -1
- package/src/modules/dx/breadcrumbs/breadcrumbs.ts +28 -27
- package/src/modules/dx/button/button.css +79 -25
- package/src/modules/dx/button/button.html +4 -2
- package/src/modules/dx/button/button.ts +41 -14
- package/src/modules/dx/buttonToggle/buttonToggle.css +50 -0
- package/src/modules/dx/buttonToggle/buttonToggle.html +17 -0
- package/src/modules/dx/buttonToggle/buttonToggle.ts +75 -0
- package/src/modules/dx/cardBlogPost/cardBlogPost.css +2 -2
- package/src/modules/dx/cardBlogPost/cardBlogPost.html +5 -4
- package/src/modules/dx/cardBlogPost/cardBlogPost.ts +27 -4
- package/src/modules/dx/cardCallout/cardCallout.css +5 -5
- package/src/modules/dx/cardCallout/cardCallout.html +1 -1
- package/src/modules/dx/cardCallout/cardCallout.ts +14 -10
- package/src/modules/dx/cardClickthrough/cardClickthrough.css +105 -0
- package/src/modules/dx/cardClickthrough/cardClickthrough.html +42 -0
- package/src/modules/dx/cardClickthrough/cardClickthrough.ts +139 -0
- package/src/modules/dx/cardContent/cardContent.css +21 -9
- package/src/modules/dx/cardContent/cardContent.html +33 -14
- package/src/modules/dx/cardContent/cardContent.ts +80 -15
- package/src/modules/dx/cardDemo/cardDemo.css +1 -1
- package/src/modules/dx/cardDemo/cardDemo.html +1 -1
- package/src/modules/dx/cardDemo/cardDemo.ts +1 -1
- package/src/modules/dx/cardDocs/cardDocs.css +8 -8
- package/src/modules/dx/cardDocs/cardDocs.html +25 -5
- package/src/modules/dx/cardDocs/cardDocs.ts +51 -2
- package/src/modules/dx/cardEvent/cardEvent.css +31 -17
- package/src/modules/dx/cardEvent/cardEvent.html +17 -18
- package/src/modules/dx/cardEvent/cardEvent.ts +11 -3
- package/src/modules/dx/cardExpanded/cardExpanded.css +60 -0
- package/src/modules/dx/cardExpanded/cardExpanded.html +35 -0
- package/src/modules/dx/cardExpanded/cardExpanded.ts +63 -0
- package/src/modules/dx/cardGrid/cardGrid.css +1 -85
- package/src/modules/dx/cardGrid/cardGrid.html +16 -44
- package/src/modules/dx/cardGrid/cardGrid.ts +32 -139
- package/src/modules/dx/cardGridDocs/cardGridDocs.css +73 -0
- package/src/modules/dx/cardGridDocs/cardGridDocs.html +67 -0
- package/src/modules/dx/cardGridDocs/cardGridDocs.ts +86 -0
- package/src/modules/dx/cardMinimal/cardMinimal.css +31 -0
- package/src/modules/dx/cardMinimal/cardMinimal.html +8 -0
- package/src/modules/dx/cardMinimal/cardMinimal.ts +3 -0
- package/src/modules/dx/cardNews/cardNews.css +34 -15
- package/src/modules/dx/cardNews/cardNews.html +8 -1
- package/src/modules/dx/cardNews/cardNews.ts +23 -5
- package/src/modules/dx/cardPodcastEpisode/cardPodcastEpisode.css +3 -3
- package/src/modules/dx/cardPodcastEpisode/cardPodcastEpisode.html +2 -1
- package/src/modules/dx/cardPodcastEpisode/cardPodcastEpisode.ts +1 -1
- package/src/modules/dx/cardSmall/cardSmall.css +3 -7
- package/src/modules/dx/cardSmall/cardSmall.html +2 -2
- package/src/modules/dx/cardSmall/cardSmall.ts +2 -2
- package/src/modules/dx/cardStep/cardStep.css +128 -0
- package/src/modules/dx/cardStep/cardStep.html +31 -0
- package/src/modules/dx/cardStep/cardStep.ts +55 -0
- package/src/modules/dx/cardStep/mockProps.ts +59 -0
- package/src/modules/dx/cardTestimonial/cardTestimonial.css +24 -0
- package/src/modules/dx/cardTestimonial/cardTestimonial.html +15 -0
- package/src/modules/dx/cardTestimonial/cardTestimonial.ts +18 -0
- package/src/modules/dx/cardTitle/cardTitle.css +6 -4
- package/src/modules/dx/cardTitle/cardTitle.html +1 -1
- package/src/modules/dx/cardTitle/cardTitle.ts +4 -4
- package/src/modules/dx/cardTrailheadModule/cardTrailheadModule.css +2 -2
- package/src/modules/dx/cardTrailheadModule/cardTrailheadModule.html +2 -2
- package/src/modules/dx/cardTrailheadModule/cardTrailheadModule.ts +2 -1
- package/src/modules/dx/cardTrial/cardTrial.css +134 -0
- package/src/modules/dx/cardTrial/cardTrial.html +207 -0
- package/src/modules/dx/cardTrial/cardTrial.ts +147 -0
- package/src/modules/dx/cardTrialExpanded/cardTrialExpanded.css +159 -0
- package/src/modules/dx/cardTrialExpanded/cardTrialExpanded.html +91 -0
- package/src/modules/dx/cardTrialExpanded/cardTrialExpanded.ts +84 -0
- package/src/modules/dx/cardVideoPreview/cardVideoPreview.css +2 -2
- package/src/modules/dx/cardVideoPreview/cardVideoPreview.html +3 -2
- package/src/modules/dx/cardVideoPreview/cardVideoPreview.ts +2 -2
- package/src/modules/dx/checkbox/checkbox.css +9 -4
- package/src/modules/dx/checkbox/checkbox.ts +27 -2
- package/src/modules/dx/checkboxGroup/checkboxGroup.css +1 -1
- package/src/modules/dx/checkboxGroup/checkboxGroup.ts +1 -1
- package/src/modules/dx/checkboxNative/checkboxNative.css +18 -0
- package/src/modules/dx/checkboxNative/checkboxNative.html +14 -0
- package/src/modules/dx/checkboxNative/checkboxNative.ts +39 -0
- package/src/modules/dx/codeBlock/codeBlock.css +22 -15
- package/src/modules/dx/codeBlock/codeBlock.html +3 -3
- package/src/modules/dx/codeBlock/codeBlock.ts +149 -61
- package/src/modules/dx/codeBlock/customLanguages.js +48 -0
- package/src/modules/dx/codeBlock/darkAndLightThemes.css +177 -0
- package/src/modules/dx/coveoRecommendations/coveoRecommendations.css +8 -0
- package/src/modules/dx/coveoRecommendations/coveoRecommendations.html +27 -0
- package/src/modules/dx/coveoRecommendations/coveoRecommendations.ts +171 -0
- package/src/modules/dx/darkModeManager/darkModeManager.ts +86 -0
- package/src/modules/dx/dropdown/dropdown.css +3 -5
- package/src/modules/dx/dropdown/dropdown.html +5 -1
- package/src/modules/dx/dropdown/dropdown.ts +18 -11
- package/src/modules/dx/dropdownOption/dropdownOption.css +125 -5
- package/src/modules/dx/dropdownOption/dropdownOption.html +7 -2
- package/src/modules/dx/dropdownOption/dropdownOption.ts +27 -9
- package/src/modules/dx/embeddedVideo/embeddedVideo.css +35 -0
- package/src/modules/dx/embeddedVideo/embeddedVideo.html +56 -0
- package/src/modules/dx/embeddedVideo/embeddedVideo.ts +40 -0
- package/src/modules/dx/emptyState/emptyState.css +76 -4
- package/src/modules/dx/emptyState/emptyState.html +16 -4
- package/src/modules/dx/emptyState/emptyState.ts +57 -7
- package/src/modules/dx/errorFallback/errorFallback.css +27 -0
- package/src/modules/dx/errorFallback/errorFallback.html +11 -0
- package/src/modules/dx/errorFallback/errorFallback.ts +7 -0
- package/src/modules/dx/eyebrow/eyebrow.css +44 -0
- package/src/modules/dx/eyebrow/eyebrow.html +16 -0
- package/src/modules/dx/eyebrow/eyebrow.ts +32 -0
- package/src/modules/dx/faq/faq.css +58 -0
- package/src/modules/dx/faq/faq.html +36 -0
- package/src/modules/dx/faq/faq.ts +16 -0
- package/src/modules/dx/feature/feature.css +16 -6
- package/src/modules/dx/feature/feature.html +9 -7
- package/src/modules/dx/feature/feature.ts +17 -4
- package/src/modules/dx/featureFlag/featureFlag.css +3 -0
- package/src/modules/dx/featureFlag/featureFlag.html +3 -0
- package/src/modules/dx/featureFlag/featureFlag.ts +41 -0
- package/src/modules/dx/featuredContentHeader/featuredContentHeader.css +182 -146
- package/src/modules/dx/featuredContentHeader/featuredContentHeader.html +123 -87
- package/src/modules/dx/featuredContentHeader/featuredContentHeader.ts +179 -30
- package/src/modules/dx/featuredContentHeader/svgs.ts +5 -4
- package/src/modules/dx/featuresList/featuresList.css +5 -5
- package/src/modules/dx/featuresList/featuresList.html +2 -2
- package/src/modules/dx/featuresList/featuresList.ts +2 -3
- package/src/modules/dx/featuresListHeader/featuresListHeader.css +144 -0
- package/src/modules/dx/featuresListHeader/featuresListHeader.html +58 -0
- package/src/modules/dx/featuresListHeader/featuresListHeader.ts +103 -0
- package/src/modules/dx/filterMenu/filterMenu.css +134 -0
- package/src/modules/dx/filterMenu/filterMenu.html +111 -0
- package/src/modules/dx/filterMenu/filterMenu.ts +119 -0
- package/src/modules/dx/footer/footer.css +72 -41
- package/src/modules/dx/footer/footer.html +65 -65
- package/src/modules/dx/footer/footer.ts +66 -43
- package/src/modules/dx/footer/links.ts +142 -54
- package/src/modules/dx/footerOption/footerOption.css +10 -3
- package/src/modules/dx/footerOption/footerOption.html +1 -10
- package/src/modules/dx/footerOption/footerOption.ts +21 -7
- package/src/modules/dx/formattedDateTime/formattedDateTime.ts +22 -14
- package/src/modules/dx/formattedRichText/formattedRichText.css +32 -0
- package/src/modules/dx/formattedRichText/formattedRichText.html +3 -0
- package/src/modules/dx/formattedRichText/formattedRichText.ts +17 -0
- package/src/modules/dx/grid/grid.css +7 -2
- package/src/modules/dx/grid/grid.html +15 -0
- package/src/modules/dx/grid/grid.ts +78 -2
- package/src/modules/dx/groupText/groupText.css +5 -9
- package/src/modules/dx/groupText/groupText.html +8 -3
- package/src/modules/dx/groupText/groupText.ts +21 -14
- package/src/modules/dx/headerMobileNavMenu/headerMobileNavMenu.css +3 -2
- package/src/modules/dx/headerMobileNavMenu/headerMobileNavMenu.ts +5 -5
- package/src/modules/dx/headerMobileNavMenuOption/headerMobileNavMenuOption.ts +10 -2
- package/src/modules/dx/headerNav/headerNav.css +9 -1
- package/src/modules/dx/headerNav/headerNav.html +1 -0
- package/src/modules/dx/headerNav/headerNav.ts +10 -6
- package/src/modules/dx/helmet/helmet.css +3 -3
- package/src/modules/dx/helmet/helmet.html +2 -2
- package/src/modules/dx/helmet/helmet.ts +2 -2
- package/src/modules/dx/hr/hr.css +10 -10
- package/src/modules/dx/hr/hr.ts +7 -1
- package/src/modules/dx/icon/icon.css +2 -2
- package/src/modules/dx/icon/icon.html +20 -9
- package/src/modules/dx/icon/icon.ts +6 -1
- package/src/modules/dx/iconBadge/iconBadge.css +13 -1
- package/src/modules/dx/iconBadge/iconBadge.html +3 -3
- package/src/modules/dx/iconBadge/iconBadge.ts +23 -7
- package/src/modules/dx/imageAndLabel/imageAndLabel.css +4 -8
- package/src/modules/dx/imageAndLabel/imageAndLabel.html +18 -2
- package/src/modules/dx/input/input.css +24 -6
- package/src/modules/dx/input/input.html +6 -1
- package/src/modules/dx/input/input.ts +76 -10
- package/src/modules/dx/interactiveImage/interactiveImage.css +2 -2
- package/src/modules/dx/interactiveImage/interactiveImage.html +2 -2
- package/src/modules/dx/interactiveImage/interactiveImage.ts +2 -2
- package/src/modules/dx/logo/logo.css +2 -3
- package/src/modules/dx/logo/logo.html +1 -1
- package/src/modules/dx/logo/logo.ts +3 -2
- package/src/modules/dx/mainContentHeader/mainContentHeader.css +197 -0
- package/src/modules/dx/mainContentHeader/mainContentHeader.html +75 -0
- package/src/modules/dx/mainContentHeader/mainContentHeader.ts +98 -0
- package/src/modules/dx/metadataBadge/metadataBadge.css +41 -0
- package/src/modules/dx/metadataBadge/metadataBadge.html +5 -0
- package/src/modules/dx/metadataBadge/metadataBadge.ts +24 -0
- package/src/modules/dx/modal/modal.css +7 -0
- package/src/modules/dx/modal/modal.html +13 -0
- package/src/modules/dx/modal/modal.ts +98 -0
- package/src/modules/dx/modalDrawer/modalDrawer.css +41 -0
- package/src/modules/dx/modalDrawer/modalDrawer.html +11 -0
- package/src/modules/dx/modalDrawer/modalDrawer.ts +33 -0
- package/src/modules/dx/pagination/pagination.css +2 -3
- package/src/modules/dx/pagination/pagination.ts +45 -8
- package/src/modules/dx/podcastHost/podcastHost.css +11 -4
- package/src/modules/dx/podcastHost/podcastHost.html +8 -9
- package/src/modules/dx/popover/popover.css +31 -6
- package/src/modules/dx/popover/popover.html +1 -1
- package/src/modules/dx/popover/popover.ts +112 -47
- package/src/modules/dx/radioGroup/radioGroup.css +1 -1
- package/src/modules/dx/radioGroup/radioGroup.ts +1 -1
- package/src/modules/dx/redirectChecker/redirectChecker.html +1 -0
- package/src/modules/dx/redirectChecker/redirectChecker.ts +10 -0
- package/src/modules/dx/relativeDateTime/relativeDateTime.ts +23 -94
- package/src/modules/dx/scrollManager/scrollManager.html +1 -0
- package/src/modules/dx/scrollManager/scrollManager.ts +212 -0
- package/src/modules/dx/searchResults/coveo.css +2138 -3126
- package/src/modules/dx/searchResults/resultsTemplate.js +141 -0
- package/src/modules/dx/searchResults/searchResults.css +136 -19
- package/src/modules/dx/searchResults/searchResults.html +7 -4
- package/src/modules/dx/searchResults/searchResults.ts +378 -37
- package/src/modules/dx/section/section.css +40 -7
- package/src/modules/dx/section/section.html +37 -7
- package/src/modules/dx/section/section.ts +45 -13
- package/src/modules/dx/sectionBanner/sectionBanner.css +145 -0
- package/src/modules/dx/sectionBanner/sectionBanner.html +41 -0
- package/src/modules/dx/sectionBanner/sectionBanner.ts +128 -0
- package/src/modules/dx/sectionSignup/sectionSignup.ts +2 -2
- package/src/modules/dx/select/select.css +173 -10
- package/src/modules/dx/select/select.html +54 -53
- package/src/modules/dx/select/select.ts +153 -10
- package/src/modules/dx/sidebar/sidebar.css +44 -130
- package/src/modules/dx/sidebar/sidebar.html +114 -50
- package/src/modules/dx/sidebar/sidebar.ts +159 -116
- package/src/modules/dx/sidebarFooterNav/sidebarFooterNav.css +49 -0
- package/src/modules/dx/sidebarFooterNav/sidebarFooterNav.html +55 -0
- package/src/modules/dx/sidebarFooterNav/sidebarFooterNav.ts +106 -0
- package/src/modules/dx/sidebarOld/sidebarOld.css +33 -0
- package/src/modules/dx/sidebarOld/sidebarOld.html +111 -0
- package/src/modules/dx/sidebarOld/sidebarOld.ts +170 -0
- package/src/modules/dx/sidebarSearch/sidebarSearch.css +3 -0
- package/src/modules/dx/sidebarSearch/sidebarSearch.html +25 -0
- package/src/modules/dx/sidebarSearch/sidebarSearch.ts +493 -0
- package/src/modules/dx/sidebarSearchResult/sidebarSearchResult.css +67 -0
- package/src/modules/dx/sidebarSearchResult/sidebarSearchResult.html +20 -0
- package/src/modules/dx/sidebarSearchResult/sidebarSearchResult.ts +78 -0
- package/src/modules/dx/skipNavLink/skipNavLink.css +21 -0
- package/src/modules/dx/skipNavLink/skipNavLink.html +3 -0
- package/src/modules/dx/skipNavLink/skipNavLink.ts +3 -0
- package/src/modules/dx/socials/socials.css +4 -3
- package/src/modules/dx/socials/socials.ts +1 -6
- package/src/modules/dx/spinner/spinner.css +28 -232
- package/src/modules/dx/stepSequence/stepSequence.css +42 -0
- package/src/modules/dx/stepSequence/stepSequence.html +10 -0
- package/src/modules/dx/stepSequence/stepSequence.ts +334 -0
- package/src/modules/dx/stepSequenceStep/stepSequenceStep.html +3 -0
- package/src/modules/dx/stepSequenceStep/stepSequenceStep.ts +60 -0
- package/src/modules/dx/tab/tab.css +49 -24
- package/src/modules/dx/tab/tab.ts +16 -5
- package/src/modules/dx/tabPanel/tabPanel.css +20 -0
- package/src/modules/dx/tabPanel/tabPanel.html +13 -0
- package/src/modules/dx/tabPanel/tabPanel.ts +27 -0
- package/src/modules/dx/tabPanelItem/tabPanelItem.css +54 -0
- package/src/modules/dx/tabPanelItem/tabPanelItem.html +26 -0
- package/src/modules/dx/tabPanelItem/tabPanelItem.ts +45 -0
- package/src/modules/dx/tabPanelList/tabPanelList.css +37 -0
- package/src/modules/dx/tabPanelList/tabPanelList.html +56 -0
- package/src/modules/dx/tabPanelList/tabPanelList.ts +178 -0
- package/src/modules/dx/tabPanelList/uniqueId.ts +6 -0
- package/src/modules/dx/tabbedCodeBlock/tabbedCodeBlock.css +8 -0
- package/src/modules/dx/tabbedCodeBlock/tabbedCodeBlock.html +16 -0
- package/src/modules/dx/tabbedCodeBlock/tabbedCodeBlock.ts +44 -0
- package/src/modules/dx/tbidAvatarButton/tbidAvatarButton.css +33 -0
- package/src/modules/dx/tbidAvatarButton/tbidAvatarButton.html +53 -0
- package/src/modules/dx/tbidAvatarButton/tbidAvatarButton.ts +450 -0
- package/src/modules/dx/toast/toast.css +78 -0
- package/src/modules/dx/toast/toast.html +20 -0
- package/src/modules/dx/toast/toast.ts +41 -0
- package/src/modules/dx/toc/toc.css +18 -46
- package/src/modules/dx/toc/toc.html +5 -11
- package/src/modules/dx/toc/toc.ts +20 -31
- package/src/modules/dx/tooltip/tooltip.css +1 -0
- package/src/modules/dx/topics/topics.css +26 -0
- package/src/modules/dx/topics/topics.html +12 -0
- package/src/modules/dx/topics/topics.ts +25 -0
- package/src/modules/dx/trafficLabeler/trafficLabeler.html +1 -0
- package/src/modules/dx/trafficLabeler/trafficLabeler.ts +58 -0
- package/src/modules/dx/tree/tree.css +1 -1
- package/src/modules/dx/tree/tree.ts +9 -1
- package/src/modules/dx/tree/treeHandler.ts +5 -1
- package/src/modules/dx/treeItem/treeItem.css +12 -1
- package/src/modules/dx/treeItem/treeItem.html +10 -2
- package/src/modules/dx/treeItem/treeItem.ts +103 -15
- package/src/modules/dx/treeTile/treeTile.css +77 -64
- package/src/modules/dx/treeTile/treeTile.html +24 -10
- package/src/modules/dx/treeTile/treeTile.ts +31 -6
- package/src/modules/dx/typeBadge/typeBadge.css +2 -59
- package/src/modules/dx/typeBadge/typeBadge.html +7 -1
- package/src/modules/dx/typeBadge/typeBadge.ts +97 -8
- package/src/modules/dx/vimeoPlayer/vimeoPlayer.css +1 -0
- package/src/modules/dx/vimeoPlayer/vimeoPlayer.html +3 -0
- package/src/modules/dx/vimeoPlayer/vimeoPlayer.ts +31 -0
- package/src/modules/dxBaseElements/archiveCard/archiveCard.ts +31 -0
- package/src/modules/{utils → dxBaseElements}/headerBase/headerBase.ts +33 -17
- package/src/modules/dxBaseElements/lightningElementWithState/lightningElementWithState.ts +93 -0
- package/src/modules/dxBaseElements/matchMediaElement/matchMediaElement.ts +63 -0
- package/src/modules/dxBaseElements/sidebarBase/sidebarBase.ts +176 -0
- package/src/modules/dxConstants/brands/brands.ts +18 -0
- package/src/modules/dxConstants/colors/colors.ts +14 -0
- package/src/modules/dxConstants/contentTypes/contentTypes.ts +72 -0
- package/src/modules/{helpers → dxHelpers}/animations/animations.css +1 -1
- package/src/modules/dxHelpers/button/button.css +4 -0
- package/src/modules/{helpers → dxHelpers}/card/card.css +33 -32
- package/src/modules/{helpers → dxHelpers}/code/code.css +5 -13
- package/src/modules/{helpers → dxHelpers}/commonHeader/commonHeader.css +13 -11
- package/src/modules/dxHelpers/commonSidebar/commonSidebar.css +179 -0
- package/src/modules/dxHelpers/commonTreeItem/commonTreeItem.css +44 -0
- package/src/modules/{helpers → dxHelpers}/reset/reset.css +6 -13
- package/src/modules/dxHelpers/scrollbar/scrollbar.css +31 -0
- package/src/modules/{helpers → dxHelpers}/table/table.css +2 -6
- package/src/modules/{helpers → dxHelpers}/text/text.css +71 -32
- package/src/modules/dxHelpers/typeBadge/typeBadge.css +32 -0
- package/src/modules/dxUtils/analytics/analytics.ts +24 -0
- package/src/modules/dxUtils/async/async.ts +45 -0
- package/src/modules/dxUtils/browser/browser.ts +17 -0
- package/src/modules/dxUtils/constants/breakpoints.ts +9 -0
- package/src/modules/dxUtils/constants/constants.ts +1 -0
- package/src/modules/dxUtils/contentTypes/contentTypes.ts +30 -0
- package/src/modules/dxUtils/coveo/coveo.ts +70 -0
- package/src/modules/dxUtils/css/css.ts +58 -0
- package/src/modules/dxUtils/dates/dates.ts +72 -0
- package/src/modules/{utils → dxUtils}/highlight/highlight.ts +3 -2
- package/src/modules/dxUtils/language/language.ts +21 -0
- package/src/modules/dxUtils/list/list.ts +11 -0
- package/src/modules/dxUtils/lwc/lwc.ts +24 -0
- package/src/modules/dxUtils/normalizers/normalizers.ts +112 -0
- package/src/modules/{utils → dxUtils}/options/options.ts +13 -9
- package/src/modules/dxUtils/prismjs/prismjs.ts +4183 -0
- package/src/modules/dxUtils/queryCoordinator/queryCoordinator.ts +43 -0
- package/src/modules/dxUtils/recentSearches/recentSearches.ts +57 -0
- package/src/modules/dxUtils/sanitizeHtml/sanitizeHtml.ts +8 -0
- package/src/modules/dxUtils/urlWatcher/urlWatcher.ts +79 -0
- package/src/modules/dxUtils/withTypedRefs/withTypedRefs.ts +26 -0
- package/src/modules/{utils → dxUtils}/wordpress/wordpress.ts +14 -0
- package/LICENSE +0 -12
- package/src/assets/svg/card-news-learn-moar.svg +0 -415
- package/src/assets/svg/cloud-1.svg +0 -24
- package/src/assets/svg/cloud-2.svg +0 -18
- package/src/assets/svg/codey.svg +0 -93
- package/src/assets/svg/command.svg +0 -9
- package/src/assets/svg/control.svg +0 -10
- package/src/assets/svg/docs-empty-state-small.svg +0 -72
- package/src/assets/svg/docs-empty-state.svg +0 -86
- package/src/assets/svg/dsc-home-news-bear.svg +0 -3
- package/src/assets/svg/dsc-home-news-community.png +0 -0
- package/src/assets/svg/dsc-home-news-goatbear.svg +0 -257
- package/src/assets/svg/dsc-home-news-samplegallery.svg +0 -76
- package/src/assets/svg/empty-state-assistant.svg +0 -1
- 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 +0 -10
- package/src/assets/svg/feature-backdrop2.svg +0 -10
- package/src/assets/svg/featured-demo-art-blank.svg +0 -76
- package/src/assets/svg/featured-demo-art-eBikes.svg +0 -77
- package/src/assets/svg/footer-graphic-large.svg +0 -207
- package/src/assets/svg/footer-graphic-mountains-small.svg +0 -17
- package/src/assets/svg/footer-graphic-mountains.svg +0 -21
- package/src/assets/svg/footer-graphic-trees-small.svg +0 -33
- package/src/assets/svg/footer-graphic-trees.svg +0 -62
- package/src/assets/svg/lake-mountain.svg +0 -79
- package/src/assets/svg/podcast-subscription-clouds-small.svg +0 -49
- package/src/assets/svg/podcast-subscription-clouds.svg +0 -57
- package/src/assets/svg/podcasts-subscription-apple.svg +0 -164
- package/src/assets/svg/podcasts-subscription-google.svg +0 -29
- package/src/assets/svg/podcasts-subscription-spotify.svg +0 -11
- package/src/assets/svg/salesforce-cloud.svg +0 -7
- package/src/assets/svg/salesforce-logo-corporate.svg +0 -21
- package/src/assets/svg/salesforce-logo.svg +0 -14
- package/src/assets/svg/trees.svg +0 -42
- package/src/modules/dx/banner/__tests__/banner.test.ts +0 -31
- 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 -143
- 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 -27
- 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/cardBlogPostProvider/cardBlogPostProvider.css +0 -3
- package/src/modules/dx/cardBlogPostProvider/cardBlogPostProvider.html +0 -16
- package/src/modules/dx/cardBlogPostProvider/cardBlogPostProvider.ts +0 -29
- package/src/modules/dx/cardCallout/__tests__/cardCallout.test.ts +0 -23
- 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 -112
- 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 -99
- package/src/modules/dx/cardEvent/__tests__/mockProps.ts +0 -10
- package/src/modules/dx/cardEvent/cardEvent.stories.ts +0 -152
- 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/cardNews/__tests__/cardNews.test.ts +0 -59
- 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 -70
- 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/cardPodcastEpisodeProvider/cardPodcastEpisodeProvider.css +0 -3
- package/src/modules/dx/cardPodcastEpisodeProvider/cardPodcastEpisodeProvider.html +0 -12
- package/src/modules/dx/cardPodcastEpisodeProvider/cardPodcastEpisodeProvider.ts +0 -29
- package/src/modules/dx/cardSmall/__tests__/cardSmall.test.ts +0 -70
- 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 -86
- 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 -242
- package/src/modules/dx/codeBlock/__tests__/mockProps.ts +0 -160
- package/src/modules/dx/codeBlock/codeBlock.stories.ts +0 -143
- package/src/modules/dx/codeBlock/darkTheme.css +0 -88
- package/src/modules/dx/codeBlock/lightTheme.css +0 -72
- package/src/modules/dx/dropdown/__tests__/dropdown.test.ts +0 -172
- 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 -50
- 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 -191
- 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 -47
- 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 -37
- 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.css +0 -49
- package/src/modules/dx/groupBio/groupBio.html +0 -29
- package/src/modules/dx/groupBio/groupBio.stories.ts +0 -66
- package/src/modules/dx/groupBio/groupBio.ts +0 -41
- package/src/modules/dx/groupText/__tests__/groupText.test.ts +0 -73
- package/src/modules/dx/groupText/__tests__/mockProps.ts +0 -35
- package/src/modules/dx/groupText/groupText.stories.ts +0 -81
- package/src/modules/dx/headTags/headTags.html +0 -3
- package/src/modules/dx/headTags/headTags.ts +0 -39
- package/src/modules/dx/header/__benchmarks__/header.benchmark.js +0 -45
- 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.css +0 -109
- package/src/modules/dx/header/header.html +0 -128
- package/src/modules/dx/header/header.stories.ts +0 -172
- package/src/modules/dx/header/header.ts +0 -27
- 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 -198
- package/src/modules/dx/headerSearch/__tests__/mockData.ts +0 -11
- package/src/modules/dx/headerSearch/__tests__/mockProps.ts +0 -11
- package/src/modules/dx/headerSearch/headerSearch.css +0 -62
- package/src/modules/dx/headerSearch/headerSearch.html +0 -65
- package/src/modules/dx/headerSearch/headerSearch.ts +0 -161
- package/src/modules/dx/helmet/__tests__/helmet.test.ts +0 -53
- 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 -368
- 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/instrumentation/instrumentation.ts +0 -116
- package/src/modules/dx/interactiveImage/__tests__/interactiveImage.test.ts +0 -86
- 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.html +0 -5
- package/src/modules/dx/lazy/lazy.stories.ts +0 -132
- package/src/modules/dx/lazy/lazy.ts +0 -170
- package/src/modules/dx/newsletterForm/newsletterForm.css +0 -73
- package/src/modules/dx/newsletterForm/newsletterForm.html +0 -73
- package/src/modules/dx/newsletterForm/newsletterForm.ts +0 -238
- 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.css +0 -92
- package/src/modules/dx/podcastSubscription/podcastSubscription.html +0 -24
- package/src/modules/dx/podcastSubscription/podcastSubscription.stories.ts +0 -23
- package/src/modules/dx/podcastSubscription/podcastSubscription.ts +0 -58
- package/src/modules/dx/popover/__tests__/mockProps.ts +0 -8
- package/src/modules/dx/popover/__tests__/popover.test.ts +0 -321
- 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__/sidebar.test.ts +0 -609
- package/src/modules/dx/sidebar/sidebar.stories.ts +0 -139
- package/src/modules/dx/socials/__tests__/socials.test.ts +0 -124
- 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 -22
- package/src/modules/dx/toc/__tests__/toc.test.ts +0 -115
- package/src/modules/dx/toc/toc.stories.ts +0 -26
- package/src/modules/dx/tooltip/__tests__/tooltip.test.ts +0 -23
- package/src/modules/dx/tooltip/tooltip.stories.ts +0 -46
- package/src/modules/dx/tree/__tests__/mockProps.ts +0 -215
- package/src/modules/dx/tree/__tests__/tree.test.ts +0 -357
- 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 -400
- package/src/modules/dx/treeTile/__tests__/mockProps.ts +0 -16
- package/src/modules/dx/treeTile/__tests__/treeTile.test.ts +0 -179
- package/src/modules/dx/typeBadge/__tests__/typeBadge.test.ts +0 -63
- package/src/modules/dx/typeBadge/typeBadge.stories.ts +0 -79
- package/src/modules/dx/typeBadgeGroup/__tests__/mockProps.ts +0 -11
- package/src/modules/dx/typeBadgeGroup/__tests__/typeBadgeGroup.test.ts +0 -76
- package/src/modules/dx/typeBadgeGroup/typeBadgeGroup.css +0 -12
- package/src/modules/dx/typeBadgeGroup/typeBadgeGroup.html +0 -11
- package/src/modules/dx/typeBadgeGroup/typeBadgeGroup.stories.ts +0 -19
- package/src/modules/dx/typeBadgeGroup/typeBadgeGroup.ts +0 -18
- package/src/modules/helpers/button/button.css +0 -4
- package/src/modules/helpers/slds/slds.css +0 -191
- package/src/modules/tests/buttonTest/buttonTest.html +0 -3
- package/src/modules/tests/buttonTest/buttonTest.ts +0 -3
- package/src/modules/tests/codeBlockTest/codeBlockTest.js +0 -4
- package/src/modules/tests/featureGridTest/featureGridTest.html +0 -7
- package/src/modules/tests/featureGridTest/featureGridTest.ts +0 -5
- package/src/modules/tests/instrumentationTest/instrumentationTest.html +0 -4
- package/src/modules/tests/instrumentationTest/instrumentationTest.ts +0 -8
- package/src/modules/tests/popoverTest/popoverTest.html +0 -6
- package/src/modules/tests/popoverTest/popoverTest.ts +0 -5
- package/src/modules/utils/css/css.ts +0 -2
- package/src/modules/utils/jest/jest.ts +0 -23
- package/src/modules/utils/normalizers/normalizers.ts +0 -91
- package/src/modules/utils/prismjs/prismjs.ts +0 -3225
- package/src/modules/utils/storybook/storybook.ts +0 -33
- package/src/modules/utils/tests/tests.ts +0 -31
- package/src/modules/utils/wordpress/__tests__/wordpress.test.ts +0 -15
- /package/src/modules/dx/{instrumentation/instrumentation.html → darkModeManager/darkModeManager.html} +0 -0
- /package/src/modules/{utils → dxUtils}/devices/devices.ts +0 -0
- /package/src/modules/{utils → dxUtils}/prismjs/prismjs.html +0 -0
- /package/src/modules/{utils → dxUtils}/regexps/regexps.ts +0 -0
- /package/src/modules/{utils → dxUtils}/seo/seo.ts +0 -0
- /package/src/modules/{utils → dxUtils}/slot/slot.ts +0 -0
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { LightningElement, api, track } from "lwc";
|
|
2
2
|
import type * as CoveoSDK from "coveo-search-ui";
|
|
3
|
+
import { DateTime } from "luxon";
|
|
4
|
+
import { track as trackGTM } from "dxUtils/analytics";
|
|
5
|
+
import {
|
|
6
|
+
CONTENT_TYPE_LABELS,
|
|
7
|
+
CONTENT_TYPE_ICONS
|
|
8
|
+
} from "dxConstants/contentTypes";
|
|
9
|
+
import { getContentTypeColorVariables } from "dxUtils/contentTypes";
|
|
10
|
+
import { pollUntil } from "dxUtils/async";
|
|
11
|
+
import resultsTemplate from "./resultsTemplate";
|
|
12
|
+
|
|
13
|
+
// Max height for breadcrumb without wrapping
|
|
14
|
+
const MAX_BREADCRUMB_HEIGHT = 16;
|
|
3
15
|
|
|
4
16
|
interface CoveoSearch {
|
|
5
17
|
state: typeof CoveoSDK.state;
|
|
@@ -12,13 +24,15 @@ interface CoveoSearch {
|
|
|
12
24
|
UnderscoreTemplate: typeof CoveoSDK.UnderscoreTemplate;
|
|
13
25
|
init: typeof CoveoSDK.init;
|
|
14
26
|
IQuerySuccessEventArgs: CoveoSDK.IQuerySuccessEventArgs;
|
|
27
|
+
TemplateHelpers: any;
|
|
15
28
|
}
|
|
16
29
|
|
|
17
30
|
declare const Coveo: CoveoSearch;
|
|
18
31
|
|
|
19
|
-
function getPaginationState(
|
|
20
|
-
|
|
21
|
-
|
|
32
|
+
function getPaginationState(event: CoveoSDK.IQuerySuccessEventArgs): {
|
|
33
|
+
numberOfPages: number;
|
|
34
|
+
currentPage: number;
|
|
35
|
+
} {
|
|
22
36
|
const pageSize = event.query.numberOfResults!;
|
|
23
37
|
const totalResults = event.results.totalCount!;
|
|
24
38
|
const numberOfPages = Math.ceil(totalResults / pageSize);
|
|
@@ -28,37 +42,159 @@ function getPaginationState(
|
|
|
28
42
|
return { numberOfPages, currentPage };
|
|
29
43
|
}
|
|
30
44
|
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
<p class="dx-result-title">
|
|
55
|
-
<a class="CoveoResultLink"></a>
|
|
56
|
-
</p>
|
|
57
|
-
<p class="dx-result-excerpt CoveoExcerpt"></p>
|
|
45
|
+
const isInternalDomain = (domain: string) =>
|
|
46
|
+
domain === "developer.salesforce.com" ||
|
|
47
|
+
domain === "developer-website-s.herokuapp.com";
|
|
48
|
+
|
|
49
|
+
const isTrailheadDomain = (domain: string) =>
|
|
50
|
+
domain === "trailhead.salesforce.com" ||
|
|
51
|
+
domain === "dev.trailhead.salesforce.com";
|
|
52
|
+
|
|
53
|
+
const buildTemplateHelperBadge = (value: keyof typeof CONTENT_TYPE_LABELS) => {
|
|
54
|
+
const style = getContentTypeColorVariables(value);
|
|
55
|
+
const label = CONTENT_TYPE_LABELS[value];
|
|
56
|
+
const { iconSprite, iconSymbol } = CONTENT_TYPE_ICONS[value];
|
|
57
|
+
return `
|
|
58
|
+
<div style="${style}" class="dx-badge">
|
|
59
|
+
<svg
|
|
60
|
+
aria-hidden="true"
|
|
61
|
+
style="display: inline; margin-bottom: 1px; fill: var(--color); height: var(--dx-g-icon-size-xs); width: var(--dx-g-icon-size-xs);"
|
|
62
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
63
|
+
part="svg"
|
|
64
|
+
>
|
|
65
|
+
<use xlink:href="/assets/icons/${iconSprite}-sprite/svg/symbols.svg#${iconSymbol}"></use>
|
|
66
|
+
</svg>
|
|
67
|
+
<span>${label}</span>
|
|
58
68
|
</div>
|
|
59
|
-
|
|
60
|
-
|
|
69
|
+
`;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const processParts = (parts: string[], internalFlag = false) => {
|
|
73
|
+
// filter /docs/ breadcrumb item from internal domains
|
|
74
|
+
const filterFn = internalFlag
|
|
75
|
+
? (part: string) => part !== "docs"
|
|
76
|
+
: (part: string) => part;
|
|
77
|
+
|
|
78
|
+
return parts.filter(filterFn).map((part) => {
|
|
79
|
+
// Remove special characters & .htm/.xml extension
|
|
80
|
+
part = part
|
|
81
|
+
.replace(/_/g, "")
|
|
82
|
+
.replace(/-/g, "")
|
|
83
|
+
.replace(/.html*/g, "")
|
|
84
|
+
.replace(/.xml/g, "")
|
|
85
|
+
.replace(/b2c/g, "B2C");
|
|
86
|
+
|
|
87
|
+
// Capitalize first letter of each word
|
|
88
|
+
part = part.replace(/\w\S*/g, (w) => {
|
|
89
|
+
return w.replace(/^\w/, (c) => c.toUpperCase());
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
return `<span class="breadcrumb-item">${decodeURI(part)}</span>`;
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
const buildTemplateHelperUriBreadcrumbs = (value: string) => {
|
|
97
|
+
const url = new URL(value);
|
|
98
|
+
|
|
99
|
+
// exclude youtube links from breadcrumbs
|
|
100
|
+
const hostnamePattern = /^((www\.)?(youtube\.com|youtu\.be))$/;
|
|
101
|
+
|
|
102
|
+
// we don't want to show atlas docs because the url structure is mad ugly
|
|
103
|
+
if (hostnamePattern.test(url.hostname) || url.pathname.includes("atlas.")) {
|
|
104
|
+
return "";
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
let parts = url.pathname.split("/").filter((part) => part !== "");
|
|
108
|
+
|
|
109
|
+
// Remove language prefix from trailhead URLs
|
|
110
|
+
if (isTrailheadDomain(url.hostname)) {
|
|
111
|
+
parts = parts
|
|
112
|
+
.slice(1)
|
|
113
|
+
.filter((part) => part !== "content" && part !== "learn");
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const breadcrumbs = processParts(parts, isInternalDomain(url.hostname));
|
|
117
|
+
|
|
118
|
+
if (!isInternalDomain(url.hostname)) {
|
|
119
|
+
// Remove the first breadcrumb item if it's an internal domain (i.e drop developer.salesforce.com from developer.salesforce.com / B2C Commerce / Open Commerce API / Filtering)
|
|
120
|
+
breadcrumbs.unshift(
|
|
121
|
+
`<span class="breadcrumb-item">${url.hostname}</span>`
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
return `
|
|
125
|
+
<span class="breadcrumb">
|
|
126
|
+
${breadcrumbs.join(" / ")}
|
|
127
|
+
</span>
|
|
128
|
+
`;
|
|
129
|
+
} else if (breadcrumbs.length === 1) {
|
|
130
|
+
// Hide breadcrumbs if there is only one breadcrumb item
|
|
131
|
+
return "";
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// remove the last breadcrumb item (the search result title makes it redundant)
|
|
135
|
+
breadcrumbs.pop();
|
|
136
|
+
|
|
137
|
+
return `<span class="breadcrumb">/ ${breadcrumbs.join(" / ")} /</span>`;
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
const buildTemplateHelperCommunityBreadcrumbs = () => {
|
|
141
|
+
return `<span class="breadcrumb"><span class="breadcrumb-item">trailhead.salesforce.com</span> / <span class="breadcrumb-item">trailblazer-community</span> / <span class="breadcrumb-item">feed</span> / </span>`;
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
const buildTemplateHelperBreadcrumbs = (value: string) => {
|
|
145
|
+
const parts = value.split("/").filter((part) => part !== "");
|
|
146
|
+
|
|
147
|
+
// Don't show breadcrumbs if there's only one part
|
|
148
|
+
if (parts.length === 1) {
|
|
149
|
+
return "";
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const breadcrumbs = processParts(parts);
|
|
153
|
+
|
|
154
|
+
// remove last breadcrumb item
|
|
155
|
+
breadcrumbs.pop();
|
|
61
156
|
|
|
157
|
+
return `
|
|
158
|
+
<span class="breadcrumb">/ ${breadcrumbs.join(" / ")} /</span>
|
|
159
|
+
`;
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
const buildTemplateHelperMetaBreadcrumbs = (value: string) => {
|
|
163
|
+
const parts = value.split("/").filter((part) => part !== "");
|
|
164
|
+
|
|
165
|
+
// Don't show breadcrumbs if there's only one part
|
|
166
|
+
if (parts.length === 1) {
|
|
167
|
+
return "";
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
const breadcrumbs = processParts(parts);
|
|
171
|
+
|
|
172
|
+
return `
|
|
173
|
+
<span class="breadcrumb">/ ${breadcrumbs.join(" / ")}</span>
|
|
174
|
+
`;
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
const buildTemplateHelperPostedDate = (value: string) => {
|
|
178
|
+
const time = DateTime.fromMillis(Number(value)).toLocaleString(
|
|
179
|
+
DateTime.DATE_MED
|
|
180
|
+
);
|
|
181
|
+
|
|
182
|
+
return `Posted on: ${time} - `;
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
const buildTemplateHelperReplies = (value: string) => {
|
|
186
|
+
const number = Number(value);
|
|
187
|
+
|
|
188
|
+
return `<strong>${value} ${number > 1 ? "Replies" : "Reply"}</strong>`;
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
const buildTemplateHelperLikes = (value: string) => {
|
|
192
|
+
const number = Number(value);
|
|
193
|
+
|
|
194
|
+
return `<strong>${value} ${number > 1 ? "Likes" : "Like"}</strong>`;
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
// @ts-ignore Dark Magic (TM) we are overriding the 'title' field with a custom getter. We should really stop doing this.
|
|
62
198
|
export default class SearchResults extends LightningElement {
|
|
63
199
|
@api coveoOrganizationId!: string;
|
|
64
200
|
@api coveoPublicAccessToken!: string;
|
|
@@ -83,7 +219,7 @@ export default class SearchResults extends LightningElement {
|
|
|
83
219
|
private totalResults: number | null = null;
|
|
84
220
|
|
|
85
221
|
private get title() {
|
|
86
|
-
return this.totalResults ? this.totalResults.toLocaleString() : "";
|
|
222
|
+
return this.totalResults ? this.totalResults.toLocaleString() : "0";
|
|
87
223
|
}
|
|
88
224
|
|
|
89
225
|
private query: string = "";
|
|
@@ -93,6 +229,10 @@ export default class SearchResults extends LightningElement {
|
|
|
93
229
|
return this.query !== "";
|
|
94
230
|
}
|
|
95
231
|
|
|
232
|
+
private get coveoAnalyticsEndpoint() {
|
|
233
|
+
return `https://${this.coveoOrganizationId}.analytics.org.coveo.com/rest/ua`;
|
|
234
|
+
}
|
|
235
|
+
|
|
96
236
|
private updateSearchQuery() {
|
|
97
237
|
Coveo.state(this.root!, "q", this._query);
|
|
98
238
|
}
|
|
@@ -104,9 +244,12 @@ export default class SearchResults extends LightningElement {
|
|
|
104
244
|
BreadcrumbManager.clearBreadcrumbs();
|
|
105
245
|
}
|
|
106
246
|
|
|
107
|
-
private currentPage: number =
|
|
247
|
+
private currentPage: number = 25;
|
|
108
248
|
private totalPages: number = 1;
|
|
109
249
|
|
|
250
|
+
private originalBreadcrumbs: string[] = [];
|
|
251
|
+
private initialWindowWidth = window.innerWidth;
|
|
252
|
+
|
|
110
253
|
private goToPage(e: CustomEvent) {
|
|
111
254
|
const page = e.detail;
|
|
112
255
|
const Pager = Coveo.get(
|
|
@@ -127,12 +270,24 @@ export default class SearchResults extends LightningElement {
|
|
|
127
270
|
Coveo.$$(root).on(
|
|
128
271
|
Coveo.InitializationEvents.afterInitialization,
|
|
129
272
|
() => {
|
|
273
|
+
const url = new URL(window.location.href);
|
|
274
|
+
const searchParams = url.searchParams;
|
|
275
|
+
const keywordsParam = searchParams.get("keywords");
|
|
276
|
+
|
|
277
|
+
// Accomodate for the global nav using 'keywords' param instead of 'q'
|
|
278
|
+
if (keywordsParam) {
|
|
279
|
+
this._query = searchParams.get("keywords")!;
|
|
280
|
+
searchParams.delete("keywords");
|
|
281
|
+
window.history.replaceState(null, "", url.href);
|
|
282
|
+
}
|
|
283
|
+
|
|
130
284
|
if (this._query !== "") {
|
|
131
285
|
Coveo.state(this.root!, "q", this.searchQuery);
|
|
132
286
|
}
|
|
133
287
|
if (Coveo.state(this.root!, "q") === "") {
|
|
134
288
|
Coveo.state(this.root!, "sort", "date descending");
|
|
135
289
|
}
|
|
290
|
+
|
|
136
291
|
this.isInitialized = true;
|
|
137
292
|
}
|
|
138
293
|
);
|
|
@@ -144,30 +299,206 @@ export default class SearchResults extends LightningElement {
|
|
|
144
299
|
this.currentPage = currentPage;
|
|
145
300
|
this.totalPages = numberOfPages;
|
|
146
301
|
this.totalResults = event.detail.results.totalCount;
|
|
302
|
+
|
|
147
303
|
this.query = event.detail.query.q ?? "";
|
|
148
|
-
this.hasFilters = event.detail.query
|
|
304
|
+
this.hasFilters = event.detail.query?.facets?.some((f: any) => {
|
|
149
305
|
return f.currentValues.some((cv: any) => {
|
|
150
306
|
return cv.state === "selected";
|
|
151
307
|
});
|
|
152
308
|
});
|
|
309
|
+
|
|
310
|
+
// Note that this logic means that if someone clicks a search result before
|
|
311
|
+
// onetrust has loaded, and thus navigates away from the page, we will lose the tracking
|
|
312
|
+
if (document.readyState === "complete") {
|
|
313
|
+
this.trackSearchResults(event, this.query, this.totalResults);
|
|
314
|
+
} else {
|
|
315
|
+
const query = this.query;
|
|
316
|
+
const totalResults = this.totalResults;
|
|
317
|
+
window.addEventListener("load", () => {
|
|
318
|
+
this.trackSearchResults(event, query, totalResults);
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
Coveo.$$(root).on(Coveo.QueryEvents.deferredQuerySuccess, async () => {
|
|
324
|
+
// wait specified time to ensure breadcrumbs are rendered before processing them
|
|
325
|
+
await pollUntil(
|
|
326
|
+
() => {
|
|
327
|
+
const coveoResults =
|
|
328
|
+
this.root!.querySelector(".CoveoResult");
|
|
329
|
+
|
|
330
|
+
return Boolean(coveoResults);
|
|
331
|
+
},
|
|
332
|
+
20,
|
|
333
|
+
1000
|
|
334
|
+
);
|
|
335
|
+
|
|
336
|
+
this.processBreadcrumbs(root);
|
|
337
|
+
|
|
338
|
+
window.onresize = () => this.processBreadcrumbs(root);
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
// check if the breadcrumb is overflowing or not based on the height of a single character in the text element
|
|
343
|
+
private isTextWrapping = (element: HTMLElement) => {
|
|
344
|
+
return element.offsetHeight > MAX_BREADCRUMB_HEIGHT;
|
|
345
|
+
};
|
|
346
|
+
|
|
347
|
+
private truncateBreadcrumbText = (breadcrumbItems: HTMLElement[]) => {
|
|
348
|
+
breadcrumbItems.forEach((breadcrumbItem: HTMLElement) => {
|
|
349
|
+
const breadcrumbItemText = breadcrumbItem.textContent!;
|
|
350
|
+
if (breadcrumbItemText.length > 30) {
|
|
351
|
+
breadcrumbItem.textContent = `${breadcrumbItemText.substring(
|
|
352
|
+
0,
|
|
353
|
+
30
|
|
354
|
+
)}...`;
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
};
|
|
358
|
+
|
|
359
|
+
private addBreadcrumbEllipsis = (
|
|
360
|
+
breadcrumbItems: HTMLElement[],
|
|
361
|
+
breadcrumb: HTMLElement
|
|
362
|
+
) => {
|
|
363
|
+
for (let i = 1; i < breadcrumbItems.length; i++) {
|
|
364
|
+
if (this.isTextWrapping(breadcrumb)) {
|
|
365
|
+
// if the previous element is an ellipsis, make it empty (in order to avoid multiple grouped ellipsis)
|
|
366
|
+
if (breadcrumbItems[i - 1]?.textContent === "...") {
|
|
367
|
+
breadcrumbItems[i].innerHTML = "";
|
|
368
|
+
} else {
|
|
369
|
+
breadcrumbItems[i].textContent = "...";
|
|
370
|
+
}
|
|
371
|
+
} else {
|
|
372
|
+
break; // Exit the loop if the breadcrumb is no longer overflowing
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
// remove any empty breadcrumb items
|
|
377
|
+
breadcrumb.innerHTML = breadcrumb.innerHTML
|
|
378
|
+
.replace(
|
|
379
|
+
/ ?\/ +<span class="breadcrumb-item"><\/span> +\/ ?/g,
|
|
380
|
+
" / "
|
|
381
|
+
)
|
|
382
|
+
// when first loading the page on mobile, the breadcrumb items are not grouped correctly
|
|
383
|
+
.replace(
|
|
384
|
+
`<span class="breadcrumb-item">...</span> / <span class="breadcrumb-item">...</span>`,
|
|
385
|
+
`<span class="breadcrumb-item">...</span>`
|
|
386
|
+
);
|
|
387
|
+
};
|
|
388
|
+
|
|
389
|
+
private formatBreadcrumbs = (breadcrumbs: HTMLElement[]) => {
|
|
390
|
+
breadcrumbs?.forEach((breadcrumb: HTMLElement) => {
|
|
391
|
+
// Get all breadcrumb items that are separated by '/'
|
|
392
|
+
const breadcrumbItems: any =
|
|
393
|
+
breadcrumb.querySelectorAll(".breadcrumb-item");
|
|
394
|
+
|
|
395
|
+
// Check if the breadcrumb is overflowing by comparing it's height to the height of the first breadcrumb item
|
|
396
|
+
if (this.isTextWrapping(breadcrumb)) {
|
|
397
|
+
// it is overflowing, so we need to truncate long titles to 30 characters
|
|
398
|
+
this.truncateBreadcrumbText(breadcrumbItems);
|
|
399
|
+
|
|
400
|
+
// Iteratively check if the breadcrumb is still overflowing and replace text with '...' starting from the second breadcrumb item
|
|
401
|
+
this.addBreadcrumbEllipsis(breadcrumbItems, breadcrumb);
|
|
402
|
+
|
|
403
|
+
// After processing all breadcrumb items, if it's still overflowing, hide the breadcrumb element
|
|
404
|
+
if (this.isTextWrapping(breadcrumb)) {
|
|
405
|
+
breadcrumb.style.display = "none";
|
|
406
|
+
}
|
|
407
|
+
}
|
|
153
408
|
});
|
|
409
|
+
};
|
|
410
|
+
|
|
411
|
+
private restoreBreadcrumbs = (breadcrumbs: HTMLElement[]) => {
|
|
412
|
+
breadcrumbs.forEach((breadcrumb: HTMLElement, index: number) => {
|
|
413
|
+
// eslint-disable-next-line @lwc/lwc/no-inner-html
|
|
414
|
+
breadcrumb.innerHTML = this.originalBreadcrumbs[index];
|
|
415
|
+
});
|
|
416
|
+
};
|
|
417
|
+
|
|
418
|
+
private windowSizeIncreased = () =>
|
|
419
|
+
window.innerWidth > this.initialWindowWidth;
|
|
420
|
+
|
|
421
|
+
private processBreadcrumbs(root: HTMLElement) {
|
|
422
|
+
// Get all breadcrumbs from search results
|
|
423
|
+
const breadcrumbs = Array.from(
|
|
424
|
+
root.querySelectorAll(".breadcrumb")
|
|
425
|
+
) as HTMLElement[];
|
|
426
|
+
|
|
427
|
+
if (this.originalBreadcrumbs.length === 0) {
|
|
428
|
+
this.originalBreadcrumbs = breadcrumbs.map(
|
|
429
|
+
(breadcrumb) => breadcrumb.innerHTML
|
|
430
|
+
);
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
if (this.windowSizeIncreased()) {
|
|
434
|
+
/*
|
|
435
|
+
Reset the breadcrumbs to their original state and process them again.
|
|
436
|
+
The additional space means we can replace ellipsis with full text.
|
|
437
|
+
*/
|
|
438
|
+
this.restoreBreadcrumbs(breadcrumbs);
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
this.formatBreadcrumbs(breadcrumbs);
|
|
154
442
|
}
|
|
155
443
|
|
|
156
444
|
private initializeCoveo() {
|
|
157
445
|
this.root = this.template.querySelector(".CoveoSearchInterface")!;
|
|
158
446
|
|
|
159
447
|
const resultsList = this.template.querySelector(".CoveoResultList");
|
|
448
|
+
|
|
160
449
|
if (resultsList) {
|
|
161
|
-
|
|
450
|
+
// eslint-disable-next-line @lwc/lwc/no-inner-html
|
|
451
|
+
resultsList.innerHTML = resultsTemplate;
|
|
162
452
|
}
|
|
163
453
|
|
|
164
454
|
Coveo.SearchEndpoint.configureCloudV2Endpoint(
|
|
165
455
|
this.coveoOrganizationId,
|
|
166
|
-
this.coveoPublicAccessToken
|
|
456
|
+
this.coveoPublicAccessToken,
|
|
457
|
+
`https://${this.coveoOrganizationId}.org.coveo.com/rest/search`
|
|
167
458
|
);
|
|
168
459
|
|
|
169
460
|
this.attachListeners(this.root);
|
|
170
461
|
|
|
462
|
+
Coveo.TemplateHelpers.registerTemplateHelper(
|
|
463
|
+
"badge",
|
|
464
|
+
buildTemplateHelperBadge
|
|
465
|
+
);
|
|
466
|
+
|
|
467
|
+
Coveo.TemplateHelpers.registerTemplateHelper(
|
|
468
|
+
"breadcrumbs",
|
|
469
|
+
buildTemplateHelperBreadcrumbs
|
|
470
|
+
);
|
|
471
|
+
|
|
472
|
+
Coveo.TemplateHelpers.registerTemplateHelper(
|
|
473
|
+
"metabreadcrumbs",
|
|
474
|
+
buildTemplateHelperMetaBreadcrumbs
|
|
475
|
+
);
|
|
476
|
+
|
|
477
|
+
Coveo.TemplateHelpers.registerTemplateHelper(
|
|
478
|
+
"uriBreadcrumbs",
|
|
479
|
+
buildTemplateHelperUriBreadcrumbs
|
|
480
|
+
);
|
|
481
|
+
|
|
482
|
+
Coveo.TemplateHelpers.registerTemplateHelper(
|
|
483
|
+
"communityBreadcrumbs",
|
|
484
|
+
buildTemplateHelperCommunityBreadcrumbs
|
|
485
|
+
);
|
|
486
|
+
|
|
487
|
+
Coveo.TemplateHelpers.registerTemplateHelper(
|
|
488
|
+
"postedDate",
|
|
489
|
+
buildTemplateHelperPostedDate
|
|
490
|
+
);
|
|
491
|
+
|
|
492
|
+
Coveo.TemplateHelpers.registerTemplateHelper(
|
|
493
|
+
"replies",
|
|
494
|
+
buildTemplateHelperReplies
|
|
495
|
+
);
|
|
496
|
+
|
|
497
|
+
Coveo.TemplateHelpers.registerTemplateHelper(
|
|
498
|
+
"likes",
|
|
499
|
+
buildTemplateHelperLikes
|
|
500
|
+
);
|
|
501
|
+
|
|
171
502
|
Coveo.init(this.root);
|
|
172
503
|
}
|
|
173
504
|
|
|
@@ -176,6 +507,7 @@ export default class SearchResults extends LightningElement {
|
|
|
176
507
|
if (Object.prototype.hasOwnProperty.call(window, "Coveo")) {
|
|
177
508
|
this.initializeCoveo();
|
|
178
509
|
} else {
|
|
510
|
+
// eslint-disable-next-line @lwc/lwc/no-document-query
|
|
179
511
|
const script = document.querySelector("script.coveo-script");
|
|
180
512
|
script?.addEventListener("load", () => {
|
|
181
513
|
this.initializeCoveo();
|
|
@@ -183,4 +515,13 @@ export default class SearchResults extends LightningElement {
|
|
|
183
515
|
}
|
|
184
516
|
}
|
|
185
517
|
}
|
|
518
|
+
|
|
519
|
+
private trackSearchResults(event: Event, term: string, resultCount: any) {
|
|
520
|
+
trackGTM(event.target!, "custEv_search", {
|
|
521
|
+
search_term: term,
|
|
522
|
+
search_category: "",
|
|
523
|
+
search_type: "site search",
|
|
524
|
+
search_result_count: resultCount
|
|
525
|
+
});
|
|
526
|
+
}
|
|
186
527
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
@import "
|
|
2
|
-
@import "
|
|
1
|
+
@import "dxHelpers/reset";
|
|
2
|
+
@import "dxHelpers/text";
|
|
3
3
|
|
|
4
4
|
:host {
|
|
5
5
|
--dx-c-section-padding-vertical: var(--dx-g-spacing-5xl);
|
|
@@ -8,6 +8,12 @@
|
|
|
8
8
|
--dx-c-section-padding-right: var(--dx-c-section-padding-horizontal);
|
|
9
9
|
--dx-c-section-padding-top: var(--dx-c-section-padding-vertical);
|
|
10
10
|
--dx-c-section-padding-bottom: var(--dx-c-section-padding-vertical);
|
|
11
|
+
--dx-c-section-heading-margin-bottom: var(--dx-g-spacing-2xl);
|
|
12
|
+
--dx-c-section-cta-color: var(--dx-g-blue-vibrant-50);
|
|
13
|
+
--dx-c-section-cta-inline-hover-color: var(--dx-g-blue-vibrant-30);
|
|
14
|
+
--dx-c-section-position: relative;
|
|
15
|
+
--dx-c-section-graphic-margin-top: var(--graphic-height);
|
|
16
|
+
--dx-c-section-graphic-margin-bottom: var(--graphic-height);
|
|
11
17
|
}
|
|
12
18
|
|
|
13
19
|
.section {
|
|
@@ -15,7 +21,7 @@
|
|
|
15
21
|
--graphic-height: 5.563vw;
|
|
16
22
|
--graphic-vertical-padding: 0.14vw;
|
|
17
23
|
|
|
18
|
-
position:
|
|
24
|
+
position: var(--dx-c-section-position);
|
|
19
25
|
display: flex;
|
|
20
26
|
flex-direction: column;
|
|
21
27
|
background: var(--dx-c-section-background-color);
|
|
@@ -30,11 +36,11 @@
|
|
|
30
36
|
}
|
|
31
37
|
|
|
32
38
|
.section.graphic-top:not(.graphic-overlap) {
|
|
33
|
-
margin-top: var(--graphic-
|
|
39
|
+
margin-top: var(--dx-c-section-graphic-margin-top);
|
|
34
40
|
}
|
|
35
41
|
|
|
36
42
|
.section.graphic-bottom:not(.graphic-overlap) {
|
|
37
|
-
margin-bottom: var(--graphic-
|
|
43
|
+
margin-bottom: var(--dx-c-section-graphic-margin-bottom);
|
|
38
44
|
}
|
|
39
45
|
|
|
40
46
|
.background-graphic {
|
|
@@ -58,10 +64,18 @@
|
|
|
58
64
|
max-width: 800px;
|
|
59
65
|
}
|
|
60
66
|
|
|
67
|
+
.dx-text-display-custom {
|
|
68
|
+
color: var(--dx-c-section-heading-font-color, --dx-g-text-heading-color);
|
|
69
|
+
font-family: var(--dx-c-section-heading-font-family, --dx-g-font-display);
|
|
70
|
+
font-size: var(--dx-c-section-heading-font-size, --dx-g-text-3xl);
|
|
71
|
+
letter-spacing: var(--dx-c-section-heading-letter-spacing, -0.4px);
|
|
72
|
+
line-height: var(--dx-c-section-heading-line-height, 40px);
|
|
73
|
+
}
|
|
74
|
+
|
|
61
75
|
.text {
|
|
62
76
|
display: flex;
|
|
63
77
|
flex-direction: column;
|
|
64
|
-
margin-bottom: var(--dx-
|
|
78
|
+
margin-bottom: var(--dx-c-section-heading-margin-bottom);
|
|
65
79
|
z-index: 100;
|
|
66
80
|
}
|
|
67
81
|
|
|
@@ -69,7 +83,7 @@
|
|
|
69
83
|
margin-bottom: var(--dx-g-spacing-md);
|
|
70
84
|
}
|
|
71
85
|
|
|
72
|
-
.text > .label {
|
|
86
|
+
.text > .label:not(:last-child) {
|
|
73
87
|
margin-bottom: var(--dx-g-spacing-lg);
|
|
74
88
|
}
|
|
75
89
|
|
|
@@ -77,6 +91,19 @@
|
|
|
77
91
|
z-index: 50;
|
|
78
92
|
}
|
|
79
93
|
|
|
94
|
+
.cta {
|
|
95
|
+
--dx-c-button-primary-color: var(--dx-c-section-cta-color);
|
|
96
|
+
--dx-c-button-inline-color-hover: var(
|
|
97
|
+
--dx-c-section-cta-inline-hover-color
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.cta-inline {
|
|
102
|
+
display: flex;
|
|
103
|
+
justify-content: space-between;
|
|
104
|
+
max-width: unset;
|
|
105
|
+
}
|
|
106
|
+
|
|
80
107
|
/* sections with a swoop and center alignment should not left align as it encroaches on the graphic */
|
|
81
108
|
.section.align-center.graphic-top .text {
|
|
82
109
|
text-align: center;
|
|
@@ -127,4 +154,10 @@
|
|
|
127
154
|
letter-spacing: -0.6px;
|
|
128
155
|
line-height: 40px;
|
|
129
156
|
}
|
|
157
|
+
|
|
158
|
+
.heading.dx-text-display-4 {
|
|
159
|
+
font-size: var(--dx-g-text-xl);
|
|
160
|
+
letter-spacing: -0.6px;
|
|
161
|
+
line-height: 32px;
|
|
162
|
+
}
|
|
130
163
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<div class={className} style={style} part="container">
|
|
3
3
|
<svg
|
|
4
4
|
class="background-graphic background-graphic-top"
|
|
5
|
-
if
|
|
5
|
+
lwc:if={topGraphic}
|
|
6
6
|
preserveAspectRatio="none"
|
|
7
7
|
width="1438px"
|
|
8
8
|
height="83px"
|
|
@@ -26,12 +26,42 @@
|
|
|
26
26
|
</g>
|
|
27
27
|
</svg>
|
|
28
28
|
|
|
29
|
-
<div part="text" class="text" if
|
|
30
|
-
<span class="label dx-text-
|
|
31
|
-
<h2 class={headingClassName} if
|
|
32
|
-
|
|
33
|
-
{
|
|
29
|
+
<div part="text" class="text" lwc:if={hasText}>
|
|
30
|
+
<span class="label dx-text-display-8" lwc:if={label}>{label}</span>
|
|
31
|
+
<h2 class={headingClassName} lwc:if={header}>
|
|
32
|
+
{header}
|
|
33
|
+
<template lwc:if={ctaBtnInline}>
|
|
34
|
+
<dx-button
|
|
35
|
+
class="cta"
|
|
36
|
+
lwc:if={ctaLabel}
|
|
37
|
+
href={ctaHref}
|
|
38
|
+
variant={ctaBtnVariant}
|
|
39
|
+
icon-symbol={ctaBtnSymbol}
|
|
40
|
+
target={ctaBtnTarget}
|
|
41
|
+
onclick={handleLabelClick}
|
|
42
|
+
>
|
|
43
|
+
{ctaLabel}
|
|
44
|
+
</dx-button>
|
|
45
|
+
</template>
|
|
46
|
+
</h2>
|
|
47
|
+
<span class={subtitleClassName} lwc:if={subtitle}>
|
|
48
|
+
<dx-formatted-rich-text
|
|
49
|
+
value={subtitle}
|
|
50
|
+
></dx-formatted-rich-text>
|
|
34
51
|
</span>
|
|
52
|
+
<template lwc:if={ctaNotInline}>
|
|
53
|
+
<dx-button
|
|
54
|
+
class="cta"
|
|
55
|
+
lwc:if={ctaLabel}
|
|
56
|
+
href={ctaHref}
|
|
57
|
+
variant={ctaBtnVariant}
|
|
58
|
+
icon-symbol={ctaBtnSymbol}
|
|
59
|
+
target={ctaBtnTarget}
|
|
60
|
+
onclick={handleLabelClick}
|
|
61
|
+
>
|
|
62
|
+
{ctaLabel}
|
|
63
|
+
</dx-button>
|
|
64
|
+
</template>
|
|
35
65
|
</div>
|
|
36
66
|
<div part="content" class="content">
|
|
37
67
|
<slot></slot>
|
|
@@ -39,7 +69,7 @@
|
|
|
39
69
|
|
|
40
70
|
<svg
|
|
41
71
|
class="background-graphic background-graphic-bottom"
|
|
42
|
-
if
|
|
72
|
+
lwc:if={bottomGraphic}
|
|
43
73
|
preserveAspectRatio="none"
|
|
44
74
|
width="1438px"
|
|
45
75
|
height="83px"
|