Relationship to JRC Date: add Today button

Add a button to the Relationship to JRC Date field that sets it to today's date.

// ==UserScript==
// @name         Relationship to JRC Date: add Today button
// @namespace    https://github.com/nate-kean/
// @version      20251106
// @description  Add a button to the Relationship to JRC Date field that sets it to today's date.
// @author       Nate Kean
// @match        https://jamesriver.fellowshiponego.com/members/edit/*
// @match        https://jamesriver.fellowshiponego.com/members/add*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=fellowshiponego.com
// @grant        none
// @license      MIT
// @require      https://update.greasyfork.org/scripts/554804/1689525/Nate%27s%20Day%20Button.js
// ==/UserScript==

(async function() {
    document.head.insertAdjacentHTML("beforeend", `
        <style id="nates-today-button-css">
            .nates-day-button.today {
                float: right;
                margin-top: -2px;
            }
        </style>
    `);

    function delay(ms) {
        return new Promise((resolve) => setTimeout(resolve, ms));
    }

    function getDateString() {
        return new Intl.DateTimeFormat("en-US", {
            month: "2-digit",
            day: "2-digit",
            year: "numeric",
        }).format(new Date());
    }

    while (true) {
        for (const formGroup of document.querySelectorAll(".form-group")) {
            if (formGroup.querySelector("label")?.textContent.trim() !== "Relationship to JRC Date") {
                continue;
            }
            const btn = document.createElement("button");
            btn.classList.add("nates-day-button", "today");
            btn.textContent = "Today";
            btn.type = "button";
            btn.addEventListener("click", () => {
                formGroup.querySelector("input").value = getDateString();
            }, { passive: true });
            formGroup.prepend(btn);
            return;
        }
        await delay(100);
    }
})();