@impartner/design-components 1.0.3 → 1.0.5

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.
@@ -3561,13 +3561,17 @@ class ModalComponent {
3561
3561
  * Event emitted when the Modal content is accepted.
3562
3562
  */
3563
3563
  this.accept = new EventEmitter();
3564
- this._interactableId = this._interactionService.add(this);
3565
3564
  }
3566
3565
  /**
3567
3566
  * Determines if the Modal should be shown immediately.
3568
3567
  */
3569
3568
  set show(show) {
3570
- this._show = show;
3569
+ if (show) {
3570
+ this.open();
3571
+ }
3572
+ else {
3573
+ this.close();
3574
+ }
3571
3575
  }
3572
3576
  get interactableId() {
3573
3577
  return this._interactableId;
@@ -3591,6 +3595,7 @@ class ModalComponent {
3591
3595
  return !this.titleText && !this.dismissable;
3592
3596
  }
3593
3597
  ngOnInit() {
3598
+ this._interactableId = this._interactionService.add(this);
3594
3599
  if (this.dismissable === undefined && this.theme === ModalTheme.Working) {
3595
3600
  this.dismissable = true;
3596
3601
  }
@@ -3608,7 +3613,7 @@ class ModalComponent {
3608
3613
  !!((_c = (_b = (_a = this.dismissEl) === null || _a === void 0 ? void 0 : _a.nativeElement) === null || _b === void 0 ? void 0 : _b.firstChild) === null || _c === void 0 ? void 0 : _c.disabled)) {
3609
3614
  return;
3610
3615
  }
3611
- this._show = false;
3616
+ this.close();
3612
3617
  this.dismiss.emit(event);
3613
3618
  }
3614
3619
  handleDeny(event) {
@@ -3616,29 +3621,32 @@ class ModalComponent {
3616
3621
  if (!!((_c = (_b = (_a = this.denyEl) === null || _a === void 0 ? void 0 : _a.nativeElement) === null || _b === void 0 ? void 0 : _b.firstChild) === null || _c === void 0 ? void 0 : _c.disabled)) {
3617
3622
  return;
3618
3623
  }
3619
- this._show = false;
3624
+ this.close();
3620
3625
  this.deny.emit(event);
3621
3626
  }
3622
3627
  handleAccept(event) {
3623
3628
  var _a, _b, _c;
3624
- console.log('this.acceptEl', this.acceptEl);
3625
3629
  if (!!((_c = (_b = (_a = this.acceptEl) === null || _a === void 0 ? void 0 : _a.nativeElement) === null || _b === void 0 ? void 0 : _b.firstChild) === null || _c === void 0 ? void 0 : _c.disabled)) {
3626
3630
  return;
3627
3631
  }
3628
- this._show = false;
3632
+ this.close();
3629
3633
  this.accept.emit(event);
3630
3634
  }
3631
3635
  /**
3632
- * Opens/shows the modal programmatically.
3636
+ * Opens/shows the modal. Can be used programmatically.
3633
3637
  */
3634
3638
  open() {
3639
+ if (this.backdrop) {
3640
+ this._interactionService.queueBackdrop(this.interactableId);
3641
+ }
3635
3642
  this._show = true;
3636
3643
  }
3637
3644
  /**
3638
- * Closes/hides the modal programmatically.
3645
+ * Closes/hides the modal. Can be used programmatically.
3639
3646
  */
3640
3647
  close() {
3641
3648
  this._show = false;
3649
+ this._interactionService.dequeueBackdrop(this.interactableId);
3642
3650
  }
3643
3651
  }
3644
3652
  ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ModalComponent, deps: [{ token: InteractionService }], target: i0.ɵɵFactoryTarget.Component });
@@ -3872,7 +3880,6 @@ class DropdownComponent {
3872
3880
  */
3873
3881
  this.buttonClick = new EventEmitter();
3874
3882
  this.classBtnGroup = true;
3875
- this._interactableId = this._interactionService.add(this);
3876
3883
  }
3877
3884
  get classDropdown() {
3878
3885
  return this.position === 'down';
@@ -3903,6 +3910,9 @@ class DropdownComponent {
3903
3910
  get shown() {
3904
3911
  return this.valid && this.show;
3905
3912
  }
3913
+ ngOnInit() {
3914
+ this._interactableId = this._interactionService.add(this);
3915
+ }
3906
3916
  ngOnDestroy() {
3907
3917
  this._interactionService.remove(this.interactableId);
3908
3918
  this._interactableId = 0;
@@ -7606,22 +7616,24 @@ class PaginationComponent {
7606
7616
  return Math.ceil(this.total / this.perPage);
7607
7617
  }
7608
7618
  get firstPageResult() {
7609
- if (this.total < 1 || this.page < 1 || this.perPage < 1) {
7619
+ const page = this._getPageClamped();
7620
+ if (this.total < 1 || page < 1 || this.perPage < 1) {
7610
7621
  return 0;
7611
7622
  }
7612
- if (this.page === 1) {
7623
+ if (page === 1) {
7613
7624
  return 1;
7614
7625
  }
7615
- if (this.page > Math.ceil(this.total / this.perPage)) {
7626
+ if (page > Math.ceil(this.total / this.perPage)) {
7616
7627
  return this.total;
7617
7628
  }
7618
- return (this.page - 1) * this.perPage + 1;
7629
+ return (page - 1) * this.perPage + 1;
7619
7630
  }
7620
7631
  get lastPageResult() {
7621
- if (this.total <= 0 || this.page < 1 || this.perPage < 1) {
7632
+ const page = this._getPageClamped();
7633
+ if (this.total <= 0 || page < 1 || this.perPage < 1) {
7622
7634
  return 0;
7623
7635
  }
7624
- if (this.page === 1) {
7636
+ if (page === 1) {
7625
7637
  if (this.total < this.perPage) {
7626
7638
  return this.total;
7627
7639
  }
@@ -7629,26 +7641,38 @@ class PaginationComponent {
7629
7641
  return this.perPage;
7630
7642
  }
7631
7643
  }
7632
- if (this.total < this.perPage * this.page) {
7644
+ if (this.total < this.perPage * page) {
7633
7645
  return this.total;
7634
7646
  }
7635
7647
  else {
7636
- return this.perPage * this.page;
7648
+ return this.perPage * page;
7649
+ }
7650
+ }
7651
+ _getPageClamped(page) {
7652
+ page = Number(page || this.page || 0);
7653
+ if (isNaN(page) || page < 1) {
7654
+ return 1;
7637
7655
  }
7656
+ if (page > this.totalPages) {
7657
+ return this.totalPages;
7658
+ }
7659
+ return page;
7638
7660
  }
7639
7661
  goToPreviousPage() {
7640
- if (this.page <= 1) {
7662
+ const page = this._getPageClamped();
7663
+ if (page <= 1) {
7641
7664
  return;
7642
7665
  }
7643
- const previousPage = this.page - 1;
7666
+ const previousPage = page - 1;
7644
7667
  this.page = previousPage;
7645
7668
  this.goToPage.emit(previousPage);
7646
7669
  }
7647
7670
  goToNextPage() {
7648
- if (this.page >= this.totalPages) {
7671
+ const page = this._getPageClamped();
7672
+ if (page >= this.totalPages) {
7649
7673
  return;
7650
7674
  }
7651
- const nextPage = this.page + 1;
7675
+ const nextPage = page + 1;
7652
7676
  this.page = nextPage;
7653
7677
  this.goToPage.emit(nextPage);
7654
7678
  }
@@ -7656,25 +7680,20 @@ class PaginationComponent {
7656
7680
  this.goToExactPage(target === null || target === void 0 ? void 0 : target.value);
7657
7681
  }
7658
7682
  goToExactPage(page) {
7659
- if (!page) {
7660
- return;
7661
- }
7662
- let allowedPageNumber = Number(page);
7663
- if (allowedPageNumber < 0) {
7664
- allowedPageNumber = 1;
7665
- }
7666
- if (allowedPageNumber > this.totalPages) {
7667
- allowedPageNumber = this.totalPages;
7668
- }
7669
- this.page = allowedPageNumber;
7670
- this.goToPage.emit(allowedPageNumber);
7683
+ this.page = this._getPageClamped(page);
7684
+ this.goToPage.emit(this.page);
7685
+ }
7686
+ preventDefaultAndBlur(event) {
7687
+ // prevents PRM form submit
7688
+ event.preventDefault();
7689
+ event.target.blur();
7671
7690
  }
7672
7691
  }
7673
7692
  PaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7674
- PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: PaginationComponent, selector: "impdc-pagination, div[impdc-pagination]", inputs: { page: "page", perPage: "perPage", total: "total", summary: "summary" }, outputs: { goToPage: "goToPage" }, ngImport: i0, template: "<div class=\"pagination-container\">\n <div class=\"mobile-pagination\">\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page <= 1\"\n (click)=\"goToPreviousPage()\">\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page === totalPages\"\n (click)=\"goToNextPage()\">\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n </div>\n\n <div class=\"desktop-pagination\">\n <div>\n <span class=\"summary\" [innerHTML]=\"summary\"></span>\n </div>\n <div class=\"pagination-actions\">\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"First Page\"\n class=\"pagination-first-last-btns\"\n (click)=\"goToExactPage(1)\"\n [disabled]=\"page <= 1\">\n <i class=\"fas fa-chevron-left first\"></i>\n <i class=\"fas fa-chevron-left\"></i>\n <!-- 1 -->\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"previous\"\n aria-label=\"Previous\"\n (click)=\"goToPreviousPage()\"\n [disabled]=\"page <= 1\">\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n <div class=\"page-change\">\n <input\n impdcInput\n maxlength=\"4\"\n [value]=\"page\"\n (blur)=\"goToExactPageFromEvent($event)\" />\n <span class=\"total-pages\"> / {{ totalPages }} </span>\n </div>\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"Next\"\n (click)=\"goToNextPage()\"\n [disabled]=\"page === totalPages\">\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"pagination-first-last-btns\"\n aria-label=\"Last Page\"\n (click)=\"goToExactPage(totalPages)\"\n [disabled]=\"page === totalPages\">\n <i class=\"fas fa-chevron-right\"></i>\n <i class=\"fas fa-chevron-right last\"></i>\n <!-- {{ totalPages }} -->\n </button>\n </div>\n </div>\n</div>\n", styles: [".pagination-container{background-color:var(--impd-color-white);padding:var(--impd-size-3) var(--impd-size-6);gap:1rem;color:var(--impd-color-gray-700, #374151)}@media (min-width: 640px){.pagination-container{padding-left:var(--impd-size-6);padding-right:var(--impd-size-6)}}.mobile-pagination{display:flex;gap:2rem;justify-content:space-between;align-items:center}@media (min-width: 640px){.mobile-pagination{display:none}}.desktop-pagination{display:none}@media (min-width: 640px){.desktop-pagination{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between;gap:2rem;flex-flow:wrap}}.summary{font-size:var(--impd-font-size-sm);line-height:var(--impd-size-5);font-weight:400;color:var(--impd-color-gray-700)}.pagination-actions{display:flex;flex-direction:row;gap:.4rem;flex-flow:wrap}.pagination-actions .first{margin-right:-1.2rem}.pagination-actions .last{margin-left:-1.2rem}.page-change{display:flex;flex-direction:row;align-items:center;gap:.4rem;font-size:var(--impd-size-3_5, 1.4rem)}.page-change .form-control{min-width:4.275rem;max-width:6.3rem;text-align:center}.page-change .total-pages{padding:0 1.2rem}.pagination-first-last-btns{padding-left:1.325rem;padding-right:1.325rem}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[impdcButton]", inputs: ["type", "theme", "text", "disabled", "titleText", "ariaLabel"] }, { kind: "directive", type: InputDirective, selector: "input[impdcInput], textarea[impdcInput], select[impdcNativeSelect]", inputs: ["disabled", "id", "type", "required", "readonly", "errorStateMatcher", "value"], exportAs: ["impdcInput"] }] });
7693
+ PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: PaginationComponent, selector: "impdc-pagination, div[impdc-pagination]", inputs: { page: "page", perPage: "perPage", total: "total", summary: "summary" }, outputs: { goToPage: "goToPage" }, ngImport: i0, template: "<div class=\"pagination-container\">\n <div class=\"mobile-pagination\">\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page <= 1\"\n (click)=\"goToPreviousPage()\">\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page === totalPages\"\n (click)=\"goToNextPage()\">\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n </div>\n\n <div class=\"desktop-pagination\">\n <div>\n <span class=\"summary\" [innerHTML]=\"summary\"></span>\n </div>\n <div class=\"pagination-actions\">\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"First Page\"\n class=\"pagination-first-last-btns\"\n (click)=\"goToExactPage(1)\"\n [disabled]=\"page <= 1\">\n <i class=\"fas fa-chevron-left first\"></i>\n <i class=\"fas fa-chevron-left\"></i>\n <!-- 1 -->\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"previous\"\n aria-label=\"Previous\"\n (click)=\"goToPreviousPage()\"\n [disabled]=\"page <= 1\">\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n <div class=\"page-change\">\n <input\n impdcInput\n [(ngModel)]=\"page\"\n maxlength=\"4\"\n (blur)=\"goToExactPageFromEvent($event)\"\n (keydown.enter)=\"preventDefaultAndBlur($event)\" />\n <span class=\"total-pages\"> / {{ totalPages }} </span>\n </div>\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"Next\"\n (click)=\"goToNextPage()\"\n [disabled]=\"page >= totalPages\">\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"pagination-first-last-btns\"\n aria-label=\"Last Page\"\n (click)=\"goToExactPage(totalPages)\"\n [disabled]=\"page === totalPages\">\n <i class=\"fas fa-chevron-right\"></i>\n <i class=\"fas fa-chevron-right last\"></i>\n <!-- {{ totalPages }} -->\n </button>\n </div>\n </div>\n</div>\n", styles: [".pagination-container{background-color:var(--impd-color-white);padding:var(--impd-size-3) var(--impd-size-6);gap:1rem;color:var(--impd-color-gray-700, #374151)}@media (min-width: 640px){.pagination-container{padding-left:var(--impd-size-6);padding-right:var(--impd-size-6)}}.mobile-pagination{display:flex;gap:2rem;justify-content:space-between;align-items:center}@media (min-width: 640px){.mobile-pagination{display:none}}.desktop-pagination{display:none}@media (min-width: 640px){.desktop-pagination{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between;gap:2rem;flex-flow:wrap}}.summary{font-size:var(--impd-font-size-sm);line-height:var(--impd-size-5);font-weight:400;color:var(--impd-color-gray-700)}.pagination-actions{display:flex;flex-direction:row;gap:.4rem;flex-flow:wrap}.pagination-actions .first{margin-right:-1.2rem}.pagination-actions .last{margin-left:-1.2rem}.page-change{display:flex;flex-direction:row;align-items:center;gap:.4rem;font-size:var(--impd-size-3_5, 1.4rem)}.page-change .form-control{min-width:4.275rem;max-width:6.3rem;text-align:center}.page-change .total-pages{padding:0 1.2rem}.pagination-first-last-btns{padding-left:1.325rem;padding-right:1.325rem}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[impdcButton]", inputs: ["type", "theme", "text", "disabled", "titleText", "ariaLabel"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: InputDirective, selector: "input[impdcInput], textarea[impdcInput], select[impdcNativeSelect]", inputs: ["disabled", "id", "type", "required", "readonly", "errorStateMatcher", "value"], exportAs: ["impdcInput"] }] });
7675
7694
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PaginationComponent, decorators: [{
7676
7695
  type: Component,
7677
- args: [{ selector: 'impdc-pagination, div[impdc-pagination]', template: "<div class=\"pagination-container\">\n <div class=\"mobile-pagination\">\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page <= 1\"\n (click)=\"goToPreviousPage()\">\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page === totalPages\"\n (click)=\"goToNextPage()\">\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n </div>\n\n <div class=\"desktop-pagination\">\n <div>\n <span class=\"summary\" [innerHTML]=\"summary\"></span>\n </div>\n <div class=\"pagination-actions\">\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"First Page\"\n class=\"pagination-first-last-btns\"\n (click)=\"goToExactPage(1)\"\n [disabled]=\"page <= 1\">\n <i class=\"fas fa-chevron-left first\"></i>\n <i class=\"fas fa-chevron-left\"></i>\n <!-- 1 -->\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"previous\"\n aria-label=\"Previous\"\n (click)=\"goToPreviousPage()\"\n [disabled]=\"page <= 1\">\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n <div class=\"page-change\">\n <input\n impdcInput\n maxlength=\"4\"\n [value]=\"page\"\n (blur)=\"goToExactPageFromEvent($event)\" />\n <span class=\"total-pages\"> / {{ totalPages }} </span>\n </div>\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"Next\"\n (click)=\"goToNextPage()\"\n [disabled]=\"page === totalPages\">\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"pagination-first-last-btns\"\n aria-label=\"Last Page\"\n (click)=\"goToExactPage(totalPages)\"\n [disabled]=\"page === totalPages\">\n <i class=\"fas fa-chevron-right\"></i>\n <i class=\"fas fa-chevron-right last\"></i>\n <!-- {{ totalPages }} -->\n </button>\n </div>\n </div>\n</div>\n", styles: [".pagination-container{background-color:var(--impd-color-white);padding:var(--impd-size-3) var(--impd-size-6);gap:1rem;color:var(--impd-color-gray-700, #374151)}@media (min-width: 640px){.pagination-container{padding-left:var(--impd-size-6);padding-right:var(--impd-size-6)}}.mobile-pagination{display:flex;gap:2rem;justify-content:space-between;align-items:center}@media (min-width: 640px){.mobile-pagination{display:none}}.desktop-pagination{display:none}@media (min-width: 640px){.desktop-pagination{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between;gap:2rem;flex-flow:wrap}}.summary{font-size:var(--impd-font-size-sm);line-height:var(--impd-size-5);font-weight:400;color:var(--impd-color-gray-700)}.pagination-actions{display:flex;flex-direction:row;gap:.4rem;flex-flow:wrap}.pagination-actions .first{margin-right:-1.2rem}.pagination-actions .last{margin-left:-1.2rem}.page-change{display:flex;flex-direction:row;align-items:center;gap:.4rem;font-size:var(--impd-size-3_5, 1.4rem)}.page-change .form-control{min-width:4.275rem;max-width:6.3rem;text-align:center}.page-change .total-pages{padding:0 1.2rem}.pagination-first-last-btns{padding-left:1.325rem;padding-right:1.325rem}\n"] }]
7696
+ args: [{ selector: 'impdc-pagination, div[impdc-pagination]', template: "<div class=\"pagination-container\">\n <div class=\"mobile-pagination\">\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page <= 1\"\n (click)=\"goToPreviousPage()\">\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page === totalPages\"\n (click)=\"goToNextPage()\">\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n </div>\n\n <div class=\"desktop-pagination\">\n <div>\n <span class=\"summary\" [innerHTML]=\"summary\"></span>\n </div>\n <div class=\"pagination-actions\">\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"First Page\"\n class=\"pagination-first-last-btns\"\n (click)=\"goToExactPage(1)\"\n [disabled]=\"page <= 1\">\n <i class=\"fas fa-chevron-left first\"></i>\n <i class=\"fas fa-chevron-left\"></i>\n <!-- 1 -->\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"previous\"\n aria-label=\"Previous\"\n (click)=\"goToPreviousPage()\"\n [disabled]=\"page <= 1\">\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n <div class=\"page-change\">\n <input\n impdcInput\n [(ngModel)]=\"page\"\n maxlength=\"4\"\n (blur)=\"goToExactPageFromEvent($event)\"\n (keydown.enter)=\"preventDefaultAndBlur($event)\" />\n <span class=\"total-pages\"> / {{ totalPages }} </span>\n </div>\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"Next\"\n (click)=\"goToNextPage()\"\n [disabled]=\"page >= totalPages\">\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"pagination-first-last-btns\"\n aria-label=\"Last Page\"\n (click)=\"goToExactPage(totalPages)\"\n [disabled]=\"page === totalPages\">\n <i class=\"fas fa-chevron-right\"></i>\n <i class=\"fas fa-chevron-right last\"></i>\n <!-- {{ totalPages }} -->\n </button>\n </div>\n </div>\n</div>\n", styles: [".pagination-container{background-color:var(--impd-color-white);padding:var(--impd-size-3) var(--impd-size-6);gap:1rem;color:var(--impd-color-gray-700, #374151)}@media (min-width: 640px){.pagination-container{padding-left:var(--impd-size-6);padding-right:var(--impd-size-6)}}.mobile-pagination{display:flex;gap:2rem;justify-content:space-between;align-items:center}@media (min-width: 640px){.mobile-pagination{display:none}}.desktop-pagination{display:none}@media (min-width: 640px){.desktop-pagination{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between;gap:2rem;flex-flow:wrap}}.summary{font-size:var(--impd-font-size-sm);line-height:var(--impd-size-5);font-weight:400;color:var(--impd-color-gray-700)}.pagination-actions{display:flex;flex-direction:row;gap:.4rem;flex-flow:wrap}.pagination-actions .first{margin-right:-1.2rem}.pagination-actions .last{margin-left:-1.2rem}.page-change{display:flex;flex-direction:row;align-items:center;gap:.4rem;font-size:var(--impd-size-3_5, 1.4rem)}.page-change .form-control{min-width:4.275rem;max-width:6.3rem;text-align:center}.page-change .total-pages{padding:0 1.2rem}.pagination-first-last-btns{padding-left:1.325rem;padding-right:1.325rem}\n"] }]
7678
7697
  }], propDecorators: { page: [{
7679
7698
  type: Input
7680
7699
  }], perPage: [{
@@ -7691,12 +7710,12 @@ class PaginationModule {
7691
7710
  constructor() { }
7692
7711
  }
7693
7712
  PaginationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PaginationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7694
- PaginationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: PaginationModule, declarations: [PaginationComponent], imports: [CommonModule, ButtonModule, ImpdcFormsModule], exports: [ButtonModule, ImpdcFormsModule, PaginationComponent] });
7695
- PaginationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PaginationModule, imports: [CommonModule, ButtonModule, ImpdcFormsModule, ButtonModule, ImpdcFormsModule] });
7713
+ PaginationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: PaginationModule, declarations: [PaginationComponent], imports: [CommonModule, ButtonModule, FormsModule, ImpdcFormsModule], exports: [ButtonModule, ImpdcFormsModule, PaginationComponent] });
7714
+ PaginationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PaginationModule, imports: [CommonModule, ButtonModule, FormsModule, ImpdcFormsModule, ButtonModule, ImpdcFormsModule] });
7696
7715
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PaginationModule, decorators: [{
7697
7716
  type: NgModule,
7698
7717
  args: [{
7699
- imports: [CommonModule, ButtonModule, ImpdcFormsModule],
7718
+ imports: [CommonModule, ButtonModule, FormsModule, ImpdcFormsModule],
7700
7719
  declarations: [PaginationComponent],
7701
7720
  exports: [ButtonModule, ImpdcFormsModule, PaginationComponent]
7702
7721
  }]
@@ -8423,9 +8442,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
8423
8442
  class InteractionService {
8424
8443
  constructor() {
8425
8444
  this._interactables = [];
8445
+ this._backdropQueue = [];
8426
8446
  }
8427
8447
  get showBackdrop() {
8428
- return this._interactables.some(i => i instanceof ModalComponent && i.shown && i.backdrop);
8448
+ return this._backdropQueue.length > 0;
8429
8449
  }
8430
8450
  registerBackdrop(modalBackdrop) {
8431
8451
  // WARNING: there should only be 1 backdrop component, preferably loaded in the body
@@ -8447,8 +8467,12 @@ class InteractionService {
8447
8467
  }
8448
8468
  }
8449
8469
  add(interactable) {
8450
- if (interactable.interactableId > 0) {
8451
- return interactable.interactableId;
8470
+ const interactableId = interactable.interactableId;
8471
+ if (interactableId > 0) {
8472
+ if (!this._interactables.some(i => i.interactableId === interactableId)) {
8473
+ this._interactables.push(interactable);
8474
+ }
8475
+ return interactableId;
8452
8476
  }
8453
8477
  this._interactables.push(interactable);
8454
8478
  return this._interactables.length;
@@ -8458,6 +8482,7 @@ class InteractionService {
8458
8482
  return;
8459
8483
  }
8460
8484
  this._interactables.splice(interactableId - 1, 1);
8485
+ this.dequeueBackdrop(interactableId);
8461
8486
  }
8462
8487
  toggle(interactable) {
8463
8488
  if (interactable.interactableId <= 0 || interactable.show) {
@@ -8471,6 +8496,17 @@ class InteractionService {
8471
8496
  }
8472
8497
  return true;
8473
8498
  }
8499
+ queueBackdrop(interactableId) {
8500
+ if (!this._backdropQueue.includes(interactableId)) {
8501
+ this._backdropQueue.push(interactableId);
8502
+ }
8503
+ }
8504
+ dequeueBackdrop(interactableId) {
8505
+ const interactableIdIndex = this._backdropQueue.indexOf(interactableId);
8506
+ if (interactableIdIndex !== -1) {
8507
+ this._backdropQueue.splice(interactableIdIndex, 1);
8508
+ }
8509
+ }
8474
8510
  }
8475
8511
  InteractionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: InteractionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
8476
8512
  InteractionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: InteractionService, providedIn: 'root' });