From 0dfe1d8afafc59c4a5559c498342668d5a58d6ef Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Thu, 23 Jul 2026 22:41:41 +0000
Subject: [PATCH] =Still working away at the Integrations overhaul

---
 assets/js/min/hours.min.js |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/assets/js/min/hours.min.js b/assets/js/min/hours.min.js
index 6e806ec..3dd5cf3 100644
--- a/assets/js/min/hours.min.js
+++ b/assets/js/min/hours.min.js
@@ -1 +1 @@
-(()=>{class e{constructor(){this.createModal(),this.setupModal(),this.currentSourceDay=null,this.days=["monday","tuesday","wednesday","thursday","friday","saturday","sunday"],this.init()}handleChange(e){window.targetCheck(".hours-copy-btn")&&e.preventDefault({bubbles:!0})}init(){this.addCopyButtons(),this.bindEvents()}createModal(){this.modalElement=document.querySelector("dialog#copy-hours")}setupModal(){this.modal=new window.jvbModal(this.modalElement,{open:".hours-copy-btn",openMessage:"Copy hours modal opened",closeMessage:"Copy hours modal closed"}),this.modal.subscribe((e,o)=>{switch(e){case"modal-open":let e=o.event,t=o.modal;const s=e.target.closest('.group:not([data-field="openingHours"])'),n=this.getDayNameFromGroup(s);if(!n)return;this.currentSourceDay=n;const a=this.getSourceDayData(s);console.log(a);const c=t.querySelector(".source-day"),r=t.querySelector(".source-hours");console.log("Elements: ",{sourceDayEl:c,sourceHoursEl:r}),c&&(c.textContent=window.uppercaseFirst?window.uppercaseFirst(n):n.charAt(0).toUpperCase()+n.slice(1)),r&&(a.isOpen&&a.opens&&a.closes?(r.textContent=`${a.opens} - ${a.closes}`,r.className="source-hours"):(r.textContent="Closed",r.className="source-hours closed")),this.modal.modal.querySelector(`label[for=copy-to-${n}]`).hidden=!0,this.modal.modal.querySelectorAll(`label:not([for=copy-to-${n}])[hidden]`).hidden=!1;break;case"modal-close":this.applyCopyHours(),this.currentSourceDay=null}})}addCopyButtons(){document.querySelectorAll('[data-field="openingHours"] .group.field').forEach(e=>{if(!e.querySelector(".hours-copy-btn")){const o=this.createCopyButton();e.append(o)}})}createCopyButton(){const e=window.getTemplate("blankButton");return e.type="button",e.className="hours-copy-btn",e.title="Copy this time to other days",e.prepend(window.getIcon("copy")),e.setAttribute("data-action","copy-hours"),e}bindEvents(){this.changeHandler=this.handleChange.bind(this),this.modal.modal.addEventListener("change",this.changeHandler)}getDayNameFromGroup(e){return e.dataset.field.replace("openingHours|","")}getSourceDayData(e){const o=e.querySelector(`input[type="checkbox"][name="openingHours|${this.currentSourceDay}|isOpen"]`),t=e.querySelector(`input[name="openingHours|${this.currentSourceDay}|opens"]`),s=e.querySelector(`input[name="openingHours|${this.currentSourceDay}|closes"]`);return{isOpen:!!o&&o.checked,opens:t?t.value:"",closes:s?s.value:""}}applyCopyHours(){if(!this.currentSourceDay)return;const e=document.querySelector(`.group[data-field="openingHours|${this.currentSourceDay}"]`);if(!e)return;const o=this.getSourceDayData(e),t=Array.from(this.modal.modal.querySelectorAll("input:checked")).map(e=>e.value);0!==t.length?(t.forEach(e=>{this.applyHoursToDay(e,o)}),this.showSuccessFeedback(t.length)):alert("Please select at least one day to copy to.")}applyHoursToDay(e,o){const t=document.querySelector(`.group[data-field="openingHours|${e}`);if(!t)return;const s=t.querySelector(`input[type="checkbox"][name="openingHours|${e}|isOpen"]`),n=t.querySelector(`input[name="openingHours|${e}|opens"]`),a=t.querySelector(`input[name="openingHours|${e}|closes"]`);console.log("applying hours to days: ",{openCheckbox:s,opensInput:n,closesInput:a}),s&&(s.checked=o.isOpen,s.dispatchEvent(new Event("change",{bubbles:!0})),o.isOpen&&n&&a?(n.value=o.opens,n.dispatchEvent(new Event("change",{bubbles:!0})),a.value=o.closes,a.dispatchEvent(new Event("change",{bubbles:!0}))):n&&a&&(n.value="",n.dispatchEvent(new Event("change",{bubbles:!0})),a.value="",a.dispatchEvent(new Event("change",{bubbles:!0}))))}showSuccessFeedback(e){let o=document.getElementById("copy-success-feedback");const t=1===e?"Hours copied to 1 day successfully!":`Hours copied to ${e} days successfully!`;o.querySelector("span").textContent=t,o.classList.add("show"),window.debouncer.schedule("copy-success",()=>{o.classList.remove("show")},3e3),window.jvbA11y&&window.jvbA11y.announce&&window.jvbA11y.announce(t)}}document.addEventListener("DOMContentLoaded",()=>{window.jvbCopy=new e})})();
\ No newline at end of file
+(()=>{class e{constructor(){this.createModal(),this.setupModal(),this.currentSourceDay=null,this.days=["monday","tuesday","wednesday","thursday","friday","saturday","sunday"],this.init()}handleChange(e){window.targetCheck(".hours-copy-btn")&&e.preventDefault({bubbles:!0})}init(){this.addCopyButtons(),this.bindEvents()}createModal(){this.modalElement=document.querySelector("dialog#copy-hours")}setupModal(){this.modal=new window.jvbModal(this.modalElement,{open:".hours-copy-btn",openMessage:"Copy hours modal opened",closeMessage:"Copy hours modal closed"}),this.modal.subscribe((e,t)=>{switch(e){case"modal-open":let e=t.event,o=t.modal;const s=e.target.closest('.group:not([data-field="openingHours"])'),n=this.getDayNameFromGroup(s);if(!n)return;this.currentSourceDay=n;const a=this.getSourceDayData(s),r=o.querySelector(".source-day"),c=o.querySelector(".source-hours");r&&(r.textContent=window.uppercaseFirst?window.uppercaseFirst(n):n.charAt(0).toUpperCase()+n.slice(1)),c&&(a.isOpen&&a.opens&&a.closes?(c.textContent=`${a.opens} - ${a.closes}`,c.className="source-hours"):(c.textContent="Closed",c.className="source-hours closed")),this.modal.modal.querySelector(`label[for=copy-to-${n}]`).hidden=!0,this.modal.modal.querySelectorAll(`label:not([for=copy-to-${n}])[hidden]`).hidden=!1;break;case"modal-close":this.applyCopyHours(),this.currentSourceDay=null}})}addCopyButtons(){document.querySelectorAll('[data-field="openingHours"] .group.field').forEach(e=>{if(!e.querySelector(".hours-copy-btn")){const t=this.createCopyButton();e.append(t)}})}createCopyButton(){const e=window.getTemplate("blankButton");return e.type="button",e.className="hours-copy-btn",e.title="Copy this time to other days",e.prepend(window.getIcon("copy")),e.setAttribute("data-action","copy-hours"),e}bindEvents(){this.changeHandler=this.handleChange.bind(this),this.modal.modal.addEventListener("change",this.changeHandler)}getDayNameFromGroup(e){return e.dataset.field.replace("openingHours|","")}getSourceDayData(e){const t=e.querySelector(`input[type="checkbox"][name="openingHours|${this.currentSourceDay}|isOpen"]`),o=e.querySelector(`input[name="openingHours|${this.currentSourceDay}|opens"]`),s=e.querySelector(`input[name="openingHours|${this.currentSourceDay}|closes"]`);return{isOpen:!!t&&t.checked,opens:o?o.value:"",closes:s?s.value:""}}applyCopyHours(){if(!this.currentSourceDay)return;const e=document.querySelector(`.group[data-field="openingHours|${this.currentSourceDay}"]`);if(!e)return;const t=this.getSourceDayData(e),o=Array.from(this.modal.modal.querySelectorAll("input:checked")).map(e=>e.value);0!==o.length?(o.forEach(e=>{this.applyHoursToDay(e,t)}),this.showSuccessFeedback(o.length)):alert("Please select at least one day to copy to.")}applyHoursToDay(e,t){const o=document.querySelector(`.group[data-field="openingHours|${e}`);if(!o)return;const s=o.querySelector(`input[type="checkbox"][name="openingHours|${e}|isOpen"]`),n=o.querySelector(`input[name="openingHours|${e}|opens"]`),a=o.querySelector(`input[name="openingHours|${e}|closes"]`);s&&(s.checked=t.isOpen,s.dispatchEvent(new Event("change",{bubbles:!0})),t.isOpen&&n&&a?(n.value=t.opens,n.dispatchEvent(new Event("change",{bubbles:!0})),a.value=t.closes,a.dispatchEvent(new Event("change",{bubbles:!0}))):n&&a&&(n.value="",n.dispatchEvent(new Event("change",{bubbles:!0})),a.value="",a.dispatchEvent(new Event("change",{bubbles:!0}))))}showSuccessFeedback(e){let t=document.getElementById("copy-success-feedback");const o=1===e?"Hours copied to 1 day successfully!":`Hours copied to ${e} days successfully!`;t.querySelector("span").textContent=o,t.classList.add("show"),window.debouncer.schedule("copy-success",()=>{t.classList.remove("show")},3e3),window.jvbA11y&&window.jvbA11y.announce&&window.jvbA11y.announce(o)}}document.addEventListener("DOMContentLoaded",()=>{window.jvbCopy=new e})})();
\ No newline at end of file

--
Gitblit v1.10.0