Sha256: c899a37722d0e93cab1fb65ecc56d1201977c38c923cf06d1ce5e8f43440ada2

Contents?: true

Size: 1.7 KB

Versions: 1

Compression:

Stored size: 1.7 KB

Contents

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

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

			for (var i = days.length; i--;) {
				var 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;
			}
			var days = fp.days.childNodes;
			for (var i = days.length; i--;) {
				var date = days[i].dateObj;
				if (date >= fp.weekStartDay && date <= fp.weekEndDay) days[i].classList.add("week", "selected");
			}
		}

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

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

		return {
			onChange: highlightWeek,
			onMonthChange: function onMonthChange() {
				return fp._.afterDayAnim(highlightWeek);
			},
			onClose: clearHover,
			onParseConfig: function onParseConfig() {
				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/dist/plugins/weekSelect/weekSelect.js