@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.
@@ -40,6 +40,7 @@ var DateRangePicker = (function(exports, luxon2) {
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 @@ var DateRangePicker = (function(exports, luxon2) {
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 @@ var DateRangePicker = (function(exports, luxon2) {
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 @@ var DateRangePicker = (function(exports, luxon2) {
2373
2398
  }
2374
2399
  function daterangepicker(element, options, callback) {
2375
2400
  if (element instanceof HTMLElement) {
2376
- return new DateRangePicker2(element, options || {}, callback);
2377
- } else if (elements instanceof NodeList || element instanceof HTMLCollection) {
2401
+ element._daterangepicker = new DateRangePicker2(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
- ret.push(new DateRangePicker2(el, options || {}, callback));
2408
+ el._daterangepicker = new DateRangePicker2(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 @@ var DateRangePicker = (function(exports, luxon2) {
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
- ret.push(new DateRangePicker2(el, options || {}, callback));
2418
+ el._daterangepicker = new DateRangePicker2(el, options || {}, callback);
2419
+ ret.push(el._daterangepicker);
2392
2420
  }
2393
2421
  return ret;
2394
2422
  } else if (document.querySelectorAll(element).length === 1) {
2395
- return new DateRangePicker2(element, options || {}, callback);
2423
+ const picker = new DateRangePicker2(element, options || {}, callback);
2424
+ document.querySelector(element)._daterangepicker = picker;
2425
+ return picker;
2396
2426
  } else {
2397
- return null;
2427
+ return void 0;
2398
2428
  }
2429
+ } else if (element == null) {
2430
+ return new DateRangePicker2(element, options || {}, callback);
2399
2431
  } else {
2400
- return null;
2432
+ return void 0;
2401
2433
  }
2402
2434
  }
2403
- function getDateRangePicker(target) {
2404
- if (typeof target === "string")
2405
- target = document.querySelector(target);
2406
- return target instanceof HTMLElement ? target._daterangepicker : void 0;
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) {