@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
|
@@ -39,6 +39,7 @@ class DateRangePicker {
|
|
|
39
39
|
this.isInvalidTime = null;
|
|
40
40
|
this.isCustomDate = null;
|
|
41
41
|
this.onOutsideClick = "apply";
|
|
42
|
+
this.stopPropagation = true;
|
|
42
43
|
this.opens = this.element?.classList.contains("pull-right") ? "left" : "right";
|
|
43
44
|
this.drops = this.element?.classList.contains("dropup") ? "up" : "down";
|
|
44
45
|
this.buttonClasses = "btn btn-sm";
|
|
@@ -220,7 +221,8 @@ class DateRangePicker {
|
|
|
220
221
|
"autoApply",
|
|
221
222
|
"autoUpdateInput",
|
|
222
223
|
"showLabel",
|
|
223
|
-
"showOnClick"
|
|
224
|
+
"showOnClick",
|
|
225
|
+
"stopPropagation"
|
|
224
226
|
]) {
|
|
225
227
|
if (typeof options[key2] === "boolean")
|
|
226
228
|
this[key2] = options[key2];
|
|
@@ -2319,14 +2321,37 @@ class DateRangePicker {
|
|
|
2319
2321
|
* @private
|
|
2320
2322
|
*/
|
|
2321
2323
|
addListener(element, eventName, selector, delegate) {
|
|
2324
|
+
const stopPropagation = this.stopPropagation;
|
|
2322
2325
|
this.container.querySelectorAll(element).forEach((el) => {
|
|
2323
2326
|
el.addEventListener(eventName, function(event) {
|
|
2324
2327
|
const target = event.target.closest(selector);
|
|
2325
|
-
if (target && el.contains(target))
|
|
2328
|
+
if (target && el.contains(target)) {
|
|
2329
|
+
if (stopPropagation)
|
|
2330
|
+
event.stopPropagation();
|
|
2326
2331
|
delegate.call(target, event);
|
|
2332
|
+
}
|
|
2327
2333
|
});
|
|
2328
2334
|
});
|
|
2329
2335
|
}
|
|
2336
|
+
/**
|
|
2337
|
+
* Adds an event listener to the anchor element (e.g., `<input>`) the DateRangePicker is attached to.
|
|
2338
|
+
* This allows external code to subscribe to native DOM events such as 'click', 'focus', 'keyup', etc.
|
|
2339
|
+
*
|
|
2340
|
+
* @param {string} type - The event name (e.g., 'click', 'focus', 'keyup')
|
|
2341
|
+
* @param {function} listener - The callback function invoked when the event fires
|
|
2342
|
+
* @param {boolean|object} [options] - Optional event options:
|
|
2343
|
+
* - `boolean capture`: Whether to listen in the capture phase (default: `false`)
|
|
2344
|
+
* - `object signal`: An `AbortSignal` for later removal of the listener (default: `undefined`)
|
|
2345
|
+
*
|
|
2346
|
+
* @example
|
|
2347
|
+
* daterangepicker.addEventListener('click', (e) => {
|
|
2348
|
+
* console.log('Picker element was clicked', e);
|
|
2349
|
+
* });
|
|
2350
|
+
*
|
|
2351
|
+
*/
|
|
2352
|
+
addEventListener(type, listener, options) {
|
|
2353
|
+
this.element.addEventListener(type, listener, options);
|
|
2354
|
+
}
|
|
2330
2355
|
}
|
|
2331
2356
|
function createElementFromHTML(html) {
|
|
2332
2357
|
const template = document.createElement("template");
|
|
@@ -2372,13 +2397,15 @@ function outerHeight(el, withMargin = false) {
|
|
|
2372
2397
|
}
|
|
2373
2398
|
function daterangepicker(element, options, callback) {
|
|
2374
2399
|
if (element instanceof HTMLElement) {
|
|
2375
|
-
|
|
2376
|
-
|
|
2400
|
+
element._daterangepicker = new DateRangePicker(element, options || {}, callback);
|
|
2401
|
+
return element._daterangepicker;
|
|
2402
|
+
} else if (element instanceof NodeList || element instanceof HTMLCollection) {
|
|
2377
2403
|
const ret = [];
|
|
2378
2404
|
for (const el of Array.from(element)) {
|
|
2379
2405
|
if (el._daterangepicker && typeof el._daterangepicker.remove === "function")
|
|
2380
2406
|
el._daterangepicker.remove();
|
|
2381
|
-
|
|
2407
|
+
el._daterangepicker = new DateRangePicker(el, options || {}, callback);
|
|
2408
|
+
ret.push(el._daterangepicker);
|
|
2382
2409
|
}
|
|
2383
2410
|
return ret;
|
|
2384
2411
|
} else if (typeof element === "string") {
|
|
@@ -2387,22 +2414,29 @@ function daterangepicker(element, options, callback) {
|
|
|
2387
2414
|
for (const el of Array.from(document.querySelectorAll(element))) {
|
|
2388
2415
|
if (el._daterangepicker && typeof el._daterangepicker.remove === "function")
|
|
2389
2416
|
el._daterangepicker.remove();
|
|
2390
|
-
|
|
2417
|
+
el._daterangepicker = new DateRangePicker(el, options || {}, callback);
|
|
2418
|
+
ret.push(el._daterangepicker);
|
|
2391
2419
|
}
|
|
2392
2420
|
return ret;
|
|
2393
2421
|
} else if (document.querySelectorAll(element).length === 1) {
|
|
2394
|
-
|
|
2422
|
+
const picker = new DateRangePicker(element, options || {}, callback);
|
|
2423
|
+
document.querySelector(element)._daterangepicker = picker;
|
|
2424
|
+
return picker;
|
|
2395
2425
|
} else {
|
|
2396
|
-
return
|
|
2426
|
+
return void 0;
|
|
2397
2427
|
}
|
|
2428
|
+
} else if (element == null) {
|
|
2429
|
+
return new DateRangePicker(element, options || {}, callback);
|
|
2398
2430
|
} else {
|
|
2399
|
-
return
|
|
2431
|
+
return void 0;
|
|
2400
2432
|
}
|
|
2401
2433
|
}
|
|
2402
|
-
function getDateRangePicker(
|
|
2403
|
-
if (typeof
|
|
2404
|
-
|
|
2405
|
-
|
|
2434
|
+
function getDateRangePicker(element) {
|
|
2435
|
+
if (typeof element === "string") {
|
|
2436
|
+
return document.querySelector(element)._daterangepicker;
|
|
2437
|
+
} else {
|
|
2438
|
+
return element instanceof HTMLElement ? element._daterangepicker : void 0;
|
|
2439
|
+
}
|
|
2406
2440
|
}
|
|
2407
2441
|
if (window.jQuery?.fn) {
|
|
2408
2442
|
jQuery.fn.daterangepicker = function(options, callback) {
|