ngx-bootstrap 10.2.0 → 10.3.0

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.
Files changed (64) hide show
  1. package/README.md +60 -30
  2. package/accordion/package.json +2 -2
  3. package/alert/package.json +2 -2
  4. package/buttons/package.json +1 -1
  5. package/carousel/package.json +2 -2
  6. package/chronos/package.json +1 -1
  7. package/collapse/package.json +1 -1
  8. package/component-loader/package.json +2 -2
  9. package/datepicker/bs-datepicker.config.d.ts +4 -0
  10. package/datepicker/bs-datepicker.css +6 -3
  11. package/datepicker/bs-datepicker.css.map +1 -1
  12. package/datepicker/bs-datepicker.scss +7 -2
  13. package/datepicker/esm2020/bs-datepicker.component.mjs +4 -3
  14. package/datepicker/esm2020/bs-datepicker.config.mjs +5 -1
  15. package/datepicker/esm2020/bs-daterangepicker.component.mjs +4 -3
  16. package/datepicker/fesm2015/ngx-bootstrap-datepicker.mjs +13 -7
  17. package/datepicker/fesm2015/ngx-bootstrap-datepicker.mjs.map +1 -1
  18. package/datepicker/fesm2020/ngx-bootstrap-datepicker.mjs +10 -4
  19. package/datepicker/fesm2020/ngx-bootstrap-datepicker.mjs.map +1 -1
  20. package/datepicker/package.json +5 -5
  21. package/dropdown/package.json +2 -2
  22. package/focus-trap/package.json +1 -1
  23. package/locale/package.json +2 -2
  24. package/mini-ngrx/package.json +1 -1
  25. package/modal/bs-modal.service.d.ts +1 -0
  26. package/modal/esm2020/bs-modal.service.mjs +7 -1
  27. package/modal/esm2020/modal-container.component.mjs +7 -1
  28. package/modal/esm2020/modal.directive.mjs +5 -1
  29. package/modal/fesm2015/ngx-bootstrap-modal.mjs +31 -17
  30. package/modal/fesm2015/ngx-bootstrap-modal.mjs.map +1 -1
  31. package/modal/fesm2020/ngx-bootstrap-modal.mjs +31 -17
  32. package/modal/fesm2020/ngx-bootstrap-modal.mjs.map +1 -1
  33. package/modal/modal-container.component.d.ts +1 -0
  34. package/modal/modal.directive.d.ts +1 -0
  35. package/modal/package.json +3 -3
  36. package/package.json +1 -1
  37. package/pagination/package.json +1 -1
  38. package/popover/esm2020/popover-container.component.mjs +4 -4
  39. package/popover/fesm2015/ngx-bootstrap-popover.mjs +3 -3
  40. package/popover/fesm2015/ngx-bootstrap-popover.mjs.map +1 -1
  41. package/popover/fesm2020/ngx-bootstrap-popover.mjs +3 -3
  42. package/popover/fesm2020/ngx-bootstrap-popover.mjs.map +1 -1
  43. package/popover/package.json +4 -4
  44. package/positioning/package.json +2 -2
  45. package/progressbar/package.json +1 -1
  46. package/rating/package.json +1 -1
  47. package/schematics/utils/current_dependency_versions.json +2 -2
  48. package/sortable/package.json +1 -1
  49. package/tabs/package.json +1 -1
  50. package/timepicker/package.json +2 -2
  51. package/tooltip/esm2020/tooltip-container.component.mjs +3 -3
  52. package/tooltip/fesm2015/ngx-bootstrap-tooltip.mjs +2 -2
  53. package/tooltip/fesm2015/ngx-bootstrap-tooltip.mjs.map +1 -1
  54. package/tooltip/fesm2020/ngx-bootstrap-tooltip.mjs +2 -2
  55. package/tooltip/fesm2020/ngx-bootstrap-tooltip.mjs.map +1 -1
  56. package/tooltip/package.json +4 -4
  57. package/typeahead/package.json +3 -3
  58. package/utils/esm2020/triggers.mjs +5 -3
  59. package/utils/esm2020/utils.class.mjs +3 -3
  60. package/utils/fesm2015/ngx-bootstrap-utils.mjs +6 -4
  61. package/utils/fesm2015/ngx-bootstrap-utils.mjs.map +1 -1
  62. package/utils/fesm2020/ngx-bootstrap-utils.mjs +6 -4
  63. package/utils/fesm2020/ngx-bootstrap-utils.mjs.map +1 -1
  64. package/utils/package.json +1 -1
@@ -1,8 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, InjectionToken, Component, HostListener, EventEmitter, Directive, Optional, Inject, Input, Output, NgModule } from '@angular/core';
3
+ import { document, Utils, window as window$1 } from 'ngx-bootstrap/utils';
3
4
  import * as i2 from 'ngx-bootstrap/focus-trap';
4
5
  import { FocusTrapModule } from 'ngx-bootstrap/focus-trap';
5
- import { Utils, document as document$1, window as window$1 } from 'ngx-bootstrap/utils';
6
6
  import * as i1 from 'ngx-bootstrap/component-loader';
7
7
  import { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';
8
8
  import { PositioningService } from 'ngx-bootstrap/positioning';
@@ -84,11 +84,13 @@ class ModalContainerComponent {
84
84
  this._renderer = _renderer;
85
85
  this.isShown = false;
86
86
  this.isAnimated = false;
87
+ this._focusEl = null;
87
88
  this.isModalHiding = false;
88
89
  this.clickStartedInContent = false;
89
90
  this.config = Object.assign({}, options);
90
91
  }
91
92
  ngOnInit() {
93
+ this._focusEl = document.activeElement;
92
94
  if (this.isAnimated) {
93
95
  this._renderer.addClass(this._element.nativeElement, CLASS_NAME.FADE);
94
96
  }
@@ -168,6 +170,9 @@ class ModalContainerComponent {
168
170
  }
169
171
  this.bsModalService?.hide(this.config.id);
170
172
  this.isModalHiding = false;
173
+ if (this._focusEl) {
174
+ this._focusEl.focus();
175
+ }
171
176
  }, this.isAnimated ? TRANSITION_DURATIONS.MODAL : 0);
172
177
  }
173
178
  }
@@ -294,6 +299,7 @@ class ModalDirective {
294
299
  this.timerRmBackDrop = 0;
295
300
  this.isNested = false;
296
301
  this.clickStartedInContent = false;
302
+ this._focusEl = null;
297
303
  this._backdrop = clf.createLoader(_element, _viewContainerRef, _renderer);
298
304
  this._config = modalDefaultOption || modalConfigDefaults;
299
305
  }
@@ -366,13 +372,13 @@ class ModalDirective {
366
372
  this._isShown = true;
367
373
  this.checkScrollbar();
368
374
  this.setScrollbar();
369
- if (document$1 && document$1.body) {
370
- if (document$1.body.classList.contains(CLASS_NAME.OPEN)) {
375
+ if (document && document.body) {
376
+ if (document.body.classList.contains(CLASS_NAME.OPEN)) {
371
377
  this.isNested = true;
372
378
  }
373
379
  else {
374
- this._renderer.addClass(document$1.body, CLASS_NAME.OPEN);
375
- this._renderer.setStyle(document$1.body, 'overflow-y', 'hidden');
380
+ this._renderer.addClass(document.body, CLASS_NAME.OPEN);
381
+ this._renderer.setStyle(document.body, 'overflow-y', 'hidden');
376
382
  }
377
383
  }
378
384
  this.showBackdrop(() => {
@@ -410,6 +416,9 @@ class ModalDirective {
410
416
  else {
411
417
  this.hideModal();
412
418
  }
419
+ if (this._focusEl) {
420
+ this._focusEl.focus();
421
+ }
413
422
  }
414
423
  getConfig(config) {
415
424
  return Object.assign({}, this._config, config);
@@ -423,8 +432,8 @@ class ModalDirective {
423
432
  if (!this._element.nativeElement.parentNode ||
424
433
  this._element.nativeElement.parentNode.nodeType !== Node.ELEMENT_NODE) {
425
434
  // don't move modals dom position
426
- if (document$1 && document$1.body) {
427
- document$1.body.appendChild(this._element.nativeElement);
435
+ if (document && document.body) {
436
+ document.body.appendChild(this._element.nativeElement);
428
437
  }
429
438
  }
430
439
  this._renderer.setAttribute(this._element.nativeElement, 'aria-hidden', 'false');
@@ -454,9 +463,9 @@ class ModalDirective {
454
463
  this._renderer.setStyle(this._element.nativeElement, 'display', 'none');
455
464
  this.showBackdrop(() => {
456
465
  if (!this.isNested) {
457
- if (document$1 && document$1.body) {
458
- this._renderer.removeClass(document$1.body, CLASS_NAME.OPEN);
459
- this._renderer.setStyle(document$1.body, 'overflow-y', '');
466
+ if (document && document.body) {
467
+ this._renderer.removeClass(document.body, CLASS_NAME.OPEN);
468
+ this._renderer.setStyle(document.body, 'overflow-y', '');
460
469
  }
461
470
  this.resetScrollbar();
462
471
  }
@@ -550,31 +559,31 @@ class ModalDirective {
550
559
  /** Scroll bar tricks */
551
560
  /** @internal */
552
561
  checkScrollbar() {
553
- this.isBodyOverflowing = document$1.body.clientWidth < window$1.innerWidth;
562
+ this.isBodyOverflowing = document.body.clientWidth < window$1.innerWidth;
554
563
  this.scrollbarWidth = this.getScrollbarWidth();
555
564
  }
556
565
  setScrollbar() {
557
- if (!document$1) {
566
+ if (!document) {
558
567
  return;
559
568
  }
560
569
  this.originalBodyPadding = parseInt(window$1
561
- .getComputedStyle(document$1.body)
570
+ .getComputedStyle(document.body)
562
571
  .getPropertyValue('padding-right') || 0, 10);
563
572
  if (this.isBodyOverflowing) {
564
- document$1.body.style.paddingRight = `${this.originalBodyPadding +
573
+ document.body.style.paddingRight = `${this.originalBodyPadding +
565
574
  this.scrollbarWidth}px`;
566
575
  }
567
576
  }
568
577
  resetScrollbar() {
569
- document$1.body.style.paddingRight = `${this.originalBodyPadding}px`;
578
+ document.body.style.paddingRight = `${this.originalBodyPadding}px`;
570
579
  }
571
580
  // thx d.walsh
572
581
  getScrollbarWidth() {
573
582
  const scrollDiv = this._renderer.createElement('div');
574
583
  this._renderer.addClass(scrollDiv, CLASS_NAME.SCROLLBAR_MEASURER);
575
- this._renderer.appendChild(document$1.body, scrollDiv);
584
+ this._renderer.appendChild(document.body, scrollDiv);
576
585
  const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
577
- this._renderer.removeChild(document$1.body, scrollDiv);
586
+ this._renderer.removeChild(document.body, scrollDiv);
578
587
  return scrollbarWidth;
579
588
  }
580
589
  }
@@ -628,6 +637,7 @@ class BsModalService {
628
637
  this.scrollbarWidth = 0;
629
638
  this.modalsCount = 0;
630
639
  this.loaders = [];
640
+ this._focusEl = null;
631
641
  this._backdropLoader = this.clf.createLoader();
632
642
  this._renderer = rendererFactory.createRenderer(null, null);
633
643
  this.config = modalDefaultOption ?
@@ -638,6 +648,7 @@ class BsModalService {
638
648
  show(
639
649
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
640
650
  content, config) {
651
+ this._focusEl = document.activeElement;
641
652
  this.modalsCount++;
642
653
  this._createLoaders();
643
654
  // must be different per every show() call
@@ -660,6 +671,9 @@ class BsModalService {
660
671
  this._hideModal(id);
661
672
  this.removeLoaders(id);
662
673
  }, this.config.animated ? TRANSITION_DURATIONS.BACKDROP : 0);
674
+ if (this._focusEl) {
675
+ this._focusEl.focus();
676
+ }
663
677
  }
664
678
  _showBackdrop() {
665
679
  const isBackdropEnabled = this.config.backdrop === true || this.config.backdrop === 'static';