iCloud full day events border

Apply the default border with the good color on full day events.

بۇ قوليازمىنى قاچىلاش؟
ئاپتورنىڭ تەۋسىيەلىگەن قوليازمىسى

سىز بەلكىم iCloud customizations نى ياقتۇرۇشىڭىز مۇمكىن.

ئىشلەتكۈچى ئۇسلۇبى قىلىپ قاچىلاش
// ==UserScript==
// @name        iCloud full day events border
// @description Apply the default border with the good color on full day events.
// @namespace   https://gitlab.com/breatfr
// @match       https://www.icloud.com/calendar/
// @version     1.0.0
// @homepageURL https://gitlab.com/breatfr/icloud
// @supportURL  https://discord.gg/Q8KSHzdBxs
// @author      BreatFR
// @copyright   2024, BreatFR (https://breat.fr)
// @grant       none
// @icon        https://www.icloud.com/system/icloud.com/2426Hotfix51/721bdfc3241b42114d62842854461ae7.png
// @license     BY-NC-ND; https://creativecommons.org/licenses/by-nc-nd/4.0/
// ==/UserScript==

(function() {
    'use strict';

    function applyBorderStyle() {
        const iframes = document.querySelectorAll('iframe');

        iframes.forEach(iframe => {
            try {
                const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
                const buttons = iframeDoc.querySelectorAll('div:not(:has(.month-view-event-preview-start-time)) .css-6310j7 > button:not(:has(svg))');

                buttons.forEach(button => {
                    const computedStyle = getComputedStyle(button);

                // Check if a border is defined with a color
                    if (computedStyle.border && computedStyle.border !== '0px none rgba(0, 0, 0, 0)') {
                        const borderColor = computedStyle.borderColor || computedStyle.borderLeftColor;

                        // If a color is defined, apply the left border
                        if (borderColor && borderColor !== 'rgba(0, 0, 0, 0)') {
                            button.style.borderLeft = `3px solid ${borderColor}`;
                        }
                    }
                });
            } catch (error) {
                console.error('Erreur avec un iframe:', error);
            }
        });
    }

    const observer = new MutationObserver(applyBorderStyle);

    observer.observe(document.body, {
        childList: true,
        subtree: true
    });

    applyBorderStyle();
    setInterval(applyBorderStyle, 1000);
})();