@wernfried/daterangepicker 5.4.1 → 5.4.3

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.
package/API_Doc.md CHANGED
@@ -10,7 +10,7 @@
10
10
  ## Functions
11
11
 
12
12
  <dl>
13
- <dt><a href="#daterangepicker">daterangepicker(elements, options, callback)</a> ⇒ <code>HTMLElement</code> | <code>Array.&lt;HTMLElement&gt;</code></dt>
13
+ <dt><a href="#daterangepicker">daterangepicker(element, options, callback)</a> ⇒ <code><a href="#DateRangePicker">DateRangePicker</a></code> | <code><a href="#DateRangePicker">Array.&lt;DateRangePicker&gt;</a></code></dt>
14
14
  <dd><p>Initiate a new DateRangePicker</p>
15
15
  </dd>
16
16
  <dt><a href="#getDateRangePicker">getDateRangePicker(target)</a> ⇒ <code><a href="#DateRangePicker">DateRangePicker</a></code></dt>
@@ -366,15 +366,15 @@ Helper function to dispatch events
366
366
  **Extends**: <code>Event</code>
367
367
  <a name="daterangepicker"></a>
368
368
 
369
- ## daterangepicker(elements, options, callback) ⇒ <code>HTMLElement</code> \| <code>Array.&lt;HTMLElement&gt;</code>
369
+ ## daterangepicker(element, options, callback) ⇒ [<code>DateRangePicker</code>](#DateRangePicker) \| [<code>Array.&lt;DateRangePicker&gt;</code>](#DateRangePicker)
370
370
  Initiate a new DateRangePicker
371
371
 
372
372
  **Kind**: global function
373
- **Returns**: <code>HTMLElement</code> \| <code>Array.&lt;HTMLElement&gt;</code> - The input `element` instance or an array of HTMLElement instances if `elements` matches more than one element
373
+ **Returns**: [<code>DateRangePicker</code>](#DateRangePicker) \| [<code>Array.&lt;DateRangePicker&gt;</code>](#DateRangePicker) - The DateRangePicker instance or an array of DateRangePicker instances if `elements` matches more than one element
374
374
 
375
375
  | Param | Type | Description |
376
376
  | --- | --- | --- |
377
- | elements | <code>string</code> \| [<code>HTMLElement</code>](https://developer.mozilla.org/de/docs/Web/API/HTMLElement) | Element where DateRangePicker is attached |
377
+ | element | <code>string</code> \| [<code>HTMLElement</code>](https://developer.mozilla.org/de/docs/Web/API/HTMLElement) \| [<code>HTMLCollection</code>](https://developer.mozilla.org/de/docs/Web/API/HTMLCollection) | Element where DateRangePicker is attached |
378
378
  | options | [<code>Options</code>](#Options) | Object to configure the DateRangePicker |
379
379
  | callback | [<code>callback</code>](#callback) | Callback function executed when date is changed.<br/> Callback function is executed if selected date values has changed, before picker is hidden and before the attached `<input>` element is updated. As alternative listen to the ["apply"](#event_apply) event |
380
380
 
package/README.md CHANGED
@@ -19,8 +19,8 @@ Above samples are based on the [original repository](https://github.com/dangross
19
19
  #### Global import with `<script>` tags
20
20
  ```html
21
21
  <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/luxon@3.5.0/build/global/luxon.min.js"></script>
22
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.4.1/dist/global/daterangepicker.min.js"></script>
23
- <link type="text/css" href="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.4.1/css/daterangepicker.min.css" rel="stylesheet" />
22
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.4.3/dist/global/daterangepicker.min.js"></script>
23
+ <link type="text/css" href="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.4.3/css/daterangepicker.min.css" rel="stylesheet" />
24
24
 
25
25
  <input type="text" id="picker" />
26
26
 
@@ -40,11 +40,11 @@ Above samples are based on the [original repository](https://github.com/dangross
40
40
  {
41
41
  "imports": {
42
42
  "luxon": "https://cdn.jsdelivr.net/npm/luxon@3.7.2/+esm",
43
- "daterangepicker": "https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.4.1/+esm"
43
+ "daterangepicker": "https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.4.3/+esm"
44
44
  }
45
45
  }
46
46
  </script>
47
- <link type="text/css" href="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.4.1/css/daterangepicker.min.css" rel="stylesheet" />
47
+ <link type="text/css" href="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.4.3/css/daterangepicker.min.css" rel="stylesheet" />
48
48
 
49
49
  <input type="text" id="picker" />
50
50
 
@@ -63,9 +63,9 @@ Above samples are based on the [original repository](https://github.com/dangross
63
63
  #### Style with Bulma
64
64
  ```html
65
65
  <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/luxon@3.5.0/build/global/luxon.min.js"></script>
66
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.4.1/dist/global/daterangepicker.min.js"></script>
66
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.4.3/dist/global/daterangepicker.min.js"></script>
67
67
  <link type="text/css" href="https://cdn.jsdelivr.net/npm/bulma@1.0.4/css/bulma.min.css" rel="stylesheet" />
68
- <link type="text/css" href="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.4.1/css/daterangepicker.bulma.min.css" rel="stylesheet" />
68
+ <link type="text/css" href="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.4.3/css/daterangepicker.bulma.min.css" rel="stylesheet" />
69
69
 
70
70
  <input type="text" id="picker" />
71
71
 
@@ -121,8 +121,8 @@ Initialisation with jQuery is supported in version 5.x
121
121
  ```html
122
122
  <script type="text/javascript" src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>
123
123
  <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/luxon@3.5.0/build/global/luxon.min.js"></script>
124
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.4.1/dist/global/daterangepicker.min.js"></script>
125
- <link type="text/css" href="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.4.1/css/daterangepicker.min.css" rel="stylesheet" />
124
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.4.3/dist/global/daterangepicker.min.js"></script>
125
+ <link type="text/css" href="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.4.3/css/daterangepicker.min.css" rel="stylesheet" />
126
126
 
127
127
  <input type="text" id="picker" />
128
128
 
@@ -6,7 +6,7 @@ class DateRangePicker {
6
6
  constructor(element, options, cb) {
7
7
  if (typeof element === "string" && document.querySelectorAll(element).length > 1)
8
8
  throw new RangeError(`Option 'element' must match to one element only`);
9
- this.parentEl = "body";
9
+ this.parentEl = document.querySelector("body");
10
10
  this.element = element instanceof HTMLElement ? element : document.querySelector(element);
11
11
  this.isInputText = this.element instanceof HTMLInputElement && this.element.type === "text";
12
12
  this.button = null;
@@ -161,7 +161,11 @@ class DateRangePicker {
161
161
  options.template = template.join("");
162
162
  this.container = createElementFromHTML(options.template);
163
163
  }
164
- this.parentEl = document.querySelector(typeof options.parentEl === "string" ? options.parentEl : this.parentEl);
164
+ if (options.parentEl instanceof HTMLElement) {
165
+ this.parentEl = options.parentEl;
166
+ } else if (typeof options.parentEl === "string") {
167
+ this.parentEl = document.querySelector(options.parentEl) ?? this.parentEl;
168
+ }
165
169
  this.parentEl.appendChild(this.container);
166
170
  if (typeof options.timePicker === "boolean")
167
171
  this.timePicker = options.timePicker;
@@ -2365,21 +2369,34 @@ function outerHeight(el, withMargin = false) {
2365
2369
  const style = getComputedStyle(el);
2366
2370
  return el.offsetHeight + parseFloat(style.marginTop) + parseFloat(style.marginBottom);
2367
2371
  }
2368
- function daterangepicker(elements, options, callback) {
2369
- if (typeof elements === "string")
2370
- return daterangepicker(document.querySelectorAll(elements), options, callback);
2371
- if (elements instanceof HTMLElement)
2372
- elements = [elements];
2373
- if (elements instanceof NodeList || elements instanceof HTMLCollection)
2374
- elements = Array.from(elements);
2375
- if (elements == null)
2376
- return new DateRangePicker(null, options || {}, callback);
2377
- elements.forEach((el) => {
2378
- if (el._daterangepicker && typeof el._daterangepicker.remove === "function")
2379
- el._daterangepicker.remove();
2380
- el._daterangepicker = new DateRangePicker(el, options || {}, callback);
2381
- });
2382
- return elements.length === 1 ? elements[0] : elements;
2372
+ function daterangepicker(element, options, callback) {
2373
+ if (element instanceof HTMLElement) {
2374
+ return new DateRangePicker(element, options || {}, callback);
2375
+ } else if (elements instanceof NodeList || element instanceof HTMLCollection) {
2376
+ const ret = [];
2377
+ for (const el of Array.from(element)) {
2378
+ if (el._daterangepicker && typeof el._daterangepicker.remove === "function")
2379
+ el._daterangepicker.remove();
2380
+ ret.push(new DateRangePicker(el, options || {}, callback));
2381
+ }
2382
+ return ret;
2383
+ } else if (typeof element === "string") {
2384
+ if (document.querySelectorAll(element).length > 1) {
2385
+ const ret = [];
2386
+ for (const el of Array.from(document.querySelectorAll(element))) {
2387
+ if (el._daterangepicker && typeof el._daterangepicker.remove === "function")
2388
+ el._daterangepicker.remove();
2389
+ ret.push(new DateRangePicker(el, options || {}, callback));
2390
+ }
2391
+ return ret;
2392
+ } else if (document.querySelectorAll(element).length === 1) {
2393
+ return new DateRangePicker(element, options || {}, callback);
2394
+ } else {
2395
+ return null;
2396
+ }
2397
+ } else {
2398
+ return null;
2399
+ }
2383
2400
  }
2384
2401
  function getDateRangePicker(target) {
2385
2402
  if (typeof target === "string")