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.
- package/README.md +60 -30
- package/accordion/package.json +2 -2
- package/alert/package.json +2 -2
- package/buttons/package.json +1 -1
- package/carousel/package.json +2 -2
- package/chronos/package.json +1 -1
- package/collapse/package.json +1 -1
- package/component-loader/package.json +2 -2
- package/datepicker/bs-datepicker.config.d.ts +4 -0
- package/datepicker/bs-datepicker.css +6 -3
- package/datepicker/bs-datepicker.css.map +1 -1
- package/datepicker/bs-datepicker.scss +7 -2
- package/datepicker/esm2020/bs-datepicker.component.mjs +4 -3
- package/datepicker/esm2020/bs-datepicker.config.mjs +5 -1
- package/datepicker/esm2020/bs-daterangepicker.component.mjs +4 -3
- package/datepicker/fesm2015/ngx-bootstrap-datepicker.mjs +13 -7
- package/datepicker/fesm2015/ngx-bootstrap-datepicker.mjs.map +1 -1
- package/datepicker/fesm2020/ngx-bootstrap-datepicker.mjs +10 -4
- package/datepicker/fesm2020/ngx-bootstrap-datepicker.mjs.map +1 -1
- package/datepicker/package.json +5 -5
- package/dropdown/package.json +2 -2
- package/focus-trap/package.json +1 -1
- package/locale/package.json +2 -2
- package/mini-ngrx/package.json +1 -1
- package/modal/bs-modal.service.d.ts +1 -0
- package/modal/esm2020/bs-modal.service.mjs +7 -1
- package/modal/esm2020/modal-container.component.mjs +7 -1
- package/modal/esm2020/modal.directive.mjs +5 -1
- package/modal/fesm2015/ngx-bootstrap-modal.mjs +31 -17
- package/modal/fesm2015/ngx-bootstrap-modal.mjs.map +1 -1
- package/modal/fesm2020/ngx-bootstrap-modal.mjs +31 -17
- package/modal/fesm2020/ngx-bootstrap-modal.mjs.map +1 -1
- package/modal/modal-container.component.d.ts +1 -0
- package/modal/modal.directive.d.ts +1 -0
- package/modal/package.json +3 -3
- package/package.json +1 -1
- package/pagination/package.json +1 -1
- package/popover/esm2020/popover-container.component.mjs +4 -4
- package/popover/fesm2015/ngx-bootstrap-popover.mjs +3 -3
- package/popover/fesm2015/ngx-bootstrap-popover.mjs.map +1 -1
- package/popover/fesm2020/ngx-bootstrap-popover.mjs +3 -3
- package/popover/fesm2020/ngx-bootstrap-popover.mjs.map +1 -1
- package/popover/package.json +4 -4
- package/positioning/package.json +2 -2
- package/progressbar/package.json +1 -1
- package/rating/package.json +1 -1
- package/schematics/utils/current_dependency_versions.json +2 -2
- package/sortable/package.json +1 -1
- package/tabs/package.json +1 -1
- package/timepicker/package.json +2 -2
- package/tooltip/esm2020/tooltip-container.component.mjs +3 -3
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.mjs +2 -2
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.mjs.map +1 -1
- package/tooltip/fesm2020/ngx-bootstrap-tooltip.mjs +2 -2
- package/tooltip/fesm2020/ngx-bootstrap-tooltip.mjs.map +1 -1
- package/tooltip/package.json +4 -4
- package/typeahead/package.json +3 -3
- package/utils/esm2020/triggers.mjs +5 -3
- package/utils/esm2020/utils.class.mjs +3 -3
- package/utils/fesm2015/ngx-bootstrap-utils.mjs +6 -4
- package/utils/fesm2015/ngx-bootstrap-utils.mjs.map +1 -1
- package/utils/fesm2020/ngx-bootstrap-utils.mjs +6 -4
- package/utils/fesm2020/ngx-bootstrap-utils.mjs.map +1 -1
- 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
|
370
|
-
if (document
|
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
|
375
|
-
this._renderer.setStyle(document
|
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
|
427
|
-
document
|
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
|
458
|
-
this._renderer.removeClass(document
|
459
|
-
this._renderer.setStyle(document
|
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
|
562
|
+
this.isBodyOverflowing = document.body.clientWidth < window$1.innerWidth;
|
554
563
|
this.scrollbarWidth = this.getScrollbarWidth();
|
555
564
|
}
|
556
565
|
setScrollbar() {
|
557
|
-
if (!document
|
566
|
+
if (!document) {
|
558
567
|
return;
|
559
568
|
}
|
560
569
|
this.originalBodyPadding = parseInt(window$1
|
561
|
-
.getComputedStyle(document
|
570
|
+
.getComputedStyle(document.body)
|
562
571
|
.getPropertyValue('padding-right') || 0, 10);
|
563
572
|
if (this.isBodyOverflowing) {
|
564
|
-
document
|
573
|
+
document.body.style.paddingRight = `${this.originalBodyPadding +
|
565
574
|
this.scrollbarWidth}px`;
|
566
575
|
}
|
567
576
|
}
|
568
577
|
resetScrollbar() {
|
569
|
-
document
|
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
|
584
|
+
this._renderer.appendChild(document.body, scrollDiv);
|
576
585
|
const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
577
|
-
this._renderer.removeChild(document
|
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';
|