From 0d3c0c586ba1573213ca6bf8d67342d8398dc8ba Mon Sep 17 00:00:00 2001 From: wz914876 Date: Wed, 19 Jun 2024 11:42:31 +0530 Subject: [PATCH 01/29] initial commit --- scripts/scripts-dev.js | 3 +++ scripts/scripts.js | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/scripts-dev.js b/scripts/scripts-dev.js index dfef256e7..f0eca9ad8 100644 --- a/scripts/scripts-dev.js +++ b/scripts/scripts-dev.js @@ -379,6 +379,9 @@ function decorateTwoColumnSection(main) { ); currentDiv = div({ class: 'col-right w-full mt-0 md:mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10' }); } + if (child.tagName === 'DIV') { + currentDiv = div({ class: 'col-right w-full mt-0 md:mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10' }); + } const childClone = child.cloneNode(true); if (childClone.tagName === 'H2' && childClone.querySelector(':scope > strong')) { if (currentDiv?.classList.contains('col-right')) { diff --git a/scripts/scripts.js b/scripts/scripts.js index c7cfd530f..c0d3ff5a3 100644 --- a/scripts/scripts.js +++ b/scripts/scripts.js @@ -1 +1 @@ -import{sampleRUM,loadHeader,loadFooter,decorateButtons,decorateIcons,decorateSections,decorateBlocks,decorateTemplateAndTheme,waitForLCP,loadBlocks,loadCSS,toClassName,getMetadata,createOptimizedPicture,loadBlock,decorateBlock}from"./lib-franklin.js";import{div,domEl,img}from"./dom-builder.js";const LCP_BLOCKS=["breadcrumb","product-hero","carousel","columns"];const TEMPLATE_LIST={blog:{templateName:"blog",dependencies:["./schema.js","../blocks/columns/columns.js","../blocks/social-media/social-media.js","../blocks/article-info/article-info.js"]},productdetail:{templateName:"productDetail",dependencies:["./commerce.js","./product-payload-builder.js","./schema.js"]},processstep:"processstep",topic:"topic",library:"library",info:"library"};TEMPLATE_LIST.news=TEMPLATE_LIST.blog;export function imageHelper(imageUrl,imageAlt,eager=false){if(imageUrl.indexOf(".scene7.com")>-1){return img({src:`${imageUrl}`,alt:imageAlt,loading:eager?"eager":"lazy",class:"mb-2 h-48 w-full object-cover"})}const cardImage=createOptimizedPicture(imageUrl,imageAlt,eager,[{width:"500"}]);cardImage.querySelector("img").className="mb-2 h-48 w-full object-cover";return cardImage}export function createOptimizedS7Picture(src,alt="",eager=false){if(src.startsWith("/is/image")||src.indexOf(".scene7.com")>-1){const picture=document.createElement("picture");picture.appendChild(img({src:`${src}?$danaher-mobile$`,fetchpriority:"high",alt:alt,loading:eager?"eager":"lazy"}));return picture}return img({src:src,alt:alt,loading:eager?"eager":"lazy"})}export function formatDateUTCSeconds(date,options={}){const dateObj=new Date(0);dateObj.setUTCSeconds(date);return dateObj.toLocaleDateString("en-US",{month:"short",day:"2-digit",year:"numeric",...options})}export function generateUUID(){return Math.floor(1e3+Math.random()*9e3)}let originalOffset=0;export function scrollJumpMenuFixed(pageJumpMenuContainer){if(!originalOffset){const rectPageTabs=pageJumpMenuContainer.getBoundingClientRect();originalOffset=rectPageTabs.top}if(window.scrollY>originalOffset){pageJumpMenuContainer.classList.add(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-jump-menu-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));document.querySelector(".page-jump-menu-container.fixed ul")?.classList.add("shadow-none","rounded-none");document.querySelectorAll(".page-jump-menu-container.fixed ul li")?.forEach((el=>{el?.firstElementChild?.classList.add("rounded-full");el?.firstElementChild?.querySelector("span.icon svg use")?.classList.add("stroke-danaherpurple-500")}));document.querySelector('.page-jump-menu-container.fixed li[aria-selected="true"] a span.icon svg')?.classList.add("stroke-white");pageJumpMenuContainer.classList.remove(..."[&_.page-jump-menu-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}else{pageJumpMenuContainer.classList.remove(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-jump-menu-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));document.querySelectorAll(".page-jump-menu-container ul li")?.forEach((el=>el?.firstElementChild?.classList.remove("rounded-full")));pageJumpMenuContainer.classList.add(..."[&_.page-jump-menu-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}}let pageTabsOriginalOffset=0;export function scrollPageTabFixed(pageTabsContainer){if(!pageTabsOriginalOffset){const rectPageTabs=pageTabsContainer.getBoundingClientRect();pageTabsOriginalOffset=rectPageTabs.top}if(window.scrollY>pageTabsOriginalOffset){pageTabsContainer.classList.add(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-tabs-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));pageTabsContainer.classList.remove(..."[&_.page-tabs-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}else{pageTabsContainer.classList.remove(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-tabs-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));pageTabsContainer.classList.add(..."[&_.page-tabs-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}}export function makePublicUrl(url){const isProd=window.location.hostname.includes("lifesciences.danaher.com");try{const newURL=new URL(url,window.location.origin);if(isProd){if(newURL.pathname.endsWith(".html")){return newURL.pathname}newURL.pathname+=".html";return newURL.pathname}if(newURL.pathname.endsWith(".html")){newURL.pathname=newURL.pathname.slice(0,-5);return newURL.pathname}return newURL.pathname}catch(error){console.error("Invalid URL:",error);return url}}export function setJsonLd(data,name){const existingScript=document.head.querySelector(`script[data-name="${name}"]`);if(existingScript){existingScript.innerHTML=JSON.stringify(data);return}const script=document.createElement("script");script.type="application/ld+json";script.innerHTML=JSON.stringify(data);script.dataset.name=name;document.head.appendChild(script)}function setFavicon(){const faviconLink=document.querySelector("link[rel*='icon']")||document.createElement("link");faviconLink.type="image/x-icon";faviconLink.rel="shortcut icon";faviconLink.href=`https://${window.location.hostname}/favicon.ico`;document.getElementsByTagName("head")[0].appendChild(faviconLink)}export async function getFragmentFromFile(url){const response=await fetch(url);if(!response.ok){console.error("error loading fragment details",response);return null}const text=await response.text();if(!text){console.error("fragment details empty",url);return null}return text}export function getCookie(cname){let value=decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(cname).replace(/[\\-\\.\\+\\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null;if(value&&(value.substring(0,1)==="{"&&value.substring(value.length-1,value.length)==="}"||value.substring(0,1)==="["&&value.substring(value.length-1,value.length)==="]")){try{value=JSON.parse(value)}catch(e){return value}}return value}export function isOTEnabled(){const otCookie=getCookie("OptanonConsent");if(typeof otCookie==="string"){return otCookie.includes("C0002:1")}return true}export function setCookie(cname,cvalue,expTime=30*1e3*60*60*24,path="/"){const today=new Date;today.setTime(today.getTime()+expTime);const expires="expires=".concat(today.toGMTString());const cookieString=cname.concat("=").concat(cvalue).concat(";").concat(expires).concat(";path=").concat(path);document.cookie=cookieString}async function buildVideo(main){const videoLinks=main.querySelectorAll('a[href*="youtube.com"],a[href*="vimeo.com"],a[href*="vidyard.com"]');if(videoLinks.length>0){const{default:decorateEmbed}=await import("../blocks/embed/embed.js");videoLinks.forEach((link=>{if(link.closest(".embed, .hero")==null){decorateEmbed(link.parentNode)}}))}}async function loadFonts(){await loadCSS(`${window.hlx.codeBasePath}/styles/fonts.css`);try{if(!window.location.hostname.includes("localhost"))sessionStorage.setItem("fonts-loaded","true")}catch(e){}}function loadBreadCrumb(){const header=document.querySelector("header");const breadcrumb=document.createElement("breadcrumb");if(window.location.pathname!=="/")header.after(breadcrumb)}function loadMobileMenu(){const breadcrumb=document.querySelector("breadcrumb");const mobileMunu=document.createElement("mobilemenu");const url=new URL(window.location.href);if(url.pathname.match(/\/us\/en\/products\/(family\/|sku\/|bundles\/)/)||url.pathname.match(/\/us\/en\/solutions\//)){breadcrumb.after(mobileMunu)}}function buildAutoBlocks(main){try{buildVideo(main)}catch(error){console.error("Auto Blocking failed",error)}}export function decorateModals(main){const ctaModalButton=main.querySelector(".show-modal-btn");const content=()=>ctaModalButton.getAttribute("data-dialog-message")?ctaModalButton.getAttribute("dialog-message"):"";ctaModalButton?.addEventListener("click",(async e=>{e.preventDefault();const{default:getModal}=await import("./modal.js");const customModal=await getModal("custom-modal",content,(modal=>{modal.querySelector('p[name="close"]')?.addEventListener("click",(()=>modal.close()))}));customModal.showModal()}))}function decorateTwoColumnSection(main){main.querySelectorAll(".section.container-two-col").forEach((section=>{const defaultContentWrappers=section.querySelectorAll(":scope > .default-content-wrapper");defaultContentWrappers.forEach((contentWrapper=>{[...contentWrapper.children].forEach((child=>{section.appendChild(child)}));let nextElement=contentWrapper.nextSibling;const allBlocks=[];while(nextElement){if(nextElement.className.includes("-wrapper"))allBlocks.push(nextElement);nextElement=nextElement.nextSibling}section.append(...allBlocks);section.removeChild(contentWrapper)}));const newSection=div();let currentDiv=null;[...section.children].forEach((child=>{if(child.tagName==="H1"){newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-4"}));currentDiv=div({class:"col-right w-full mt-0 md:mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10"})}const childClone=child.cloneNode(true);if(childClone.tagName==="H2"&&childClone.querySelector(":scope > strong")){if(currentDiv?.classList.contains("col-right")){newSection.appendChild(currentDiv)}childClone.className="text-gray-900 !text-base leading-6 font-bold pt-6 pb-4 my-0";newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-4"},childClone,domEl("hr",{style:"height: 10px; width: 54px; border-width: 0px; color: rgb(216, 244, 250); background-color: rgb(216, 244, 250);"})));currentDiv=div({class:"col-right w-full mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-10"})}else if(currentDiv?.classList.contains("col-right")){currentDiv.appendChild(childClone)}}));if(currentDiv){newSection.appendChild(currentDiv)}newSection.classList.add("w-full","flex","flex-wrap","break-normal");section.innerHTML=newSection.outerHTML;section.classList.add("mx-auto","w-full","flex","flex-wrap","mb-5")}))}function updateExternalLinks(main){const REFERERS=[window.location.origin];main.querySelectorAll("a[href]").forEach((a=>{try{const{origin:origin,pathname:pathname,hash:hash}=new URL(a.href,window.location.href);const targetHash=hash&&hash.startsWith("#_");const isPDF=pathname.split(".").pop()==="pdf";if(origin&&origin!==window.location.origin&&!targetHash||isPDF){a.setAttribute("target","_blank");if(!REFERERS.includes(origin))a.setAttribute("rel","noopener")}else if(targetHash){a.setAttribute("target",hash.replace("#",""));a.href=a.href.replace(hash,"")}}catch(e){console.warn(`Invalid link in ${main}: ${a.href}`)}}))}function lazyLoadHiddenPageNavTabs(sections,nameOfFirstSection){const activeHash=window.location.hash;const active=activeHash?activeHash.substring(1,activeHash.length).toLowerCase():nameOfFirstSection;sections.forEach((section=>{const hasBreadCrumb=section.className.includes("breadcrumb-container");if(!hasBreadCrumb&§ion.getAttribute("aria-labelledby")!==active){section.querySelectorAll(".block").forEach((block=>{block.setAttribute("data-block-status","loaded");block.setAttribute("data-block-lazy-load",true);block.parentElement.style.display="none"}));const loadLazyBlocks=lazySection=>{lazySection.querySelectorAll(".block[data-block-lazy-load]").forEach((async block=>{block.removeAttribute("data-block-lazy-load");block.setAttribute("data-block-status","initialized");await loadBlock(block);block.parentElement.style.display=""}));section.setAttribute("data-section-status","loaded")};const observer=new IntersectionObserver((entries=>{if(entries.some((e=>e.isIntersecting))){observer.disconnect();loadLazyBlocks(section)}}));observer.observe(section);setTimeout((()=>{observer.disconnect();loadLazyBlocks(section)}),5e3)}}))}function decoratePageNav(main){const pageTabsBlock=main.querySelector(".page-tabs");if(!pageTabsBlock)return;const pageTabSection=pageTabsBlock.closest("div.section");let sections=[...main.querySelectorAll("div.section")];sections=sections.slice(sections.indexOf(pageTabSection)+1);const namedSections=sections.filter((section=>section.hasAttribute("data-tabname")));let index=0;sections.forEach((section=>{if(indeximport(dep)))]).then((([mod])=>mod.default));if(decorator){await decorator(main)}document.body.classList.add(templateName)}}catch(error){console.error("Auto Blocking failed",error)}}function decorateEmbeddedBlocks(container){container.querySelectorAll("div.section > div").forEach(decorateBlock)}export async function processEmbedFragment(element){const block=div({class:"embed-fragment"});[...element.classList].forEach((className=>{block.classList.add(className)}));const link=element.textContent;if(link){const fragment=await getFragmentFromFile(`${link}.plain.html`);if(fragment){block.innerHTML=fragment;const sections=block.querySelectorAll(".embed-fragment > div");[...sections].forEach((section=>{section.classList.add("section")}));decorateEmbeddedBlocks(block);decorateSections(block);loadBlocks(block)}else{const elementInner=element.innerHTML;block.append(div({class:"section"}));block.querySelector(".section").innerHTML=elementInner}}decorateButtons(block);decorateIcons(block);return block}function loadATPageParams(){const id=window.location.pathname.replaceAll("/","_").replace(/\.html$/,"").substring(1);const skuId=getMetadata("sku");const categoryId=getMetadata("fullcategory").split("|").pop();const thumbnailURL=getMetadata("og:image");const title=getMetadata("og:title");const name=title.indexOf("| Danaher Life Sciences")>-1?title.split("| Danaher Life Sciences")[0]:title;const message=getMetadata("og:description");const pageUrl=getMetadata("og:url");const brand=getMetadata("brand");const page=window.location.pathname.split("/")[3];const tags=getMetadata("article:tag");const articleAuthor=getMetadata("authorname");const articlePostDate=getMetadata("publishdate");const articleReadTime=getMetadata("readingtime");const targetParams={id:id,skuId:skuId,categoryId:categoryId,thumbnailURL:thumbnailURL,name:name,message:message,pageUrl:pageUrl,brand:brand,page:page,tags:tags,articleAuthor:articleAuthor,articlePostDate:articlePostDate,articleReadTime:articleReadTime};return targetParams}function initATJS(path,config){window.targetGlobalSettings=config;window.atPageParams=loadATPageParams();window.targetPageParams=function getTargetPageParams(){return{at_property:"6aeb619e-92d9-f4cf-f209-6d88ff58af6a","entity.id":window.atPageParams?.id,"entity.skuId":window.atPageParams?.skuId,"entity.categoryId":window.atPageParams?.categoryId,"entity.thumbnailURL":window.atPageParams?.thumbnailURL,"entity.name":window.atPageParams?.name,"entity.message":window.atPageParams?.message,"entity.pageUrl":window.atPageParams?.pageUrl,"entity.brand":window.atPageParams?.brand,"entity.page":window.atPageParams?.page,"entity.tags":window.atPageParams?.tags,"entity.articleAuthor":window.atPageParams?.articleAuthor,"entity.articlePostDate":window.atPageParams?.articlePostDate,"entity.articleReadTime":window.atPageParams?.articleReadTime,danaherCompany:localStorage.getItem("danaher_company")?localStorage.getItem("danaher_company"):"",utmCampaign:localStorage.getItem("danaher_utm_campaign")?localStorage.getItem("danaher_utm_campaign"):"",utmSource:localStorage.getItem("danaher_utm_source")?localStorage.getItem("danaher_utm_source"):"",utmMedium:localStorage.getItem("danaher_utm_medium")?localStorage.getItem("danaher_utm_medium"):"",utmContent:localStorage.getItem("danaher_utm_content")?localStorage.getItem("danaher_utm_content"):""}};return new Promise((resolve=>{import(path).then(resolve)}))}function onDecoratedElement(fn){if(document.querySelector('[data-block-status="loaded"],[data-section-status="loaded"]')){fn()}const observer=new MutationObserver((mutations=>{if(mutations.some((m=>m.target.tagName==="BODY"||m.target.dataset.sectionStatus==="loaded"||m.target.dataset.blockStatus==="loaded"))){fn()}}));observer.observe(document.querySelector("main"),{subtree:true,attributes:true,attributeFilter:["data-block-status","data-section-status"]});observer.observe(document.querySelector("body"),{childList:true})}function toCssSelector(selector){return selector.replace(/(\.\S+)?:eq\((\d+)\)/g,((_,clss,i)=>`:nth-child(${Number(i)+1}${clss?` of ${clss})`:""}`))}async function getElementForOffer(offer){const selector=offer.cssSelector||toCssSelector(offer.selector);return document.querySelector(selector)}async function getElementForMetric(metric){const selector=toCssSelector(metric.selector);return document.querySelector(selector)}async function getAndApplyOffers(){const response=await window.adobe.target.getOffers({request:{execute:{pageLoad:{}}}});const{options:options=[],metrics:metrics=[]}=response.execute.pageLoad;onDecoratedElement((()=>{window.adobe.target.applyOffers({response:response});options.forEach((o=>o.content=o.content.filter((c=>!getElementForOffer(c)))));metrics.map(((m,i)=>getElementForMetric(m)?i:-1)).filter((i=>i>=0)).reverse().map((i=>metrics.splice(i,1)))}))}let atjsPromise=Promise.resolve();const urlTarget=window.location.pathname;const regex=/^\/(us\/en\/products\.html)?$/;if(!regex.test(urlTarget)){atjsPromise=initATJS("./at.js",{clientCode:"danaher",serverDomain:"danaher.tt.omtrdc.net",imsOrgId:"08333E7B636A2D4D0A495C34@AdobeOrg",bodyHidingEnabled:false,cookieDomain:window.location.hostname,pageLoadEnabled:false,secureOnly:true,viewsEnabled:false,withWebGLRenderer:false}).catch((e=>{console.error("Error loading at.js",e)}));document.addEventListener("at-library-loaded",(()=>getAndApplyOffers()))}async function loadEager(doc){document.documentElement.lang="en";decorateTemplateAndTheme();await window.hlx.plugins.run("loadEager");const main=doc.querySelector("main");if(main){await decorateTemplates(main);decorateMain(main);await atjsPromise;await new Promise((resolve=>{window.requestAnimationFrame((async()=>{document.body.classList.add("appear");await waitForLCP(LCP_BLOCKS);resolve()}))}))}try{if(window.innerWidth>=900||sessionStorage.getItem("fonts-loaded")){loadFonts()}}catch(e){}}function getParameterByName(parameter,url=window.location.href){const modifiedParameter=parameter.replace(/[[\]]/g,"$&");const paramRegex=new RegExp(`[?&]${modifiedParameter}(=([^&#]*)|&|#|$)`);const results=paramRegex.exec(url);if(!results)return null;if(!results[2])return"";return decodeURIComponent(results[2].replace(/\+/g," "))}function loadUTMprams(){const utmParameters=["utm_campaign","utm_source","utm_medium","utm_content","utm_term","utm_previouspage"];utmParameters.forEach((param=>{const value=getParameterByName(param);if(value!==null){window.localStorage.setItem(`danaher_${param}`,value)}}))}async function loadLazy(doc){const main=doc.querySelector("main");await loadBlocks(main);const{hash:hash}=window.location;const element=hash?doc.getElementById(hash.substring(1)):false;if(hash&&element)element.scrollIntoView();loadFooter(doc.querySelector("footer"));loadCSS(`${window.hlx.codeBasePath}/styles/lazy-styles.css`);loadFonts();window.hlx.plugins.run("loadLazy");sampleRUM("lazy");sampleRUM.observe(main.querySelectorAll("div[data-block-name]"));sampleRUM.observe(main.querySelectorAll("picture > img"));loadUTMprams()}function loadDelayed(){window.setTimeout((()=>{window.hlx.plugins.load("delayed");window.hlx.plugins.run("loadDelayed");return import("./delayed.js")}),4e3)}async function loadPage(){setFavicon();await window.hlx.plugins.load("eager");await loadEager(document);await window.hlx.plugins.load("lazy");await loadLazy(document);loadDelayed()}function getDLPage(){const page={title:document.querySelector("title").textContent.replace(/[\n\t]/gm,""),language:"en",locale:"US",level:"top",type:"webpage",keywords:"",creationDate:getMetadata("creationdate"),updateDate:getMetadata("updatedate")};const path=window.location.pathname;if(path==="/"||path==="/us/en"||path==="/us/en.html"){page.level="top";page.type="home"}else if(path.includes("/us/en/news")){page.level="top";page.type="news"}else if(path.includes("/us/en/blog")){page.level="middle";page.type="blog"}else if(path.includes("/us/en/solutions")){page.level="middle";page.type="solutions"}else if(path.includes("/us/en/applications")){page.level="middle";page.type="applications"}else if(path.includes("/us/en/products")){if(path.includes("/us/en/products/family")){page.level="bottom";page.type="family"}else if(path.includes("/us/en/products/bundles")){page.level="bottom";page.type="bundles"}else if(path.includes("/us/en/products/sku")){page.level="bottom";page.type="sku"}else if(path.includes("/topics")){page.level="other";page.type="topics"}else{page.level="bottom";page.type="products"}}else if(path.includes("/us/en/library")){page.level="other";page.type="library"}else if(path.includes("/us/en/about-us")){page.level="top";page.type="about-us"}else if(path.includes("/us/en/expert")){page.level="top";page.type="expert"}else if(path.includes("/us/en/search")||path.includes("/us/en/danahersearch")){page.level="top";page.type="search"}else if(path.includes("/us/en/signin")){page.level="top";page.type="signin"}else if(path.includes("/us/en/legal")){page.level="top";page.type="legal"}return page}const urlParams=new URLSearchParams(window.location.search);const useProd=urlParams.get("useProd");if(window.location.host==="lifesciences.danaher.com"||useProd==="true"){window.DanaherConfig={siteID:"ls-us-en",gtmID:"GTM-THXPLCS",munchkinID:"306-EHG-641",marketoDomain:"//306-EHG-641.mktoweb.com",quoteCartPath:"/us/en/quote-cart.html",cartPath:"/us/en/cart.html",addressesPath:"/us/en/addresses.html",shippingPath:"/us/en/shipping.html",paymentPath:"/us/en/payment.html",receiptPath:"/us/en/receipt.html",quoteSubmitPath:"/us/en/submit-quote.html",intershopDomain:"https://shop.lifesciences.danaher.com",intershopPath:"/INTERSHOP/rest/WFS/DANAHERLS-LSIG-Site/-",searchOrg:"danaherproductionrfl96bkr",searchKey:"xxf2f10385-5a54-4a18-bb48-fd8025d6b5d2",workflowProductKey:"xx3d1b8da5-d1e9-4989-bbed-264a248a9e22",workflowResourceKey:"xxf6a8b387-10f2-4660-af5d-6d304d0a789d",productKey:"xxfb161aa6-0fa0-419f-af37-9c6d7784bf76",familyProductKey:"xx1ecd2a4f-8391-4c70-b3c0-2d589bda56b7",familyResourceKey:"xx9dd85afc-64b6-4295-bc5d-eb8285f96d52",categoryProductKey:"xx2a299d60-2cf1-48ab-b9d5-94daeb25f1d6",categoryDetailKey:"xx61910369-c1ab-4df9-8d8a-3092b1323fcc",productRecommendationsKey:"xx107716c0-1ccd-4a61-8717-6ca36b6cdb0e",megaMenuPath:"/content/dam/danaher/system/navigation/megamenu_items_us.json",coveoProductPageTitle:"Product Page",pdfEmbedKey:"4a472c386025439d8a4ce2493557f6e7",host:"lifesciences.danaher.com",scene7host:"https://danaherls.scene7.com"}}else{window.DanaherConfig={siteID:"ls-us-en",gtmID:"GTM-KCBGM2N",munchkinID:"439-KNJ-322",marketoDomain:"//439-KNJ-322.mktoweb.com",quoteCartPath:"/us/en/quote-cart.html",cartPath:"/us/en/cart.html",addressesPath:"/us/en/addresses.html",shippingPath:"/us/en/shipping.html",paymentPath:"/us/en/payment.html",receiptPath:"/us/en/receipt.html",quoteSubmitPath:"/us/en/submit-quote.html",intershopDomain:"https://stage.shop.lifesciences.danaher.com",intershopPath:"/INTERSHOP/rest/WFS/DANAHERLS-LSIG-Site/-",searchOrg:"danahernonproduction1892f3fhz",searchKey:"xx2a2e7271-78c3-4e3b-bac3-2fcbab75323b",workflowProductKey:"xx26ffc727-cc72-4bbd-98e3-34052f296382",workflowResourceKey:"xx14676f1d-cf4a-4a38-94f0-eda56e9920f1",productKey:"xx32da148e-dfd0-4725-a443-c05a7793afea",familyProductKey:"xx4e3989d6-93aa-4140-a227-19da35fcd1cc",familyResourceKey:"xx8274a91e-b29c-4267-8b3a-5022a2698605",categoryProductKey:"xxdf9d160d-f6e5-4c8c-969b-8570d7b81418",categoryDetailKey:"xxf2ea9bfd-bccb-4195-90fd-7757504fdc33",productRecommendationsKey:"xxea4d2c40-26e7-4e98-9377-d8ebe3f435ea",megaMenuPath:"/content/dam/danaher/system/navigation/megamenu_items_us.json",coveoProductPageTitle:"Product Page",pdfEmbedKey:"4a472c386025439d8a4ce2493557f6e7",host:"stage.lifesciences.danaher.com",scene7host:"https://s7d9.scene7.com"}}window.dataLayer=[];window.dataLayer.push({user:{customerID:"",accountType:"guest",marketCode:"",company:"",role:"",city:"",state:"",country:"",postalCode:"",lastVisit:""}});window.dataLayer.push({page:getDLPage()});loadPage(); \ No newline at end of file +import{sampleRUM,loadHeader,loadFooter,decorateButtons,decorateIcons,decorateSections,decorateBlocks,decorateTemplateAndTheme,waitForLCP,loadBlocks,loadCSS,toClassName,getMetadata,createOptimizedPicture,loadBlock,decorateBlock}from"./lib-franklin.js";import{div,domEl,img}from"./dom-builder.js";const LCP_BLOCKS=["breadcrumb","product-hero","carousel","columns"];const TEMPLATE_LIST={blog:{templateName:"blog",dependencies:["./schema.js","../blocks/columns/columns.js","../blocks/social-media/social-media.js","../blocks/article-info/article-info.js"]},productdetail:{templateName:"productDetail",dependencies:["./commerce.js","./product-payload-builder.js","./schema.js"]},processstep:"processstep",topic:"topic",library:"library",info:"library"};TEMPLATE_LIST.news=TEMPLATE_LIST.blog;export function imageHelper(imageUrl,imageAlt,eager=false){if(imageUrl.indexOf(".scene7.com")>-1){return img({src:`${imageUrl}`,alt:imageAlt,loading:eager?"eager":"lazy",class:"mb-2 h-48 w-full object-cover"})}const cardImage=createOptimizedPicture(imageUrl,imageAlt,eager,[{width:"500"}]);cardImage.querySelector("img").className="mb-2 h-48 w-full object-cover";return cardImage}export function createOptimizedS7Picture(src,alt="",eager=false){if(src.startsWith("/is/image")||src.indexOf(".scene7.com")>-1){const picture=document.createElement("picture");picture.appendChild(img({src:`${src}?$danaher-mobile$`,fetchpriority:"high",alt:alt,loading:eager?"eager":"lazy"}));return picture}return img({src:src,alt:alt,loading:eager?"eager":"lazy"})}export function formatDateUTCSeconds(date,options={}){const dateObj=new Date(0);dateObj.setUTCSeconds(date);return dateObj.toLocaleDateString("en-US",{month:"short",day:"2-digit",year:"numeric",...options})}export function generateUUID(){return Math.floor(1e3+Math.random()*9e3)}let originalOffset=0;export function scrollJumpMenuFixed(pageJumpMenuContainer){if(!originalOffset){const rectPageTabs=pageJumpMenuContainer.getBoundingClientRect();originalOffset=rectPageTabs.top}if(window.scrollY>originalOffset){pageJumpMenuContainer.classList.add(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-jump-menu-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));document.querySelector(".page-jump-menu-container.fixed ul")?.classList.add("shadow-none","rounded-none");document.querySelectorAll(".page-jump-menu-container.fixed ul li")?.forEach((el=>{el?.firstElementChild?.classList.add("rounded-full");el?.firstElementChild?.querySelector("span.icon svg use")?.classList.add("stroke-danaherpurple-500")}));document.querySelector('.page-jump-menu-container.fixed li[aria-selected="true"] a span.icon svg')?.classList.add("stroke-white");pageJumpMenuContainer.classList.remove(..."[&_.page-jump-menu-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}else{pageJumpMenuContainer.classList.remove(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-jump-menu-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));document.querySelectorAll(".page-jump-menu-container ul li")?.forEach((el=>el?.firstElementChild?.classList.remove("rounded-full")));pageJumpMenuContainer.classList.add(..."[&_.page-jump-menu-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}}let pageTabsOriginalOffset=0;export function scrollPageTabFixed(pageTabsContainer){if(!pageTabsOriginalOffset){const rectPageTabs=pageTabsContainer.getBoundingClientRect();pageTabsOriginalOffset=rectPageTabs.top}if(window.scrollY>pageTabsOriginalOffset){pageTabsContainer.classList.add(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-tabs-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));pageTabsContainer.classList.remove(..."[&_.page-tabs-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}else{pageTabsContainer.classList.remove(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-tabs-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));pageTabsContainer.classList.add(..."[&_.page-tabs-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}}export function makePublicUrl(url){const isProd=window.location.hostname.includes("lifesciences.danaher.com");try{const newURL=new URL(url,window.location.origin);if(isProd){if(newURL.pathname.endsWith(".html")){return newURL.pathname}newURL.pathname+=".html";return newURL.pathname}if(newURL.pathname.endsWith(".html")){newURL.pathname=newURL.pathname.slice(0,-5);return newURL.pathname}return newURL.pathname}catch(error){console.error("Invalid URL:",error);return url}}export function setJsonLd(data,name){const existingScript=document.head.querySelector(`script[data-name="${name}"]`);if(existingScript){existingScript.innerHTML=JSON.stringify(data);return}const script=document.createElement("script");script.type="application/ld+json";script.innerHTML=JSON.stringify(data);script.dataset.name=name;document.head.appendChild(script)}function setFavicon(){const faviconLink=document.querySelector("link[rel*='icon']")||document.createElement("link");faviconLink.type="image/x-icon";faviconLink.rel="shortcut icon";faviconLink.href=`https://${window.location.hostname}/favicon.ico`;document.getElementsByTagName("head")[0].appendChild(faviconLink)}export async function getFragmentFromFile(url){const response=await fetch(url);if(!response.ok){console.error("error loading fragment details",response);return null}const text=await response.text();if(!text){console.error("fragment details empty",url);return null}return text}export function getCookie(cname){let value=decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(cname).replace(/[\\-\\.\\+\\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null;if(value&&(value.substring(0,1)==="{"&&value.substring(value.length-1,value.length)==="}"||value.substring(0,1)==="["&&value.substring(value.length-1,value.length)==="]")){try{value=JSON.parse(value)}catch(e){return value}}return value}export function isOTEnabled(){const otCookie=getCookie("OptanonConsent");if(typeof otCookie==="string"){return otCookie.includes("C0002:1")}return true}export function setCookie(cname,cvalue,expTime=30*1e3*60*60*24,path="/"){const today=new Date;today.setTime(today.getTime()+expTime);const expires="expires=".concat(today.toGMTString());const cookieString=cname.concat("=").concat(cvalue).concat(";").concat(expires).concat(";path=").concat(path);document.cookie=cookieString}async function buildVideo(main){const videoLinks=main.querySelectorAll('a[href*="youtube.com"],a[href*="vimeo.com"],a[href*="vidyard.com"]');if(videoLinks.length>0){const{default:decorateEmbed}=await import("../blocks/embed/embed.js");videoLinks.forEach((link=>{if(link.closest(".embed, .hero")==null){decorateEmbed(link.parentNode)}}))}}async function loadFonts(){await loadCSS(`${window.hlx.codeBasePath}/styles/fonts.css`);try{if(!window.location.hostname.includes("localhost"))sessionStorage.setItem("fonts-loaded","true")}catch(e){}}function loadBreadCrumb(){const header=document.querySelector("header");const breadcrumb=document.createElement("breadcrumb");if(window.location.pathname!=="/")header.after(breadcrumb)}function loadMobileMenu(){const breadcrumb=document.querySelector("breadcrumb");const mobileMunu=document.createElement("mobilemenu");const url=new URL(window.location.href);if(url.pathname.match(/\/us\/en\/products\/(family\/|sku\/|bundles\/)/)||url.pathname.match(/\/us\/en\/solutions\//)){breadcrumb.after(mobileMunu)}}function buildAutoBlocks(main){try{buildVideo(main)}catch(error){console.error("Auto Blocking failed",error)}}export function decorateModals(main){const ctaModalButton=main.querySelector(".show-modal-btn");const content=()=>ctaModalButton.getAttribute("data-dialog-message")?ctaModalButton.getAttribute("dialog-message"):"";ctaModalButton?.addEventListener("click",(async e=>{e.preventDefault();const{default:getModal}=await import("./modal.js");const customModal=await getModal("custom-modal",content,(modal=>{modal.querySelector('p[name="close"]')?.addEventListener("click",(()=>modal.close()))}));customModal.showModal()}))}function decorateTwoColumnSection(main){main.querySelectorAll(".section.container-two-col").forEach((section=>{const defaultContentWrappers=section.querySelectorAll(":scope > .default-content-wrapper");defaultContentWrappers.forEach((contentWrapper=>{[...contentWrapper.children].forEach((child=>{section.appendChild(child)}));let nextElement=contentWrapper.nextSibling;const allBlocks=[];while(nextElement){if(nextElement.className.includes("-wrapper"))allBlocks.push(nextElement);nextElement=nextElement.nextSibling}section.append(...allBlocks);section.removeChild(contentWrapper)}));const newSection=div();let currentDiv=null;[...section.children].forEach((child=>{if(child.tagName==="H1"){newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-4"}));currentDiv=div({class:"col-right w-full mt-0 md:mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10"})}if(child.tagName==="DIV"){currentDiv=div({class:"col-right w-full mt-0 md:mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10"})}const childClone=child.cloneNode(true);if(childClone.tagName==="H2"&&childClone.querySelector(":scope > strong")){if(currentDiv?.classList.contains("col-right")){newSection.appendChild(currentDiv)}childClone.className="text-gray-900 !text-base leading-6 font-bold pt-6 pb-4 my-0";newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-4"},childClone,domEl("hr",{style:"height: 10px; width: 54px; border-width: 0px; color: rgb(216, 244, 250); background-color: rgb(216, 244, 250);"})));currentDiv=div({class:"col-right w-full mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-10"})}else if(currentDiv?.classList.contains("col-right")){currentDiv.appendChild(childClone)}}));if(currentDiv){newSection.appendChild(currentDiv)}newSection.classList.add("w-full","flex","flex-wrap","break-normal");section.innerHTML=newSection.outerHTML;section.classList.add("mx-auto","w-full","flex","flex-wrap","mb-5")}))}function updateExternalLinks(main){const REFERERS=[window.location.origin];main.querySelectorAll("a[href]").forEach((a=>{try{const{origin:origin,pathname:pathname,hash:hash}=new URL(a.href,window.location.href);const targetHash=hash&&hash.startsWith("#_");const isPDF=pathname.split(".").pop()==="pdf";if(origin&&origin!==window.location.origin&&!targetHash||isPDF){a.setAttribute("target","_blank");if(!REFERERS.includes(origin))a.setAttribute("rel","noopener")}else if(targetHash){a.setAttribute("target",hash.replace("#",""));a.href=a.href.replace(hash,"")}}catch(e){console.warn(`Invalid link in ${main}: ${a.href}`)}}))}function lazyLoadHiddenPageNavTabs(sections,nameOfFirstSection){const activeHash=window.location.hash;const active=activeHash?activeHash.substring(1,activeHash.length).toLowerCase():nameOfFirstSection;sections.forEach((section=>{const hasBreadCrumb=section.className.includes("breadcrumb-container");if(!hasBreadCrumb&§ion.getAttribute("aria-labelledby")!==active){section.querySelectorAll(".block").forEach((block=>{block.setAttribute("data-block-status","loaded");block.setAttribute("data-block-lazy-load",true);block.parentElement.style.display="none"}));const loadLazyBlocks=lazySection=>{lazySection.querySelectorAll(".block[data-block-lazy-load]").forEach((async block=>{block.removeAttribute("data-block-lazy-load");block.setAttribute("data-block-status","initialized");await loadBlock(block);block.parentElement.style.display=""}));section.setAttribute("data-section-status","loaded")};const observer=new IntersectionObserver((entries=>{if(entries.some((e=>e.isIntersecting))){observer.disconnect();loadLazyBlocks(section)}}));observer.observe(section);setTimeout((()=>{observer.disconnect();loadLazyBlocks(section)}),5e3)}}))}function decoratePageNav(main){const pageTabsBlock=main.querySelector(".page-tabs");if(!pageTabsBlock)return;const pageTabSection=pageTabsBlock.closest("div.section");let sections=[...main.querySelectorAll("div.section")];sections=sections.slice(sections.indexOf(pageTabSection)+1);const namedSections=sections.filter((section=>section.hasAttribute("data-tabname")));let index=0;sections.forEach((section=>{if(indeximport(dep)))]).then((([mod])=>mod.default));if(decorator){await decorator(main)}document.body.classList.add(templateName)}}catch(error){console.error("Auto Blocking failed",error)}}function decorateEmbeddedBlocks(container){container.querySelectorAll("div.section > div").forEach(decorateBlock)}export async function processEmbedFragment(element){const block=div({class:"embed-fragment"});[...element.classList].forEach((className=>{block.classList.add(className)}));const link=element.textContent;if(link){const fragment=await getFragmentFromFile(`${link}.plain.html`);if(fragment){block.innerHTML=fragment;const sections=block.querySelectorAll(".embed-fragment > div");[...sections].forEach((section=>{section.classList.add("section")}));decorateEmbeddedBlocks(block);decorateSections(block);loadBlocks(block)}else{const elementInner=element.innerHTML;block.append(div({class:"section"}));block.querySelector(".section").innerHTML=elementInner}}decorateButtons(block);decorateIcons(block);return block}function loadATPageParams(){const id=window.location.pathname.replaceAll("/","_").replace(/\.html$/,"").substring(1);const skuId=getMetadata("sku");const categoryId=getMetadata("fullcategory").split("|").pop();const thumbnailURL=getMetadata("og:image");const title=getMetadata("og:title");const name=title.indexOf("| Danaher Life Sciences")>-1?title.split("| Danaher Life Sciences")[0]:title;const message=getMetadata("og:description");const pageUrl=getMetadata("og:url");const brand=getMetadata("brand");const page=window.location.pathname.split("/")[3];const tags=getMetadata("article:tag");const articleAuthor=getMetadata("authorname");const articlePostDate=getMetadata("publishdate");const articleReadTime=getMetadata("readingtime");const targetParams={id:id,skuId:skuId,categoryId:categoryId,thumbnailURL:thumbnailURL,name:name,message:message,pageUrl:pageUrl,brand:brand,page:page,tags:tags,articleAuthor:articleAuthor,articlePostDate:articlePostDate,articleReadTime:articleReadTime};return targetParams}function initATJS(path,config){window.targetGlobalSettings=config;window.atPageParams=loadATPageParams();window.targetPageParams=function getTargetPageParams(){return{at_property:"6aeb619e-92d9-f4cf-f209-6d88ff58af6a","entity.id":window.atPageParams?.id,"entity.skuId":window.atPageParams?.skuId,"entity.categoryId":window.atPageParams?.categoryId,"entity.thumbnailURL":window.atPageParams?.thumbnailURL,"entity.name":window.atPageParams?.name,"entity.message":window.atPageParams?.message,"entity.pageUrl":window.atPageParams?.pageUrl,"entity.brand":window.atPageParams?.brand,"entity.page":window.atPageParams?.page,"entity.tags":window.atPageParams?.tags,"entity.articleAuthor":window.atPageParams?.articleAuthor,"entity.articlePostDate":window.atPageParams?.articlePostDate,"entity.articleReadTime":window.atPageParams?.articleReadTime,danaherCompany:localStorage.getItem("danaher_company")?localStorage.getItem("danaher_company"):"",utmCampaign:localStorage.getItem("danaher_utm_campaign")?localStorage.getItem("danaher_utm_campaign"):"",utmSource:localStorage.getItem("danaher_utm_source")?localStorage.getItem("danaher_utm_source"):"",utmMedium:localStorage.getItem("danaher_utm_medium")?localStorage.getItem("danaher_utm_medium"):"",utmContent:localStorage.getItem("danaher_utm_content")?localStorage.getItem("danaher_utm_content"):""}};return new Promise((resolve=>{import(path).then(resolve)}))}function onDecoratedElement(fn){if(document.querySelector('[data-block-status="loaded"],[data-section-status="loaded"]')){fn()}const observer=new MutationObserver((mutations=>{if(mutations.some((m=>m.target.tagName==="BODY"||m.target.dataset.sectionStatus==="loaded"||m.target.dataset.blockStatus==="loaded"))){fn()}}));observer.observe(document.querySelector("main"),{subtree:true,attributes:true,attributeFilter:["data-block-status","data-section-status"]});observer.observe(document.querySelector("body"),{childList:true})}function toCssSelector(selector){return selector.replace(/(\.\S+)?:eq\((\d+)\)/g,((_,clss,i)=>`:nth-child(${Number(i)+1}${clss?` of ${clss})`:""}`))}async function getElementForOffer(offer){const selector=offer.cssSelector||toCssSelector(offer.selector);return document.querySelector(selector)}async function getElementForMetric(metric){const selector=toCssSelector(metric.selector);return document.querySelector(selector)}async function getAndApplyOffers(){const response=await window.adobe.target.getOffers({request:{execute:{pageLoad:{}}}});const{options:options=[],metrics:metrics=[]}=response.execute.pageLoad;onDecoratedElement((()=>{window.adobe.target.applyOffers({response:response});options.forEach((o=>o.content=o.content.filter((c=>!getElementForOffer(c)))));metrics.map(((m,i)=>getElementForMetric(m)?i:-1)).filter((i=>i>=0)).reverse().map((i=>metrics.splice(i,1)))}))}let atjsPromise=Promise.resolve();const urlTarget=window.location.pathname;const regex=/^\/(us\/en\/products\.html)?$/;if(!regex.test(urlTarget)){atjsPromise=initATJS("./at.js",{clientCode:"danaher",serverDomain:"danaher.tt.omtrdc.net",imsOrgId:"08333E7B636A2D4D0A495C34@AdobeOrg",bodyHidingEnabled:false,cookieDomain:window.location.hostname,pageLoadEnabled:false,secureOnly:true,viewsEnabled:false,withWebGLRenderer:false}).catch((e=>{console.error("Error loading at.js",e)}));document.addEventListener("at-library-loaded",(()=>getAndApplyOffers()))}async function loadEager(doc){document.documentElement.lang="en";decorateTemplateAndTheme();await window.hlx.plugins.run("loadEager");const main=doc.querySelector("main");if(main){await decorateTemplates(main);decorateMain(main);await atjsPromise;await new Promise((resolve=>{window.requestAnimationFrame((async()=>{document.body.classList.add("appear");await waitForLCP(LCP_BLOCKS);resolve()}))}))}try{if(window.innerWidth>=900||sessionStorage.getItem("fonts-loaded")){loadFonts()}}catch(e){}}function getParameterByName(parameter,url=window.location.href){const modifiedParameter=parameter.replace(/[[\]]/g,"$&");const paramRegex=new RegExp(`[?&]${modifiedParameter}(=([^&#]*)|&|#|$)`);const results=paramRegex.exec(url);if(!results)return null;if(!results[2])return"";return decodeURIComponent(results[2].replace(/\+/g," "))}function loadUTMprams(){const utmParameters=["utm_campaign","utm_source","utm_medium","utm_content","utm_term","utm_previouspage"];utmParameters.forEach((param=>{const value=getParameterByName(param);if(value!==null){window.localStorage.setItem(`danaher_${param}`,value)}}))}async function loadLazy(doc){const main=doc.querySelector("main");await loadBlocks(main);const{hash:hash}=window.location;const element=hash?doc.getElementById(hash.substring(1)):false;if(hash&&element)element.scrollIntoView();loadFooter(doc.querySelector("footer"));loadCSS(`${window.hlx.codeBasePath}/styles/lazy-styles.css`);loadFonts();window.hlx.plugins.run("loadLazy");sampleRUM("lazy");sampleRUM.observe(main.querySelectorAll("div[data-block-name]"));sampleRUM.observe(main.querySelectorAll("picture > img"));loadUTMprams()}function loadDelayed(){window.setTimeout((()=>{window.hlx.plugins.load("delayed");window.hlx.plugins.run("loadDelayed");return import("./delayed.js")}),4e3)}async function loadPage(){setFavicon();await window.hlx.plugins.load("eager");await loadEager(document);await window.hlx.plugins.load("lazy");await loadLazy(document);loadDelayed()}function getDLPage(){const page={title:document.querySelector("title").textContent.replace(/[\n\t]/gm,""),language:"en",locale:"US",level:"top",type:"webpage",keywords:"",creationDate:getMetadata("creationdate"),updateDate:getMetadata("updatedate")};const path=window.location.pathname;if(path==="/"||path==="/us/en"||path==="/us/en.html"){page.level="top";page.type="home"}else if(path.includes("/us/en/news")){page.level="top";page.type="news"}else if(path.includes("/us/en/blog")){page.level="middle";page.type="blog"}else if(path.includes("/us/en/solutions")){page.level="middle";page.type="solutions"}else if(path.includes("/us/en/applications")){page.level="middle";page.type="applications"}else if(path.includes("/us/en/products")){if(path.includes("/us/en/products/family")){page.level="bottom";page.type="family"}else if(path.includes("/us/en/products/bundles")){page.level="bottom";page.type="bundles"}else if(path.includes("/us/en/products/sku")){page.level="bottom";page.type="sku"}else if(path.includes("/topics")){page.level="other";page.type="topics"}else{page.level="bottom";page.type="products"}}else if(path.includes("/us/en/library")){page.level="other";page.type="library"}else if(path.includes("/us/en/about-us")){page.level="top";page.type="about-us"}else if(path.includes("/us/en/expert")){page.level="top";page.type="expert"}else if(path.includes("/us/en/search")||path.includes("/us/en/danahersearch")){page.level="top";page.type="search"}else if(path.includes("/us/en/signin")){page.level="top";page.type="signin"}else if(path.includes("/us/en/legal")){page.level="top";page.type="legal"}return page}const urlParams=new URLSearchParams(window.location.search);const useProd=urlParams.get("useProd");if(window.location.host==="lifesciences.danaher.com"||useProd==="true"){window.DanaherConfig={siteID:"ls-us-en",gtmID:"GTM-THXPLCS",munchkinID:"306-EHG-641",marketoDomain:"//306-EHG-641.mktoweb.com",quoteCartPath:"/us/en/quote-cart.html",cartPath:"/us/en/cart.html",addressesPath:"/us/en/addresses.html",shippingPath:"/us/en/shipping.html",paymentPath:"/us/en/payment.html",receiptPath:"/us/en/receipt.html",quoteSubmitPath:"/us/en/submit-quote.html",intershopDomain:"https://shop.lifesciences.danaher.com",intershopPath:"/INTERSHOP/rest/WFS/DANAHERLS-LSIG-Site/-",searchOrg:"danaherproductionrfl96bkr",searchKey:"xxf2f10385-5a54-4a18-bb48-fd8025d6b5d2",workflowProductKey:"xx3d1b8da5-d1e9-4989-bbed-264a248a9e22",workflowResourceKey:"xxf6a8b387-10f2-4660-af5d-6d304d0a789d",productKey:"xxfb161aa6-0fa0-419f-af37-9c6d7784bf76",familyProductKey:"xx1ecd2a4f-8391-4c70-b3c0-2d589bda56b7",familyResourceKey:"xx9dd85afc-64b6-4295-bc5d-eb8285f96d52",categoryProductKey:"xx2a299d60-2cf1-48ab-b9d5-94daeb25f1d6",categoryDetailKey:"xx61910369-c1ab-4df9-8d8a-3092b1323fcc",productRecommendationsKey:"xx107716c0-1ccd-4a61-8717-6ca36b6cdb0e",megaMenuPath:"/content/dam/danaher/system/navigation/megamenu_items_us.json",coveoProductPageTitle:"Product Page",pdfEmbedKey:"4a472c386025439d8a4ce2493557f6e7",host:"lifesciences.danaher.com",scene7host:"https://danaherls.scene7.com"}}else{window.DanaherConfig={siteID:"ls-us-en",gtmID:"GTM-KCBGM2N",munchkinID:"439-KNJ-322",marketoDomain:"//439-KNJ-322.mktoweb.com",quoteCartPath:"/us/en/quote-cart.html",cartPath:"/us/en/cart.html",addressesPath:"/us/en/addresses.html",shippingPath:"/us/en/shipping.html",paymentPath:"/us/en/payment.html",receiptPath:"/us/en/receipt.html",quoteSubmitPath:"/us/en/submit-quote.html",intershopDomain:"https://stage.shop.lifesciences.danaher.com",intershopPath:"/INTERSHOP/rest/WFS/DANAHERLS-LSIG-Site/-",searchOrg:"danahernonproduction1892f3fhz",searchKey:"xx2a2e7271-78c3-4e3b-bac3-2fcbab75323b",workflowProductKey:"xx26ffc727-cc72-4bbd-98e3-34052f296382",workflowResourceKey:"xx14676f1d-cf4a-4a38-94f0-eda56e9920f1",productKey:"xx32da148e-dfd0-4725-a443-c05a7793afea",familyProductKey:"xx4e3989d6-93aa-4140-a227-19da35fcd1cc",familyResourceKey:"xx8274a91e-b29c-4267-8b3a-5022a2698605",categoryProductKey:"xxdf9d160d-f6e5-4c8c-969b-8570d7b81418",categoryDetailKey:"xxf2ea9bfd-bccb-4195-90fd-7757504fdc33",productRecommendationsKey:"xxea4d2c40-26e7-4e98-9377-d8ebe3f435ea",megaMenuPath:"/content/dam/danaher/system/navigation/megamenu_items_us.json",coveoProductPageTitle:"Product Page",pdfEmbedKey:"4a472c386025439d8a4ce2493557f6e7",host:"stage.lifesciences.danaher.com",scene7host:"https://s7d9.scene7.com"}}window.dataLayer=[];window.dataLayer.push({user:{customerID:"",accountType:"guest",marketCode:"",company:"",role:"",city:"",state:"",country:"",postalCode:"",lastVisit:""}});window.dataLayer.push({page:getDLPage()});loadPage(); \ No newline at end of file From 7413ccb17ea8abd62be8134ecf2e83582f258618 Mon Sep 17 00:00:00 2001 From: wz914876 Date: Thu, 20 Jun 2024 12:32:29 +0530 Subject: [PATCH 02/29] additional DIV changes --- scripts/scripts-dev.js | 51 ++++++++++++++++++++++++++---------------- scripts/scripts.js | 2 +- styles/styles.css | 29 ++++++++++++++++++++---- 3 files changed, 58 insertions(+), 24 deletions(-) diff --git a/scripts/scripts-dev.js b/scripts/scripts-dev.js index f0eca9ad8..37a729dbf 100644 --- a/scripts/scripts-dev.js +++ b/scripts/scripts-dev.js @@ -354,34 +354,31 @@ export function decorateModals(main) { * @param {Element} main The main element */ function decorateTwoColumnSection(main) { - main.querySelectorAll('.section.container-two-col').forEach((section) => { - const defaultContentWrappers = section.querySelectorAll(':scope > .default-content-wrapper'); - defaultContentWrappers.forEach((contentWrapper) => { - [...contentWrapper.children].forEach((child) => { - section.appendChild(child); - }); - let nextElement = contentWrapper.nextSibling; - const allBlocks = []; - while (nextElement) { - if (nextElement.className.includes('-wrapper')) allBlocks.push(nextElement); - nextElement = nextElement.nextSibling; - } - section.append(...allBlocks); - section.removeChild(contentWrapper); + const dcwElements = div(); + const defaultContentWrappers = main.querySelectorAll('.default-content-wrapper'); + defaultContentWrappers.forEach((contentWrapper) => { + [...contentWrapper.children].forEach((child) => { + dcwElements.appendChild(child); }); - + let nextElement = contentWrapper.nextSibling; + const allBlocks = []; + while (nextElement) { + if (nextElement.className.includes('-wrapper')) allBlocks.push(nextElement); + nextElement = nextElement.nextSibling; + } + dcwElements.append(...allBlocks); + }); + main.querySelectorAll('.section.container-two-col').forEach((section) => { const newSection = div(); let currentDiv = null; - [...section.children].forEach((child) => { + let additionalDiv = null; + [...dcwElements.children].forEach((child) => { if (child.tagName === 'H1') { newSection.appendChild( div({ class: 'col-left lg:w-1/3 xl:w-1/4 pt-4' }), ); currentDiv = div({ class: 'col-right w-full mt-0 md:mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10' }); } - if (child.tagName === 'DIV') { - currentDiv = div({ class: 'col-right w-full mt-0 md:mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10' }); - } const childClone = child.cloneNode(true); if (childClone.tagName === 'H2' && childClone.querySelector(':scope > strong')) { if (currentDiv?.classList.contains('col-right')) { @@ -402,9 +399,25 @@ function decorateTwoColumnSection(main) { currentDiv.appendChild(childClone); } }); + [...section.children].forEach((child) => { + if (child.tagName === 'DIV') { + additionalDiv = div({ class: 'col-right w-full mt-0 md:mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10' }); + } + const childClone = child.cloneNode(true); + additionalDiv.appendChild(childClone); + }); if (currentDiv) { newSection.appendChild(currentDiv); } + if (additionalDiv) { + // [...additionalDiv.children].forEach((child) => { + // if(child.classList.contains('carousel-wrapper')){ + // child.classList.add(...'border-t border-b border-solid border-black'.split(' ')); + // } + // }); + newSection.appendChild(div({ class: 'col-left lg:w-1/3 xl:w-1/4 pt-0' })); + newSection.appendChild(additionalDiv); + } newSection.classList.add('w-full', 'flex', 'flex-wrap', 'break-normal'); section.innerHTML = newSection.outerHTML; section.classList.add('mx-auto', 'w-full', 'flex', 'flex-wrap', 'mb-5'); diff --git a/scripts/scripts.js b/scripts/scripts.js index c0d3ff5a3..03c357fe0 100644 --- a/scripts/scripts.js +++ b/scripts/scripts.js @@ -1 +1 @@ -import{sampleRUM,loadHeader,loadFooter,decorateButtons,decorateIcons,decorateSections,decorateBlocks,decorateTemplateAndTheme,waitForLCP,loadBlocks,loadCSS,toClassName,getMetadata,createOptimizedPicture,loadBlock,decorateBlock}from"./lib-franklin.js";import{div,domEl,img}from"./dom-builder.js";const LCP_BLOCKS=["breadcrumb","product-hero","carousel","columns"];const TEMPLATE_LIST={blog:{templateName:"blog",dependencies:["./schema.js","../blocks/columns/columns.js","../blocks/social-media/social-media.js","../blocks/article-info/article-info.js"]},productdetail:{templateName:"productDetail",dependencies:["./commerce.js","./product-payload-builder.js","./schema.js"]},processstep:"processstep",topic:"topic",library:"library",info:"library"};TEMPLATE_LIST.news=TEMPLATE_LIST.blog;export function imageHelper(imageUrl,imageAlt,eager=false){if(imageUrl.indexOf(".scene7.com")>-1){return img({src:`${imageUrl}`,alt:imageAlt,loading:eager?"eager":"lazy",class:"mb-2 h-48 w-full object-cover"})}const cardImage=createOptimizedPicture(imageUrl,imageAlt,eager,[{width:"500"}]);cardImage.querySelector("img").className="mb-2 h-48 w-full object-cover";return cardImage}export function createOptimizedS7Picture(src,alt="",eager=false){if(src.startsWith("/is/image")||src.indexOf(".scene7.com")>-1){const picture=document.createElement("picture");picture.appendChild(img({src:`${src}?$danaher-mobile$`,fetchpriority:"high",alt:alt,loading:eager?"eager":"lazy"}));return picture}return img({src:src,alt:alt,loading:eager?"eager":"lazy"})}export function formatDateUTCSeconds(date,options={}){const dateObj=new Date(0);dateObj.setUTCSeconds(date);return dateObj.toLocaleDateString("en-US",{month:"short",day:"2-digit",year:"numeric",...options})}export function generateUUID(){return Math.floor(1e3+Math.random()*9e3)}let originalOffset=0;export function scrollJumpMenuFixed(pageJumpMenuContainer){if(!originalOffset){const rectPageTabs=pageJumpMenuContainer.getBoundingClientRect();originalOffset=rectPageTabs.top}if(window.scrollY>originalOffset){pageJumpMenuContainer.classList.add(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-jump-menu-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));document.querySelector(".page-jump-menu-container.fixed ul")?.classList.add("shadow-none","rounded-none");document.querySelectorAll(".page-jump-menu-container.fixed ul li")?.forEach((el=>{el?.firstElementChild?.classList.add("rounded-full");el?.firstElementChild?.querySelector("span.icon svg use")?.classList.add("stroke-danaherpurple-500")}));document.querySelector('.page-jump-menu-container.fixed li[aria-selected="true"] a span.icon svg')?.classList.add("stroke-white");pageJumpMenuContainer.classList.remove(..."[&_.page-jump-menu-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}else{pageJumpMenuContainer.classList.remove(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-jump-menu-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));document.querySelectorAll(".page-jump-menu-container ul li")?.forEach((el=>el?.firstElementChild?.classList.remove("rounded-full")));pageJumpMenuContainer.classList.add(..."[&_.page-jump-menu-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}}let pageTabsOriginalOffset=0;export function scrollPageTabFixed(pageTabsContainer){if(!pageTabsOriginalOffset){const rectPageTabs=pageTabsContainer.getBoundingClientRect();pageTabsOriginalOffset=rectPageTabs.top}if(window.scrollY>pageTabsOriginalOffset){pageTabsContainer.classList.add(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-tabs-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));pageTabsContainer.classList.remove(..."[&_.page-tabs-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}else{pageTabsContainer.classList.remove(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-tabs-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));pageTabsContainer.classList.add(..."[&_.page-tabs-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}}export function makePublicUrl(url){const isProd=window.location.hostname.includes("lifesciences.danaher.com");try{const newURL=new URL(url,window.location.origin);if(isProd){if(newURL.pathname.endsWith(".html")){return newURL.pathname}newURL.pathname+=".html";return newURL.pathname}if(newURL.pathname.endsWith(".html")){newURL.pathname=newURL.pathname.slice(0,-5);return newURL.pathname}return newURL.pathname}catch(error){console.error("Invalid URL:",error);return url}}export function setJsonLd(data,name){const existingScript=document.head.querySelector(`script[data-name="${name}"]`);if(existingScript){existingScript.innerHTML=JSON.stringify(data);return}const script=document.createElement("script");script.type="application/ld+json";script.innerHTML=JSON.stringify(data);script.dataset.name=name;document.head.appendChild(script)}function setFavicon(){const faviconLink=document.querySelector("link[rel*='icon']")||document.createElement("link");faviconLink.type="image/x-icon";faviconLink.rel="shortcut icon";faviconLink.href=`https://${window.location.hostname}/favicon.ico`;document.getElementsByTagName("head")[0].appendChild(faviconLink)}export async function getFragmentFromFile(url){const response=await fetch(url);if(!response.ok){console.error("error loading fragment details",response);return null}const text=await response.text();if(!text){console.error("fragment details empty",url);return null}return text}export function getCookie(cname){let value=decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(cname).replace(/[\\-\\.\\+\\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null;if(value&&(value.substring(0,1)==="{"&&value.substring(value.length-1,value.length)==="}"||value.substring(0,1)==="["&&value.substring(value.length-1,value.length)==="]")){try{value=JSON.parse(value)}catch(e){return value}}return value}export function isOTEnabled(){const otCookie=getCookie("OptanonConsent");if(typeof otCookie==="string"){return otCookie.includes("C0002:1")}return true}export function setCookie(cname,cvalue,expTime=30*1e3*60*60*24,path="/"){const today=new Date;today.setTime(today.getTime()+expTime);const expires="expires=".concat(today.toGMTString());const cookieString=cname.concat("=").concat(cvalue).concat(";").concat(expires).concat(";path=").concat(path);document.cookie=cookieString}async function buildVideo(main){const videoLinks=main.querySelectorAll('a[href*="youtube.com"],a[href*="vimeo.com"],a[href*="vidyard.com"]');if(videoLinks.length>0){const{default:decorateEmbed}=await import("../blocks/embed/embed.js");videoLinks.forEach((link=>{if(link.closest(".embed, .hero")==null){decorateEmbed(link.parentNode)}}))}}async function loadFonts(){await loadCSS(`${window.hlx.codeBasePath}/styles/fonts.css`);try{if(!window.location.hostname.includes("localhost"))sessionStorage.setItem("fonts-loaded","true")}catch(e){}}function loadBreadCrumb(){const header=document.querySelector("header");const breadcrumb=document.createElement("breadcrumb");if(window.location.pathname!=="/")header.after(breadcrumb)}function loadMobileMenu(){const breadcrumb=document.querySelector("breadcrumb");const mobileMunu=document.createElement("mobilemenu");const url=new URL(window.location.href);if(url.pathname.match(/\/us\/en\/products\/(family\/|sku\/|bundles\/)/)||url.pathname.match(/\/us\/en\/solutions\//)){breadcrumb.after(mobileMunu)}}function buildAutoBlocks(main){try{buildVideo(main)}catch(error){console.error("Auto Blocking failed",error)}}export function decorateModals(main){const ctaModalButton=main.querySelector(".show-modal-btn");const content=()=>ctaModalButton.getAttribute("data-dialog-message")?ctaModalButton.getAttribute("dialog-message"):"";ctaModalButton?.addEventListener("click",(async e=>{e.preventDefault();const{default:getModal}=await import("./modal.js");const customModal=await getModal("custom-modal",content,(modal=>{modal.querySelector('p[name="close"]')?.addEventListener("click",(()=>modal.close()))}));customModal.showModal()}))}function decorateTwoColumnSection(main){main.querySelectorAll(".section.container-two-col").forEach((section=>{const defaultContentWrappers=section.querySelectorAll(":scope > .default-content-wrapper");defaultContentWrappers.forEach((contentWrapper=>{[...contentWrapper.children].forEach((child=>{section.appendChild(child)}));let nextElement=contentWrapper.nextSibling;const allBlocks=[];while(nextElement){if(nextElement.className.includes("-wrapper"))allBlocks.push(nextElement);nextElement=nextElement.nextSibling}section.append(...allBlocks);section.removeChild(contentWrapper)}));const newSection=div();let currentDiv=null;[...section.children].forEach((child=>{if(child.tagName==="H1"){newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-4"}));currentDiv=div({class:"col-right w-full mt-0 md:mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10"})}if(child.tagName==="DIV"){currentDiv=div({class:"col-right w-full mt-0 md:mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10"})}const childClone=child.cloneNode(true);if(childClone.tagName==="H2"&&childClone.querySelector(":scope > strong")){if(currentDiv?.classList.contains("col-right")){newSection.appendChild(currentDiv)}childClone.className="text-gray-900 !text-base leading-6 font-bold pt-6 pb-4 my-0";newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-4"},childClone,domEl("hr",{style:"height: 10px; width: 54px; border-width: 0px; color: rgb(216, 244, 250); background-color: rgb(216, 244, 250);"})));currentDiv=div({class:"col-right w-full mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-10"})}else if(currentDiv?.classList.contains("col-right")){currentDiv.appendChild(childClone)}}));if(currentDiv){newSection.appendChild(currentDiv)}newSection.classList.add("w-full","flex","flex-wrap","break-normal");section.innerHTML=newSection.outerHTML;section.classList.add("mx-auto","w-full","flex","flex-wrap","mb-5")}))}function updateExternalLinks(main){const REFERERS=[window.location.origin];main.querySelectorAll("a[href]").forEach((a=>{try{const{origin:origin,pathname:pathname,hash:hash}=new URL(a.href,window.location.href);const targetHash=hash&&hash.startsWith("#_");const isPDF=pathname.split(".").pop()==="pdf";if(origin&&origin!==window.location.origin&&!targetHash||isPDF){a.setAttribute("target","_blank");if(!REFERERS.includes(origin))a.setAttribute("rel","noopener")}else if(targetHash){a.setAttribute("target",hash.replace("#",""));a.href=a.href.replace(hash,"")}}catch(e){console.warn(`Invalid link in ${main}: ${a.href}`)}}))}function lazyLoadHiddenPageNavTabs(sections,nameOfFirstSection){const activeHash=window.location.hash;const active=activeHash?activeHash.substring(1,activeHash.length).toLowerCase():nameOfFirstSection;sections.forEach((section=>{const hasBreadCrumb=section.className.includes("breadcrumb-container");if(!hasBreadCrumb&§ion.getAttribute("aria-labelledby")!==active){section.querySelectorAll(".block").forEach((block=>{block.setAttribute("data-block-status","loaded");block.setAttribute("data-block-lazy-load",true);block.parentElement.style.display="none"}));const loadLazyBlocks=lazySection=>{lazySection.querySelectorAll(".block[data-block-lazy-load]").forEach((async block=>{block.removeAttribute("data-block-lazy-load");block.setAttribute("data-block-status","initialized");await loadBlock(block);block.parentElement.style.display=""}));section.setAttribute("data-section-status","loaded")};const observer=new IntersectionObserver((entries=>{if(entries.some((e=>e.isIntersecting))){observer.disconnect();loadLazyBlocks(section)}}));observer.observe(section);setTimeout((()=>{observer.disconnect();loadLazyBlocks(section)}),5e3)}}))}function decoratePageNav(main){const pageTabsBlock=main.querySelector(".page-tabs");if(!pageTabsBlock)return;const pageTabSection=pageTabsBlock.closest("div.section");let sections=[...main.querySelectorAll("div.section")];sections=sections.slice(sections.indexOf(pageTabSection)+1);const namedSections=sections.filter((section=>section.hasAttribute("data-tabname")));let index=0;sections.forEach((section=>{if(indeximport(dep)))]).then((([mod])=>mod.default));if(decorator){await decorator(main)}document.body.classList.add(templateName)}}catch(error){console.error("Auto Blocking failed",error)}}function decorateEmbeddedBlocks(container){container.querySelectorAll("div.section > div").forEach(decorateBlock)}export async function processEmbedFragment(element){const block=div({class:"embed-fragment"});[...element.classList].forEach((className=>{block.classList.add(className)}));const link=element.textContent;if(link){const fragment=await getFragmentFromFile(`${link}.plain.html`);if(fragment){block.innerHTML=fragment;const sections=block.querySelectorAll(".embed-fragment > div");[...sections].forEach((section=>{section.classList.add("section")}));decorateEmbeddedBlocks(block);decorateSections(block);loadBlocks(block)}else{const elementInner=element.innerHTML;block.append(div({class:"section"}));block.querySelector(".section").innerHTML=elementInner}}decorateButtons(block);decorateIcons(block);return block}function loadATPageParams(){const id=window.location.pathname.replaceAll("/","_").replace(/\.html$/,"").substring(1);const skuId=getMetadata("sku");const categoryId=getMetadata("fullcategory").split("|").pop();const thumbnailURL=getMetadata("og:image");const title=getMetadata("og:title");const name=title.indexOf("| Danaher Life Sciences")>-1?title.split("| Danaher Life Sciences")[0]:title;const message=getMetadata("og:description");const pageUrl=getMetadata("og:url");const brand=getMetadata("brand");const page=window.location.pathname.split("/")[3];const tags=getMetadata("article:tag");const articleAuthor=getMetadata("authorname");const articlePostDate=getMetadata("publishdate");const articleReadTime=getMetadata("readingtime");const targetParams={id:id,skuId:skuId,categoryId:categoryId,thumbnailURL:thumbnailURL,name:name,message:message,pageUrl:pageUrl,brand:brand,page:page,tags:tags,articleAuthor:articleAuthor,articlePostDate:articlePostDate,articleReadTime:articleReadTime};return targetParams}function initATJS(path,config){window.targetGlobalSettings=config;window.atPageParams=loadATPageParams();window.targetPageParams=function getTargetPageParams(){return{at_property:"6aeb619e-92d9-f4cf-f209-6d88ff58af6a","entity.id":window.atPageParams?.id,"entity.skuId":window.atPageParams?.skuId,"entity.categoryId":window.atPageParams?.categoryId,"entity.thumbnailURL":window.atPageParams?.thumbnailURL,"entity.name":window.atPageParams?.name,"entity.message":window.atPageParams?.message,"entity.pageUrl":window.atPageParams?.pageUrl,"entity.brand":window.atPageParams?.brand,"entity.page":window.atPageParams?.page,"entity.tags":window.atPageParams?.tags,"entity.articleAuthor":window.atPageParams?.articleAuthor,"entity.articlePostDate":window.atPageParams?.articlePostDate,"entity.articleReadTime":window.atPageParams?.articleReadTime,danaherCompany:localStorage.getItem("danaher_company")?localStorage.getItem("danaher_company"):"",utmCampaign:localStorage.getItem("danaher_utm_campaign")?localStorage.getItem("danaher_utm_campaign"):"",utmSource:localStorage.getItem("danaher_utm_source")?localStorage.getItem("danaher_utm_source"):"",utmMedium:localStorage.getItem("danaher_utm_medium")?localStorage.getItem("danaher_utm_medium"):"",utmContent:localStorage.getItem("danaher_utm_content")?localStorage.getItem("danaher_utm_content"):""}};return new Promise((resolve=>{import(path).then(resolve)}))}function onDecoratedElement(fn){if(document.querySelector('[data-block-status="loaded"],[data-section-status="loaded"]')){fn()}const observer=new MutationObserver((mutations=>{if(mutations.some((m=>m.target.tagName==="BODY"||m.target.dataset.sectionStatus==="loaded"||m.target.dataset.blockStatus==="loaded"))){fn()}}));observer.observe(document.querySelector("main"),{subtree:true,attributes:true,attributeFilter:["data-block-status","data-section-status"]});observer.observe(document.querySelector("body"),{childList:true})}function toCssSelector(selector){return selector.replace(/(\.\S+)?:eq\((\d+)\)/g,((_,clss,i)=>`:nth-child(${Number(i)+1}${clss?` of ${clss})`:""}`))}async function getElementForOffer(offer){const selector=offer.cssSelector||toCssSelector(offer.selector);return document.querySelector(selector)}async function getElementForMetric(metric){const selector=toCssSelector(metric.selector);return document.querySelector(selector)}async function getAndApplyOffers(){const response=await window.adobe.target.getOffers({request:{execute:{pageLoad:{}}}});const{options:options=[],metrics:metrics=[]}=response.execute.pageLoad;onDecoratedElement((()=>{window.adobe.target.applyOffers({response:response});options.forEach((o=>o.content=o.content.filter((c=>!getElementForOffer(c)))));metrics.map(((m,i)=>getElementForMetric(m)?i:-1)).filter((i=>i>=0)).reverse().map((i=>metrics.splice(i,1)))}))}let atjsPromise=Promise.resolve();const urlTarget=window.location.pathname;const regex=/^\/(us\/en\/products\.html)?$/;if(!regex.test(urlTarget)){atjsPromise=initATJS("./at.js",{clientCode:"danaher",serverDomain:"danaher.tt.omtrdc.net",imsOrgId:"08333E7B636A2D4D0A495C34@AdobeOrg",bodyHidingEnabled:false,cookieDomain:window.location.hostname,pageLoadEnabled:false,secureOnly:true,viewsEnabled:false,withWebGLRenderer:false}).catch((e=>{console.error("Error loading at.js",e)}));document.addEventListener("at-library-loaded",(()=>getAndApplyOffers()))}async function loadEager(doc){document.documentElement.lang="en";decorateTemplateAndTheme();await window.hlx.plugins.run("loadEager");const main=doc.querySelector("main");if(main){await decorateTemplates(main);decorateMain(main);await atjsPromise;await new Promise((resolve=>{window.requestAnimationFrame((async()=>{document.body.classList.add("appear");await waitForLCP(LCP_BLOCKS);resolve()}))}))}try{if(window.innerWidth>=900||sessionStorage.getItem("fonts-loaded")){loadFonts()}}catch(e){}}function getParameterByName(parameter,url=window.location.href){const modifiedParameter=parameter.replace(/[[\]]/g,"$&");const paramRegex=new RegExp(`[?&]${modifiedParameter}(=([^&#]*)|&|#|$)`);const results=paramRegex.exec(url);if(!results)return null;if(!results[2])return"";return decodeURIComponent(results[2].replace(/\+/g," "))}function loadUTMprams(){const utmParameters=["utm_campaign","utm_source","utm_medium","utm_content","utm_term","utm_previouspage"];utmParameters.forEach((param=>{const value=getParameterByName(param);if(value!==null){window.localStorage.setItem(`danaher_${param}`,value)}}))}async function loadLazy(doc){const main=doc.querySelector("main");await loadBlocks(main);const{hash:hash}=window.location;const element=hash?doc.getElementById(hash.substring(1)):false;if(hash&&element)element.scrollIntoView();loadFooter(doc.querySelector("footer"));loadCSS(`${window.hlx.codeBasePath}/styles/lazy-styles.css`);loadFonts();window.hlx.plugins.run("loadLazy");sampleRUM("lazy");sampleRUM.observe(main.querySelectorAll("div[data-block-name]"));sampleRUM.observe(main.querySelectorAll("picture > img"));loadUTMprams()}function loadDelayed(){window.setTimeout((()=>{window.hlx.plugins.load("delayed");window.hlx.plugins.run("loadDelayed");return import("./delayed.js")}),4e3)}async function loadPage(){setFavicon();await window.hlx.plugins.load("eager");await loadEager(document);await window.hlx.plugins.load("lazy");await loadLazy(document);loadDelayed()}function getDLPage(){const page={title:document.querySelector("title").textContent.replace(/[\n\t]/gm,""),language:"en",locale:"US",level:"top",type:"webpage",keywords:"",creationDate:getMetadata("creationdate"),updateDate:getMetadata("updatedate")};const path=window.location.pathname;if(path==="/"||path==="/us/en"||path==="/us/en.html"){page.level="top";page.type="home"}else if(path.includes("/us/en/news")){page.level="top";page.type="news"}else if(path.includes("/us/en/blog")){page.level="middle";page.type="blog"}else if(path.includes("/us/en/solutions")){page.level="middle";page.type="solutions"}else if(path.includes("/us/en/applications")){page.level="middle";page.type="applications"}else if(path.includes("/us/en/products")){if(path.includes("/us/en/products/family")){page.level="bottom";page.type="family"}else if(path.includes("/us/en/products/bundles")){page.level="bottom";page.type="bundles"}else if(path.includes("/us/en/products/sku")){page.level="bottom";page.type="sku"}else if(path.includes("/topics")){page.level="other";page.type="topics"}else{page.level="bottom";page.type="products"}}else if(path.includes("/us/en/library")){page.level="other";page.type="library"}else if(path.includes("/us/en/about-us")){page.level="top";page.type="about-us"}else if(path.includes("/us/en/expert")){page.level="top";page.type="expert"}else if(path.includes("/us/en/search")||path.includes("/us/en/danahersearch")){page.level="top";page.type="search"}else if(path.includes("/us/en/signin")){page.level="top";page.type="signin"}else if(path.includes("/us/en/legal")){page.level="top";page.type="legal"}return page}const urlParams=new URLSearchParams(window.location.search);const useProd=urlParams.get("useProd");if(window.location.host==="lifesciences.danaher.com"||useProd==="true"){window.DanaherConfig={siteID:"ls-us-en",gtmID:"GTM-THXPLCS",munchkinID:"306-EHG-641",marketoDomain:"//306-EHG-641.mktoweb.com",quoteCartPath:"/us/en/quote-cart.html",cartPath:"/us/en/cart.html",addressesPath:"/us/en/addresses.html",shippingPath:"/us/en/shipping.html",paymentPath:"/us/en/payment.html",receiptPath:"/us/en/receipt.html",quoteSubmitPath:"/us/en/submit-quote.html",intershopDomain:"https://shop.lifesciences.danaher.com",intershopPath:"/INTERSHOP/rest/WFS/DANAHERLS-LSIG-Site/-",searchOrg:"danaherproductionrfl96bkr",searchKey:"xxf2f10385-5a54-4a18-bb48-fd8025d6b5d2",workflowProductKey:"xx3d1b8da5-d1e9-4989-bbed-264a248a9e22",workflowResourceKey:"xxf6a8b387-10f2-4660-af5d-6d304d0a789d",productKey:"xxfb161aa6-0fa0-419f-af37-9c6d7784bf76",familyProductKey:"xx1ecd2a4f-8391-4c70-b3c0-2d589bda56b7",familyResourceKey:"xx9dd85afc-64b6-4295-bc5d-eb8285f96d52",categoryProductKey:"xx2a299d60-2cf1-48ab-b9d5-94daeb25f1d6",categoryDetailKey:"xx61910369-c1ab-4df9-8d8a-3092b1323fcc",productRecommendationsKey:"xx107716c0-1ccd-4a61-8717-6ca36b6cdb0e",megaMenuPath:"/content/dam/danaher/system/navigation/megamenu_items_us.json",coveoProductPageTitle:"Product Page",pdfEmbedKey:"4a472c386025439d8a4ce2493557f6e7",host:"lifesciences.danaher.com",scene7host:"https://danaherls.scene7.com"}}else{window.DanaherConfig={siteID:"ls-us-en",gtmID:"GTM-KCBGM2N",munchkinID:"439-KNJ-322",marketoDomain:"//439-KNJ-322.mktoweb.com",quoteCartPath:"/us/en/quote-cart.html",cartPath:"/us/en/cart.html",addressesPath:"/us/en/addresses.html",shippingPath:"/us/en/shipping.html",paymentPath:"/us/en/payment.html",receiptPath:"/us/en/receipt.html",quoteSubmitPath:"/us/en/submit-quote.html",intershopDomain:"https://stage.shop.lifesciences.danaher.com",intershopPath:"/INTERSHOP/rest/WFS/DANAHERLS-LSIG-Site/-",searchOrg:"danahernonproduction1892f3fhz",searchKey:"xx2a2e7271-78c3-4e3b-bac3-2fcbab75323b",workflowProductKey:"xx26ffc727-cc72-4bbd-98e3-34052f296382",workflowResourceKey:"xx14676f1d-cf4a-4a38-94f0-eda56e9920f1",productKey:"xx32da148e-dfd0-4725-a443-c05a7793afea",familyProductKey:"xx4e3989d6-93aa-4140-a227-19da35fcd1cc",familyResourceKey:"xx8274a91e-b29c-4267-8b3a-5022a2698605",categoryProductKey:"xxdf9d160d-f6e5-4c8c-969b-8570d7b81418",categoryDetailKey:"xxf2ea9bfd-bccb-4195-90fd-7757504fdc33",productRecommendationsKey:"xxea4d2c40-26e7-4e98-9377-d8ebe3f435ea",megaMenuPath:"/content/dam/danaher/system/navigation/megamenu_items_us.json",coveoProductPageTitle:"Product Page",pdfEmbedKey:"4a472c386025439d8a4ce2493557f6e7",host:"stage.lifesciences.danaher.com",scene7host:"https://s7d9.scene7.com"}}window.dataLayer=[];window.dataLayer.push({user:{customerID:"",accountType:"guest",marketCode:"",company:"",role:"",city:"",state:"",country:"",postalCode:"",lastVisit:""}});window.dataLayer.push({page:getDLPage()});loadPage(); \ No newline at end of file +import{sampleRUM,loadHeader,loadFooter,decorateButtons,decorateIcons,decorateSections,decorateBlocks,decorateTemplateAndTheme,waitForLCP,loadBlocks,loadCSS,toClassName,getMetadata,createOptimizedPicture,loadBlock,decorateBlock}from"./lib-franklin.js";import{div,domEl,img}from"./dom-builder.js";const LCP_BLOCKS=["breadcrumb","product-hero","carousel","columns"];const TEMPLATE_LIST={blog:{templateName:"blog",dependencies:["./schema.js","../blocks/columns/columns.js","../blocks/social-media/social-media.js","../blocks/article-info/article-info.js"]},productdetail:{templateName:"productDetail",dependencies:["./commerce.js","./product-payload-builder.js","./schema.js"]},processstep:"processstep",topic:"topic",library:"library",info:"library"};TEMPLATE_LIST.news=TEMPLATE_LIST.blog;export function imageHelper(imageUrl,imageAlt,eager=false){if(imageUrl.indexOf(".scene7.com")>-1){return img({src:`${imageUrl}`,alt:imageAlt,loading:eager?"eager":"lazy",class:"mb-2 h-48 w-full object-cover"})}const cardImage=createOptimizedPicture(imageUrl,imageAlt,eager,[{width:"500"}]);cardImage.querySelector("img").className="mb-2 h-48 w-full object-cover";return cardImage}export function createOptimizedS7Picture(src,alt="",eager=false){if(src.startsWith("/is/image")||src.indexOf(".scene7.com")>-1){const picture=document.createElement("picture");picture.appendChild(img({src:`${src}?$danaher-mobile$`,fetchpriority:"high",alt:alt,loading:eager?"eager":"lazy"}));return picture}return img({src:src,alt:alt,loading:eager?"eager":"lazy"})}export function formatDateUTCSeconds(date,options={}){const dateObj=new Date(0);dateObj.setUTCSeconds(date);return dateObj.toLocaleDateString("en-US",{month:"short",day:"2-digit",year:"numeric",...options})}export function generateUUID(){return Math.floor(1e3+Math.random()*9e3)}let originalOffset=0;export function scrollJumpMenuFixed(pageJumpMenuContainer){if(!originalOffset){const rectPageTabs=pageJumpMenuContainer.getBoundingClientRect();originalOffset=rectPageTabs.top}if(window.scrollY>originalOffset){pageJumpMenuContainer.classList.add(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-jump-menu-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));document.querySelector(".page-jump-menu-container.fixed ul")?.classList.add("shadow-none","rounded-none");document.querySelectorAll(".page-jump-menu-container.fixed ul li")?.forEach((el=>{el?.firstElementChild?.classList.add("rounded-full");el?.firstElementChild?.querySelector("span.icon svg use")?.classList.add("stroke-danaherpurple-500")}));document.querySelector('.page-jump-menu-container.fixed li[aria-selected="true"] a span.icon svg')?.classList.add("stroke-white");pageJumpMenuContainer.classList.remove(..."[&_.page-jump-menu-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}else{pageJumpMenuContainer.classList.remove(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-jump-menu-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));document.querySelectorAll(".page-jump-menu-container ul li")?.forEach((el=>el?.firstElementChild?.classList.remove("rounded-full")));pageJumpMenuContainer.classList.add(..."[&_.page-jump-menu-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}}let pageTabsOriginalOffset=0;export function scrollPageTabFixed(pageTabsContainer){if(!pageTabsOriginalOffset){const rectPageTabs=pageTabsContainer.getBoundingClientRect();pageTabsOriginalOffset=rectPageTabs.top}if(window.scrollY>pageTabsOriginalOffset){pageTabsContainer.classList.add(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-tabs-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));pageTabsContainer.classList.remove(..."[&_.page-tabs-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}else{pageTabsContainer.classList.remove(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-tabs-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));pageTabsContainer.classList.add(..."[&_.page-tabs-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}}export function makePublicUrl(url){const isProd=window.location.hostname.includes("lifesciences.danaher.com");try{const newURL=new URL(url,window.location.origin);if(isProd){if(newURL.pathname.endsWith(".html")){return newURL.pathname}newURL.pathname+=".html";return newURL.pathname}if(newURL.pathname.endsWith(".html")){newURL.pathname=newURL.pathname.slice(0,-5);return newURL.pathname}return newURL.pathname}catch(error){console.error("Invalid URL:",error);return url}}export function setJsonLd(data,name){const existingScript=document.head.querySelector(`script[data-name="${name}"]`);if(existingScript){existingScript.innerHTML=JSON.stringify(data);return}const script=document.createElement("script");script.type="application/ld+json";script.innerHTML=JSON.stringify(data);script.dataset.name=name;document.head.appendChild(script)}function setFavicon(){const faviconLink=document.querySelector("link[rel*='icon']")||document.createElement("link");faviconLink.type="image/x-icon";faviconLink.rel="shortcut icon";faviconLink.href=`https://${window.location.hostname}/favicon.ico`;document.getElementsByTagName("head")[0].appendChild(faviconLink)}export async function getFragmentFromFile(url){const response=await fetch(url);if(!response.ok){console.error("error loading fragment details",response);return null}const text=await response.text();if(!text){console.error("fragment details empty",url);return null}return text}export function getCookie(cname){let value=decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(cname).replace(/[\\-\\.\\+\\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null;if(value&&(value.substring(0,1)==="{"&&value.substring(value.length-1,value.length)==="}"||value.substring(0,1)==="["&&value.substring(value.length-1,value.length)==="]")){try{value=JSON.parse(value)}catch(e){return value}}return value}export function isOTEnabled(){const otCookie=getCookie("OptanonConsent");if(typeof otCookie==="string"){return otCookie.includes("C0002:1")}return true}export function setCookie(cname,cvalue,expTime=30*1e3*60*60*24,path="/"){const today=new Date;today.setTime(today.getTime()+expTime);const expires="expires=".concat(today.toGMTString());const cookieString=cname.concat("=").concat(cvalue).concat(";").concat(expires).concat(";path=").concat(path);document.cookie=cookieString}async function buildVideo(main){const videoLinks=main.querySelectorAll('a[href*="youtube.com"],a[href*="vimeo.com"],a[href*="vidyard.com"]');if(videoLinks.length>0){const{default:decorateEmbed}=await import("../blocks/embed/embed.js");videoLinks.forEach((link=>{if(link.closest(".embed, .hero")==null){decorateEmbed(link.parentNode)}}))}}async function loadFonts(){await loadCSS(`${window.hlx.codeBasePath}/styles/fonts.css`);try{if(!window.location.hostname.includes("localhost"))sessionStorage.setItem("fonts-loaded","true")}catch(e){}}function loadBreadCrumb(){const header=document.querySelector("header");const breadcrumb=document.createElement("breadcrumb");if(window.location.pathname!=="/")header.after(breadcrumb)}function loadMobileMenu(){const breadcrumb=document.querySelector("breadcrumb");const mobileMunu=document.createElement("mobilemenu");const url=new URL(window.location.href);if(url.pathname.match(/\/us\/en\/products\/(family\/|sku\/|bundles\/)/)||url.pathname.match(/\/us\/en\/solutions\//)){breadcrumb.after(mobileMunu)}}function buildAutoBlocks(main){try{buildVideo(main)}catch(error){console.error("Auto Blocking failed",error)}}export function decorateModals(main){const ctaModalButton=main.querySelector(".show-modal-btn");const content=()=>ctaModalButton.getAttribute("data-dialog-message")?ctaModalButton.getAttribute("dialog-message"):"";ctaModalButton?.addEventListener("click",(async e=>{e.preventDefault();const{default:getModal}=await import("./modal.js");const customModal=await getModal("custom-modal",content,(modal=>{modal.querySelector('p[name="close"]')?.addEventListener("click",(()=>modal.close()))}));customModal.showModal()}))}function decorateTwoColumnSection(main){const dcwElements=div();const defaultContentWrappers=main.querySelectorAll(".default-content-wrapper");defaultContentWrappers.forEach((contentWrapper=>{[...contentWrapper.children].forEach((child=>{dcwElements.appendChild(child)}));let nextElement=contentWrapper.nextSibling;const allBlocks=[];while(nextElement){if(nextElement.className.includes("-wrapper"))allBlocks.push(nextElement);nextElement=nextElement.nextSibling}dcwElements.append(...allBlocks)}));main.querySelectorAll(".section.container-two-col").forEach((section=>{const newSection=div();let currentDiv=null;let additionalDiv=null;[...dcwElements.children].forEach((child=>{if(child.tagName==="H1"){newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-4"}));currentDiv=div({class:"col-right w-full mt-0 md:mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10"})}const childClone=child.cloneNode(true);if(childClone.tagName==="H2"&&childClone.querySelector(":scope > strong")){if(currentDiv?.classList.contains("col-right")){newSection.appendChild(currentDiv)}childClone.className="text-gray-900 !text-base leading-6 font-bold pt-6 pb-4 my-0";newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-4"},childClone,domEl("hr",{style:"height: 10px; width: 54px; border-width: 0px; color: rgb(216, 244, 250); background-color: rgb(216, 244, 250);"})));currentDiv=div({class:"col-right w-full mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-10"})}else if(currentDiv?.classList.contains("col-right")){currentDiv.appendChild(childClone)}}));[...section.children].forEach((child=>{if(child.tagName==="DIV"){additionalDiv=div({class:"col-right w-full mt-0 md:mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10"})}const childClone=child.cloneNode(true);additionalDiv.appendChild(childClone)}));if(currentDiv){newSection.appendChild(currentDiv)}if(additionalDiv){newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-0"}));newSection.appendChild(additionalDiv)}newSection.classList.add("w-full","flex","flex-wrap","break-normal");section.innerHTML=newSection.outerHTML;section.classList.add("mx-auto","w-full","flex","flex-wrap","mb-5")}))}function updateExternalLinks(main){const REFERERS=[window.location.origin];main.querySelectorAll("a[href]").forEach((a=>{try{const{origin:origin,pathname:pathname,hash:hash}=new URL(a.href,window.location.href);const targetHash=hash&&hash.startsWith("#_");const isPDF=pathname.split(".").pop()==="pdf";if(origin&&origin!==window.location.origin&&!targetHash||isPDF){a.setAttribute("target","_blank");if(!REFERERS.includes(origin))a.setAttribute("rel","noopener")}else if(targetHash){a.setAttribute("target",hash.replace("#",""));a.href=a.href.replace(hash,"")}}catch(e){console.warn(`Invalid link in ${main}: ${a.href}`)}}))}function lazyLoadHiddenPageNavTabs(sections,nameOfFirstSection){const activeHash=window.location.hash;const active=activeHash?activeHash.substring(1,activeHash.length).toLowerCase():nameOfFirstSection;sections.forEach((section=>{const hasBreadCrumb=section.className.includes("breadcrumb-container");if(!hasBreadCrumb&§ion.getAttribute("aria-labelledby")!==active){section.querySelectorAll(".block").forEach((block=>{block.setAttribute("data-block-status","loaded");block.setAttribute("data-block-lazy-load",true);block.parentElement.style.display="none"}));const loadLazyBlocks=lazySection=>{lazySection.querySelectorAll(".block[data-block-lazy-load]").forEach((async block=>{block.removeAttribute("data-block-lazy-load");block.setAttribute("data-block-status","initialized");await loadBlock(block);block.parentElement.style.display=""}));section.setAttribute("data-section-status","loaded")};const observer=new IntersectionObserver((entries=>{if(entries.some((e=>e.isIntersecting))){observer.disconnect();loadLazyBlocks(section)}}));observer.observe(section);setTimeout((()=>{observer.disconnect();loadLazyBlocks(section)}),5e3)}}))}function decoratePageNav(main){const pageTabsBlock=main.querySelector(".page-tabs");if(!pageTabsBlock)return;const pageTabSection=pageTabsBlock.closest("div.section");let sections=[...main.querySelectorAll("div.section")];sections=sections.slice(sections.indexOf(pageTabSection)+1);const namedSections=sections.filter((section=>section.hasAttribute("data-tabname")));let index=0;sections.forEach((section=>{if(indeximport(dep)))]).then((([mod])=>mod.default));if(decorator){await decorator(main)}document.body.classList.add(templateName)}}catch(error){console.error("Auto Blocking failed",error)}}function decorateEmbeddedBlocks(container){container.querySelectorAll("div.section > div").forEach(decorateBlock)}export async function processEmbedFragment(element){const block=div({class:"embed-fragment"});[...element.classList].forEach((className=>{block.classList.add(className)}));const link=element.textContent;if(link){const fragment=await getFragmentFromFile(`${link}.plain.html`);if(fragment){block.innerHTML=fragment;const sections=block.querySelectorAll(".embed-fragment > div");[...sections].forEach((section=>{section.classList.add("section")}));decorateEmbeddedBlocks(block);decorateSections(block);loadBlocks(block)}else{const elementInner=element.innerHTML;block.append(div({class:"section"}));block.querySelector(".section").innerHTML=elementInner}}decorateButtons(block);decorateIcons(block);return block}function loadATPageParams(){const id=window.location.pathname.replaceAll("/","_").replace(/\.html$/,"").substring(1);const skuId=getMetadata("sku");const categoryId=getMetadata("fullcategory").split("|").pop();const thumbnailURL=getMetadata("og:image");const title=getMetadata("og:title");const name=title.indexOf("| Danaher Life Sciences")>-1?title.split("| Danaher Life Sciences")[0]:title;const message=getMetadata("og:description");const pageUrl=getMetadata("og:url");const brand=getMetadata("brand");const page=window.location.pathname.split("/")[3];const tags=getMetadata("article:tag");const articleAuthor=getMetadata("authorname");const articlePostDate=getMetadata("publishdate");const articleReadTime=getMetadata("readingtime");const targetParams={id:id,skuId:skuId,categoryId:categoryId,thumbnailURL:thumbnailURL,name:name,message:message,pageUrl:pageUrl,brand:brand,page:page,tags:tags,articleAuthor:articleAuthor,articlePostDate:articlePostDate,articleReadTime:articleReadTime};return targetParams}function initATJS(path,config){window.targetGlobalSettings=config;window.atPageParams=loadATPageParams();window.targetPageParams=function getTargetPageParams(){return{at_property:"6aeb619e-92d9-f4cf-f209-6d88ff58af6a","entity.id":window.atPageParams?.id,"entity.skuId":window.atPageParams?.skuId,"entity.categoryId":window.atPageParams?.categoryId,"entity.thumbnailURL":window.atPageParams?.thumbnailURL,"entity.name":window.atPageParams?.name,"entity.message":window.atPageParams?.message,"entity.pageUrl":window.atPageParams?.pageUrl,"entity.brand":window.atPageParams?.brand,"entity.page":window.atPageParams?.page,"entity.tags":window.atPageParams?.tags,"entity.articleAuthor":window.atPageParams?.articleAuthor,"entity.articlePostDate":window.atPageParams?.articlePostDate,"entity.articleReadTime":window.atPageParams?.articleReadTime,danaherCompany:localStorage.getItem("danaher_company")?localStorage.getItem("danaher_company"):"",utmCampaign:localStorage.getItem("danaher_utm_campaign")?localStorage.getItem("danaher_utm_campaign"):"",utmSource:localStorage.getItem("danaher_utm_source")?localStorage.getItem("danaher_utm_source"):"",utmMedium:localStorage.getItem("danaher_utm_medium")?localStorage.getItem("danaher_utm_medium"):"",utmContent:localStorage.getItem("danaher_utm_content")?localStorage.getItem("danaher_utm_content"):""}};return new Promise((resolve=>{import(path).then(resolve)}))}function onDecoratedElement(fn){if(document.querySelector('[data-block-status="loaded"],[data-section-status="loaded"]')){fn()}const observer=new MutationObserver((mutations=>{if(mutations.some((m=>m.target.tagName==="BODY"||m.target.dataset.sectionStatus==="loaded"||m.target.dataset.blockStatus==="loaded"))){fn()}}));observer.observe(document.querySelector("main"),{subtree:true,attributes:true,attributeFilter:["data-block-status","data-section-status"]});observer.observe(document.querySelector("body"),{childList:true})}function toCssSelector(selector){return selector.replace(/(\.\S+)?:eq\((\d+)\)/g,((_,clss,i)=>`:nth-child(${Number(i)+1}${clss?` of ${clss})`:""}`))}async function getElementForOffer(offer){const selector=offer.cssSelector||toCssSelector(offer.selector);return document.querySelector(selector)}async function getElementForMetric(metric){const selector=toCssSelector(metric.selector);return document.querySelector(selector)}async function getAndApplyOffers(){const response=await window.adobe.target.getOffers({request:{execute:{pageLoad:{}}}});const{options:options=[],metrics:metrics=[]}=response.execute.pageLoad;onDecoratedElement((()=>{window.adobe.target.applyOffers({response:response});options.forEach((o=>o.content=o.content.filter((c=>!getElementForOffer(c)))));metrics.map(((m,i)=>getElementForMetric(m)?i:-1)).filter((i=>i>=0)).reverse().map((i=>metrics.splice(i,1)))}))}let atjsPromise=Promise.resolve();const urlTarget=window.location.pathname;const regex=/^\/(us\/en\/products\.html)?$/;if(!regex.test(urlTarget)){atjsPromise=initATJS("./at.js",{clientCode:"danaher",serverDomain:"danaher.tt.omtrdc.net",imsOrgId:"08333E7B636A2D4D0A495C34@AdobeOrg",bodyHidingEnabled:false,cookieDomain:window.location.hostname,pageLoadEnabled:false,secureOnly:true,viewsEnabled:false,withWebGLRenderer:false}).catch((e=>{console.error("Error loading at.js",e)}));document.addEventListener("at-library-loaded",(()=>getAndApplyOffers()))}async function loadEager(doc){document.documentElement.lang="en";decorateTemplateAndTheme();await window.hlx.plugins.run("loadEager");const main=doc.querySelector("main");if(main){await decorateTemplates(main);decorateMain(main);await atjsPromise;await new Promise((resolve=>{window.requestAnimationFrame((async()=>{document.body.classList.add("appear");await waitForLCP(LCP_BLOCKS);resolve()}))}))}try{if(window.innerWidth>=900||sessionStorage.getItem("fonts-loaded")){loadFonts()}}catch(e){}}function getParameterByName(parameter,url=window.location.href){const modifiedParameter=parameter.replace(/[[\]]/g,"$&");const paramRegex=new RegExp(`[?&]${modifiedParameter}(=([^&#]*)|&|#|$)`);const results=paramRegex.exec(url);if(!results)return null;if(!results[2])return"";return decodeURIComponent(results[2].replace(/\+/g," "))}function loadUTMprams(){const utmParameters=["utm_campaign","utm_source","utm_medium","utm_content","utm_term","utm_previouspage"];utmParameters.forEach((param=>{const value=getParameterByName(param);if(value!==null){window.localStorage.setItem(`danaher_${param}`,value)}}))}async function loadLazy(doc){const main=doc.querySelector("main");await loadBlocks(main);const{hash:hash}=window.location;const element=hash?doc.getElementById(hash.substring(1)):false;if(hash&&element)element.scrollIntoView();loadFooter(doc.querySelector("footer"));loadCSS(`${window.hlx.codeBasePath}/styles/lazy-styles.css`);loadFonts();window.hlx.plugins.run("loadLazy");sampleRUM("lazy");sampleRUM.observe(main.querySelectorAll("div[data-block-name]"));sampleRUM.observe(main.querySelectorAll("picture > img"));loadUTMprams()}function loadDelayed(){window.setTimeout((()=>{window.hlx.plugins.load("delayed");window.hlx.plugins.run("loadDelayed");return import("./delayed.js")}),4e3)}async function loadPage(){setFavicon();await window.hlx.plugins.load("eager");await loadEager(document);await window.hlx.plugins.load("lazy");await loadLazy(document);loadDelayed()}function getDLPage(){const page={title:document.querySelector("title").textContent.replace(/[\n\t]/gm,""),language:"en",locale:"US",level:"top",type:"webpage",keywords:"",creationDate:getMetadata("creationdate"),updateDate:getMetadata("updatedate")};const path=window.location.pathname;if(path==="/"||path==="/us/en"||path==="/us/en.html"){page.level="top";page.type="home"}else if(path.includes("/us/en/news")){page.level="top";page.type="news"}else if(path.includes("/us/en/blog")){page.level="middle";page.type="blog"}else if(path.includes("/us/en/solutions")){page.level="middle";page.type="solutions"}else if(path.includes("/us/en/applications")){page.level="middle";page.type="applications"}else if(path.includes("/us/en/products")){if(path.includes("/us/en/products/family")){page.level="bottom";page.type="family"}else if(path.includes("/us/en/products/bundles")){page.level="bottom";page.type="bundles"}else if(path.includes("/us/en/products/sku")){page.level="bottom";page.type="sku"}else if(path.includes("/topics")){page.level="other";page.type="topics"}else{page.level="bottom";page.type="products"}}else if(path.includes("/us/en/library")){page.level="other";page.type="library"}else if(path.includes("/us/en/about-us")){page.level="top";page.type="about-us"}else if(path.includes("/us/en/expert")){page.level="top";page.type="expert"}else if(path.includes("/us/en/search")||path.includes("/us/en/danahersearch")){page.level="top";page.type="search"}else if(path.includes("/us/en/signin")){page.level="top";page.type="signin"}else if(path.includes("/us/en/legal")){page.level="top";page.type="legal"}return page}const urlParams=new URLSearchParams(window.location.search);const useProd=urlParams.get("useProd");if(window.location.host==="lifesciences.danaher.com"||useProd==="true"){window.DanaherConfig={siteID:"ls-us-en",gtmID:"GTM-THXPLCS",munchkinID:"306-EHG-641",marketoDomain:"//306-EHG-641.mktoweb.com",quoteCartPath:"/us/en/quote-cart.html",cartPath:"/us/en/cart.html",addressesPath:"/us/en/addresses.html",shippingPath:"/us/en/shipping.html",paymentPath:"/us/en/payment.html",receiptPath:"/us/en/receipt.html",quoteSubmitPath:"/us/en/submit-quote.html",intershopDomain:"https://shop.lifesciences.danaher.com",intershopPath:"/INTERSHOP/rest/WFS/DANAHERLS-LSIG-Site/-",searchOrg:"danaherproductionrfl96bkr",searchKey:"xxf2f10385-5a54-4a18-bb48-fd8025d6b5d2",workflowProductKey:"xx3d1b8da5-d1e9-4989-bbed-264a248a9e22",workflowResourceKey:"xxf6a8b387-10f2-4660-af5d-6d304d0a789d",productKey:"xxfb161aa6-0fa0-419f-af37-9c6d7784bf76",familyProductKey:"xx1ecd2a4f-8391-4c70-b3c0-2d589bda56b7",familyResourceKey:"xx9dd85afc-64b6-4295-bc5d-eb8285f96d52",categoryProductKey:"xx2a299d60-2cf1-48ab-b9d5-94daeb25f1d6",categoryDetailKey:"xx61910369-c1ab-4df9-8d8a-3092b1323fcc",productRecommendationsKey:"xx107716c0-1ccd-4a61-8717-6ca36b6cdb0e",megaMenuPath:"/content/dam/danaher/system/navigation/megamenu_items_us.json",coveoProductPageTitle:"Product Page",pdfEmbedKey:"4a472c386025439d8a4ce2493557f6e7",host:"lifesciences.danaher.com",scene7host:"https://danaherls.scene7.com"}}else{window.DanaherConfig={siteID:"ls-us-en",gtmID:"GTM-KCBGM2N",munchkinID:"439-KNJ-322",marketoDomain:"//439-KNJ-322.mktoweb.com",quoteCartPath:"/us/en/quote-cart.html",cartPath:"/us/en/cart.html",addressesPath:"/us/en/addresses.html",shippingPath:"/us/en/shipping.html",paymentPath:"/us/en/payment.html",receiptPath:"/us/en/receipt.html",quoteSubmitPath:"/us/en/submit-quote.html",intershopDomain:"https://stage.shop.lifesciences.danaher.com",intershopPath:"/INTERSHOP/rest/WFS/DANAHERLS-LSIG-Site/-",searchOrg:"danahernonproduction1892f3fhz",searchKey:"xx2a2e7271-78c3-4e3b-bac3-2fcbab75323b",workflowProductKey:"xx26ffc727-cc72-4bbd-98e3-34052f296382",workflowResourceKey:"xx14676f1d-cf4a-4a38-94f0-eda56e9920f1",productKey:"xx32da148e-dfd0-4725-a443-c05a7793afea",familyProductKey:"xx4e3989d6-93aa-4140-a227-19da35fcd1cc",familyResourceKey:"xx8274a91e-b29c-4267-8b3a-5022a2698605",categoryProductKey:"xxdf9d160d-f6e5-4c8c-969b-8570d7b81418",categoryDetailKey:"xxf2ea9bfd-bccb-4195-90fd-7757504fdc33",productRecommendationsKey:"xxea4d2c40-26e7-4e98-9377-d8ebe3f435ea",megaMenuPath:"/content/dam/danaher/system/navigation/megamenu_items_us.json",coveoProductPageTitle:"Product Page",pdfEmbedKey:"4a472c386025439d8a4ce2493557f6e7",host:"stage.lifesciences.danaher.com",scene7host:"https://s7d9.scene7.com"}}window.dataLayer=[];window.dataLayer.push({user:{customerID:"",accountType:"guest",marketCode:"",company:"",role:"",city:"",state:"",country:"",postalCode:"",lastVisit:""}});window.dataLayer.push({page:getDLPage()});loadPage(); \ No newline at end of file diff --git a/styles/styles.css b/styles/styles.css index 04d209087..d714024eb 100644 --- a/styles/styles.css +++ b/styles/styles.css @@ -2332,6 +2332,18 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica border-width: 2px; } +.border-b { + border-bottom-width: 1px; +} + +.border-t { + border-top-width: 1px; +} + +.border-solid { + border-style: solid; +} + .border-danaherpurple-500 { --tw-border-opacity: 1; border-color: rgb(117 35 255 / var(--tw-border-opacity)); @@ -2347,6 +2359,11 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica border-color: rgb(239 68 68 / var(--tw-border-opacity)); } +.border-black { + --tw-border-opacity: 1; + border-color: rgb(0 0 0 / var(--tw-border-opacity)); +} + .bg-danaherlightblue-50 { --tw-bg-opacity: 1; background-color: rgb(239 251 253 / var(--tw-bg-opacity)); @@ -2466,18 +2483,22 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica padding-right: 0.75rem; } -.pt-12 { - padding-top: 3rem; +.pt-0 { + padding-top: 0px; } -.pt-4 { - padding-top: 1rem; +.pt-12 { + padding-top: 3rem; } .pt-6 { padding-top: 1.5rem; } +.pt-4 { + padding-top: 1rem; +} + .text-left { text-align: left; } From f3cdf70b8d24bd405c2d5cb3a376422c50cc42b6 Mon Sep 17 00:00:00 2001 From: jckautzmann Date: Thu, 20 Jun 2024 09:39:32 +0200 Subject: [PATCH 03/29] [UE] auto-generated breadcrumb (#1160) - for UE supported pages (when the breadcrumb block is empty), the breadcrumb is auto-generated client-side based on the navigation titles stored in the index --- blocks/breadcrumb/breadcrumb.js | 45 ++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/blocks/breadcrumb/breadcrumb.js b/blocks/breadcrumb/breadcrumb.js index ee62dc313..e2dc305ac 100644 --- a/blocks/breadcrumb/breadcrumb.js +++ b/blocks/breadcrumb/breadcrumb.js @@ -1,6 +1,49 @@ +import { + a, div, li, ul, +} from '../../scripts/dom-builder.js'; +import ffetch from '../../scripts/ffetch.js'; + const TEMPLATE_PATH_PATTERN = /\/us\/en\/[^/]+\/topics-template/; -export default function decorate(block) { +async function getItems() { + // get the breadcrumb items from the page path, only after '/us/en' + const path = window.location.pathname; + const pathParts = path.split('/'); + const itemPaths = pathParts.length > 2 ? pathParts.slice(3).map((_, i) => pathParts.slice(0, i + 4).join('/')) : []; + const articles = await ffetch('/us/en/article-index.json') + .filter((article) => itemPaths.includes(article.path)) + .all(); + + // map over itemPaths to create items + return itemPaths.map((itemPath) => { + // get the title from the article, based on its path + const article = articles.find((entry) => entry.path === itemPath); + const title = (article && article.navTitle !== '') ? article.navTitle : itemPath.split('/').pop(); + return { + title, + href: `${itemPath}.html`, + }; + }); +} + +export default async function decorate(block) { + if (!block.querySelector('div > ul')) { + const items = await getItems(); + const listItems = items.map((item) => li({}, a({ href: item.href }, item.title))); + block.innerHTML = ''; + block.append( + div( + {}, + div( + {}, + ul( + {}, + ...listItems, + ), + ), + ), + ); + } const entries = block.querySelector('div > ul'); entries.className = 'max-w-screen-xl w-full mx-auto px-4 flex gap-4 sm:px-6 lg:px-7 mt-3.5 md:mt-0 overflow-x-auto'; entries.setAttribute('role', 'list'); From bea13012d1c3fca75d0ccb69b0f984460a97b277 Mon Sep 17 00:00:00 2001 From: rgravitvl Date: Thu, 20 Jun 2024 20:19:08 +0530 Subject: [PATCH 04/29] Updated height for ul --- blocks/breadcrumb/breadcrumb.css | 8 ++++++++ blocks/header/header.css | 4 ++++ blocks/header/header.js | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/blocks/breadcrumb/breadcrumb.css b/blocks/breadcrumb/breadcrumb.css index 9e6690e50..48ae57d2d 100644 --- a/blocks/breadcrumb/breadcrumb.css +++ b/blocks/breadcrumb/breadcrumb.css @@ -11,6 +11,10 @@ margin-top: 0.875rem } +.breadcrumb-wrapper :is(.\!block) { + display: block !important +} + .breadcrumb-wrapper :is(.block) { display: block } @@ -111,6 +115,10 @@ color: rgb(107 114 128 / var(--tw-text-opacity)) } +.breadcrumb-wrapper :is(.filter) { + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) +} + .breadcrumb-wrapper :is(.hover\:text-gray-700:hover) { --tw-text-opacity: 1; color: rgb(55 65 81 / var(--tw-text-opacity)) diff --git a/blocks/header/header.css b/blocks/header/header.css index 4af2258f2..ed8f3d9eb 100644 --- a/blocks/header/header.css +++ b/blocks/header/header.css @@ -192,6 +192,10 @@ height: 2rem } +.header-wrapper :is(.h-\[80vh\]) { + height: 80vh +} + .header-wrapper :is(.h-full) { height: 100% } diff --git a/blocks/header/header.js b/blocks/header/header.js index f96c5e4a5..57fb56aca 100644 --- a/blocks/header/header.js +++ b/blocks/header/header.js @@ -583,7 +583,7 @@ function buildFlyoutMenus(headerBlock) { decorateIcons(backFlyout); decorateIcons(exploreFlyout); - const menuWrapper = ul({ class: 'h-full flex flex-col gap-y-2 mt-3 overflow-auto [&>li.active]:bg-danaherpurple-50 [&>li.active]:font-bold' }); + const menuWrapper = ul({ class: 'h-[80vh] flex flex-col gap-y-2 mt-3 overflow-auto [&>li.active]:bg-danaherpurple-50 [&>li.active]:font-bold' }); [...allFlyout].forEach((flyMenu) => { const contentText = flyMenu.children[0]?.textContent; const anchorHref = flyMenu.children[0].querySelector('a')?.href; From dfa2cb35ad46650a701c70d94f508fc807bb4341 Mon Sep 17 00:00:00 2001 From: rgravitvl Date: Fri, 21 Jun 2024 10:18:41 +0530 Subject: [PATCH 05/29] updated height --- blocks/header/header.css | 4 ++-- blocks/header/header.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/blocks/header/header.css b/blocks/header/header.css index ed8f3d9eb..c230eb60c 100644 --- a/blocks/header/header.css +++ b/blocks/header/header.css @@ -192,8 +192,8 @@ height: 2rem } -.header-wrapper :is(.h-\[80vh\]) { - height: 80vh +.header-wrapper :is(.h-\[75vh\]) { + height: 75vh } .header-wrapper :is(.h-full) { diff --git a/blocks/header/header.js b/blocks/header/header.js index 57fb56aca..4aedb034e 100644 --- a/blocks/header/header.js +++ b/blocks/header/header.js @@ -583,7 +583,7 @@ function buildFlyoutMenus(headerBlock) { decorateIcons(backFlyout); decorateIcons(exploreFlyout); - const menuWrapper = ul({ class: 'h-[80vh] flex flex-col gap-y-2 mt-3 overflow-auto [&>li.active]:bg-danaherpurple-50 [&>li.active]:font-bold' }); + const menuWrapper = ul({ class: 'h-[75vh] flex flex-col gap-y-2 mt-3 overflow-auto [&>li.active]:bg-danaherpurple-50 [&>li.active]:font-bold' }); [...allFlyout].forEach((flyMenu) => { const contentText = flyMenu.children[0]?.textContent; const anchorHref = flyMenu.children[0].querySelector('a')?.href; From 4a3ab0fa80acfdf5df2d5c6de7efcb72f3611072 Mon Sep 17 00:00:00 2001 From: wz914876 Date: Fri, 21 Jun 2024 14:03:03 +0530 Subject: [PATCH 06/29] 1174 [UX] Heading Spacing --- blocks/breadcrumb/breadcrumb.css | 8 ++++++++ blocks/columns/columns.css | 4 ++-- blocks/columns/columns.js | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/blocks/breadcrumb/breadcrumb.css b/blocks/breadcrumb/breadcrumb.css index 9e6690e50..48ae57d2d 100644 --- a/blocks/breadcrumb/breadcrumb.css +++ b/blocks/breadcrumb/breadcrumb.css @@ -11,6 +11,10 @@ margin-top: 0.875rem } +.breadcrumb-wrapper :is(.\!block) { + display: block !important +} + .breadcrumb-wrapper :is(.block) { display: block } @@ -111,6 +115,10 @@ color: rgb(107 114 128 / var(--tw-text-opacity)) } +.breadcrumb-wrapper :is(.filter) { + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) +} + .breadcrumb-wrapper :is(.hover\:text-gray-700:hover) { --tw-text-opacity: 1; color: rgb(55 65 81 / var(--tw-text-opacity)) diff --git a/blocks/columns/columns.css b/blocks/columns/columns.css index 8471a642e..9c0120118 100644 --- a/blocks/columns/columns.css +++ b/blocks/columns/columns.css @@ -287,8 +287,8 @@ padding-bottom: 2.5rem; } -.columns-wrapper :is(.pb-4) { - padding-bottom: 1rem; +.columns-wrapper :is(.pb-14) { + padding-bottom: 3.5rem; } .columns-wrapper :is(.pb-7) { diff --git a/blocks/columns/columns.js b/blocks/columns/columns.js index e657f9229..81c7b85b5 100644 --- a/blocks/columns/columns.js +++ b/blocks/columns/columns.js @@ -59,7 +59,7 @@ export default function decorate(block) { if (window.location.pathname.includes('/us/en/blog/') || window.location.pathname.includes('/us/en/news/')) { row.classList.add('h-full', 'lg:w-1/2', 'pr-16'); row.querySelectorAll('h1').forEach((ele) => { - ele.classList.add('pb-4'); + ele.classList.add('pb-14'); }); } else { row.classList.add('h-full'); From 5250964be6ecd3b9e05dcbea2370fe9021510c24 Mon Sep 17 00:00:00 2001 From: Dave Nichols Date: Fri, 21 Jun 2024 10:10:22 +0100 Subject: [PATCH 07/29] Updated for Blog and News headers to have the image touch the top --- blocks/columns/columns.css | 4 ++-- blocks/columns/columns.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/blocks/columns/columns.css b/blocks/columns/columns.css index 8471a642e..02be7e102 100644 --- a/blocks/columns/columns.css +++ b/blocks/columns/columns.css @@ -453,8 +453,8 @@ margin-bottom: 1rem; } - .columns-wrapper :is(.lg\:mt-72) { - margin-top: 18rem; + .columns-wrapper :is(.lg\:mt-56) { + margin-top: 14rem; } .columns-wrapper :is(.lg\:w-1\/2) { diff --git a/blocks/columns/columns.js b/blocks/columns/columns.js index e657f9229..5b625fbc3 100644 --- a/blocks/columns/columns.js +++ b/blocks/columns/columns.js @@ -130,7 +130,7 @@ export default function decorate(block) { if (picWrapper && picWrapper.children.length === 1) { // picture is only content in column if (window.location.pathname.includes('/us/en/blog/') || window.location.pathname.includes('/us/en/news/')) { - picWrapper.classList.add(...'columns-img-col order-none relative h-48 md:h-[27rem] block lg:absolute md:inset-y-0 lg:inset-y-0 lg:right-2 lg:w-1/2 lg:mt-72'.split(' ')); + picWrapper.classList.add(...'columns-img-col order-none relative h-48 md:h-[27rem] block lg:absolute md:inset-y-0 lg:inset-y-0 lg:right-2 lg:w-1/2 lg:mt-56'.split(' ')); pic.querySelector('img').classList.add(...'absolute bottom-0 h-full w-full object-cover'.split(' ')); } else { picWrapper.classList.add('columns-img-col', 'order-none'); From 721cd87b04823f0250ed77efcaa3765c6416f000 Mon Sep 17 00:00:00 2001 From: rgravitvl Date: Fri, 21 Jun 2024 15:08:53 +0530 Subject: [PATCH 08/29] updated to add the border --- blocks/breadcrumb/breadcrumb.css | 8 ++++++++ blocks/carousel/carousel.css | 21 +++++++++++++++++++++ blocks/carousel/carousel.js | 1 + styles/styles.css | 12 ++++++------ tools/importer/transformers/carousel.js | 4 +++- 5 files changed, 39 insertions(+), 7 deletions(-) diff --git a/blocks/breadcrumb/breadcrumb.css b/blocks/breadcrumb/breadcrumb.css index 9e6690e50..48ae57d2d 100644 --- a/blocks/breadcrumb/breadcrumb.css +++ b/blocks/breadcrumb/breadcrumb.css @@ -11,6 +11,10 @@ margin-top: 0.875rem } +.breadcrumb-wrapper :is(.\!block) { + display: block !important +} + .breadcrumb-wrapper :is(.block) { display: block } @@ -111,6 +115,10 @@ color: rgb(107 114 128 / var(--tw-text-opacity)) } +.breadcrumb-wrapper :is(.filter) { + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) +} + .breadcrumb-wrapper :is(.hover\:text-gray-700:hover) { --tw-text-opacity: 1; color: rgb(55 65 81 / var(--tw-text-opacity)) diff --git a/blocks/carousel/carousel.css b/blocks/carousel/carousel.css index c1229e091..2dc35aafd 100644 --- a/blocks/carousel/carousel.css +++ b/blocks/carousel/carousel.css @@ -81,6 +81,10 @@ margin-top: 1.5rem; } +.carousel-wrapper :is(.\!block) { + display: block !important; +} + .carousel-wrapper :is(.block) { display: block; } @@ -239,6 +243,23 @@ border-radius: 0.375rem; } +.carousel-wrapper :is(.border-b) { + border-bottom-width: 1px; +} + +.carousel-wrapper :is(.border-t) { + border-top-width: 1px; +} + +.carousel-wrapper :is(.border-solid) { + border-style: solid; +} + +.carousel-wrapper :is(.border-black) { + --tw-border-opacity: 1; + border-color: rgb(0 0 0 / var(--tw-border-opacity)); +} + .carousel-wrapper :is(.bg-danaherlightblue-50) { --tw-bg-opacity: 1; background-color: rgb(239 251 253 / var(--tw-bg-opacity)); diff --git a/blocks/carousel/carousel.js b/blocks/carousel/carousel.js index 5f339611a..a35ef933f 100644 --- a/blocks/carousel/carousel.js +++ b/blocks/carousel/carousel.js @@ -111,6 +111,7 @@ export default function decorate(block) { configureNavigation(carouselControls); block.parentElement.append(div({ class: 'carousel-controls relative max-w-7xl mx-auto' }, carouselControls)); } + if (!block.classList.contains('no-border')) block.classList.add(...'border-t border-b border-solid border-black'.split(' ')); setTimeout(() => { /* eslint-disable no-new */ new Carousel({ diff --git a/styles/styles.css b/styles/styles.css index d714024eb..77ed3323d 100644 --- a/styles/styles.css +++ b/styles/styles.css @@ -2483,20 +2483,20 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica padding-right: 0.75rem; } -.pt-0 { - padding-top: 0px; -} - .pt-12 { padding-top: 3rem; } +.pt-4 { + padding-top: 1rem; +} + .pt-6 { padding-top: 1.5rem; } -.pt-4 { - padding-top: 1rem; +.pt-0 { + padding-top: 0px; } .text-left { diff --git a/tools/importer/transformers/carousel.js b/tools/importer/transformers/carousel.js index e208dca71..0dcb4d3f5 100644 --- a/tools/importer/transformers/carousel.js +++ b/tools/importer/transformers/carousel.js @@ -2,7 +2,9 @@ const getCarousel = (carousel, cells, document) => { // eslint-disable-next-line no-undef const carouselLists = JSON.parse(decodeHtmlEntities(carousel.getAttribute('slidedata'))); - cells.push(['carousel']); + const border = carousel.parentNode?.parentNode?.getAttribute('role'); + if (border) cells.push([`carousel (${border})`]); + else cells.push(['carousel']); const slides = carouselLists.map((slide) => { const rightDiv = document.createElement('div'); const brandDiv = document.createElement('div'); From 2651bdd0920f5d0e189402c1510dc6821d15dd69 Mon Sep 17 00:00:00 2001 From: rgravitvl Date: Fri, 21 Jun 2024 18:20:11 +0530 Subject: [PATCH 09/29] removed commented lines --- scripts/scripts-dev.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/scripts/scripts-dev.js b/scripts/scripts-dev.js index 37a729dbf..5cbe0e013 100644 --- a/scripts/scripts-dev.js +++ b/scripts/scripts-dev.js @@ -410,11 +410,6 @@ function decorateTwoColumnSection(main) { newSection.appendChild(currentDiv); } if (additionalDiv) { - // [...additionalDiv.children].forEach((child) => { - // if(child.classList.contains('carousel-wrapper')){ - // child.classList.add(...'border-t border-b border-solid border-black'.split(' ')); - // } - // }); newSection.appendChild(div({ class: 'col-left lg:w-1/3 xl:w-1/4 pt-0' })); newSection.appendChild(additionalDiv); } From d6793921973b5aaeabb37d70f9ff91dd29dc89cc Mon Sep 17 00:00:00 2001 From: rgravitvl Date: Fri, 21 Jun 2024 22:29:55 +0530 Subject: [PATCH 10/29] Updated the schema for product family --- blocks/category-family/category-family.js | 2 ++ scripts/schema.js | 37 ++++++++++++++++------- styles/styles.css | 21 +++++++++++++ 3 files changed, 49 insertions(+), 11 deletions(-) diff --git a/blocks/category-family/category-family.js b/blocks/category-family/category-family.js index 7f6d0abb0..ef2f1103a 100644 --- a/blocks/category-family/category-family.js +++ b/blocks/category-family/category-family.js @@ -7,6 +7,7 @@ import { div, span, button, fieldset, ul, li, input, a, img, p, } from '../../scripts/dom-builder.js'; import { decorateIcons } from '../../scripts/lib-franklin.js'; +import { buildProductCategorySchema } from '../../scripts/schema.js'; const productSkeleton = div( { class: 'coveo-skeleton flex flex-col w-full lg:flex-row grid-rows-1 lg:grid-cols-5 gap-x-10 gap-y-4' }, @@ -522,6 +523,7 @@ export async function decorateProductList(block) { block.removeChild(productSkeleton); return; } + if (res.totalCount > 0) buildProductCategorySchema(res.results); facets(res, facetDiv); resultList(res, categoryDiv); block.removeChild(productSkeleton); diff --git a/scripts/schema.js b/scripts/schema.js index c0cca19b1..05146e89c 100644 --- a/scripts/schema.js +++ b/scripts/schema.js @@ -100,18 +100,33 @@ export function buildProductCategorySchema(products) { }; products.forEach((product, index) => { - data.itemListElement.push({ - '@type': 'ListItem', - position: index + 1, - '@id': `https://lifesciences.danaher.com${makePublicUrl(product.path)}`, - name: product.title, - image: `https://lifesciences.danaher.com${product.image}`, - description: product.description, - mainEntityOfPage: { - '@type': 'WebPage', + if(product?.raw){ + data.itemListElement.push({ + '@type': 'ListItem', + position: index + 1, + '@id': product.clickUri, + name: product.title, + image: product?.raw?.images?.at(0), + description: product.excerpt, + mainEntityOfPage: { + '@type': 'WebPage', + '@id': product.clickUri, + }, + }); + } else { + data.itemListElement.push({ + '@type': 'ListItem', + position: index + 1, '@id': `https://lifesciences.danaher.com${makePublicUrl(product.path)}`, - }, - }); + name: product.title, + image: `https://lifesciences.danaher.com${product.image}`, + description: product.description, + mainEntityOfPage: { + '@type': 'WebPage', + '@id': `https://lifesciences.danaher.com${makePublicUrl(product.path)}`, + }, + }); + } }); setJsonLd( diff --git a/styles/styles.css b/styles/styles.css index 04d209087..77ed3323d 100644 --- a/styles/styles.css +++ b/styles/styles.css @@ -2332,6 +2332,18 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica border-width: 2px; } +.border-b { + border-bottom-width: 1px; +} + +.border-t { + border-top-width: 1px; +} + +.border-solid { + border-style: solid; +} + .border-danaherpurple-500 { --tw-border-opacity: 1; border-color: rgb(117 35 255 / var(--tw-border-opacity)); @@ -2347,6 +2359,11 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica border-color: rgb(239 68 68 / var(--tw-border-opacity)); } +.border-black { + --tw-border-opacity: 1; + border-color: rgb(0 0 0 / var(--tw-border-opacity)); +} + .bg-danaherlightblue-50 { --tw-bg-opacity: 1; background-color: rgb(239 251 253 / var(--tw-bg-opacity)); @@ -2478,6 +2495,10 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica padding-top: 1.5rem; } +.pt-0 { + padding-top: 0px; +} + .text-left { text-align: left; } From 3e706a104ffdf2dc01bfe0448e5b911522ad150d Mon Sep 17 00:00:00 2001 From: rgravitvl Date: Fri, 21 Jun 2024 22:41:08 +0530 Subject: [PATCH 11/29] Updated block name --- .../product-family.css} | 270 +++++++++--------- .../product-family.js} | 4 +- build-css.js | 6 +- tools/importer/transformers/coveoCategory.js | 2 +- 4 files changed, 141 insertions(+), 141 deletions(-) rename blocks/{category-family/category-family.css => product-family/product-family.css} (54%) rename blocks/{category-family/category-family.js => product-family/product-family.js} (99%) diff --git a/blocks/category-family/category-family.css b/blocks/product-family/product-family.css similarity index 54% rename from blocks/category-family/category-family.css rename to blocks/product-family/product-family.css index 6197c957c..5d3307067 100644 --- a/blocks/category-family/category-family.css +++ b/blocks/product-family/product-family.css @@ -32,214 +32,214 @@ } } -.category-family-wrapper :is(.pointer-events-none) { +.product-family-wrapper :is(.pointer-events-none) { pointer-events: none } -.category-family-wrapper :is(.absolute) { +.product-family-wrapper :is(.absolute) { position: absolute } -.category-family-wrapper :is(.relative) { +.product-family-wrapper :is(.relative) { position: relative } -.category-family-wrapper :is(.left-0) { +.product-family-wrapper :is(.left-0) { left: 0px } -.category-family-wrapper :is(.z-10) { +.product-family-wrapper :is(.z-10) { z-index: 10 } -.category-family-wrapper :is(.col-span-1) { +.product-family-wrapper :is(.col-span-1) { grid-column: span 1 / span 1 } -.category-family-wrapper :is(.col-span-2) { +.product-family-wrapper :is(.col-span-2) { grid-column: span 2 / span 2 } -.category-family-wrapper :is(.col-span-4) { +.product-family-wrapper :is(.col-span-4) { grid-column: span 4 / span 4 } -.category-family-wrapper :is(.m-1) { +.product-family-wrapper :is(.m-1) { margin: 0.25rem } -.category-family-wrapper :is(.mx-auto) { +.product-family-wrapper :is(.mx-auto) { margin-left: auto; margin-right: auto } -.category-family-wrapper :is(.mb-2) { +.product-family-wrapper :is(.mb-2) { margin-bottom: 0.5rem } -.category-family-wrapper :is(.mb-4) { +.product-family-wrapper :is(.mb-4) { margin-bottom: 1rem } -.category-family-wrapper :is(.mt-3) { +.product-family-wrapper :is(.mt-3) { margin-top: 0.75rem } -.category-family-wrapper :is(.mt-4) { +.product-family-wrapper :is(.mt-4) { margin-top: 1rem } -.category-family-wrapper :is(.mt-6) { +.product-family-wrapper :is(.mt-6) { margin-top: 1.5rem } -.category-family-wrapper :is(.\!line-clamp-3) { +.product-family-wrapper :is(.\!line-clamp-3) { overflow: hidden !important; display: -webkit-box !important; -webkit-box-orient: vertical !important; -webkit-line-clamp: 3 !important } -.category-family-wrapper :is(.line-clamp-4) { +.product-family-wrapper :is(.line-clamp-4) { overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4 } -.category-family-wrapper :is(.block) { +.product-family-wrapper :is(.block) { display: block } -.category-family-wrapper :is(.flex) { +.product-family-wrapper :is(.flex) { display: flex } -.category-family-wrapper :is(.inline-flex) { +.product-family-wrapper :is(.inline-flex) { display: inline-flex } -.category-family-wrapper :is(.grid) { +.product-family-wrapper :is(.grid) { display: grid } -.category-family-wrapper :is(.contents) { +.product-family-wrapper :is(.contents) { display: contents } -.category-family-wrapper :is(.hidden) { +.product-family-wrapper :is(.hidden) { display: none } -.category-family-wrapper :is(.\!h-14) { +.product-family-wrapper :is(.\!h-14) { height: 3.5rem !important } -.category-family-wrapper :is(.\!h-20) { +.product-family-wrapper :is(.\!h-20) { height: 5rem !important } -.category-family-wrapper :is(.h-10) { +.product-family-wrapper :is(.h-10) { height: 2.5rem } -.category-family-wrapper :is(.h-2) { +.product-family-wrapper :is(.h-2) { height: 0.5rem } -.category-family-wrapper :is(.h-24) { +.product-family-wrapper :is(.h-24) { height: 6rem } -.category-family-wrapper :is(.h-3) { +.product-family-wrapper :is(.h-3) { height: 0.75rem } -.category-family-wrapper :is(.h-4) { +.product-family-wrapper :is(.h-4) { height: 1rem } -.category-family-wrapper :is(.h-48) { +.product-family-wrapper :is(.h-48) { height: 12rem } -.category-family-wrapper :is(.h-5) { +.product-family-wrapper :is(.h-5) { height: 1.25rem } -.category-family-wrapper :is(.h-7) { +.product-family-wrapper :is(.h-7) { height: 1.75rem } -.category-family-wrapper :is(.h-72) { +.product-family-wrapper :is(.h-72) { height: 18rem } -.category-family-wrapper :is(.h-8) { +.product-family-wrapper :is(.h-8) { height: 2rem } -.category-family-wrapper :is(.h-full) { +.product-family-wrapper :is(.h-full) { height: 100% } -.category-family-wrapper :is(.w-2\/4) { +.product-family-wrapper :is(.w-2\/4) { width: 50% } -.category-family-wrapper :is(.w-2\/5) { +.product-family-wrapper :is(.w-2\/5) { width: 40% } -.category-family-wrapper :is(.w-3\/4) { +.product-family-wrapper :is(.w-3\/4) { width: 75% } -.category-family-wrapper :is(.w-4) { +.product-family-wrapper :is(.w-4) { width: 1rem } -.category-family-wrapper :is(.w-4\/5) { +.product-family-wrapper :is(.w-4\/5) { width: 80% } -.category-family-wrapper :is(.w-64) { +.product-family-wrapper :is(.w-64) { width: 16rem } -.category-family-wrapper :is(.w-9) { +.product-family-wrapper :is(.w-9) { width: 2.25rem } -.category-family-wrapper :is(.w-\[15rem\]) { +.product-family-wrapper :is(.w-\[15rem\]) { width: 15rem } -.category-family-wrapper :is(.w-full) { +.product-family-wrapper :is(.w-full) { width: 100% } -.category-family-wrapper :is(.max-w-5xl) { +.product-family-wrapper :is(.max-w-5xl) { max-width: 64rem } -.category-family-wrapper :is(.max-w-sm) { +.product-family-wrapper :is(.max-w-sm) { max-width: 24rem } -.category-family-wrapper :is(.max-w-xl) { +.product-family-wrapper :is(.max-w-xl) { max-width: 36rem } -.category-family-wrapper :is(.max-w-xs) { +.product-family-wrapper :is(.max-w-xs) { max-width: 20rem } -.category-family-wrapper :is(.grow) { +.product-family-wrapper :is(.grow) { flex-grow: 1 } -.category-family-wrapper :is(.transform) { +.product-family-wrapper :is(.transform) { transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) } @@ -249,321 +249,321 @@ } } -.category-family-wrapper :is(.animate-pulse) { +.product-family-wrapper :is(.animate-pulse) { animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite } -.category-family-wrapper :is(.cursor-pointer) { +.product-family-wrapper :is(.cursor-pointer) { cursor: pointer } -.category-family-wrapper :is(.grid-cols-1) { +.product-family-wrapper :is(.grid-cols-1) { grid-template-columns: repeat(1, minmax(0, 1fr)) } -.category-family-wrapper :is(.grid-cols-3) { +.product-family-wrapper :is(.grid-cols-3) { grid-template-columns: repeat(3, minmax(0, 1fr)) } -.category-family-wrapper :is(.grid-rows-1) { +.product-family-wrapper :is(.grid-rows-1) { grid-template-rows: repeat(1, minmax(0, 1fr)) } -.category-family-wrapper :is(.flex-row) { +.product-family-wrapper :is(.flex-row) { flex-direction: row } -.category-family-wrapper :is(.flex-col) { +.product-family-wrapper :is(.flex-col) { flex-direction: column } -.category-family-wrapper :is(.items-start) { +.product-family-wrapper :is(.items-start) { align-items: flex-start } -.category-family-wrapper :is(.items-center) { +.product-family-wrapper :is(.items-center) { align-items: center } -.category-family-wrapper :is(.justify-center) { +.product-family-wrapper :is(.justify-center) { justify-content: center } -.category-family-wrapper :is(.justify-between) { +.product-family-wrapper :is(.justify-between) { justify-content: space-between } -.category-family-wrapper :is(.gap-1) { +.product-family-wrapper :is(.gap-1) { gap: 0.25rem } -.category-family-wrapper :is(.gap-2) { +.product-family-wrapper :is(.gap-2) { gap: 0.5rem } -.category-family-wrapper :is(.gap-4) { +.product-family-wrapper :is(.gap-4) { gap: 1rem } -.category-family-wrapper :is(.gap-5) { +.product-family-wrapper :is(.gap-5) { gap: 1.25rem } -.category-family-wrapper :is(.gap-6) { +.product-family-wrapper :is(.gap-6) { gap: 1.5rem } -.category-family-wrapper :is(.gap-x-10) { +.product-family-wrapper :is(.gap-x-10) { -moz-column-gap: 2.5rem; column-gap: 2.5rem } -.category-family-wrapper :is(.gap-y-2) { +.product-family-wrapper :is(.gap-y-2) { row-gap: 0.5rem } -.category-family-wrapper :is(.gap-y-4) { +.product-family-wrapper :is(.gap-y-4) { row-gap: 1rem } -.category-family-wrapper :is(.space-x-2 > :not([hidden]) ~ :not([hidden])) { +.product-family-wrapper :is(.space-x-2 > :not([hidden]) ~ :not([hidden])) { --tw-space-x-reverse: 0; margin-right: calc(0.5rem * var(--tw-space-x-reverse)); margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))) } -.category-family-wrapper :is(.space-x-4 > :not([hidden]) ~ :not([hidden])) { +.product-family-wrapper :is(.space-x-4 > :not([hidden]) ~ :not([hidden])) { --tw-space-x-reverse: 0; margin-right: calc(1rem * var(--tw-space-x-reverse)); margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))) } -.category-family-wrapper :is(.space-y-1 > :not([hidden]) ~ :not([hidden])) { +.product-family-wrapper :is(.space-y-1 > :not([hidden]) ~ :not([hidden])) { --tw-space-y-reverse: 0; margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse))); margin-bottom: calc(0.25rem * var(--tw-space-y-reverse)) } -.category-family-wrapper :is(.overflow-hidden) { +.product-family-wrapper :is(.overflow-hidden) { overflow: hidden } -.category-family-wrapper :is(.truncate) { +.product-family-wrapper :is(.truncate) { overflow: hidden; text-overflow: ellipsis; white-space: nowrap } -.category-family-wrapper :is(.\!break-words) { +.product-family-wrapper :is(.\!break-words) { overflow-wrap: break-word !important } -.category-family-wrapper :is(.break-words) { +.product-family-wrapper :is(.break-words) { overflow-wrap: break-word } -.category-family-wrapper :is(.\!rounded-full) { +.product-family-wrapper :is(.\!rounded-full) { border-radius: 9999px !important } -.category-family-wrapper :is(.rounded) { +.product-family-wrapper :is(.rounded) { border-radius: 0.25rem } -.category-family-wrapper :is(.rounded-full) { +.product-family-wrapper :is(.rounded-full) { border-radius: 9999px } -.category-family-wrapper :is(.rounded-lg) { +.product-family-wrapper :is(.rounded-lg) { border-radius: 0.5rem } -.category-family-wrapper :is(.rounded-md) { +.product-family-wrapper :is(.rounded-md) { border-radius: 0.375rem } -.category-family-wrapper :is(.rounded-none) { +.product-family-wrapper :is(.rounded-none) { border-radius: 0px } -.category-family-wrapper :is(.border) { +.product-family-wrapper :is(.border) { border-width: 1px } -.category-family-wrapper :is(.border-8) { +.product-family-wrapper :is(.border-8) { border-width: 8px } -.category-family-wrapper :is(.\!border-gray-300) { +.product-family-wrapper :is(.\!border-gray-300) { --tw-border-opacity: 1 !important; border-color: rgb(209 213 219 / var(--tw-border-opacity)) !important } -.category-family-wrapper :is(.bg-danaheratomicgrey-200) { +.product-family-wrapper :is(.bg-danaheratomicgrey-200) { --tw-bg-opacity: 1; background-color: rgb(229 232 232 / var(--tw-bg-opacity)) } -.category-family-wrapper :is(.bg-danaherlightblue-50) { +.product-family-wrapper :is(.bg-danaherlightblue-50) { --tw-bg-opacity: 1; background-color: rgb(239 251 253 / var(--tw-bg-opacity)) } -.category-family-wrapper :is(.bg-gray-100) { +.product-family-wrapper :is(.bg-gray-100) { --tw-bg-opacity: 1; background-color: rgb(243 244 246 / var(--tw-bg-opacity)) } -.category-family-wrapper :is(.bg-neutral-300) { +.product-family-wrapper :is(.bg-neutral-300) { --tw-bg-opacity: 1; background-color: rgb(212 212 212 / var(--tw-bg-opacity)) } -.category-family-wrapper :is(.bg-white) { +.product-family-wrapper :is(.bg-white) { --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity)) } -.category-family-wrapper :is(.\!fill-current) { +.product-family-wrapper :is(.\!fill-current) { fill: currentColor !important } -.category-family-wrapper :is(.object-contain) { +.product-family-wrapper :is(.object-contain) { -o-object-fit: contain; object-fit: contain } -.category-family-wrapper :is(.p-0) { +.product-family-wrapper :is(.p-0) { padding: 0px } -.category-family-wrapper :is(.p-0\.5) { +.product-family-wrapper :is(.p-0\.5) { padding: 0.125rem } -.category-family-wrapper :is(.p-1) { +.product-family-wrapper :is(.p-1) { padding: 0.25rem } -.category-family-wrapper :is(.p-4) { +.product-family-wrapper :is(.p-4) { padding: 1rem } -.category-family-wrapper :is(.\!px-7) { +.product-family-wrapper :is(.\!px-7) { padding-left: 1.75rem !important; padding-right: 1.75rem !important } -.category-family-wrapper :is(.px-2) { +.product-family-wrapper :is(.px-2) { padding-left: 0.5rem; padding-right: 0.5rem } -.category-family-wrapper :is(.px-6) { +.product-family-wrapper :is(.px-6) { padding-left: 1.5rem; padding-right: 1.5rem } -.category-family-wrapper :is(.px-9) { +.product-family-wrapper :is(.px-9) { padding-left: 2.25rem; padding-right: 2.25rem } -.category-family-wrapper :is(.py-1) { +.product-family-wrapper :is(.py-1) { padding-top: 0.25rem; padding-bottom: 0.25rem } -.category-family-wrapper :is(.py-4) { +.product-family-wrapper :is(.py-4) { padding-top: 1rem; padding-bottom: 1rem } -.category-family-wrapper :is(.py-5) { +.product-family-wrapper :is(.py-5) { padding-top: 1.25rem; padding-bottom: 1.25rem } -.category-family-wrapper :is(.py-\[0\.625rem\]) { +.product-family-wrapper :is(.py-\[0\.625rem\]) { padding-top: 0.625rem; padding-bottom: 0.625rem } -.category-family-wrapper :is(.pl-0) { +.product-family-wrapper :is(.pl-0) { padding-left: 0px } -.category-family-wrapper :is(.pr-2) { +.product-family-wrapper :is(.pr-2) { padding-right: 0.5rem } -.category-family-wrapper :is(.pt-10) { +.product-family-wrapper :is(.pt-10) { padding-top: 2.5rem } -.category-family-wrapper :is(.text-left) { +.product-family-wrapper :is(.text-left) { text-align: left } -.category-family-wrapper :is(.align-middle) { +.product-family-wrapper :is(.align-middle) { vertical-align: middle } -.category-family-wrapper :is(.\!text-lg) { +.product-family-wrapper :is(.\!text-lg) { font-size: 1.125rem !important; line-height: 1.75rem !important } -.category-family-wrapper :is(.text-lg) { +.product-family-wrapper :is(.text-lg) { font-size: 1.125rem; line-height: 1.75rem } -.category-family-wrapper :is(.text-sm) { +.product-family-wrapper :is(.text-sm) { font-size: 0.875rem; line-height: 1.25rem } -.category-family-wrapper :is(.text-xs) { +.product-family-wrapper :is(.text-xs) { font-size: 0.75rem; line-height: 1rem } -.category-family-wrapper :is(.\!font-semibold) { +.product-family-wrapper :is(.\!font-semibold) { font-weight: 700 !important } -.category-family-wrapper :is(.font-bold) { +.product-family-wrapper :is(.font-bold) { font-weight: 700 } -.category-family-wrapper :is(.\!text-danahergray-900) { +.product-family-wrapper :is(.\!text-danahergray-900) { --tw-text-opacity: 1 !important; color: rgb(17 24 39 / var(--tw-text-opacity)) !important } -.category-family-wrapper :is(.text-gray-900) { +.product-family-wrapper :is(.text-gray-900) { --tw-text-opacity: 1; color: rgb(17 24 39 / var(--tw-text-opacity)) } -.category-family-wrapper :is(.shadow) { +.product-family-wrapper :is(.shadow) { --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) } -.category-family-wrapper :is(.shadow-lg) { +.product-family-wrapper :is(.shadow-lg) { --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) } -.category-family-wrapper :is(.filter) { +.product-family-wrapper :is(.filter) { filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) } -.category-family-wrapper :is(.transition) { +.product-family-wrapper :is(.transition) { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; @@ -571,61 +571,61 @@ transition-duration: 150ms } -.category-family-wrapper :is(.duration-500) { +.product-family-wrapper :is(.duration-500) { transition-duration: 500ms } -.category-family-wrapper :is(.hover\:scale-105:hover) { +.product-family-wrapper :is(.hover\:scale-105:hover) { --tw-scale-x: 1.05; --tw-scale-y: 1.05; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) } -.category-family-wrapper :is(.hover\:bg-gray-100:hover) { +.product-family-wrapper :is(.hover\:bg-gray-100:hover) { --tw-bg-opacity: 1; background-color: rgb(243 244 246 / var(--tw-bg-opacity)) } @media (min-width: 768px) { - .category-family-wrapper :is(.md\:h-6) { + .product-family-wrapper :is(.md\:h-6) { height: 1.5rem } - .category-family-wrapper :is(.md\:grid-cols-2) { + .product-family-wrapper :is(.md\:grid-cols-2) { grid-template-columns: repeat(2, minmax(0, 1fr)) } - .category-family-wrapper :is(.md\:flex-row) { + .product-family-wrapper :is(.md\:flex-row) { flex-direction: row } } @media (min-width: 1024px) { - .category-family-wrapper :is(.lg\:grid-cols-3) { + .product-family-wrapper :is(.lg\:grid-cols-3) { grid-template-columns: repeat(3, minmax(0, 1fr)) } - .category-family-wrapper :is(.lg\:grid-cols-5) { + .product-family-wrapper :is(.lg\:grid-cols-5) { grid-template-columns: repeat(5, minmax(0, 1fr)) } - .category-family-wrapper :is(.lg\:flex-row) { + .product-family-wrapper :is(.lg\:flex-row) { flex-direction: row } } -.category-family-wrapper :is(.\[\&\:not\(\:first-child\)\:even\]\:opacity-40:not(:first-child):even) { +.product-family-wrapper :is(.\[\&\:not\(\:first-child\)\:even\]\:opacity-40:not(:first-child):even) { opacity: 0.4 } -.category-family-wrapper :is(.\[\&\:not\(\:first-child\)\:odd\]\:opacity-20:not(:first-child):odd) { +.product-family-wrapper :is(.\[\&\:not\(\:first-child\)\:odd\]\:opacity-20:not(:first-child):odd) { opacity: 0.2 } -.category-family-wrapper :is(.\[\&\:not\(\:first-child\)\]\:opacity-20:not(:first-child)) { +.product-family-wrapper :is(.\[\&\:not\(\:first-child\)\]\:opacity-20:not(:first-child)) { opacity: 0.2 } -.category-family-wrapper :is(.\[\&\:not\(\:first-child\)\]\:opacity-40:not(:first-child)) { +.product-family-wrapper :is(.\[\&\:not\(\:first-child\)\]\:opacity-40:not(:first-child)) { opacity: 0.4 } \ No newline at end of file diff --git a/blocks/category-family/category-family.js b/blocks/product-family/product-family.js similarity index 99% rename from blocks/category-family/category-family.js rename to blocks/product-family/product-family.js index ef2f1103a..e80d29ef3 100644 --- a/blocks/category-family/category-family.js +++ b/blocks/product-family/product-family.js @@ -203,7 +203,7 @@ function clearFilter(e, isWorkflow = true, isOpco = false) { const buttonEl = e.target.closest('button'); // eslint-disable-next-line no-restricted-globals history.replaceState({}, '', `#${getQueryString(buttonEl)}`); - decorateProductList(document.querySelector('.category-family')); + decorateProductList(document.querySelector('.product-family')); } /** @@ -618,7 +618,7 @@ function filterButtonClick(e) { // eslint-disable-next-line no-restricted-globals history.replaceState({}, '', `#${getQueryString(buttonEl)}`); - decorateProductList(document.querySelector('.category-family')); + decorateProductList(document.querySelector('.product-family')); } export default async function decorate(block) { diff --git a/build-css.js b/build-css.js index a9bd42c1a..36d9b1f85 100644 --- a/build-css.js +++ b/build-css.js @@ -57,9 +57,9 @@ const fileMappings = [ wrapper: 'carousel-wrapper', }, { - content: './blocks/category-family/category-family.js', - output: './blocks/category-family/category-family.css', - wrapper: 'category-family-wrapper', + content: './blocks/product-family/product-family.js', + output: './blocks/product-family/product-family.css', + wrapper: 'product-family-wrapper', }, { content: './blocks/columns/columns.js', diff --git a/tools/importer/transformers/coveoCategory.js b/tools/importer/transformers/coveoCategory.js index 82e89ed86..d758396a9 100644 --- a/tools/importer/transformers/coveoCategory.js +++ b/tools/importer/transformers/coveoCategory.js @@ -2,7 +2,7 @@ const coveoCategory = (main, document) => { const category = main.querySelector('div.coveocategory'); if (category) { - const block = [['Category Family'], ['']]; + const block = [['Product Family'], ['']]; const table = WebImporter.DOMUtils.createTable(block, document); category.append(table, document.createElement('hr')); } From d227db4a03ec9344fdab19bb94c1ae308105c59b Mon Sep 17 00:00:00 2001 From: rgravitvl Date: Fri, 21 Jun 2024 22:50:33 +0530 Subject: [PATCH 12/29] fixed lint issues --- scripts/schema.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/schema.js b/scripts/schema.js index 05146e89c..748ff2388 100644 --- a/scripts/schema.js +++ b/scripts/schema.js @@ -100,7 +100,7 @@ export function buildProductCategorySchema(products) { }; products.forEach((product, index) => { - if(product?.raw){ + if (product?.raw) { data.itemListElement.push({ '@type': 'ListItem', position: index + 1, From cbd6de7eccd9ce03d8707ebb32d4ccf8e89e8d9b Mon Sep 17 00:00:00 2001 From: rgravitvl Date: Fri, 21 Jun 2024 22:53:07 +0530 Subject: [PATCH 13/29] Fixed converter tests --- .../convert/test/fixtures/product-category1-converted.html | 2 +- .../convert/test/fixtures/product-category2-converted.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/actions/convert/test/fixtures/product-category1-converted.html b/tools/actions/convert/test/fixtures/product-category1-converted.html index ea46871ee..5ccc5aa5b 100644 --- a/tools/actions/convert/test/fixtures/product-category1-converted.html +++ b/tools/actions/convert/test/fixtures/product-category1-converted.html @@ -21,7 +21,7 @@
-
+
diff --git a/tools/actions/convert/test/fixtures/product-category2-converted.html b/tools/actions/convert/test/fixtures/product-category2-converted.html index f98443b6c..898cbe11d 100644 --- a/tools/actions/convert/test/fixtures/product-category2-converted.html +++ b/tools/actions/convert/test/fixtures/product-category2-converted.html @@ -24,7 +24,7 @@

Our analytical ultracentrifuge (AUC) allows real-time monitoring of particle

Analytical ultracentrifugation stands as a first-principle technique performed in a matrix-free environment. It eliminates the need for calibration standards and is unmatched by other methods in providing a comprehensive range of information with exceptional precision and accuracy. In addition, analytical ultracentrifugation molecular weight determination is considered the definitive approach for determining the molecular weight of proteins in solution, offering researchers valuable insights into molecues' size, shape, and behavior. With sedimentation velocity and sedimentation equilibrium measurements, our AUC offers complementary perspectives on solution properties, including molar masses, stoichiometries, association constants, and nonideality.

-
+
From e4a7dd4e3f1b798f91b4452253b74f9d6204e663 Mon Sep 17 00:00:00 2001 From: wz914876 Date: Mon, 24 Jun 2024 13:22:53 +0530 Subject: [PATCH 14/29] h2 elements CSS changes --- scripts/scripts-dev.js | 18 ++++++++++++------ scripts/scripts.js | 2 +- styles/styles.css | 43 ++++-------------------------------------- styles/tailwind.css | 4 ---- 4 files changed, 17 insertions(+), 50 deletions(-) diff --git a/scripts/scripts-dev.js b/scripts/scripts-dev.js index 5cbe0e013..1863cb6be 100644 --- a/scripts/scripts-dev.js +++ b/scripts/scripts-dev.js @@ -375,33 +375,39 @@ function decorateTwoColumnSection(main) { [...dcwElements.children].forEach((child) => { if (child.tagName === 'H1') { newSection.appendChild( - div({ class: 'col-left lg:w-1/3 xl:w-1/4 pt-4' }), + div({ class: 'col-left lg:w-1/3 xl:w-1/4 pt-0 mt-4' }), ); - currentDiv = div({ class: 'col-right w-full mt-0 md:mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10' }); + currentDiv = div({ class: 'col-right w-full mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10' }); } const childClone = child.cloneNode(true); if (childClone.tagName === 'H2' && childClone.querySelector(':scope > strong')) { if (currentDiv?.classList.contains('col-right')) { + currentDiv?.querySelectorAll('h2').forEach((h2) => { + h2.classList.add('mt-0'); + }); newSection.appendChild(currentDiv); } childClone.className = 'text-gray-900 !text-base leading-6 font-bold pt-6 pb-4 my-0'; newSection.appendChild( div( - { class: 'col-left lg:w-1/3 xl:w-1/4 pt-4' }, + { class: 'col-left lg:w-1/3 xl:w-1/4 pt-0 mt-4' }, childClone, domEl('hr', { style: 'height: 10px; width: 54px; border-width: 0px; color: rgb(216, 244, 250); background-color: rgb(216, 244, 250);', }), ), ); - currentDiv = div({ class: 'col-right w-full mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-10' }); + currentDiv = div({ class: 'col-right w-full mt-4 lg:w-2/3 xl:w-3/4 pt-6 pb-10' }); } else if (currentDiv?.classList.contains('col-right')) { + currentDiv?.querySelectorAll('h2').forEach((h2) => { + h2.classList.add('mt-0'); + }); currentDiv.appendChild(childClone); } }); [...section.children].forEach((child) => { if (child.tagName === 'DIV') { - additionalDiv = div({ class: 'col-right w-full mt-0 md:mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10' }); + additionalDiv = div({ class: 'col-right w-full mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10' }); } const childClone = child.cloneNode(true); additionalDiv.appendChild(childClone); @@ -410,7 +416,7 @@ function decorateTwoColumnSection(main) { newSection.appendChild(currentDiv); } if (additionalDiv) { - newSection.appendChild(div({ class: 'col-left lg:w-1/3 xl:w-1/4 pt-0' })); + newSection.appendChild(div({ class: 'col-left lg:w-1/3 xl:w-1/4 pt-0 mt-4' })); newSection.appendChild(additionalDiv); } newSection.classList.add('w-full', 'flex', 'flex-wrap', 'break-normal'); diff --git a/scripts/scripts.js b/scripts/scripts.js index 03c357fe0..65ff47a0d 100644 --- a/scripts/scripts.js +++ b/scripts/scripts.js @@ -1 +1 @@ -import{sampleRUM,loadHeader,loadFooter,decorateButtons,decorateIcons,decorateSections,decorateBlocks,decorateTemplateAndTheme,waitForLCP,loadBlocks,loadCSS,toClassName,getMetadata,createOptimizedPicture,loadBlock,decorateBlock}from"./lib-franklin.js";import{div,domEl,img}from"./dom-builder.js";const LCP_BLOCKS=["breadcrumb","product-hero","carousel","columns"];const TEMPLATE_LIST={blog:{templateName:"blog",dependencies:["./schema.js","../blocks/columns/columns.js","../blocks/social-media/social-media.js","../blocks/article-info/article-info.js"]},productdetail:{templateName:"productDetail",dependencies:["./commerce.js","./product-payload-builder.js","./schema.js"]},processstep:"processstep",topic:"topic",library:"library",info:"library"};TEMPLATE_LIST.news=TEMPLATE_LIST.blog;export function imageHelper(imageUrl,imageAlt,eager=false){if(imageUrl.indexOf(".scene7.com")>-1){return img({src:`${imageUrl}`,alt:imageAlt,loading:eager?"eager":"lazy",class:"mb-2 h-48 w-full object-cover"})}const cardImage=createOptimizedPicture(imageUrl,imageAlt,eager,[{width:"500"}]);cardImage.querySelector("img").className="mb-2 h-48 w-full object-cover";return cardImage}export function createOptimizedS7Picture(src,alt="",eager=false){if(src.startsWith("/is/image")||src.indexOf(".scene7.com")>-1){const picture=document.createElement("picture");picture.appendChild(img({src:`${src}?$danaher-mobile$`,fetchpriority:"high",alt:alt,loading:eager?"eager":"lazy"}));return picture}return img({src:src,alt:alt,loading:eager?"eager":"lazy"})}export function formatDateUTCSeconds(date,options={}){const dateObj=new Date(0);dateObj.setUTCSeconds(date);return dateObj.toLocaleDateString("en-US",{month:"short",day:"2-digit",year:"numeric",...options})}export function generateUUID(){return Math.floor(1e3+Math.random()*9e3)}let originalOffset=0;export function scrollJumpMenuFixed(pageJumpMenuContainer){if(!originalOffset){const rectPageTabs=pageJumpMenuContainer.getBoundingClientRect();originalOffset=rectPageTabs.top}if(window.scrollY>originalOffset){pageJumpMenuContainer.classList.add(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-jump-menu-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));document.querySelector(".page-jump-menu-container.fixed ul")?.classList.add("shadow-none","rounded-none");document.querySelectorAll(".page-jump-menu-container.fixed ul li")?.forEach((el=>{el?.firstElementChild?.classList.add("rounded-full");el?.firstElementChild?.querySelector("span.icon svg use")?.classList.add("stroke-danaherpurple-500")}));document.querySelector('.page-jump-menu-container.fixed li[aria-selected="true"] a span.icon svg')?.classList.add("stroke-white");pageJumpMenuContainer.classList.remove(..."[&_.page-jump-menu-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}else{pageJumpMenuContainer.classList.remove(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-jump-menu-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));document.querySelectorAll(".page-jump-menu-container ul li")?.forEach((el=>el?.firstElementChild?.classList.remove("rounded-full")));pageJumpMenuContainer.classList.add(..."[&_.page-jump-menu-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}}let pageTabsOriginalOffset=0;export function scrollPageTabFixed(pageTabsContainer){if(!pageTabsOriginalOffset){const rectPageTabs=pageTabsContainer.getBoundingClientRect();pageTabsOriginalOffset=rectPageTabs.top}if(window.scrollY>pageTabsOriginalOffset){pageTabsContainer.classList.add(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-tabs-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));pageTabsContainer.classList.remove(..."[&_.page-tabs-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}else{pageTabsContainer.classList.remove(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-tabs-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));pageTabsContainer.classList.add(..."[&_.page-tabs-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}}export function makePublicUrl(url){const isProd=window.location.hostname.includes("lifesciences.danaher.com");try{const newURL=new URL(url,window.location.origin);if(isProd){if(newURL.pathname.endsWith(".html")){return newURL.pathname}newURL.pathname+=".html";return newURL.pathname}if(newURL.pathname.endsWith(".html")){newURL.pathname=newURL.pathname.slice(0,-5);return newURL.pathname}return newURL.pathname}catch(error){console.error("Invalid URL:",error);return url}}export function setJsonLd(data,name){const existingScript=document.head.querySelector(`script[data-name="${name}"]`);if(existingScript){existingScript.innerHTML=JSON.stringify(data);return}const script=document.createElement("script");script.type="application/ld+json";script.innerHTML=JSON.stringify(data);script.dataset.name=name;document.head.appendChild(script)}function setFavicon(){const faviconLink=document.querySelector("link[rel*='icon']")||document.createElement("link");faviconLink.type="image/x-icon";faviconLink.rel="shortcut icon";faviconLink.href=`https://${window.location.hostname}/favicon.ico`;document.getElementsByTagName("head")[0].appendChild(faviconLink)}export async function getFragmentFromFile(url){const response=await fetch(url);if(!response.ok){console.error("error loading fragment details",response);return null}const text=await response.text();if(!text){console.error("fragment details empty",url);return null}return text}export function getCookie(cname){let value=decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(cname).replace(/[\\-\\.\\+\\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null;if(value&&(value.substring(0,1)==="{"&&value.substring(value.length-1,value.length)==="}"||value.substring(0,1)==="["&&value.substring(value.length-1,value.length)==="]")){try{value=JSON.parse(value)}catch(e){return value}}return value}export function isOTEnabled(){const otCookie=getCookie("OptanonConsent");if(typeof otCookie==="string"){return otCookie.includes("C0002:1")}return true}export function setCookie(cname,cvalue,expTime=30*1e3*60*60*24,path="/"){const today=new Date;today.setTime(today.getTime()+expTime);const expires="expires=".concat(today.toGMTString());const cookieString=cname.concat("=").concat(cvalue).concat(";").concat(expires).concat(";path=").concat(path);document.cookie=cookieString}async function buildVideo(main){const videoLinks=main.querySelectorAll('a[href*="youtube.com"],a[href*="vimeo.com"],a[href*="vidyard.com"]');if(videoLinks.length>0){const{default:decorateEmbed}=await import("../blocks/embed/embed.js");videoLinks.forEach((link=>{if(link.closest(".embed, .hero")==null){decorateEmbed(link.parentNode)}}))}}async function loadFonts(){await loadCSS(`${window.hlx.codeBasePath}/styles/fonts.css`);try{if(!window.location.hostname.includes("localhost"))sessionStorage.setItem("fonts-loaded","true")}catch(e){}}function loadBreadCrumb(){const header=document.querySelector("header");const breadcrumb=document.createElement("breadcrumb");if(window.location.pathname!=="/")header.after(breadcrumb)}function loadMobileMenu(){const breadcrumb=document.querySelector("breadcrumb");const mobileMunu=document.createElement("mobilemenu");const url=new URL(window.location.href);if(url.pathname.match(/\/us\/en\/products\/(family\/|sku\/|bundles\/)/)||url.pathname.match(/\/us\/en\/solutions\//)){breadcrumb.after(mobileMunu)}}function buildAutoBlocks(main){try{buildVideo(main)}catch(error){console.error("Auto Blocking failed",error)}}export function decorateModals(main){const ctaModalButton=main.querySelector(".show-modal-btn");const content=()=>ctaModalButton.getAttribute("data-dialog-message")?ctaModalButton.getAttribute("dialog-message"):"";ctaModalButton?.addEventListener("click",(async e=>{e.preventDefault();const{default:getModal}=await import("./modal.js");const customModal=await getModal("custom-modal",content,(modal=>{modal.querySelector('p[name="close"]')?.addEventListener("click",(()=>modal.close()))}));customModal.showModal()}))}function decorateTwoColumnSection(main){const dcwElements=div();const defaultContentWrappers=main.querySelectorAll(".default-content-wrapper");defaultContentWrappers.forEach((contentWrapper=>{[...contentWrapper.children].forEach((child=>{dcwElements.appendChild(child)}));let nextElement=contentWrapper.nextSibling;const allBlocks=[];while(nextElement){if(nextElement.className.includes("-wrapper"))allBlocks.push(nextElement);nextElement=nextElement.nextSibling}dcwElements.append(...allBlocks)}));main.querySelectorAll(".section.container-two-col").forEach((section=>{const newSection=div();let currentDiv=null;let additionalDiv=null;[...dcwElements.children].forEach((child=>{if(child.tagName==="H1"){newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-4"}));currentDiv=div({class:"col-right w-full mt-0 md:mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10"})}const childClone=child.cloneNode(true);if(childClone.tagName==="H2"&&childClone.querySelector(":scope > strong")){if(currentDiv?.classList.contains("col-right")){newSection.appendChild(currentDiv)}childClone.className="text-gray-900 !text-base leading-6 font-bold pt-6 pb-4 my-0";newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-4"},childClone,domEl("hr",{style:"height: 10px; width: 54px; border-width: 0px; color: rgb(216, 244, 250); background-color: rgb(216, 244, 250);"})));currentDiv=div({class:"col-right w-full mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-10"})}else if(currentDiv?.classList.contains("col-right")){currentDiv.appendChild(childClone)}}));[...section.children].forEach((child=>{if(child.tagName==="DIV"){additionalDiv=div({class:"col-right w-full mt-0 md:mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10"})}const childClone=child.cloneNode(true);additionalDiv.appendChild(childClone)}));if(currentDiv){newSection.appendChild(currentDiv)}if(additionalDiv){newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-0"}));newSection.appendChild(additionalDiv)}newSection.classList.add("w-full","flex","flex-wrap","break-normal");section.innerHTML=newSection.outerHTML;section.classList.add("mx-auto","w-full","flex","flex-wrap","mb-5")}))}function updateExternalLinks(main){const REFERERS=[window.location.origin];main.querySelectorAll("a[href]").forEach((a=>{try{const{origin:origin,pathname:pathname,hash:hash}=new URL(a.href,window.location.href);const targetHash=hash&&hash.startsWith("#_");const isPDF=pathname.split(".").pop()==="pdf";if(origin&&origin!==window.location.origin&&!targetHash||isPDF){a.setAttribute("target","_blank");if(!REFERERS.includes(origin))a.setAttribute("rel","noopener")}else if(targetHash){a.setAttribute("target",hash.replace("#",""));a.href=a.href.replace(hash,"")}}catch(e){console.warn(`Invalid link in ${main}: ${a.href}`)}}))}function lazyLoadHiddenPageNavTabs(sections,nameOfFirstSection){const activeHash=window.location.hash;const active=activeHash?activeHash.substring(1,activeHash.length).toLowerCase():nameOfFirstSection;sections.forEach((section=>{const hasBreadCrumb=section.className.includes("breadcrumb-container");if(!hasBreadCrumb&§ion.getAttribute("aria-labelledby")!==active){section.querySelectorAll(".block").forEach((block=>{block.setAttribute("data-block-status","loaded");block.setAttribute("data-block-lazy-load",true);block.parentElement.style.display="none"}));const loadLazyBlocks=lazySection=>{lazySection.querySelectorAll(".block[data-block-lazy-load]").forEach((async block=>{block.removeAttribute("data-block-lazy-load");block.setAttribute("data-block-status","initialized");await loadBlock(block);block.parentElement.style.display=""}));section.setAttribute("data-section-status","loaded")};const observer=new IntersectionObserver((entries=>{if(entries.some((e=>e.isIntersecting))){observer.disconnect();loadLazyBlocks(section)}}));observer.observe(section);setTimeout((()=>{observer.disconnect();loadLazyBlocks(section)}),5e3)}}))}function decoratePageNav(main){const pageTabsBlock=main.querySelector(".page-tabs");if(!pageTabsBlock)return;const pageTabSection=pageTabsBlock.closest("div.section");let sections=[...main.querySelectorAll("div.section")];sections=sections.slice(sections.indexOf(pageTabSection)+1);const namedSections=sections.filter((section=>section.hasAttribute("data-tabname")));let index=0;sections.forEach((section=>{if(indeximport(dep)))]).then((([mod])=>mod.default));if(decorator){await decorator(main)}document.body.classList.add(templateName)}}catch(error){console.error("Auto Blocking failed",error)}}function decorateEmbeddedBlocks(container){container.querySelectorAll("div.section > div").forEach(decorateBlock)}export async function processEmbedFragment(element){const block=div({class:"embed-fragment"});[...element.classList].forEach((className=>{block.classList.add(className)}));const link=element.textContent;if(link){const fragment=await getFragmentFromFile(`${link}.plain.html`);if(fragment){block.innerHTML=fragment;const sections=block.querySelectorAll(".embed-fragment > div");[...sections].forEach((section=>{section.classList.add("section")}));decorateEmbeddedBlocks(block);decorateSections(block);loadBlocks(block)}else{const elementInner=element.innerHTML;block.append(div({class:"section"}));block.querySelector(".section").innerHTML=elementInner}}decorateButtons(block);decorateIcons(block);return block}function loadATPageParams(){const id=window.location.pathname.replaceAll("/","_").replace(/\.html$/,"").substring(1);const skuId=getMetadata("sku");const categoryId=getMetadata("fullcategory").split("|").pop();const thumbnailURL=getMetadata("og:image");const title=getMetadata("og:title");const name=title.indexOf("| Danaher Life Sciences")>-1?title.split("| Danaher Life Sciences")[0]:title;const message=getMetadata("og:description");const pageUrl=getMetadata("og:url");const brand=getMetadata("brand");const page=window.location.pathname.split("/")[3];const tags=getMetadata("article:tag");const articleAuthor=getMetadata("authorname");const articlePostDate=getMetadata("publishdate");const articleReadTime=getMetadata("readingtime");const targetParams={id:id,skuId:skuId,categoryId:categoryId,thumbnailURL:thumbnailURL,name:name,message:message,pageUrl:pageUrl,brand:brand,page:page,tags:tags,articleAuthor:articleAuthor,articlePostDate:articlePostDate,articleReadTime:articleReadTime};return targetParams}function initATJS(path,config){window.targetGlobalSettings=config;window.atPageParams=loadATPageParams();window.targetPageParams=function getTargetPageParams(){return{at_property:"6aeb619e-92d9-f4cf-f209-6d88ff58af6a","entity.id":window.atPageParams?.id,"entity.skuId":window.atPageParams?.skuId,"entity.categoryId":window.atPageParams?.categoryId,"entity.thumbnailURL":window.atPageParams?.thumbnailURL,"entity.name":window.atPageParams?.name,"entity.message":window.atPageParams?.message,"entity.pageUrl":window.atPageParams?.pageUrl,"entity.brand":window.atPageParams?.brand,"entity.page":window.atPageParams?.page,"entity.tags":window.atPageParams?.tags,"entity.articleAuthor":window.atPageParams?.articleAuthor,"entity.articlePostDate":window.atPageParams?.articlePostDate,"entity.articleReadTime":window.atPageParams?.articleReadTime,danaherCompany:localStorage.getItem("danaher_company")?localStorage.getItem("danaher_company"):"",utmCampaign:localStorage.getItem("danaher_utm_campaign")?localStorage.getItem("danaher_utm_campaign"):"",utmSource:localStorage.getItem("danaher_utm_source")?localStorage.getItem("danaher_utm_source"):"",utmMedium:localStorage.getItem("danaher_utm_medium")?localStorage.getItem("danaher_utm_medium"):"",utmContent:localStorage.getItem("danaher_utm_content")?localStorage.getItem("danaher_utm_content"):""}};return new Promise((resolve=>{import(path).then(resolve)}))}function onDecoratedElement(fn){if(document.querySelector('[data-block-status="loaded"],[data-section-status="loaded"]')){fn()}const observer=new MutationObserver((mutations=>{if(mutations.some((m=>m.target.tagName==="BODY"||m.target.dataset.sectionStatus==="loaded"||m.target.dataset.blockStatus==="loaded"))){fn()}}));observer.observe(document.querySelector("main"),{subtree:true,attributes:true,attributeFilter:["data-block-status","data-section-status"]});observer.observe(document.querySelector("body"),{childList:true})}function toCssSelector(selector){return selector.replace(/(\.\S+)?:eq\((\d+)\)/g,((_,clss,i)=>`:nth-child(${Number(i)+1}${clss?` of ${clss})`:""}`))}async function getElementForOffer(offer){const selector=offer.cssSelector||toCssSelector(offer.selector);return document.querySelector(selector)}async function getElementForMetric(metric){const selector=toCssSelector(metric.selector);return document.querySelector(selector)}async function getAndApplyOffers(){const response=await window.adobe.target.getOffers({request:{execute:{pageLoad:{}}}});const{options:options=[],metrics:metrics=[]}=response.execute.pageLoad;onDecoratedElement((()=>{window.adobe.target.applyOffers({response:response});options.forEach((o=>o.content=o.content.filter((c=>!getElementForOffer(c)))));metrics.map(((m,i)=>getElementForMetric(m)?i:-1)).filter((i=>i>=0)).reverse().map((i=>metrics.splice(i,1)))}))}let atjsPromise=Promise.resolve();const urlTarget=window.location.pathname;const regex=/^\/(us\/en\/products\.html)?$/;if(!regex.test(urlTarget)){atjsPromise=initATJS("./at.js",{clientCode:"danaher",serverDomain:"danaher.tt.omtrdc.net",imsOrgId:"08333E7B636A2D4D0A495C34@AdobeOrg",bodyHidingEnabled:false,cookieDomain:window.location.hostname,pageLoadEnabled:false,secureOnly:true,viewsEnabled:false,withWebGLRenderer:false}).catch((e=>{console.error("Error loading at.js",e)}));document.addEventListener("at-library-loaded",(()=>getAndApplyOffers()))}async function loadEager(doc){document.documentElement.lang="en";decorateTemplateAndTheme();await window.hlx.plugins.run("loadEager");const main=doc.querySelector("main");if(main){await decorateTemplates(main);decorateMain(main);await atjsPromise;await new Promise((resolve=>{window.requestAnimationFrame((async()=>{document.body.classList.add("appear");await waitForLCP(LCP_BLOCKS);resolve()}))}))}try{if(window.innerWidth>=900||sessionStorage.getItem("fonts-loaded")){loadFonts()}}catch(e){}}function getParameterByName(parameter,url=window.location.href){const modifiedParameter=parameter.replace(/[[\]]/g,"$&");const paramRegex=new RegExp(`[?&]${modifiedParameter}(=([^&#]*)|&|#|$)`);const results=paramRegex.exec(url);if(!results)return null;if(!results[2])return"";return decodeURIComponent(results[2].replace(/\+/g," "))}function loadUTMprams(){const utmParameters=["utm_campaign","utm_source","utm_medium","utm_content","utm_term","utm_previouspage"];utmParameters.forEach((param=>{const value=getParameterByName(param);if(value!==null){window.localStorage.setItem(`danaher_${param}`,value)}}))}async function loadLazy(doc){const main=doc.querySelector("main");await loadBlocks(main);const{hash:hash}=window.location;const element=hash?doc.getElementById(hash.substring(1)):false;if(hash&&element)element.scrollIntoView();loadFooter(doc.querySelector("footer"));loadCSS(`${window.hlx.codeBasePath}/styles/lazy-styles.css`);loadFonts();window.hlx.plugins.run("loadLazy");sampleRUM("lazy");sampleRUM.observe(main.querySelectorAll("div[data-block-name]"));sampleRUM.observe(main.querySelectorAll("picture > img"));loadUTMprams()}function loadDelayed(){window.setTimeout((()=>{window.hlx.plugins.load("delayed");window.hlx.plugins.run("loadDelayed");return import("./delayed.js")}),4e3)}async function loadPage(){setFavicon();await window.hlx.plugins.load("eager");await loadEager(document);await window.hlx.plugins.load("lazy");await loadLazy(document);loadDelayed()}function getDLPage(){const page={title:document.querySelector("title").textContent.replace(/[\n\t]/gm,""),language:"en",locale:"US",level:"top",type:"webpage",keywords:"",creationDate:getMetadata("creationdate"),updateDate:getMetadata("updatedate")};const path=window.location.pathname;if(path==="/"||path==="/us/en"||path==="/us/en.html"){page.level="top";page.type="home"}else if(path.includes("/us/en/news")){page.level="top";page.type="news"}else if(path.includes("/us/en/blog")){page.level="middle";page.type="blog"}else if(path.includes("/us/en/solutions")){page.level="middle";page.type="solutions"}else if(path.includes("/us/en/applications")){page.level="middle";page.type="applications"}else if(path.includes("/us/en/products")){if(path.includes("/us/en/products/family")){page.level="bottom";page.type="family"}else if(path.includes("/us/en/products/bundles")){page.level="bottom";page.type="bundles"}else if(path.includes("/us/en/products/sku")){page.level="bottom";page.type="sku"}else if(path.includes("/topics")){page.level="other";page.type="topics"}else{page.level="bottom";page.type="products"}}else if(path.includes("/us/en/library")){page.level="other";page.type="library"}else if(path.includes("/us/en/about-us")){page.level="top";page.type="about-us"}else if(path.includes("/us/en/expert")){page.level="top";page.type="expert"}else if(path.includes("/us/en/search")||path.includes("/us/en/danahersearch")){page.level="top";page.type="search"}else if(path.includes("/us/en/signin")){page.level="top";page.type="signin"}else if(path.includes("/us/en/legal")){page.level="top";page.type="legal"}return page}const urlParams=new URLSearchParams(window.location.search);const useProd=urlParams.get("useProd");if(window.location.host==="lifesciences.danaher.com"||useProd==="true"){window.DanaherConfig={siteID:"ls-us-en",gtmID:"GTM-THXPLCS",munchkinID:"306-EHG-641",marketoDomain:"//306-EHG-641.mktoweb.com",quoteCartPath:"/us/en/quote-cart.html",cartPath:"/us/en/cart.html",addressesPath:"/us/en/addresses.html",shippingPath:"/us/en/shipping.html",paymentPath:"/us/en/payment.html",receiptPath:"/us/en/receipt.html",quoteSubmitPath:"/us/en/submit-quote.html",intershopDomain:"https://shop.lifesciences.danaher.com",intershopPath:"/INTERSHOP/rest/WFS/DANAHERLS-LSIG-Site/-",searchOrg:"danaherproductionrfl96bkr",searchKey:"xxf2f10385-5a54-4a18-bb48-fd8025d6b5d2",workflowProductKey:"xx3d1b8da5-d1e9-4989-bbed-264a248a9e22",workflowResourceKey:"xxf6a8b387-10f2-4660-af5d-6d304d0a789d",productKey:"xxfb161aa6-0fa0-419f-af37-9c6d7784bf76",familyProductKey:"xx1ecd2a4f-8391-4c70-b3c0-2d589bda56b7",familyResourceKey:"xx9dd85afc-64b6-4295-bc5d-eb8285f96d52",categoryProductKey:"xx2a299d60-2cf1-48ab-b9d5-94daeb25f1d6",categoryDetailKey:"xx61910369-c1ab-4df9-8d8a-3092b1323fcc",productRecommendationsKey:"xx107716c0-1ccd-4a61-8717-6ca36b6cdb0e",megaMenuPath:"/content/dam/danaher/system/navigation/megamenu_items_us.json",coveoProductPageTitle:"Product Page",pdfEmbedKey:"4a472c386025439d8a4ce2493557f6e7",host:"lifesciences.danaher.com",scene7host:"https://danaherls.scene7.com"}}else{window.DanaherConfig={siteID:"ls-us-en",gtmID:"GTM-KCBGM2N",munchkinID:"439-KNJ-322",marketoDomain:"//439-KNJ-322.mktoweb.com",quoteCartPath:"/us/en/quote-cart.html",cartPath:"/us/en/cart.html",addressesPath:"/us/en/addresses.html",shippingPath:"/us/en/shipping.html",paymentPath:"/us/en/payment.html",receiptPath:"/us/en/receipt.html",quoteSubmitPath:"/us/en/submit-quote.html",intershopDomain:"https://stage.shop.lifesciences.danaher.com",intershopPath:"/INTERSHOP/rest/WFS/DANAHERLS-LSIG-Site/-",searchOrg:"danahernonproduction1892f3fhz",searchKey:"xx2a2e7271-78c3-4e3b-bac3-2fcbab75323b",workflowProductKey:"xx26ffc727-cc72-4bbd-98e3-34052f296382",workflowResourceKey:"xx14676f1d-cf4a-4a38-94f0-eda56e9920f1",productKey:"xx32da148e-dfd0-4725-a443-c05a7793afea",familyProductKey:"xx4e3989d6-93aa-4140-a227-19da35fcd1cc",familyResourceKey:"xx8274a91e-b29c-4267-8b3a-5022a2698605",categoryProductKey:"xxdf9d160d-f6e5-4c8c-969b-8570d7b81418",categoryDetailKey:"xxf2ea9bfd-bccb-4195-90fd-7757504fdc33",productRecommendationsKey:"xxea4d2c40-26e7-4e98-9377-d8ebe3f435ea",megaMenuPath:"/content/dam/danaher/system/navigation/megamenu_items_us.json",coveoProductPageTitle:"Product Page",pdfEmbedKey:"4a472c386025439d8a4ce2493557f6e7",host:"stage.lifesciences.danaher.com",scene7host:"https://s7d9.scene7.com"}}window.dataLayer=[];window.dataLayer.push({user:{customerID:"",accountType:"guest",marketCode:"",company:"",role:"",city:"",state:"",country:"",postalCode:"",lastVisit:""}});window.dataLayer.push({page:getDLPage()});loadPage(); \ No newline at end of file +import{sampleRUM,loadHeader,loadFooter,decorateButtons,decorateIcons,decorateSections,decorateBlocks,decorateTemplateAndTheme,waitForLCP,loadBlocks,loadCSS,toClassName,getMetadata,createOptimizedPicture,loadBlock,decorateBlock}from"./lib-franklin.js";import{div,domEl,img}from"./dom-builder.js";const LCP_BLOCKS=["breadcrumb","product-hero","carousel","columns"];const TEMPLATE_LIST={blog:{templateName:"blog",dependencies:["./schema.js","../blocks/columns/columns.js","../blocks/social-media/social-media.js","../blocks/article-info/article-info.js"]},productdetail:{templateName:"productDetail",dependencies:["./commerce.js","./product-payload-builder.js","./schema.js"]},processstep:"processstep",topic:"topic",library:"library",info:"library"};TEMPLATE_LIST.news=TEMPLATE_LIST.blog;export function imageHelper(imageUrl,imageAlt,eager=false){if(imageUrl.indexOf(".scene7.com")>-1){return img({src:`${imageUrl}`,alt:imageAlt,loading:eager?"eager":"lazy",class:"mb-2 h-48 w-full object-cover"})}const cardImage=createOptimizedPicture(imageUrl,imageAlt,eager,[{width:"500"}]);cardImage.querySelector("img").className="mb-2 h-48 w-full object-cover";return cardImage}export function createOptimizedS7Picture(src,alt="",eager=false){if(src.startsWith("/is/image")||src.indexOf(".scene7.com")>-1){const picture=document.createElement("picture");picture.appendChild(img({src:`${src}?$danaher-mobile$`,fetchpriority:"high",alt:alt,loading:eager?"eager":"lazy"}));return picture}return img({src:src,alt:alt,loading:eager?"eager":"lazy"})}export function formatDateUTCSeconds(date,options={}){const dateObj=new Date(0);dateObj.setUTCSeconds(date);return dateObj.toLocaleDateString("en-US",{month:"short",day:"2-digit",year:"numeric",...options})}export function generateUUID(){return Math.floor(1e3+Math.random()*9e3)}let originalOffset=0;export function scrollJumpMenuFixed(pageJumpMenuContainer){if(!originalOffset){const rectPageTabs=pageJumpMenuContainer.getBoundingClientRect();originalOffset=rectPageTabs.top}if(window.scrollY>originalOffset){pageJumpMenuContainer.classList.add(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-jump-menu-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));document.querySelector(".page-jump-menu-container.fixed ul")?.classList.add("shadow-none","rounded-none");document.querySelectorAll(".page-jump-menu-container.fixed ul li")?.forEach((el=>{el?.firstElementChild?.classList.add("rounded-full");el?.firstElementChild?.querySelector("span.icon svg use")?.classList.add("stroke-danaherpurple-500")}));document.querySelector('.page-jump-menu-container.fixed li[aria-selected="true"] a span.icon svg')?.classList.add("stroke-white");pageJumpMenuContainer.classList.remove(..."[&_.page-jump-menu-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}else{pageJumpMenuContainer.classList.remove(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-jump-menu-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));document.querySelectorAll(".page-jump-menu-container ul li")?.forEach((el=>el?.firstElementChild?.classList.remove("rounded-full")));pageJumpMenuContainer.classList.add(..."[&_.page-jump-menu-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}}let pageTabsOriginalOffset=0;export function scrollPageTabFixed(pageTabsContainer){if(!pageTabsOriginalOffset){const rectPageTabs=pageTabsContainer.getBoundingClientRect();pageTabsOriginalOffset=rectPageTabs.top}if(window.scrollY>pageTabsOriginalOffset){pageTabsContainer.classList.add(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-tabs-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));pageTabsContainer.classList.remove(..."[&_.page-tabs-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}else{pageTabsContainer.classList.remove(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-tabs-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));pageTabsContainer.classList.add(..."[&_.page-tabs-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}}export function makePublicUrl(url){const isProd=window.location.hostname.includes("lifesciences.danaher.com");try{const newURL=new URL(url,window.location.origin);if(isProd){if(newURL.pathname.endsWith(".html")){return newURL.pathname}newURL.pathname+=".html";return newURL.pathname}if(newURL.pathname.endsWith(".html")){newURL.pathname=newURL.pathname.slice(0,-5);return newURL.pathname}return newURL.pathname}catch(error){console.error("Invalid URL:",error);return url}}export function setJsonLd(data,name){const existingScript=document.head.querySelector(`script[data-name="${name}"]`);if(existingScript){existingScript.innerHTML=JSON.stringify(data);return}const script=document.createElement("script");script.type="application/ld+json";script.innerHTML=JSON.stringify(data);script.dataset.name=name;document.head.appendChild(script)}function setFavicon(){const faviconLink=document.querySelector("link[rel*='icon']")||document.createElement("link");faviconLink.type="image/x-icon";faviconLink.rel="shortcut icon";faviconLink.href=`https://${window.location.hostname}/favicon.ico`;document.getElementsByTagName("head")[0].appendChild(faviconLink)}export async function getFragmentFromFile(url){const response=await fetch(url);if(!response.ok){console.error("error loading fragment details",response);return null}const text=await response.text();if(!text){console.error("fragment details empty",url);return null}return text}export function getCookie(cname){let value=decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(cname).replace(/[\\-\\.\\+\\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null;if(value&&(value.substring(0,1)==="{"&&value.substring(value.length-1,value.length)==="}"||value.substring(0,1)==="["&&value.substring(value.length-1,value.length)==="]")){try{value=JSON.parse(value)}catch(e){return value}}return value}export function isOTEnabled(){const otCookie=getCookie("OptanonConsent");if(typeof otCookie==="string"){return otCookie.includes("C0002:1")}return true}export function setCookie(cname,cvalue,expTime=30*1e3*60*60*24,path="/"){const today=new Date;today.setTime(today.getTime()+expTime);const expires="expires=".concat(today.toGMTString());const cookieString=cname.concat("=").concat(cvalue).concat(";").concat(expires).concat(";path=").concat(path);document.cookie=cookieString}async function buildVideo(main){const videoLinks=main.querySelectorAll('a[href*="youtube.com"],a[href*="vimeo.com"],a[href*="vidyard.com"]');if(videoLinks.length>0){const{default:decorateEmbed}=await import("../blocks/embed/embed.js");videoLinks.forEach((link=>{if(link.closest(".embed, .hero")==null){decorateEmbed(link.parentNode)}}))}}async function loadFonts(){await loadCSS(`${window.hlx.codeBasePath}/styles/fonts.css`);try{if(!window.location.hostname.includes("localhost"))sessionStorage.setItem("fonts-loaded","true")}catch(e){}}function loadBreadCrumb(){const header=document.querySelector("header");const breadcrumb=document.createElement("breadcrumb");if(window.location.pathname!=="/")header.after(breadcrumb)}function loadMobileMenu(){const breadcrumb=document.querySelector("breadcrumb");const mobileMunu=document.createElement("mobilemenu");const url=new URL(window.location.href);if(url.pathname.match(/\/us\/en\/products\/(family\/|sku\/|bundles\/)/)||url.pathname.match(/\/us\/en\/solutions\//)){breadcrumb.after(mobileMunu)}}function buildAutoBlocks(main){try{buildVideo(main)}catch(error){console.error("Auto Blocking failed",error)}}export function decorateModals(main){const ctaModalButton=main.querySelector(".show-modal-btn");const content=()=>ctaModalButton.getAttribute("data-dialog-message")?ctaModalButton.getAttribute("dialog-message"):"";ctaModalButton?.addEventListener("click",(async e=>{e.preventDefault();const{default:getModal}=await import("./modal.js");const customModal=await getModal("custom-modal",content,(modal=>{modal.querySelector('p[name="close"]')?.addEventListener("click",(()=>modal.close()))}));customModal.showModal()}))}function decorateTwoColumnSection(main){const dcwElements=div();const defaultContentWrappers=main.querySelectorAll(".default-content-wrapper");defaultContentWrappers.forEach((contentWrapper=>{[...contentWrapper.children].forEach((child=>{dcwElements.appendChild(child)}));let nextElement=contentWrapper.nextSibling;const allBlocks=[];while(nextElement){if(nextElement.className.includes("-wrapper"))allBlocks.push(nextElement);nextElement=nextElement.nextSibling}dcwElements.append(...allBlocks)}));main.querySelectorAll(".section.container-two-col").forEach((section=>{const newSection=div();let currentDiv=null;let additionalDiv=null;[...dcwElements.children].forEach((child=>{if(child.tagName==="H1"){newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-0 mt-4"}));currentDiv=div({class:"col-right w-full mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10"})}const childClone=child.cloneNode(true);if(childClone.tagName==="H2"&&childClone.querySelector(":scope > strong")){if(currentDiv?.classList.contains("col-right")){currentDiv?.querySelectorAll("h2").forEach((h2=>{h2.classList.add("mt-0")}));newSection.appendChild(currentDiv)}childClone.className="text-gray-900 !text-base leading-6 font-bold pt-6 pb-4 my-0";newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-0 mt-4"},childClone,domEl("hr",{style:"height: 10px; width: 54px; border-width: 0px; color: rgb(216, 244, 250); background-color: rgb(216, 244, 250);"})));currentDiv=div({class:"col-right w-full mt-4 lg:w-2/3 xl:w-3/4 pt-6 pb-10"})}else if(currentDiv?.classList.contains("col-right")){currentDiv?.querySelectorAll("h2").forEach((h2=>{h2.classList.add("mt-0")}));currentDiv.appendChild(childClone)}}));[...section.children].forEach((child=>{if(child.tagName==="DIV"){additionalDiv=div({class:"col-right w-full mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10"})}const childClone=child.cloneNode(true);additionalDiv.appendChild(childClone)}));if(currentDiv){newSection.appendChild(currentDiv)}if(additionalDiv){newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-0 mt-4"}));newSection.appendChild(additionalDiv)}newSection.classList.add("w-full","flex","flex-wrap","break-normal");section.innerHTML=newSection.outerHTML;section.classList.add("mx-auto","w-full","flex","flex-wrap","mb-5")}))}function updateExternalLinks(main){const REFERERS=[window.location.origin];main.querySelectorAll("a[href]").forEach((a=>{try{const{origin:origin,pathname:pathname,hash:hash}=new URL(a.href,window.location.href);const targetHash=hash&&hash.startsWith("#_");const isPDF=pathname.split(".").pop()==="pdf";if(origin&&origin!==window.location.origin&&!targetHash||isPDF){a.setAttribute("target","_blank");if(!REFERERS.includes(origin))a.setAttribute("rel","noopener")}else if(targetHash){a.setAttribute("target",hash.replace("#",""));a.href=a.href.replace(hash,"")}}catch(e){console.warn(`Invalid link in ${main}: ${a.href}`)}}))}function lazyLoadHiddenPageNavTabs(sections,nameOfFirstSection){const activeHash=window.location.hash;const active=activeHash?activeHash.substring(1,activeHash.length).toLowerCase():nameOfFirstSection;sections.forEach((section=>{const hasBreadCrumb=section.className.includes("breadcrumb-container");if(!hasBreadCrumb&§ion.getAttribute("aria-labelledby")!==active){section.querySelectorAll(".block").forEach((block=>{block.setAttribute("data-block-status","loaded");block.setAttribute("data-block-lazy-load",true);block.parentElement.style.display="none"}));const loadLazyBlocks=lazySection=>{lazySection.querySelectorAll(".block[data-block-lazy-load]").forEach((async block=>{block.removeAttribute("data-block-lazy-load");block.setAttribute("data-block-status","initialized");await loadBlock(block);block.parentElement.style.display=""}));section.setAttribute("data-section-status","loaded")};const observer=new IntersectionObserver((entries=>{if(entries.some((e=>e.isIntersecting))){observer.disconnect();loadLazyBlocks(section)}}));observer.observe(section);setTimeout((()=>{observer.disconnect();loadLazyBlocks(section)}),5e3)}}))}function decoratePageNav(main){const pageTabsBlock=main.querySelector(".page-tabs");if(!pageTabsBlock)return;const pageTabSection=pageTabsBlock.closest("div.section");let sections=[...main.querySelectorAll("div.section")];sections=sections.slice(sections.indexOf(pageTabSection)+1);const namedSections=sections.filter((section=>section.hasAttribute("data-tabname")));let index=0;sections.forEach((section=>{if(indeximport(dep)))]).then((([mod])=>mod.default));if(decorator){await decorator(main)}document.body.classList.add(templateName)}}catch(error){console.error("Auto Blocking failed",error)}}function decorateEmbeddedBlocks(container){container.querySelectorAll("div.section > div").forEach(decorateBlock)}export async function processEmbedFragment(element){const block=div({class:"embed-fragment"});[...element.classList].forEach((className=>{block.classList.add(className)}));const link=element.textContent;if(link){const fragment=await getFragmentFromFile(`${link}.plain.html`);if(fragment){block.innerHTML=fragment;const sections=block.querySelectorAll(".embed-fragment > div");[...sections].forEach((section=>{section.classList.add("section")}));decorateEmbeddedBlocks(block);decorateSections(block);loadBlocks(block)}else{const elementInner=element.innerHTML;block.append(div({class:"section"}));block.querySelector(".section").innerHTML=elementInner}}decorateButtons(block);decorateIcons(block);return block}function loadATPageParams(){const id=window.location.pathname.replaceAll("/","_").replace(/\.html$/,"").substring(1);const skuId=getMetadata("sku");const categoryId=getMetadata("fullcategory").split("|").pop();const thumbnailURL=getMetadata("og:image");const title=getMetadata("og:title");const name=title.indexOf("| Danaher Life Sciences")>-1?title.split("| Danaher Life Sciences")[0]:title;const message=getMetadata("og:description");const pageUrl=getMetadata("og:url");const brand=getMetadata("brand");const page=window.location.pathname.split("/")[3];const tags=getMetadata("article:tag");const articleAuthor=getMetadata("authorname");const articlePostDate=getMetadata("publishdate");const articleReadTime=getMetadata("readingtime");const targetParams={id:id,skuId:skuId,categoryId:categoryId,thumbnailURL:thumbnailURL,name:name,message:message,pageUrl:pageUrl,brand:brand,page:page,tags:tags,articleAuthor:articleAuthor,articlePostDate:articlePostDate,articleReadTime:articleReadTime};return targetParams}function initATJS(path,config){window.targetGlobalSettings=config;window.atPageParams=loadATPageParams();window.targetPageParams=function getTargetPageParams(){return{at_property:"6aeb619e-92d9-f4cf-f209-6d88ff58af6a","entity.id":window.atPageParams?.id,"entity.skuId":window.atPageParams?.skuId,"entity.categoryId":window.atPageParams?.categoryId,"entity.thumbnailURL":window.atPageParams?.thumbnailURL,"entity.name":window.atPageParams?.name,"entity.message":window.atPageParams?.message,"entity.pageUrl":window.atPageParams?.pageUrl,"entity.brand":window.atPageParams?.brand,"entity.page":window.atPageParams?.page,"entity.tags":window.atPageParams?.tags,"entity.articleAuthor":window.atPageParams?.articleAuthor,"entity.articlePostDate":window.atPageParams?.articlePostDate,"entity.articleReadTime":window.atPageParams?.articleReadTime,danaherCompany:localStorage.getItem("danaher_company")?localStorage.getItem("danaher_company"):"",utmCampaign:localStorage.getItem("danaher_utm_campaign")?localStorage.getItem("danaher_utm_campaign"):"",utmSource:localStorage.getItem("danaher_utm_source")?localStorage.getItem("danaher_utm_source"):"",utmMedium:localStorage.getItem("danaher_utm_medium")?localStorage.getItem("danaher_utm_medium"):"",utmContent:localStorage.getItem("danaher_utm_content")?localStorage.getItem("danaher_utm_content"):""}};return new Promise((resolve=>{import(path).then(resolve)}))}function onDecoratedElement(fn){if(document.querySelector('[data-block-status="loaded"],[data-section-status="loaded"]')){fn()}const observer=new MutationObserver((mutations=>{if(mutations.some((m=>m.target.tagName==="BODY"||m.target.dataset.sectionStatus==="loaded"||m.target.dataset.blockStatus==="loaded"))){fn()}}));observer.observe(document.querySelector("main"),{subtree:true,attributes:true,attributeFilter:["data-block-status","data-section-status"]});observer.observe(document.querySelector("body"),{childList:true})}function toCssSelector(selector){return selector.replace(/(\.\S+)?:eq\((\d+)\)/g,((_,clss,i)=>`:nth-child(${Number(i)+1}${clss?` of ${clss})`:""}`))}async function getElementForOffer(offer){const selector=offer.cssSelector||toCssSelector(offer.selector);return document.querySelector(selector)}async function getElementForMetric(metric){const selector=toCssSelector(metric.selector);return document.querySelector(selector)}async function getAndApplyOffers(){const response=await window.adobe.target.getOffers({request:{execute:{pageLoad:{}}}});const{options:options=[],metrics:metrics=[]}=response.execute.pageLoad;onDecoratedElement((()=>{window.adobe.target.applyOffers({response:response});options.forEach((o=>o.content=o.content.filter((c=>!getElementForOffer(c)))));metrics.map(((m,i)=>getElementForMetric(m)?i:-1)).filter((i=>i>=0)).reverse().map((i=>metrics.splice(i,1)))}))}let atjsPromise=Promise.resolve();const urlTarget=window.location.pathname;const regex=/^\/(us\/en\/products\.html)?$/;if(!regex.test(urlTarget)){atjsPromise=initATJS("./at.js",{clientCode:"danaher",serverDomain:"danaher.tt.omtrdc.net",imsOrgId:"08333E7B636A2D4D0A495C34@AdobeOrg",bodyHidingEnabled:false,cookieDomain:window.location.hostname,pageLoadEnabled:false,secureOnly:true,viewsEnabled:false,withWebGLRenderer:false}).catch((e=>{console.error("Error loading at.js",e)}));document.addEventListener("at-library-loaded",(()=>getAndApplyOffers()))}async function loadEager(doc){document.documentElement.lang="en";decorateTemplateAndTheme();await window.hlx.plugins.run("loadEager");const main=doc.querySelector("main");if(main){await decorateTemplates(main);decorateMain(main);await atjsPromise;await new Promise((resolve=>{window.requestAnimationFrame((async()=>{document.body.classList.add("appear");await waitForLCP(LCP_BLOCKS);resolve()}))}))}try{if(window.innerWidth>=900||sessionStorage.getItem("fonts-loaded")){loadFonts()}}catch(e){}}function getParameterByName(parameter,url=window.location.href){const modifiedParameter=parameter.replace(/[[\]]/g,"$&");const paramRegex=new RegExp(`[?&]${modifiedParameter}(=([^&#]*)|&|#|$)`);const results=paramRegex.exec(url);if(!results)return null;if(!results[2])return"";return decodeURIComponent(results[2].replace(/\+/g," "))}function loadUTMprams(){const utmParameters=["utm_campaign","utm_source","utm_medium","utm_content","utm_term","utm_previouspage"];utmParameters.forEach((param=>{const value=getParameterByName(param);if(value!==null){window.localStorage.setItem(`danaher_${param}`,value)}}))}async function loadLazy(doc){const main=doc.querySelector("main");await loadBlocks(main);const{hash:hash}=window.location;const element=hash?doc.getElementById(hash.substring(1)):false;if(hash&&element)element.scrollIntoView();loadFooter(doc.querySelector("footer"));loadCSS(`${window.hlx.codeBasePath}/styles/lazy-styles.css`);loadFonts();window.hlx.plugins.run("loadLazy");sampleRUM("lazy");sampleRUM.observe(main.querySelectorAll("div[data-block-name]"));sampleRUM.observe(main.querySelectorAll("picture > img"));loadUTMprams()}function loadDelayed(){window.setTimeout((()=>{window.hlx.plugins.load("delayed");window.hlx.plugins.run("loadDelayed");return import("./delayed.js")}),4e3)}async function loadPage(){setFavicon();await window.hlx.plugins.load("eager");await loadEager(document);await window.hlx.plugins.load("lazy");await loadLazy(document);loadDelayed()}function getDLPage(){const page={title:document.querySelector("title").textContent.replace(/[\n\t]/gm,""),language:"en",locale:"US",level:"top",type:"webpage",keywords:"",creationDate:getMetadata("creationdate"),updateDate:getMetadata("updatedate")};const path=window.location.pathname;if(path==="/"||path==="/us/en"||path==="/us/en.html"){page.level="top";page.type="home"}else if(path.includes("/us/en/news")){page.level="top";page.type="news"}else if(path.includes("/us/en/blog")){page.level="middle";page.type="blog"}else if(path.includes("/us/en/solutions")){page.level="middle";page.type="solutions"}else if(path.includes("/us/en/applications")){page.level="middle";page.type="applications"}else if(path.includes("/us/en/products")){if(path.includes("/us/en/products/family")){page.level="bottom";page.type="family"}else if(path.includes("/us/en/products/bundles")){page.level="bottom";page.type="bundles"}else if(path.includes("/us/en/products/sku")){page.level="bottom";page.type="sku"}else if(path.includes("/topics")){page.level="other";page.type="topics"}else{page.level="bottom";page.type="products"}}else if(path.includes("/us/en/library")){page.level="other";page.type="library"}else if(path.includes("/us/en/about-us")){page.level="top";page.type="about-us"}else if(path.includes("/us/en/expert")){page.level="top";page.type="expert"}else if(path.includes("/us/en/search")||path.includes("/us/en/danahersearch")){page.level="top";page.type="search"}else if(path.includes("/us/en/signin")){page.level="top";page.type="signin"}else if(path.includes("/us/en/legal")){page.level="top";page.type="legal"}return page}const urlParams=new URLSearchParams(window.location.search);const useProd=urlParams.get("useProd");if(window.location.host==="lifesciences.danaher.com"||useProd==="true"){window.DanaherConfig={siteID:"ls-us-en",gtmID:"GTM-THXPLCS",munchkinID:"306-EHG-641",marketoDomain:"//306-EHG-641.mktoweb.com",quoteCartPath:"/us/en/quote-cart.html",cartPath:"/us/en/cart.html",addressesPath:"/us/en/addresses.html",shippingPath:"/us/en/shipping.html",paymentPath:"/us/en/payment.html",receiptPath:"/us/en/receipt.html",quoteSubmitPath:"/us/en/submit-quote.html",intershopDomain:"https://shop.lifesciences.danaher.com",intershopPath:"/INTERSHOP/rest/WFS/DANAHERLS-LSIG-Site/-",searchOrg:"danaherproductionrfl96bkr",searchKey:"xxf2f10385-5a54-4a18-bb48-fd8025d6b5d2",workflowProductKey:"xx3d1b8da5-d1e9-4989-bbed-264a248a9e22",workflowResourceKey:"xxf6a8b387-10f2-4660-af5d-6d304d0a789d",productKey:"xxfb161aa6-0fa0-419f-af37-9c6d7784bf76",familyProductKey:"xx1ecd2a4f-8391-4c70-b3c0-2d589bda56b7",familyResourceKey:"xx9dd85afc-64b6-4295-bc5d-eb8285f96d52",categoryProductKey:"xx2a299d60-2cf1-48ab-b9d5-94daeb25f1d6",categoryDetailKey:"xx61910369-c1ab-4df9-8d8a-3092b1323fcc",productRecommendationsKey:"xx107716c0-1ccd-4a61-8717-6ca36b6cdb0e",megaMenuPath:"/content/dam/danaher/system/navigation/megamenu_items_us.json",coveoProductPageTitle:"Product Page",pdfEmbedKey:"4a472c386025439d8a4ce2493557f6e7",host:"lifesciences.danaher.com",scene7host:"https://danaherls.scene7.com"}}else{window.DanaherConfig={siteID:"ls-us-en",gtmID:"GTM-KCBGM2N",munchkinID:"439-KNJ-322",marketoDomain:"//439-KNJ-322.mktoweb.com",quoteCartPath:"/us/en/quote-cart.html",cartPath:"/us/en/cart.html",addressesPath:"/us/en/addresses.html",shippingPath:"/us/en/shipping.html",paymentPath:"/us/en/payment.html",receiptPath:"/us/en/receipt.html",quoteSubmitPath:"/us/en/submit-quote.html",intershopDomain:"https://stage.shop.lifesciences.danaher.com",intershopPath:"/INTERSHOP/rest/WFS/DANAHERLS-LSIG-Site/-",searchOrg:"danahernonproduction1892f3fhz",searchKey:"xx2a2e7271-78c3-4e3b-bac3-2fcbab75323b",workflowProductKey:"xx26ffc727-cc72-4bbd-98e3-34052f296382",workflowResourceKey:"xx14676f1d-cf4a-4a38-94f0-eda56e9920f1",productKey:"xx32da148e-dfd0-4725-a443-c05a7793afea",familyProductKey:"xx4e3989d6-93aa-4140-a227-19da35fcd1cc",familyResourceKey:"xx8274a91e-b29c-4267-8b3a-5022a2698605",categoryProductKey:"xxdf9d160d-f6e5-4c8c-969b-8570d7b81418",categoryDetailKey:"xxf2ea9bfd-bccb-4195-90fd-7757504fdc33",productRecommendationsKey:"xxea4d2c40-26e7-4e98-9377-d8ebe3f435ea",megaMenuPath:"/content/dam/danaher/system/navigation/megamenu_items_us.json",coveoProductPageTitle:"Product Page",pdfEmbedKey:"4a472c386025439d8a4ce2493557f6e7",host:"stage.lifesciences.danaher.com",scene7host:"https://s7d9.scene7.com"}}window.dataLayer=[];window.dataLayer.push({user:{customerID:"",accountType:"guest",marketCode:"",company:"",role:"",city:"",state:"",country:"",postalCode:"",lastVisit:""}});window.dataLayer.push({page:getDLPage()});loadPage(); \ No newline at end of file diff --git a/styles/styles.css b/styles/styles.css index 77ed3323d..b19052868 100644 --- a/styles/styles.css +++ b/styles/styles.css @@ -715,13 +715,7 @@ main .section:not(.stretch, .product-hero-container, .workflow-carousel-containe padding-top: 3rem; padding-bottom: 3rem; } -} -main .section.carousel-container { - padding: 0px; -} - -@media (min-width: 768px) { main .section > div:not(.carousel-wrapper, .page-jump-menu-wrapper, .page-tabs-wrapper) { margin-left: auto; margin-right: auto; @@ -2332,18 +2326,6 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica border-width: 2px; } -.border-b { - border-bottom-width: 1px; -} - -.border-t { - border-top-width: 1px; -} - -.border-solid { - border-style: solid; -} - .border-danaherpurple-500 { --tw-border-opacity: 1; border-color: rgb(117 35 255 / var(--tw-border-opacity)); @@ -2359,11 +2341,6 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica border-color: rgb(239 68 68 / var(--tw-border-opacity)); } -.border-black { - --tw-border-opacity: 1; - border-color: rgb(0 0 0 / var(--tw-border-opacity)); -} - .bg-danaherlightblue-50 { --tw-bg-opacity: 1; background-color: rgb(239 251 253 / var(--tw-bg-opacity)); @@ -2483,22 +2460,18 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica padding-right: 0.75rem; } -.pt-12 { - padding-top: 3rem; +.pt-0 { + padding-top: 0px; } -.pt-4 { - padding-top: 1rem; +.pt-12 { + padding-top: 3rem; } .pt-6 { padding-top: 1.5rem; } -.pt-0 { - padding-top: 0px; -} - .text-left { text-align: left; } @@ -2787,10 +2760,6 @@ main .section.top-border { } @media (min-width: 768px) { - .md\:mt-4 { - margin-top: 1rem; - } - .md\:pb-10 { padding-bottom: 2.5rem; } @@ -2809,10 +2778,6 @@ main .section.top-border { grid-column: span 4 / span 4; } - .lg\:mt-0 { - margin-top: 0px; - } - .lg\:w-1\/3 { width: 33.333333%; } diff --git a/styles/tailwind.css b/styles/tailwind.css index 7fc99254d..a9e42533d 100644 --- a/styles/tailwind.css +++ b/styles/tailwind.css @@ -92,10 +92,6 @@ @apply px-6 py-8 md:py-12; } - main .section.carousel-container { - @apply p-0; - } - main .section > div:not(.carousel-wrapper, .page-jump-menu-wrapper, .page-tabs-wrapper) { @apply md:max-w-7xl md:mx-auto; } From 1a6923564970ae8bf5c685c9bf115b2a187ccb24 Mon Sep 17 00:00:00 2001 From: wz914876 Date: Mon, 24 Jun 2024 16:28:57 +0530 Subject: [PATCH 15/29] 1175 [Bug] Template Page showing in index list --- blocks/card-list/card-list.js | 1 + 1 file changed, 1 insertion(+) diff --git a/blocks/card-list/card-list.js b/blocks/card-list/card-list.js index b9742c305..13dd8eaa5 100644 --- a/blocks/card-list/card-list.js +++ b/blocks/card-list/card-list.js @@ -153,6 +153,7 @@ export default async function decorate(block) { const articles = await ffetch('/us/en/article-index.json') .chunks(500) .filter(({ type }) => type.toLowerCase() === articleType) + .filter((article) => !article.path.includes('/topics-template')) .all(); let filteredArticles = articles; const activeTagFilter = block.classList.contains('url-filtered') ? getSelectionFromUrl() : ''; From 2b7619814d266a431b8f450dba1894f92cbd2153 Mon Sep 17 00:00:00 2001 From: Dave Nichols Date: Mon, 24 Jun 2024 16:57:49 +0100 Subject: [PATCH 16/29] Fixed issue with padding on mobile --- styles/styles.css | 6 ++++-- styles/tailwind.css | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/styles/styles.css b/styles/styles.css index 04d209087..d12c9fdf6 100644 --- a/styles/styles.css +++ b/styles/styles.css @@ -1078,8 +1078,10 @@ header { color: rgb(55 65 81 / var(--tw-text-opacity)); } -.topic main .section.social-media-container, main .section.takeway-container, main .section.call-to-action-container { - padding: 0px; +@media (min-width: 1024px) { + .topic main .section.social-media-container, main .section.takeway-container, main .section.call-to-action-container { + padding: 0px; + } } .processstep main .default-content-wrapper.section.side-nav-container { diff --git a/styles/tailwind.css b/styles/tailwind.css index 7fc99254d..77f1b689c 100644 --- a/styles/tailwind.css +++ b/styles/tailwind.css @@ -227,7 +227,7 @@ } .topic main .section.social-media-container, main .section.takeway-container, main .section.call-to-action-container { - @apply p-0; + @apply lg:p-0; } .processstep main .default-content-wrapper.section.side-nav-container { From 08d06c20650f0ebc332daf4e949b09ceb06635be Mon Sep 17 00:00:00 2001 From: Dave Nichols Date: Mon, 24 Jun 2024 17:00:15 +0100 Subject: [PATCH 17/29] Updated padding to fix on mobile and tablet screens --- styles/styles.css | 2 +- styles/tailwind.css | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/styles/styles.css b/styles/styles.css index d12c9fdf6..a6c386212 100644 --- a/styles/styles.css +++ b/styles/styles.css @@ -1078,7 +1078,7 @@ header { color: rgb(55 65 81 / var(--tw-text-opacity)); } -@media (min-width: 1024px) { +@media (min-width: 1280px) { .topic main .section.social-media-container, main .section.takeway-container, main .section.call-to-action-container { padding: 0px; } diff --git a/styles/tailwind.css b/styles/tailwind.css index 77f1b689c..c2ac08979 100644 --- a/styles/tailwind.css +++ b/styles/tailwind.css @@ -227,7 +227,7 @@ } .topic main .section.social-media-container, main .section.takeway-container, main .section.call-to-action-container { - @apply lg:p-0; + @apply xl:p-0; } .processstep main .default-content-wrapper.section.side-nav-container { From ab8df4b58d35fff223490bff2c5ebc6dff1ad9b8 Mon Sep 17 00:00:00 2001 From: Dave Nichols Date: Mon, 24 Jun 2024 19:17:13 +0100 Subject: [PATCH 18/29] Changed to 2XL for bigger tablets and smaller screens. --- styles/styles.css | 2 +- styles/tailwind.css | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/styles/styles.css b/styles/styles.css index a6c386212..86c27d37b 100644 --- a/styles/styles.css +++ b/styles/styles.css @@ -1078,7 +1078,7 @@ header { color: rgb(55 65 81 / var(--tw-text-opacity)); } -@media (min-width: 1280px) { +@media (min-width: 1536px) { .topic main .section.social-media-container, main .section.takeway-container, main .section.call-to-action-container { padding: 0px; } diff --git a/styles/tailwind.css b/styles/tailwind.css index c2ac08979..824f6f1a1 100644 --- a/styles/tailwind.css +++ b/styles/tailwind.css @@ -227,7 +227,7 @@ } .topic main .section.social-media-container, main .section.takeway-container, main .section.call-to-action-container { - @apply xl:p-0; + @apply 2xl:p-0; } .processstep main .default-content-wrapper.section.side-nav-container { From 89f03b48ead2a367cc81f8f4e72e5ab66efdd0e7 Mon Sep 17 00:00:00 2001 From: Dave Nichols Date: Tue, 25 Jun 2024 16:10:53 +0100 Subject: [PATCH 19/29] Updating the heading sizes for mobile. --- styles/styles.css | 26 +++++++++++++++++++++++--- styles/tailwind.css | 6 +++--- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/styles/styles.css b/styles/styles.css index 86c27d37b..5fc6397d8 100644 --- a/styles/styles.css +++ b/styles/styles.css @@ -476,23 +476,43 @@ h1, h2, h3, h4, h5, h6 { } h1 { - font-size: 2.5rem !important; + font-size: 2.25rem !important; font-weight: 500 !important; line-height: 3rem !important; } +@media (min-width: 768px) { + h1 { + font-size: 2.5rem !important; + } +} + h2 { - font-size: 1.875rem !important; + font-size: 1.5rem !important; font-weight: 500 !important; line-height: 2.25rem !important; } +@media (min-width: 768px) { + h2 { + font-size: 1.875rem !important; + line-height: 2.25rem !important; + } +} + h3 { - font-size: 1.5rem !important; + font-size: 1.25rem !important; font-weight: 500 !important; line-height: 2rem !important; } +@media (min-width: 768px) { + h3 { + font-size: 1.5rem !important; + line-height: 2rem !important; + } +} + h4 { font-size: 1.25rem; font-weight: 500 !important; diff --git a/styles/tailwind.css b/styles/tailwind.css index 824f6f1a1..a24352dee 100644 --- a/styles/tailwind.css +++ b/styles/tailwind.css @@ -30,15 +30,15 @@ } h1 { - @apply !leading-12 !font-medium !text-4xl2; + @apply !leading-12 !font-medium !text-4xl md:!text-4xl2; } h2 { - @apply !leading-9 !font-medium !text-3xl; + @apply !leading-9 !font-medium !text-2xl md:!text-3xl; } h3 { - @apply !leading-8 !font-medium !text-2xl; + @apply !leading-8 !font-medium !text-xl md:!text-2xl; } h4 { From baf3c414c247e481739962042b1fbd4110dbe08a Mon Sep 17 00:00:00 2001 From: Dave Nichols Date: Tue, 25 Jun 2024 16:16:01 +0100 Subject: [PATCH 20/29] Removing header image in Blogs and News from mobile to see LHS --- blocks/columns/columns.css | 16 ++- blocks/columns/columns.js | 4 +- styles/styles.css | 286 +++++++++++++++++++++++++++++++++++++ 3 files changed, 300 insertions(+), 6 deletions(-) diff --git a/blocks/columns/columns.css b/blocks/columns/columns.css index 02be7e102..21cbc4c11 100644 --- a/blocks/columns/columns.css +++ b/blocks/columns/columns.css @@ -120,6 +120,10 @@ display: grid; } +.columns-wrapper :is(.hidden) { + display: none; +} + .columns-wrapper :is(.h-12) { height: 3rem; } @@ -303,10 +307,6 @@ padding-left: 2.5rem; } -.columns-wrapper :is(.pr-16) { - padding-right: 4rem; -} - .columns-wrapper :is(.align-text-top) { vertical-align: text-top; } @@ -429,9 +429,17 @@ bottom: 0px; } + .columns-wrapper :is(.md\:block) { + display: block; + } + .columns-wrapper :is(.md\:h-\[27rem\]) { height: 27rem; } + + .columns-wrapper :is(.md\:pr-16) { + padding-right: 4rem; + } } @media (min-width: 1024px) { diff --git a/blocks/columns/columns.js b/blocks/columns/columns.js index 5b625fbc3..0304d406e 100644 --- a/blocks/columns/columns.js +++ b/blocks/columns/columns.js @@ -57,7 +57,7 @@ export default function decorate(block) { }; } else if (!block.className.includes('itemscenter')) { if (window.location.pathname.includes('/us/en/blog/') || window.location.pathname.includes('/us/en/news/')) { - row.classList.add('h-full', 'lg:w-1/2', 'pr-16'); + row.classList.add('h-full', 'lg:w-1/2', 'md:pr-16'); row.querySelectorAll('h1').forEach((ele) => { ele.classList.add('pb-4'); }); @@ -130,7 +130,7 @@ export default function decorate(block) { if (picWrapper && picWrapper.children.length === 1) { // picture is only content in column if (window.location.pathname.includes('/us/en/blog/') || window.location.pathname.includes('/us/en/news/')) { - picWrapper.classList.add(...'columns-img-col order-none relative h-48 md:h-[27rem] block lg:absolute md:inset-y-0 lg:inset-y-0 lg:right-2 lg:w-1/2 lg:mt-56'.split(' ')); + picWrapper.classList.add(...'hidden md:block columns-img-col order-none relative h-48 md:h-[27rem] block lg:absolute md:inset-y-0 lg:inset-y-0 lg:right-2 lg:w-1/2 lg:mt-56'.split(' ')); pic.querySelector('img').classList.add(...'absolute bottom-0 h-full w-full object-cover'.split(' ')); } else { picWrapper.classList.add('columns-img-col', 'order-none'); diff --git a/styles/styles.css b/styles/styles.css index 5fc6397d8..2bf74084c 100644 --- a/styles/styles.css +++ b/styles/styles.css @@ -681,6 +681,39 @@ main .default-content-wrapper h2 { } } +.href-text a { + position: relative; + z-index: 0; + text-decoration-line: underline; + text-decoration-color: #7523FF; + text-decoration-thickness: 2px; + text-underline-offset: 4px; + text-decoration-style: solid; + word-break: break-all; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; + transition-duration: 500ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} + +.href-text a:hover { + color: rgb(255 255 255); + background-color: #7523FF; +} + +.btn-outline-trending-brand { + color: #7523FF; + background-color: rgb(255 255 255); + border-color: #7523FF; + border-width: 2px; +} + +.btn-outline-trending-brand:hover { + color: rgb(255 255 255); + background-color: #7523FF; +} + .carousel-wrapper .carousel, .product-recommendations-wrapper .product-recommendations { scrollbar-width: none; } @@ -875,6 +908,23 @@ main .section.carousel-container { color: rgb(255 255 255 / var(--tw-text-opacity)); } +.btn-outline-trending-brand { + border-width: 2px; + --tw-border-opacity: 1; + border-color: rgb(117 35 255 / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(117 35 255 / var(--tw-text-opacity)); +} + +.btn-outline-trending-brand:hover { + --tw-bg-opacity: 1; + background-color: rgb(117 35 255 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} + .container-two-col .col-right { font-size: 1rem; line-height: 1.75rem; @@ -2024,6 +2074,10 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica position: fixed; } +.absolute { + position: absolute; +} + .relative { position: relative; } @@ -2061,6 +2115,10 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica z-index: 9999; } +.order-none { + order: 0; +} + .m-0 { margin: 0px; } @@ -2080,6 +2138,11 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica margin-bottom: auto; } +.my-6 { + margin-top: 1.5rem; + margin-bottom: 1.5rem; +} + .mb-2 { margin-bottom: 0.5rem; } @@ -2135,6 +2198,10 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica display: block; } +.\!block { + display: block !important; +} + .inline { display: inline; } @@ -2183,6 +2250,10 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica height: 100%; } +.h-12 { + height: 3rem; +} + .w-10 { width: 2.5rem; } @@ -2207,6 +2278,10 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica width: 100%; } +.w-12 { + width: 3rem; +} + .max-w-7xl { max-width: 80rem; } @@ -2227,6 +2302,10 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica flex-shrink: 0; } +.shrink-0 { + flex-shrink: 0; +} + .transform { transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } @@ -2257,6 +2336,10 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica --tw-scroll-snap-strictness: mandatory; } +.list-disc { + list-style-type: disc; +} + .grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); } @@ -2265,6 +2348,10 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica flex-direction: column; } +.flex-col-reverse { + flex-direction: column-reverse; +} + .flex-wrap { flex-wrap: wrap; } @@ -2285,6 +2372,10 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica justify-content: space-between; } +.justify-items-center { + justify-items: center; +} + .gap-2 { gap: 0.5rem; } @@ -2302,12 +2393,32 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica row-gap: 3rem; } +.gap-x-12 { + -moz-column-gap: 3rem; + column-gap: 3rem; +} + +.gap-x-8 { + -moz-column-gap: 2rem; + column-gap: 2rem; +} + +.gap-y-4 { + row-gap: 1rem; +} + .space-y-4 > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0; margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); margin-bottom: calc(1rem * var(--tw-space-y-reverse)); } +.space-y-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); +} + .overflow-hidden { overflow: hidden; } @@ -2354,6 +2465,18 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica border-width: 2px; } +.border-0 { + border-width: 0px; +} + +.border-b { + border-bottom-width: 1px; +} + +.border-solid { + border-style: solid; +} + .border-danaherpurple-500 { --tw-border-opacity: 1; border-color: rgb(117 35 255 / var(--tw-border-opacity)); @@ -2369,6 +2492,11 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica border-color: rgb(239 68 68 / var(--tw-border-opacity)); } +.border-black { + --tw-border-opacity: 1; + border-color: rgb(0 0 0 / var(--tw-border-opacity)); +} + .bg-danaherlightblue-50 { --tw-bg-opacity: 1; background-color: rgb(239 251 253 / var(--tw-bg-opacity)); @@ -2399,6 +2527,20 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica background-color: rgb(255 255 255 / var(--tw-bg-opacity)); } +.bg-danaherblue-900 { + --tw-bg-opacity: 1; + background-color: rgb(6 28 68 / var(--tw-bg-opacity)); +} + +.bg-danaherred-800 { + --tw-bg-opacity: 1; + background-color: rgb(122 25 127 / var(--tw-bg-opacity)); +} + +.bg-transparent { + background-color: transparent; +} + .bg-opacity-10 { --tw-bg-opacity: 0.1; } @@ -2472,6 +2614,16 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica padding-bottom: 10rem; } +.px-5 { + padding-left: 1.25rem; + padding-right: 1.25rem; +} + +.py-0 { + padding-top: 0px; + padding-bottom: 0px; +} + .pb-0 { padding-bottom: 0px; } @@ -2500,6 +2652,18 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica padding-top: 1.5rem; } +.pb-7 { + padding-bottom: 1.75rem; +} + +.pb-8 { + padding-bottom: 2rem; +} + +.pl-10 { + padding-left: 2.5rem; +} + .text-left { text-align: left; } @@ -2508,6 +2672,10 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica vertical-align: middle; } +.align-text-top { + vertical-align: text-top; +} + .font-sans { font-family: TWK Lausanne, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -2546,6 +2714,15 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica line-height: 1rem; } +.text-4xl2 { + font-size: 2.5rem; +} + +.text-lg { + font-size: 1.125rem; + line-height: 1.75rem; +} + .font-bold { font-weight: 700; } @@ -2578,6 +2755,14 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica line-height: 1.5rem; } +.leading-10 { + line-height: 2.5rem; +} + +.leading-7 { + line-height: 1.75rem; +} + .tracking-tight { letter-spacing: -0.025em; } @@ -2636,6 +2821,29 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica color: rgb(255 255 255 / var(--tw-text-opacity)); } +.\!text-white { + --tw-text-opacity: 1 !important; + color: rgb(255 255 255 / var(--tw-text-opacity)) !important; +} + +.text-danahergray-700 { + --tw-text-opacity: 1; + color: rgb(55 65 81 / var(--tw-text-opacity)); +} + +.text-danahergray-900 { + --tw-text-opacity: 1; + color: rgb(17 24 39 / var(--tw-text-opacity)); +} + +.\!no-underline { + text-decoration-line: none !important; +} + +.no-underline { + text-decoration-line: none; +} + .shadow { --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); @@ -2671,6 +2879,16 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); } +.brightness-0 { + --tw-brightness: brightness(0); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); +} + +.invert { + --tw-invert: invert(100%); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); +} + .filter { filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); } @@ -2689,6 +2907,14 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica transition-duration: 150ms; } +.duration-150 { + transition-duration: 150ms; +} + +.ease-in-out { + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} + main .section.top-border { margin: auto; margin-top: 2.5rem; @@ -2725,6 +2951,11 @@ main .section.top-border { background-color: rgb(64 0 165 / var(--tw-bg-opacity)); } +.hover\:bg-danaherpurple-500:hover { + --tw-bg-opacity: 1; + background-color: rgb(117 35 255 / var(--tw-bg-opacity)); +} + .hover\:text-danaherblue-500:hover { --tw-text-opacity: 1; color: rgb(0 74 89 / var(--tw-text-opacity)); @@ -2788,10 +3019,23 @@ main .section.top-border { } @media (min-width: 768px) { + .md\:inset-y-0 { + top: 0px; + bottom: 0px; + } + .md\:mt-4 { margin-top: 1rem; } + .md\:block { + display: block; + } + + .md\:h-\[27rem\] { + height: 27rem; + } + .md\:pb-10 { padding-bottom: 2.5rem; } @@ -2799,9 +3043,26 @@ main .section.top-border { .md\:pb-24 { padding-bottom: 6rem; } + + .md\:pr-16 { + padding-right: 4rem; + } } @media (min-width: 1024px) { + .lg\:absolute { + position: absolute; + } + + .lg\:inset-y-0 { + top: 0px; + bottom: 0px; + } + + .lg\:right-2 { + right: 0.5rem; + } + .lg\:col-span-3 { grid-column: span 3 / span 3; } @@ -2810,10 +3071,19 @@ main .section.top-border { grid-column: span 4 / span 4; } + .lg\:my-4 { + margin-top: 1rem; + margin-bottom: 1rem; + } + .lg\:mt-0 { margin-top: 0px; } + .lg\:mt-56 { + margin-top: 14rem; + } + .lg\:w-1\/3 { width: 33.333333%; } @@ -2822,6 +3092,10 @@ main .section.top-border { width: 66.666667%; } + .lg\:w-1\/2 { + width: 50%; + } + .lg\:max-w-7xl { max-width: 80rem; } @@ -2830,6 +3104,18 @@ main .section.top-border { grid-template-columns: repeat(7, minmax(0, 1fr)); } + .lg\:grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .lg\:grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .lg\:flex-col-reverse { + flex-direction: column-reverse; + } + .lg\:px-8 { padding-left: 2rem; padding-right: 2rem; From fda9dd6909fdcbe3271bac499818af9ea01739d4 Mon Sep 17 00:00:00 2001 From: rgravitvl Date: Wed, 26 Jun 2024 12:48:15 +0530 Subject: [PATCH 21/29] Reverted the Two col section changes --- scripts/scripts-dev.js | 57 +++++++++++++++--------------------------- scripts/scripts.js | 2 +- styles/styles.css | 29 ++++++++------------- 3 files changed, 31 insertions(+), 57 deletions(-) diff --git a/scripts/scripts-dev.js b/scripts/scripts-dev.js index 1863cb6be..dfef256e7 100644 --- a/scripts/scripts-dev.js +++ b/scripts/scripts-dev.js @@ -354,71 +354,54 @@ export function decorateModals(main) { * @param {Element} main The main element */ function decorateTwoColumnSection(main) { - const dcwElements = div(); - const defaultContentWrappers = main.querySelectorAll('.default-content-wrapper'); - defaultContentWrappers.forEach((contentWrapper) => { - [...contentWrapper.children].forEach((child) => { - dcwElements.appendChild(child); - }); - let nextElement = contentWrapper.nextSibling; - const allBlocks = []; - while (nextElement) { - if (nextElement.className.includes('-wrapper')) allBlocks.push(nextElement); - nextElement = nextElement.nextSibling; - } - dcwElements.append(...allBlocks); - }); main.querySelectorAll('.section.container-two-col').forEach((section) => { + const defaultContentWrappers = section.querySelectorAll(':scope > .default-content-wrapper'); + defaultContentWrappers.forEach((contentWrapper) => { + [...contentWrapper.children].forEach((child) => { + section.appendChild(child); + }); + let nextElement = contentWrapper.nextSibling; + const allBlocks = []; + while (nextElement) { + if (nextElement.className.includes('-wrapper')) allBlocks.push(nextElement); + nextElement = nextElement.nextSibling; + } + section.append(...allBlocks); + section.removeChild(contentWrapper); + }); + const newSection = div(); let currentDiv = null; - let additionalDiv = null; - [...dcwElements.children].forEach((child) => { + [...section.children].forEach((child) => { if (child.tagName === 'H1') { newSection.appendChild( - div({ class: 'col-left lg:w-1/3 xl:w-1/4 pt-0 mt-4' }), + div({ class: 'col-left lg:w-1/3 xl:w-1/4 pt-4' }), ); - currentDiv = div({ class: 'col-right w-full mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10' }); + currentDiv = div({ class: 'col-right w-full mt-0 md:mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10' }); } const childClone = child.cloneNode(true); if (childClone.tagName === 'H2' && childClone.querySelector(':scope > strong')) { if (currentDiv?.classList.contains('col-right')) { - currentDiv?.querySelectorAll('h2').forEach((h2) => { - h2.classList.add('mt-0'); - }); newSection.appendChild(currentDiv); } childClone.className = 'text-gray-900 !text-base leading-6 font-bold pt-6 pb-4 my-0'; newSection.appendChild( div( - { class: 'col-left lg:w-1/3 xl:w-1/4 pt-0 mt-4' }, + { class: 'col-left lg:w-1/3 xl:w-1/4 pt-4' }, childClone, domEl('hr', { style: 'height: 10px; width: 54px; border-width: 0px; color: rgb(216, 244, 250); background-color: rgb(216, 244, 250);', }), ), ); - currentDiv = div({ class: 'col-right w-full mt-4 lg:w-2/3 xl:w-3/4 pt-6 pb-10' }); + currentDiv = div({ class: 'col-right w-full mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-10' }); } else if (currentDiv?.classList.contains('col-right')) { - currentDiv?.querySelectorAll('h2').forEach((h2) => { - h2.classList.add('mt-0'); - }); currentDiv.appendChild(childClone); } }); - [...section.children].forEach((child) => { - if (child.tagName === 'DIV') { - additionalDiv = div({ class: 'col-right w-full mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10' }); - } - const childClone = child.cloneNode(true); - additionalDiv.appendChild(childClone); - }); if (currentDiv) { newSection.appendChild(currentDiv); } - if (additionalDiv) { - newSection.appendChild(div({ class: 'col-left lg:w-1/3 xl:w-1/4 pt-0 mt-4' })); - newSection.appendChild(additionalDiv); - } newSection.classList.add('w-full', 'flex', 'flex-wrap', 'break-normal'); section.innerHTML = newSection.outerHTML; section.classList.add('mx-auto', 'w-full', 'flex', 'flex-wrap', 'mb-5'); diff --git a/scripts/scripts.js b/scripts/scripts.js index 65ff47a0d..c7cfd530f 100644 --- a/scripts/scripts.js +++ b/scripts/scripts.js @@ -1 +1 @@ -import{sampleRUM,loadHeader,loadFooter,decorateButtons,decorateIcons,decorateSections,decorateBlocks,decorateTemplateAndTheme,waitForLCP,loadBlocks,loadCSS,toClassName,getMetadata,createOptimizedPicture,loadBlock,decorateBlock}from"./lib-franklin.js";import{div,domEl,img}from"./dom-builder.js";const LCP_BLOCKS=["breadcrumb","product-hero","carousel","columns"];const TEMPLATE_LIST={blog:{templateName:"blog",dependencies:["./schema.js","../blocks/columns/columns.js","../blocks/social-media/social-media.js","../blocks/article-info/article-info.js"]},productdetail:{templateName:"productDetail",dependencies:["./commerce.js","./product-payload-builder.js","./schema.js"]},processstep:"processstep",topic:"topic",library:"library",info:"library"};TEMPLATE_LIST.news=TEMPLATE_LIST.blog;export function imageHelper(imageUrl,imageAlt,eager=false){if(imageUrl.indexOf(".scene7.com")>-1){return img({src:`${imageUrl}`,alt:imageAlt,loading:eager?"eager":"lazy",class:"mb-2 h-48 w-full object-cover"})}const cardImage=createOptimizedPicture(imageUrl,imageAlt,eager,[{width:"500"}]);cardImage.querySelector("img").className="mb-2 h-48 w-full object-cover";return cardImage}export function createOptimizedS7Picture(src,alt="",eager=false){if(src.startsWith("/is/image")||src.indexOf(".scene7.com")>-1){const picture=document.createElement("picture");picture.appendChild(img({src:`${src}?$danaher-mobile$`,fetchpriority:"high",alt:alt,loading:eager?"eager":"lazy"}));return picture}return img({src:src,alt:alt,loading:eager?"eager":"lazy"})}export function formatDateUTCSeconds(date,options={}){const dateObj=new Date(0);dateObj.setUTCSeconds(date);return dateObj.toLocaleDateString("en-US",{month:"short",day:"2-digit",year:"numeric",...options})}export function generateUUID(){return Math.floor(1e3+Math.random()*9e3)}let originalOffset=0;export function scrollJumpMenuFixed(pageJumpMenuContainer){if(!originalOffset){const rectPageTabs=pageJumpMenuContainer.getBoundingClientRect();originalOffset=rectPageTabs.top}if(window.scrollY>originalOffset){pageJumpMenuContainer.classList.add(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-jump-menu-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));document.querySelector(".page-jump-menu-container.fixed ul")?.classList.add("shadow-none","rounded-none");document.querySelectorAll(".page-jump-menu-container.fixed ul li")?.forEach((el=>{el?.firstElementChild?.classList.add("rounded-full");el?.firstElementChild?.querySelector("span.icon svg use")?.classList.add("stroke-danaherpurple-500")}));document.querySelector('.page-jump-menu-container.fixed li[aria-selected="true"] a span.icon svg')?.classList.add("stroke-white");pageJumpMenuContainer.classList.remove(..."[&_.page-jump-menu-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}else{pageJumpMenuContainer.classList.remove(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-jump-menu-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));document.querySelectorAll(".page-jump-menu-container ul li")?.forEach((el=>el?.firstElementChild?.classList.remove("rounded-full")));pageJumpMenuContainer.classList.add(..."[&_.page-jump-menu-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}}let pageTabsOriginalOffset=0;export function scrollPageTabFixed(pageTabsContainer){if(!pageTabsOriginalOffset){const rectPageTabs=pageTabsContainer.getBoundingClientRect();pageTabsOriginalOffset=rectPageTabs.top}if(window.scrollY>pageTabsOriginalOffset){pageTabsContainer.classList.add(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-tabs-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));pageTabsContainer.classList.remove(..."[&_.page-tabs-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}else{pageTabsContainer.classList.remove(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-tabs-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));pageTabsContainer.classList.add(..."[&_.page-tabs-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}}export function makePublicUrl(url){const isProd=window.location.hostname.includes("lifesciences.danaher.com");try{const newURL=new URL(url,window.location.origin);if(isProd){if(newURL.pathname.endsWith(".html")){return newURL.pathname}newURL.pathname+=".html";return newURL.pathname}if(newURL.pathname.endsWith(".html")){newURL.pathname=newURL.pathname.slice(0,-5);return newURL.pathname}return newURL.pathname}catch(error){console.error("Invalid URL:",error);return url}}export function setJsonLd(data,name){const existingScript=document.head.querySelector(`script[data-name="${name}"]`);if(existingScript){existingScript.innerHTML=JSON.stringify(data);return}const script=document.createElement("script");script.type="application/ld+json";script.innerHTML=JSON.stringify(data);script.dataset.name=name;document.head.appendChild(script)}function setFavicon(){const faviconLink=document.querySelector("link[rel*='icon']")||document.createElement("link");faviconLink.type="image/x-icon";faviconLink.rel="shortcut icon";faviconLink.href=`https://${window.location.hostname}/favicon.ico`;document.getElementsByTagName("head")[0].appendChild(faviconLink)}export async function getFragmentFromFile(url){const response=await fetch(url);if(!response.ok){console.error("error loading fragment details",response);return null}const text=await response.text();if(!text){console.error("fragment details empty",url);return null}return text}export function getCookie(cname){let value=decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(cname).replace(/[\\-\\.\\+\\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null;if(value&&(value.substring(0,1)==="{"&&value.substring(value.length-1,value.length)==="}"||value.substring(0,1)==="["&&value.substring(value.length-1,value.length)==="]")){try{value=JSON.parse(value)}catch(e){return value}}return value}export function isOTEnabled(){const otCookie=getCookie("OptanonConsent");if(typeof otCookie==="string"){return otCookie.includes("C0002:1")}return true}export function setCookie(cname,cvalue,expTime=30*1e3*60*60*24,path="/"){const today=new Date;today.setTime(today.getTime()+expTime);const expires="expires=".concat(today.toGMTString());const cookieString=cname.concat("=").concat(cvalue).concat(";").concat(expires).concat(";path=").concat(path);document.cookie=cookieString}async function buildVideo(main){const videoLinks=main.querySelectorAll('a[href*="youtube.com"],a[href*="vimeo.com"],a[href*="vidyard.com"]');if(videoLinks.length>0){const{default:decorateEmbed}=await import("../blocks/embed/embed.js");videoLinks.forEach((link=>{if(link.closest(".embed, .hero")==null){decorateEmbed(link.parentNode)}}))}}async function loadFonts(){await loadCSS(`${window.hlx.codeBasePath}/styles/fonts.css`);try{if(!window.location.hostname.includes("localhost"))sessionStorage.setItem("fonts-loaded","true")}catch(e){}}function loadBreadCrumb(){const header=document.querySelector("header");const breadcrumb=document.createElement("breadcrumb");if(window.location.pathname!=="/")header.after(breadcrumb)}function loadMobileMenu(){const breadcrumb=document.querySelector("breadcrumb");const mobileMunu=document.createElement("mobilemenu");const url=new URL(window.location.href);if(url.pathname.match(/\/us\/en\/products\/(family\/|sku\/|bundles\/)/)||url.pathname.match(/\/us\/en\/solutions\//)){breadcrumb.after(mobileMunu)}}function buildAutoBlocks(main){try{buildVideo(main)}catch(error){console.error("Auto Blocking failed",error)}}export function decorateModals(main){const ctaModalButton=main.querySelector(".show-modal-btn");const content=()=>ctaModalButton.getAttribute("data-dialog-message")?ctaModalButton.getAttribute("dialog-message"):"";ctaModalButton?.addEventListener("click",(async e=>{e.preventDefault();const{default:getModal}=await import("./modal.js");const customModal=await getModal("custom-modal",content,(modal=>{modal.querySelector('p[name="close"]')?.addEventListener("click",(()=>modal.close()))}));customModal.showModal()}))}function decorateTwoColumnSection(main){const dcwElements=div();const defaultContentWrappers=main.querySelectorAll(".default-content-wrapper");defaultContentWrappers.forEach((contentWrapper=>{[...contentWrapper.children].forEach((child=>{dcwElements.appendChild(child)}));let nextElement=contentWrapper.nextSibling;const allBlocks=[];while(nextElement){if(nextElement.className.includes("-wrapper"))allBlocks.push(nextElement);nextElement=nextElement.nextSibling}dcwElements.append(...allBlocks)}));main.querySelectorAll(".section.container-two-col").forEach((section=>{const newSection=div();let currentDiv=null;let additionalDiv=null;[...dcwElements.children].forEach((child=>{if(child.tagName==="H1"){newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-0 mt-4"}));currentDiv=div({class:"col-right w-full mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10"})}const childClone=child.cloneNode(true);if(childClone.tagName==="H2"&&childClone.querySelector(":scope > strong")){if(currentDiv?.classList.contains("col-right")){currentDiv?.querySelectorAll("h2").forEach((h2=>{h2.classList.add("mt-0")}));newSection.appendChild(currentDiv)}childClone.className="text-gray-900 !text-base leading-6 font-bold pt-6 pb-4 my-0";newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-0 mt-4"},childClone,domEl("hr",{style:"height: 10px; width: 54px; border-width: 0px; color: rgb(216, 244, 250); background-color: rgb(216, 244, 250);"})));currentDiv=div({class:"col-right w-full mt-4 lg:w-2/3 xl:w-3/4 pt-6 pb-10"})}else if(currentDiv?.classList.contains("col-right")){currentDiv?.querySelectorAll("h2").forEach((h2=>{h2.classList.add("mt-0")}));currentDiv.appendChild(childClone)}}));[...section.children].forEach((child=>{if(child.tagName==="DIV"){additionalDiv=div({class:"col-right w-full mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10"})}const childClone=child.cloneNode(true);additionalDiv.appendChild(childClone)}));if(currentDiv){newSection.appendChild(currentDiv)}if(additionalDiv){newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-0 mt-4"}));newSection.appendChild(additionalDiv)}newSection.classList.add("w-full","flex","flex-wrap","break-normal");section.innerHTML=newSection.outerHTML;section.classList.add("mx-auto","w-full","flex","flex-wrap","mb-5")}))}function updateExternalLinks(main){const REFERERS=[window.location.origin];main.querySelectorAll("a[href]").forEach((a=>{try{const{origin:origin,pathname:pathname,hash:hash}=new URL(a.href,window.location.href);const targetHash=hash&&hash.startsWith("#_");const isPDF=pathname.split(".").pop()==="pdf";if(origin&&origin!==window.location.origin&&!targetHash||isPDF){a.setAttribute("target","_blank");if(!REFERERS.includes(origin))a.setAttribute("rel","noopener")}else if(targetHash){a.setAttribute("target",hash.replace("#",""));a.href=a.href.replace(hash,"")}}catch(e){console.warn(`Invalid link in ${main}: ${a.href}`)}}))}function lazyLoadHiddenPageNavTabs(sections,nameOfFirstSection){const activeHash=window.location.hash;const active=activeHash?activeHash.substring(1,activeHash.length).toLowerCase():nameOfFirstSection;sections.forEach((section=>{const hasBreadCrumb=section.className.includes("breadcrumb-container");if(!hasBreadCrumb&§ion.getAttribute("aria-labelledby")!==active){section.querySelectorAll(".block").forEach((block=>{block.setAttribute("data-block-status","loaded");block.setAttribute("data-block-lazy-load",true);block.parentElement.style.display="none"}));const loadLazyBlocks=lazySection=>{lazySection.querySelectorAll(".block[data-block-lazy-load]").forEach((async block=>{block.removeAttribute("data-block-lazy-load");block.setAttribute("data-block-status","initialized");await loadBlock(block);block.parentElement.style.display=""}));section.setAttribute("data-section-status","loaded")};const observer=new IntersectionObserver((entries=>{if(entries.some((e=>e.isIntersecting))){observer.disconnect();loadLazyBlocks(section)}}));observer.observe(section);setTimeout((()=>{observer.disconnect();loadLazyBlocks(section)}),5e3)}}))}function decoratePageNav(main){const pageTabsBlock=main.querySelector(".page-tabs");if(!pageTabsBlock)return;const pageTabSection=pageTabsBlock.closest("div.section");let sections=[...main.querySelectorAll("div.section")];sections=sections.slice(sections.indexOf(pageTabSection)+1);const namedSections=sections.filter((section=>section.hasAttribute("data-tabname")));let index=0;sections.forEach((section=>{if(indeximport(dep)))]).then((([mod])=>mod.default));if(decorator){await decorator(main)}document.body.classList.add(templateName)}}catch(error){console.error("Auto Blocking failed",error)}}function decorateEmbeddedBlocks(container){container.querySelectorAll("div.section > div").forEach(decorateBlock)}export async function processEmbedFragment(element){const block=div({class:"embed-fragment"});[...element.classList].forEach((className=>{block.classList.add(className)}));const link=element.textContent;if(link){const fragment=await getFragmentFromFile(`${link}.plain.html`);if(fragment){block.innerHTML=fragment;const sections=block.querySelectorAll(".embed-fragment > div");[...sections].forEach((section=>{section.classList.add("section")}));decorateEmbeddedBlocks(block);decorateSections(block);loadBlocks(block)}else{const elementInner=element.innerHTML;block.append(div({class:"section"}));block.querySelector(".section").innerHTML=elementInner}}decorateButtons(block);decorateIcons(block);return block}function loadATPageParams(){const id=window.location.pathname.replaceAll("/","_").replace(/\.html$/,"").substring(1);const skuId=getMetadata("sku");const categoryId=getMetadata("fullcategory").split("|").pop();const thumbnailURL=getMetadata("og:image");const title=getMetadata("og:title");const name=title.indexOf("| Danaher Life Sciences")>-1?title.split("| Danaher Life Sciences")[0]:title;const message=getMetadata("og:description");const pageUrl=getMetadata("og:url");const brand=getMetadata("brand");const page=window.location.pathname.split("/")[3];const tags=getMetadata("article:tag");const articleAuthor=getMetadata("authorname");const articlePostDate=getMetadata("publishdate");const articleReadTime=getMetadata("readingtime");const targetParams={id:id,skuId:skuId,categoryId:categoryId,thumbnailURL:thumbnailURL,name:name,message:message,pageUrl:pageUrl,brand:brand,page:page,tags:tags,articleAuthor:articleAuthor,articlePostDate:articlePostDate,articleReadTime:articleReadTime};return targetParams}function initATJS(path,config){window.targetGlobalSettings=config;window.atPageParams=loadATPageParams();window.targetPageParams=function getTargetPageParams(){return{at_property:"6aeb619e-92d9-f4cf-f209-6d88ff58af6a","entity.id":window.atPageParams?.id,"entity.skuId":window.atPageParams?.skuId,"entity.categoryId":window.atPageParams?.categoryId,"entity.thumbnailURL":window.atPageParams?.thumbnailURL,"entity.name":window.atPageParams?.name,"entity.message":window.atPageParams?.message,"entity.pageUrl":window.atPageParams?.pageUrl,"entity.brand":window.atPageParams?.brand,"entity.page":window.atPageParams?.page,"entity.tags":window.atPageParams?.tags,"entity.articleAuthor":window.atPageParams?.articleAuthor,"entity.articlePostDate":window.atPageParams?.articlePostDate,"entity.articleReadTime":window.atPageParams?.articleReadTime,danaherCompany:localStorage.getItem("danaher_company")?localStorage.getItem("danaher_company"):"",utmCampaign:localStorage.getItem("danaher_utm_campaign")?localStorage.getItem("danaher_utm_campaign"):"",utmSource:localStorage.getItem("danaher_utm_source")?localStorage.getItem("danaher_utm_source"):"",utmMedium:localStorage.getItem("danaher_utm_medium")?localStorage.getItem("danaher_utm_medium"):"",utmContent:localStorage.getItem("danaher_utm_content")?localStorage.getItem("danaher_utm_content"):""}};return new Promise((resolve=>{import(path).then(resolve)}))}function onDecoratedElement(fn){if(document.querySelector('[data-block-status="loaded"],[data-section-status="loaded"]')){fn()}const observer=new MutationObserver((mutations=>{if(mutations.some((m=>m.target.tagName==="BODY"||m.target.dataset.sectionStatus==="loaded"||m.target.dataset.blockStatus==="loaded"))){fn()}}));observer.observe(document.querySelector("main"),{subtree:true,attributes:true,attributeFilter:["data-block-status","data-section-status"]});observer.observe(document.querySelector("body"),{childList:true})}function toCssSelector(selector){return selector.replace(/(\.\S+)?:eq\((\d+)\)/g,((_,clss,i)=>`:nth-child(${Number(i)+1}${clss?` of ${clss})`:""}`))}async function getElementForOffer(offer){const selector=offer.cssSelector||toCssSelector(offer.selector);return document.querySelector(selector)}async function getElementForMetric(metric){const selector=toCssSelector(metric.selector);return document.querySelector(selector)}async function getAndApplyOffers(){const response=await window.adobe.target.getOffers({request:{execute:{pageLoad:{}}}});const{options:options=[],metrics:metrics=[]}=response.execute.pageLoad;onDecoratedElement((()=>{window.adobe.target.applyOffers({response:response});options.forEach((o=>o.content=o.content.filter((c=>!getElementForOffer(c)))));metrics.map(((m,i)=>getElementForMetric(m)?i:-1)).filter((i=>i>=0)).reverse().map((i=>metrics.splice(i,1)))}))}let atjsPromise=Promise.resolve();const urlTarget=window.location.pathname;const regex=/^\/(us\/en\/products\.html)?$/;if(!regex.test(urlTarget)){atjsPromise=initATJS("./at.js",{clientCode:"danaher",serverDomain:"danaher.tt.omtrdc.net",imsOrgId:"08333E7B636A2D4D0A495C34@AdobeOrg",bodyHidingEnabled:false,cookieDomain:window.location.hostname,pageLoadEnabled:false,secureOnly:true,viewsEnabled:false,withWebGLRenderer:false}).catch((e=>{console.error("Error loading at.js",e)}));document.addEventListener("at-library-loaded",(()=>getAndApplyOffers()))}async function loadEager(doc){document.documentElement.lang="en";decorateTemplateAndTheme();await window.hlx.plugins.run("loadEager");const main=doc.querySelector("main");if(main){await decorateTemplates(main);decorateMain(main);await atjsPromise;await new Promise((resolve=>{window.requestAnimationFrame((async()=>{document.body.classList.add("appear");await waitForLCP(LCP_BLOCKS);resolve()}))}))}try{if(window.innerWidth>=900||sessionStorage.getItem("fonts-loaded")){loadFonts()}}catch(e){}}function getParameterByName(parameter,url=window.location.href){const modifiedParameter=parameter.replace(/[[\]]/g,"$&");const paramRegex=new RegExp(`[?&]${modifiedParameter}(=([^&#]*)|&|#|$)`);const results=paramRegex.exec(url);if(!results)return null;if(!results[2])return"";return decodeURIComponent(results[2].replace(/\+/g," "))}function loadUTMprams(){const utmParameters=["utm_campaign","utm_source","utm_medium","utm_content","utm_term","utm_previouspage"];utmParameters.forEach((param=>{const value=getParameterByName(param);if(value!==null){window.localStorage.setItem(`danaher_${param}`,value)}}))}async function loadLazy(doc){const main=doc.querySelector("main");await loadBlocks(main);const{hash:hash}=window.location;const element=hash?doc.getElementById(hash.substring(1)):false;if(hash&&element)element.scrollIntoView();loadFooter(doc.querySelector("footer"));loadCSS(`${window.hlx.codeBasePath}/styles/lazy-styles.css`);loadFonts();window.hlx.plugins.run("loadLazy");sampleRUM("lazy");sampleRUM.observe(main.querySelectorAll("div[data-block-name]"));sampleRUM.observe(main.querySelectorAll("picture > img"));loadUTMprams()}function loadDelayed(){window.setTimeout((()=>{window.hlx.plugins.load("delayed");window.hlx.plugins.run("loadDelayed");return import("./delayed.js")}),4e3)}async function loadPage(){setFavicon();await window.hlx.plugins.load("eager");await loadEager(document);await window.hlx.plugins.load("lazy");await loadLazy(document);loadDelayed()}function getDLPage(){const page={title:document.querySelector("title").textContent.replace(/[\n\t]/gm,""),language:"en",locale:"US",level:"top",type:"webpage",keywords:"",creationDate:getMetadata("creationdate"),updateDate:getMetadata("updatedate")};const path=window.location.pathname;if(path==="/"||path==="/us/en"||path==="/us/en.html"){page.level="top";page.type="home"}else if(path.includes("/us/en/news")){page.level="top";page.type="news"}else if(path.includes("/us/en/blog")){page.level="middle";page.type="blog"}else if(path.includes("/us/en/solutions")){page.level="middle";page.type="solutions"}else if(path.includes("/us/en/applications")){page.level="middle";page.type="applications"}else if(path.includes("/us/en/products")){if(path.includes("/us/en/products/family")){page.level="bottom";page.type="family"}else if(path.includes("/us/en/products/bundles")){page.level="bottom";page.type="bundles"}else if(path.includes("/us/en/products/sku")){page.level="bottom";page.type="sku"}else if(path.includes("/topics")){page.level="other";page.type="topics"}else{page.level="bottom";page.type="products"}}else if(path.includes("/us/en/library")){page.level="other";page.type="library"}else if(path.includes("/us/en/about-us")){page.level="top";page.type="about-us"}else if(path.includes("/us/en/expert")){page.level="top";page.type="expert"}else if(path.includes("/us/en/search")||path.includes("/us/en/danahersearch")){page.level="top";page.type="search"}else if(path.includes("/us/en/signin")){page.level="top";page.type="signin"}else if(path.includes("/us/en/legal")){page.level="top";page.type="legal"}return page}const urlParams=new URLSearchParams(window.location.search);const useProd=urlParams.get("useProd");if(window.location.host==="lifesciences.danaher.com"||useProd==="true"){window.DanaherConfig={siteID:"ls-us-en",gtmID:"GTM-THXPLCS",munchkinID:"306-EHG-641",marketoDomain:"//306-EHG-641.mktoweb.com",quoteCartPath:"/us/en/quote-cart.html",cartPath:"/us/en/cart.html",addressesPath:"/us/en/addresses.html",shippingPath:"/us/en/shipping.html",paymentPath:"/us/en/payment.html",receiptPath:"/us/en/receipt.html",quoteSubmitPath:"/us/en/submit-quote.html",intershopDomain:"https://shop.lifesciences.danaher.com",intershopPath:"/INTERSHOP/rest/WFS/DANAHERLS-LSIG-Site/-",searchOrg:"danaherproductionrfl96bkr",searchKey:"xxf2f10385-5a54-4a18-bb48-fd8025d6b5d2",workflowProductKey:"xx3d1b8da5-d1e9-4989-bbed-264a248a9e22",workflowResourceKey:"xxf6a8b387-10f2-4660-af5d-6d304d0a789d",productKey:"xxfb161aa6-0fa0-419f-af37-9c6d7784bf76",familyProductKey:"xx1ecd2a4f-8391-4c70-b3c0-2d589bda56b7",familyResourceKey:"xx9dd85afc-64b6-4295-bc5d-eb8285f96d52",categoryProductKey:"xx2a299d60-2cf1-48ab-b9d5-94daeb25f1d6",categoryDetailKey:"xx61910369-c1ab-4df9-8d8a-3092b1323fcc",productRecommendationsKey:"xx107716c0-1ccd-4a61-8717-6ca36b6cdb0e",megaMenuPath:"/content/dam/danaher/system/navigation/megamenu_items_us.json",coveoProductPageTitle:"Product Page",pdfEmbedKey:"4a472c386025439d8a4ce2493557f6e7",host:"lifesciences.danaher.com",scene7host:"https://danaherls.scene7.com"}}else{window.DanaherConfig={siteID:"ls-us-en",gtmID:"GTM-KCBGM2N",munchkinID:"439-KNJ-322",marketoDomain:"//439-KNJ-322.mktoweb.com",quoteCartPath:"/us/en/quote-cart.html",cartPath:"/us/en/cart.html",addressesPath:"/us/en/addresses.html",shippingPath:"/us/en/shipping.html",paymentPath:"/us/en/payment.html",receiptPath:"/us/en/receipt.html",quoteSubmitPath:"/us/en/submit-quote.html",intershopDomain:"https://stage.shop.lifesciences.danaher.com",intershopPath:"/INTERSHOP/rest/WFS/DANAHERLS-LSIG-Site/-",searchOrg:"danahernonproduction1892f3fhz",searchKey:"xx2a2e7271-78c3-4e3b-bac3-2fcbab75323b",workflowProductKey:"xx26ffc727-cc72-4bbd-98e3-34052f296382",workflowResourceKey:"xx14676f1d-cf4a-4a38-94f0-eda56e9920f1",productKey:"xx32da148e-dfd0-4725-a443-c05a7793afea",familyProductKey:"xx4e3989d6-93aa-4140-a227-19da35fcd1cc",familyResourceKey:"xx8274a91e-b29c-4267-8b3a-5022a2698605",categoryProductKey:"xxdf9d160d-f6e5-4c8c-969b-8570d7b81418",categoryDetailKey:"xxf2ea9bfd-bccb-4195-90fd-7757504fdc33",productRecommendationsKey:"xxea4d2c40-26e7-4e98-9377-d8ebe3f435ea",megaMenuPath:"/content/dam/danaher/system/navigation/megamenu_items_us.json",coveoProductPageTitle:"Product Page",pdfEmbedKey:"4a472c386025439d8a4ce2493557f6e7",host:"stage.lifesciences.danaher.com",scene7host:"https://s7d9.scene7.com"}}window.dataLayer=[];window.dataLayer.push({user:{customerID:"",accountType:"guest",marketCode:"",company:"",role:"",city:"",state:"",country:"",postalCode:"",lastVisit:""}});window.dataLayer.push({page:getDLPage()});loadPage(); \ No newline at end of file +import{sampleRUM,loadHeader,loadFooter,decorateButtons,decorateIcons,decorateSections,decorateBlocks,decorateTemplateAndTheme,waitForLCP,loadBlocks,loadCSS,toClassName,getMetadata,createOptimizedPicture,loadBlock,decorateBlock}from"./lib-franklin.js";import{div,domEl,img}from"./dom-builder.js";const LCP_BLOCKS=["breadcrumb","product-hero","carousel","columns"];const TEMPLATE_LIST={blog:{templateName:"blog",dependencies:["./schema.js","../blocks/columns/columns.js","../blocks/social-media/social-media.js","../blocks/article-info/article-info.js"]},productdetail:{templateName:"productDetail",dependencies:["./commerce.js","./product-payload-builder.js","./schema.js"]},processstep:"processstep",topic:"topic",library:"library",info:"library"};TEMPLATE_LIST.news=TEMPLATE_LIST.blog;export function imageHelper(imageUrl,imageAlt,eager=false){if(imageUrl.indexOf(".scene7.com")>-1){return img({src:`${imageUrl}`,alt:imageAlt,loading:eager?"eager":"lazy",class:"mb-2 h-48 w-full object-cover"})}const cardImage=createOptimizedPicture(imageUrl,imageAlt,eager,[{width:"500"}]);cardImage.querySelector("img").className="mb-2 h-48 w-full object-cover";return cardImage}export function createOptimizedS7Picture(src,alt="",eager=false){if(src.startsWith("/is/image")||src.indexOf(".scene7.com")>-1){const picture=document.createElement("picture");picture.appendChild(img({src:`${src}?$danaher-mobile$`,fetchpriority:"high",alt:alt,loading:eager?"eager":"lazy"}));return picture}return img({src:src,alt:alt,loading:eager?"eager":"lazy"})}export function formatDateUTCSeconds(date,options={}){const dateObj=new Date(0);dateObj.setUTCSeconds(date);return dateObj.toLocaleDateString("en-US",{month:"short",day:"2-digit",year:"numeric",...options})}export function generateUUID(){return Math.floor(1e3+Math.random()*9e3)}let originalOffset=0;export function scrollJumpMenuFixed(pageJumpMenuContainer){if(!originalOffset){const rectPageTabs=pageJumpMenuContainer.getBoundingClientRect();originalOffset=rectPageTabs.top}if(window.scrollY>originalOffset){pageJumpMenuContainer.classList.add(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-jump-menu-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));document.querySelector(".page-jump-menu-container.fixed ul")?.classList.add("shadow-none","rounded-none");document.querySelectorAll(".page-jump-menu-container.fixed ul li")?.forEach((el=>{el?.firstElementChild?.classList.add("rounded-full");el?.firstElementChild?.querySelector("span.icon svg use")?.classList.add("stroke-danaherpurple-500")}));document.querySelector('.page-jump-menu-container.fixed li[aria-selected="true"] a span.icon svg')?.classList.add("stroke-white");pageJumpMenuContainer.classList.remove(..."[&_.page-jump-menu-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}else{pageJumpMenuContainer.classList.remove(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-jump-menu-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));document.querySelectorAll(".page-jump-menu-container ul li")?.forEach((el=>el?.firstElementChild?.classList.remove("rounded-full")));pageJumpMenuContainer.classList.add(..."[&_.page-jump-menu-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}}let pageTabsOriginalOffset=0;export function scrollPageTabFixed(pageTabsContainer){if(!pageTabsOriginalOffset){const rectPageTabs=pageTabsContainer.getBoundingClientRect();pageTabsOriginalOffset=rectPageTabs.top}if(window.scrollY>pageTabsOriginalOffset){pageTabsContainer.classList.add(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-tabs-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));pageTabsContainer.classList.remove(..."[&_.page-tabs-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}else{pageTabsContainer.classList.remove(..."w-full fixed mt-[-1px] bg-white shadow-lg inset-x-0 top-[83px] py-2 z-10 [&_.page-tabs-wrapper]:md:max-w-7xl [&_ul>li>a]:flex-row [&_ul>li>a]:items-center [&_ul>li>a]:h-full [&_li>a>span.icon-chevron-down]:hidden".split(" "));pageTabsContainer.classList.add(..."[&_.page-tabs-wrapper]:md:max-w-max [&_ul]:divide-x [&_ul>li>a]:h-40 [&_ul>li>a]:flex-col [&_ul>li>a]:justify-center".split(" "))}}export function makePublicUrl(url){const isProd=window.location.hostname.includes("lifesciences.danaher.com");try{const newURL=new URL(url,window.location.origin);if(isProd){if(newURL.pathname.endsWith(".html")){return newURL.pathname}newURL.pathname+=".html";return newURL.pathname}if(newURL.pathname.endsWith(".html")){newURL.pathname=newURL.pathname.slice(0,-5);return newURL.pathname}return newURL.pathname}catch(error){console.error("Invalid URL:",error);return url}}export function setJsonLd(data,name){const existingScript=document.head.querySelector(`script[data-name="${name}"]`);if(existingScript){existingScript.innerHTML=JSON.stringify(data);return}const script=document.createElement("script");script.type="application/ld+json";script.innerHTML=JSON.stringify(data);script.dataset.name=name;document.head.appendChild(script)}function setFavicon(){const faviconLink=document.querySelector("link[rel*='icon']")||document.createElement("link");faviconLink.type="image/x-icon";faviconLink.rel="shortcut icon";faviconLink.href=`https://${window.location.hostname}/favicon.ico`;document.getElementsByTagName("head")[0].appendChild(faviconLink)}export async function getFragmentFromFile(url){const response=await fetch(url);if(!response.ok){console.error("error loading fragment details",response);return null}const text=await response.text();if(!text){console.error("fragment details empty",url);return null}return text}export function getCookie(cname){let value=decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(cname).replace(/[\\-\\.\\+\\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null;if(value&&(value.substring(0,1)==="{"&&value.substring(value.length-1,value.length)==="}"||value.substring(0,1)==="["&&value.substring(value.length-1,value.length)==="]")){try{value=JSON.parse(value)}catch(e){return value}}return value}export function isOTEnabled(){const otCookie=getCookie("OptanonConsent");if(typeof otCookie==="string"){return otCookie.includes("C0002:1")}return true}export function setCookie(cname,cvalue,expTime=30*1e3*60*60*24,path="/"){const today=new Date;today.setTime(today.getTime()+expTime);const expires="expires=".concat(today.toGMTString());const cookieString=cname.concat("=").concat(cvalue).concat(";").concat(expires).concat(";path=").concat(path);document.cookie=cookieString}async function buildVideo(main){const videoLinks=main.querySelectorAll('a[href*="youtube.com"],a[href*="vimeo.com"],a[href*="vidyard.com"]');if(videoLinks.length>0){const{default:decorateEmbed}=await import("../blocks/embed/embed.js");videoLinks.forEach((link=>{if(link.closest(".embed, .hero")==null){decorateEmbed(link.parentNode)}}))}}async function loadFonts(){await loadCSS(`${window.hlx.codeBasePath}/styles/fonts.css`);try{if(!window.location.hostname.includes("localhost"))sessionStorage.setItem("fonts-loaded","true")}catch(e){}}function loadBreadCrumb(){const header=document.querySelector("header");const breadcrumb=document.createElement("breadcrumb");if(window.location.pathname!=="/")header.after(breadcrumb)}function loadMobileMenu(){const breadcrumb=document.querySelector("breadcrumb");const mobileMunu=document.createElement("mobilemenu");const url=new URL(window.location.href);if(url.pathname.match(/\/us\/en\/products\/(family\/|sku\/|bundles\/)/)||url.pathname.match(/\/us\/en\/solutions\//)){breadcrumb.after(mobileMunu)}}function buildAutoBlocks(main){try{buildVideo(main)}catch(error){console.error("Auto Blocking failed",error)}}export function decorateModals(main){const ctaModalButton=main.querySelector(".show-modal-btn");const content=()=>ctaModalButton.getAttribute("data-dialog-message")?ctaModalButton.getAttribute("dialog-message"):"";ctaModalButton?.addEventListener("click",(async e=>{e.preventDefault();const{default:getModal}=await import("./modal.js");const customModal=await getModal("custom-modal",content,(modal=>{modal.querySelector('p[name="close"]')?.addEventListener("click",(()=>modal.close()))}));customModal.showModal()}))}function decorateTwoColumnSection(main){main.querySelectorAll(".section.container-two-col").forEach((section=>{const defaultContentWrappers=section.querySelectorAll(":scope > .default-content-wrapper");defaultContentWrappers.forEach((contentWrapper=>{[...contentWrapper.children].forEach((child=>{section.appendChild(child)}));let nextElement=contentWrapper.nextSibling;const allBlocks=[];while(nextElement){if(nextElement.className.includes("-wrapper"))allBlocks.push(nextElement);nextElement=nextElement.nextSibling}section.append(...allBlocks);section.removeChild(contentWrapper)}));const newSection=div();let currentDiv=null;[...section.children].forEach((child=>{if(child.tagName==="H1"){newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-4"}));currentDiv=div({class:"col-right w-full mt-0 md:mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-0 md:pb-10"})}const childClone=child.cloneNode(true);if(childClone.tagName==="H2"&&childClone.querySelector(":scope > strong")){if(currentDiv?.classList.contains("col-right")){newSection.appendChild(currentDiv)}childClone.className="text-gray-900 !text-base leading-6 font-bold pt-6 pb-4 my-0";newSection.appendChild(div({class:"col-left lg:w-1/3 xl:w-1/4 pt-4"},childClone,domEl("hr",{style:"height: 10px; width: 54px; border-width: 0px; color: rgb(216, 244, 250); background-color: rgb(216, 244, 250);"})));currentDiv=div({class:"col-right w-full mt-4 lg:mt-0 lg:w-2/3 xl:w-3/4 pt-6 pb-10"})}else if(currentDiv?.classList.contains("col-right")){currentDiv.appendChild(childClone)}}));if(currentDiv){newSection.appendChild(currentDiv)}newSection.classList.add("w-full","flex","flex-wrap","break-normal");section.innerHTML=newSection.outerHTML;section.classList.add("mx-auto","w-full","flex","flex-wrap","mb-5")}))}function updateExternalLinks(main){const REFERERS=[window.location.origin];main.querySelectorAll("a[href]").forEach((a=>{try{const{origin:origin,pathname:pathname,hash:hash}=new URL(a.href,window.location.href);const targetHash=hash&&hash.startsWith("#_");const isPDF=pathname.split(".").pop()==="pdf";if(origin&&origin!==window.location.origin&&!targetHash||isPDF){a.setAttribute("target","_blank");if(!REFERERS.includes(origin))a.setAttribute("rel","noopener")}else if(targetHash){a.setAttribute("target",hash.replace("#",""));a.href=a.href.replace(hash,"")}}catch(e){console.warn(`Invalid link in ${main}: ${a.href}`)}}))}function lazyLoadHiddenPageNavTabs(sections,nameOfFirstSection){const activeHash=window.location.hash;const active=activeHash?activeHash.substring(1,activeHash.length).toLowerCase():nameOfFirstSection;sections.forEach((section=>{const hasBreadCrumb=section.className.includes("breadcrumb-container");if(!hasBreadCrumb&§ion.getAttribute("aria-labelledby")!==active){section.querySelectorAll(".block").forEach((block=>{block.setAttribute("data-block-status","loaded");block.setAttribute("data-block-lazy-load",true);block.parentElement.style.display="none"}));const loadLazyBlocks=lazySection=>{lazySection.querySelectorAll(".block[data-block-lazy-load]").forEach((async block=>{block.removeAttribute("data-block-lazy-load");block.setAttribute("data-block-status","initialized");await loadBlock(block);block.parentElement.style.display=""}));section.setAttribute("data-section-status","loaded")};const observer=new IntersectionObserver((entries=>{if(entries.some((e=>e.isIntersecting))){observer.disconnect();loadLazyBlocks(section)}}));observer.observe(section);setTimeout((()=>{observer.disconnect();loadLazyBlocks(section)}),5e3)}}))}function decoratePageNav(main){const pageTabsBlock=main.querySelector(".page-tabs");if(!pageTabsBlock)return;const pageTabSection=pageTabsBlock.closest("div.section");let sections=[...main.querySelectorAll("div.section")];sections=sections.slice(sections.indexOf(pageTabSection)+1);const namedSections=sections.filter((section=>section.hasAttribute("data-tabname")));let index=0;sections.forEach((section=>{if(indeximport(dep)))]).then((([mod])=>mod.default));if(decorator){await decorator(main)}document.body.classList.add(templateName)}}catch(error){console.error("Auto Blocking failed",error)}}function decorateEmbeddedBlocks(container){container.querySelectorAll("div.section > div").forEach(decorateBlock)}export async function processEmbedFragment(element){const block=div({class:"embed-fragment"});[...element.classList].forEach((className=>{block.classList.add(className)}));const link=element.textContent;if(link){const fragment=await getFragmentFromFile(`${link}.plain.html`);if(fragment){block.innerHTML=fragment;const sections=block.querySelectorAll(".embed-fragment > div");[...sections].forEach((section=>{section.classList.add("section")}));decorateEmbeddedBlocks(block);decorateSections(block);loadBlocks(block)}else{const elementInner=element.innerHTML;block.append(div({class:"section"}));block.querySelector(".section").innerHTML=elementInner}}decorateButtons(block);decorateIcons(block);return block}function loadATPageParams(){const id=window.location.pathname.replaceAll("/","_").replace(/\.html$/,"").substring(1);const skuId=getMetadata("sku");const categoryId=getMetadata("fullcategory").split("|").pop();const thumbnailURL=getMetadata("og:image");const title=getMetadata("og:title");const name=title.indexOf("| Danaher Life Sciences")>-1?title.split("| Danaher Life Sciences")[0]:title;const message=getMetadata("og:description");const pageUrl=getMetadata("og:url");const brand=getMetadata("brand");const page=window.location.pathname.split("/")[3];const tags=getMetadata("article:tag");const articleAuthor=getMetadata("authorname");const articlePostDate=getMetadata("publishdate");const articleReadTime=getMetadata("readingtime");const targetParams={id:id,skuId:skuId,categoryId:categoryId,thumbnailURL:thumbnailURL,name:name,message:message,pageUrl:pageUrl,brand:brand,page:page,tags:tags,articleAuthor:articleAuthor,articlePostDate:articlePostDate,articleReadTime:articleReadTime};return targetParams}function initATJS(path,config){window.targetGlobalSettings=config;window.atPageParams=loadATPageParams();window.targetPageParams=function getTargetPageParams(){return{at_property:"6aeb619e-92d9-f4cf-f209-6d88ff58af6a","entity.id":window.atPageParams?.id,"entity.skuId":window.atPageParams?.skuId,"entity.categoryId":window.atPageParams?.categoryId,"entity.thumbnailURL":window.atPageParams?.thumbnailURL,"entity.name":window.atPageParams?.name,"entity.message":window.atPageParams?.message,"entity.pageUrl":window.atPageParams?.pageUrl,"entity.brand":window.atPageParams?.brand,"entity.page":window.atPageParams?.page,"entity.tags":window.atPageParams?.tags,"entity.articleAuthor":window.atPageParams?.articleAuthor,"entity.articlePostDate":window.atPageParams?.articlePostDate,"entity.articleReadTime":window.atPageParams?.articleReadTime,danaherCompany:localStorage.getItem("danaher_company")?localStorage.getItem("danaher_company"):"",utmCampaign:localStorage.getItem("danaher_utm_campaign")?localStorage.getItem("danaher_utm_campaign"):"",utmSource:localStorage.getItem("danaher_utm_source")?localStorage.getItem("danaher_utm_source"):"",utmMedium:localStorage.getItem("danaher_utm_medium")?localStorage.getItem("danaher_utm_medium"):"",utmContent:localStorage.getItem("danaher_utm_content")?localStorage.getItem("danaher_utm_content"):""}};return new Promise((resolve=>{import(path).then(resolve)}))}function onDecoratedElement(fn){if(document.querySelector('[data-block-status="loaded"],[data-section-status="loaded"]')){fn()}const observer=new MutationObserver((mutations=>{if(mutations.some((m=>m.target.tagName==="BODY"||m.target.dataset.sectionStatus==="loaded"||m.target.dataset.blockStatus==="loaded"))){fn()}}));observer.observe(document.querySelector("main"),{subtree:true,attributes:true,attributeFilter:["data-block-status","data-section-status"]});observer.observe(document.querySelector("body"),{childList:true})}function toCssSelector(selector){return selector.replace(/(\.\S+)?:eq\((\d+)\)/g,((_,clss,i)=>`:nth-child(${Number(i)+1}${clss?` of ${clss})`:""}`))}async function getElementForOffer(offer){const selector=offer.cssSelector||toCssSelector(offer.selector);return document.querySelector(selector)}async function getElementForMetric(metric){const selector=toCssSelector(metric.selector);return document.querySelector(selector)}async function getAndApplyOffers(){const response=await window.adobe.target.getOffers({request:{execute:{pageLoad:{}}}});const{options:options=[],metrics:metrics=[]}=response.execute.pageLoad;onDecoratedElement((()=>{window.adobe.target.applyOffers({response:response});options.forEach((o=>o.content=o.content.filter((c=>!getElementForOffer(c)))));metrics.map(((m,i)=>getElementForMetric(m)?i:-1)).filter((i=>i>=0)).reverse().map((i=>metrics.splice(i,1)))}))}let atjsPromise=Promise.resolve();const urlTarget=window.location.pathname;const regex=/^\/(us\/en\/products\.html)?$/;if(!regex.test(urlTarget)){atjsPromise=initATJS("./at.js",{clientCode:"danaher",serverDomain:"danaher.tt.omtrdc.net",imsOrgId:"08333E7B636A2D4D0A495C34@AdobeOrg",bodyHidingEnabled:false,cookieDomain:window.location.hostname,pageLoadEnabled:false,secureOnly:true,viewsEnabled:false,withWebGLRenderer:false}).catch((e=>{console.error("Error loading at.js",e)}));document.addEventListener("at-library-loaded",(()=>getAndApplyOffers()))}async function loadEager(doc){document.documentElement.lang="en";decorateTemplateAndTheme();await window.hlx.plugins.run("loadEager");const main=doc.querySelector("main");if(main){await decorateTemplates(main);decorateMain(main);await atjsPromise;await new Promise((resolve=>{window.requestAnimationFrame((async()=>{document.body.classList.add("appear");await waitForLCP(LCP_BLOCKS);resolve()}))}))}try{if(window.innerWidth>=900||sessionStorage.getItem("fonts-loaded")){loadFonts()}}catch(e){}}function getParameterByName(parameter,url=window.location.href){const modifiedParameter=parameter.replace(/[[\]]/g,"$&");const paramRegex=new RegExp(`[?&]${modifiedParameter}(=([^&#]*)|&|#|$)`);const results=paramRegex.exec(url);if(!results)return null;if(!results[2])return"";return decodeURIComponent(results[2].replace(/\+/g," "))}function loadUTMprams(){const utmParameters=["utm_campaign","utm_source","utm_medium","utm_content","utm_term","utm_previouspage"];utmParameters.forEach((param=>{const value=getParameterByName(param);if(value!==null){window.localStorage.setItem(`danaher_${param}`,value)}}))}async function loadLazy(doc){const main=doc.querySelector("main");await loadBlocks(main);const{hash:hash}=window.location;const element=hash?doc.getElementById(hash.substring(1)):false;if(hash&&element)element.scrollIntoView();loadFooter(doc.querySelector("footer"));loadCSS(`${window.hlx.codeBasePath}/styles/lazy-styles.css`);loadFonts();window.hlx.plugins.run("loadLazy");sampleRUM("lazy");sampleRUM.observe(main.querySelectorAll("div[data-block-name]"));sampleRUM.observe(main.querySelectorAll("picture > img"));loadUTMprams()}function loadDelayed(){window.setTimeout((()=>{window.hlx.plugins.load("delayed");window.hlx.plugins.run("loadDelayed");return import("./delayed.js")}),4e3)}async function loadPage(){setFavicon();await window.hlx.plugins.load("eager");await loadEager(document);await window.hlx.plugins.load("lazy");await loadLazy(document);loadDelayed()}function getDLPage(){const page={title:document.querySelector("title").textContent.replace(/[\n\t]/gm,""),language:"en",locale:"US",level:"top",type:"webpage",keywords:"",creationDate:getMetadata("creationdate"),updateDate:getMetadata("updatedate")};const path=window.location.pathname;if(path==="/"||path==="/us/en"||path==="/us/en.html"){page.level="top";page.type="home"}else if(path.includes("/us/en/news")){page.level="top";page.type="news"}else if(path.includes("/us/en/blog")){page.level="middle";page.type="blog"}else if(path.includes("/us/en/solutions")){page.level="middle";page.type="solutions"}else if(path.includes("/us/en/applications")){page.level="middle";page.type="applications"}else if(path.includes("/us/en/products")){if(path.includes("/us/en/products/family")){page.level="bottom";page.type="family"}else if(path.includes("/us/en/products/bundles")){page.level="bottom";page.type="bundles"}else if(path.includes("/us/en/products/sku")){page.level="bottom";page.type="sku"}else if(path.includes("/topics")){page.level="other";page.type="topics"}else{page.level="bottom";page.type="products"}}else if(path.includes("/us/en/library")){page.level="other";page.type="library"}else if(path.includes("/us/en/about-us")){page.level="top";page.type="about-us"}else if(path.includes("/us/en/expert")){page.level="top";page.type="expert"}else if(path.includes("/us/en/search")||path.includes("/us/en/danahersearch")){page.level="top";page.type="search"}else if(path.includes("/us/en/signin")){page.level="top";page.type="signin"}else if(path.includes("/us/en/legal")){page.level="top";page.type="legal"}return page}const urlParams=new URLSearchParams(window.location.search);const useProd=urlParams.get("useProd");if(window.location.host==="lifesciences.danaher.com"||useProd==="true"){window.DanaherConfig={siteID:"ls-us-en",gtmID:"GTM-THXPLCS",munchkinID:"306-EHG-641",marketoDomain:"//306-EHG-641.mktoweb.com",quoteCartPath:"/us/en/quote-cart.html",cartPath:"/us/en/cart.html",addressesPath:"/us/en/addresses.html",shippingPath:"/us/en/shipping.html",paymentPath:"/us/en/payment.html",receiptPath:"/us/en/receipt.html",quoteSubmitPath:"/us/en/submit-quote.html",intershopDomain:"https://shop.lifesciences.danaher.com",intershopPath:"/INTERSHOP/rest/WFS/DANAHERLS-LSIG-Site/-",searchOrg:"danaherproductionrfl96bkr",searchKey:"xxf2f10385-5a54-4a18-bb48-fd8025d6b5d2",workflowProductKey:"xx3d1b8da5-d1e9-4989-bbed-264a248a9e22",workflowResourceKey:"xxf6a8b387-10f2-4660-af5d-6d304d0a789d",productKey:"xxfb161aa6-0fa0-419f-af37-9c6d7784bf76",familyProductKey:"xx1ecd2a4f-8391-4c70-b3c0-2d589bda56b7",familyResourceKey:"xx9dd85afc-64b6-4295-bc5d-eb8285f96d52",categoryProductKey:"xx2a299d60-2cf1-48ab-b9d5-94daeb25f1d6",categoryDetailKey:"xx61910369-c1ab-4df9-8d8a-3092b1323fcc",productRecommendationsKey:"xx107716c0-1ccd-4a61-8717-6ca36b6cdb0e",megaMenuPath:"/content/dam/danaher/system/navigation/megamenu_items_us.json",coveoProductPageTitle:"Product Page",pdfEmbedKey:"4a472c386025439d8a4ce2493557f6e7",host:"lifesciences.danaher.com",scene7host:"https://danaherls.scene7.com"}}else{window.DanaherConfig={siteID:"ls-us-en",gtmID:"GTM-KCBGM2N",munchkinID:"439-KNJ-322",marketoDomain:"//439-KNJ-322.mktoweb.com",quoteCartPath:"/us/en/quote-cart.html",cartPath:"/us/en/cart.html",addressesPath:"/us/en/addresses.html",shippingPath:"/us/en/shipping.html",paymentPath:"/us/en/payment.html",receiptPath:"/us/en/receipt.html",quoteSubmitPath:"/us/en/submit-quote.html",intershopDomain:"https://stage.shop.lifesciences.danaher.com",intershopPath:"/INTERSHOP/rest/WFS/DANAHERLS-LSIG-Site/-",searchOrg:"danahernonproduction1892f3fhz",searchKey:"xx2a2e7271-78c3-4e3b-bac3-2fcbab75323b",workflowProductKey:"xx26ffc727-cc72-4bbd-98e3-34052f296382",workflowResourceKey:"xx14676f1d-cf4a-4a38-94f0-eda56e9920f1",productKey:"xx32da148e-dfd0-4725-a443-c05a7793afea",familyProductKey:"xx4e3989d6-93aa-4140-a227-19da35fcd1cc",familyResourceKey:"xx8274a91e-b29c-4267-8b3a-5022a2698605",categoryProductKey:"xxdf9d160d-f6e5-4c8c-969b-8570d7b81418",categoryDetailKey:"xxf2ea9bfd-bccb-4195-90fd-7757504fdc33",productRecommendationsKey:"xxea4d2c40-26e7-4e98-9377-d8ebe3f435ea",megaMenuPath:"/content/dam/danaher/system/navigation/megamenu_items_us.json",coveoProductPageTitle:"Product Page",pdfEmbedKey:"4a472c386025439d8a4ce2493557f6e7",host:"stage.lifesciences.danaher.com",scene7host:"https://s7d9.scene7.com"}}window.dataLayer=[];window.dataLayer.push({user:{customerID:"",accountType:"guest",marketCode:"",company:"",role:"",city:"",state:"",country:"",postalCode:"",lastVisit:""}});window.dataLayer.push({page:getDLPage()});loadPage(); \ No newline at end of file diff --git a/styles/styles.css b/styles/styles.css index 0202b5739..33405c0f8 100644 --- a/styles/styles.css +++ b/styles/styles.css @@ -2326,18 +2326,6 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica border-width: 2px; } -.border-b { - border-bottom-width: 1px; -} - -.border-t { - border-top-width: 1px; -} - -.border-solid { - border-style: solid; -} - .border-danaherpurple-500 { --tw-border-opacity: 1; border-color: rgb(117 35 255 / var(--tw-border-opacity)); @@ -2353,11 +2341,6 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica border-color: rgb(239 68 68 / var(--tw-border-opacity)); } -.border-black { - --tw-border-opacity: 1; - border-color: rgb(0 0 0 / var(--tw-border-opacity)); -} - .bg-danaherlightblue-50 { --tw-bg-opacity: 1; background-color: rgb(239 251 253 / var(--tw-bg-opacity)); @@ -2489,8 +2472,8 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica padding-top: 1.5rem; } -.pt-0 { - padding-top: 0px; +.pt-4 { + padding-top: 1rem; } .text-left { @@ -2781,6 +2764,10 @@ main .section.top-border { } @media (min-width: 768px) { + .md\:mt-4 { + margin-top: 1rem; + } + .md\:pb-10 { padding-bottom: 2.5rem; } @@ -2799,6 +2786,10 @@ main .section.top-border { grid-column: span 4 / span 4; } + .lg\:mt-0 { + margin-top: 0px; + } + .lg\:w-1\/3 { width: 33.333333%; } From 086c710ae8791e242654c6107e415a80463ec918 Mon Sep 17 00:00:00 2001 From: rgravitvl Date: Wed, 26 Jun 2024 13:03:05 +0530 Subject: [PATCH 22/29] updated add border conditions --- blocks/carousel/carousel.css | 4 ---- blocks/carousel/carousel.js | 2 +- blocks/mini-teasers/mini-teasers.css | 4 ---- blocks/mini-teasers/mini-teasers.js | 2 +- 4 files changed, 2 insertions(+), 10 deletions(-) diff --git a/blocks/carousel/carousel.css b/blocks/carousel/carousel.css index 2dc35aafd..9fde0ff55 100644 --- a/blocks/carousel/carousel.css +++ b/blocks/carousel/carousel.css @@ -81,10 +81,6 @@ margin-top: 1.5rem; } -.carousel-wrapper :is(.\!block) { - display: block !important; -} - .carousel-wrapper :is(.block) { display: block; } diff --git a/blocks/carousel/carousel.js b/blocks/carousel/carousel.js index a35ef933f..55fa5e65b 100644 --- a/blocks/carousel/carousel.js +++ b/blocks/carousel/carousel.js @@ -111,7 +111,7 @@ export default function decorate(block) { configureNavigation(carouselControls); block.parentElement.append(div({ class: 'carousel-controls relative max-w-7xl mx-auto' }, carouselControls)); } - if (!block.classList.contains('no-border')) block.classList.add(...'border-t border-b border-solid border-black'.split(' ')); + if (block.classList.contains('add-border')) block.classList.add(...'border-t border-b border-solid border-black'.split(' ')); setTimeout(() => { /* eslint-disable no-new */ new Carousel({ diff --git a/blocks/mini-teasers/mini-teasers.css b/blocks/mini-teasers/mini-teasers.css index d6446e160..3390605ee 100644 --- a/blocks/mini-teasers/mini-teasers.css +++ b/blocks/mini-teasers/mini-teasers.css @@ -34,10 +34,6 @@ -webkit-line-clamp: 3 } -.mini-teasers-wrapper :is(.\!block) { - display: block !important -} - .mini-teasers-wrapper :is(.block) { display: block } diff --git a/blocks/mini-teasers/mini-teasers.js b/blocks/mini-teasers/mini-teasers.js index 80d9071e1..3e1654cd9 100644 --- a/blocks/mini-teasers/mini-teasers.js +++ b/blocks/mini-teasers/mini-teasers.js @@ -26,6 +26,6 @@ export default function decorate(block) { if (link.href.endsWith('#RequestAQuote')) link.classList.add('show-modal-btn'); } }); - if (!block.classList.contains('no-border')) block.classList.add(...'border-t border-b border-solid border-black'.split(' ')); + if (block.classList.contains('add-border')) block.classList.add(...'border-t border-b border-solid border-black'.split(' ')); decorateModals(block); } From 9fa3701d9cd4fb14f09527e4786ebe338ddf9584 Mon Sep 17 00:00:00 2001 From: wz914876 Date: Wed, 26 Jun 2024 13:41:05 +0530 Subject: [PATCH 23/29] added padding to h2,h3 and h4 elements --- blocks/columns/columns.css | 4 ++-- blocks/columns/columns.js | 2 +- styles/styles.css | 24 ++---------------------- styles/tailwind.css | 4 ++-- 4 files changed, 7 insertions(+), 27 deletions(-) diff --git a/blocks/columns/columns.css b/blocks/columns/columns.css index 9c0120118..8471a642e 100644 --- a/blocks/columns/columns.css +++ b/blocks/columns/columns.css @@ -287,8 +287,8 @@ padding-bottom: 2.5rem; } -.columns-wrapper :is(.pb-14) { - padding-bottom: 3.5rem; +.columns-wrapper :is(.pb-4) { + padding-bottom: 1rem; } .columns-wrapper :is(.pb-7) { diff --git a/blocks/columns/columns.js b/blocks/columns/columns.js index 81c7b85b5..e657f9229 100644 --- a/blocks/columns/columns.js +++ b/blocks/columns/columns.js @@ -59,7 +59,7 @@ export default function decorate(block) { if (window.location.pathname.includes('/us/en/blog/') || window.location.pathname.includes('/us/en/news/')) { row.classList.add('h-full', 'lg:w-1/2', 'pr-16'); row.querySelectorAll('h1').forEach((ele) => { - ele.classList.add('pb-14'); + ele.classList.add('pb-4'); }); } else { row.classList.add('h-full'); diff --git a/styles/styles.css b/styles/styles.css index 0202b5739..b5aaa47a4 100644 --- a/styles/styles.css +++ b/styles/styles.css @@ -519,7 +519,8 @@ main .default-content-wrapper h1 { color: rgb(17 24 39 / var(--tw-text-opacity)); } -main .default-content-wrapper h2 { +main .default-content-wrapper h2, main .default-content-wrapper h3, main .default-content-wrapper h4 { + padding-top: 1rem; font-size: 1.875rem; line-height: 2.25rem; font-weight: 500; @@ -2326,18 +2327,6 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica border-width: 2px; } -.border-b { - border-bottom-width: 1px; -} - -.border-t { - border-top-width: 1px; -} - -.border-solid { - border-style: solid; -} - .border-danaherpurple-500 { --tw-border-opacity: 1; border-color: rgb(117 35 255 / var(--tw-border-opacity)); @@ -2353,11 +2342,6 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica border-color: rgb(239 68 68 / var(--tw-border-opacity)); } -.border-black { - --tw-border-opacity: 1; - border-color: rgb(0 0 0 / var(--tw-border-opacity)); -} - .bg-danaherlightblue-50 { --tw-bg-opacity: 1; background-color: rgb(239 251 253 / var(--tw-bg-opacity)); @@ -2489,10 +2473,6 @@ main .section .product-hero-wrapper .product-hero .product-hero-content .vertica padding-top: 1.5rem; } -.pt-0 { - padding-top: 0px; -} - .text-left { text-align: left; } diff --git a/styles/tailwind.css b/styles/tailwind.css index a9e42533d..2753cd909 100644 --- a/styles/tailwind.css +++ b/styles/tailwind.css @@ -65,8 +65,8 @@ @apply text-gray-900 font-extrabold text-4xl; } - main .default-content-wrapper h2 { - @apply text-gray-900 font-medium text-3xl; + main .default-content-wrapper h2, main .default-content-wrapper h3, main .default-content-wrapper h4 { + @apply text-gray-900 font-medium text-3xl pt-4; } } From fd0d61937300c3debf0ee7a69df7741df9f0d300 Mon Sep 17 00:00:00 2001 From: rgravitvl Date: Wed, 26 Jun 2024 18:01:53 +0530 Subject: [PATCH 24/29] updated for carousel converter --- tools/actions/convert/test/converter.test.js | 2 +- .../test/fixtures/solutions1-converted.html | 175 +++ .../convert/test/fixtures/solutions1.html | 1346 +++++++++++++++++ tools/importer/transformers/carousel.js | 6 +- 4 files changed, 1526 insertions(+), 3 deletions(-) create mode 100644 tools/actions/convert/test/fixtures/solutions1-converted.html create mode 100644 tools/actions/convert/test/fixtures/solutions1.html diff --git a/tools/actions/convert/test/converter.test.js b/tools/actions/convert/test/converter.test.js index 33f9185eb..2137f73bb 100644 --- a/tools/actions/convert/test/converter.test.js +++ b/tools/actions/convert/test/converter.test.js @@ -40,5 +40,5 @@ describe('Converter', async () => { .reply(200, megamenu, { 'content-type': 'application/json' }); }); - await testRunner(); + await testRunner(['solutions1.html']); }); diff --git a/tools/actions/convert/test/fixtures/solutions1-converted.html b/tools/actions/convert/test/fixtures/solutions1-converted.html new file mode 100644 index 000000000..67a93a4bd --- /dev/null +++ b/tools/actions/convert/test/fixtures/solutions1-converted.html @@ -0,0 +1,175 @@ + + +
+
+
+ +
+ +
+
+
+
:dam-Bookmark:
+ +
+
+
:dam-Refresh:
+ +
+
+
:dam-Cube:
+ +
+
+
:dam-Chat:
+ +
+
+
+

Autologous CAR-T Cell Therapy

+

WHY IT MATTERS

+

Unlocking the Healing Potential

+

Unlocking the healing potential of Autologous CAR-T cell therapy marks a significant leap forward for personalized medicine, offering a beacon of hope for patients diagnosed with certain types of cancer. By harnessing the patient's immune system to target and destroy cancer cells, CAR-T therapy represents a significant advancement in our ability to combat these malignancies. This approach's importance lies in its potential to improve patient survival rates and quality of life. It embodies cutting-edge biomedical innovation and patient-specific treatment protocols to lead to breakthroughs in curing diseases once deemed incurable. Through meticulous research development and application, unlocking the healing potential of Autologous CAR-T therapy is a crucial endeavor in the ongoing fight against cancer.

+

Select the Right Tools and Partner

+

Developing and manufacturing Autologous CAR-T cell therapies require high consistency in process and quality. Selecting the right tools and partnering with scientific experts is essential to achieve this.

+

The Life Sciences companies of Danaher Corporation provide a vast array of solutions and technologies to aid in developing and producing Autologous CAR-T cell therapies. Our offerings cater from the discovery stage to clinical trials. We provide cutting-edge workflow automation, analytical solutions and enterprise-level data management solutions that can take your program to new heights. Our solutions are designed to empower you and help you achieve your goals quickly and efficiently.

+

DANAHER IN THE NEWS

+

Danaher-University of Pennsylvania Beacon for Cell Therapy Innovation

+

Danaher Corporation has partnered with the University of Pennsylvania's Center for Cellular Immunotherapies, led by CAR-T pioneer Dr. Carl June. This partnership aims to develop advanced technologies that can improve the consistency of clinical outcomes for patients and overcome manufacturing bottlenecks in the delivery of next-generation engineered cell therapies like Autologous CAR-T. These therapies have immense potential to improve the treatment landscape for patients with limited options. However, the impact of CAR-T cell therapies on human health is limited by the inability to scale manufacturing processes in a cost- and time-effective way. This Beacon for Cell Therapy Innovation will focus on developing innovative product solutions that address bottlenecks affecting cell therapy manufacturing yield and quality.

+

Learn More

+

THE PROCESS

+

One lab, three paths to faster outcomes

+
+
+
All
+
/fragments/workflow_tabs/cell-therapy/car-t-cell-therapy/workflow-carousels/master
+
+
+
Automation
+
/fragments/workflow_tabs/cell-therapy/car-t-cell-therapy/workflow-carousels/automation
+
+
+
Analytical
+
/fragments/workflow_tabs/cell-therapy/car-t-cell-therapy/workflow-carousels/analytical
+
+
+
Digital
+
/fragments/workflow_tabs/cell-therapy/car-t-cell-therapy/workflow-carousels/digital
+
+
+

PRODUCT SPOTLIGHT

+
+
+
+

Vi-CELL BLU Cell Viability Analyzer

+

The faster Vi-CELL BLU cell analyzers automates the Trypan Blue Dye Exclusion method for cell viability analysis.

+

The Vi-CELL BLU expedites processing by now having the option to use a 24-position sample carousel or a 96 well plate for sample delivery.

+

Learn More

+
+
+ Danaher Corporation +
+
+
+

+ Danaher Corporation +

+
+
+
+

CytoFLEX Flow Cytometer

+

The CytoFLEX Flow Cytometer, the first introduction to the CytoFLEX Platform, provides the performance you need in an easy to use system allowing you to focus on the science, not the instrumentation.

+

Its superior sensitivity and resolution throughout all configurations give it the edge over other cytometry systems four times its size. All instruments in the platform utilize CytExpert for CytoFLEX Acquisition and Analysis Software.

+

Learn More

+
+
+ Danaher Corporation +
+
+
+

+ Danaher Corporation +

+
+
+
+

Skyland PIMS

+

PIMS (Process Information Management System) is 21 CFR Part-11 compliant, cloud-native software that creates a contextualized data backbone of critical manufacturing process and quality data across products and batches.

+

Learn More

+
+
+ Danaher Corporation +
+
+
+ + +
+ +
+
+
+ + \ No newline at end of file diff --git a/tools/actions/convert/test/fixtures/solutions1.html b/tools/actions/convert/test/fixtures/solutions1.html new file mode 100644 index 000000000..0311f6694 --- /dev/null +++ b/tools/actions/convert/test/fixtures/solutions1.html @@ -0,0 +1,1346 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Autologous CAR-T Cell Therapy: Development & Manufacturing | Danaher Life Sciences + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + + + + + + +
+
+ + + + +
+ +
+ + + + +
+ + + +
+ +
+ +
+ +
+
+
+
+
+ + + + + + + + + +
+ + +
+ + +
+ + + +
+
+ + +

Autologous CAR-T Cell Therapy

+ + + +
+
+
+
+
+ + + +
+
+ +

WHY IT MATTERS

+ + + + + +
+
+
+ + + + + + +
+ + + +

Unlocking the Healing Potential

+ + +
+ + + + +
+ + + + +
+ + + + +
+ + + +

Select the Right Tools and Partner

+ + +
+ + + + +
+ + + + +
+ + +
+
+
+ + + +
+
+ +

DANAHER IN THE NEWS

+ + + + + +
+
+
+ + + + + + +
+ + + +

Danaher-University of Pennsylvania Beacon for Cell Therapy Innovation

+ + +
+ + + + +
+ + + + +
+ + +
+
+
+ + + +
+
+ +

THE PROCESS

+ + + + + +
+
+
+ + + + + + +
+ + + +

One lab, three paths to faster outcomes

+ + +
+ + + + +
+ + + + + + + + + + + + + +
+ + +
+
+
+ + + +
+
+ +

PRODUCT SPOTLIGHT

+ + + + + +
+
+
+ + + + + + +
+ + + + + + + + +
+ + + + +
+ +

+

+ +
+ + + +
+ + + + +
+ + + +
+ + + + +
+ + + + + + + + +
+ + + + +
+ +

+

+ +
+ + + +
+ + + + +
+ + + +
+ + + + +
+ + + + + + + + +
+ + + + +
+ +

+

+ +
+ + + +
+ + + + + + + +
+
+
+
+
+ + +
+
+ + + + + +
+ +
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tools/importer/transformers/carousel.js b/tools/importer/transformers/carousel.js index 0dcb4d3f5..69e61e786 100644 --- a/tools/importer/transformers/carousel.js +++ b/tools/importer/transformers/carousel.js @@ -66,8 +66,10 @@ const createCarousel = (main, document) => { getCarousel(carousel, cells, document); const block = WebImporter.DOMUtils.createTable(cells, document); carousel.append(block); - if (i === carousels.length - 1 && !carousel.parentNode.nextElementSibling) carousel.prepend(document.createElement('hr')); - else carousel.append(document.createElement('hr')); + if(!(carousel.parentNode?.parentNode?.closest('div.container-workflow'))){ + if (i === carousels.length - 1 && !carousel.parentNode.nextElementSibling) carousel.prepend(document.createElement('hr')); + else carousel.append(document.createElement('hr')); + } }); } }; From 9c1da59c7eaec2d7c4f7ecfc03e9b503b1495101 Mon Sep 17 00:00:00 2001 From: rgravitvl Date: Wed, 26 Jun 2024 18:06:06 +0530 Subject: [PATCH 25/29] fixed lint issues --- tools/importer/transformers/carousel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/importer/transformers/carousel.js b/tools/importer/transformers/carousel.js index 69e61e786..ce8e54689 100644 --- a/tools/importer/transformers/carousel.js +++ b/tools/importer/transformers/carousel.js @@ -66,7 +66,7 @@ const createCarousel = (main, document) => { getCarousel(carousel, cells, document); const block = WebImporter.DOMUtils.createTable(cells, document); carousel.append(block); - if(!(carousel.parentNode?.parentNode?.closest('div.container-workflow'))){ + if (!(carousel.parentNode?.parentNode?.closest('div.container-workflow'))) { if (i === carousels.length - 1 && !carousel.parentNode.nextElementSibling) carousel.prepend(document.createElement('hr')); else carousel.append(document.createElement('hr')); } From 3c69baf03ea4077e05a7e4d011d690194b8fe17b Mon Sep 17 00:00:00 2001 From: Dave Nichols Date: Wed, 26 Jun 2024 16:13:48 +0100 Subject: [PATCH 26/29] Added the image back in on mobile, amended padding and font sizing on H1. --- blocks/columns/columns.css | 8 -------- blocks/columns/columns.js | 2 +- blocks/social-media/social-media.css | 10 ++++++++-- blocks/social-media/social-media.js | 2 +- styles/styles.css | 5 +++-- styles/tailwind.css | 2 +- 6 files changed, 14 insertions(+), 15 deletions(-) diff --git a/blocks/columns/columns.css b/blocks/columns/columns.css index 21cbc4c11..52dfffee0 100644 --- a/blocks/columns/columns.css +++ b/blocks/columns/columns.css @@ -120,10 +120,6 @@ display: grid; } -.columns-wrapper :is(.hidden) { - display: none; -} - .columns-wrapper :is(.h-12) { height: 3rem; } @@ -429,10 +425,6 @@ bottom: 0px; } - .columns-wrapper :is(.md\:block) { - display: block; - } - .columns-wrapper :is(.md\:h-\[27rem\]) { height: 27rem; } diff --git a/blocks/columns/columns.js b/blocks/columns/columns.js index 0304d406e..64bc7b28e 100644 --- a/blocks/columns/columns.js +++ b/blocks/columns/columns.js @@ -130,7 +130,7 @@ export default function decorate(block) { if (picWrapper && picWrapper.children.length === 1) { // picture is only content in column if (window.location.pathname.includes('/us/en/blog/') || window.location.pathname.includes('/us/en/news/')) { - picWrapper.classList.add(...'hidden md:block columns-img-col order-none relative h-48 md:h-[27rem] block lg:absolute md:inset-y-0 lg:inset-y-0 lg:right-2 lg:w-1/2 lg:mt-56'.split(' ')); + picWrapper.classList.add(...'columns-img-col order-none relative h-48 md:h-[27rem] block lg:absolute md:inset-y-0 lg:inset-y-0 lg:right-2 lg:w-1/2 lg:mt-56'.split(' ')); pic.querySelector('img').classList.add(...'absolute bottom-0 h-full w-full object-cover'.split(' ')); } else { picWrapper.classList.add('columns-img-col', 'order-none'); diff --git a/blocks/social-media/social-media.css b/blocks/social-media/social-media.css index bb9d46910..d44f987a6 100644 --- a/blocks/social-media/social-media.css +++ b/blocks/social-media/social-media.css @@ -40,8 +40,8 @@ background-color: rgb(239 251 253 / var(--tw-bg-opacity)) } -.social-media-wrapper :is(.pb-10) { - padding-bottom: 2.5rem +.social-media-wrapper :is(.pb-0) { + padding-bottom: 0px } .social-media-wrapper :is(.pt-4) { @@ -65,4 +65,10 @@ .social-media-wrapper :is(.text-gray-600) { --tw-text-opacity: 1; color: rgb(75 85 99 / var(--tw-text-opacity)) +} + +@media (min-width: 768px) { + .social-media-wrapper :is(.md\:pb-10) { + padding-bottom: 2.5rem + } } \ No newline at end of file diff --git a/blocks/social-media/social-media.js b/blocks/social-media/social-media.js index 570eb3522..16bb7e821 100644 --- a/blocks/social-media/social-media.js +++ b/blocks/social-media/social-media.js @@ -9,7 +9,7 @@ function goBack() { export default function decorate(block) { const articleType = getMetadata('template').toLowerCase(); - block.classList.add(...'relative z-10 flex items-center justify-between mb-8 text-gray-600 pt-4 pb-10'.split(' ')); + block.classList.add(...'relative z-10 flex items-center justify-between mb-8 text-gray-600 pt-4 pb-0 md:pb-10'.split(' ')); // eslint-disable-next-line no-script-url const goParentBack = a({ class: 'my-auto text-base text-danaherpurple-500 font-semibold', href: goBack() }, `← Back to ${articleType}`); block.prepend(goParentBack); diff --git a/styles/styles.css b/styles/styles.css index a4ed89e70..c44797f94 100644 --- a/styles/styles.css +++ b/styles/styles.css @@ -476,14 +476,15 @@ h1, h2, h3, h4, h5, h6 { } h1 { - font-size: 2.25rem !important; + font-size: 1.875rem !important; + line-height: 2.25rem !important; font-weight: 500 !important; - line-height: 3rem !important; } @media (min-width: 768px) { h1 { font-size: 2.5rem !important; + line-height: 3rem !important; } } diff --git a/styles/tailwind.css b/styles/tailwind.css index f509df1f2..b3ef74c85 100644 --- a/styles/tailwind.css +++ b/styles/tailwind.css @@ -30,7 +30,7 @@ } h1 { - @apply !leading-12 !font-medium !text-4xl md:!text-4xl2; + @apply md:!leading-12 !font-medium !text-3xl md:!text-4xl2; } h2 { From d8b0bec1af225d82a7e25c6b4f8bb2fe3c0c4fa7 Mon Sep 17 00:00:00 2001 From: rgravitvl Date: Thu, 27 Jun 2024 12:08:26 +0530 Subject: [PATCH 27/29] Created separate object for item and added the type --- scripts/schema.js | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/scripts/schema.js b/scripts/schema.js index 748ff2388..b506aef55 100644 --- a/scripts/schema.js +++ b/scripts/schema.js @@ -104,10 +104,13 @@ export function buildProductCategorySchema(products) { data.itemListElement.push({ '@type': 'ListItem', position: index + 1, - '@id': product.clickUri, - name: product.title, - image: product?.raw?.images?.at(0), - description: product.excerpt, + item: { + '@type': 'Product', + '@id': product.clickUri, + name: product.title, + image: product?.raw?.images?.at(0), + description: product.excerpt, + }, mainEntityOfPage: { '@type': 'WebPage', '@id': product.clickUri, @@ -117,10 +120,13 @@ export function buildProductCategorySchema(products) { data.itemListElement.push({ '@type': 'ListItem', position: index + 1, - '@id': `https://lifesciences.danaher.com${makePublicUrl(product.path)}`, - name: product.title, - image: `https://lifesciences.danaher.com${product.image}`, - description: product.description, + item: { + '@type': 'Product', + '@id': `https://lifesciences.danaher.com${makePublicUrl(product.path)}`, + name: product.title, + image: `https://lifesciences.danaher.com${product.image}`, + description: product.description, + }, mainEntityOfPage: { '@type': 'WebPage', '@id': `https://lifesciences.danaher.com${makePublicUrl(product.path)}`, From 396817d7c9af69357ae2f047ce740d2f7dc0ed14 Mon Sep 17 00:00:00 2001 From: Dave Nichols Date: Thu, 27 Jun 2024 16:31:12 +0100 Subject: [PATCH 28/29] Updated Breadcrumb height and added sidebar left padding. --- blocks/side-nav/side-nav.css | 8 ++++++++ blocks/side-nav/side-nav.js | 2 +- styles/styles.css | 2 +- styles/tailwind.css | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/blocks/side-nav/side-nav.css b/blocks/side-nav/side-nav.css index 11018d50f..1e55961c7 100644 --- a/blocks/side-nav/side-nav.css +++ b/blocks/side-nav/side-nav.css @@ -73,6 +73,14 @@ padding-bottom: 1rem } +.side-nav-wrapper :is(.pl-2) { + padding-left: 0.5rem +} + +.side-nav-wrapper :is(.pl-2\.5) { + padding-left: 0.625rem +} + .side-nav-wrapper :is(.pr-2) { padding-right: 0.5rem } diff --git a/blocks/side-nav/side-nav.js b/blocks/side-nav/side-nav.js index 1e909aee9..e9f799d86 100644 --- a/blocks/side-nav/side-nav.js +++ b/blocks/side-nav/side-nav.js @@ -25,7 +25,7 @@ function renderSideNav(sideNavItems) { class: 'flex gap-3', }, a({ - class: 'py-4 pr-2 text-base', + class: 'py-4 pr-2 pl-2.5 text-base', href: makePublicUrl(sideNavItem.path), }, sideNavItem.title), ), diff --git a/styles/styles.css b/styles/styles.css index c8171f4c4..ac0a84c6b 100644 --- a/styles/styles.css +++ b/styles/styles.css @@ -1019,7 +1019,7 @@ header { @media (min-width: 1024px) { header { - height: 179px; + height: 170px; } } diff --git a/styles/tailwind.css b/styles/tailwind.css index 577e5224e..626158349 100644 --- a/styles/tailwind.css +++ b/styles/tailwind.css @@ -199,7 +199,7 @@ } header { - @apply h-[52px] md:h-[80px] lg:h-[179px] bg-white print:hidden; + @apply h-[52px] md:h-[80px] lg:h-[170px] bg-white print:hidden; } .topic main, .topichub main { From 71a5229ce26a9dddd4aa0c37c9cc8a9fbf14507a Mon Sep 17 00:00:00 2001 From: Dave Nichols Date: Thu, 27 Jun 2024 16:55:38 +0100 Subject: [PATCH 29/29] Updated padding and pill size for card list options. --- blocks/card-list/card-list.css | 15 ++++++++++++--- blocks/card-list/card-list.js | 8 ++++---- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/blocks/card-list/card-list.css b/blocks/card-list/card-list.css index 00044a42a..27c25b902 100644 --- a/blocks/card-list/card-list.css +++ b/blocks/card-list/card-list.css @@ -222,6 +222,10 @@ gap: 1.5rem } +.card-list-wrapper :is(.gap-y-0) { + row-gap: 0px +} + .card-list-wrapper :is(.overflow-hidden) { overflow: hidden } @@ -294,9 +298,14 @@ padding-right: 1.5rem } -.card-list-wrapper :is(.py-1) { - padding-top: 0.25rem; - padding-bottom: 0.25rem +.card-list-wrapper :is(.py-0) { + padding-top: 0px; + padding-bottom: 0px +} + +.card-list-wrapper :is(.py-0\.5) { + padding-top: 0.125rem; + padding-bottom: 0.125rem } .card-list-wrapper :is(.py-4) { diff --git a/blocks/card-list/card-list.js b/blocks/card-list/card-list.js index 13dd8eaa5..ec5d0fe25 100644 --- a/blocks/card-list/card-list.js +++ b/blocks/card-list/card-list.js @@ -95,16 +95,16 @@ export function createFilters(articles, viewAll = false) { newUrl.pathname = window.location.pathname.substring(0, window.location.pathname.indexOf('/topics/')); } const tags = viewAll ? div( - { class: 'flex flex-wrap gap-2 mb-4' }, + { class: 'flex flex-wrap gap-2 gap-y-0 mb-4' }, a( { class: - 'text-center my-2 inline-block rounded-full px-4 py-1 font-semibold text-danaherpurple-500 bg-danaherpurple-50 hover:text-white hover:bg-danaherpurple-500', + 'text-center my-2 inline-block rounded-full px-4 py-0.5 font-semibold text-danaherpurple-500 bg-danaherpurple-50 hover:text-white hover:bg-danaherpurple-500', href: makePublicUrl(newUrl.toString()), }, 'View All', ), - ) : div({ class: 'flex flex-wrap gap-2 mb-4' }); + ) : div({ class: 'flex flex-wrap gap-2 gap-y-0 mb-4' }); [...keywords].sort().forEach((keyword) => { let currentUrl; @@ -119,7 +119,7 @@ export function createFilters(articles, viewAll = false) { const tagAnchor = a( { class: - 'text-center my-2 inline-block rounded-full px-4 py-1 font-semibold text-danaherpurple-500 bg-danaherpurple-50 hover:text-white hover:bg-danaherpurple-500', + 'text-center my-2 inline-block rounded-full px-4 py-0.5 font-semibold text-danaherpurple-500 bg-danaherpurple-50 hover:text-white hover:bg-danaherpurple-500', href: makePublicUrl(newUrl.toString()), }, keyword,