@wernfried/daterangepicker 5.4.10 → 5.5.2
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 +21 -5
- package/README.md +21 -19
- package/dist/cjs/daterangepicker.cjs +30 -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 +30 -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 +30 -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
|
@@ -119,6 +119,7 @@ Ranges are not validated against <code>minDate</code>, <code>maxDate</code>, <co
|
|
|
119
119
|
* [.remove()](#DateRangePicker+remove)
|
|
120
120
|
* [.triggerEvent(ev, ...args)](#DateRangePicker+triggerEvent)
|
|
121
121
|
* [.addEventListener(type, listener, [options])](#DateRangePicker+addEventListener)
|
|
122
|
+
* [.removeEventListener(type, listener, [options])](#DateRangePicker+removeEventListener)
|
|
122
123
|
|
|
123
124
|
<a name="new_DateRangePicker_new"></a>
|
|
124
125
|
|
|
@@ -363,23 +364,37 @@ Helper function to dispatch events
|
|
|
363
364
|
<a name="DateRangePicker+addEventListener"></a>
|
|
364
365
|
|
|
365
366
|
### dateRangePicker.addEventListener(type, listener, [options])
|
|
366
|
-
|
|
367
|
-
|
|
367
|
+
Adding event listener to input element where dateragnepicker is attached to.
|
|
368
|
+
Wrapper to give easy access for `addEventListener()` on DateRangePicker instance.
|
|
368
369
|
|
|
369
370
|
**Kind**: instance method of [<code>DateRangePicker</code>](#DateRangePicker)
|
|
370
371
|
|
|
371
372
|
| Param | Type | Description |
|
|
372
373
|
| --- | --- | --- |
|
|
373
|
-
| type | <code>string</code> | The event name (
|
|
374
|
+
| type | <code>string</code> | The event name, either native DOM-Event or [DateRangePicker](API_Doc.md#event) specific event |
|
|
374
375
|
| listener | <code>function</code> | The callback function invoked when the event fires |
|
|
375
376
|
| [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
|
|
|
377
378
|
**Example**
|
|
378
379
|
```js
|
|
379
|
-
|
|
380
|
-
console.log('Picker element was
|
|
380
|
+
picker.addEventListener('hide', (e) => {
|
|
381
|
+
console.log('Picker element was hidden', e);
|
|
381
382
|
});
|
|
382
383
|
```
|
|
384
|
+
<a name="DateRangePicker+removeEventListener"></a>
|
|
385
|
+
|
|
386
|
+
### dateRangePicker.removeEventListener(type, listener, [options])
|
|
387
|
+
Counterpart to `addEventListener()`
|
|
388
|
+
Note, `listener` most be a named function to enable remove.
|
|
389
|
+
|
|
390
|
+
**Kind**: instance method of [<code>DateRangePicker</code>](#DateRangePicker)
|
|
391
|
+
|
|
392
|
+
| Param | Type | Description |
|
|
393
|
+
| --- | --- | --- |
|
|
394
|
+
| type | <code>string</code> | The event name, either native |
|
|
395
|
+
| listener | <code>function</code> | The callback function invoked when the event fires |
|
|
396
|
+
| [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`) |
|
|
397
|
+
|
|
383
398
|
<a name="DateRangePickerEvent"></a>
|
|
384
399
|
|
|
385
400
|
## DateRangePickerEvent ⇐ <code>Event</code>
|
|
@@ -674,6 +689,7 @@ Options for DateRangePicker
|
|
|
674
689
|
| 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` |
|
|
675
690
|
| 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()` |
|
|
676
691
|
| 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. |
|
|
692
|
+
| stopPropagation | <code>boolean</code> | <code>true</code> | Set this option to `false` if you want to listen on DOM-Events outside this instance. |
|
|
677
693
|
| timePicker | <code>boolean</code> | <code>false</code> | Adds select boxes to choose times in addition to dates |
|
|
678
694
|
| 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). |
|
|
679
695
|
| 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.2/dist/global/daterangepicker.min.js"></script>
|
|
23
|
+
<link type="text/css" href="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.5.2/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.2/+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.2/css/daterangepicker.min.css" rel="stylesheet" />
|
|
48
48
|
|
|
49
49
|
<input type="text" id="picker" />
|
|
50
50
|
|
|
@@ -52,7 +52,7 @@ Above samples are based on the [original repository](https://github.com/dangross
|
|
|
52
52
|
import { DateTime } from 'luxon';
|
|
53
53
|
import { daterangepicker } from 'daterangepicker';
|
|
54
54
|
|
|
55
|
-
daterangepicker('#picker', {
|
|
55
|
+
const picker = daterangepicker('#picker', {
|
|
56
56
|
startDate: DateTime.now().plus({day: 1})
|
|
57
57
|
}, (start, end) => {
|
|
58
58
|
console.log(`Selected range: ${start.toString()} to ${end.toString()}`)
|
|
@@ -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.2/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.2/css/daterangepicker.bulma.min.css" rel="stylesheet" />
|
|
69
69
|
|
|
70
70
|
<input type="text" id="picker" />
|
|
71
71
|
|
|
@@ -99,16 +99,17 @@ Values in `options` of `daterangepicker(el, options)` take precedence over `data
|
|
|
99
99
|
<script type="module">
|
|
100
100
|
import {daterangepicker, getDateRangePicker} from 'daterangepicker'; // or global import with <script> tag
|
|
101
101
|
|
|
102
|
-
const input =
|
|
102
|
+
const input = document.getElementById('picker');
|
|
103
|
+
const picker = daterangepicker('#picker', {}); // returns DateRangePicker instance or array of DateRangePicker if selector matches more than one element
|
|
103
104
|
// or daterangepicker(document.querySelector('#picker'), {})
|
|
104
105
|
|
|
105
|
-
|
|
106
|
+
// Get DateRangePicker instance after initialization
|
|
107
|
+
const drp = getDateRangePicker(input);
|
|
106
108
|
// or DateRangePicker.getDateRangePicker('#picker'); if imported globally with <script> tag
|
|
107
109
|
|
|
108
|
-
console.log(
|
|
109
|
-
console.log(
|
|
110
|
-
console.log(
|
|
111
|
-
console.log( document.querySelector('#picker') === input) // prints 'true'
|
|
110
|
+
console.log( picker.startDate.toString()) // prints the selected startDate
|
|
111
|
+
console.log( picker === input._daterangepicker) // prints 'true'
|
|
112
|
+
console.log( picker.element === input) // prints 'true'
|
|
112
113
|
</script>
|
|
113
114
|
```
|
|
114
115
|
|
|
@@ -121,8 +122,8 @@ Initialisation with jQuery is supported in version 5.x
|
|
|
121
122
|
```html
|
|
122
123
|
<script type="text/javascript" src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>
|
|
123
124
|
<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.
|
|
125
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.5.2/dist/global/daterangepicker.min.js"></script>
|
|
126
|
+
<link type="text/css" href="https://cdn.jsdelivr.net/npm/@wernfried/daterangepicker@5.5.2/css/daterangepicker.min.css" rel="stylesheet" />
|
|
126
127
|
|
|
127
128
|
<input type="text" id="picker" />
|
|
128
129
|
|
|
@@ -161,7 +162,7 @@ $('#picker').daterangepicker({
|
|
|
161
162
|
});
|
|
162
163
|
|
|
163
164
|
// version 5.x - without jQuery
|
|
164
|
-
const
|
|
165
|
+
const picker = daterangepicker('#picker', { // or DateRangePicker.daterangepicker('#picker', ...
|
|
165
166
|
startDate: DateTime.now(),
|
|
166
167
|
// allow only dates from current year
|
|
167
168
|
minDate: DateTime.now().startOf('year'),
|
|
@@ -169,14 +170,14 @@ const input = daterangepicker('#picker', { // or DateRangePicker.daterangepicker
|
|
|
169
170
|
singleDatePicker: true
|
|
170
171
|
});
|
|
171
172
|
|
|
172
|
-
|
|
173
|
+
picker.addEventListener('violate', (ev) => {
|
|
173
174
|
ev.newDate.startDate = DateTime.now().minus({ days: 3 }).startOf('day');
|
|
174
175
|
ev.preventDefault();
|
|
175
176
|
});
|
|
176
|
-
|
|
177
|
+
picker.addEventListener('show', (ev) => {
|
|
177
178
|
console.log('Show the picker')
|
|
178
179
|
});
|
|
179
|
-
|
|
180
|
+
picker.addEventListener('beforeHide', (ev) => {
|
|
180
181
|
console.log(ev.picker.startDate.toString());
|
|
181
182
|
ev.preventDefault(); // -> do not hide the picker
|
|
182
183
|
});
|
|
@@ -366,6 +367,7 @@ Options for DateRangePicker
|
|
|
366
367
|
| 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
368
|
| 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
369
|
| 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. |
|
|
370
|
+
| stopPropagation | <code>boolean</code> | <code>true</code> | Set this option to `false` if you want to listen on DOM-Events outside this instance. |
|
|
369
371
|
| timePicker | <code>boolean</code> | <code>false</code> | Adds select boxes to choose times in addition to dates |
|
|
370
372
|
| 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
373
|
| 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,33 +2322,50 @@ 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
|
}
|
|
2331
2337
|
/**
|
|
2332
|
-
*
|
|
2333
|
-
*
|
|
2338
|
+
* Adding event listener to input element where dateragnepicker is attached to.
|
|
2339
|
+
* Wrapper to give easy access for `addEventListener()` on DateRangePicker instance.
|
|
2334
2340
|
*
|
|
2335
|
-
* @param {string} type - The event name (
|
|
2341
|
+
* @param {string} type - The event name, either native DOM-Event or [DateRangePicker](API_Doc.md#event) specific event
|
|
2336
2342
|
* @param {function} listener - The callback function invoked when the event fires
|
|
2337
2343
|
* @param {boolean|object} [options] - Optional event options:
|
|
2338
2344
|
* - `boolean capture`: Whether to listen in the capture phase (default: `false`)
|
|
2339
2345
|
* - `object signal`: An `AbortSignal` for later removal of the listener (default: `undefined`)
|
|
2340
2346
|
*
|
|
2341
2347
|
* @example
|
|
2342
|
-
*
|
|
2343
|
-
* console.log('Picker element was
|
|
2348
|
+
* picker.addEventListener('hide', (e) => {
|
|
2349
|
+
* console.log('Picker element was hidden', e);
|
|
2344
2350
|
* });
|
|
2345
2351
|
*
|
|
2346
2352
|
*/
|
|
2347
2353
|
addEventListener(type, listener, options) {
|
|
2348
2354
|
this.element.addEventListener(type, listener, options);
|
|
2349
2355
|
}
|
|
2356
|
+
/**
|
|
2357
|
+
* Counterpart to `addEventListener()`
|
|
2358
|
+
* Note, `listener` most be a named function to enable remove.
|
|
2359
|
+
*
|
|
2360
|
+
* @param {string} type - The event name, either native
|
|
2361
|
+
* @param {function} listener - The callback function invoked when the event fires
|
|
2362
|
+
* @param {boolean|object} [options] - Optional event options:
|
|
2363
|
+
* - `boolean capture`: Whether to listen in the capture phase (default: `false`)
|
|
2364
|
+
* - `object signal`: An `AbortSignal` for later removal of the listener (default: `undefined`)
|
|
2365
|
+
*/
|
|
2366
|
+
removeEventListener(type, listener, options) {
|
|
2367
|
+
this.element.removeEventListener(type, listener, options);
|
|
2368
|
+
}
|
|
2350
2369
|
}
|
|
2351
2370
|
function createElementFromHTML(html) {
|
|
2352
2371
|
const template = document.createElement("template");
|
|
@@ -2399,9 +2418,8 @@ function daterangepicker(element, options, callback) {
|
|
|
2399
2418
|
for (const el of Array.from(element)) {
|
|
2400
2419
|
if (el._daterangepicker && typeof el._daterangepicker.remove === "function")
|
|
2401
2420
|
el._daterangepicker.remove();
|
|
2402
|
-
|
|
2403
|
-
el._daterangepicker
|
|
2404
|
-
ret.push(picker);
|
|
2421
|
+
el._daterangepicker = new DateRangePicker(el, options || {}, callback);
|
|
2422
|
+
ret.push(el._daterangepicker);
|
|
2405
2423
|
}
|
|
2406
2424
|
return ret;
|
|
2407
2425
|
} else if (typeof element === "string") {
|
|
@@ -2410,9 +2428,8 @@ function daterangepicker(element, options, callback) {
|
|
|
2410
2428
|
for (const el of Array.from(document.querySelectorAll(element))) {
|
|
2411
2429
|
if (el._daterangepicker && typeof el._daterangepicker.remove === "function")
|
|
2412
2430
|
el._daterangepicker.remove();
|
|
2413
|
-
|
|
2414
|
-
el._daterangepicker
|
|
2415
|
-
ret.push(picker);
|
|
2431
|
+
el._daterangepicker = new DateRangePicker(el, options || {}, callback);
|
|
2432
|
+
ret.push(el._daterangepicker);
|
|
2416
2433
|
}
|
|
2417
2434
|
return ret;
|
|
2418
2435
|
} else if (document.querySelectorAll(element).length === 1) {
|