super 0.0.12 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +0 -1
- data/README.md +36 -44
- data/app/assets/javascripts/super/application.js +2439 -2
- data/app/assets/stylesheets/super/application.css +805 -0
- data/app/views/super/application/_filter_type_timestamp.html.erb +2 -2
- data/app/views/super/application/_form_field_flatpickr_date.html.erb +8 -0
- data/app/views/super/application/_form_field_flatpickr_datetime.html.erb +8 -0
- data/app/views/super/application/_form_field_flatpickr_time.html.erb +8 -0
- data/frontend/super-frontend/dist/application.css +805 -0
- data/frontend/super-frontend/dist/application.js +2439 -2
- data/lib/super/display/guesser.rb +2 -0
- data/lib/super/display/schema_types.rb +2 -1
- data/lib/super/form/builder.rb +92 -0
- data/lib/super/form/guesser.rb +10 -1
- data/lib/super/form/schema_types.rb +13 -0
- data/lib/super/version.rb +1 -1
- metadata +5 -4
- data/CONTRIBUTING.md +0 -56
- data/Rakefile +0 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6991cb6e58516e762e5a7919bdf1c13154a0d1c2aaca8298f7d04b8cc06dda1e
|
4
|
+
data.tar.gz: d09bec5c0812b7546c519e3c8ee414378c07352843f2fa9787b068c68786b0ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c3339e689d591856fe0a977ae1849b5c285bf1069edae98a272d7b94f8d37b576918f5e2c47fa3a3a274dcb67f93405c4a333ca20f905140dab1e432c8fcca0
|
7
|
+
data.tar.gz: 6f02e2cb0d4307fd9b370df617e73a3620e59b9d063eb6027b6b2800241671b792140706467cce79fddd87c526446051c177d9e1fe9aac09395362484b551bda
|
data/.yardopts
CHANGED
data/README.md
CHANGED
@@ -7,26 +7,12 @@
|
|
7
7
|
|
8
8
|
|
9
9
|
Super is an admin framework for Ruby on Rails applications. Super helps you make
|
10
|
-
|
11
|
-
app that make it great.
|
12
|
-
|
13
|
-
Super strives to let engineers build great admin pages quickly and easily by:
|
14
|
-
|
15
|
-
* Providing a configurable CRUD interface with usable defaults
|
16
|
-
* Building on top of standard Rails controllers and ERB views
|
17
|
-
* Preferring plain Ruby objects and initializers instead of DSLs
|
18
|
-
|
19
|
-
|
20
|
-
Super's distinguishing feature is that it's easy to maintain in your
|
21
|
-
application. It does this by:
|
22
|
-
|
23
|
-
* Supporting a wide range of Ruby (2.3–3.0+) and Rails (5.0–6.1+) versions,
|
24
|
-
which makes it easy to upgrade your Ruby and Rails versions without breaking
|
25
|
-
your admin pages
|
26
|
-
* Having zero dependencies, so that you can upgrade your app's dependencies
|
27
|
-
without affecting your admin pages (or upgrade your admin pages without
|
28
|
-
worrying it might break your app)
|
10
|
+
admin pages quickly and provides a powerful interface for admins to use.
|
29
11
|
|
12
|
+
It's distinguishing feature is that it's easy for you to maintain in your
|
13
|
+
application. It does this by having zero dependencies—this lets you update your
|
14
|
+
app's dependencies without worrying about breaking your admin pages, and vice
|
15
|
+
versa, update your admin pages without breaking your app.
|
30
16
|
|
31
17
|
Note: There may be lots of breaking changes since Super is still fairly young.
|
32
18
|
See the [stability doc](./STABILITY.md) for an idea of what might be changed.
|
@@ -34,45 +20,52 @@ See the [stability doc](./STABILITY.md) for an idea of what might be changed.
|
|
34
20
|
|
35
21
|
## Features
|
36
22
|
|
37
|
-
* Responsive and mobile-friendly
|
38
|
-
*
|
23
|
+
* Responsive and mobile-friendly web pages
|
24
|
+
* Automatic controllers that work without any configuration
|
39
25
|
* Configurable forms
|
40
26
|
* Supports nested attributes `accepts_nested_attributes_for`
|
27
|
+
* New and edit forms can be totally different
|
41
28
|
* Configurable display (index and show tables)
|
42
|
-
*
|
43
|
-
*
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
*
|
29
|
+
* Supports showing computed values that aren't backed by database fields
|
30
|
+
* Advanced filtering/search
|
31
|
+
* Compatible with Sprockets and Webpacker
|
32
|
+
* Pre-built frontend assets. Super doesn't depend on Sass, PostCSS, Babel, etc
|
33
|
+
* Carefully chosen, vendored frontend assets
|
34
|
+
* Stimulus JS v2
|
35
|
+
* Tailwind CSS v1
|
36
|
+
* Rails UJS
|
37
|
+
* Flatpickr
|
38
|
+
* Builds on top of standard Rails controllers and ERB views
|
39
|
+
* Plenty of escape hatches for those very customized pages
|
40
|
+
* No DSL. Configure your admin pages by setting methods and returning objects
|
41
|
+
* Supports Rails 5.0+, 6.0+
|
42
|
+
* Supports Ruby 2.3+, 3.0+
|
49
43
|
|
50
44
|
|
51
45
|
See the [demo][demo] and its [source][demo_source] for an example of some of its
|
52
46
|
features. See the [docs][docs] for a walkthrough.
|
53
47
|
|
54
48
|
|
55
|
-
##
|
56
|
-
|
57
|
-
There are several editions to consider.
|
58
|
-
|
59
|
-
**Super FOSS** provides:
|
49
|
+
## Quick start
|
60
50
|
|
61
|
-
|
62
|
-
* Community support, see the [discussion forum][discussions]
|
51
|
+
Add this line anywhere in your Gemfile:
|
63
52
|
|
64
|
-
|
53
|
+
```ruby
|
54
|
+
gem "super"
|
55
|
+
```
|
65
56
|
|
66
|
-
|
67
|
-
* Ensuring long term development of Super
|
57
|
+
Then install Super by running:
|
68
58
|
|
69
|
-
|
59
|
+
```
|
60
|
+
bundle install
|
61
|
+
bin/rails g super:install
|
62
|
+
```
|
70
63
|
|
71
|
-
|
72
|
-
* An LGPL exemption
|
64
|
+
You can create admin pages by running this for all the models you want:
|
73
65
|
|
74
|
-
|
75
|
-
|
66
|
+
```
|
67
|
+
bin/rails g super:resource ModelName
|
68
|
+
```
|
76
69
|
|
77
70
|
|
78
71
|
## Super doesn't fit my needs. What are some alternatives?
|
@@ -97,6 +90,5 @@ The gem is available under the terms of the [GNU LGPLv3](./LICENSE).
|
|
97
90
|
[gem]: https://rubygems.org/gems/super
|
98
91
|
[discussions]: https://github.com/zachahn/super/discussions
|
99
92
|
[docs]: https://superadministration.github.io/
|
100
|
-
[newsletter]: https://tinyletter.com/zachahn
|
101
93
|
[demo]: https://demo-super.herokuapp.com/admin/members
|
102
94
|
[demo_source]: https://github.com/zachahn/super_demo
|
@@ -4514,7 +4514,2441 @@ var _default = /*#__PURE__*/function (_Controller) {
|
|
4514
4514
|
}(_stimulus.Controller);
|
4515
4515
|
|
4516
4516
|
exports.default = _default;
|
4517
|
-
},{"stimulus":"../node_modules/stimulus/index.js"}],"
|
4517
|
+
},{"stimulus":"../node_modules/stimulus/index.js"}],"../node_modules/flatpickr/dist/esm/types/options.js":[function(require,module,exports) {
|
4518
|
+
"use strict";
|
4519
|
+
|
4520
|
+
Object.defineProperty(exports, "__esModule", {
|
4521
|
+
value: true
|
4522
|
+
});
|
4523
|
+
exports.defaults = exports.HOOKS = void 0;
|
4524
|
+
const HOOKS = ["onChange", "onClose", "onDayCreate", "onDestroy", "onKeyDown", "onMonthChange", "onOpen", "onParseConfig", "onReady", "onValueUpdate", "onYearChange", "onPreCalendarPosition"];
|
4525
|
+
exports.HOOKS = HOOKS;
|
4526
|
+
const defaults = {
|
4527
|
+
_disable: [],
|
4528
|
+
allowInput: false,
|
4529
|
+
allowInvalidPreload: false,
|
4530
|
+
altFormat: "F j, Y",
|
4531
|
+
altInput: false,
|
4532
|
+
altInputClass: "form-control input",
|
4533
|
+
animate: typeof window === "object" && window.navigator.userAgent.indexOf("MSIE") === -1,
|
4534
|
+
ariaDateFormat: "F j, Y",
|
4535
|
+
autoFillDefaultTime: true,
|
4536
|
+
clickOpens: true,
|
4537
|
+
closeOnSelect: true,
|
4538
|
+
conjunction: ", ",
|
4539
|
+
dateFormat: "Y-m-d",
|
4540
|
+
defaultHour: 12,
|
4541
|
+
defaultMinute: 0,
|
4542
|
+
defaultSeconds: 0,
|
4543
|
+
disable: [],
|
4544
|
+
disableMobile: false,
|
4545
|
+
enableSeconds: false,
|
4546
|
+
enableTime: false,
|
4547
|
+
errorHandler: err => typeof console !== "undefined" && console.warn(err),
|
4548
|
+
getWeek: givenDate => {
|
4549
|
+
const date = new Date(givenDate.getTime());
|
4550
|
+
date.setHours(0, 0, 0, 0);
|
4551
|
+
date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);
|
4552
|
+
var week1 = new Date(date.getFullYear(), 0, 4);
|
4553
|
+
return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);
|
4554
|
+
},
|
4555
|
+
hourIncrement: 1,
|
4556
|
+
ignoredFocusElements: [],
|
4557
|
+
inline: false,
|
4558
|
+
locale: "default",
|
4559
|
+
minuteIncrement: 5,
|
4560
|
+
mode: "single",
|
4561
|
+
monthSelectorType: "dropdown",
|
4562
|
+
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>",
|
4563
|
+
noCalendar: false,
|
4564
|
+
now: new Date(),
|
4565
|
+
onChange: [],
|
4566
|
+
onClose: [],
|
4567
|
+
onDayCreate: [],
|
4568
|
+
onDestroy: [],
|
4569
|
+
onKeyDown: [],
|
4570
|
+
onMonthChange: [],
|
4571
|
+
onOpen: [],
|
4572
|
+
onParseConfig: [],
|
4573
|
+
onReady: [],
|
4574
|
+
onValueUpdate: [],
|
4575
|
+
onYearChange: [],
|
4576
|
+
onPreCalendarPosition: [],
|
4577
|
+
plugins: [],
|
4578
|
+
position: "auto",
|
4579
|
+
positionElement: undefined,
|
4580
|
+
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>",
|
4581
|
+
shorthandCurrentMonth: false,
|
4582
|
+
showMonths: 1,
|
4583
|
+
static: false,
|
4584
|
+
time_24hr: false,
|
4585
|
+
weekNumbers: false,
|
4586
|
+
wrap: false
|
4587
|
+
};
|
4588
|
+
exports.defaults = defaults;
|
4589
|
+
},{}],"../node_modules/flatpickr/dist/esm/l10n/default.js":[function(require,module,exports) {
|
4590
|
+
"use strict";
|
4591
|
+
|
4592
|
+
Object.defineProperty(exports, "__esModule", {
|
4593
|
+
value: true
|
4594
|
+
});
|
4595
|
+
exports.default = exports.english = void 0;
|
4596
|
+
const english = {
|
4597
|
+
weekdays: {
|
4598
|
+
shorthand: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
|
4599
|
+
longhand: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
|
4600
|
+
},
|
4601
|
+
months: {
|
4602
|
+
shorthand: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
|
4603
|
+
longhand: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
|
4604
|
+
},
|
4605
|
+
daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
|
4606
|
+
firstDayOfWeek: 0,
|
4607
|
+
ordinal: nth => {
|
4608
|
+
const s = nth % 100;
|
4609
|
+
if (s > 3 && s < 21) return "th";
|
4610
|
+
|
4611
|
+
switch (s % 10) {
|
4612
|
+
case 1:
|
4613
|
+
return "st";
|
4614
|
+
|
4615
|
+
case 2:
|
4616
|
+
return "nd";
|
4617
|
+
|
4618
|
+
case 3:
|
4619
|
+
return "rd";
|
4620
|
+
|
4621
|
+
default:
|
4622
|
+
return "th";
|
4623
|
+
}
|
4624
|
+
},
|
4625
|
+
rangeSeparator: " to ",
|
4626
|
+
weekAbbreviation: "Wk",
|
4627
|
+
scrollTitle: "Scroll to increment",
|
4628
|
+
toggleTitle: "Click to toggle",
|
4629
|
+
amPM: ["AM", "PM"],
|
4630
|
+
yearAriaLabel: "Year",
|
4631
|
+
monthAriaLabel: "Month",
|
4632
|
+
hourAriaLabel: "Hour",
|
4633
|
+
minuteAriaLabel: "Minute",
|
4634
|
+
time_24hr: false
|
4635
|
+
};
|
4636
|
+
exports.english = english;
|
4637
|
+
var _default = english;
|
4638
|
+
exports.default = _default;
|
4639
|
+
},{}],"../node_modules/flatpickr/dist/esm/utils/index.js":[function(require,module,exports) {
|
4640
|
+
"use strict";
|
4641
|
+
|
4642
|
+
Object.defineProperty(exports, "__esModule", {
|
4643
|
+
value: true
|
4644
|
+
});
|
4645
|
+
exports.debounce = debounce;
|
4646
|
+
exports.arrayify = exports.int = exports.pad = void 0;
|
4647
|
+
|
4648
|
+
const pad = (number, length = 2) => `000${number}`.slice(length * -1);
|
4649
|
+
|
4650
|
+
exports.pad = pad;
|
4651
|
+
|
4652
|
+
const int = bool => bool === true ? 1 : 0;
|
4653
|
+
|
4654
|
+
exports.int = int;
|
4655
|
+
|
4656
|
+
function debounce(fn, wait) {
|
4657
|
+
let t;
|
4658
|
+
return function () {
|
4659
|
+
clearTimeout(t);
|
4660
|
+
t = setTimeout(() => fn.apply(this, arguments), wait);
|
4661
|
+
};
|
4662
|
+
}
|
4663
|
+
|
4664
|
+
const arrayify = obj => obj instanceof Array ? obj : [obj];
|
4665
|
+
|
4666
|
+
exports.arrayify = arrayify;
|
4667
|
+
},{}],"../node_modules/flatpickr/dist/esm/utils/dom.js":[function(require,module,exports) {
|
4668
|
+
"use strict";
|
4669
|
+
|
4670
|
+
Object.defineProperty(exports, "__esModule", {
|
4671
|
+
value: true
|
4672
|
+
});
|
4673
|
+
exports.toggleClass = toggleClass;
|
4674
|
+
exports.createElement = createElement;
|
4675
|
+
exports.clearNode = clearNode;
|
4676
|
+
exports.findParent = findParent;
|
4677
|
+
exports.createNumberInput = createNumberInput;
|
4678
|
+
exports.getEventTarget = getEventTarget;
|
4679
|
+
|
4680
|
+
function toggleClass(elem, className, bool) {
|
4681
|
+
if (bool === true) return elem.classList.add(className);
|
4682
|
+
elem.classList.remove(className);
|
4683
|
+
}
|
4684
|
+
|
4685
|
+
function createElement(tag, className, content) {
|
4686
|
+
const e = window.document.createElement(tag);
|
4687
|
+
className = className || "";
|
4688
|
+
content = content || "";
|
4689
|
+
e.className = className;
|
4690
|
+
if (content !== undefined) e.textContent = content;
|
4691
|
+
return e;
|
4692
|
+
}
|
4693
|
+
|
4694
|
+
function clearNode(node) {
|
4695
|
+
while (node.firstChild) node.removeChild(node.firstChild);
|
4696
|
+
}
|
4697
|
+
|
4698
|
+
function findParent(node, condition) {
|
4699
|
+
if (condition(node)) return node;else if (node.parentNode) return findParent(node.parentNode, condition);
|
4700
|
+
return undefined;
|
4701
|
+
}
|
4702
|
+
|
4703
|
+
function createNumberInput(inputClassName, opts) {
|
4704
|
+
const wrapper = createElement("div", "numInputWrapper"),
|
4705
|
+
numInput = createElement("input", "numInput " + inputClassName),
|
4706
|
+
arrowUp = createElement("span", "arrowUp"),
|
4707
|
+
arrowDown = createElement("span", "arrowDown");
|
4708
|
+
|
4709
|
+
if (navigator.userAgent.indexOf("MSIE 9.0") === -1) {
|
4710
|
+
numInput.type = "number";
|
4711
|
+
} else {
|
4712
|
+
numInput.type = "text";
|
4713
|
+
numInput.pattern = "\\d*";
|
4714
|
+
}
|
4715
|
+
|
4716
|
+
if (opts !== undefined) for (const key in opts) numInput.setAttribute(key, opts[key]);
|
4717
|
+
wrapper.appendChild(numInput);
|
4718
|
+
wrapper.appendChild(arrowUp);
|
4719
|
+
wrapper.appendChild(arrowDown);
|
4720
|
+
return wrapper;
|
4721
|
+
}
|
4722
|
+
|
4723
|
+
function getEventTarget(event) {
|
4724
|
+
try {
|
4725
|
+
if (typeof event.composedPath === "function") {
|
4726
|
+
const path = event.composedPath();
|
4727
|
+
return path[0];
|
4728
|
+
}
|
4729
|
+
|
4730
|
+
return event.target;
|
4731
|
+
} catch (error) {
|
4732
|
+
return event.target;
|
4733
|
+
}
|
4734
|
+
}
|
4735
|
+
},{}],"../node_modules/flatpickr/dist/esm/utils/formatting.js":[function(require,module,exports) {
|
4736
|
+
"use strict";
|
4737
|
+
|
4738
|
+
Object.defineProperty(exports, "__esModule", {
|
4739
|
+
value: true
|
4740
|
+
});
|
4741
|
+
exports.formats = exports.tokenRegex = exports.revFormat = exports.monthToStr = void 0;
|
4742
|
+
|
4743
|
+
var _utils = require("../utils");
|
4744
|
+
|
4745
|
+
const doNothing = () => undefined;
|
4746
|
+
|
4747
|
+
const monthToStr = (monthNumber, shorthand, locale) => locale.months[shorthand ? "shorthand" : "longhand"][monthNumber];
|
4748
|
+
|
4749
|
+
exports.monthToStr = monthToStr;
|
4750
|
+
const revFormat = {
|
4751
|
+
D: doNothing,
|
4752
|
+
F: function (dateObj, monthName, locale) {
|
4753
|
+
dateObj.setMonth(locale.months.longhand.indexOf(monthName));
|
4754
|
+
},
|
4755
|
+
G: (dateObj, hour) => {
|
4756
|
+
dateObj.setHours(parseFloat(hour));
|
4757
|
+
},
|
4758
|
+
H: (dateObj, hour) => {
|
4759
|
+
dateObj.setHours(parseFloat(hour));
|
4760
|
+
},
|
4761
|
+
J: (dateObj, day) => {
|
4762
|
+
dateObj.setDate(parseFloat(day));
|
4763
|
+
},
|
4764
|
+
K: (dateObj, amPM, locale) => {
|
4765
|
+
dateObj.setHours(dateObj.getHours() % 12 + 12 * (0, _utils.int)(new RegExp(locale.amPM[1], "i").test(amPM)));
|
4766
|
+
},
|
4767
|
+
M: function (dateObj, shortMonth, locale) {
|
4768
|
+
dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));
|
4769
|
+
},
|
4770
|
+
S: (dateObj, seconds) => {
|
4771
|
+
dateObj.setSeconds(parseFloat(seconds));
|
4772
|
+
},
|
4773
|
+
U: (_, unixSeconds) => new Date(parseFloat(unixSeconds) * 1000),
|
4774
|
+
W: function (dateObj, weekNum, locale) {
|
4775
|
+
const weekNumber = parseInt(weekNum);
|
4776
|
+
const date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);
|
4777
|
+
date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);
|
4778
|
+
return date;
|
4779
|
+
},
|
4780
|
+
Y: (dateObj, year) => {
|
4781
|
+
dateObj.setFullYear(parseFloat(year));
|
4782
|
+
},
|
4783
|
+
Z: (_, ISODate) => new Date(ISODate),
|
4784
|
+
d: (dateObj, day) => {
|
4785
|
+
dateObj.setDate(parseFloat(day));
|
4786
|
+
},
|
4787
|
+
h: (dateObj, hour) => {
|
4788
|
+
dateObj.setHours(parseFloat(hour));
|
4789
|
+
},
|
4790
|
+
i: (dateObj, minutes) => {
|
4791
|
+
dateObj.setMinutes(parseFloat(minutes));
|
4792
|
+
},
|
4793
|
+
j: (dateObj, day) => {
|
4794
|
+
dateObj.setDate(parseFloat(day));
|
4795
|
+
},
|
4796
|
+
l: doNothing,
|
4797
|
+
m: (dateObj, month) => {
|
4798
|
+
dateObj.setMonth(parseFloat(month) - 1);
|
4799
|
+
},
|
4800
|
+
n: (dateObj, month) => {
|
4801
|
+
dateObj.setMonth(parseFloat(month) - 1);
|
4802
|
+
},
|
4803
|
+
s: (dateObj, seconds) => {
|
4804
|
+
dateObj.setSeconds(parseFloat(seconds));
|
4805
|
+
},
|
4806
|
+
u: (_, unixMillSeconds) => new Date(parseFloat(unixMillSeconds)),
|
4807
|
+
w: doNothing,
|
4808
|
+
y: (dateObj, year) => {
|
4809
|
+
dateObj.setFullYear(2000 + parseFloat(year));
|
4810
|
+
}
|
4811
|
+
};
|
4812
|
+
exports.revFormat = revFormat;
|
4813
|
+
const tokenRegex = {
|
4814
|
+
D: "(\\w+)",
|
4815
|
+
F: "(\\w+)",
|
4816
|
+
G: "(\\d\\d|\\d)",
|
4817
|
+
H: "(\\d\\d|\\d)",
|
4818
|
+
J: "(\\d\\d|\\d)\\w+",
|
4819
|
+
K: "",
|
4820
|
+
M: "(\\w+)",
|
4821
|
+
S: "(\\d\\d|\\d)",
|
4822
|
+
U: "(.+)",
|
4823
|
+
W: "(\\d\\d|\\d)",
|
4824
|
+
Y: "(\\d{4})",
|
4825
|
+
Z: "(.+)",
|
4826
|
+
d: "(\\d\\d|\\d)",
|
4827
|
+
h: "(\\d\\d|\\d)",
|
4828
|
+
i: "(\\d\\d|\\d)",
|
4829
|
+
j: "(\\d\\d|\\d)",
|
4830
|
+
l: "(\\w+)",
|
4831
|
+
m: "(\\d\\d|\\d)",
|
4832
|
+
n: "(\\d\\d|\\d)",
|
4833
|
+
s: "(\\d\\d|\\d)",
|
4834
|
+
u: "(.+)",
|
4835
|
+
w: "(\\d\\d|\\d)",
|
4836
|
+
y: "(\\d{2})"
|
4837
|
+
};
|
4838
|
+
exports.tokenRegex = tokenRegex;
|
4839
|
+
const formats = {
|
4840
|
+
Z: date => date.toISOString(),
|
4841
|
+
D: function (date, locale, options) {
|
4842
|
+
return locale.weekdays.shorthand[formats.w(date, locale, options)];
|
4843
|
+
},
|
4844
|
+
F: function (date, locale, options) {
|
4845
|
+
return monthToStr(formats.n(date, locale, options) - 1, false, locale);
|
4846
|
+
},
|
4847
|
+
G: function (date, locale, options) {
|
4848
|
+
return (0, _utils.pad)(formats.h(date, locale, options));
|
4849
|
+
},
|
4850
|
+
H: date => (0, _utils.pad)(date.getHours()),
|
4851
|
+
J: function (date, locale) {
|
4852
|
+
return locale.ordinal !== undefined ? date.getDate() + locale.ordinal(date.getDate()) : date.getDate();
|
4853
|
+
},
|
4854
|
+
K: (date, locale) => locale.amPM[(0, _utils.int)(date.getHours() > 11)],
|
4855
|
+
M: function (date, locale) {
|
4856
|
+
return monthToStr(date.getMonth(), true, locale);
|
4857
|
+
},
|
4858
|
+
S: date => (0, _utils.pad)(date.getSeconds()),
|
4859
|
+
U: date => date.getTime() / 1000,
|
4860
|
+
W: function (date, _, options) {
|
4861
|
+
return options.getWeek(date);
|
4862
|
+
},
|
4863
|
+
Y: date => (0, _utils.pad)(date.getFullYear(), 4),
|
4864
|
+
d: date => (0, _utils.pad)(date.getDate()),
|
4865
|
+
h: date => date.getHours() % 12 ? date.getHours() % 12 : 12,
|
4866
|
+
i: date => (0, _utils.pad)(date.getMinutes()),
|
4867
|
+
j: date => date.getDate(),
|
4868
|
+
l: function (date, locale) {
|
4869
|
+
return locale.weekdays.longhand[date.getDay()];
|
4870
|
+
},
|
4871
|
+
m: date => (0, _utils.pad)(date.getMonth() + 1),
|
4872
|
+
n: date => date.getMonth() + 1,
|
4873
|
+
s: date => date.getSeconds(),
|
4874
|
+
u: date => date.getTime(),
|
4875
|
+
w: date => date.getDay(),
|
4876
|
+
y: date => String(date.getFullYear()).substring(2)
|
4877
|
+
};
|
4878
|
+
exports.formats = formats;
|
4879
|
+
},{"../utils":"../node_modules/flatpickr/dist/esm/utils/index.js"}],"../node_modules/flatpickr/dist/esm/utils/dates.js":[function(require,module,exports) {
|
4880
|
+
"use strict";
|
4881
|
+
|
4882
|
+
Object.defineProperty(exports, "__esModule", {
|
4883
|
+
value: true
|
4884
|
+
});
|
4885
|
+
exports.compareDates = compareDates;
|
4886
|
+
exports.compareTimes = compareTimes;
|
4887
|
+
exports.getDefaultHours = getDefaultHours;
|
4888
|
+
exports.duration = exports.isBetween = exports.createDateParser = exports.createDateFormatter = void 0;
|
4889
|
+
|
4890
|
+
var _formatting = require("./formatting");
|
4891
|
+
|
4892
|
+
var _options = require("../types/options");
|
4893
|
+
|
4894
|
+
var _default = require("../l10n/default");
|
4895
|
+
|
4896
|
+
const createDateFormatter = ({
|
4897
|
+
config = _options.defaults,
|
4898
|
+
l10n = _default.english,
|
4899
|
+
isMobile = false
|
4900
|
+
}) => (dateObj, frmt, overrideLocale) => {
|
4901
|
+
const locale = overrideLocale || l10n;
|
4902
|
+
|
4903
|
+
if (config.formatDate !== undefined && !isMobile) {
|
4904
|
+
return config.formatDate(dateObj, frmt, locale);
|
4905
|
+
}
|
4906
|
+
|
4907
|
+
return frmt.split("").map((c, i, arr) => _formatting.formats[c] && arr[i - 1] !== "\\" ? _formatting.formats[c](dateObj, locale, config) : c !== "\\" ? c : "").join("");
|
4908
|
+
};
|
4909
|
+
|
4910
|
+
exports.createDateFormatter = createDateFormatter;
|
4911
|
+
|
4912
|
+
const createDateParser = ({
|
4913
|
+
config = _options.defaults,
|
4914
|
+
l10n = _default.english
|
4915
|
+
}) => (date, givenFormat, timeless, customLocale) => {
|
4916
|
+
if (date !== 0 && !date) return undefined;
|
4917
|
+
const locale = customLocale || l10n;
|
4918
|
+
let parsedDate;
|
4919
|
+
const dateOrig = date;
|
4920
|
+
if (date instanceof Date) parsedDate = new Date(date.getTime());else if (typeof date !== "string" && date.toFixed !== undefined) parsedDate = new Date(date);else if (typeof date === "string") {
|
4921
|
+
const format = givenFormat || (config || _options.defaults).dateFormat;
|
4922
|
+
const datestr = String(date).trim();
|
4923
|
+
|
4924
|
+
if (datestr === "today") {
|
4925
|
+
parsedDate = new Date();
|
4926
|
+
timeless = true;
|
4927
|
+
} else if (/Z$/.test(datestr) || /GMT$/.test(datestr)) parsedDate = new Date(date);else if (config && config.parseDate) parsedDate = config.parseDate(date, format);else {
|
4928
|
+
parsedDate = !config || !config.noCalendar ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0) : new Date(new Date().setHours(0, 0, 0, 0));
|
4929
|
+
let matched,
|
4930
|
+
ops = [];
|
4931
|
+
|
4932
|
+
for (let i = 0, matchIndex = 0, regexStr = ""; i < format.length; i++) {
|
4933
|
+
const token = format[i];
|
4934
|
+
const isBackSlash = token === "\\";
|
4935
|
+
const escaped = format[i - 1] === "\\" || isBackSlash;
|
4936
|
+
|
4937
|
+
if (_formatting.tokenRegex[token] && !escaped) {
|
4938
|
+
regexStr += _formatting.tokenRegex[token];
|
4939
|
+
const match = new RegExp(regexStr).exec(date);
|
4940
|
+
|
4941
|
+
if (match && (matched = true)) {
|
4942
|
+
ops[token !== "Y" ? "push" : "unshift"]({
|
4943
|
+
fn: _formatting.revFormat[token],
|
4944
|
+
val: match[++matchIndex]
|
4945
|
+
});
|
4946
|
+
}
|
4947
|
+
} else if (!isBackSlash) regexStr += ".";
|
4948
|
+
|
4949
|
+
ops.forEach(({
|
4950
|
+
fn,
|
4951
|
+
val
|
4952
|
+
}) => parsedDate = fn(parsedDate, val, locale) || parsedDate);
|
4953
|
+
}
|
4954
|
+
|
4955
|
+
parsedDate = matched ? parsedDate : undefined;
|
4956
|
+
}
|
4957
|
+
}
|
4958
|
+
|
4959
|
+
if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {
|
4960
|
+
config.errorHandler(new Error(`Invalid date provided: ${dateOrig}`));
|
4961
|
+
return undefined;
|
4962
|
+
}
|
4963
|
+
|
4964
|
+
if (timeless === true) parsedDate.setHours(0, 0, 0, 0);
|
4965
|
+
return parsedDate;
|
4966
|
+
};
|
4967
|
+
|
4968
|
+
exports.createDateParser = createDateParser;
|
4969
|
+
|
4970
|
+
function compareDates(date1, date2, timeless = true) {
|
4971
|
+
if (timeless !== false) {
|
4972
|
+
return new Date(date1.getTime()).setHours(0, 0, 0, 0) - new Date(date2.getTime()).setHours(0, 0, 0, 0);
|
4973
|
+
}
|
4974
|
+
|
4975
|
+
return date1.getTime() - date2.getTime();
|
4976
|
+
}
|
4977
|
+
|
4978
|
+
function compareTimes(date1, date2) {
|
4979
|
+
return 3600 * (date1.getHours() - date2.getHours()) + 60 * (date1.getMinutes() - date2.getMinutes()) + date1.getSeconds() - date2.getSeconds();
|
4980
|
+
}
|
4981
|
+
|
4982
|
+
const isBetween = (ts, ts1, ts2) => {
|
4983
|
+
return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);
|
4984
|
+
};
|
4985
|
+
|
4986
|
+
exports.isBetween = isBetween;
|
4987
|
+
const duration = {
|
4988
|
+
DAY: 86400000
|
4989
|
+
};
|
4990
|
+
exports.duration = duration;
|
4991
|
+
|
4992
|
+
function getDefaultHours(config) {
|
4993
|
+
let hours = config.defaultHour;
|
4994
|
+
let minutes = config.defaultMinute;
|
4995
|
+
let seconds = config.defaultSeconds;
|
4996
|
+
|
4997
|
+
if (config.minDate !== undefined) {
|
4998
|
+
const minHour = config.minDate.getHours();
|
4999
|
+
const minMinutes = config.minDate.getMinutes();
|
5000
|
+
const minSeconds = config.minDate.getSeconds();
|
5001
|
+
|
5002
|
+
if (hours < minHour) {
|
5003
|
+
hours = minHour;
|
5004
|
+
}
|
5005
|
+
|
5006
|
+
if (hours === minHour && minutes < minMinutes) {
|
5007
|
+
minutes = minMinutes;
|
5008
|
+
}
|
5009
|
+
|
5010
|
+
if (hours === minHour && minutes === minMinutes && seconds < minSeconds) seconds = config.minDate.getSeconds();
|
5011
|
+
}
|
5012
|
+
|
5013
|
+
if (config.maxDate !== undefined) {
|
5014
|
+
const maxHr = config.maxDate.getHours();
|
5015
|
+
const maxMinutes = config.maxDate.getMinutes();
|
5016
|
+
hours = Math.min(hours, maxHr);
|
5017
|
+
if (hours === maxHr) minutes = Math.min(maxMinutes, minutes);
|
5018
|
+
if (hours === maxHr && minutes === maxMinutes) seconds = config.maxDate.getSeconds();
|
5019
|
+
}
|
5020
|
+
|
5021
|
+
return {
|
5022
|
+
hours,
|
5023
|
+
minutes,
|
5024
|
+
seconds
|
5025
|
+
};
|
5026
|
+
}
|
5027
|
+
},{"./formatting":"../node_modules/flatpickr/dist/esm/utils/formatting.js","../types/options":"../node_modules/flatpickr/dist/esm/types/options.js","../l10n/default":"../node_modules/flatpickr/dist/esm/l10n/default.js"}],"../node_modules/flatpickr/dist/esm/utils/polyfills.js":[function(require,module,exports) {
|
5028
|
+
"use strict";
|
5029
|
+
|
5030
|
+
if (typeof Object.assign !== "function") {
|
5031
|
+
Object.assign = function (target, ...args) {
|
5032
|
+
if (!target) {
|
5033
|
+
throw TypeError("Cannot convert undefined or null to object");
|
5034
|
+
}
|
5035
|
+
|
5036
|
+
for (const source of args) {
|
5037
|
+
if (source) {
|
5038
|
+
Object.keys(source).forEach(key => target[key] = source[key]);
|
5039
|
+
}
|
5040
|
+
}
|
5041
|
+
|
5042
|
+
return target;
|
5043
|
+
};
|
5044
|
+
}
|
5045
|
+
},{}],"../node_modules/flatpickr/dist/esm/index.js":[function(require,module,exports) {
|
5046
|
+
"use strict";
|
5047
|
+
|
5048
|
+
Object.defineProperty(exports, "__esModule", {
|
5049
|
+
value: true
|
5050
|
+
});
|
5051
|
+
exports.default = void 0;
|
5052
|
+
|
5053
|
+
var _options = require("./types/options");
|
5054
|
+
|
5055
|
+
var _default2 = _interopRequireDefault(require("./l10n/default"));
|
5056
|
+
|
5057
|
+
var _utils = require("./utils");
|
5058
|
+
|
5059
|
+
var _dom = require("./utils/dom");
|
5060
|
+
|
5061
|
+
var _dates = require("./utils/dates");
|
5062
|
+
|
5063
|
+
var _formatting = require("./utils/formatting");
|
5064
|
+
|
5065
|
+
require("./utils/polyfills");
|
5066
|
+
|
5067
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
5068
|
+
|
5069
|
+
const DEBOUNCED_CHANGE_MS = 300;
|
5070
|
+
|
5071
|
+
function FlatpickrInstance(element, instanceConfig) {
|
5072
|
+
const self = {
|
5073
|
+
config: Object.assign(Object.assign({}, _options.defaults), flatpickr.defaultConfig),
|
5074
|
+
l10n: _default2.default
|
5075
|
+
};
|
5076
|
+
self.parseDate = (0, _dates.createDateParser)({
|
5077
|
+
config: self.config,
|
5078
|
+
l10n: self.l10n
|
5079
|
+
});
|
5080
|
+
self._handlers = [];
|
5081
|
+
self.pluginElements = [];
|
5082
|
+
self.loadedPlugins = [];
|
5083
|
+
self._bind = bind;
|
5084
|
+
self._setHoursFromDate = setHoursFromDate;
|
5085
|
+
self._positionCalendar = positionCalendar;
|
5086
|
+
self.changeMonth = changeMonth;
|
5087
|
+
self.changeYear = changeYear;
|
5088
|
+
self.clear = clear;
|
5089
|
+
self.close = close;
|
5090
|
+
self._createElement = _dom.createElement;
|
5091
|
+
self.destroy = destroy;
|
5092
|
+
self.isEnabled = isEnabled;
|
5093
|
+
self.jumpToDate = jumpToDate;
|
5094
|
+
self.open = open;
|
5095
|
+
self.redraw = redraw;
|
5096
|
+
self.set = set;
|
5097
|
+
self.setDate = setDate;
|
5098
|
+
self.toggle = toggle;
|
5099
|
+
|
5100
|
+
function setupHelperFunctions() {
|
5101
|
+
self.utils = {
|
5102
|
+
getDaysInMonth(month = self.currentMonth, yr = self.currentYear) {
|
5103
|
+
if (month === 1 && (yr % 4 === 0 && yr % 100 !== 0 || yr % 400 === 0)) return 29;
|
5104
|
+
return self.l10n.daysInMonth[month];
|
5105
|
+
}
|
5106
|
+
|
5107
|
+
};
|
5108
|
+
}
|
5109
|
+
|
5110
|
+
function init() {
|
5111
|
+
self.element = self.input = element;
|
5112
|
+
self.isOpen = false;
|
5113
|
+
parseConfig();
|
5114
|
+
setupLocale();
|
5115
|
+
setupInputs();
|
5116
|
+
setupDates();
|
5117
|
+
setupHelperFunctions();
|
5118
|
+
if (!self.isMobile) build();
|
5119
|
+
bindEvents();
|
5120
|
+
|
5121
|
+
if (self.selectedDates.length || self.config.noCalendar) {
|
5122
|
+
if (self.config.enableTime) {
|
5123
|
+
setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);
|
5124
|
+
}
|
5125
|
+
|
5126
|
+
updateValue(false);
|
5127
|
+
}
|
5128
|
+
|
5129
|
+
setCalendarWidth();
|
5130
|
+
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
|
5131
|
+
|
5132
|
+
if (!self.isMobile && isSafari) {
|
5133
|
+
positionCalendar();
|
5134
|
+
}
|
5135
|
+
|
5136
|
+
triggerEvent("onReady");
|
5137
|
+
}
|
5138
|
+
|
5139
|
+
function bindToInstance(fn) {
|
5140
|
+
return fn.bind(self);
|
5141
|
+
}
|
5142
|
+
|
5143
|
+
function setCalendarWidth() {
|
5144
|
+
const config = self.config;
|
5145
|
+
|
5146
|
+
if (config.weekNumbers === false && config.showMonths === 1) {
|
5147
|
+
return;
|
5148
|
+
} else if (config.noCalendar !== true) {
|
5149
|
+
window.requestAnimationFrame(function () {
|
5150
|
+
if (self.calendarContainer !== undefined) {
|
5151
|
+
self.calendarContainer.style.visibility = "hidden";
|
5152
|
+
self.calendarContainer.style.display = "block";
|
5153
|
+
}
|
5154
|
+
|
5155
|
+
if (self.daysContainer !== undefined) {
|
5156
|
+
const daysWidth = (self.days.offsetWidth + 1) * config.showMonths;
|
5157
|
+
self.daysContainer.style.width = daysWidth + "px";
|
5158
|
+
self.calendarContainer.style.width = daysWidth + (self.weekWrapper !== undefined ? self.weekWrapper.offsetWidth : 0) + "px";
|
5159
|
+
self.calendarContainer.style.removeProperty("visibility");
|
5160
|
+
self.calendarContainer.style.removeProperty("display");
|
5161
|
+
}
|
5162
|
+
});
|
5163
|
+
}
|
5164
|
+
}
|
5165
|
+
|
5166
|
+
function updateTime(e) {
|
5167
|
+
if (self.selectedDates.length === 0) {
|
5168
|
+
const defaultDate = self.config.minDate === undefined || (0, _dates.compareDates)(new Date(), self.config.minDate) >= 0 ? new Date() : new Date(self.config.minDate.getTime());
|
5169
|
+
const defaults = (0, _dates.getDefaultHours)(self.config);
|
5170
|
+
defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());
|
5171
|
+
self.selectedDates = [defaultDate];
|
5172
|
+
self.latestSelectedDateObj = defaultDate;
|
5173
|
+
}
|
5174
|
+
|
5175
|
+
if (e !== undefined && e.type !== "blur") {
|
5176
|
+
timeWrapper(e);
|
5177
|
+
}
|
5178
|
+
|
5179
|
+
const prevValue = self._input.value;
|
5180
|
+
setHoursFromInputs();
|
5181
|
+
updateValue();
|
5182
|
+
|
5183
|
+
if (self._input.value !== prevValue) {
|
5184
|
+
self._debouncedChange();
|
5185
|
+
}
|
5186
|
+
}
|
5187
|
+
|
5188
|
+
function ampm2military(hour, amPM) {
|
5189
|
+
return hour % 12 + 12 * (0, _utils.int)(amPM === self.l10n.amPM[1]);
|
5190
|
+
}
|
5191
|
+
|
5192
|
+
function military2ampm(hour) {
|
5193
|
+
switch (hour % 24) {
|
5194
|
+
case 0:
|
5195
|
+
case 12:
|
5196
|
+
return 12;
|
5197
|
+
|
5198
|
+
default:
|
5199
|
+
return hour % 12;
|
5200
|
+
}
|
5201
|
+
}
|
5202
|
+
|
5203
|
+
function setHoursFromInputs() {
|
5204
|
+
if (self.hourElement === undefined || self.minuteElement === undefined) return;
|
5205
|
+
let hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24,
|
5206
|
+
minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60,
|
5207
|
+
seconds = self.secondElement !== undefined ? (parseInt(self.secondElement.value, 10) || 0) % 60 : 0;
|
5208
|
+
|
5209
|
+
if (self.amPM !== undefined) {
|
5210
|
+
hours = ampm2military(hours, self.amPM.textContent);
|
5211
|
+
}
|
5212
|
+
|
5213
|
+
const limitMinHours = self.config.minTime !== undefined || self.config.minDate && self.minDateHasTime && self.latestSelectedDateObj && (0, _dates.compareDates)(self.latestSelectedDateObj, self.config.minDate, true) === 0;
|
5214
|
+
const limitMaxHours = self.config.maxTime !== undefined || self.config.maxDate && self.maxDateHasTime && self.latestSelectedDateObj && (0, _dates.compareDates)(self.latestSelectedDateObj, self.config.maxDate, true) === 0;
|
5215
|
+
|
5216
|
+
if (limitMaxHours) {
|
5217
|
+
const maxTime = self.config.maxTime !== undefined ? self.config.maxTime : self.config.maxDate;
|
5218
|
+
hours = Math.min(hours, maxTime.getHours());
|
5219
|
+
if (hours === maxTime.getHours()) minutes = Math.min(minutes, maxTime.getMinutes());
|
5220
|
+
if (minutes === maxTime.getMinutes()) seconds = Math.min(seconds, maxTime.getSeconds());
|
5221
|
+
}
|
5222
|
+
|
5223
|
+
if (limitMinHours) {
|
5224
|
+
const minTime = self.config.minTime !== undefined ? self.config.minTime : self.config.minDate;
|
5225
|
+
hours = Math.max(hours, minTime.getHours());
|
5226
|
+
if (hours === minTime.getHours() && minutes < minTime.getMinutes()) minutes = minTime.getMinutes();
|
5227
|
+
if (minutes === minTime.getMinutes()) seconds = Math.max(seconds, minTime.getSeconds());
|
5228
|
+
}
|
5229
|
+
|
5230
|
+
setHours(hours, minutes, seconds);
|
5231
|
+
}
|
5232
|
+
|
5233
|
+
function setHoursFromDate(dateObj) {
|
5234
|
+
const date = dateObj || self.latestSelectedDateObj;
|
5235
|
+
|
5236
|
+
if (date) {
|
5237
|
+
setHours(date.getHours(), date.getMinutes(), date.getSeconds());
|
5238
|
+
}
|
5239
|
+
}
|
5240
|
+
|
5241
|
+
function setHours(hours, minutes, seconds) {
|
5242
|
+
if (self.latestSelectedDateObj !== undefined) {
|
5243
|
+
self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);
|
5244
|
+
}
|
5245
|
+
|
5246
|
+
if (!self.hourElement || !self.minuteElement || self.isMobile) return;
|
5247
|
+
self.hourElement.value = (0, _utils.pad)(!self.config.time_24hr ? (12 + hours) % 12 + 12 * (0, _utils.int)(hours % 12 === 0) : hours);
|
5248
|
+
self.minuteElement.value = (0, _utils.pad)(minutes);
|
5249
|
+
if (self.amPM !== undefined) self.amPM.textContent = self.l10n.amPM[(0, _utils.int)(hours >= 12)];
|
5250
|
+
if (self.secondElement !== undefined) self.secondElement.value = (0, _utils.pad)(seconds);
|
5251
|
+
}
|
5252
|
+
|
5253
|
+
function onYearInput(event) {
|
5254
|
+
const eventTarget = (0, _dom.getEventTarget)(event);
|
5255
|
+
const year = parseInt(eventTarget.value) + (event.delta || 0);
|
5256
|
+
|
5257
|
+
if (year / 1000 > 1 || event.key === "Enter" && !/[^\d]/.test(year.toString())) {
|
5258
|
+
changeYear(year);
|
5259
|
+
}
|
5260
|
+
}
|
5261
|
+
|
5262
|
+
function bind(element, event, handler, options) {
|
5263
|
+
if (event instanceof Array) return event.forEach(ev => bind(element, ev, handler, options));
|
5264
|
+
if (element instanceof Array) return element.forEach(el => bind(el, event, handler, options));
|
5265
|
+
element.addEventListener(event, handler, options);
|
5266
|
+
|
5267
|
+
self._handlers.push({
|
5268
|
+
remove: () => element.removeEventListener(event, handler)
|
5269
|
+
});
|
5270
|
+
}
|
5271
|
+
|
5272
|
+
function triggerChange() {
|
5273
|
+
triggerEvent("onChange");
|
5274
|
+
}
|
5275
|
+
|
5276
|
+
function bindEvents() {
|
5277
|
+
if (self.config.wrap) {
|
5278
|
+
["open", "close", "toggle", "clear"].forEach(evt => {
|
5279
|
+
Array.prototype.forEach.call(self.element.querySelectorAll(`[data-${evt}]`), el => bind(el, "click", self[evt]));
|
5280
|
+
});
|
5281
|
+
}
|
5282
|
+
|
5283
|
+
if (self.isMobile) {
|
5284
|
+
setupMobile();
|
5285
|
+
return;
|
5286
|
+
}
|
5287
|
+
|
5288
|
+
const debouncedResize = (0, _utils.debounce)(onResize, 50);
|
5289
|
+
self._debouncedChange = (0, _utils.debounce)(triggerChange, DEBOUNCED_CHANGE_MS);
|
5290
|
+
if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent)) bind(self.daysContainer, "mouseover", e => {
|
5291
|
+
if (self.config.mode === "range") onMouseOver((0, _dom.getEventTarget)(e));
|
5292
|
+
});
|
5293
|
+
bind(window.document.body, "keydown", onKeyDown);
|
5294
|
+
if (!self.config.inline && !self.config.static) bind(window, "resize", debouncedResize);
|
5295
|
+
if (window.ontouchstart !== undefined) bind(window.document, "touchstart", documentClick);else bind(window.document, "mousedown", documentClick);
|
5296
|
+
bind(window.document, "focus", documentClick, {
|
5297
|
+
capture: true
|
5298
|
+
});
|
5299
|
+
|
5300
|
+
if (self.config.clickOpens === true) {
|
5301
|
+
bind(self._input, "focus", self.open);
|
5302
|
+
bind(self._input, "click", self.open);
|
5303
|
+
}
|
5304
|
+
|
5305
|
+
if (self.daysContainer !== undefined) {
|
5306
|
+
bind(self.monthNav, "click", onMonthNavClick);
|
5307
|
+
bind(self.monthNav, ["keyup", "increment"], onYearInput);
|
5308
|
+
bind(self.daysContainer, "click", selectDate);
|
5309
|
+
}
|
5310
|
+
|
5311
|
+
if (self.timeContainer !== undefined && self.minuteElement !== undefined && self.hourElement !== undefined) {
|
5312
|
+
const selText = e => (0, _dom.getEventTarget)(e).select();
|
5313
|
+
|
5314
|
+
bind(self.timeContainer, ["increment"], updateTime);
|
5315
|
+
bind(self.timeContainer, "blur", updateTime, {
|
5316
|
+
capture: true
|
5317
|
+
});
|
5318
|
+
bind(self.timeContainer, "click", timeIncrement);
|
5319
|
+
bind([self.hourElement, self.minuteElement], ["focus", "click"], selText);
|
5320
|
+
if (self.secondElement !== undefined) bind(self.secondElement, "focus", () => self.secondElement && self.secondElement.select());
|
5321
|
+
|
5322
|
+
if (self.amPM !== undefined) {
|
5323
|
+
bind(self.amPM, "click", e => {
|
5324
|
+
updateTime(e);
|
5325
|
+
triggerChange();
|
5326
|
+
});
|
5327
|
+
}
|
5328
|
+
}
|
5329
|
+
|
5330
|
+
if (self.config.allowInput) {
|
5331
|
+
bind(self._input, "blur", onBlur);
|
5332
|
+
}
|
5333
|
+
}
|
5334
|
+
|
5335
|
+
function jumpToDate(jumpDate, triggerChange) {
|
5336
|
+
const jumpTo = jumpDate !== undefined ? self.parseDate(jumpDate) : self.latestSelectedDateObj || (self.config.minDate && self.config.minDate > self.now ? self.config.minDate : self.config.maxDate && self.config.maxDate < self.now ? self.config.maxDate : self.now);
|
5337
|
+
const oldYear = self.currentYear;
|
5338
|
+
const oldMonth = self.currentMonth;
|
5339
|
+
|
5340
|
+
try {
|
5341
|
+
if (jumpTo !== undefined) {
|
5342
|
+
self.currentYear = jumpTo.getFullYear();
|
5343
|
+
self.currentMonth = jumpTo.getMonth();
|
5344
|
+
}
|
5345
|
+
} catch (e) {
|
5346
|
+
e.message = "Invalid date supplied: " + jumpTo;
|
5347
|
+
self.config.errorHandler(e);
|
5348
|
+
}
|
5349
|
+
|
5350
|
+
if (triggerChange && self.currentYear !== oldYear) {
|
5351
|
+
triggerEvent("onYearChange");
|
5352
|
+
buildMonthSwitch();
|
5353
|
+
}
|
5354
|
+
|
5355
|
+
if (triggerChange && (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {
|
5356
|
+
triggerEvent("onMonthChange");
|
5357
|
+
}
|
5358
|
+
|
5359
|
+
self.redraw();
|
5360
|
+
}
|
5361
|
+
|
5362
|
+
function timeIncrement(e) {
|
5363
|
+
const eventTarget = (0, _dom.getEventTarget)(e);
|
5364
|
+
if (~eventTarget.className.indexOf("arrow")) incrementNumInput(e, eventTarget.classList.contains("arrowUp") ? 1 : -1);
|
5365
|
+
}
|
5366
|
+
|
5367
|
+
function incrementNumInput(e, delta, inputElem) {
|
5368
|
+
const target = e && (0, _dom.getEventTarget)(e);
|
5369
|
+
const input = inputElem || target && target.parentNode && target.parentNode.firstChild;
|
5370
|
+
const event = createEvent("increment");
|
5371
|
+
event.delta = delta;
|
5372
|
+
input && input.dispatchEvent(event);
|
5373
|
+
}
|
5374
|
+
|
5375
|
+
function build() {
|
5376
|
+
const fragment = window.document.createDocumentFragment();
|
5377
|
+
self.calendarContainer = (0, _dom.createElement)("div", "flatpickr-calendar");
|
5378
|
+
self.calendarContainer.tabIndex = -1;
|
5379
|
+
|
5380
|
+
if (!self.config.noCalendar) {
|
5381
|
+
fragment.appendChild(buildMonthNav());
|
5382
|
+
self.innerContainer = (0, _dom.createElement)("div", "flatpickr-innerContainer");
|
5383
|
+
|
5384
|
+
if (self.config.weekNumbers) {
|
5385
|
+
const {
|
5386
|
+
weekWrapper,
|
5387
|
+
weekNumbers
|
5388
|
+
} = buildWeeks();
|
5389
|
+
self.innerContainer.appendChild(weekWrapper);
|
5390
|
+
self.weekNumbers = weekNumbers;
|
5391
|
+
self.weekWrapper = weekWrapper;
|
5392
|
+
}
|
5393
|
+
|
5394
|
+
self.rContainer = (0, _dom.createElement)("div", "flatpickr-rContainer");
|
5395
|
+
self.rContainer.appendChild(buildWeekdays());
|
5396
|
+
|
5397
|
+
if (!self.daysContainer) {
|
5398
|
+
self.daysContainer = (0, _dom.createElement)("div", "flatpickr-days");
|
5399
|
+
self.daysContainer.tabIndex = -1;
|
5400
|
+
}
|
5401
|
+
|
5402
|
+
buildDays();
|
5403
|
+
self.rContainer.appendChild(self.daysContainer);
|
5404
|
+
self.innerContainer.appendChild(self.rContainer);
|
5405
|
+
fragment.appendChild(self.innerContainer);
|
5406
|
+
}
|
5407
|
+
|
5408
|
+
if (self.config.enableTime) {
|
5409
|
+
fragment.appendChild(buildTime());
|
5410
|
+
}
|
5411
|
+
|
5412
|
+
(0, _dom.toggleClass)(self.calendarContainer, "rangeMode", self.config.mode === "range");
|
5413
|
+
(0, _dom.toggleClass)(self.calendarContainer, "animate", self.config.animate === true);
|
5414
|
+
(0, _dom.toggleClass)(self.calendarContainer, "multiMonth", self.config.showMonths > 1);
|
5415
|
+
self.calendarContainer.appendChild(fragment);
|
5416
|
+
const customAppend = self.config.appendTo !== undefined && self.config.appendTo.nodeType !== undefined;
|
5417
|
+
|
5418
|
+
if (self.config.inline || self.config.static) {
|
5419
|
+
self.calendarContainer.classList.add(self.config.inline ? "inline" : "static");
|
5420
|
+
|
5421
|
+
if (self.config.inline) {
|
5422
|
+
if (!customAppend && self.element.parentNode) self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);else if (self.config.appendTo !== undefined) self.config.appendTo.appendChild(self.calendarContainer);
|
5423
|
+
}
|
5424
|
+
|
5425
|
+
if (self.config.static) {
|
5426
|
+
const wrapper = (0, _dom.createElement)("div", "flatpickr-wrapper");
|
5427
|
+
if (self.element.parentNode) self.element.parentNode.insertBefore(wrapper, self.element);
|
5428
|
+
wrapper.appendChild(self.element);
|
5429
|
+
if (self.altInput) wrapper.appendChild(self.altInput);
|
5430
|
+
wrapper.appendChild(self.calendarContainer);
|
5431
|
+
}
|
5432
|
+
}
|
5433
|
+
|
5434
|
+
if (!self.config.static && !self.config.inline) (self.config.appendTo !== undefined ? self.config.appendTo : window.document.body).appendChild(self.calendarContainer);
|
5435
|
+
}
|
5436
|
+
|
5437
|
+
function createDay(className, date, dayNumber, i) {
|
5438
|
+
const dateIsEnabled = isEnabled(date, true),
|
5439
|
+
dayElement = (0, _dom.createElement)("span", "flatpickr-day " + className, date.getDate().toString());
|
5440
|
+
dayElement.dateObj = date;
|
5441
|
+
dayElement.$i = i;
|
5442
|
+
dayElement.setAttribute("aria-label", self.formatDate(date, self.config.ariaDateFormat));
|
5443
|
+
|
5444
|
+
if (className.indexOf("hidden") === -1 && (0, _dates.compareDates)(date, self.now) === 0) {
|
5445
|
+
self.todayDateElem = dayElement;
|
5446
|
+
dayElement.classList.add("today");
|
5447
|
+
dayElement.setAttribute("aria-current", "date");
|
5448
|
+
}
|
5449
|
+
|
5450
|
+
if (dateIsEnabled) {
|
5451
|
+
dayElement.tabIndex = -1;
|
5452
|
+
|
5453
|
+
if (isDateSelected(date)) {
|
5454
|
+
dayElement.classList.add("selected");
|
5455
|
+
self.selectedDateElem = dayElement;
|
5456
|
+
|
5457
|
+
if (self.config.mode === "range") {
|
5458
|
+
(0, _dom.toggleClass)(dayElement, "startRange", self.selectedDates[0] && (0, _dates.compareDates)(date, self.selectedDates[0], true) === 0);
|
5459
|
+
(0, _dom.toggleClass)(dayElement, "endRange", self.selectedDates[1] && (0, _dates.compareDates)(date, self.selectedDates[1], true) === 0);
|
5460
|
+
if (className === "nextMonthDay") dayElement.classList.add("inRange");
|
5461
|
+
}
|
5462
|
+
}
|
5463
|
+
} else {
|
5464
|
+
dayElement.classList.add("flatpickr-disabled");
|
5465
|
+
}
|
5466
|
+
|
5467
|
+
if (self.config.mode === "range") {
|
5468
|
+
if (isDateInRange(date) && !isDateSelected(date)) dayElement.classList.add("inRange");
|
5469
|
+
}
|
5470
|
+
|
5471
|
+
if (self.weekNumbers && self.config.showMonths === 1 && className !== "prevMonthDay" && dayNumber % 7 === 1) {
|
5472
|
+
self.weekNumbers.insertAdjacentHTML("beforeend", "<span class='flatpickr-day'>" + self.config.getWeek(date) + "</span>");
|
5473
|
+
}
|
5474
|
+
|
5475
|
+
triggerEvent("onDayCreate", dayElement);
|
5476
|
+
return dayElement;
|
5477
|
+
}
|
5478
|
+
|
5479
|
+
function focusOnDayElem(targetNode) {
|
5480
|
+
targetNode.focus();
|
5481
|
+
if (self.config.mode === "range") onMouseOver(targetNode);
|
5482
|
+
}
|
5483
|
+
|
5484
|
+
function getFirstAvailableDay(delta) {
|
5485
|
+
const startMonth = delta > 0 ? 0 : self.config.showMonths - 1;
|
5486
|
+
const endMonth = delta > 0 ? self.config.showMonths : -1;
|
5487
|
+
|
5488
|
+
for (let m = startMonth; m != endMonth; m += delta) {
|
5489
|
+
const month = self.daysContainer.children[m];
|
5490
|
+
const startIndex = delta > 0 ? 0 : month.children.length - 1;
|
5491
|
+
const endIndex = delta > 0 ? month.children.length : -1;
|
5492
|
+
|
5493
|
+
for (let i = startIndex; i != endIndex; i += delta) {
|
5494
|
+
const c = month.children[i];
|
5495
|
+
if (c.className.indexOf("hidden") === -1 && isEnabled(c.dateObj)) return c;
|
5496
|
+
}
|
5497
|
+
}
|
5498
|
+
|
5499
|
+
return undefined;
|
5500
|
+
}
|
5501
|
+
|
5502
|
+
function getNextAvailableDay(current, delta) {
|
5503
|
+
const givenMonth = current.className.indexOf("Month") === -1 ? current.dateObj.getMonth() : self.currentMonth;
|
5504
|
+
const endMonth = delta > 0 ? self.config.showMonths : -1;
|
5505
|
+
const loopDelta = delta > 0 ? 1 : -1;
|
5506
|
+
|
5507
|
+
for (let m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {
|
5508
|
+
const month = self.daysContainer.children[m];
|
5509
|
+
const startIndex = givenMonth - self.currentMonth === m ? current.$i + delta : delta < 0 ? month.children.length - 1 : 0;
|
5510
|
+
const numMonthDays = month.children.length;
|
5511
|
+
|
5512
|
+
for (let i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {
|
5513
|
+
const c = month.children[i];
|
5514
|
+
if (c.className.indexOf("hidden") === -1 && isEnabled(c.dateObj) && Math.abs(current.$i - i) >= Math.abs(delta)) return focusOnDayElem(c);
|
5515
|
+
}
|
5516
|
+
}
|
5517
|
+
|
5518
|
+
self.changeMonth(loopDelta);
|
5519
|
+
focusOnDay(getFirstAvailableDay(loopDelta), 0);
|
5520
|
+
return undefined;
|
5521
|
+
}
|
5522
|
+
|
5523
|
+
function focusOnDay(current, offset) {
|
5524
|
+
const dayFocused = isInView(document.activeElement || document.body);
|
5525
|
+
const startElem = current !== undefined ? current : dayFocused ? document.activeElement : self.selectedDateElem !== undefined && isInView(self.selectedDateElem) ? self.selectedDateElem : self.todayDateElem !== undefined && isInView(self.todayDateElem) ? self.todayDateElem : getFirstAvailableDay(offset > 0 ? 1 : -1);
|
5526
|
+
|
5527
|
+
if (startElem === undefined) {
|
5528
|
+
self._input.focus();
|
5529
|
+
} else if (!dayFocused) {
|
5530
|
+
focusOnDayElem(startElem);
|
5531
|
+
} else {
|
5532
|
+
getNextAvailableDay(startElem, offset);
|
5533
|
+
}
|
5534
|
+
}
|
5535
|
+
|
5536
|
+
function buildMonthDays(year, month) {
|
5537
|
+
const firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;
|
5538
|
+
const prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);
|
5539
|
+
const daysInMonth = self.utils.getDaysInMonth(month, year),
|
5540
|
+
days = window.document.createDocumentFragment(),
|
5541
|
+
isMultiMonth = self.config.showMonths > 1,
|
5542
|
+
prevMonthDayClass = isMultiMonth ? "prevMonthDay hidden" : "prevMonthDay",
|
5543
|
+
nextMonthDayClass = isMultiMonth ? "nextMonthDay hidden" : "nextMonthDay";
|
5544
|
+
let dayNumber = prevMonthDays + 1 - firstOfMonth,
|
5545
|
+
dayIndex = 0;
|
5546
|
+
|
5547
|
+
for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {
|
5548
|
+
days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));
|
5549
|
+
}
|
5550
|
+
|
5551
|
+
for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {
|
5552
|
+
days.appendChild(createDay("", new Date(year, month, dayNumber), dayNumber, dayIndex));
|
5553
|
+
}
|
5554
|
+
|
5555
|
+
for (let dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth && (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {
|
5556
|
+
days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));
|
5557
|
+
}
|
5558
|
+
|
5559
|
+
const dayContainer = (0, _dom.createElement)("div", "dayContainer");
|
5560
|
+
dayContainer.appendChild(days);
|
5561
|
+
return dayContainer;
|
5562
|
+
}
|
5563
|
+
|
5564
|
+
function buildDays() {
|
5565
|
+
if (self.daysContainer === undefined) {
|
5566
|
+
return;
|
5567
|
+
}
|
5568
|
+
|
5569
|
+
(0, _dom.clearNode)(self.daysContainer);
|
5570
|
+
if (self.weekNumbers) (0, _dom.clearNode)(self.weekNumbers);
|
5571
|
+
const frag = document.createDocumentFragment();
|
5572
|
+
|
5573
|
+
for (let i = 0; i < self.config.showMonths; i++) {
|
5574
|
+
const d = new Date(self.currentYear, self.currentMonth, 1);
|
5575
|
+
d.setMonth(self.currentMonth + i);
|
5576
|
+
frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));
|
5577
|
+
}
|
5578
|
+
|
5579
|
+
self.daysContainer.appendChild(frag);
|
5580
|
+
self.days = self.daysContainer.firstChild;
|
5581
|
+
|
5582
|
+
if (self.config.mode === "range" && self.selectedDates.length === 1) {
|
5583
|
+
onMouseOver();
|
5584
|
+
}
|
5585
|
+
}
|
5586
|
+
|
5587
|
+
function buildMonthSwitch() {
|
5588
|
+
if (self.config.showMonths > 1 || self.config.monthSelectorType !== "dropdown") return;
|
5589
|
+
|
5590
|
+
const shouldBuildMonth = function (month) {
|
5591
|
+
if (self.config.minDate !== undefined && self.currentYear === self.config.minDate.getFullYear() && month < self.config.minDate.getMonth()) {
|
5592
|
+
return false;
|
5593
|
+
}
|
5594
|
+
|
5595
|
+
return !(self.config.maxDate !== undefined && self.currentYear === self.config.maxDate.getFullYear() && month > self.config.maxDate.getMonth());
|
5596
|
+
};
|
5597
|
+
|
5598
|
+
self.monthsDropdownContainer.tabIndex = -1;
|
5599
|
+
self.monthsDropdownContainer.innerHTML = "";
|
5600
|
+
|
5601
|
+
for (let i = 0; i < 12; i++) {
|
5602
|
+
if (!shouldBuildMonth(i)) continue;
|
5603
|
+
const month = (0, _dom.createElement)("option", "flatpickr-monthDropdown-month");
|
5604
|
+
month.value = new Date(self.currentYear, i).getMonth().toString();
|
5605
|
+
month.textContent = (0, _formatting.monthToStr)(i, self.config.shorthandCurrentMonth, self.l10n);
|
5606
|
+
month.tabIndex = -1;
|
5607
|
+
|
5608
|
+
if (self.currentMonth === i) {
|
5609
|
+
month.selected = true;
|
5610
|
+
}
|
5611
|
+
|
5612
|
+
self.monthsDropdownContainer.appendChild(month);
|
5613
|
+
}
|
5614
|
+
}
|
5615
|
+
|
5616
|
+
function buildMonth() {
|
5617
|
+
const container = (0, _dom.createElement)("div", "flatpickr-month");
|
5618
|
+
const monthNavFragment = window.document.createDocumentFragment();
|
5619
|
+
let monthElement;
|
5620
|
+
|
5621
|
+
if (self.config.showMonths > 1 || self.config.monthSelectorType === "static") {
|
5622
|
+
monthElement = (0, _dom.createElement)("span", "cur-month");
|
5623
|
+
} else {
|
5624
|
+
self.monthsDropdownContainer = (0, _dom.createElement)("select", "flatpickr-monthDropdown-months");
|
5625
|
+
self.monthsDropdownContainer.setAttribute("aria-label", self.l10n.monthAriaLabel);
|
5626
|
+
bind(self.monthsDropdownContainer, "change", e => {
|
5627
|
+
const target = (0, _dom.getEventTarget)(e);
|
5628
|
+
const selectedMonth = parseInt(target.value, 10);
|
5629
|
+
self.changeMonth(selectedMonth - self.currentMonth);
|
5630
|
+
triggerEvent("onMonthChange");
|
5631
|
+
});
|
5632
|
+
buildMonthSwitch();
|
5633
|
+
monthElement = self.monthsDropdownContainer;
|
5634
|
+
}
|
5635
|
+
|
5636
|
+
const yearInput = (0, _dom.createNumberInput)("cur-year", {
|
5637
|
+
tabindex: "-1"
|
5638
|
+
});
|
5639
|
+
const yearElement = yearInput.getElementsByTagName("input")[0];
|
5640
|
+
yearElement.setAttribute("aria-label", self.l10n.yearAriaLabel);
|
5641
|
+
|
5642
|
+
if (self.config.minDate) {
|
5643
|
+
yearElement.setAttribute("min", self.config.minDate.getFullYear().toString());
|
5644
|
+
}
|
5645
|
+
|
5646
|
+
if (self.config.maxDate) {
|
5647
|
+
yearElement.setAttribute("max", self.config.maxDate.getFullYear().toString());
|
5648
|
+
yearElement.disabled = !!self.config.minDate && self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();
|
5649
|
+
}
|
5650
|
+
|
5651
|
+
const currentMonth = (0, _dom.createElement)("div", "flatpickr-current-month");
|
5652
|
+
currentMonth.appendChild(monthElement);
|
5653
|
+
currentMonth.appendChild(yearInput);
|
5654
|
+
monthNavFragment.appendChild(currentMonth);
|
5655
|
+
container.appendChild(monthNavFragment);
|
5656
|
+
return {
|
5657
|
+
container,
|
5658
|
+
yearElement,
|
5659
|
+
monthElement
|
5660
|
+
};
|
5661
|
+
}
|
5662
|
+
|
5663
|
+
function buildMonths() {
|
5664
|
+
(0, _dom.clearNode)(self.monthNav);
|
5665
|
+
self.monthNav.appendChild(self.prevMonthNav);
|
5666
|
+
|
5667
|
+
if (self.config.showMonths) {
|
5668
|
+
self.yearElements = [];
|
5669
|
+
self.monthElements = [];
|
5670
|
+
}
|
5671
|
+
|
5672
|
+
for (let m = self.config.showMonths; m--;) {
|
5673
|
+
const month = buildMonth();
|
5674
|
+
self.yearElements.push(month.yearElement);
|
5675
|
+
self.monthElements.push(month.monthElement);
|
5676
|
+
self.monthNav.appendChild(month.container);
|
5677
|
+
}
|
5678
|
+
|
5679
|
+
self.monthNav.appendChild(self.nextMonthNav);
|
5680
|
+
}
|
5681
|
+
|
5682
|
+
function buildMonthNav() {
|
5683
|
+
self.monthNav = (0, _dom.createElement)("div", "flatpickr-months");
|
5684
|
+
self.yearElements = [];
|
5685
|
+
self.monthElements = [];
|
5686
|
+
self.prevMonthNav = (0, _dom.createElement)("span", "flatpickr-prev-month");
|
5687
|
+
self.prevMonthNav.innerHTML = self.config.prevArrow;
|
5688
|
+
self.nextMonthNav = (0, _dom.createElement)("span", "flatpickr-next-month");
|
5689
|
+
self.nextMonthNav.innerHTML = self.config.nextArrow;
|
5690
|
+
buildMonths();
|
5691
|
+
Object.defineProperty(self, "_hidePrevMonthArrow", {
|
5692
|
+
get: () => self.__hidePrevMonthArrow,
|
5693
|
+
|
5694
|
+
set(bool) {
|
5695
|
+
if (self.__hidePrevMonthArrow !== bool) {
|
5696
|
+
(0, _dom.toggleClass)(self.prevMonthNav, "flatpickr-disabled", bool);
|
5697
|
+
self.__hidePrevMonthArrow = bool;
|
5698
|
+
}
|
5699
|
+
}
|
5700
|
+
|
5701
|
+
});
|
5702
|
+
Object.defineProperty(self, "_hideNextMonthArrow", {
|
5703
|
+
get: () => self.__hideNextMonthArrow,
|
5704
|
+
|
5705
|
+
set(bool) {
|
5706
|
+
if (self.__hideNextMonthArrow !== bool) {
|
5707
|
+
(0, _dom.toggleClass)(self.nextMonthNav, "flatpickr-disabled", bool);
|
5708
|
+
self.__hideNextMonthArrow = bool;
|
5709
|
+
}
|
5710
|
+
}
|
5711
|
+
|
5712
|
+
});
|
5713
|
+
self.currentYearElement = self.yearElements[0];
|
5714
|
+
updateNavigationCurrentMonth();
|
5715
|
+
return self.monthNav;
|
5716
|
+
}
|
5717
|
+
|
5718
|
+
function buildTime() {
|
5719
|
+
self.calendarContainer.classList.add("hasTime");
|
5720
|
+
if (self.config.noCalendar) self.calendarContainer.classList.add("noCalendar");
|
5721
|
+
const defaults = (0, _dates.getDefaultHours)(self.config);
|
5722
|
+
self.timeContainer = (0, _dom.createElement)("div", "flatpickr-time");
|
5723
|
+
self.timeContainer.tabIndex = -1;
|
5724
|
+
const separator = (0, _dom.createElement)("span", "flatpickr-time-separator", ":");
|
5725
|
+
const hourInput = (0, _dom.createNumberInput)("flatpickr-hour", {
|
5726
|
+
"aria-label": self.l10n.hourAriaLabel
|
5727
|
+
});
|
5728
|
+
self.hourElement = hourInput.getElementsByTagName("input")[0];
|
5729
|
+
const minuteInput = (0, _dom.createNumberInput)("flatpickr-minute", {
|
5730
|
+
"aria-label": self.l10n.minuteAriaLabel
|
5731
|
+
});
|
5732
|
+
self.minuteElement = minuteInput.getElementsByTagName("input")[0];
|
5733
|
+
self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;
|
5734
|
+
self.hourElement.value = (0, _utils.pad)(self.latestSelectedDateObj ? self.latestSelectedDateObj.getHours() : self.config.time_24hr ? defaults.hours : military2ampm(defaults.hours));
|
5735
|
+
self.minuteElement.value = (0, _utils.pad)(self.latestSelectedDateObj ? self.latestSelectedDateObj.getMinutes() : defaults.minutes);
|
5736
|
+
self.hourElement.setAttribute("step", self.config.hourIncrement.toString());
|
5737
|
+
self.minuteElement.setAttribute("step", self.config.minuteIncrement.toString());
|
5738
|
+
self.hourElement.setAttribute("min", self.config.time_24hr ? "0" : "1");
|
5739
|
+
self.hourElement.setAttribute("max", self.config.time_24hr ? "23" : "12");
|
5740
|
+
self.hourElement.setAttribute("maxlength", "2");
|
5741
|
+
self.minuteElement.setAttribute("min", "0");
|
5742
|
+
self.minuteElement.setAttribute("max", "59");
|
5743
|
+
self.minuteElement.setAttribute("maxlength", "2");
|
5744
|
+
self.timeContainer.appendChild(hourInput);
|
5745
|
+
self.timeContainer.appendChild(separator);
|
5746
|
+
self.timeContainer.appendChild(minuteInput);
|
5747
|
+
if (self.config.time_24hr) self.timeContainer.classList.add("time24hr");
|
5748
|
+
|
5749
|
+
if (self.config.enableSeconds) {
|
5750
|
+
self.timeContainer.classList.add("hasSeconds");
|
5751
|
+
const secondInput = (0, _dom.createNumberInput)("flatpickr-second");
|
5752
|
+
self.secondElement = secondInput.getElementsByTagName("input")[0];
|
5753
|
+
self.secondElement.value = (0, _utils.pad)(self.latestSelectedDateObj ? self.latestSelectedDateObj.getSeconds() : defaults.seconds);
|
5754
|
+
self.secondElement.setAttribute("step", self.minuteElement.getAttribute("step"));
|
5755
|
+
self.secondElement.setAttribute("min", "0");
|
5756
|
+
self.secondElement.setAttribute("max", "59");
|
5757
|
+
self.secondElement.setAttribute("maxlength", "2");
|
5758
|
+
self.timeContainer.appendChild((0, _dom.createElement)("span", "flatpickr-time-separator", ":"));
|
5759
|
+
self.timeContainer.appendChild(secondInput);
|
5760
|
+
}
|
5761
|
+
|
5762
|
+
if (!self.config.time_24hr) {
|
5763
|
+
self.amPM = (0, _dom.createElement)("span", "flatpickr-am-pm", self.l10n.amPM[(0, _utils.int)((self.latestSelectedDateObj ? self.hourElement.value : self.config.defaultHour) > 11)]);
|
5764
|
+
self.amPM.title = self.l10n.toggleTitle;
|
5765
|
+
self.amPM.tabIndex = -1;
|
5766
|
+
self.timeContainer.appendChild(self.amPM);
|
5767
|
+
}
|
5768
|
+
|
5769
|
+
return self.timeContainer;
|
5770
|
+
}
|
5771
|
+
|
5772
|
+
function buildWeekdays() {
|
5773
|
+
if (!self.weekdayContainer) self.weekdayContainer = (0, _dom.createElement)("div", "flatpickr-weekdays");else (0, _dom.clearNode)(self.weekdayContainer);
|
5774
|
+
|
5775
|
+
for (let i = self.config.showMonths; i--;) {
|
5776
|
+
const container = (0, _dom.createElement)("div", "flatpickr-weekdaycontainer");
|
5777
|
+
self.weekdayContainer.appendChild(container);
|
5778
|
+
}
|
5779
|
+
|
5780
|
+
updateWeekdays();
|
5781
|
+
return self.weekdayContainer;
|
5782
|
+
}
|
5783
|
+
|
5784
|
+
function updateWeekdays() {
|
5785
|
+
if (!self.weekdayContainer) {
|
5786
|
+
return;
|
5787
|
+
}
|
5788
|
+
|
5789
|
+
const firstDayOfWeek = self.l10n.firstDayOfWeek;
|
5790
|
+
let weekdays = [...self.l10n.weekdays.shorthand];
|
5791
|
+
|
5792
|
+
if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {
|
5793
|
+
weekdays = [...weekdays.splice(firstDayOfWeek, weekdays.length), ...weekdays.splice(0, firstDayOfWeek)];
|
5794
|
+
}
|
5795
|
+
|
5796
|
+
for (let i = self.config.showMonths; i--;) {
|
5797
|
+
self.weekdayContainer.children[i].innerHTML = `
|
5798
|
+
<span class='flatpickr-weekday'>
|
5799
|
+
${weekdays.join("</span><span class='flatpickr-weekday'>")}
|
5800
|
+
</span>
|
5801
|
+
`;
|
5802
|
+
}
|
5803
|
+
}
|
5804
|
+
|
5805
|
+
function buildWeeks() {
|
5806
|
+
self.calendarContainer.classList.add("hasWeeks");
|
5807
|
+
const weekWrapper = (0, _dom.createElement)("div", "flatpickr-weekwrapper");
|
5808
|
+
weekWrapper.appendChild((0, _dom.createElement)("span", "flatpickr-weekday", self.l10n.weekAbbreviation));
|
5809
|
+
const weekNumbers = (0, _dom.createElement)("div", "flatpickr-weeks");
|
5810
|
+
weekWrapper.appendChild(weekNumbers);
|
5811
|
+
return {
|
5812
|
+
weekWrapper,
|
5813
|
+
weekNumbers
|
5814
|
+
};
|
5815
|
+
}
|
5816
|
+
|
5817
|
+
function changeMonth(value, isOffset = true) {
|
5818
|
+
const delta = isOffset ? value : value - self.currentMonth;
|
5819
|
+
if (delta < 0 && self._hidePrevMonthArrow === true || delta > 0 && self._hideNextMonthArrow === true) return;
|
5820
|
+
self.currentMonth += delta;
|
5821
|
+
|
5822
|
+
if (self.currentMonth < 0 || self.currentMonth > 11) {
|
5823
|
+
self.currentYear += self.currentMonth > 11 ? 1 : -1;
|
5824
|
+
self.currentMonth = (self.currentMonth + 12) % 12;
|
5825
|
+
triggerEvent("onYearChange");
|
5826
|
+
buildMonthSwitch();
|
5827
|
+
}
|
5828
|
+
|
5829
|
+
buildDays();
|
5830
|
+
triggerEvent("onMonthChange");
|
5831
|
+
updateNavigationCurrentMonth();
|
5832
|
+
}
|
5833
|
+
|
5834
|
+
function clear(triggerChangeEvent = true, toInitial = true) {
|
5835
|
+
self.input.value = "";
|
5836
|
+
if (self.altInput !== undefined) self.altInput.value = "";
|
5837
|
+
if (self.mobileInput !== undefined) self.mobileInput.value = "";
|
5838
|
+
self.selectedDates = [];
|
5839
|
+
self.latestSelectedDateObj = undefined;
|
5840
|
+
|
5841
|
+
if (toInitial === true) {
|
5842
|
+
self.currentYear = self._initialDate.getFullYear();
|
5843
|
+
self.currentMonth = self._initialDate.getMonth();
|
5844
|
+
}
|
5845
|
+
|
5846
|
+
if (self.config.enableTime === true) {
|
5847
|
+
const {
|
5848
|
+
hours,
|
5849
|
+
minutes,
|
5850
|
+
seconds
|
5851
|
+
} = (0, _dates.getDefaultHours)(self.config);
|
5852
|
+
setHours(hours, minutes, seconds);
|
5853
|
+
}
|
5854
|
+
|
5855
|
+
self.redraw();
|
5856
|
+
if (triggerChangeEvent) triggerEvent("onChange");
|
5857
|
+
}
|
5858
|
+
|
5859
|
+
function close() {
|
5860
|
+
self.isOpen = false;
|
5861
|
+
|
5862
|
+
if (!self.isMobile) {
|
5863
|
+
if (self.calendarContainer !== undefined) {
|
5864
|
+
self.calendarContainer.classList.remove("open");
|
5865
|
+
}
|
5866
|
+
|
5867
|
+
if (self._input !== undefined) {
|
5868
|
+
self._input.classList.remove("active");
|
5869
|
+
}
|
5870
|
+
}
|
5871
|
+
|
5872
|
+
triggerEvent("onClose");
|
5873
|
+
}
|
5874
|
+
|
5875
|
+
function destroy() {
|
5876
|
+
if (self.config !== undefined) triggerEvent("onDestroy");
|
5877
|
+
|
5878
|
+
for (let i = self._handlers.length; i--;) {
|
5879
|
+
self._handlers[i].remove();
|
5880
|
+
}
|
5881
|
+
|
5882
|
+
self._handlers = [];
|
5883
|
+
|
5884
|
+
if (self.mobileInput) {
|
5885
|
+
if (self.mobileInput.parentNode) self.mobileInput.parentNode.removeChild(self.mobileInput);
|
5886
|
+
self.mobileInput = undefined;
|
5887
|
+
} else if (self.calendarContainer && self.calendarContainer.parentNode) {
|
5888
|
+
if (self.config.static && self.calendarContainer.parentNode) {
|
5889
|
+
const wrapper = self.calendarContainer.parentNode;
|
5890
|
+
wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);
|
5891
|
+
|
5892
|
+
if (wrapper.parentNode) {
|
5893
|
+
while (wrapper.firstChild) wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);
|
5894
|
+
|
5895
|
+
wrapper.parentNode.removeChild(wrapper);
|
5896
|
+
}
|
5897
|
+
} else self.calendarContainer.parentNode.removeChild(self.calendarContainer);
|
5898
|
+
}
|
5899
|
+
|
5900
|
+
if (self.altInput) {
|
5901
|
+
self.input.type = "text";
|
5902
|
+
if (self.altInput.parentNode) self.altInput.parentNode.removeChild(self.altInput);
|
5903
|
+
delete self.altInput;
|
5904
|
+
}
|
5905
|
+
|
5906
|
+
if (self.input) {
|
5907
|
+
self.input.type = self.input._type;
|
5908
|
+
self.input.classList.remove("flatpickr-input");
|
5909
|
+
self.input.removeAttribute("readonly");
|
5910
|
+
}
|
5911
|
+
|
5912
|
+
["_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(k => {
|
5913
|
+
try {
|
5914
|
+
delete self[k];
|
5915
|
+
} catch (_) {}
|
5916
|
+
});
|
5917
|
+
}
|
5918
|
+
|
5919
|
+
function isCalendarElem(elem) {
|
5920
|
+
if (self.config.appendTo && self.config.appendTo.contains(elem)) return true;
|
5921
|
+
return self.calendarContainer.contains(elem);
|
5922
|
+
}
|
5923
|
+
|
5924
|
+
function documentClick(e) {
|
5925
|
+
if (self.isOpen && !self.config.inline) {
|
5926
|
+
const eventTarget = (0, _dom.getEventTarget)(e);
|
5927
|
+
const isCalendarElement = isCalendarElem(eventTarget);
|
5928
|
+
const isInput = eventTarget === self.input || eventTarget === self.altInput || self.element.contains(eventTarget) || e.path && e.path.indexOf && (~e.path.indexOf(self.input) || ~e.path.indexOf(self.altInput));
|
5929
|
+
const lostFocus = e.type === "blur" ? isInput && e.relatedTarget && !isCalendarElem(e.relatedTarget) : !isInput && !isCalendarElement && !isCalendarElem(e.relatedTarget);
|
5930
|
+
const isIgnored = !self.config.ignoredFocusElements.some(elem => elem.contains(eventTarget));
|
5931
|
+
|
5932
|
+
if (lostFocus && isIgnored) {
|
5933
|
+
if (self.timeContainer !== undefined && self.minuteElement !== undefined && self.hourElement !== undefined && self.input.value !== "" && self.input.value !== undefined) {
|
5934
|
+
updateTime();
|
5935
|
+
}
|
5936
|
+
|
5937
|
+
self.close();
|
5938
|
+
|
5939
|
+
if (self.config && self.config.mode === "range" && self.selectedDates.length === 1) {
|
5940
|
+
self.clear(false);
|
5941
|
+
self.redraw();
|
5942
|
+
}
|
5943
|
+
}
|
5944
|
+
}
|
5945
|
+
}
|
5946
|
+
|
5947
|
+
function changeYear(newYear) {
|
5948
|
+
if (!newYear || self.config.minDate && newYear < self.config.minDate.getFullYear() || self.config.maxDate && newYear > self.config.maxDate.getFullYear()) return;
|
5949
|
+
const newYearNum = newYear,
|
5950
|
+
isNewYear = self.currentYear !== newYearNum;
|
5951
|
+
self.currentYear = newYearNum || self.currentYear;
|
5952
|
+
|
5953
|
+
if (self.config.maxDate && self.currentYear === self.config.maxDate.getFullYear()) {
|
5954
|
+
self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);
|
5955
|
+
} else if (self.config.minDate && self.currentYear === self.config.minDate.getFullYear()) {
|
5956
|
+
self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);
|
5957
|
+
}
|
5958
|
+
|
5959
|
+
if (isNewYear) {
|
5960
|
+
self.redraw();
|
5961
|
+
triggerEvent("onYearChange");
|
5962
|
+
buildMonthSwitch();
|
5963
|
+
}
|
5964
|
+
}
|
5965
|
+
|
5966
|
+
function isEnabled(date, timeless = true) {
|
5967
|
+
var _a;
|
5968
|
+
|
5969
|
+
const dateToCheck = self.parseDate(date, undefined, timeless);
|
5970
|
+
if (self.config.minDate && dateToCheck && (0, _dates.compareDates)(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0 || self.config.maxDate && dateToCheck && (0, _dates.compareDates)(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0) return false;
|
5971
|
+
if (!self.config.enable && self.config.disable.length === 0) return true;
|
5972
|
+
if (dateToCheck === undefined) return false;
|
5973
|
+
const bool = !!self.config.enable,
|
5974
|
+
array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;
|
5975
|
+
|
5976
|
+
for (let i = 0, d; i < array.length; i++) {
|
5977
|
+
d = array[i];
|
5978
|
+
if (typeof d === "function" && d(dateToCheck)) return bool;else if (d instanceof Date && dateToCheck !== undefined && d.getTime() === dateToCheck.getTime()) return bool;else if (typeof d === "string") {
|
5979
|
+
const parsed = self.parseDate(d, undefined, true);
|
5980
|
+
return parsed && parsed.getTime() === dateToCheck.getTime() ? bool : !bool;
|
5981
|
+
} else if (typeof d === "object" && dateToCheck !== undefined && d.from && d.to && dateToCheck.getTime() >= d.from.getTime() && dateToCheck.getTime() <= d.to.getTime()) return bool;
|
5982
|
+
}
|
5983
|
+
|
5984
|
+
return !bool;
|
5985
|
+
}
|
5986
|
+
|
5987
|
+
function isInView(elem) {
|
5988
|
+
if (self.daysContainer !== undefined) return elem.className.indexOf("hidden") === -1 && elem.className.indexOf("flatpickr-disabled") === -1 && self.daysContainer.contains(elem);
|
5989
|
+
return false;
|
5990
|
+
}
|
5991
|
+
|
5992
|
+
function onBlur(e) {
|
5993
|
+
const isInput = e.target === self._input;
|
5994
|
+
|
5995
|
+
if (isInput && (self.selectedDates.length > 0 || self._input.value.length > 0) && !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {
|
5996
|
+
self.setDate(self._input.value, true, e.target === self.altInput ? self.config.altFormat : self.config.dateFormat);
|
5997
|
+
}
|
5998
|
+
}
|
5999
|
+
|
6000
|
+
function onKeyDown(e) {
|
6001
|
+
const eventTarget = (0, _dom.getEventTarget)(e);
|
6002
|
+
const isInput = self.config.wrap ? element.contains(eventTarget) : eventTarget === self._input;
|
6003
|
+
const allowInput = self.config.allowInput;
|
6004
|
+
const allowKeydown = self.isOpen && (!allowInput || !isInput);
|
6005
|
+
const allowInlineKeydown = self.config.inline && isInput && !allowInput;
|
6006
|
+
|
6007
|
+
if (e.keyCode === 13 && isInput) {
|
6008
|
+
if (allowInput) {
|
6009
|
+
self.setDate(self._input.value, true, eventTarget === self.altInput ? self.config.altFormat : self.config.dateFormat);
|
6010
|
+
return eventTarget.blur();
|
6011
|
+
} else {
|
6012
|
+
self.open();
|
6013
|
+
}
|
6014
|
+
} else if (isCalendarElem(eventTarget) || allowKeydown || allowInlineKeydown) {
|
6015
|
+
const isTimeObj = !!self.timeContainer && self.timeContainer.contains(eventTarget);
|
6016
|
+
|
6017
|
+
switch (e.keyCode) {
|
6018
|
+
case 13:
|
6019
|
+
if (isTimeObj) {
|
6020
|
+
e.preventDefault();
|
6021
|
+
updateTime();
|
6022
|
+
focusAndClose();
|
6023
|
+
} else selectDate(e);
|
6024
|
+
|
6025
|
+
break;
|
6026
|
+
|
6027
|
+
case 27:
|
6028
|
+
e.preventDefault();
|
6029
|
+
focusAndClose();
|
6030
|
+
break;
|
6031
|
+
|
6032
|
+
case 8:
|
6033
|
+
case 46:
|
6034
|
+
if (isInput && !self.config.allowInput) {
|
6035
|
+
e.preventDefault();
|
6036
|
+
self.clear();
|
6037
|
+
}
|
6038
|
+
|
6039
|
+
break;
|
6040
|
+
|
6041
|
+
case 37:
|
6042
|
+
case 39:
|
6043
|
+
if (!isTimeObj && !isInput) {
|
6044
|
+
e.preventDefault();
|
6045
|
+
|
6046
|
+
if (self.daysContainer !== undefined && (allowInput === false || document.activeElement && isInView(document.activeElement))) {
|
6047
|
+
const delta = e.keyCode === 39 ? 1 : -1;
|
6048
|
+
if (!e.ctrlKey) focusOnDay(undefined, delta);else {
|
6049
|
+
e.stopPropagation();
|
6050
|
+
changeMonth(delta);
|
6051
|
+
focusOnDay(getFirstAvailableDay(1), 0);
|
6052
|
+
}
|
6053
|
+
}
|
6054
|
+
} else if (self.hourElement) self.hourElement.focus();
|
6055
|
+
|
6056
|
+
break;
|
6057
|
+
|
6058
|
+
case 38:
|
6059
|
+
case 40:
|
6060
|
+
e.preventDefault();
|
6061
|
+
const delta = e.keyCode === 40 ? 1 : -1;
|
6062
|
+
|
6063
|
+
if (self.daysContainer && eventTarget.$i !== undefined || eventTarget === self.input || eventTarget === self.altInput) {
|
6064
|
+
if (e.ctrlKey) {
|
6065
|
+
e.stopPropagation();
|
6066
|
+
changeYear(self.currentYear - delta);
|
6067
|
+
focusOnDay(getFirstAvailableDay(1), 0);
|
6068
|
+
} else if (!isTimeObj) focusOnDay(undefined, delta * 7);
|
6069
|
+
} else if (eventTarget === self.currentYearElement) {
|
6070
|
+
changeYear(self.currentYear - delta);
|
6071
|
+
} else if (self.config.enableTime) {
|
6072
|
+
if (!isTimeObj && self.hourElement) self.hourElement.focus();
|
6073
|
+
updateTime(e);
|
6074
|
+
|
6075
|
+
self._debouncedChange();
|
6076
|
+
}
|
6077
|
+
|
6078
|
+
break;
|
6079
|
+
|
6080
|
+
case 9:
|
6081
|
+
if (isTimeObj) {
|
6082
|
+
const elems = [self.hourElement, self.minuteElement, self.secondElement, self.amPM].concat(self.pluginElements).filter(x => x);
|
6083
|
+
const i = elems.indexOf(eventTarget);
|
6084
|
+
|
6085
|
+
if (i !== -1) {
|
6086
|
+
const target = elems[i + (e.shiftKey ? -1 : 1)];
|
6087
|
+
e.preventDefault();
|
6088
|
+
|
6089
|
+
(target || self._input).focus();
|
6090
|
+
}
|
6091
|
+
} else if (!self.config.noCalendar && self.daysContainer && self.daysContainer.contains(eventTarget) && e.shiftKey) {
|
6092
|
+
e.preventDefault();
|
6093
|
+
|
6094
|
+
self._input.focus();
|
6095
|
+
}
|
6096
|
+
|
6097
|
+
break;
|
6098
|
+
|
6099
|
+
default:
|
6100
|
+
break;
|
6101
|
+
}
|
6102
|
+
}
|
6103
|
+
|
6104
|
+
if (self.amPM !== undefined && eventTarget === self.amPM) {
|
6105
|
+
switch (e.key) {
|
6106
|
+
case self.l10n.amPM[0].charAt(0):
|
6107
|
+
case self.l10n.amPM[0].charAt(0).toLowerCase():
|
6108
|
+
self.amPM.textContent = self.l10n.amPM[0];
|
6109
|
+
setHoursFromInputs();
|
6110
|
+
updateValue();
|
6111
|
+
break;
|
6112
|
+
|
6113
|
+
case self.l10n.amPM[1].charAt(0):
|
6114
|
+
case self.l10n.amPM[1].charAt(0).toLowerCase():
|
6115
|
+
self.amPM.textContent = self.l10n.amPM[1];
|
6116
|
+
setHoursFromInputs();
|
6117
|
+
updateValue();
|
6118
|
+
break;
|
6119
|
+
}
|
6120
|
+
}
|
6121
|
+
|
6122
|
+
if (isInput || isCalendarElem(eventTarget)) {
|
6123
|
+
triggerEvent("onKeyDown", e);
|
6124
|
+
}
|
6125
|
+
}
|
6126
|
+
|
6127
|
+
function onMouseOver(elem) {
|
6128
|
+
if (self.selectedDates.length !== 1 || elem && (!elem.classList.contains("flatpickr-day") || elem.classList.contains("flatpickr-disabled"))) return;
|
6129
|
+
const hoverDate = elem ? elem.dateObj.getTime() : self.days.firstElementChild.dateObj.getTime(),
|
6130
|
+
initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(),
|
6131
|
+
rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()),
|
6132
|
+
rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());
|
6133
|
+
let containsDisabled = false;
|
6134
|
+
let minRange = 0,
|
6135
|
+
maxRange = 0;
|
6136
|
+
|
6137
|
+
for (let t = rangeStartDate; t < rangeEndDate; t += _dates.duration.DAY) {
|
6138
|
+
if (!isEnabled(new Date(t), true)) {
|
6139
|
+
containsDisabled = containsDisabled || t > rangeStartDate && t < rangeEndDate;
|
6140
|
+
if (t < initialDate && (!minRange || t > minRange)) minRange = t;else if (t > initialDate && (!maxRange || t < maxRange)) maxRange = t;
|
6141
|
+
}
|
6142
|
+
}
|
6143
|
+
|
6144
|
+
for (let m = 0; m < self.config.showMonths; m++) {
|
6145
|
+
const month = self.daysContainer.children[m];
|
6146
|
+
|
6147
|
+
for (let i = 0, l = month.children.length; i < l; i++) {
|
6148
|
+
const dayElem = month.children[i],
|
6149
|
+
date = dayElem.dateObj;
|
6150
|
+
const timestamp = date.getTime();
|
6151
|
+
const outOfRange = minRange > 0 && timestamp < minRange || maxRange > 0 && timestamp > maxRange;
|
6152
|
+
|
6153
|
+
if (outOfRange) {
|
6154
|
+
dayElem.classList.add("notAllowed");
|
6155
|
+
["inRange", "startRange", "endRange"].forEach(c => {
|
6156
|
+
dayElem.classList.remove(c);
|
6157
|
+
});
|
6158
|
+
continue;
|
6159
|
+
} else if (containsDisabled && !outOfRange) continue;
|
6160
|
+
|
6161
|
+
["startRange", "inRange", "endRange", "notAllowed"].forEach(c => {
|
6162
|
+
dayElem.classList.remove(c);
|
6163
|
+
});
|
6164
|
+
|
6165
|
+
if (elem !== undefined) {
|
6166
|
+
elem.classList.add(hoverDate <= self.selectedDates[0].getTime() ? "startRange" : "endRange");
|
6167
|
+
if (initialDate < hoverDate && timestamp === initialDate) dayElem.classList.add("startRange");else if (initialDate > hoverDate && timestamp === initialDate) dayElem.classList.add("endRange");
|
6168
|
+
if (timestamp >= minRange && (maxRange === 0 || timestamp <= maxRange) && (0, _dates.isBetween)(timestamp, initialDate, hoverDate)) dayElem.classList.add("inRange");
|
6169
|
+
}
|
6170
|
+
}
|
6171
|
+
}
|
6172
|
+
}
|
6173
|
+
|
6174
|
+
function onResize() {
|
6175
|
+
if (self.isOpen && !self.config.static && !self.config.inline) positionCalendar();
|
6176
|
+
}
|
6177
|
+
|
6178
|
+
function open(e, positionElement = self._positionElement) {
|
6179
|
+
if (self.isMobile === true) {
|
6180
|
+
if (e) {
|
6181
|
+
e.preventDefault();
|
6182
|
+
const eventTarget = (0, _dom.getEventTarget)(e);
|
6183
|
+
|
6184
|
+
if (eventTarget) {
|
6185
|
+
eventTarget.blur();
|
6186
|
+
}
|
6187
|
+
}
|
6188
|
+
|
6189
|
+
if (self.mobileInput !== undefined) {
|
6190
|
+
self.mobileInput.focus();
|
6191
|
+
self.mobileInput.click();
|
6192
|
+
}
|
6193
|
+
|
6194
|
+
triggerEvent("onOpen");
|
6195
|
+
return;
|
6196
|
+
} else if (self._input.disabled || self.config.inline) {
|
6197
|
+
return;
|
6198
|
+
}
|
6199
|
+
|
6200
|
+
const wasOpen = self.isOpen;
|
6201
|
+
self.isOpen = true;
|
6202
|
+
|
6203
|
+
if (!wasOpen) {
|
6204
|
+
self.calendarContainer.classList.add("open");
|
6205
|
+
|
6206
|
+
self._input.classList.add("active");
|
6207
|
+
|
6208
|
+
triggerEvent("onOpen");
|
6209
|
+
positionCalendar(positionElement);
|
6210
|
+
}
|
6211
|
+
|
6212
|
+
if (self.config.enableTime === true && self.config.noCalendar === true) {
|
6213
|
+
if (self.config.allowInput === false && (e === undefined || !self.timeContainer.contains(e.relatedTarget))) {
|
6214
|
+
setTimeout(() => self.hourElement.select(), 50);
|
6215
|
+
}
|
6216
|
+
}
|
6217
|
+
}
|
6218
|
+
|
6219
|
+
function minMaxDateSetter(type) {
|
6220
|
+
return date => {
|
6221
|
+
const dateObj = self.config[`_${type}Date`] = self.parseDate(date, self.config.dateFormat);
|
6222
|
+
const inverseDateObj = self.config[`_${type === "min" ? "max" : "min"}Date`];
|
6223
|
+
|
6224
|
+
if (dateObj !== undefined) {
|
6225
|
+
self[type === "min" ? "minDateHasTime" : "maxDateHasTime"] = dateObj.getHours() > 0 || dateObj.getMinutes() > 0 || dateObj.getSeconds() > 0;
|
6226
|
+
}
|
6227
|
+
|
6228
|
+
if (self.selectedDates) {
|
6229
|
+
self.selectedDates = self.selectedDates.filter(d => isEnabled(d));
|
6230
|
+
if (!self.selectedDates.length && type === "min") setHoursFromDate(dateObj);
|
6231
|
+
updateValue();
|
6232
|
+
}
|
6233
|
+
|
6234
|
+
if (self.daysContainer) {
|
6235
|
+
redraw();
|
6236
|
+
if (dateObj !== undefined) self.currentYearElement[type] = dateObj.getFullYear().toString();else self.currentYearElement.removeAttribute(type);
|
6237
|
+
self.currentYearElement.disabled = !!inverseDateObj && dateObj !== undefined && inverseDateObj.getFullYear() === dateObj.getFullYear();
|
6238
|
+
}
|
6239
|
+
};
|
6240
|
+
}
|
6241
|
+
|
6242
|
+
function parseConfig() {
|
6243
|
+
const boolOpts = ["wrap", "weekNumbers", "allowInput", "allowInvalidPreload", "clickOpens", "time_24hr", "enableTime", "noCalendar", "altInput", "shorthandCurrentMonth", "inline", "static", "enableSeconds", "disableMobile"];
|
6244
|
+
const userConfig = Object.assign(Object.assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);
|
6245
|
+
const formats = {};
|
6246
|
+
self.config.parseDate = userConfig.parseDate;
|
6247
|
+
self.config.formatDate = userConfig.formatDate;
|
6248
|
+
Object.defineProperty(self.config, "enable", {
|
6249
|
+
get: () => self.config._enable,
|
6250
|
+
set: dates => {
|
6251
|
+
self.config._enable = parseDateRules(dates);
|
6252
|
+
}
|
6253
|
+
});
|
6254
|
+
Object.defineProperty(self.config, "disable", {
|
6255
|
+
get: () => self.config._disable,
|
6256
|
+
set: dates => {
|
6257
|
+
self.config._disable = parseDateRules(dates);
|
6258
|
+
}
|
6259
|
+
});
|
6260
|
+
const timeMode = userConfig.mode === "time";
|
6261
|
+
|
6262
|
+
if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {
|
6263
|
+
const defaultDateFormat = flatpickr.defaultConfig.dateFormat || _options.defaults.dateFormat;
|
6264
|
+
formats.dateFormat = userConfig.noCalendar || timeMode ? "H:i" + (userConfig.enableSeconds ? ":S" : "") : defaultDateFormat + " H:i" + (userConfig.enableSeconds ? ":S" : "");
|
6265
|
+
}
|
6266
|
+
|
6267
|
+
if (userConfig.altInput && (userConfig.enableTime || timeMode) && !userConfig.altFormat) {
|
6268
|
+
const defaultAltFormat = flatpickr.defaultConfig.altFormat || _options.defaults.altFormat;
|
6269
|
+
formats.altFormat = userConfig.noCalendar || timeMode ? "h:i" + (userConfig.enableSeconds ? ":S K" : " K") : defaultAltFormat + ` h:i${userConfig.enableSeconds ? ":S" : ""} K`;
|
6270
|
+
}
|
6271
|
+
|
6272
|
+
Object.defineProperty(self.config, "minDate", {
|
6273
|
+
get: () => self.config._minDate,
|
6274
|
+
set: minMaxDateSetter("min")
|
6275
|
+
});
|
6276
|
+
Object.defineProperty(self.config, "maxDate", {
|
6277
|
+
get: () => self.config._maxDate,
|
6278
|
+
set: minMaxDateSetter("max")
|
6279
|
+
});
|
6280
|
+
|
6281
|
+
const minMaxTimeSetter = type => val => {
|
6282
|
+
self.config[type === "min" ? "_minTime" : "_maxTime"] = self.parseDate(val, "H:i:S");
|
6283
|
+
};
|
6284
|
+
|
6285
|
+
Object.defineProperty(self.config, "minTime", {
|
6286
|
+
get: () => self.config._minTime,
|
6287
|
+
set: minMaxTimeSetter("min")
|
6288
|
+
});
|
6289
|
+
Object.defineProperty(self.config, "maxTime", {
|
6290
|
+
get: () => self.config._maxTime,
|
6291
|
+
set: minMaxTimeSetter("max")
|
6292
|
+
});
|
6293
|
+
|
6294
|
+
if (userConfig.mode === "time") {
|
6295
|
+
self.config.noCalendar = true;
|
6296
|
+
self.config.enableTime = true;
|
6297
|
+
}
|
6298
|
+
|
6299
|
+
Object.assign(self.config, formats, userConfig);
|
6300
|
+
|
6301
|
+
for (let i = 0; i < boolOpts.length; i++) self.config[boolOpts[i]] = self.config[boolOpts[i]] === true || self.config[boolOpts[i]] === "true";
|
6302
|
+
|
6303
|
+
_options.HOOKS.filter(hook => self.config[hook] !== undefined).forEach(hook => {
|
6304
|
+
self.config[hook] = (0, _utils.arrayify)(self.config[hook] || []).map(bindToInstance);
|
6305
|
+
});
|
6306
|
+
|
6307
|
+
self.isMobile = !self.config.disableMobile && !self.config.inline && self.config.mode === "single" && !self.config.disable.length && !self.config.enable && !self.config.weekNumbers && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
|
6308
|
+
|
6309
|
+
for (let i = 0; i < self.config.plugins.length; i++) {
|
6310
|
+
const pluginConf = self.config.plugins[i](self) || {};
|
6311
|
+
|
6312
|
+
for (const key in pluginConf) {
|
6313
|
+
if (_options.HOOKS.indexOf(key) > -1) {
|
6314
|
+
self.config[key] = (0, _utils.arrayify)(pluginConf[key]).map(bindToInstance).concat(self.config[key]);
|
6315
|
+
} else if (typeof userConfig[key] === "undefined") self.config[key] = pluginConf[key];
|
6316
|
+
}
|
6317
|
+
}
|
6318
|
+
|
6319
|
+
if (!userConfig.altInputClass) {
|
6320
|
+
self.config.altInputClass = getInputElem().className + " " + self.config.altInputClass;
|
6321
|
+
}
|
6322
|
+
|
6323
|
+
triggerEvent("onParseConfig");
|
6324
|
+
}
|
6325
|
+
|
6326
|
+
function getInputElem() {
|
6327
|
+
return self.config.wrap ? element.querySelector("[data-input]") : element;
|
6328
|
+
}
|
6329
|
+
|
6330
|
+
function setupLocale() {
|
6331
|
+
if (typeof self.config.locale !== "object" && typeof flatpickr.l10ns[self.config.locale] === "undefined") self.config.errorHandler(new Error(`flatpickr: invalid locale ${self.config.locale}`));
|
6332
|
+
self.l10n = Object.assign(Object.assign({}, flatpickr.l10ns.default), typeof self.config.locale === "object" ? self.config.locale : self.config.locale !== "default" ? flatpickr.l10ns[self.config.locale] : undefined);
|
6333
|
+
_formatting.tokenRegex.K = `(${self.l10n.amPM[0]}|${self.l10n.amPM[1]}|${self.l10n.amPM[0].toLowerCase()}|${self.l10n.amPM[1].toLowerCase()})`;
|
6334
|
+
const userConfig = Object.assign(Object.assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));
|
6335
|
+
|
6336
|
+
if (userConfig.time_24hr === undefined && flatpickr.defaultConfig.time_24hr === undefined) {
|
6337
|
+
self.config.time_24hr = self.l10n.time_24hr;
|
6338
|
+
}
|
6339
|
+
|
6340
|
+
self.formatDate = (0, _dates.createDateFormatter)(self);
|
6341
|
+
self.parseDate = (0, _dates.createDateParser)({
|
6342
|
+
config: self.config,
|
6343
|
+
l10n: self.l10n
|
6344
|
+
});
|
6345
|
+
}
|
6346
|
+
|
6347
|
+
function positionCalendar(customPositionElement) {
|
6348
|
+
if (typeof self.config.position === "function") {
|
6349
|
+
return void self.config.position(self, customPositionElement);
|
6350
|
+
}
|
6351
|
+
|
6352
|
+
if (self.calendarContainer === undefined) return;
|
6353
|
+
triggerEvent("onPreCalendarPosition");
|
6354
|
+
const positionElement = customPositionElement || self._positionElement;
|
6355
|
+
const calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (acc, child) => acc + child.offsetHeight, 0),
|
6356
|
+
calendarWidth = self.calendarContainer.offsetWidth,
|
6357
|
+
configPos = self.config.position.split(" "),
|
6358
|
+
configPosVertical = configPos[0],
|
6359
|
+
configPosHorizontal = configPos.length > 1 ? configPos[1] : null,
|
6360
|
+
inputBounds = positionElement.getBoundingClientRect(),
|
6361
|
+
distanceFromBottom = window.innerHeight - inputBounds.bottom,
|
6362
|
+
showOnTop = configPosVertical === "above" || configPosVertical !== "below" && distanceFromBottom < calendarHeight && inputBounds.top > calendarHeight;
|
6363
|
+
const top = window.pageYOffset + inputBounds.top + (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);
|
6364
|
+
(0, _dom.toggleClass)(self.calendarContainer, "arrowTop", !showOnTop);
|
6365
|
+
(0, _dom.toggleClass)(self.calendarContainer, "arrowBottom", showOnTop);
|
6366
|
+
if (self.config.inline) return;
|
6367
|
+
let left = window.pageXOffset + inputBounds.left;
|
6368
|
+
let isCenter = false;
|
6369
|
+
let isRight = false;
|
6370
|
+
|
6371
|
+
if (configPosHorizontal === "center") {
|
6372
|
+
left -= (calendarWidth - inputBounds.width) / 2;
|
6373
|
+
isCenter = true;
|
6374
|
+
} else if (configPosHorizontal === "right") {
|
6375
|
+
left -= calendarWidth - inputBounds.width;
|
6376
|
+
isRight = true;
|
6377
|
+
}
|
6378
|
+
|
6379
|
+
(0, _dom.toggleClass)(self.calendarContainer, "arrowLeft", !isCenter && !isRight);
|
6380
|
+
(0, _dom.toggleClass)(self.calendarContainer, "arrowCenter", isCenter);
|
6381
|
+
(0, _dom.toggleClass)(self.calendarContainer, "arrowRight", isRight);
|
6382
|
+
const right = window.document.body.offsetWidth - (window.pageXOffset + inputBounds.right);
|
6383
|
+
const rightMost = left + calendarWidth > window.document.body.offsetWidth;
|
6384
|
+
const centerMost = right + calendarWidth > window.document.body.offsetWidth;
|
6385
|
+
(0, _dom.toggleClass)(self.calendarContainer, "rightMost", rightMost);
|
6386
|
+
if (self.config.static) return;
|
6387
|
+
self.calendarContainer.style.top = `${top}px`;
|
6388
|
+
|
6389
|
+
if (!rightMost) {
|
6390
|
+
self.calendarContainer.style.left = `${left}px`;
|
6391
|
+
self.calendarContainer.style.right = "auto";
|
6392
|
+
} else if (!centerMost) {
|
6393
|
+
self.calendarContainer.style.left = "auto";
|
6394
|
+
self.calendarContainer.style.right = `${right}px`;
|
6395
|
+
} else {
|
6396
|
+
const doc = getDocumentStyleSheet();
|
6397
|
+
if (doc === undefined) return;
|
6398
|
+
const bodyWidth = window.document.body.offsetWidth;
|
6399
|
+
const centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);
|
6400
|
+
const centerBefore = ".flatpickr-calendar.centerMost:before";
|
6401
|
+
const centerAfter = ".flatpickr-calendar.centerMost:after";
|
6402
|
+
const centerIndex = doc.cssRules.length;
|
6403
|
+
const centerStyle = `{left:${inputBounds.left}px;right:auto;}`;
|
6404
|
+
(0, _dom.toggleClass)(self.calendarContainer, "rightMost", false);
|
6405
|
+
(0, _dom.toggleClass)(self.calendarContainer, "centerMost", true);
|
6406
|
+
doc.insertRule(`${centerBefore},${centerAfter}${centerStyle}`, centerIndex);
|
6407
|
+
self.calendarContainer.style.left = `${centerLeft}px`;
|
6408
|
+
self.calendarContainer.style.right = "auto";
|
6409
|
+
}
|
6410
|
+
}
|
6411
|
+
|
6412
|
+
function getDocumentStyleSheet() {
|
6413
|
+
let editableSheet = null;
|
6414
|
+
|
6415
|
+
for (let i = 0; i < document.styleSheets.length; i++) {
|
6416
|
+
const sheet = document.styleSheets[i];
|
6417
|
+
|
6418
|
+
try {
|
6419
|
+
sheet.cssRules;
|
6420
|
+
} catch (err) {
|
6421
|
+
continue;
|
6422
|
+
}
|
6423
|
+
|
6424
|
+
editableSheet = sheet;
|
6425
|
+
break;
|
6426
|
+
}
|
6427
|
+
|
6428
|
+
return editableSheet != null ? editableSheet : createStyleSheet();
|
6429
|
+
}
|
6430
|
+
|
6431
|
+
function createStyleSheet() {
|
6432
|
+
const style = document.createElement("style");
|
6433
|
+
document.head.appendChild(style);
|
6434
|
+
return style.sheet;
|
6435
|
+
}
|
6436
|
+
|
6437
|
+
function redraw() {
|
6438
|
+
if (self.config.noCalendar || self.isMobile) return;
|
6439
|
+
buildMonthSwitch();
|
6440
|
+
updateNavigationCurrentMonth();
|
6441
|
+
buildDays();
|
6442
|
+
}
|
6443
|
+
|
6444
|
+
function focusAndClose() {
|
6445
|
+
self._input.focus();
|
6446
|
+
|
6447
|
+
if (window.navigator.userAgent.indexOf("MSIE") !== -1 || navigator.msMaxTouchPoints !== undefined) {
|
6448
|
+
setTimeout(self.close, 0);
|
6449
|
+
} else {
|
6450
|
+
self.close();
|
6451
|
+
}
|
6452
|
+
}
|
6453
|
+
|
6454
|
+
function selectDate(e) {
|
6455
|
+
e.preventDefault();
|
6456
|
+
e.stopPropagation();
|
6457
|
+
|
6458
|
+
const isSelectable = day => day.classList && day.classList.contains("flatpickr-day") && !day.classList.contains("flatpickr-disabled") && !day.classList.contains("notAllowed");
|
6459
|
+
|
6460
|
+
const t = (0, _dom.findParent)((0, _dom.getEventTarget)(e), isSelectable);
|
6461
|
+
if (t === undefined) return;
|
6462
|
+
const target = t;
|
6463
|
+
const selectedDate = self.latestSelectedDateObj = new Date(target.dateObj.getTime());
|
6464
|
+
const shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth || selectedDate.getMonth() > self.currentMonth + self.config.showMonths - 1) && self.config.mode !== "range";
|
6465
|
+
self.selectedDateElem = target;
|
6466
|
+
if (self.config.mode === "single") self.selectedDates = [selectedDate];else if (self.config.mode === "multiple") {
|
6467
|
+
const selectedIndex = isDateSelected(selectedDate);
|
6468
|
+
if (selectedIndex) self.selectedDates.splice(parseInt(selectedIndex), 1);else self.selectedDates.push(selectedDate);
|
6469
|
+
} else if (self.config.mode === "range") {
|
6470
|
+
if (self.selectedDates.length === 2) {
|
6471
|
+
self.clear(false, false);
|
6472
|
+
}
|
6473
|
+
|
6474
|
+
self.latestSelectedDateObj = selectedDate;
|
6475
|
+
self.selectedDates.push(selectedDate);
|
6476
|
+
if ((0, _dates.compareDates)(selectedDate, self.selectedDates[0], true) !== 0) self.selectedDates.sort((a, b) => a.getTime() - b.getTime());
|
6477
|
+
}
|
6478
|
+
setHoursFromInputs();
|
6479
|
+
|
6480
|
+
if (shouldChangeMonth) {
|
6481
|
+
const isNewYear = self.currentYear !== selectedDate.getFullYear();
|
6482
|
+
self.currentYear = selectedDate.getFullYear();
|
6483
|
+
self.currentMonth = selectedDate.getMonth();
|
6484
|
+
|
6485
|
+
if (isNewYear) {
|
6486
|
+
triggerEvent("onYearChange");
|
6487
|
+
buildMonthSwitch();
|
6488
|
+
}
|
6489
|
+
|
6490
|
+
triggerEvent("onMonthChange");
|
6491
|
+
}
|
6492
|
+
|
6493
|
+
updateNavigationCurrentMonth();
|
6494
|
+
buildDays();
|
6495
|
+
updateValue();
|
6496
|
+
if (!shouldChangeMonth && self.config.mode !== "range" && self.config.showMonths === 1) focusOnDayElem(target);else if (self.selectedDateElem !== undefined && self.hourElement === undefined) {
|
6497
|
+
self.selectedDateElem && self.selectedDateElem.focus();
|
6498
|
+
}
|
6499
|
+
if (self.hourElement !== undefined) self.hourElement !== undefined && self.hourElement.focus();
|
6500
|
+
|
6501
|
+
if (self.config.closeOnSelect) {
|
6502
|
+
const single = self.config.mode === "single" && !self.config.enableTime;
|
6503
|
+
const range = self.config.mode === "range" && self.selectedDates.length === 2 && !self.config.enableTime;
|
6504
|
+
|
6505
|
+
if (single || range) {
|
6506
|
+
focusAndClose();
|
6507
|
+
}
|
6508
|
+
}
|
6509
|
+
|
6510
|
+
triggerChange();
|
6511
|
+
}
|
6512
|
+
|
6513
|
+
const CALLBACKS = {
|
6514
|
+
locale: [setupLocale, updateWeekdays],
|
6515
|
+
showMonths: [buildMonths, setCalendarWidth, buildWeekdays],
|
6516
|
+
minDate: [jumpToDate],
|
6517
|
+
maxDate: [jumpToDate],
|
6518
|
+
clickOpens: [() => {
|
6519
|
+
if (self.config.clickOpens === true) {
|
6520
|
+
bind(self._input, "focus", self.open);
|
6521
|
+
bind(self._input, "click", self.open);
|
6522
|
+
} else {
|
6523
|
+
self._input.removeEventListener("focus", self.open);
|
6524
|
+
|
6525
|
+
self._input.removeEventListener("click", self.open);
|
6526
|
+
}
|
6527
|
+
}]
|
6528
|
+
};
|
6529
|
+
|
6530
|
+
function set(option, value) {
|
6531
|
+
if (option !== null && typeof option === "object") {
|
6532
|
+
Object.assign(self.config, option);
|
6533
|
+
|
6534
|
+
for (const key in option) {
|
6535
|
+
if (CALLBACKS[key] !== undefined) CALLBACKS[key].forEach(x => x());
|
6536
|
+
}
|
6537
|
+
} else {
|
6538
|
+
self.config[option] = value;
|
6539
|
+
if (CALLBACKS[option] !== undefined) CALLBACKS[option].forEach(x => x());else if (_options.HOOKS.indexOf(option) > -1) self.config[option] = (0, _utils.arrayify)(value);
|
6540
|
+
}
|
6541
|
+
|
6542
|
+
self.redraw();
|
6543
|
+
updateValue(true);
|
6544
|
+
}
|
6545
|
+
|
6546
|
+
function setSelectedDate(inputDate, format) {
|
6547
|
+
let dates = [];
|
6548
|
+
if (inputDate instanceof Array) dates = inputDate.map(d => self.parseDate(d, format));else if (inputDate instanceof Date || typeof inputDate === "number") dates = [self.parseDate(inputDate, format)];else if (typeof inputDate === "string") {
|
6549
|
+
switch (self.config.mode) {
|
6550
|
+
case "single":
|
6551
|
+
case "time":
|
6552
|
+
dates = [self.parseDate(inputDate, format)];
|
6553
|
+
break;
|
6554
|
+
|
6555
|
+
case "multiple":
|
6556
|
+
dates = inputDate.split(self.config.conjunction).map(date => self.parseDate(date, format));
|
6557
|
+
break;
|
6558
|
+
|
6559
|
+
case "range":
|
6560
|
+
dates = inputDate.split(self.l10n.rangeSeparator).map(date => self.parseDate(date, format));
|
6561
|
+
break;
|
6562
|
+
|
6563
|
+
default:
|
6564
|
+
break;
|
6565
|
+
}
|
6566
|
+
} else self.config.errorHandler(new Error(`Invalid date supplied: ${JSON.stringify(inputDate)}`));
|
6567
|
+
self.selectedDates = self.config.allowInvalidPreload ? dates : dates.filter(d => d instanceof Date && isEnabled(d, false));
|
6568
|
+
if (self.config.mode === "range") self.selectedDates.sort((a, b) => a.getTime() - b.getTime());
|
6569
|
+
}
|
6570
|
+
|
6571
|
+
function setDate(date, triggerChange = false, format = self.config.dateFormat) {
|
6572
|
+
if (date !== 0 && !date || date instanceof Array && date.length === 0) return self.clear(triggerChange);
|
6573
|
+
setSelectedDate(date, format);
|
6574
|
+
self.latestSelectedDateObj = self.selectedDates[self.selectedDates.length - 1];
|
6575
|
+
self.redraw();
|
6576
|
+
jumpToDate(undefined, triggerChange);
|
6577
|
+
setHoursFromDate();
|
6578
|
+
|
6579
|
+
if (self.selectedDates.length === 0) {
|
6580
|
+
self.clear(false);
|
6581
|
+
}
|
6582
|
+
|
6583
|
+
updateValue(triggerChange);
|
6584
|
+
if (triggerChange) triggerEvent("onChange");
|
6585
|
+
}
|
6586
|
+
|
6587
|
+
function parseDateRules(arr) {
|
6588
|
+
return arr.slice().map(rule => {
|
6589
|
+
if (typeof rule === "string" || typeof rule === "number" || rule instanceof Date) {
|
6590
|
+
return self.parseDate(rule, undefined, true);
|
6591
|
+
} else if (rule && typeof rule === "object" && rule.from && rule.to) return {
|
6592
|
+
from: self.parseDate(rule.from, undefined),
|
6593
|
+
to: self.parseDate(rule.to, undefined)
|
6594
|
+
};
|
6595
|
+
|
6596
|
+
return rule;
|
6597
|
+
}).filter(x => x);
|
6598
|
+
}
|
6599
|
+
|
6600
|
+
function setupDates() {
|
6601
|
+
self.selectedDates = [];
|
6602
|
+
self.now = self.parseDate(self.config.now) || new Date();
|
6603
|
+
const preloadedDate = self.config.defaultDate || ((self.input.nodeName === "INPUT" || self.input.nodeName === "TEXTAREA") && self.input.placeholder && self.input.value === self.input.placeholder ? null : self.input.value);
|
6604
|
+
if (preloadedDate) setSelectedDate(preloadedDate, self.config.dateFormat);
|
6605
|
+
self._initialDate = self.selectedDates.length > 0 ? self.selectedDates[0] : self.config.minDate && self.config.minDate.getTime() > self.now.getTime() ? self.config.minDate : self.config.maxDate && self.config.maxDate.getTime() < self.now.getTime() ? self.config.maxDate : self.now;
|
6606
|
+
self.currentYear = self._initialDate.getFullYear();
|
6607
|
+
self.currentMonth = self._initialDate.getMonth();
|
6608
|
+
if (self.selectedDates.length > 0) self.latestSelectedDateObj = self.selectedDates[0];
|
6609
|
+
if (self.config.minTime !== undefined) self.config.minTime = self.parseDate(self.config.minTime, "H:i");
|
6610
|
+
if (self.config.maxTime !== undefined) self.config.maxTime = self.parseDate(self.config.maxTime, "H:i");
|
6611
|
+
self.minDateHasTime = !!self.config.minDate && (self.config.minDate.getHours() > 0 || self.config.minDate.getMinutes() > 0 || self.config.minDate.getSeconds() > 0);
|
6612
|
+
self.maxDateHasTime = !!self.config.maxDate && (self.config.maxDate.getHours() > 0 || self.config.maxDate.getMinutes() > 0 || self.config.maxDate.getSeconds() > 0);
|
6613
|
+
}
|
6614
|
+
|
6615
|
+
function setupInputs() {
|
6616
|
+
self.input = getInputElem();
|
6617
|
+
|
6618
|
+
if (!self.input) {
|
6619
|
+
self.config.errorHandler(new Error("Invalid input element specified"));
|
6620
|
+
return;
|
6621
|
+
}
|
6622
|
+
|
6623
|
+
self.input._type = self.input.type;
|
6624
|
+
self.input.type = "text";
|
6625
|
+
self.input.classList.add("flatpickr-input");
|
6626
|
+
self._input = self.input;
|
6627
|
+
|
6628
|
+
if (self.config.altInput) {
|
6629
|
+
self.altInput = (0, _dom.createElement)(self.input.nodeName, self.config.altInputClass);
|
6630
|
+
self._input = self.altInput;
|
6631
|
+
self.altInput.placeholder = self.input.placeholder;
|
6632
|
+
self.altInput.disabled = self.input.disabled;
|
6633
|
+
self.altInput.required = self.input.required;
|
6634
|
+
self.altInput.tabIndex = self.input.tabIndex;
|
6635
|
+
self.altInput.type = "text";
|
6636
|
+
self.input.setAttribute("type", "hidden");
|
6637
|
+
if (!self.config.static && self.input.parentNode) self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);
|
6638
|
+
}
|
6639
|
+
|
6640
|
+
if (!self.config.allowInput) self._input.setAttribute("readonly", "readonly");
|
6641
|
+
self._positionElement = self.config.positionElement || self._input;
|
6642
|
+
}
|
6643
|
+
|
6644
|
+
function setupMobile() {
|
6645
|
+
const inputType = self.config.enableTime ? self.config.noCalendar ? "time" : "datetime-local" : "date";
|
6646
|
+
self.mobileInput = (0, _dom.createElement)("input", self.input.className + " flatpickr-mobile");
|
6647
|
+
self.mobileInput.tabIndex = 1;
|
6648
|
+
self.mobileInput.type = inputType;
|
6649
|
+
self.mobileInput.disabled = self.input.disabled;
|
6650
|
+
self.mobileInput.required = self.input.required;
|
6651
|
+
self.mobileInput.placeholder = self.input.placeholder;
|
6652
|
+
self.mobileFormatStr = inputType === "datetime-local" ? "Y-m-d\\TH:i:S" : inputType === "date" ? "Y-m-d" : "H:i:S";
|
6653
|
+
|
6654
|
+
if (self.selectedDates.length > 0) {
|
6655
|
+
self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);
|
6656
|
+
}
|
6657
|
+
|
6658
|
+
if (self.config.minDate) self.mobileInput.min = self.formatDate(self.config.minDate, "Y-m-d");
|
6659
|
+
if (self.config.maxDate) self.mobileInput.max = self.formatDate(self.config.maxDate, "Y-m-d");
|
6660
|
+
if (self.input.getAttribute("step")) self.mobileInput.step = String(self.input.getAttribute("step"));
|
6661
|
+
self.input.type = "hidden";
|
6662
|
+
if (self.altInput !== undefined) self.altInput.type = "hidden";
|
6663
|
+
|
6664
|
+
try {
|
6665
|
+
if (self.input.parentNode) self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);
|
6666
|
+
} catch (_a) {}
|
6667
|
+
|
6668
|
+
bind(self.mobileInput, "change", e => {
|
6669
|
+
self.setDate((0, _dom.getEventTarget)(e).value, false, self.mobileFormatStr);
|
6670
|
+
triggerEvent("onChange");
|
6671
|
+
triggerEvent("onClose");
|
6672
|
+
});
|
6673
|
+
}
|
6674
|
+
|
6675
|
+
function toggle(e) {
|
6676
|
+
if (self.isOpen === true) return self.close();
|
6677
|
+
self.open(e);
|
6678
|
+
}
|
6679
|
+
|
6680
|
+
function triggerEvent(event, data) {
|
6681
|
+
if (self.config === undefined) return;
|
6682
|
+
const hooks = self.config[event];
|
6683
|
+
|
6684
|
+
if (hooks !== undefined && hooks.length > 0) {
|
6685
|
+
for (let i = 0; hooks[i] && i < hooks.length; i++) hooks[i](self.selectedDates, self.input.value, self, data);
|
6686
|
+
}
|
6687
|
+
|
6688
|
+
if (event === "onChange") {
|
6689
|
+
self.input.dispatchEvent(createEvent("change"));
|
6690
|
+
self.input.dispatchEvent(createEvent("input"));
|
6691
|
+
}
|
6692
|
+
}
|
6693
|
+
|
6694
|
+
function createEvent(name) {
|
6695
|
+
const e = document.createEvent("Event");
|
6696
|
+
e.initEvent(name, true, true);
|
6697
|
+
return e;
|
6698
|
+
}
|
6699
|
+
|
6700
|
+
function isDateSelected(date) {
|
6701
|
+
for (let i = 0; i < self.selectedDates.length; i++) {
|
6702
|
+
if ((0, _dates.compareDates)(self.selectedDates[i], date) === 0) return "" + i;
|
6703
|
+
}
|
6704
|
+
|
6705
|
+
return false;
|
6706
|
+
}
|
6707
|
+
|
6708
|
+
function isDateInRange(date) {
|
6709
|
+
if (self.config.mode !== "range" || self.selectedDates.length < 2) return false;
|
6710
|
+
return (0, _dates.compareDates)(date, self.selectedDates[0]) >= 0 && (0, _dates.compareDates)(date, self.selectedDates[1]) <= 0;
|
6711
|
+
}
|
6712
|
+
|
6713
|
+
function updateNavigationCurrentMonth() {
|
6714
|
+
if (self.config.noCalendar || self.isMobile || !self.monthNav) return;
|
6715
|
+
self.yearElements.forEach((yearElement, i) => {
|
6716
|
+
const d = new Date(self.currentYear, self.currentMonth, 1);
|
6717
|
+
d.setMonth(self.currentMonth + i);
|
6718
|
+
|
6719
|
+
if (self.config.showMonths > 1 || self.config.monthSelectorType === "static") {
|
6720
|
+
self.monthElements[i].textContent = (0, _formatting.monthToStr)(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + " ";
|
6721
|
+
} else {
|
6722
|
+
self.monthsDropdownContainer.value = d.getMonth().toString();
|
6723
|
+
}
|
6724
|
+
|
6725
|
+
yearElement.value = d.getFullYear().toString();
|
6726
|
+
});
|
6727
|
+
self._hidePrevMonthArrow = self.config.minDate !== undefined && (self.currentYear === self.config.minDate.getFullYear() ? self.currentMonth <= self.config.minDate.getMonth() : self.currentYear < self.config.minDate.getFullYear());
|
6728
|
+
self._hideNextMonthArrow = self.config.maxDate !== undefined && (self.currentYear === self.config.maxDate.getFullYear() ? self.currentMonth + 1 > self.config.maxDate.getMonth() : self.currentYear > self.config.maxDate.getFullYear());
|
6729
|
+
}
|
6730
|
+
|
6731
|
+
function getDateStr(format) {
|
6732
|
+
return self.selectedDates.map(dObj => self.formatDate(dObj, format)).filter((d, i, arr) => self.config.mode !== "range" || self.config.enableTime || arr.indexOf(d) === i).join(self.config.mode !== "range" ? self.config.conjunction : self.l10n.rangeSeparator);
|
6733
|
+
}
|
6734
|
+
|
6735
|
+
function updateValue(triggerChange = true) {
|
6736
|
+
if (self.mobileInput !== undefined && self.mobileFormatStr) {
|
6737
|
+
self.mobileInput.value = self.latestSelectedDateObj !== undefined ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr) : "";
|
6738
|
+
}
|
6739
|
+
|
6740
|
+
self.input.value = getDateStr(self.config.dateFormat);
|
6741
|
+
|
6742
|
+
if (self.altInput !== undefined) {
|
6743
|
+
self.altInput.value = getDateStr(self.config.altFormat);
|
6744
|
+
}
|
6745
|
+
|
6746
|
+
if (triggerChange !== false) triggerEvent("onValueUpdate");
|
6747
|
+
}
|
6748
|
+
|
6749
|
+
function onMonthNavClick(e) {
|
6750
|
+
const eventTarget = (0, _dom.getEventTarget)(e);
|
6751
|
+
const isPrevMonth = self.prevMonthNav.contains(eventTarget);
|
6752
|
+
const isNextMonth = self.nextMonthNav.contains(eventTarget);
|
6753
|
+
|
6754
|
+
if (isPrevMonth || isNextMonth) {
|
6755
|
+
changeMonth(isPrevMonth ? -1 : 1);
|
6756
|
+
} else if (self.yearElements.indexOf(eventTarget) >= 0) {
|
6757
|
+
eventTarget.select();
|
6758
|
+
} else if (eventTarget.classList.contains("arrowUp")) {
|
6759
|
+
self.changeYear(self.currentYear + 1);
|
6760
|
+
} else if (eventTarget.classList.contains("arrowDown")) {
|
6761
|
+
self.changeYear(self.currentYear - 1);
|
6762
|
+
}
|
6763
|
+
}
|
6764
|
+
|
6765
|
+
function timeWrapper(e) {
|
6766
|
+
e.preventDefault();
|
6767
|
+
const isKeyDown = e.type === "keydown",
|
6768
|
+
eventTarget = (0, _dom.getEventTarget)(e),
|
6769
|
+
input = eventTarget;
|
6770
|
+
|
6771
|
+
if (self.amPM !== undefined && eventTarget === self.amPM) {
|
6772
|
+
self.amPM.textContent = self.l10n.amPM[(0, _utils.int)(self.amPM.textContent === self.l10n.amPM[0])];
|
6773
|
+
}
|
6774
|
+
|
6775
|
+
const min = parseFloat(input.getAttribute("min")),
|
6776
|
+
max = parseFloat(input.getAttribute("max")),
|
6777
|
+
step = parseFloat(input.getAttribute("step")),
|
6778
|
+
curValue = parseInt(input.value, 10),
|
6779
|
+
delta = e.delta || (isKeyDown ? e.which === 38 ? 1 : -1 : 0);
|
6780
|
+
let newValue = curValue + step * delta;
|
6781
|
+
|
6782
|
+
if (typeof input.value !== "undefined" && input.value.length === 2) {
|
6783
|
+
const isHourElem = input === self.hourElement,
|
6784
|
+
isMinuteElem = input === self.minuteElement;
|
6785
|
+
|
6786
|
+
if (newValue < min) {
|
6787
|
+
newValue = max + newValue + (0, _utils.int)(!isHourElem) + ((0, _utils.int)(isHourElem) && (0, _utils.int)(!self.amPM));
|
6788
|
+
if (isMinuteElem) incrementNumInput(undefined, -1, self.hourElement);
|
6789
|
+
} else if (newValue > max) {
|
6790
|
+
newValue = input === self.hourElement ? newValue - max - (0, _utils.int)(!self.amPM) : min;
|
6791
|
+
if (isMinuteElem) incrementNumInput(undefined, 1, self.hourElement);
|
6792
|
+
}
|
6793
|
+
|
6794
|
+
if (self.amPM && isHourElem && (step === 1 ? newValue + curValue === 23 : Math.abs(newValue - curValue) > step)) {
|
6795
|
+
self.amPM.textContent = self.l10n.amPM[(0, _utils.int)(self.amPM.textContent === self.l10n.amPM[0])];
|
6796
|
+
}
|
6797
|
+
|
6798
|
+
input.value = (0, _utils.pad)(newValue);
|
6799
|
+
}
|
6800
|
+
}
|
6801
|
+
|
6802
|
+
init();
|
6803
|
+
return self;
|
6804
|
+
}
|
6805
|
+
|
6806
|
+
function _flatpickr(nodeList, config) {
|
6807
|
+
const nodes = Array.prototype.slice.call(nodeList).filter(x => x instanceof HTMLElement);
|
6808
|
+
const instances = [];
|
6809
|
+
|
6810
|
+
for (let i = 0; i < nodes.length; i++) {
|
6811
|
+
const node = nodes[i];
|
6812
|
+
|
6813
|
+
try {
|
6814
|
+
if (node.getAttribute("data-fp-omit") !== null) continue;
|
6815
|
+
|
6816
|
+
if (node._flatpickr !== undefined) {
|
6817
|
+
node._flatpickr.destroy();
|
6818
|
+
|
6819
|
+
node._flatpickr = undefined;
|
6820
|
+
}
|
6821
|
+
|
6822
|
+
node._flatpickr = FlatpickrInstance(node, config || {});
|
6823
|
+
instances.push(node._flatpickr);
|
6824
|
+
} catch (e) {
|
6825
|
+
console.error(e);
|
6826
|
+
}
|
6827
|
+
}
|
6828
|
+
|
6829
|
+
return instances.length === 1 ? instances[0] : instances;
|
6830
|
+
}
|
6831
|
+
|
6832
|
+
if (typeof HTMLElement !== "undefined" && typeof HTMLCollection !== "undefined" && typeof NodeList !== "undefined") {
|
6833
|
+
HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {
|
6834
|
+
return _flatpickr(this, config);
|
6835
|
+
};
|
6836
|
+
|
6837
|
+
HTMLElement.prototype.flatpickr = function (config) {
|
6838
|
+
return _flatpickr([this], config);
|
6839
|
+
};
|
6840
|
+
}
|
6841
|
+
|
6842
|
+
var flatpickr = function (selector, config) {
|
6843
|
+
if (typeof selector === "string") {
|
6844
|
+
return _flatpickr(window.document.querySelectorAll(selector), config);
|
6845
|
+
} else if (selector instanceof Node) {
|
6846
|
+
return _flatpickr([selector], config);
|
6847
|
+
} else {
|
6848
|
+
return _flatpickr(selector, config);
|
6849
|
+
}
|
6850
|
+
};
|
6851
|
+
|
6852
|
+
flatpickr.defaultConfig = {};
|
6853
|
+
flatpickr.l10ns = {
|
6854
|
+
en: Object.assign({}, _default2.default),
|
6855
|
+
default: Object.assign({}, _default2.default)
|
6856
|
+
};
|
6857
|
+
|
6858
|
+
flatpickr.localize = l10n => {
|
6859
|
+
flatpickr.l10ns.default = Object.assign(Object.assign({}, flatpickr.l10ns.default), l10n);
|
6860
|
+
};
|
6861
|
+
|
6862
|
+
flatpickr.setDefaults = config => {
|
6863
|
+
flatpickr.defaultConfig = Object.assign(Object.assign({}, flatpickr.defaultConfig), config);
|
6864
|
+
};
|
6865
|
+
|
6866
|
+
flatpickr.parseDate = (0, _dates.createDateParser)({});
|
6867
|
+
flatpickr.formatDate = (0, _dates.createDateFormatter)({});
|
6868
|
+
flatpickr.compareDates = _dates.compareDates;
|
6869
|
+
|
6870
|
+
if (typeof jQuery !== "undefined" && typeof jQuery.fn !== "undefined") {
|
6871
|
+
jQuery.fn.flatpickr = function (config) {
|
6872
|
+
return _flatpickr(this, config);
|
6873
|
+
};
|
6874
|
+
}
|
6875
|
+
|
6876
|
+
Date.prototype.fp_incr = function (days) {
|
6877
|
+
return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === "string" ? parseInt(days, 10) : days));
|
6878
|
+
};
|
6879
|
+
|
6880
|
+
if (typeof window !== "undefined") {
|
6881
|
+
window.flatpickr = flatpickr;
|
6882
|
+
}
|
6883
|
+
|
6884
|
+
var _default = flatpickr;
|
6885
|
+
exports.default = _default;
|
6886
|
+
},{"./types/options":"../node_modules/flatpickr/dist/esm/types/options.js","./l10n/default":"../node_modules/flatpickr/dist/esm/l10n/default.js","./utils":"../node_modules/flatpickr/dist/esm/utils/index.js","./utils/dom":"../node_modules/flatpickr/dist/esm/utils/dom.js","./utils/dates":"../node_modules/flatpickr/dist/esm/utils/dates.js","./utils/formatting":"../node_modules/flatpickr/dist/esm/utils/formatting.js","./utils/polyfills":"../node_modules/flatpickr/dist/esm/utils/polyfills.js"}],"javascripts/super/flatpickr_controller.js":[function(require,module,exports) {
|
6887
|
+
"use strict";
|
6888
|
+
|
6889
|
+
Object.defineProperty(exports, "__esModule", {
|
6890
|
+
value: true
|
6891
|
+
});
|
6892
|
+
exports.default = void 0;
|
6893
|
+
|
6894
|
+
var _stimulus = require("stimulus");
|
6895
|
+
|
6896
|
+
var _flatpickr = _interopRequireDefault(require("flatpickr"));
|
6897
|
+
|
6898
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
6899
|
+
|
6900
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
6901
|
+
|
6902
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
6903
|
+
|
6904
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
6905
|
+
|
6906
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
6907
|
+
|
6908
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
6909
|
+
|
6910
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
6911
|
+
|
6912
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
6913
|
+
|
6914
|
+
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
6915
|
+
|
6916
|
+
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
6917
|
+
|
6918
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
|
6919
|
+
|
6920
|
+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
6921
|
+
|
6922
|
+
var _default = /*#__PURE__*/function (_Controller) {
|
6923
|
+
_inherits(_default, _Controller);
|
6924
|
+
|
6925
|
+
var _super = _createSuper(_default);
|
6926
|
+
|
6927
|
+
function _default() {
|
6928
|
+
_classCallCheck(this, _default);
|
6929
|
+
|
6930
|
+
return _super.apply(this, arguments);
|
6931
|
+
}
|
6932
|
+
|
6933
|
+
_createClass(_default, [{
|
6934
|
+
key: "connect",
|
6935
|
+
value: function connect() {
|
6936
|
+
this.flatpickrInstance = (0, _flatpickr.default)(this.element, this.optionsValue);
|
6937
|
+
}
|
6938
|
+
}], [{
|
6939
|
+
key: "values",
|
6940
|
+
get: function get() {
|
6941
|
+
return {
|
6942
|
+
options: Object
|
6943
|
+
};
|
6944
|
+
}
|
6945
|
+
}]);
|
6946
|
+
|
6947
|
+
return _default;
|
6948
|
+
}(_stimulus.Controller);
|
6949
|
+
|
6950
|
+
exports.default = _default;
|
6951
|
+
},{"stimulus":"../node_modules/stimulus/index.js","flatpickr":"../node_modules/flatpickr/dist/esm/index.js"}],"javascripts/super/toggle_pending_destruction_controller.js":[function(require,module,exports) {
|
4518
6952
|
"use strict";
|
4519
6953
|
|
4520
6954
|
Object.defineProperty(exports, "__esModule", {
|
@@ -4602,6 +7036,8 @@ var _clean_filter_params_controller = _interopRequireDefault(require("./clean_fi
|
|
4602
7036
|
|
4603
7037
|
var _delete_controller = _interopRequireDefault(require("./delete_controller"));
|
4604
7038
|
|
7039
|
+
var _flatpickr_controller = _interopRequireDefault(require("./flatpickr_controller"));
|
7040
|
+
|
4605
7041
|
var _toggle_pending_destruction_controller = _interopRequireDefault(require("./toggle_pending_destruction_controller"));
|
4606
7042
|
|
4607
7043
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
@@ -4615,5 +7051,6 @@ StimulusApplication.register("apply-template", _apply_template_controller.defaul
|
|
4615
7051
|
StimulusApplication.register("clean-filter-param", _clean_filter_param_controller.default);
|
4616
7052
|
StimulusApplication.register("clean-filter-params", _clean_filter_params_controller.default);
|
4617
7053
|
StimulusApplication.register("delete", _delete_controller.default);
|
7054
|
+
StimulusApplication.register("flatpickr", _flatpickr_controller.default);
|
4618
7055
|
StimulusApplication.register("toggle-pending-destruction", _toggle_pending_destruction_controller.default);
|
4619
|
-
},{"@rails/ujs":"../node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","stimulus":"../node_modules/stimulus/index.js","./apply_template_controller":"javascripts/super/apply_template_controller.js","./clean_filter_param_controller":"javascripts/super/clean_filter_param_controller.js","./clean_filter_params_controller":"javascripts/super/clean_filter_params_controller.js","./delete_controller":"javascripts/super/delete_controller.js","./toggle_pending_destruction_controller":"javascripts/super/toggle_pending_destruction_controller.js"}]},{},["javascripts/super/application.js"], "Super")
|
7056
|
+
},{"@rails/ujs":"../node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","stimulus":"../node_modules/stimulus/index.js","./apply_template_controller":"javascripts/super/apply_template_controller.js","./clean_filter_param_controller":"javascripts/super/clean_filter_param_controller.js","./clean_filter_params_controller":"javascripts/super/clean_filter_params_controller.js","./delete_controller":"javascripts/super/delete_controller.js","./flatpickr_controller":"javascripts/super/flatpickr_controller.js","./toggle_pending_destruction_controller":"javascripts/super/toggle_pending_destruction_controller.js"}]},{},["javascripts/super/application.js"], "Super")
|