@wernfried/daterangepicker 5.4.9 → 5.5.1
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 +25 -3
- package/README.md +9 -8
- package/dist/cjs/daterangepicker.cjs +47 -13
- package/dist/cjs/daterangepicker.cjs.map +1 -1
- package/dist/cjs/daterangepicker.min.cjs +1 -1
- package/dist/cjs/daterangepicker.min.cjs.map +1 -1
- package/dist/esm/daterangepicker.js +47 -13
- package/dist/esm/daterangepicker.js.map +1 -1
- package/dist/esm/daterangepicker.min.js +1 -1
- package/dist/esm/daterangepicker.min.js.map +1 -1
- package/dist/global/daterangepicker.js +47 -13
- package/dist/global/daterangepicker.js.map +1 -1
- package/dist/global/daterangepicker.min.js +1 -1
- package/dist/global/daterangepicker.min.js.map +1 -1
- package/package.json +1 -1
package/API_Doc.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<dt><a href="#daterangepicker">daterangepicker(element, options, callback)</a> ⇒ <code><a href="#DateRangePicker">DateRangePicker</a></code> | <code><a href="#DateRangePicker">Array.<DateRangePicker></a></code></dt>
|
|
14
14
|
<dd><p>Initiate a new DateRangePicker</p>
|
|
15
15
|
</dd>
|
|
16
|
-
<dt><a href="#getDateRangePicker">getDateRangePicker(
|
|
16
|
+
<dt><a href="#getDateRangePicker">getDateRangePicker(element)</a> ⇒ <code><a href="#DateRangePicker">DateRangePicker</a></code></dt>
|
|
17
17
|
<dd><p>Returns the DateRangePicker. Equivalent to <code>element._daterangepicker</code></p>
|
|
18
18
|
</dd>
|
|
19
19
|
</dl>
|
|
@@ -118,6 +118,7 @@ Ranges are not validated against <code>minDate</code>, <code>maxDate</code>, <co
|
|
|
118
118
|
* [.updateAltInput()](#DateRangePicker+updateAltInput)
|
|
119
119
|
* [.remove()](#DateRangePicker+remove)
|
|
120
120
|
* [.triggerEvent(ev, ...args)](#DateRangePicker+triggerEvent)
|
|
121
|
+
* [.addEventListener(type, listener, [options])](#DateRangePicker+addEventListener)
|
|
121
122
|
|
|
122
123
|
<a name="new_DateRangePicker_new"></a>
|
|
123
124
|
|
|
@@ -359,6 +360,26 @@ Helper function to dispatch events
|
|
|
359
360
|
| ev | <code>object</code> | Event template from this.#events |
|
|
360
361
|
| ...args | <code>object</code> | Additional parameters if needed |
|
|
361
362
|
|
|
363
|
+
<a name="DateRangePicker+addEventListener"></a>
|
|
364
|
+
|
|
365
|
+
### dateRangePicker.addEventListener(type, listener, [options])
|
|
366
|
+
Adds an event listener to the anchor element (e.g., `<input>`) the DateRangePicker is attached to.
|
|
367
|
+
This allows external code to subscribe to native DOM events such as 'click', 'focus', 'keyup', etc.
|
|
368
|
+
|
|
369
|
+
**Kind**: instance method of [<code>DateRangePicker</code>](#DateRangePicker)
|
|
370
|
+
|
|
371
|
+
| Param | Type | Description |
|
|
372
|
+
| --- | --- | --- |
|
|
373
|
+
| type | <code>string</code> | The event name (e.g., 'click', 'focus', 'keyup') |
|
|
374
|
+
| listener | <code>function</code> | The callback function invoked when the event fires |
|
|
375
|
+
| [options] | <code>boolean</code> \| <code>object</code> | Optional event options: - `boolean capture`: Whether to listen in the capture phase (default: `false`) - `object signal`: An `AbortSignal` for later removal of the listener (default: `undefined`) |
|
|
376
|
+
|
|
377
|
+
**Example**
|
|
378
|
+
```js
|
|
379
|
+
daterangepicker.addEventListener('click', (e) => {
|
|
380
|
+
console.log('Picker element was clicked', e);
|
|
381
|
+
});
|
|
382
|
+
```
|
|
362
383
|
<a name="DateRangePickerEvent"></a>
|
|
363
384
|
|
|
364
385
|
## DateRangePickerEvent ⇐ <code>Event</code>
|
|
@@ -380,7 +401,7 @@ Initiate a new DateRangePicker
|
|
|
380
401
|
|
|
381
402
|
<a name="getDateRangePicker"></a>
|
|
382
403
|
|
|
383
|
-
## getDateRangePicker(
|
|
404
|
+
## getDateRangePicker(element) ⇒ [<code>DateRangePicker</code>](#DateRangePicker)
|
|
384
405
|
Returns the DateRangePicker. Equivalent to `element._daterangepicker`
|
|
385
406
|
|
|
386
407
|
**Kind**: global function
|
|
@@ -388,7 +409,7 @@ Returns the DateRangePicker. Equivalent to `element._daterangepicker`
|
|
|
388
409
|
|
|
389
410
|
| Param | Type | Description |
|
|
390
411
|
| --- | --- | --- |
|
|
391
|
-
|
|
|
412
|
+
| element | <code>HTMLElement</code> \| <code>string</code> | The HTMLElement or querySelector string where the DateRangePicker is attached. |
|
|
392
413
|
|
|
393
414
|
<a name="event_violate"></a>
|
|
394
415
|
|
|
@@ -653,6 +674,7 @@ Options for DateRangePicker
|
|
|
653
674
|
| showISOWeekNumbers | <code>boolean</code> | <code>false</code> | Show **ISO** week numbers at the start of each week on the calendars.<br> Takes precedence over localized `showWeekNumbers` |
|
|
654
675
|
| button | <code>string</code> \| [<code>HTMLButtonElement</code>](https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement) | <code>null</code> | A dedicated element to show the DateRangePicker on click.<br> Main reason of this option is to prevent hide/flicker of the picker on `outsideClick()` |
|
|
655
676
|
| showOnClick | <code>boolean</code> | <code>true</code> | Shows/toggle the DateRangePicker on click or focus at `element`.<br> You may want to set it to `false` only when option `button` is provided or when you use `show()` programmatically. |
|
|
677
|
+
| stopPropagation | <code>boolean</code> | <code>true</code> | Set this option to `false` if you want to listen on DOM-Events outside this instance. |
|
|
656
678
|
| timePicker | <code>boolean</code> | <code>false</code> | Adds select boxes to choose times in addition to dates |
|
|
657
679
|
| timePicker24Hour | <code>boolean</code> | | Use 24-hour instead of 12-hour times, removing the AM/PM selection.<br> Default is derived from current locale [Intl.DateTimeFormat.resolvedOptions.hour12](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions#hour12). |
|
|
658
680
|
| timePickerStepSize | [<code>Duration</code>](https://moment.github.io/luxon/api-docs/index.html#duration) \| <code>string</code> \| <code>number</code> | | Default: `Duration.fromObject({minutes:1})`<br>Set the time picker step size.<br> Must be a `luxon.Duration` or the number of seconds or a string according to [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) duration.<br> Valid values are 1,2,3,4,5,6,10,12,15,20,30 for `Duration.fromObject({seconds: ...})` and `Duration.fromObject({minutes: ...})` and 1,2,3,4,6,(8,12) for `Duration.fromObject({hours: ...})`.<br> Duration must be greater than `minSpan` and smaller than `maxSpan`.<br> For example `timePickerStepSize: 600` will disable time picker seconds and time picker minutes are set to step size of 10 Minutes. |
|
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.
|
|
23
|
-
<link type="text/css" href="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.
|
|
22
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.5.1/dist/global/daterangepicker.min.js"></script>
|
|
23
|
+
<link type="text/css" href="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.5.1/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.
|
|
43
|
+
"daterangepicker": "https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.5.1/+esm"
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
</script>
|
|
47
|
-
<link type="text/css" href="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.
|
|
47
|
+
<link type="text/css" href="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.5.1/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.
|
|
66
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.5.1/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.
|
|
68
|
+
<link type="text/css" href="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.5.1/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.
|
|
125
|
-
<link type="text/css" href="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.
|
|
124
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.5.1/dist/global/daterangepicker.min.js"></script>
|
|
125
|
+
<link type="text/css" href="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.5.1/css/daterangepicker.min.css" rel="stylesheet" />
|
|
126
126
|
|
|
127
127
|
<input type="text" id="picker" />
|
|
128
128
|
|
|
@@ -366,6 +366,7 @@ Options for DateRangePicker
|
|
|
366
366
|
| showISOWeekNumbers | <code>boolean</code> | <code>false</code> | Show **ISO** week numbers at the start of each week on the calendars.<br> Takes precedence over localized `showWeekNumbers` |
|
|
367
367
|
| button | <code>string</code> \| [<code>HTMLButtonElement</code>](https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement) | <code>null</code> | A dedicated element to show the DateRangePicker on click.<br> Main reason of this option is to prevent hide/flicker of the picker on `outsideClick()` |
|
|
368
368
|
| showOnClick | <code>boolean</code> | <code>true</code> | Shows/toggle the DateRangePicker on click or focus at `element`.<br> You may want to set it to `false` only when option `button` is provided or when you use `show()` programmatically. |
|
|
369
|
+
| stopPropagation | <code>boolean</code> | <code>true</code> | Set this option to `false` if you want to listen on DOM-Events outside this instance. |
|
|
369
370
|
| timePicker | <code>boolean</code> | <code>false</code> | Adds select boxes to choose times in addition to dates |
|
|
370
371
|
| timePicker24Hour | <code>boolean</code> | | Use 24-hour instead of 12-hour times, removing the AM/PM selection.<br> Default is derived from current locale [Intl.DateTimeFormat.resolvedOptions.hour12](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions#hour12). |
|
|
371
372
|
| timePickerStepSize | [<code>Duration</code>](https://moment.github.io/luxon/api-docs/index.html#duration) \| <code>string</code> \| <code>number</code> | | Default: `Duration.fromObject({minutes:1})`<br>Set the time picker step size.<br> Must be a `luxon.Duration` or the number of seconds or a string according to [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) duration.<br> Valid values are 1,2,3,4,5,6,10,12,15,20,30 for `Duration.fromObject({seconds: ...})` and `Duration.fromObject({minutes: ...})` and 1,2,3,4,6,(8,12) for `Duration.fromObject({hours: ...})`.<br> Duration must be greater than `minSpan` and smaller than `maxSpan`.<br> For example `timePickerStepSize: 600` will disable time picker seconds and time picker minutes are set to step size of 10 Minutes. |
|
|
@@ -40,6 +40,7 @@ class DateRangePicker {
|
|
|
40
40
|
this.isInvalidTime = null;
|
|
41
41
|
this.isCustomDate = null;
|
|
42
42
|
this.onOutsideClick = "apply";
|
|
43
|
+
this.stopPropagation = true;
|
|
43
44
|
this.opens = this.element?.classList.contains("pull-right") ? "left" : "right";
|
|
44
45
|
this.drops = this.element?.classList.contains("dropup") ? "up" : "down";
|
|
45
46
|
this.buttonClasses = "btn btn-sm";
|
|
@@ -221,7 +222,8 @@ class DateRangePicker {
|
|
|
221
222
|
"autoApply",
|
|
222
223
|
"autoUpdateInput",
|
|
223
224
|
"showLabel",
|
|
224
|
-
"showOnClick"
|
|
225
|
+
"showOnClick",
|
|
226
|
+
"stopPropagation"
|
|
225
227
|
]) {
|
|
226
228
|
if (typeof options[key2] === "boolean")
|
|
227
229
|
this[key2] = options[key2];
|
|
@@ -2320,14 +2322,37 @@ class DateRangePicker {
|
|
|
2320
2322
|
* @private
|
|
2321
2323
|
*/
|
|
2322
2324
|
addListener(element, eventName, selector, delegate) {
|
|
2325
|
+
const stopPropagation = this.stopPropagation;
|
|
2323
2326
|
this.container.querySelectorAll(element).forEach((el) => {
|
|
2324
2327
|
el.addEventListener(eventName, function(event) {
|
|
2325
2328
|
const target = event.target.closest(selector);
|
|
2326
|
-
if (target && el.contains(target))
|
|
2329
|
+
if (target && el.contains(target)) {
|
|
2330
|
+
if (stopPropagation)
|
|
2331
|
+
event.stopPropagation();
|
|
2327
2332
|
delegate.call(target, event);
|
|
2333
|
+
}
|
|
2328
2334
|
});
|
|
2329
2335
|
});
|
|
2330
2336
|
}
|
|
2337
|
+
/**
|
|
2338
|
+
* Adds an event listener to the anchor element (e.g., `<input>`) the DateRangePicker is attached to.
|
|
2339
|
+
* This allows external code to subscribe to native DOM events such as 'click', 'focus', 'keyup', etc.
|
|
2340
|
+
*
|
|
2341
|
+
* @param {string} type - The event name (e.g., 'click', 'focus', 'keyup')
|
|
2342
|
+
* @param {function} listener - The callback function invoked when the event fires
|
|
2343
|
+
* @param {boolean|object} [options] - Optional event options:
|
|
2344
|
+
* - `boolean capture`: Whether to listen in the capture phase (default: `false`)
|
|
2345
|
+
* - `object signal`: An `AbortSignal` for later removal of the listener (default: `undefined`)
|
|
2346
|
+
*
|
|
2347
|
+
* @example
|
|
2348
|
+
* daterangepicker.addEventListener('click', (e) => {
|
|
2349
|
+
* console.log('Picker element was clicked', e);
|
|
2350
|
+
* });
|
|
2351
|
+
*
|
|
2352
|
+
*/
|
|
2353
|
+
addEventListener(type, listener, options) {
|
|
2354
|
+
this.element.addEventListener(type, listener, options);
|
|
2355
|
+
}
|
|
2331
2356
|
}
|
|
2332
2357
|
function createElementFromHTML(html) {
|
|
2333
2358
|
const template = document.createElement("template");
|
|
@@ -2373,13 +2398,15 @@ function outerHeight(el, withMargin = false) {
|
|
|
2373
2398
|
}
|
|
2374
2399
|
function daterangepicker(element, options, callback) {
|
|
2375
2400
|
if (element instanceof HTMLElement) {
|
|
2376
|
-
|
|
2377
|
-
|
|
2401
|
+
element._daterangepicker = new DateRangePicker(element, options || {}, callback);
|
|
2402
|
+
return element._daterangepicker;
|
|
2403
|
+
} else if (element instanceof NodeList || element instanceof HTMLCollection) {
|
|
2378
2404
|
const ret = [];
|
|
2379
2405
|
for (const el of Array.from(element)) {
|
|
2380
2406
|
if (el._daterangepicker && typeof el._daterangepicker.remove === "function")
|
|
2381
2407
|
el._daterangepicker.remove();
|
|
2382
|
-
|
|
2408
|
+
el._daterangepicker = new DateRangePicker(el, options || {}, callback);
|
|
2409
|
+
ret.push(el._daterangepicker);
|
|
2383
2410
|
}
|
|
2384
2411
|
return ret;
|
|
2385
2412
|
} else if (typeof element === "string") {
|
|
@@ -2388,22 +2415,29 @@ function daterangepicker(element, options, callback) {
|
|
|
2388
2415
|
for (const el of Array.from(document.querySelectorAll(element))) {
|
|
2389
2416
|
if (el._daterangepicker && typeof el._daterangepicker.remove === "function")
|
|
2390
2417
|
el._daterangepicker.remove();
|
|
2391
|
-
|
|
2418
|
+
el._daterangepicker = new DateRangePicker(el, options || {}, callback);
|
|
2419
|
+
ret.push(el._daterangepicker);
|
|
2392
2420
|
}
|
|
2393
2421
|
return ret;
|
|
2394
2422
|
} else if (document.querySelectorAll(element).length === 1) {
|
|
2395
|
-
|
|
2423
|
+
const picker = new DateRangePicker(element, options || {}, callback);
|
|
2424
|
+
document.querySelector(element)._daterangepicker = picker;
|
|
2425
|
+
return picker;
|
|
2396
2426
|
} else {
|
|
2397
|
-
return
|
|
2427
|
+
return void 0;
|
|
2398
2428
|
}
|
|
2429
|
+
} else if (element == null) {
|
|
2430
|
+
return new DateRangePicker(element, options || {}, callback);
|
|
2399
2431
|
} else {
|
|
2400
|
-
return
|
|
2432
|
+
return void 0;
|
|
2401
2433
|
}
|
|
2402
2434
|
}
|
|
2403
|
-
function getDateRangePicker(
|
|
2404
|
-
if (typeof
|
|
2405
|
-
|
|
2406
|
-
|
|
2435
|
+
function getDateRangePicker(element) {
|
|
2436
|
+
if (typeof element === "string") {
|
|
2437
|
+
return document.querySelector(element)._daterangepicker;
|
|
2438
|
+
} else {
|
|
2439
|
+
return element instanceof HTMLElement ? element._daterangepicker : void 0;
|
|
2440
|
+
}
|
|
2407
2441
|
}
|
|
2408
2442
|
if (window.jQuery?.fn) {
|
|
2409
2443
|
jQuery.fn.daterangepicker = function(options, callback) {
|