PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
| Dir : /home/distinctdesign/codenwebz.com/website-design-3/js/ |
| Server: Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 IP: 162.0.232.53 |
| Dir : /home/distinctdesign/codenwebz.com/website-design-3/js/ada.js |
document.addEventListener('DOMContentLoaded', () => {
// Set aria-label on nav elements
const navContainers = document.querySelectorAll('.aria-label-js');
if (navContainers.length > 0) {
navContainers.forEach(container => {
const labelText = container.getAttribute('aria-label');
const navElement = container.querySelector('nav');
if (labelText && navElement) {
navElement.setAttribute('aria-label', labelText);
container.removeAttribute('aria-label');
}
});
}
// Breakdance form messages
(() => {
const formMessageSelector = '.breakdance-form-message';
const applyA11yAttributesToFormMessageElement = (formMessageElement) => {
const isHtmlElement = formMessageElement instanceof HTMLElement;
if (isHtmlElement) {
formMessageElement.setAttribute('role', 'status');
formMessageElement.setAttribute('aria-live', 'polite');
const hasTabindexAttribute = formMessageElement.hasAttribute('tabindex');
if (!hasTabindexAttribute) {
formMessageElement.setAttribute('tabindex', '-1');
}
}
};
const focusFormMessageElementAfterPaint = (formMessageElement) => {
const isHtmlElement = formMessageElement instanceof HTMLElement;
if (isHtmlElement) {
requestAnimationFrame(() => {
formMessageElement.focus({ preventScroll: true });
requestAnimationFrame(() => {
const isFocused = document.activeElement === formMessageElement;
if (!isFocused) {
formMessageElement.focus({ preventScroll: true });
}
});
});
}
};
const applyA11yAndFocusForFormMessageElement = (formMessageElement) => {
const isHtmlElement = formMessageElement instanceof HTMLElement;
if (isHtmlElement) {
applyA11yAttributesToFormMessageElement(formMessageElement);
focusFormMessageElementAfterPaint(formMessageElement);
}
};
const processAllExistingFormMessageElements = () => {
const formMessageElementList = document.querySelectorAll(formMessageSelector);
formMessageElementList.forEach((formMessageElement) => {
applyA11yAndFocusForFormMessageElement(formMessageElement);
});
};
const handleAddedNodeForFormMessage = (addedNode) => {
const isHtmlElement = addedNode instanceof HTMLElement;
if (isHtmlElement) {
if (addedNode.matches?.(formMessageSelector)) {
applyA11yAndFocusForFormMessageElement(addedNode);
} else {
const nestedFormMessageElement = addedNode.querySelector?.(formMessageSelector);
if (nestedFormMessageElement) {
applyA11yAndFocusForFormMessageElement(nestedFormMessageElement);
}
}
}
};
const handleMutationRecordList = (mutationRecordList) => {
mutationRecordList.forEach((mutationRecord) => {
if (mutationRecord.type === 'childList') {
mutationRecord.addedNodes.forEach((addedNode) => {
handleAddedNodeForFormMessage(addedNode);
});
}
});
};
const startBreakdanceFormMessageObserver = () => {
processAllExistingFormMessageElements();
const breakdanceFormMessageMutationObserver = new MutationObserver((mutationRecordList) => {
handleMutationRecordList(mutationRecordList);
});
breakdanceFormMessageMutationObserver.observe(document.body, {
childList: true,
subtree: true,
});
};
startBreakdanceFormMessageObserver();
})();
// Breakdamce blockquote
(() => {
const blockquoteElements = document.querySelectorAll('.bde-blockquote');
if (blockquoteElements.length > 0) {
blockquoteElements.forEach((blockquoteElement) => {
blockquoteElement.setAttribute('role', 'blockquote');
});
}
})();
// Chat bubble close button
const closeChatLabelText = 'Close chat widget';
const chatWidgetSelector = 'chat-widget';
const applyCloseChatLabelToRoot = (searchRootNode) => {
const buttonNodeList = searchRootNode.querySelectorAll('button');
buttonNodeList.forEach((buttonElement) => {
const existingAriaLabel = buttonElement.getAttribute('aria-label');
const existingTitle = buttonElement.getAttribute('title');
const buttonText = (buttonElement.textContent || '').trim().toLowerCase();
const buttonClassText = (buttonElement.className || '').toString().toLowerCase();
const buttonTestIdText = (buttonElement.getAttribute('data-testid') || '').toLowerCase();
const hasSvgIcon = !!buttonElement.querySelector('svg');
const looksLikeCloseButton =
buttonTestIdText.includes('close') ||
buttonClassText.includes('close') ||
buttonText === '×' ||
buttonText === 'x';
if (!existingAriaLabel && hasSvgIcon && looksLikeCloseButton) {
buttonElement.setAttribute('aria-label', closeChatLabelText);
}
if (!existingTitle && hasSvgIcon && looksLikeCloseButton) {
buttonElement.setAttribute('title', closeChatLabelText);
}
});
};
const applyCloseChatLabel = () => {
const chatWidgetElementList = document.querySelectorAll(chatWidgetSelector);
chatWidgetElementList.forEach((chatWidgetElement) => {
const widgetShadowRoot = chatWidgetElement.shadowRoot;
if (widgetShadowRoot) {
applyCloseChatLabelToRoot(widgetShadowRoot);
}
applyCloseChatLabelToRoot(chatWidgetElement);
});
};
const domMutationObserver = new MutationObserver(() => {
applyCloseChatLabel();
});
applyCloseChatLabel();
domMutationObserver.observe(document.documentElement, {
childList: true,
subtree: true
});
// Modal window landmarks
(() => {
const modalTitleId = 'get-fired-modal-title';
const modalDescriptionId = 'get-fired-modal-description';
let popupRootObserver = null;
let bodyInsertionObserver = null;
let isApplyQueued = false;
const disconnectPopupRootObserver = () => {
if (popupRootObserver) {
popupRootObserver.disconnect();
popupRootObserver = null;
}
};
const disconnectBodyInsertionObserver = () => {
if (bodyInsertionObserver) {
bodyInsertionObserver.disconnect();
bodyInsertionObserver = null;
}
};
const applyGetFiredModalA11y = () => {
const minimizedPopupRootElement = document.getElementById('get-fired-minimized');
const modalPanelElement = minimizedPopupRootElement ? minimizedPopupRootElement.querySelector('.breakdance-popup') : null;
const modalTitleElement = minimizedPopupRootElement ? minimizedPopupRootElement.querySelector('.bde-text-18152-148') : null;
const modalDescriptionElement = minimizedPopupRootElement ? minimizedPopupRootElement.querySelector('.bde-rich-text-18152-149') : null;
if (modalTitleElement && !modalTitleElement.id) {
modalTitleElement.id = modalTitleId;
}
if (modalDescriptionElement && !modalDescriptionElement.id) {
modalDescriptionElement.id = modalDescriptionId;
}
if (modalPanelElement) {
modalPanelElement.setAttribute('role', 'dialog');
modalPanelElement.setAttribute('aria-modal', 'true');
if (modalTitleElement && modalTitleElement.id) {
modalPanelElement.setAttribute('aria-labelledby', modalTitleElement.id);
}
if (modalDescriptionElement && modalDescriptionElement.id) {
modalPanelElement.setAttribute('aria-describedby', modalDescriptionElement.id);
}
}
};
const queueApplyGetFiredModalA11y = () => {
if (!isApplyQueued) {
isApplyQueued = true;
requestAnimationFrame(() => {
isApplyQueued = false;
applyGetFiredModalA11y();
});
}
};
const observePopupRootElement = () => {
const minimizedPopupRootElement = document.getElementById('get-fired-minimized');
disconnectPopupRootObserver();
if (minimizedPopupRootElement) {
popupRootObserver = new MutationObserver(() => {
queueApplyGetFiredModalA11y();
});
popupRootObserver.observe(minimizedPopupRootElement, {
childList: true,
subtree: true
});
}
};
const observeForPopupInsertion = () => {
const documentBodyElement = document.body;
disconnectPopupRootObserver();
if (documentBodyElement) {
popupRootObserver = new MutationObserver(() => {
const minimizedPopupRootElement = document.getElementById('get-fired-minimized');
if (minimizedPopupRootElement) {
observePopupRootElement();
queueApplyGetFiredModalA11y();
}
});
popupRootObserver.observe(documentBodyElement, {
childList: true,
subtree: true
});
}
};
const startGetFiredModalA11y = () => {
const minimizedPopupRootElement = document.getElementById('get-fired-minimized');
applyGetFiredModalA11y();
if (minimizedPopupRootElement) {
observePopupRootElement();
} else {
observeForPopupInsertion();
}
};
if (document.body) {
startGetFiredModalA11y();
} else {
bodyInsertionObserver = new MutationObserver(() => {
if (document.body) {
disconnectBodyInsertionObserver();
startGetFiredModalA11y();
}
});
bodyInsertionObserver.observe(document.documentElement, {
childList: true,
subtree: true
});
}
})();
// Chat widget landmarks
(() => {
const chatLandmarkRoleValue = 'complementary';
const chatLandmarkLabelValue = 'Live chat';
let applyQueuedFlag = false;
let bodyObserverInstance = null;
const applyChatWidgetLandmark = () => {
const chatWidgetElement = document.querySelector('chat-widget');
if (chatWidgetElement) {
chatWidgetElement.setAttribute('role', chatLandmarkRoleValue);
chatWidgetElement.setAttribute('aria-label', chatLandmarkLabelValue);
}
};
const queueApplyChatWidgetLandmark = () => {
if (!applyQueuedFlag) {
applyQueuedFlag = true;
requestAnimationFrame(() => {
applyQueuedFlag = false;
applyChatWidgetLandmark();
});
}
};
const observeBodyForChatWidget = () => {
const bodyElement = document.body;
if (bodyElement) {
if (bodyObserverInstance) {
bodyObserverInstance.disconnect();
bodyObserverInstance = null;
}
bodyObserverInstance = new MutationObserver(() => {
queueApplyChatWidgetLandmark();
});
bodyObserverInstance.observe(bodyElement, { childList: true, subtree: true });
}
};
applyChatWidgetLandmark();
observeBodyForChatWidget();
})();
// FAQs announcement
(() => {
const faqComponentSelector = '.bde-frequently-asked-questions'
const faqToggleButtonSelector = 'button[aria-controls]'
const faqAnswerRegionSelector = '.bde-faq__answer'
const setRegionAriaHiddenFromExpanded = (faqToggleButtonElement) => {
const expandedAttributeValue = faqToggleButtonElement.getAttribute('aria-expanded')
const isExpanded = expandedAttributeValue === 'true'
const faqItemElement = faqToggleButtonElement.closest('.bde-faq__item')
if (faqItemElement) {
const faqAnswerRegionElement = faqItemElement.querySelector(faqAnswerRegionSelector)
if (faqAnswerRegionElement) {
faqAnswerRegionElement.setAttribute('aria-hidden', isExpanded ? 'false' : 'true')
}
}
}
const syncAllFaqComponents = () => {
const faqComponentElements = document.querySelectorAll(faqComponentSelector)
faqComponentElements.forEach((faqComponentElement) => {
const faqToggleButtonElements = faqComponentElement.querySelectorAll(faqToggleButtonSelector)
faqToggleButtonElements.forEach((faqToggleButtonElement) => {
setRegionAriaHiddenFromExpanded(faqToggleButtonElement)
})
})
}
const observeFaqComponents = () => {
const ariaExpandedObserver = new MutationObserver((mutationRecordList) => {
mutationRecordList.forEach((mutationRecord) => {
const isAriaExpandedAttributeChange = mutationRecord.type === 'attributes' && mutationRecord.attributeName === 'aria-expanded'
const changedElementIsButton = mutationRecord.target instanceof HTMLElement && mutationRecord.target.matches(faqToggleButtonSelector)
if (isAriaExpandedAttributeChange && changedElementIsButton) {
setRegionAriaHiddenFromExpanded(mutationRecord.target)
}
})
})
ariaExpandedObserver.observe(document.documentElement, {
attributes: true,
attributeFilter: ['aria-expanded'],
subtree: true
})
}
syncAllFaqComponents()
observeFaqComponents()
})();
// Breakdance Tooltips
(() => {
const tooltipSelector = '.bde-tooltip[data-tippy-content]';
const ensureFocusable = (tooltipElement) => {
tooltipElement.removeAttribute('aria-expanded');
const iconElement = tooltipElement.querySelector('.tooltip-icon');
const triggerElement = iconElement || tooltipElement;
// ALWAYS enforce focusability
triggerElement.setAttribute('tabindex', '0');
triggerElement.setAttribute('role', 'button');
// Ensure accessible name
const hasAccessibleName =
triggerElement.getAttribute('aria-label') ||
triggerElement.textContent.trim().length > 0;
if (!hasAccessibleName) {
const temp = document.createElement('div');
temp.innerHTML = tooltipElement.getAttribute('data-tippy-content') || '';
const text = (temp.textContent || '').trim();
if (text) {
triggerElement.setAttribute('aria-label', text);
}
}
};
const patchAll = () => {
document.querySelectorAll(tooltipSelector).forEach((tooltipElement) => {
ensureFocusable(tooltipElement);
});
};
const observer = new MutationObserver(() => {
patchAll();
});
observer.observe(document.documentElement, {
childList: true,
subtree: true
});
patchAll();
})();
});
// Breakdance tooltips keyboard support
document.addEventListener('focusin', (event) => {
const tooltipElement = event.target.closest('.bde-tooltip');
if (tooltipElement && tooltipElement._tippy) {
tooltipElement._tippy.show();
}
});
document.addEventListener('focusout', (event) => {
const tooltipElement = event.target.closest('.bde-tooltip');
if (tooltipElement && tooltipElement._tippy) {
tooltipElement._tippy.hide();
}
});
document.addEventListener('keydown', (event) => {
const tooltipElement = event.target.closest('.bde-tooltip');
if (!tooltipElement || !tooltipElement._tippy) return;
if (event.key === 'Enter' || event.key === ' ') {
event.preventDefault();
tooltipElement._tippy.show();
}
if (event.key === 'Escape') {
tooltipElement._tippy.hide();
}
});
// Chat bubble toggle focus (shadow root)
const applyLeadConnectorBubbleFocusRingOverride = () => {
const chatWidgetElement = document.querySelector('chat-widget');
const shadowRootNode =
chatWidgetElement &&
chatWidgetElement.shadowRoot
? chatWidgetElement.shadowRoot
: null;
const hasShadowRoot = !!shadowRootNode;
const hasHostMarker =
!!chatWidgetElement && chatWidgetElement.getAttribute('data-ada-lc-focus-ring') === '1';
const overrideCssText = `
button.lc_text-widget--bubble.lc_text-widget--bubble:focus,
button.lc_text-widget--bubble.lc_text-widget--bubble:focus-visible{
outline-style: solid !important;
outline-width: 3px !important;
outline-color: #000 !important;
outline-offset: 3px !important;
box-shadow: 0 0 0 6px #F6DC3B !important;
}
`;
const canUseConstructedStylesheets =
hasShadowRoot &&
'adoptedStyleSheets' in shadowRootNode &&
'replaceSync' in CSSStyleSheet.prototype;
if (hasShadowRoot && !hasHostMarker && canUseConstructedStylesheets) {
const overrideStyleSheet = new CSSStyleSheet();
overrideStyleSheet.replaceSync(overrideCssText);
const existingAdoptedStyleSheetList = shadowRootNode.adoptedStyleSheets || [];
shadowRootNode.adoptedStyleSheets = [...existingAdoptedStyleSheetList, overrideStyleSheet];
chatWidgetElement.setAttribute('data-ada-lc-focus-ring', '1');
}
if (hasShadowRoot && !hasHostMarker && !canUseConstructedStylesheets) {
const styleElementId = 'ada-lc-bubble-focus-ring';
const existingStyleElement = shadowRootNode.getElementById(styleElementId);
if (!existingStyleElement) {
const styleElement = document.createElement('style');
styleElement.id = styleElementId;
styleElement.textContent = overrideCssText;
shadowRootNode.appendChild(styleElement);
chatWidgetElement.setAttribute('data-ada-lc-focus-ring', '1');
}
}
};
applyLeadConnectorBubbleFocusRingOverride();
// Retry once when focus enters the widget (covers late stylesheet injection)
document.addEventListener(
'focusin',
() => {
applyLeadConnectorBubbleFocusRingOverride();
},
true
);