PageSourceSearch

https://www.danaher.com/themes/custom/danaher/js/global.js?tligcj

js danaher.com collected 2026-09-24 17:40:17 UTC 8,081 bytes, 278 lines download raw bytes

1"use strict";
2
3(function ($) {
4	if ($(".main-search-page").length == 0) {
5		$("#edit-keys").val("");
6	}
7
8	function clearSearch() {
9		document.getElementById("views-exposed-form-search-content-search").reset();
10		$("#edit-keys").val("");
11		$("#views-exposed-form-search-content-search input#edit-keys").focus();
12	}
13
14	function addClearField() {
15		if ($(".main-search-page").length > 0) {
16			$(
17				".main-search-page #views-exposed-form-search-content-search .js-form-item"
18			).addClass("search-custom");
19			let buttonHTML = '<button class="clear">Clear</button>';
20			$(
21				".main-search-page #views-exposed-form-search-content-search .js-form-item #edit-keys"
22			).attr("placeholder", "Start typing to search");
23			$(
24				".main-search-page #views-exposed-form-search-content-search .js-form-item #edit-keys"
25			).after(buttonHTML);
26
27			document
28				.querySelector(
29					".main-search-page #views-exposed-form-search-content-search .js-form-item"
30				)
31				.addEventListener("click", function (event) {
32					if (event.target.tagName.toLowerCase() === "button") {
33						clearSearch();
34						event.preventDefault();
35					}
36				});
37		}
38	}
39
40	$("button.clear").on("click", function (event) {
41		clearSearch();
42		event.preventDefault();
43		// event.stopPropagation();
44	});
45
46	$("#views-exposed-form-search-content-search #edit-keys").on(
47		"keydown",
48		function (e) {
49			if (e.keyCode == 13) {
50				$("#views-exposed-form-search-content-search").submit();
51			}
52		}
53	);
54
55	function hasSupports() {
56		// if not supported
57		if (!CSS.supports("selector(html:has(body))")) {
58			//firefox doesn't support the :has directive, so I'm going to apply a class that mimics its usage
59			if ($(".blog-hero-right-side").find("figure").length > 0) {
60				$(".hero--blog").addClass("has-image");
61			}
62
63			if ($(".hero--2-up-hero").find("figure").length > 0) {
64				$(".hero--2-up-hero").addClass("has-image");
65			}
66
67			Array.from(jQuery(".dynamic-quote-block--item")).forEach(function (
68				element
69			) {
70				// console.log(element);
71				if ($(element).find(".decorative-image").length > 0) {
72					$(element).addClass("has-decorative-image");
73				} else {
74					$(element).addClass("no-decorative-image");
75				}
76			});
77		}
78	}
79
80	function isElementInViewport(el) {
81		// Special bonus for those using jQuery
82		if (typeof jQuery === "function" && el instanceof jQuery) {
83			el = el[0];
84		}
85
86		if (el === undefined || el === null) {
87			return false;
88		}
89		var rect = el.getBoundingClientRect();
90
91		return (
92			rect.top >= 0 &&
93			rect.left >= 0 &&
94			rect.bottom <=
95				(window.innerHeight ||
96					document.documentElement.clientHeight) /* or $(window).height() */ &&
97			rect.right <=
98				(window.innerWidth ||
99					document.documentElement.clientWidth) /* or $(window).width() */
100		);
101	}
102
103	function newWindowLinks() {
104		// Open PDF In New Window
105		$('a[href$=".pdf"]').attr("target", "_blank");
106	}
107
108	function adjustHomepage() {
109		if ($(".hero--immersive").length > 0) {
110			if ($("#block-alertbanner").length > 0) {
111				$(".hero--immersive-wrapper-first-pane").addClass("has-alert");
112			} else {
113				$(".hero--immersive-wrapper-first-pane").removeClass("has-alert");
114			}
115		}
116	}
117
118	$(".scrollitem").on("click", function (event) {
119		$("html, body").animate(
120			{ scrollTop: $("#quilt").offset().top - 50 - $("#header").innerHeight() },
121			750
122		);
123	});
124
125	function getMaxHeight(el) {
126		let maxheights = [];
127		maxheights = Array.from(
128			jQuery(el).find("[data-columns] .stacked-heading")
129		).map((item) => jQuery(item).outerHeight());
130		let mh = Math.max.apply(null, maxheights);
131		jQuery(el)
132			.find("[data-columns] .stacked-heading")
133			.css("min-height", mh + "px");
134	}
135
136	function resizeStackedCapabilityColumns() {
137		Array.from(jQuery(".stacked-capability-column")).forEach((item) =>
138			getMaxHeight(item)
139		);
140	}
141
142	resizeStackedCapabilityColumns();
143
144	function focusOnSearch() {
145		setTimeout('document.querySelector("ul.menu a.search").focus()', 500);
146		document
147			.querySelector("#search-panel")
148			.scrollIntoView({ behavior: "smooth" }, true);
149	}
150
151	function nav() {
152		$("ul.menu a.search, .search-close").on("click", function (event) {
153			event.preventDefault();
154			event.stopPropagation();
155			if ($("#search-panel").length > 0) {
156				$("#search-panel").toggle("slow", function () {
157					//hey, is a mobile menu open? close it
158					if (
159						window.innerWidth < 1200 &&
160						isElementInViewport($(".region-primary-menu-mobile"))
161					) {
162						if (
163							$(".region-primary-menu-mobile")[0].getBoundingClientRect()
164								.width !== 0
165						) {
166							$(".region-primary-menu-mobile").toggle();
167							$("#menu_checkbox").prop("checked", false);
168						}
169					}
170
171					//hey, is a desktop menu open, close it
172					if (
173						window.innerWidth >= 1200 &&
174						isElementInViewport($(".navigation-menu.is-visible"))
175					) {
176						let active = document.querySelector(".navigation-item .menu-open");
177						if (active) {
178							active.classList.remove("menu-open");
179							active.setAttribute("aria-expanded", "false");
180						}
181
182						let targetNavItem = $(".menu-item.navigation-menu.is-visible");
183						targetNavItem.removeClass("is-visible").addClass("is-hidden");
184						targetNavItem.attr("aria-hidden", "true");
185					}
186
187					if (isElementInViewport($("#search-panel"))) {
188						//now once the search panel is open, let's make it focus in the edit text box
189						setTimeout(
190							'document.querySelector("#search-panel #edit-keys").focus()',
191							500
192						);
193					} else {
194						//if it's not ope, focus on the search button
195						// setTimeout('document.querySelector("ul.menu a.search").focus()', 500);
196						focusOnSearch();
197					}
198				});
199			} else {
200				setTimeout('document.querySelector("#edit-keys").focus()', 500);
201			}
202		});
203
204		function openFooterAccordions() {
205			// console.log(window.innerWidth);
206			// debugger;
207			let trigger = ".site-footer .accordion .collapse-trigger";
208			let target = ".site-footer .accordion .collapse-target";
209			if (window.innerWidth > 992) {
210				$(trigger).removeClass("collapsed").attr("aria-expanded", "true");
211				$(target)
212					.removeClass("collapsed collapse")
213					.addClass("show")
214					.attr("aria-expanded", "true");
215			} else {
216				// debugger;
217				$(trigger)
218					.not('[date-stayopen="true"]')
219					.addClass("collapsed")
220					.attr("aria-expanded", "false");
221				$(target)
222					.not(jQuery('[date-stayopen="true"]').siblings(".collapse-target"))
223					.addClass("collapsed collapse")
224					.removeClass("show")
225					.attr("aria-expanded", "false");
226
227				jQuery('[date-stayopen="true"]').trigger("click");
228				jQuery('[date-stayopen="true"]').attr("aria-expanded", "true");
229				jQuery('[date-stayopen="true"]').hide();
230				jQuery('[date-stayopen="true"]')
231					.siblings(".collapse-target")
232					.addClass("show")
233					.attr("aria-expanded", "true");
234			}
235		}
236
237		var debounceResize = Drupal.debounce(function () {
238			openFooterAccordions();
239		}, 250);
240
241		window.addEventListener("resize", debounceResize);
242
243		openFooterAccordions();
244	}
245
246	nav();
247
248	$(document).ready(function () {
249		hasSupports();
250		adjustHomepage();
251		newWindowLinks();
252		// addClearField();
253
254		$(".article--featured-card a").attr("tabindex", "0");
255		$(".site-footer a:visible, .site-footer button.collapse-trigger").attr(
256			"tabindex",
257			"0"
258		);
259	});
260})(jQuery);
261
262(function ($) {
263	Drupal.behaviors.leadershipTabLinks = {
264		attach: function (context, settings) {
265			$(
266				".leadership-tabs [name='field_person_type_target_id'] ul li:not(:first-of-type) a "
267			).on("click", function (event) {
268				var thisCategory = $(this).text();
269				$(".leadership-tabs .view-content .item-list ul").fadeOut();
270				if (thisCategory === "Executive") {
271					$("#page-wrapper").removeClass("leadership-no-images");
272				} else {
273					$("#page-wrapper").addClass("leadership-no-images");
274				}
275			});
276		},
277	};
278})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.