Sha256: 05b646b39b040244e8972cd514db6ff9229f4afcb98cc787da39b526ce3e669c

Contents?: true

Size: 1.71 KB

Versions: 1

Compression:

Stored size: 1.71 KB

Contents

function weekSelectPlugin(pluginConfig) {
	return function(fp) {
		function onDayHover(event){
			if (!event.target.classList.contains("flatpickr-day"))
				return;

			const days = event.target.parentNode.childNodes;
			const dayIndex = event.target.$i;
			const weekStartDay = days[7 * Math.floor(dayIndex / 7)].dateObj;
			const weekEndDay = days[7 * Math.ceil(dayIndex / 7) - 1].dateObj;

			for(let i = days.length; i--;) {
				const date = days[i].dateObj;
				if (date > weekEndDay || date < weekStartDay)
					days[i].classList.remove("inRange");
				else
					days[i].classList.add("inRange");
			}
		}

		function highlightWeek(){
			if (fp.selectedDateElem) {
				fp.weekStartDay = fp.days.childNodes[
          7 * Math.floor(fp.selectedDateElem.$i / 7)
        ].dateObj;
				fp.weekEndDay = fp.days.childNodes[
          7 * Math.ceil(fp.selectedDateElem.$i / 7) - 1
        ].dateObj;
			}
			const days = fp.days.childNodes;
			for(let i = days.length; i--;) {
				const date = days[i].dateObj;
				if (date >= fp.weekStartDay && date <= fp.weekEndDay)
					days[i].classList.add("week", "selected");
			}
		}

		function clearHover() {
			const days = fp.days.childNodes;
			for(let i = days.length; i--;)
				days[i].classList.remove("inRange");
		}

		function onReady(){
			fp.days.parentNode.addEventListener("mouseover", onDayHover);
		}

		return {
			onChange: highlightWeek,
			onMonthChange: () => fp._.afterDayAnim(highlightWeek),
			onClose: clearHover,
			onParseConfig: function() {
				fp.config.mode = "single";
				fp.config.enableTime = false;
				fp.config.dateFormat = "\\W\\e\\e\\k #W, Y";
			},
			onReady: [onReady, highlightWeek]
		};
	}
}

if (typeof module !== "undefined")
	module.exports = weekSelectPlugin;

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
trestle-0.8.0 vendor/assets/bower_components/trestle/flatpickr/src/plugins/weekSelect/weekSelect.js