Greasy Fork is available in English.

iCloud full day events border

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

// ==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);
})();