ngx-bootstrap 10.2.1 → 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/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/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 +1 -1
- package/sortable/package.json +1 -1
- package/tabs/package.json +1 -1
- package/timepicker/package.json +2 -2
- package/tooltip/package.json +4 -4
- package/typeahead/package.json +3 -3
- package/utils/esm2020/triggers.mjs +5 -3
- package/utils/fesm2015/ngx-bootstrap-utils.mjs +4 -2
- package/utils/fesm2015/ngx-bootstrap-utils.mjs.map +1 -1
- package/utils/fesm2020/ngx-bootstrap-utils.mjs +4 -2
- 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
|
}
|
@@ -172,6 +174,9 @@ class ModalContainerComponent {
|
|
172
174
|
}
|
173
175
|
(_b = this.bsModalService) === null || _b === void 0 ? void 0 : _b.hide(this.config.id);
|
174
176
|
this.isModalHiding = false;
|
177
|
+
if (this._focusEl) {
|
178
|
+
this._focusEl.focus();
|
179
|
+
}
|
175
180
|
}, this.isAnimated ? TRANSITION_DURATIONS.MODAL : 0);
|
176
181
|
}
|
177
182
|
}
|
@@ -298,6 +303,7 @@ class ModalDirective {
|
|
298
303
|
this.timerRmBackDrop = 0;
|
299
304
|
this.isNested = false;
|
300
305
|
this.clickStartedInContent = false;
|
306
|
+
this._focusEl = null;
|
301
307
|
this._backdrop = clf.createLoader(_element, _viewContainerRef, _renderer);
|
302
308
|
this._config = modalDefaultOption || modalConfigDefaults;
|
303
309
|
}
|
@@ -370,13 +376,13 @@ class ModalDirective {
|
|
370
376
|
this._isShown = true;
|
371
377
|
this.checkScrollbar();
|
372
378
|
this.setScrollbar();
|
373
|
-
if (document
|
374
|
-
if (document
|
379
|
+
if (document && document.body) {
|
380
|
+
if (document.body.classList.contains(CLASS_NAME.OPEN)) {
|
375
381
|
this.isNested = true;
|
376
382
|
}
|
377
383
|
else {
|
378
|
-
this._renderer.addClass(document
|
379
|
-
this._renderer.setStyle(document
|
384
|
+
this._renderer.addClass(document.body, CLASS_NAME.OPEN);
|
385
|
+
this._renderer.setStyle(document.body, 'overflow-y', 'hidden');
|
380
386
|
}
|
381
387
|
}
|
382
388
|
this.showBackdrop(() => {
|
@@ -414,6 +420,9 @@ class ModalDirective {
|
|
414
420
|
else {
|
415
421
|
this.hideModal();
|
416
422
|
}
|
423
|
+
if (this._focusEl) {
|
424
|
+
this._focusEl.focus();
|
425
|
+
}
|
417
426
|
}
|
418
427
|
getConfig(config) {
|
419
428
|
return Object.assign({}, this._config, config);
|
@@ -427,8 +436,8 @@ class ModalDirective {
|
|
427
436
|
if (!this._element.nativeElement.parentNode ||
|
428
437
|
this._element.nativeElement.parentNode.nodeType !== Node.ELEMENT_NODE) {
|
429
438
|
// don't move modals dom position
|
430
|
-
if (document
|
431
|
-
document
|
439
|
+
if (document && document.body) {
|
440
|
+
document.body.appendChild(this._element.nativeElement);
|
432
441
|
}
|
433
442
|
}
|
434
443
|
this._renderer.setAttribute(this._element.nativeElement, 'aria-hidden', 'false');
|
@@ -458,9 +467,9 @@ class ModalDirective {
|
|
458
467
|
this._renderer.setStyle(this._element.nativeElement, 'display', 'none');
|
459
468
|
this.showBackdrop(() => {
|
460
469
|
if (!this.isNested) {
|
461
|
-
if (document
|
462
|
-
this._renderer.removeClass(document
|
463
|
-
this._renderer.setStyle(document
|
470
|
+
if (document && document.body) {
|
471
|
+
this._renderer.removeClass(document.body, CLASS_NAME.OPEN);
|
472
|
+
this._renderer.setStyle(document.body, 'overflow-y', '');
|
464
473
|
}
|
465
474
|
this.resetScrollbar();
|
466
475
|
}
|
@@ -554,31 +563,31 @@ class ModalDirective {
|
|
554
563
|
/** Scroll bar tricks */
|
555
564
|
/** @internal */
|
556
565
|
checkScrollbar() {
|
557
|
-
this.isBodyOverflowing = document
|
566
|
+
this.isBodyOverflowing = document.body.clientWidth < window$1.innerWidth;
|
558
567
|
this.scrollbarWidth = this.getScrollbarWidth();
|
559
568
|
}
|
560
569
|
setScrollbar() {
|
561
|
-
if (!document
|
570
|
+
if (!document) {
|
562
571
|
return;
|
563
572
|
}
|
564
573
|
this.originalBodyPadding = parseInt(window$1
|
565
|
-
.getComputedStyle(document
|
574
|
+
.getComputedStyle(document.body)
|
566
575
|
.getPropertyValue('padding-right') || 0, 10);
|
567
576
|
if (this.isBodyOverflowing) {
|
568
|
-
document
|
577
|
+
document.body.style.paddingRight = `${this.originalBodyPadding +
|
569
578
|
this.scrollbarWidth}px`;
|
570
579
|
}
|
571
580
|
}
|
572
581
|
resetScrollbar() {
|
573
|
-
document
|
582
|
+
document.body.style.paddingRight = `${this.originalBodyPadding}px`;
|
574
583
|
}
|
575
584
|
// thx d.walsh
|
576
585
|
getScrollbarWidth() {
|
577
586
|
const scrollDiv = this._renderer.createElement('div');
|
578
587
|
this._renderer.addClass(scrollDiv, CLASS_NAME.SCROLLBAR_MEASURER);
|
579
|
-
this._renderer.appendChild(document
|
588
|
+
this._renderer.appendChild(document.body, scrollDiv);
|
580
589
|
const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
581
|
-
this._renderer.removeChild(document
|
590
|
+
this._renderer.removeChild(document.body, scrollDiv);
|
582
591
|
return scrollbarWidth;
|
583
592
|
}
|
584
593
|
}
|
@@ -634,6 +643,7 @@ class BsModalService {
|
|
634
643
|
this.scrollbarWidth = 0;
|
635
644
|
this.modalsCount = 0;
|
636
645
|
this.loaders = [];
|
646
|
+
this._focusEl = null;
|
637
647
|
this._backdropLoader = this.clf.createLoader();
|
638
648
|
this._renderer = rendererFactory.createRenderer(null, null);
|
639
649
|
this.config = modalDefaultOption ?
|
@@ -644,6 +654,7 @@ class BsModalService {
|
|
644
654
|
show(
|
645
655
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
646
656
|
content, config) {
|
657
|
+
this._focusEl = document.activeElement;
|
647
658
|
this.modalsCount++;
|
648
659
|
this._createLoaders();
|
649
660
|
// must be different per every show() call
|
@@ -666,6 +677,9 @@ class BsModalService {
|
|
666
677
|
this._hideModal(id);
|
667
678
|
this.removeLoaders(id);
|
668
679
|
}, this.config.animated ? TRANSITION_DURATIONS.BACKDROP : 0);
|
680
|
+
if (this._focusEl) {
|
681
|
+
this._focusEl.focus();
|
682
|
+
}
|
669
683
|
}
|
670
684
|
_showBackdrop() {
|
671
685
|
const isBackdropEnabled = this.config.backdrop === true || this.config.backdrop === 'static';
|