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/concise/CopyHours.js |   55 +++++++++++++++++--------------------------------------
 1 files changed, 17 insertions(+), 38 deletions(-)

diff --git a/assets/js/concise/CopyHours.js b/assets/js/concise/CopyHours.js
index 29e8692..56f649b 100644
--- a/assets/js/concise/CopyHours.js
+++ b/assets/js/concise/CopyHours.js
@@ -26,13 +26,6 @@
 
 	createModal() {
 		this.modalElement = document.querySelector('dialog#copy-hours');
-		// Create modal element if it doesn't exist
-		if (!this.modalElement) {
-			const modal = window.getTemplate('copyHours');
-			document.body.appendChild(modal);
-			this.modalElement = document.querySelector('dialog#copy-hours');
-		}
-		console.log(this.modalElement);
 	}
 
 	setupModal() {
@@ -49,25 +42,19 @@
 				case 'modal-open':
 					let e = data.event;
 					let modal = data.modal;
-					const dayGroup = e.target.closest('.group-fields:not(.hours)');
-					console.log(dayGroup);
+					const dayGroup = e.target.closest('.group:not([data-field="openingHours"])');
 					const dayName = this.getDayNameFromGroup(dayGroup);
-					console.log(dayName);
 					if (!dayName) return;
 
 					this.currentSourceDay = dayName;
-					console.log(dayName);
 
 					// Get source day hours
 					const sourceData = this.getSourceDayData(dayGroup);
 
-					console.log(sourceData);
-
 					// Update source day info
 					const sourceDayEl = modal.querySelector('.source-day');
 					const sourceHoursEl = modal.querySelector('.source-hours');
 
-					console.log('Elements: ', {sourceDayEl, sourceHoursEl});
 
 					if (sourceDayEl) {
 						sourceDayEl.textContent = window.uppercaseFirst ?
@@ -98,12 +85,12 @@
 
 	addCopyButtons() {
 		// Add copy buttons to each day group
-		const dayGroups = document.querySelectorAll('.group-fields.hours .group-fields:not(.hours)');
+		const dayGroups = document.querySelectorAll('[data-field="openingHours"] .group.field');
 
 		dayGroups.forEach(group => {
 			if (!group.querySelector('.hours-copy-btn')) {
 				const copyBtn = this.createCopyButton();
-				group.insertBefore(copyBtn, group.querySelector('.field.time'));
+				group.append(copyBtn);
 			}
 		});
 	}
@@ -125,15 +112,13 @@
 	}
 
 	getDayNameFromGroup(group) {
-		const classList = Array.from(group.classList);
-		return this.days.find(day => classList.includes(day));
+		return group.dataset.field.replace('openingHours|','');
 	}
 
 	getSourceDayData(dayGroup) {
-		console.log(dayGroup);
-		const openCheckbox = dayGroup.querySelector('input[type="checkbox"][name$=":open"]');
-		const opensInput = dayGroup.querySelector('input[name$=":time_opens"]');
-		const closesInput = dayGroup.querySelector('input[name$=":time_closes"]');
+		const openCheckbox = dayGroup.querySelector(`input[type="checkbox"][name="openingHours|${this.currentSourceDay}|isOpen"]`);
+		const opensInput = dayGroup.querySelector(`input[name="openingHours|${this.currentSourceDay}|opens"]`);
+		const closesInput = dayGroup.querySelector(`input[name="openingHours|${this.currentSourceDay}|closes"]`);
 
 		return {
 			isOpen: openCheckbox ? openCheckbox.checked : false,
@@ -145,7 +130,7 @@
 	applyCopyHours() {
 		if (!this.currentSourceDay) return;
 
-		const sourceGroup = document.querySelector(`.group-fields.${this.currentSourceDay}`);
+		const sourceGroup = document.querySelector(`.group[data-field="openingHours|${this.currentSourceDay}"]`);
 		if (!sourceGroup) return;
 
 		const sourceData = this.getSourceDayData(sourceGroup);
@@ -171,17 +156,13 @@
 	}
 
 	applyHoursToDay(dayName, sourceData) {
-		const targetGroup = document.querySelector(`.group-fields.${dayName}`);
+		const targetGroup = document.querySelector(`.group[data-field="openingHours|${dayName}`);
 		if (!targetGroup) return;
 
-		const openCheckbox = targetGroup.querySelector('input[type="checkbox"][name$=":open"]');
-		const opensInput = targetGroup.querySelector('input[name$=":time_opens"]');
-		const closesInput = targetGroup.querySelector('input[name$=":time_closes"]');
-		console.log('applying hours to days: ', {
-			openCheckbox,
-			opensInput,
-			closesInput
-		});
+		const openCheckbox = targetGroup.querySelector(`input[type="checkbox"][name="openingHours|${dayName}|isOpen"]`);
+		const opensInput = targetGroup.querySelector(`input[name="openingHours|${dayName}|opens"]`);
+		const closesInput = targetGroup.querySelector(`input[name="openingHours|${dayName}|closes"]`);
+
 		if (!openCheckbox) return;
 
 		// Set checkbox state
@@ -192,10 +173,14 @@
 		// Set time values if open
 		if (sourceData.isOpen && opensInput && closesInput) {
 			opensInput.value = sourceData.opens;
+			opensInput.dispatchEvent(new Event('change', {bubbles: true}));
 			closesInput.value = sourceData.closes;
+			closesInput.dispatchEvent(new Event('change', {bubbles: true}));
 		} else if (opensInput && closesInput) {
 			opensInput.value = '';
+			opensInput.dispatchEvent(new Event('change', {bubbles: true}));
 			closesInput.value = '';
+			closesInput.dispatchEvent(new Event('change', {bubbles: true}));
 		}
 
 	}
@@ -203,12 +188,6 @@
 	showSuccessFeedback(count) {
 		// Create or update feedback element
 		let feedback = document.getElementById('copy-success-feedback');
-		if (!feedback) {
-			feedback = document.createElement('div');
-			feedback.id = 'copy-success-feedback';
-			feedback.className = 'copy-success-feedback';
-			document.body.appendChild(feedback);
-		}
 
 		const message = count === 1 ?
 			'Hours copied to 1 day successfully!' :

--
Gitblit v1.10.0