吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2110|回复: 3
收起左侧

[求助] Flatpickr时间日期选择组件

[复制链接]
cqwcns 发表于 2019-11-5 21:58
本帖最后由 cqwcns 于 2019-11-5 22:01 编辑

做网页前端,这段时间在用atlantis-lite框架(bootstrap4),很喜欢Form-Floating-Label这种INPUT样式。
由于页面需要一个时间日期选择,原来计划用bootstrap datetimepicker,但经过一番尝试,发现bootstrap datetimepicker对bootstrap4的兼容并不好。


查了一下,发现Flatpickr很不错,决定采用Flatpickr代替datetimepicker。


问题来了,我无法将Form-Floating-Label和Flatpickr完美的合并起来,即既有Form-Floating-Label的样式,又有Flatpickr的功能。
我写了一个demo(见附件),请各位大哥帮忙看看,请赐教,谢谢。

Demo免CB下载链接: https://pan.baidu.com/s/1hmNLvcmrqcBa_ZVPi21uXw 提取码: 1m6b
或者直接下载附件: demo.txt (108.79 KB, 下载次数: 2) ,附件实际是一个rar文件,修改扩容,然后解压即可。

c.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

听歌能减肥 发表于 2019-11-5 22:28
楼主厉害 感谢分享 学习了~~~
 楼主| cqwcns 发表于 2019-11-6 07:12
有个新发现,input定义Flatpickr后,Flatpickr会给input添加一个readonly="readonly"属性,在浏览器删除readonly="readonly"属性。


问题有来了,我尝试在flatpickr.min.js吧readonly删掉,不要让它给input添加这个属性,但删除后,Flatpickr功能失效。


各位大佬帮忙看看怎么修改flatpickr.min.js别给input添加只读属性就行,谢谢


[JavaScript] 纯文本查看 复制代码
/* flatpickr v4.6.3,, @license MIT */ ! function (e, t) {
	"object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : (e = e || self).flatpickr = t()
}(this, function () {
	"use strict";
	var e = function () {
			return (e = Object.assign || function (e) {
				for (var t, n = 1, a = arguments.length; n < a; n++)
					for (var i in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
				return e
			}).apply(this, arguments)
		},
		t = ["onChange", "onClose", "onDayCreate", "onDestroy", "onKeyDown", "onMonthChange", "onOpen", "onParseConfig", "onReady", "onValueUpdate", "onYearChange", "onPreCalendarPosition"],
		n = {
			_disable: [],
			_enable: [],
			allowInput: !1,
			altFormat: "F j, Y",
			altInput: !1,
			altInputClass: "form-control input",
			animate: "object" == typeof window && -1 === window.navigator.userAgent.indexOf("MSIE"),
			ariaDateFormat: "F j, Y",
			clickOpens: !0,
			closeOnSelect: !0,
			conjunction: ", ",
			dateFormat: "Y-m-d",
			defaultHour: 12,
			defaultMinute: 0,
			defaultSeconds: 0,
			disable: [],
			disableMobile: !1,
			enable: [],
			enableSeconds: !1,
			enableTime: !1,
			errorHandler: function (e) {
				return "undefined" != typeof console && console.warn(e)
			},
			getWeek: function (e) {
				var t = new Date(e.getTime());
				t.setHours(0, 0, 0, 0), t.setDate(t.getDate() + 3 - (t.getDay() + 6) % 7);
				var n = new Date(t.getFullYear(), 0, 4);
				return 1 + Math.round(((t.getTime() - n.getTime()) / 864e5 - 3 + (n.getDay() + 6) % 7) / 7)
			},
			hourIncrement: 1,
			ignoredFocusElements: [],
			inline: !1,
			locale: "default",
			minuteIncrement: 5,
			mode: "single",
			monthSelectorType: "dropdown",
			nextArrow: "<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>",
			noCalendar: !1,
			now: new Date,
			onChange: [],
			onClose: [],
			onDayCreate: [],
			onDestroy: [],
			onKeyDown: [],
			onMonthChange: [],
			onOpen: [],
			onParseConfig: [],
			onReady: [],
			onValueUpdate: [],
			onYearChange: [],
			onPreCalendarPosition: [],
			plugins: [],
			position: "auto",
			positionElement: void 0,
			prevArrow: "<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>",
			shorthandCurrentMonth: !1,
			showMonths: 1,
			static: !1,
			time_24hr: !1,
			weekNumbers: !1,
			wrap: !1
		},
		a = {
			weekdays: {
				shorthand: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
				longhand: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
			},
			months: {
				shorthand: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
				longhand: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
			},
			daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
			firstDayOfWeek: 0,
			ordinal: function (e) {
				var t = e % 100;
				if (t > 3 && t < 21) return "th";
				switch (t % 10) {
					case 1:
						return "st";
					case 2:
						return "nd";
					case 3:
						return "rd";
					default:
						return "th"
				}
			},
			rangeSeparator: " 至 ",
			weekAbbreviation: "周",
			scrollTitle: "滚动切换",
			toggleTitle: "点击切换",
			amPM: ["上午", "下午"],
			yearAriaLabel: "年",
			hourAriaLabel: "小时",
			minuteAriaLabel: "分",
			time_24hr: !1
		},
		i = function (e) {
			return ("0" + e).slice(-2)
		},
		o = function (e) {
			return !0 === e ? 1 : 0
		};

	function r(e, t, n) {
		var a;
		return void 0 === n && (n = !1),
			function () {
				var i = this,
					o = arguments;
				null !== a && clearTimeout(a), a = window.setTimeout(function () {
					a = null, n || e.apply(i, o)
				}, t), n && !a && e.apply(i, o)
			}
	}
	var l = function (e) {
		return e instanceof Array ? e : [e]
	};

	function c(e, t, n) {
		if (!0 === n) return e.classList.add(t);
		e.classList.remove(t)
	}

	function d(e, t, n) {
		var a = window.document.createElement(e);
		return t = t || "", n = n || "", a.className = t, void 0 !== n && (a.textContent = n), a
	}

	function s(e) {
		for (; e.firstChild;) e.removeChild(e.firstChild)
	}

	function u(e, t) {
		var n = d("div", "numInputWrapper"),
			a = d("input", "numInput " + e),
			i = d("span", "arrowUp"),
			o = d("span", "arrowDown");
		if (-1 === navigator.userAgent.indexOf("MSIE 9.0") ? a.type = "number" : (a.type = "text", a.pattern = "\\d*"), void 0 !== t)
			for (var r in t) a.setAttribute(r, t[r]);
		return n.appendChild(a), n.appendChild(i), n.appendChild(o), n
	}
	var f = function () {},
		m = function (e, t, n) {
			return n.months[t ? "shorthand" : "longhand"][e]
		},
		g = {
			D: f,
			F: function (e, t, n) {
				e.setMonth(n.months.longhand.indexOf(t))
			},
			G: function (e, t) {
				e.setHours(parseFloat(t))
			},
			H: function (e, t) {
				e.setHours(parseFloat(t))
			},
			J: function (e, t) {
				e.setDate(parseFloat(t))
			},
			K: function (e, t, n) {
				e.setHours(e.getHours() % 12 + 12 * o(new RegExp(n.amPM[1], "i").test(t)))
			},
			M: function (e, t, n) {
				e.setMonth(n.months.shorthand.indexOf(t))
			},
			S: function (e, t) {
				e.setSeconds(parseFloat(t))
			},
			U: function (e, t) {
				return new Date(1e3 * parseFloat(t))
			},
			W: function (e, t, n) {
				var a = parseInt(t),
					i = new Date(e.getFullYear(), 0, 2 + 7 * (a - 1), 0, 0, 0, 0);
				return i.setDate(i.getDate() - i.getDay() + n.firstDayOfWeek), i
			},
			Y: function (e, t) {
				e.setFullYear(parseFloat(t))
			},
			Z: function (e, t) {
				return new Date(t)
			},
			d: function (e, t) {
				e.setDate(parseFloat(t))
			},
			h: function (e, t) {
				e.setHours(parseFloat(t))
			},
			i: function (e, t) {
				e.setMinutes(parseFloat(t))
			},
			j: function (e, t) {
				e.setDate(parseFloat(t))
			},
			l: f,
			m: function (e, t) {
				e.setMonth(parseFloat(t) - 1)
			},
			n: function (e, t) {
				e.setMonth(parseFloat(t) - 1)
			},
			s: function (e, t) {
				e.setSeconds(parseFloat(t))
			},
			u: function (e, t) {
				return new Date(parseFloat(t))
			},
			w: f,
			y: function (e, t) {
				e.setFullYear(2e3 + parseFloat(t))
			}
		},
		p = {
			D: "(\\w+)",
			F: "(\\w+)",
			G: "(\\d\\d|\\d)",
			H: "(\\d\\d|\\d)",
			J: "(\\d\\d|\\d)\\w+",
			K: "",
			M: "(\\w+)",
			S: "(\\d\\d|\\d)",
			U: "(.+)",
			W: "(\\d\\d|\\d)",
			Y: "(\\d{4})",
			Z: "(.+)",
			d: "(\\d\\d|\\d)",
			h: "(\\d\\d|\\d)",
			i: "(\\d\\d|\\d)",
			j: "(\\d\\d|\\d)",
			l: "(\\w+)",
			m: "(\\d\\d|\\d)",
			n: "(\\d\\d|\\d)",
			s: "(\\d\\d|\\d)",
			u: "(.+)",
			w: "(\\d\\d|\\d)",
			y: "(\\d{2})"
		},
		h = {
			Z: function (e) {
				return e.toISOString()
			},
			D: function (e, t, n) {
				return t.weekdays.shorthand[h.w(e, t, n)]
			},
			F: function (e, t, n) {
				return m(h.n(e, t, n) - 1, !1, t)
			},
			G: function (e, t, n) {
				return i(h.h(e, t, n))
			},
			H: function (e) {
				return i(e.getHours())
			},
			J: function (e, t) {
				return void 0 !== t.ordinal ? e.getDate() + t.ordinal(e.getDate()) : e.getDate()
			},
			K: function (e, t) {
				return t.amPM[o(e.getHours() > 11)]
			},
			M: function (e, t) {
				return m(e.getMonth(), !0, t)
			},
			S: function (e) {
				return i(e.getSeconds())
			},
			U: function (e) {
				return e.getTime() / 1e3
			},
			W: function (e, t, n) {
				return n.getWeek(e)
			},
			Y: function (e) {
				return e.getFullYear()
			},
			d: function (e) {
				return i(e.getDate())
			},
			h: function (e) {
				return e.getHours() % 12 ? e.getHours() % 12 : 12
			},
			i: function (e) {
				return i(e.getMinutes())
			},
			j: function (e) {
				return e.getDate()
			},
			l: function (e, t) {
				return t.weekdays.longhand[e.getDay()]
			},
			m: function (e) {
				return i(e.getMonth() + 1)
			},
			n: function (e) {
				return e.getMonth() + 1
			},
			s: function (e) {
				return e.getSeconds()
			},
			u: function (e) {
				return e.getTime()
			},
			w: function (e) {
				return e.getDay()
			},
			y: function (e) {
				return String(e.getFullYear()).substring(2)
			}
		},
		v = function (e) {
			var t = e.config,
				i = void 0 === t ? n : t,
				o = e.l10n,
				r = void 0 === o ? a : o;
			return function (e, t, n) {
				var a = n || r;
				return void 0 !== i.formatDate ? i.formatDate(e, t, a) : t.split("").map(function (t, n, o) {
					return h[t] && "\\" !== o[n - 1] ? h[t](e, a, i) : "\\" !== t ? t : ""
				}).join("")
			}
		},
		D = function (e) {
			var t = e.config,
				i = void 0 === t ? n : t,
				o = e.l10n,
				r = void 0 === o ? a : o;
			return function (e, t, a, o) {
				if (0 === e || e) {
					var l, c = o || r,
						d = e;
					if (e instanceof Date) l = new Date(e.getTime());
					else if ("string" != typeof e && void 0 !== e.toFixed) l = new Date(e);
					else if ("string" == typeof e) {
						var s = t || (i || n).dateFormat,
							u = String(e).trim();
						if ("today" === u) l = new Date, a = !0;
						else if (/Z$/.test(u) || /GMT$/.test(u)) l = new Date(e);
						else if (i && i.parseDate) l = i.parseDate(e, s);
						else {
							l = i && i.noCalendar ? new Date((new Date).setHours(0, 0, 0, 0)) : new Date((new Date).getFullYear(), 0, 1, 0, 0, 0, 0);
							for (var f = void 0, m = [], h = 0, v = 0, D = ""; h < s.length; h++) {
								var w = s[h],
									b = "\\" === w,
									C = "\\" === s[h - 1] || b;
								if (p[w] && !C) {
									D += p[w];
									var M = new RegExp(D).exec(e);
									M && (f = !0) && m["Y" !== w ? "push" : "unshift"]({
										fn: g[w],
										val: M[++v]
									})
								} else b || (D += ".");
								m.forEach(function (e) {
									var t = e.fn,
										n = e.val;
									return l = t(l, n, c) || l
								})
							}
							l = f ? l : void 0
						}
					}
					if (l instanceof Date && !isNaN(l.getTime())) return !0 === a && l.setHours(0, 0, 0, 0), l;
					i.errorHandler(new Error("Invalid date provided: " + d))
				}
			}
		};

	function w(e, t, n) {
		return void 0 === n && (n = !0), !1 !== n ? new Date(e.getTime()).setHours(0, 0, 0, 0) - new Date(t.getTime()).setHours(0, 0, 0, 0) : e.getTime() - t.getTime()
	}
	var b = function (e, t, n) {
			return e > Math.min(t, n) && e < Math.max(t, n)
		},
		C = {
			DAY: 864e5
		};
	"function" != typeof Object.assign && (Object.assign = function (e) {
		for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
		if (!e) throw TypeError("Cannot convert undefined or null to object");
		for (var a = function (t) {
				t && Object.keys(t).forEach(function (n) {
					return e[n] = t[n]
				})
			}, i = 0, o = t; i < o.length; i++) {
			a(o[i])
		}
		return e
	});
	var M = 300;

	function y(f, g) {
		var h = {
			config: e({}, n, E.defaultConfig),
			l10n: a
		};

		function y(e) {
			return e.bind(h)
		}

		function x() {
			var e = h.config;
			!1 === e.weekNumbers && 1 === e.showMonths || !0 !== e.noCalendar && window.requestAnimationFrame(function () {
				if (void 0 !== h.calendarContainer && (h.calendarContainer.style.visibility = "hidden", h.calendarContainer.style.display = "block"), void 0 !== h.daysContainer) {
					var t = (h.days.offsetWidth + 1) * e.showMonths;
					h.daysContainer.style.width = t + "px", h.calendarContainer.style.width = t + (void 0 !== h.weekWrapper ? h.weekWrapper.offsetWidth : 0) + "px", h.calendarContainer.style.removeProperty("visibility"), h.calendarContainer.style.removeProperty("display")
				}
			})
		}

		function T(e) {
			0 === h.selectedDates.length && ie(), void 0 !== e && "blur" !== e.type && function (e) {
				e.preventDefault();
				var t = "keydown" === e.type,
					n = e.target;
				void 0 !== h.amPM && e.target === h.amPM && (h.amPM.textContent = h.l10n.amPM[o(h.amPM.textContent === h.l10n.amPM[0])]);
				var a = parseFloat(n.getAttribute("min")),
					r = parseFloat(n.getAttribute("max")),
					l = parseFloat(n.getAttribute("step")),
					c = parseInt(n.value, 10),
					d = e.delta || (t ? 38 === e.which ? 1 : -1 : 0),
					s = c + l * d;
				if (void 0 !== n.value && 2 === n.value.length) {
					var u = n === h.hourElement,
						f = n === h.minuteElement;
					s < a ? (s = r + s + o(!u) + (o(u) && o(!h.amPM)), f && j(void 0, -1, h.hourElement)) : s > r && (s = n === h.hourElement ? s - r - o(!h.amPM) : a, f && j(void 0, 1, h.hourElement)), h.amPM && u && (1 === l ? s + c === 23 : Math.abs(s - c) > l) && (h.amPM.textContent = h.l10n.amPM[o(h.amPM.textContent === h.l10n.amPM[0])]), n.value = i(s)
				}
			}(e);
			var t = h._input.value;
			k(), we(), h._input.value !== t && h._debouncedChange()
		}

		function k() {
			if (void 0 !== h.hourElement && void 0 !== h.minuteElement) {
				var e, t, n = (parseInt(h.hourElement.value.slice(-2), 10) || 0) % 24,
					a = (parseInt(h.minuteElement.value, 10) || 0) % 60,
					i = void 0 !== h.secondElement ? (parseInt(h.secondElement.value, 10) || 0) % 60 : 0;
				void 0 !== h.amPM && (e = n, t = h.amPM.textContent, n = e % 12 + 12 * o(t === h.l10n.amPM[1]));
				var r = void 0 !== h.config.minTime || h.config.minDate && h.minDateHasTime && h.latestSelectedDateObj && 0 === w(h.latestSelectedDateObj, h.config.minDate, !0);
				if (void 0 !== h.config.maxTime || h.config.maxDate && h.maxDateHasTime && h.latestSelectedDateObj && 0 === w(h.latestSelectedDateObj, h.config.maxDate, !0)) {
					var l = void 0 !== h.config.maxTime ? h.config.maxTime : h.config.maxDate;
					(n = Math.min(n, l.getHours())) === l.getHours() && (a = Math.min(a, l.getMinutes())), a === l.getMinutes() && (i = Math.min(i, l.getSeconds()))
				}
				if (r) {
					var c = void 0 !== h.config.minTime ? h.config.minTime : h.config.minDate;
					(n = Math.max(n, c.getHours())) === c.getHours() && (a = Math.max(a, c.getMinutes())), a === c.getMinutes() && (i = Math.max(i, c.getSeconds()))
				}
				O(n, a, i)
			}
		}

		function I(e) {
			var t = e || h.latestSelectedDateObj;
			t && O(t.getHours(), t.getMinutes(), t.getSeconds())
		}

		function S() {
			var e = h.config.defaultHour,
				t = h.config.defaultMinute,
				n = h.config.defaultSeconds;
			if (void 0 !== h.config.minDate) {
				var a = h.config.minDate.getHours(),
					i = h.config.minDate.getMinutes();
				(e = Math.max(e, a)) === a && (t = Math.max(i, t)), e === a && t === i && (n = h.config.minDate.getSeconds())
			}
			if (void 0 !== h.config.maxDate) {
				var o = h.config.maxDate.getHours(),
					r = h.config.maxDate.getMinutes();
				(e = Math.min(e, o)) === o && (t = Math.min(r, t)), e === o && t === r && (n = h.config.maxDate.getSeconds())
			}
			O(e, t, n)
		}

		function O(e, t, n) {
			void 0 !== h.latestSelectedDateObj && h.latestSelectedDateObj.setHours(e % 24, t, n || 0, 0), h.hourElement && h.minuteElement && !h.isMobile && (h.hourElement.value = i(h.config.time_24hr ? e : (12 + e) % 12 + 12 * o(e % 12 == 0)), h.minuteElement.value = i(t), void 0 !== h.amPM && (h.amPM.textContent = h.l10n.amPM[o(e >= 12)]), void 0 !== h.secondElement && (h.secondElement.value = i(n)))
		}

		function _(e) {
			var t = parseInt(e.target.value) + (e.delta || 0);
			(t / 1e3 > 1 || "Enter" === e.key && !/[^\d]/.test(t.toString())) && Q(t)
		}

		function F(e, t, n, a) {
			return t instanceof Array ? t.forEach(function (t) {
				return F(e, t, n, a)
			}) : e instanceof Array ? e.forEach(function (e) {
				return F(e, t, n, a)
			}) : (e.addEventListener(t, n, a), void h._handlers.push({
				element: e,
				event: t,
				handler: n,
				options: a
			}))
		}

		function N(e) {
			return function (t) {
				1 === t.which && e(t)
			}
		}

		function Y() {
			ge("onChange")
		}

		function A(e, t) {
			var n = void 0 !== e ? h.parseDate(e) : h.latestSelectedDateObj || (h.config.minDate && h.config.minDate > h.now ? h.config.minDate : h.config.maxDate && h.config.maxDate < h.now ? h.config.maxDate : h.now),
				a = h.currentYear,
				i = h.currentMonth;
			try {
				void 0 !== n && (h.currentYear = n.getFullYear(), h.currentMonth = n.getMonth())
			} catch (e) {
				e.message = "Invalid date supplied: " + n, h.config.errorHandler(e)
			}
			t && h.currentYear !== a && (ge("onYearChange"), K()), !t || h.currentYear === a && h.currentMonth === i || ge("onMonthChange"), h.redraw()
		}

		function P(e) {
			~e.target.className.indexOf("arrow") && j(e, e.target.classList.contains("arrowUp") ? 1 : -1)
		}

		function j(e, t, n) {
			var a = e && e.target,
				i = n || a && a.parentNode && a.parentNode.firstChild,
				o = pe("increment");
			o.delta = t, i && i.dispatchEvent(o)
		}

		function H(e, t, n, a) {
			var i = X(t, !0),
				o = d("span", "flatpickr-day " + e, t.getDate().toString());
			return o.dateObj = t, o.$i = a, o.setAttribute("aria-label", h.formatDate(t, h.config.ariaDateFormat)), -1 === e.indexOf("hidden") && 0 === w(t, h.now) && (h.todayDateElem = o, o.classList.add("today"), o.setAttribute("aria-current", "date")), i ? (o.tabIndex = -1, he(t) && (o.classList.add("selected"), h.selectedDateElem = o, "range" === h.config.mode && (c(o, "startRange", h.selectedDates[0] && 0 === w(t, h.selectedDates[0], !0)), c(o, "endRange", h.selectedDates[1] && 0 === w(t, h.selectedDates[1], !0)), "nextMonthDay" === e && o.classList.add("inRange")))) : o.classList.add("flatpickr-disabled"), "range" === h.config.mode && function (e) {
				return !("range" !== h.config.mode || h.selectedDates.length < 2) && w(e, h.selectedDates[0]) >= 0 && w(e, h.selectedDates[1]) <= 0
			}(t) && !he(t) && o.classList.add("inRange"), h.weekNumbers && 1 === h.config.showMonths && "prevMonthDay" !== e && n % 7 == 1 && h.weekNumbers.insertAdjacentHTML("beforeend", "<span class='flatpickr-day'>" + h.config.getWeek(t) + "</span>"), ge("onDayCreate", o), o
		}

		function L(e) {
			e.focus(), "range" === h.config.mode && ne(e)
		}

		function W(e) {
			for (var t = e > 0 ? 0 : h.config.showMonths - 1, n = e > 0 ? h.config.showMonths : -1, a = t; a != n; a += e)
				for (var i = h.daysContainer.children[a], o = e > 0 ? 0 : i.children.length - 1, r = e > 0 ? i.children.length : -1, l = o; l != r; l += e) {
					var c = i.children[l];
					if (-1 === c.className.indexOf("hidden") && X(c.dateObj)) return c
				}
		}

		function R(e, t) {
			var n = ee(document.activeElement || document.body),
				a = void 0 !== e ? e : n ? document.activeElement : void 0 !== h.selectedDateElem && ee(h.selectedDateElem) ? h.selectedDateElem : void 0 !== h.todayDateElem && ee(h.todayDateElem) ? h.todayDateElem : W(t > 0 ? 1 : -1);
			return void 0 === a ? h._input.focus() : n ? void
			function (e, t) {
				for (var n = -1 === e.className.indexOf("Month") ? e.dateObj.getMonth() : h.currentMonth, a = t > 0 ? h.config.showMonths : -1, i = t > 0 ? 1 : -1, o = n - h.currentMonth; o != a; o += i)
					for (var r = h.daysContainer.children[o], l = n - h.currentMonth === o ? e.$i + t : t < 0 ? r.children.length - 1 : 0, c = r.children.length, d = l; d >= 0 && d < c && d != (t > 0 ? c : -1); d += i) {
						var s = r.children[d];
						if (-1 === s.className.indexOf("hidden") && X(s.dateObj) && Math.abs(e.$i - d) >= Math.abs(t)) return L(s)
					}
				h.changeMonth(i), R(W(i), 0)
			}(a, t): L(a)
		}

		function B(e, t) {
			for (var n = (new Date(e, t, 1).getDay() - h.l10n.firstDayOfWeek + 7) % 7, a = h.utils.getDaysInMonth((t - 1 + 12) % 12), i = h.utils.getDaysInMonth(t), o = window.document.createDocumentFragment(), r = h.config.showMonths > 1, l = r ? "prevMonthDay hidden" : "prevMonthDay", c = r ? "nextMonthDay hidden" : "nextMonthDay", s = a + 1 - n, u = 0; s <= a; s++, u++) o.appendChild(H(l, new Date(e, t - 1, s), s, u));
			for (s = 1; s <= i; s++, u++) o.appendChild(H("", new Date(e, t, s), s, u));
			for (var f = i + 1; f <= 42 - n && (1 === h.config.showMonths || u % 7 != 0); f++, u++) o.appendChild(H(c, new Date(e, t + 1, f % i), f, u));
			var m = d("div", "dayContainer");
			return m.appendChild(o), m
		}

		function J() {
			if (void 0 !== h.daysContainer) {
				s(h.daysContainer), h.weekNumbers && s(h.weekNumbers);
				for (var e = document.createDocumentFragment(), t = 0; t < h.config.showMonths; t++) {
					var n = new Date(h.currentYear, h.currentMonth, 1);
					n.setMonth(h.currentMonth + t), e.appendChild(B(n.getFullYear(), n.getMonth()))
				}
				h.daysContainer.appendChild(e), h.days = h.daysContainer.firstChild, "range" === h.config.mode && 1 === h.selectedDates.length && ne()
			}
		}

		function K() {
			if (!(h.config.showMonths > 1 || "dropdown" !== h.config.monthSelectorType)) {
				var e = function (e) {
					return !(void 0 !== h.config.minDate && h.currentYear === h.config.minDate.getFullYear() && e < h.config.minDate.getMonth()) && !(void 0 !== h.config.maxDate && h.currentYear === h.config.maxDate.getFullYear() && e > h.config.maxDate.getMonth())
				};
				h.monthsDropdownContainer.tabIndex = -1, h.monthsDropdownContainer.innerHTML = "";
				for (var t = 0; t < 12; t++)
					if (e(t)) {
						var n = d("option", "flatpickr-monthDropdown-month");
						n.value = new Date(h.currentYear, t).getMonth().toString(), n.textContent = m(t, h.config.shorthandCurrentMonth, h.l10n), n.tabIndex = -1, h.currentMonth === t && (n.selected = !0), h.monthsDropdownContainer.appendChild(n)
					}
			}
		}

		function U() {
			var e, t = d("div", "flatpickr-month"),
				n = window.document.createDocumentFragment();
			h.config.showMonths > 1 || "static" === h.config.monthSelectorType ? e = d("span", "cur-month") : (h.monthsDropdownContainer = d("select", "flatpickr-monthDropdown-months"), F(h.monthsDropdownContainer, "change", function (e) {
				var t = e.target,
					n = parseInt(t.value, 10);
				h.changeMonth(n - h.currentMonth), ge("onMonthChange")
			}), K(), e = h.monthsDropdownContainer);
			var a = u("cur-year", {
					tabindex: "-1"
				}),
				i = a.getElementsByTagName("input")[0];
			i.setAttribute("aria-label", h.l10n.yearAriaLabel), h.config.minDate && i.setAttribute("min", h.config.minDate.getFullYear().toString()), h.config.maxDate && (i.setAttribute("max", h.config.maxDate.getFullYear().toString()), i.disabled = !!h.config.minDate && h.config.minDate.getFullYear() === h.config.maxDate.getFullYear());
			var o = d("div", "flatpickr-current-month");
			return o.appendChild(e), o.appendChild(a), n.appendChild(o), t.appendChild(n), {
				container: t,
				yearElement: i,
				monthElement: e
			}
		}

		function q() {
			s(h.monthNav), h.monthNav.appendChild(h.prevMonthNav), h.config.showMonths && (h.yearElements = [], h.monthElements = []);
			for (var e = h.config.showMonths; e--;) {
				var t = U();
				h.yearElements.push(t.yearElement), h.monthElements.push(t.monthElement), h.monthNav.appendChild(t.container)
			}
			h.monthNav.appendChild(h.nextMonthNav)
		}

		function $() {
			h.weekdayContainer ? s(h.weekdayContainer) : h.weekdayContainer = d("div", "flatpickr-weekdays");
			for (var e = h.config.showMonths; e--;) {
				var t = d("div", "flatpickr-weekdaycontainer");
				h.weekdayContainer.appendChild(t)
			}
			return z(), h.weekdayContainer
		}

		function z() {
			if (h.weekdayContainer) {
				var e = h.l10n.firstDayOfWeek,
					t = h.l10n.weekdays.shorthand.slice();
				e > 0 && e < t.length && (t = t.splice(e, t.length).concat(t.splice(0, e)));
				for (var n = h.config.showMonths; n--;) h.weekdayContainer.children[n].innerHTML = "\n      <span class='flatpickr-weekday'>\n        " + t.join("</span><span class='flatpickr-weekday'>") + "\n      </span>\n      "
			}
		}

		function G(e, t) {
			void 0 === t && (t = !0);
			var n = t ? e : e - h.currentMonth;
			n < 0 && !0 === h._hidePrevMonthArrow || n > 0 && !0 === h._hideNextMonthArrow || (h.currentMonth += n, (h.currentMonth < 0 || h.currentMonth > 11) && (h.currentYear += h.currentMonth > 11 ? 1 : -1, h.currentMonth = (h.currentMonth + 12) % 12, ge("onYearChange"), K()), J(), ge("onMonthChange"), ve())
		}

		function V(e) {
			return !(!h.config.appendTo || !h.config.appendTo.contains(e)) || h.calendarContainer.contains(e)
		}

		function Z(e) {
			if (h.isOpen && !h.config.inline) {
				var t = "function" == typeof (r = e).composedPath ? r.composedPath()[0] : r.target,
					n = V(t),
					a = t === h.input || t === h.altInput || h.element.contains(t) || e.path && e.path.indexOf && (~e.path.indexOf(h.input) || ~e.path.indexOf(h.altInput)),
					i = "blur" === e.type ? a && e.relatedTarget && !V(e.relatedTarget) : !a && !n && !V(e.relatedTarget),
					o = !h.config.ignoredFocusElements.some(function (e) {
						return e.contains(t)
					});
				i && o && (void 0 !== h.timeContainer && void 0 !== h.minuteElement && void 0 !== h.hourElement && T(), h.close(), "range" === h.config.mode && 1 === h.selectedDates.length && (h.clear(!1), h.redraw()))
			}
			var r
		}

		function Q(e) {
			if (!(!e || h.config.minDate && e < h.config.minDate.getFullYear() || h.config.maxDate && e > h.config.maxDate.getFullYear())) {
				var t = e,
					n = h.currentYear !== t;
				h.currentYear = t || h.currentYear, h.config.maxDate && h.currentYear === h.config.maxDate.getFullYear() ? h.currentMonth = Math.min(h.config.maxDate.getMonth(), h.currentMonth) : h.config.minDate && h.currentYear === h.config.minDate.getFullYear() && (h.currentMonth = Math.max(h.config.minDate.getMonth(), h.currentMonth)), n && (h.redraw(), ge("onYearChange"), K())
			}
		}

		function X(e, t) {
			void 0 === t && (t = !0);
			var n = h.parseDate(e, void 0, t);
			if (h.config.minDate && n && w(n, h.config.minDate, void 0 !== t ? t : !h.minDateHasTime) < 0 || h.config.maxDate && n && w(n, h.config.maxDate, void 0 !== t ? t : !h.maxDateHasTime) > 0) return !1;
			if (0 === h.config.enable.length && 0 === h.config.disable.length) return !0;
			if (void 0 === n) return !1;
			for (var a = h.config.enable.length > 0, i = a ? h.config.enable : h.config.disable, o = 0, r = void 0; o < i.length; o++) {
				if ("function" == typeof (r = i[o]) && r(n)) return a;
				if (r instanceof Date && void 0 !== n && r.getTime() === n.getTime()) return a;
				if ("string" == typeof r && void 0 !== n) {
					var l = h.parseDate(r, void 0, !0);
					return l && l.getTime() === n.getTime() ? a : !a
				}
				if ("object" == typeof r && void 0 !== n && r.from && r.to && n.getTime() >= r.from.getTime() && n.getTime() <= r.to.getTime()) return a
			}
			return !a
		}

		function ee(e) {
			return void 0 !== h.daysContainer && (-1 === e.className.indexOf("hidden") && h.daysContainer.contains(e))
		}

		function te(e) {
			var t = e.target === h._input,
				n = h.config.allowInput,
				a = h.isOpen && (!n || !t),
				i = h.config.inline && t && !n;
			if (13 === e.keyCode && t) {
				if (n) return h.setDate(h._input.value, !0, e.target === h.altInput ? h.config.altFormat : h.config.dateFormat), e.target.blur();
				h.open()
			} else if (V(e.target) || a || i) {
				var o = !!h.timeContainer && h.timeContainer.contains(e.target);
				switch (e.keyCode) {
					case 13:
						o ? (e.preventDefault(), T(), de()) : se(e);
						break;
					case 27:
						e.preventDefault(), de();
						break;
					case 8:
					case 46:
						t && !h.config.allowInput && (e.preventDefault(), h.clear());
						break;
					case 37:
					case 39:
						if (o || t) h.hourElement && h.hourElement.focus();
						else if (e.preventDefault(), void 0 !== h.daysContainer && (!1 === n || document.activeElement && ee(document.activeElement))) {
							var r = 39 === e.keyCode ? 1 : -1;
							e.ctrlKey ? (e.stopPropagation(), G(r), R(W(1), 0)) : R(void 0, r)
						}
						break;
					case 38:
					case 40:
						e.preventDefault();
						var l = 40 === e.keyCode ? 1 : -1;
						h.daysContainer && void 0 !== e.target.$i || e.target === h.input || e.target === h.altInput ? e.ctrlKey ? (e.stopPropagation(), Q(h.currentYear - l), R(W(1), 0)) : o || R(void 0, 7 * l) : e.target === h.currentYearElement ? Q(h.currentYear - l) : h.config.enableTime && (!o && h.hourElement && h.hourElement.focus(), T(e), h._debouncedChange());
						break;
					case 9:
						if (o) {
							var c = [h.hourElement, h.minuteElement, h.secondElement, h.amPM].concat(h.pluginElements).filter(function (e) {
									return e
								}),
								d = c.indexOf(e.target);
							if (-1 !== d) {
								var s = c[d + (e.shiftKey ? -1 : 1)];
								e.preventDefault(), (s || h._input).focus()
							}
						} else !h.config.noCalendar && h.daysContainer && h.daysContainer.contains(e.target) && e.shiftKey && (e.preventDefault(), h._input.focus())
				}
			}
			if (void 0 !== h.amPM && e.target === h.amPM) switch (e.key) {
				case h.l10n.amPM[0].charAt(0):
				case h.l10n.amPM[0].charAt(0).toLowerCase():
					h.amPM.textContent = h.l10n.amPM[0], k(), we();
					break;
				case h.l10n.amPM[1].charAt(0):
				case h.l10n.amPM[1].charAt(0).toLowerCase():
					h.amPM.textContent = h.l10n.amPM[1], k(), we()
			}(t || V(e.target)) && ge("onKeyDown", e)
		}

		function ne(e) {
			if (1 === h.selectedDates.length && (!e || e.classList.contains("flatpickr-day") && !e.classList.contains("flatpickr-disabled"))) {
				for (var t = e ? e.dateObj.getTime() : h.days.firstElementChild.dateObj.getTime(), n = h.parseDate(h.selectedDates[0], void 0, !0).getTime(), a = Math.min(t, h.selectedDates[0].getTime()), i = Math.max(t, h.selectedDates[0].getTime()), o = !1, r = 0, l = 0, c = a; c < i; c += C.DAY) X(new Date(c), !0) || (o = o || c > a && c < i, c < n && (!r || c > r) ? r = c : c > n && (!l || c < l) && (l = c));
				for (var d = 0; d < h.config.showMonths; d++)
					for (var s = h.daysContainer.children[d], u = function (a, i) {
							var c = s.children[a],
								d = c.dateObj.getTime(),
								u = r > 0 && d < r || l > 0 && d > l;
							return u ? (c.classList.add("notAllowed"), ["inRange", "startRange", "endRange"].forEach(function (e) {
								c.classList.remove(e)
							}), "continue") : o && !u ? "continue" : (["startRange", "inRange", "endRange", "notAllowed"].forEach(function (e) {
								c.classList.remove(e)
							}), void(void 0 !== e && (e.classList.add(t <= h.selectedDates[0].getTime() ? "startRange" : "endRange"), n < t && d === n ? c.classList.add("startRange") : n > t && d === n && c.classList.add("endRange"), d >= r && (0 === l || d <= l) && b(d, n, t) && c.classList.add("inRange"))))
						}, f = 0, m = s.children.length; f < m; f++) u(f)
			}
		}

		function ae() {
			!h.isOpen || h.config.static || h.config.inline || le()
		}

		function ie() {
			h.setDate(void 0 !== h.config.minDate ? new Date(h.config.minDate.getTime()) : new Date, !0), S(), we()
		}

		function oe(e) {
			return function (t) {
				var n = h.config["_" + e + "Date"] = h.parseDate(t, h.config.dateFormat),
					a = h.config["_" + ("min" === e ? "max" : "min") + "Date"];
				void 0 !== n && (h["min" === e ? "minDateHasTime" : "maxDateHasTime"] = n.getHours() > 0 || n.getMinutes() > 0 || n.getSeconds() > 0), h.selectedDates && (h.selectedDates = h.selectedDates.filter(function (e) {
					return X(e)
				}), h.selectedDates.length || "min" !== e || I(n), we()), h.daysContainer && (ce(), void 0 !== n ? h.currentYearElement[e] = n.getFullYear().toString() : h.currentYearElement.removeAttribute(e), h.currentYearElement.disabled = !!a && void 0 !== n && a.getFullYear() === n.getFullYear())
			}
		}

		function re() {
			"object" != typeof h.config.locale && void 0 === E.l10ns[h.config.locale] && h.config.errorHandler(new Error("flatpickr: invalid locale " + h.config.locale)), h.l10n = e({}, E.l10ns.default, "object" == typeof h.config.locale ? h.config.locale : "default" !== h.config.locale ? E.l10ns[h.config.locale] : void 0), p.K = "(" + h.l10n.amPM[0] + "|" + h.l10n.amPM[1] + "|" + h.l10n.amPM[0].toLowerCase() + "|" + h.l10n.amPM[1].toLowerCase() + ")", void 0 === e({}, g, JSON.parse(JSON.stringify(f.dataset || {}))).time_24hr && void 0 === E.defaultConfig.time_24hr && (h.config.time_24hr = h.l10n.time_24hr), h.formatDate = v(h), h.parseDate = D({
				config: h.config,
				l10n: h.l10n
			})
		}

		function le(e) {
			if (void 0 !== h.calendarContainer) {
				ge("onPreCalendarPosition");
				var t = e || h._positionElement,
					n = Array.prototype.reduce.call(h.calendarContainer.children, function (e, t) {
						return e + t.offsetHeight
					}, 0),
					a = h.calendarContainer.offsetWidth,
					i = h.config.position.split(" "),
					o = i[0],
					r = i.length > 1 ? i[1] : null,
					l = t.getBoundingClientRect(),
					d = window.innerHeight - l.bottom,
					s = "above" === o || "below" !== o && d < n && l.top > n,
					u = window.pageYOffset + l.top + (s ? -n - 2 : t.offsetHeight + 2);
				if (c(h.calendarContainer, "arrowTop", !s), c(h.calendarContainer, "arrowBottom", s), !h.config.inline) {
					var f = window.pageXOffset + l.left - (null != r && "center" === r ? (a - l.width) / 2 : 0),
						m = window.document.body.offsetWidth - (window.pageXOffset + l.right),
						g = f + a > window.document.body.offsetWidth,
						p = m + a > window.document.body.offsetWidth;
					if (c(h.calendarContainer, "rightMost", g), !h.config.static)
						if (h.calendarContainer.style.top = u + "px", g)
							if (p) {
								var v = document.styleSheets[0];
								if (void 0 === v) return;
								var D = window.document.body.offsetWidth,
									w = Math.max(0, D / 2 - a / 2),
									b = v.cssRules.length,
									C = "{left:" + l.left + "px;right:auto;}";
								c(h.calendarContainer, "rightMost", !1), c(h.calendarContainer, "centerMost", !0), v.insertRule(".flatpickr-calendar.centerMost:before,.flatpickr-calendar.centerMost:after" + C, b), h.calendarContainer.style.left = w + "px", h.calendarContainer.style.right = "auto"
							} else h.calendarContainer.style.left = "auto", h.calendarContainer.style.right = m + "px";
					else h.calendarContainer.style.left = f + "px", h.calendarContainer.style.right = "auto"
				}
			}
		}

		function ce() {
			h.config.noCalendar || h.isMobile || (ve(), J())
		}

		function de() {
			h._input.focus(), -1 !== window.navigator.userAgent.indexOf("MSIE") || void 0 !== navigator.msMaxTouchPoints ? setTimeout(h.close, 0) : h.close()
		}

		function se(e) {
			e.preventDefault(), e.stopPropagation();
			var t = function e(t, n) {
				return n(t) ? t : t.parentNode ? e(t.parentNode, n) : void 0
			}(e.target, function (e) {
				return e.classList && e.classList.contains("flatpickr-day") && !e.classList.contains("flatpickr-disabled") && !e.classList.contains("notAllowed")
			});
			if (void 0 !== t) {
				var n = t,
					a = h.latestSelectedDateObj = new Date(n.dateObj.getTime()),
					i = (a.getMonth() < h.currentMonth || a.getMonth() > h.currentMonth + h.config.showMonths - 1) && "range" !== h.config.mode;
				if (h.selectedDateElem = n, "single" === h.config.mode) h.selectedDates = [a];
				else if ("multiple" === h.config.mode) {
					var o = he(a);
					o ? h.selectedDates.splice(parseInt(o), 1) : h.selectedDates.push(a)
				} else "range" === h.config.mode && (2 === h.selectedDates.length && h.clear(!1, !1), h.latestSelectedDateObj = a, h.selectedDates.push(a), 0 !== w(a, h.selectedDates[0], !0) && h.selectedDates.sort(function (e, t) {
					return e.getTime() - t.getTime()
				}));
				if (k(), i) {
					var r = h.currentYear !== a.getFullYear();
					h.currentYear = a.getFullYear(), h.currentMonth = a.getMonth(), r && (ge("onYearChange"), K()), ge("onMonthChange")
				}
				if (ve(), J(), we(), h.config.enableTime && setTimeout(function () {
						return h.showTimeInput = !0
					}, 50), i || "range" === h.config.mode || 1 !== h.config.showMonths ? void 0 !== h.selectedDateElem && void 0 === h.hourElement && h.selectedDateElem && h.selectedDateElem.focus() : L(n), void 0 !== h.hourElement && void 0 !== h.hourElement && h.hourElement.focus(), h.config.closeOnSelect) {
					var l = "single" === h.config.mode && !h.config.enableTime,
						c = "range" === h.config.mode && 2 === h.selectedDates.length && !h.config.enableTime;
					(l || c) && de()
				}
				Y()
			}
		}
		h.parseDate = D({
			config: h.config,
			l10n: h.l10n
		}), h._handlers = [], h.pluginElements = [], h.loadedPlugins = [], h._bind = F, h._setHoursFromDate = I, h._positionCalendar = le, h.changeMonth = G, h.changeYear = Q, h.clear = function (e, t) {
			void 0 === e && (e = !0);
			void 0 === t && (t = !0);
			h.input.value = "", void 0 !== h.altInput && (h.altInput.value = "");
			void 0 !== h.mobileInput && (h.mobileInput.value = "");
			h.selectedDates = [], h.latestSelectedDateObj = void 0, !0 === t && (h.currentYear = h._initialDate.getFullYear(), h.currentMonth = h._initialDate.getMonth());
			h.showTimeInput = !1, !0 === h.config.enableTime && S();
			h.redraw(), e && ge("onChange")
		}, h.close = function () {
			h.isOpen = !1, h.isMobile || (void 0 !== h.calendarContainer && h.calendarContainer.classList.remove("open"), void 0 !== h._input && h._input.classList.remove("active"));
			ge("onClose")
		}, h._createElement = d, h.destroy = function () {
			void 0 !== h.config && ge("onDestroy");
			for (var e = h._handlers.length; e--;) {
				var t = h._handlers[e];
				t.element.removeEventListener(t.event, t.handler, t.options)
			}
			if (h._handlers = [], h.mobileInput) h.mobileInput.parentNode && h.mobileInput.parentNode.removeChild(h.mobileInput), h.mobileInput = void 0;
			else if (h.calendarContainer && h.calendarContainer.parentNode)
				if (h.config.static && h.calendarContainer.parentNode) {
					var n = h.calendarContainer.parentNode;
					if (n.lastChild && n.removeChild(n.lastChild), n.parentNode) {
						for (; n.firstChild;) n.parentNode.insertBefore(n.firstChild, n);
						n.parentNode.removeChild(n)
					}
				} else h.calendarContainer.parentNode.removeChild(h.calendarContainer);
			h.altInput && (h.input.type = "text", h.altInput.parentNode && h.altInput.parentNode.removeChild(h.altInput), delete h.altInput);
			h.input && (h.input.type = h.input._type, h.input.classList.remove("flatpickr-input"), h.input.removeAttribute("readonly"), h.input.value = "");
			["_showTimeInput", "latestSelectedDateObj", "_hideNextMonthArrow", "_hidePrevMonthArrow", "__hideNextMonthArrow", "__hidePrevMonthArrow", "isMobile", "isOpen", "selectedDateElem", "minDateHasTime", "maxDateHasTime", "days", "daysContainer", "_input", "_positionElement", "innerContainer", "rContainer", "monthNav", "todayDateElem", "calendarContainer", "weekdayContainer", "prevMonthNav", "nextMonthNav", "monthsDropdownContainer", "currentMonthElement", "currentYearElement", "navigationCurrentMonth", "selectedDateElem", "config"].forEach(function (e) {
				try {
					delete h[e]
				} catch (e) {}
			})
		}, h.isEnabled = X, h.jumpToDate = A, h.open = function (e, t) {
			void 0 === t && (t = h._positionElement);
			if (!0 === h.isMobile) return e && (e.preventDefault(), e.target && e.target.blur()), void 0 !== h.mobileInput && (h.mobileInput.focus(), h.mobileInput.click()), void ge("onOpen");
			if (h._input.disabled || h.config.inline) return;
			var n = h.isOpen;
			h.isOpen = !0, n || (h.calendarContainer.classList.add("open"), h._input.classList.add("active"), ge("onOpen"), le(t));
			!0 === h.config.enableTime && !0 === h.config.noCalendar && (0 === h.selectedDates.length && ie(), !1 !== h.config.allowInput || void 0 !== e && h.timeContainer.contains(e.relatedTarget) || setTimeout(function () {
				return h.hourElement.select()
			}, 50))
		}, h.redraw = ce, h.set = function (e, n) {
			if (null !== e && "object" == typeof e)
				for (var a in Object.assign(h.config, e), e) void 0 !== ue[a] && ue[a].forEach(function (e) {
					return e()
				});
			else h.config[e] = n, void 0 !== ue[e] ? ue[e].forEach(function (e) {
				return e()
			}) : t.indexOf(e) > -1 && (h.config[e] = l(n));
			h.redraw(), we(!1)
		}, h.setDate = function (e, t, n) {
			void 0 === t && (t = !1);
			void 0 === n && (n = h.config.dateFormat);
			if (0 !== e && !e || e instanceof Array && 0 === e.length) return h.clear(t);
			fe(e, n), h.showTimeInput = h.selectedDates.length > 0, h.latestSelectedDateObj = h.selectedDates[h.selectedDates.length - 1], h.redraw(), A(), I(), 0 === h.selectedDates.length && h.clear(!1);
			we(t), t && ge("onChange")
		}, h.toggle = function (e) {
			if (!0 === h.isOpen) return h.close();
			h.open(e)
		};
		var ue = {
			locale: [re, z],
			showMonths: [q, x, $],
			minDate: [A],
			maxDate: [A]
		};

		function fe(e, t) {
			var n = [];
			if (e instanceof Array) n = e.map(function (e) {
				return h.parseDate(e, t)
			});
			else if (e instanceof Date || "number" == typeof e) n = [h.parseDate(e, t)];
			else if ("string" == typeof e) switch (h.config.mode) {
				case "single":
				case "time":
					n = [h.parseDate(e, t)];
					break;
				case "multiple":
					n = e.split(h.config.conjunction).map(function (e) {
						return h.parseDate(e, t)
					});
					break;
				case "range":
					n = e.split(h.l10n.rangeSeparator).map(function (e) {
						return h.parseDate(e, t)
					})
			} else h.config.errorHandler(new Error("Invalid date supplied: " + JSON.stringify(e)));
			h.selectedDates = n.filter(function (e) {
				return e instanceof Date && X(e, !1)
			}), "range" === h.config.mode && h.selectedDates.sort(function (e, t) {
				return e.getTime() - t.getTime()
			})
		}

		function me(e) {
			return e.slice().map(function (e) {
				return "string" == typeof e || "number" == typeof e || e instanceof Date ? h.parseDate(e, void 0, !0) : e && "object" == typeof e && e.from && e.to ? {
					from: h.parseDate(e.from, void 0),
					to: h.parseDate(e.to, void 0)
				} : e
			}).filter(function (e) {
				return e
			})
		}

		function ge(e, t) {
			if (void 0 !== h.config) {
				var n = h.config[e];
				if (void 0 !== n && n.length > 0)
					for (var a = 0; n[a] && a < n.length; a++) n[a](h.selectedDates, h.input.value, h, t);
				"onChange" === e && (h.input.dispatchEvent(pe("change")), h.input.dispatchEvent(pe("input")))
			}
		}

		function pe(e) {
			var t = document.createEvent("Event");
			return t.initEvent(e, !0, !0), t
		}

		function he(e) {
			for (var t = 0; t < h.selectedDates.length; t++)
				if (0 === w(h.selectedDates[t], e)) return "" + t;
			return !1
		}

		function ve() {
			h.config.noCalendar || h.isMobile || !h.monthNav || (h.yearElements.forEach(function (e, t) {
				var n = new Date(h.currentYear, h.currentMonth, 1);
				n.setMonth(h.currentMonth + t), h.config.showMonths > 1 || "static" === h.config.monthSelectorType ? h.monthElements[t].textContent = m(n.getMonth(), h.config.shorthandCurrentMonth, h.l10n) + " " : h.monthsDropdownContainer.value = n.getMonth().toString(), e.value = n.getFullYear().toString()
			}), h._hidePrevMonthArrow = void 0 !== h.config.minDate && (h.currentYear === h.config.minDate.getFullYear() ? h.currentMonth <= h.config.minDate.getMonth() : h.currentYear < h.config.minDate.getFullYear()), h._hideNextMonthArrow = void 0 !== h.config.maxDate && (h.currentYear === h.config.maxDate.getFullYear() ? h.currentMonth + 1 > h.config.maxDate.getMonth() : h.currentYear > h.config.maxDate.getFullYear()))
		}

		function De(e) {
			return h.selectedDates.map(function (t) {
				return h.formatDate(t, e)
			}).filter(function (e, t, n) {
				return "range" !== h.config.mode || h.config.enableTime || n.indexOf(e) === t
			}).join("range" !== h.config.mode ? h.config.conjunction : h.l10n.rangeSeparator)
		}

		function we(e) {
			void 0 === e && (e = !0), void 0 !== h.mobileInput && h.mobileFormatStr && (h.mobileInput.value = void 0 !== h.latestSelectedDateObj ? h.formatDate(h.latestSelectedDateObj, h.mobileFormatStr) : ""), h.input.value = De(h.config.dateFormat), void 0 !== h.altInput && (h.altInput.value = De(h.config.altFormat)), !1 !== e && ge("onValueUpdate")
		}

		function be(e) {
			var t = h.prevMonthNav.contains(e.target),
				n = h.nextMonthNav.contains(e.target);
			t || n ? G(t ? -1 : 1) : h.yearElements.indexOf(e.target) >= 0 ? e.target.select() : e.target.classList.contains("arrowUp") ? h.changeYear(h.currentYear + 1) : e.target.classList.contains("arrowDown") && h.changeYear(h.currentYear - 1)
		}
		return function () {
			h.element = h.input = f, h.isOpen = !1,
				function () {
					var a = ["wrap", "weekNumbers", "allowInput", "clickOpens", "time_24hr", "enableTime", "noCalendar", "altInput", "shorthandCurrentMonth", "inline", "static", "enableSeconds", "disableMobile"],
						i = e({}, g, JSON.parse(JSON.stringify(f.dataset || {}))),
						o = {};
					h.config.parseDate = i.parseDate, h.config.formatDate = i.formatDate, Object.defineProperty(h.config, "enable", {
						get: function () {
							return h.config._enable
						},
						set: function (e) {
							h.config._enable = me(e)
						}
					}), Object.defineProperty(h.config, "disable", {
						get: function () {
							return h.config._disable
						},
						set: function (e) {
							h.config._disable = me(e)
						}
					});
					var r = "time" === i.mode;
					if (!i.dateFormat && (i.enableTime || r)) {
						var c = E.defaultConfig.dateFormat || n.dateFormat;
						o.dateFormat = i.noCalendar || r ? "H:i" + (i.enableSeconds ? ":S" : "") : c + " H:i" + (i.enableSeconds ? ":S" : "")
					}
					if (i.altInput && (i.enableTime || r) && !i.altFormat) {
						var d = E.defaultConfig.altFormat || n.altFormat;
						o.altFormat = i.noCalendar || r ? "h:i" + (i.enableSeconds ? ":S K" : " K") : d + " h:i" + (i.enableSeconds ? ":S" : "") + " K"
					}
					i.altInputClass || (h.config.altInputClass = h.input.className + " " + h.config.altInputClass), Object.defineProperty(h.config, "minDate", {
						get: function () {
							return h.config._minDate
						},
						set: oe("min")
					}), Object.defineProperty(h.config, "maxDate", {
						get: function () {
							return h.config._maxDate
						},
						set: oe("max")
					});
					var s = function (e) {
						return function (t) {
							h.config["min" === e ? "_minTime" : "_maxTime"] = h.parseDate(t, "H:i:S")
						}
					};
					Object.defineProperty(h.config, "minTime", {
						get: function () {
							return h.config._minTime
						},
						set: s("min")
					}), Object.defineProperty(h.config, "maxTime", {
						get: function () {
							return h.config._maxTime
						},
						set: s("max")
					}), "time" === i.mode && (h.config.noCalendar = !0, h.config.enableTime = !0), Object.assign(h.config, o, i);
					for (var u = 0; u < a.length; u++) h.config[a[u]] = !0 === h.config[a[u]] || "true" === h.config[a[u]];
					t.filter(function (e) {
						return void 0 !== h.config[e]
					}).forEach(function (e) {
						h.config[e] = l(h.config[e] || []).map(y)
					}), h.isMobile = !h.config.disableMobile && !h.config.inline && "single" === h.config.mode && !h.config.disable.length && !h.config.enable.length && !h.config.weekNumbers && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
					for (var u = 0; u < h.config.plugins.length; u++) {
						var m = h.config.plugins[u](h) || {};
						for (var p in m) t.indexOf(p) > -1 ? h.config[p] = l(m[p]).map(y).concat(h.config[p]) : void 0 === i[p] && (h.config[p] = m[p])
					}
					ge("onParseConfig")
				}(), re(), h.input = h.config.wrap ? f.querySelector("[data-input]") : f, h.input ? (h.input._type = h.input.type, h.input.type = "text", h.input.classList.add("flatpickr-input"), h._input = h.input, h.config.altInput && (h.altInput = d(h.input.nodeName, h.config.altInputClass), h._input = h.altInput, h.altInput.placeholder = h.input.placeholder, h.altInput.disabled = h.input.disabled, h.altInput.required = h.input.required, h.altInput.tabIndex = h.input.tabIndex, h.altInput.type = "text", h.input.setAttribute("type", "hidden"), !h.config.static && h.input.parentNode && h.input.parentNode.insertBefore(h.altInput, h.input.nextSibling)), h.config.allowInput || h._input.setAttribute("readonly", "readonly"), h._positionElement = h.config.positionElement || h._input) : h.config.errorHandler(new Error("Invalid input element specified")),
				function () {
					h.selectedDates = [], h.now = h.parseDate(h.config.now) || new Date;
					var e = h.config.defaultDate || ("INPUT" !== h.input.nodeName && "TEXTAREA" !== h.input.nodeName || !h.input.placeholder || h.input.value !== h.input.placeholder ? h.input.value : null);
					e && fe(e, h.config.dateFormat), h._initialDate = h.selectedDates.length > 0 ? h.selectedDates[0] : h.config.minDate && h.config.minDate.getTime() > h.now.getTime() ? h.config.minDate : h.config.maxDate && h.config.maxDate.getTime() < h.now.getTime() ? h.config.maxDate : h.now, h.currentYear = h._initialDate.getFullYear(), h.currentMonth = h._initialDate.getMonth(), h.selectedDates.length > 0 && (h.latestSelectedDateObj = h.selectedDates[0]), void 0 !== h.config.minTime && (h.config.minTime = h.parseDate(h.config.minTime, "H:i")), void 0 !== h.config.maxTime && (h.config.maxTime = h.parseDate(h.config.maxTime, "H:i")), h.minDateHasTime = !!h.config.minDate && (h.config.minDate.getHours() > 0 || h.config.minDate.getMinutes() > 0 || h.config.minDate.getSeconds() > 0), h.maxDateHasTime = !!h.config.maxDate && (h.config.maxDate.getHours() > 0 || h.config.maxDate.getMinutes() > 0 || h.config.maxDate.getSeconds() > 0), Object.defineProperty(h, "showTimeInput", {
						get: function () {
							return h._showTimeInput
						},
						set: function (e) {
							h._showTimeInput = e, h.calendarContainer && c(h.calendarContainer, "showTimeInput", e), h.isOpen && le()
						}
					})
				}(), h.utils = {
					getDaysInMonth: function (e, t) {
						return void 0 === e && (e = h.currentMonth), void 0 === t && (t = h.currentYear), 1 === e && (t % 4 == 0 && t % 100 != 0 || t % 400 == 0) ? 29 : h.l10n.daysInMonth[e]
					}
				}, h.isMobile || function () {
					var e = window.document.createDocumentFragment();
					if (h.calendarContainer = d("div", "flatpickr-calendar"), h.calendarContainer.tabIndex = -1, !h.config.noCalendar) {
						if (e.appendChild((h.monthNav = d("div", "flatpickr-months"), h.yearElements = [], h.monthElements = [], h.prevMonthNav = d("span", "flatpickr-prev-month"), h.prevMonthNav.innerHTML = h.config.prevArrow, h.nextMonthNav = d("span", "flatpickr-next-month"), h.nextMonthNav.innerHTML = h.config.nextArrow, q(), Object.defineProperty(h, "_hidePrevMonthArrow", {
								get: function () {
									return h.__hidePrevMonthArrow
								},
								set: function (e) {
									h.__hidePrevMonthArrow !== e && (c(h.prevMonthNav, "flatpickr-disabled", e), h.__hidePrevMonthArrow = e)
								}
							}), Object.defineProperty(h, "_hideNextMonthArrow", {
								get: function () {
									return h.__hideNextMonthArrow
								},
								set: function (e) {
									h.__hideNextMonthArrow !== e && (c(h.nextMonthNav, "flatpickr-disabled", e), h.__hideNextMonthArrow = e)
								}
							}), h.currentYearElement = h.yearElements[0], ve(), h.monthNav)), h.innerContainer = d("div", "flatpickr-innerContainer"), h.config.weekNumbers) {
							var t = function () {
									h.calendarContainer.classList.add("hasWeeks");
									var e = d("div", "flatpickr-weekwrapper");
									e.appendChild(d("span", "flatpickr-weekday", h.l10n.weekAbbreviation));
									var t = d("div", "flatpickr-weeks");
									return e.appendChild(t), {
										weekWrapper: e,
										weekNumbers: t
									}
								}(),
								n = t.weekWrapper,
								a = t.weekNumbers;
							h.innerContainer.appendChild(n), h.weekNumbers = a, h.weekWrapper = n
						}
						h.rContainer = d("div", "flatpickr-rContainer"), h.rContainer.appendChild($()), h.daysContainer || (h.daysContainer = d("div", "flatpickr-days"), h.daysContainer.tabIndex = -1), J(), h.rContainer.appendChild(h.daysContainer), h.innerContainer.appendChild(h.rContainer), e.appendChild(h.innerContainer)
					}
					h.config.enableTime && e.appendChild(function () {
						h.calendarContainer.classList.add("hasTime"), h.config.noCalendar && h.calendarContainer.classList.add("noCalendar"), h.timeContainer = d("div", "flatpickr-time"), h.timeContainer.tabIndex = -1;
						var e = d("span", "flatpickr-time-separator", ":"),
							t = u("flatpickr-hour", {
								"aria-label": h.l10n.hourAriaLabel
							});
						h.hourElement = t.getElementsByTagName("input")[0];
						var n = u("flatpickr-minute", {
							"aria-label": h.l10n.minuteAriaLabel
						});
						if (h.minuteElement = n.getElementsByTagName("input")[0], h.hourElement.tabIndex = h.minuteElement.tabIndex = -1, h.hourElement.value = i(h.latestSelectedDateObj ? h.latestSelectedDateObj.getHours() : h.config.time_24hr ? h.config.defaultHour : function (e) {
								switch (e % 24) {
									case 0:
									case 12:
										return 12;
									default:
										return e % 12
								}
							}(h.config.defaultHour)), h.minuteElement.value = i(h.latestSelectedDateObj ? h.latestSelectedDateObj.getMinutes() : h.config.defaultMinute), h.hourElement.setAttribute("step", h.config.hourIncrement.toString()), h.minuteElement.setAttribute("step", h.config.minuteIncrement.toString()), h.hourElement.setAttribute("min", h.config.time_24hr ? "0" : "1"), h.hourElement.setAttribute("max", h.config.time_24hr ? "23" : "12"), h.minuteElement.setAttribute("min", "0"), h.minuteElement.setAttribute("max", "59"), h.timeContainer.appendChild(t), h.timeContainer.appendChild(e), h.timeContainer.appendChild(n), h.config.time_24hr && h.timeContainer.classList.add("time24hr"), h.config.enableSeconds) {
							h.timeContainer.classList.add("hasSeconds");
							var a = u("flatpickr-second");
							h.secondElement = a.getElementsByTagName("input")[0], h.secondElement.value = i(h.latestSelectedDateObj ? h.latestSelectedDateObj.getSeconds() : h.config.defaultSeconds), h.secondElement.setAttribute("step", h.minuteElement.getAttribute("step")), h.secondElement.setAttribute("min", "0"), h.secondElement.setAttribute("max", "59"), h.timeContainer.appendChild(d("span", "flatpickr-time-separator", ":")), h.timeContainer.appendChild(a)
						}
						return h.config.time_24hr || (h.amPM = d("span", "flatpickr-am-pm", h.l10n.amPM[o((h.latestSelectedDateObj ? h.hourElement.value : h.config.defaultHour) > 11)]), h.amPM.title = h.l10n.toggleTitle, h.amPM.tabIndex = -1, h.timeContainer.appendChild(h.amPM)), h.timeContainer
					}()), c(h.calendarContainer, "rangeMode", "range" === h.config.mode), c(h.calendarContainer, "animate", !0 === h.config.animate), c(h.calendarContainer, "multiMonth", h.config.showMonths > 1), h.calendarContainer.appendChild(e);
					var r = void 0 !== h.config.appendTo && void 0 !== h.config.appendTo.nodeType;
					if ((h.config.inline || h.config.static) && (h.calendarContainer.classList.add(h.config.inline ? "inline" : "static"), h.config.inline && (!r && h.element.parentNode ? h.element.parentNode.insertBefore(h.calendarContainer, h._input.nextSibling) : void 0 !== h.config.appendTo && h.config.appendTo.appendChild(h.calendarContainer)), h.config.static)) {
						var l = d("div", "flatpickr-wrapper");
						h.element.parentNode && h.element.parentNode.insertBefore(l, h.element), l.appendChild(h.element), h.altInput && l.appendChild(h.altInput), l.appendChild(h.calendarContainer)
					}
					h.config.static || h.config.inline || (void 0 !== h.config.appendTo ? h.config.appendTo : window.document.body).appendChild(h.calendarContainer)
				}(),
				function () {
					if (h.config.wrap && ["open", "close", "toggle", "clear"].forEach(function (e) {
							Array.prototype.forEach.call(h.element.querySelectorAll("[data-" + e + "]"), function (t) {
								return F(t, "click", h[e])
							})
						}), h.isMobile) ! function () {
						var e = h.config.enableTime ? h.config.noCalendar ? "time" : "datetime-local" : "date";
						h.mobileInput = d("input", h.input.className + " flatpickr-mobile"), h.mobileInput.step = h.input.getAttribute("step") || "any", h.mobileInput.tabIndex = 1, h.mobileInput.type = e, h.mobileInput.disabled = h.input.disabled, h.mobileInput.required = h.input.required, h.mobileInput.placeholder = h.input.placeholder, h.mobileFormatStr = "datetime-local" === e ? "Y-m-d\\TH:i:S" : "date" === e ? "Y-m-d" : "H:i:S", h.selectedDates.length > 0 && (h.mobileInput.defaultValue = h.mobileInput.value = h.formatDate(h.selectedDates[0], h.mobileFormatStr)), h.config.minDate && (h.mobileInput.min = h.formatDate(h.config.minDate, "Y-m-d")), h.config.maxDate && (h.mobileInput.max = h.formatDate(h.config.maxDate, "Y-m-d")), h.input.type = "hidden", void 0 !== h.altInput && (h.altInput.type = "hidden");
						try {
							h.input.parentNode && h.input.parentNode.insertBefore(h.mobileInput, h.input.nextSibling)
						} catch (e) {}
						F(h.mobileInput, "change", function (e) {
							h.setDate(e.target.value, !1, h.mobileFormatStr), ge("onChange"), ge("onClose")
						})
					}();
					else {
						var e = r(ae, 50);
						h._debouncedChange = r(Y, M), h.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent) && F(h.daysContainer, "mouseover", function (e) {
							"range" === h.config.mode && ne(e.target)
						}), F(window.document.body, "keydown", te), h.config.inline || h.config.static || F(window, "resize", e), void 0 !== window.ontouchstart ? F(window.document, "touchstart", Z) : F(window.document, "mousedown", N(Z)), F(window.document, "focus", Z, {
							capture: !0
						}), !0 === h.config.clickOpens && (F(h._input, "focus", h.open), F(h._input, "mousedown", N(h.open))), void 0 !== h.daysContainer && (F(h.monthNav, "mousedown", N(be)), F(h.monthNav, ["keyup", "increment"], _), F(h.daysContainer, "mousedown", N(se))), void 0 !== h.timeContainer && void 0 !== h.minuteElement && void 0 !== h.hourElement && (F(h.timeContainer, ["increment"], T), F(h.timeContainer, "blur", T, {
							capture: !0
						}), F(h.timeContainer, "mousedown", N(P)), F([h.hourElement, h.minuteElement], ["focus", "click"], function (e) {
							return e.target.select()
						}), void 0 !== h.secondElement && F(h.secondElement, "focus", function () {
							return h.secondElement && h.secondElement.select()
						}), void 0 !== h.amPM && F(h.amPM, "mousedown", N(function (e) {
							T(e), Y()
						})))
					}
				}(), (h.selectedDates.length || h.config.noCalendar) && (h.config.enableTime && I(h.config.noCalendar ? h.latestSelectedDateObj || h.config.minDate : void 0), we(!1)), x(), h.showTimeInput = h.selectedDates.length > 0 || h.config.noCalendar;
			var a = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
			!h.isMobile && a && le(), ge("onReady")
		}(), h
	}

	function x(e, t) {
		for (var n = Array.prototype.slice.call(e).filter(function (e) {
				return e instanceof HTMLElement
			}), a = [], i = 0; i < n.length; i++) {
			var o = n[i];
			try {
				if (null !== o.getAttribute("data-fp-omit")) continue;
				void 0 !== o._flatpickr && (o._flatpickr.destroy(), o._flatpickr = void 0), o._flatpickr = y(o, t || {}), a.push(o._flatpickr)
			} catch (e) {
				console.error(e)
			}
		}
		return 1 === a.length ? a[0] : a
	}
	"undefined" != typeof HTMLElement && "undefined" != typeof HTMLCollection && "undefined" != typeof NodeList && (HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (e) {
		return x(this, e)
	}, HTMLElement.prototype.flatpickr = function (e) {
		return x([this], e)
	});
	var E = function (e, t) {
		return "string" == typeof e ? x(window.document.querySelectorAll(e), t) : e instanceof Node ? x([e], t) : x(e, t)
	};
	return E.defaultConfig = {}, E.l10ns = {
		en: e({}, a),
		default: e({}, a)
	}, E.localize = function (t) {
		E.l10ns.default = e({}, E.l10ns.default, t)
	}, E.setDefaults = function (t) {
		E.defaultConfig = e({}, E.defaultConfig, t)
	}, E.parseDate = D({}), E.formatDate = v({}), E.compareDates = w, "undefined" != typeof jQuery && void 0 !== jQuery.fn && (jQuery.fn.flatpickr = function (e) {
		return x(this, e)
	}), Date.prototype.fp_incr = function (e) {
		return new Date(this.getFullYear(), this.getMonth(), this.getDate() + ("string" == typeof e ? parseInt(e, 10) : e))
	}, "undefined" != typeof window && (window.flatpickr = E), E
});
 楼主| cqwcns 发表于 2019-11-6 12:35
已解决,将h._input.setAttribute("readonly", "readonly")替换为一个自定义变量
h._input.setAttribute("data-ft", "true")
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 23:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表