No problem! It’s my pleasure to help you
Good Morning Max,
i think, i have found the issue! The Childs are not example ( Child1 = Group Hypercars, Child2 = Group Racer, etc. ) rather the rows ( row1 are Child1 ) and so on…
Then if you search a word… the word in Group3 will be in first row and Child1 and get the color from child 1
I hope, you understand me… puhhh difficult!
Thats a task for a script… not an css…
best regards
Harald
Hi @Harald
Thank you for waiting!
You are absolutely right, you need to remove the CSS code from the Custom CSS fieild and add this script right after the widget’s installation code:
<script>
const config = [
{
question:
'Gruppe Hypercars - Abfahrt 09.30 Uhr - Funkgerät Kanal 2 - Roadcaptain Hilfe: 0660/5558520',
color: 'rgb(236, 231, 53)'
},
{
question:
'Gruppe Racer - Abfahrt 09.45 Uhr - Funkgerät Kanal 3 - Roadcaptain Hilfe: 0664/8157284',
color: 'rgb(191, 191, 191)'
},
{
question:
'Gruppe Drifter - Abfahrt 10.00 Uhr - Funkgerät Kanal 4 - Roadcaptain Hilfe: 0664/5152078',
color: 'rgb(218, 27, 78)'
}
];
const listenerBlock = (selector, callback) => {
const initialTargetNode = document.querySelector(selector);
if (initialTargetNode) {
return callback(initialTargetNode);
}
let shouldBreak = false;
const mutationObserver = new MutationObserver((mutations) => {
for (const { addedNodes } of mutations) {
if (shouldBreak) {
shouldBreak = false;
break;
}
for (const addedNode of addedNodes) {
if (addedNode.nodeType === Node.ELEMENT_NODE) {
const targetNode = addedNode.querySelector(selector);
if (targetNode) {
shouldBreak = true;
callback(targetNode);
break;
}
}
}
}
});
mutationObserver.observe(
document.querySelector(
'.elfsight-app-12cad5b7-4547-4d99-806f-006dff3c104a'
),
{
childList: true,
subtree: true
}
);
};
const normalizedString = (str) => str.trim().toLocaleLowerCase();
const isLight = (color) => {
let r, g, b;
if (color.substring(0, 1) === '#') {
r = parseInt(color.substring(1, 3), 16);
g = parseInt(color.substring(3, 5), 16);
b = parseInt(color.substring(5, 7), 16);
}
if (color.substring(0, 3).toLowerCase() === 'rgb') {
let rgb = color.match(/\d+/g);
r = parseInt(rgb[0]);
g = parseInt(rgb[1]);
b = parseInt(rgb[2]);
}
const brightness = (r * 299 + g * 587 + b * 114) / 1000;
return brightness > 125;
};
listenerBlock('.eapps-faq-content-category-items', (container) => {
const questions = container.querySelectorAll(
'.eapps-faq-content-category-item-question'
);
questions.forEach((question) => {
const currentQuestion = config.find(
(item) =>
normalizedString(item.question) ===
normalizedString(question.textContent)
);
if (currentQuestion) {
if (question.style.backgroundColor !== currentQuestion.color) {
question.style.backgroundColor = currentQuestion.color;
}
const text = question.querySelector(
'.eapps-faq-content-category-item-question-text'
);
const textColor = isLight(currentQuestion.color)
? 'rgb(17, 17, 17) !important'
: 'rgb(255, 255, 255) !important';
if (text.style.color !== textColor)
text.style.cssText = `
color: ${textColor}
`;
}
});
});
</script>
In case you’d like to change the color of a field, find the question in the config
parameter and adjust its color. To add a new question, just include a new object similar to the existing ones, separated by a comma.
Check it out and let me know if it helped
Great, it works!!! Thank you for your help Max!
Awesome!
You are always welcome