@quadrel-enterprise-ui/qdc-cards 19.1.0 → 20.0.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/esm2022/index.js +3 -0
- package/esm2022/index.js.map +1 -0
- package/esm2022/lib/card/{card.component.mjs → card.component.js} +14 -14
- package/esm2022/lib/card/card.component.js.map +1 -0
- package/esm2022/lib/card/card.model.js +2 -0
- package/esm2022/lib/card/card.model.js.map +1 -0
- package/esm2022/lib/card/card.module.js +23 -0
- package/esm2022/lib/card/card.module.js.map +1 -0
- package/esm2022/lib/card/menu/{card-menu.component.mjs → card-menu.component.js} +4 -4
- package/esm2022/lib/card/menu/card-menu.component.js.map +1 -0
- package/esm2022/lib/card/model/card-actions-config.interface.js +2 -0
- package/esm2022/lib/card/model/card-actions-config.interface.js.map +1 -0
- package/esm2022/lib/card-layout/card-layout.component.js +117 -0
- package/esm2022/lib/card-layout/card-layout.component.js.map +1 -0
- package/esm2022/lib/card-layout/card-layout.model.js +2 -0
- package/esm2022/lib/card-layout/card-layout.model.js.map +1 -0
- package/esm2022/lib/card-layout/card-layout.module.js +25 -0
- package/esm2022/lib/card-layout/card-layout.module.js.map +1 -0
- package/esm2022/lib/card-layout/card-status/card-status-height.directive.js +51 -0
- package/esm2022/lib/card-layout/card-status/card-status-height.directive.js.map +1 -0
- package/esm2022/lib/card-layout/card-status/card-status.component.js +112 -0
- package/esm2022/lib/card-layout/card-status/card-status.component.js.map +1 -0
- package/esm2022/lib/card-layout/card-status/card-status.model.js +2 -0
- package/esm2022/lib/card-layout/card-status/card-status.model.js.map +1 -0
- package/esm2022/lib/card-layout/card-status/pagination/pagination.model.js +2 -0
- package/esm2022/lib/card-layout/card-status/pagination/pagination.model.js.map +1 -0
- package/esm2022/lib/shared/popover/cards-popover.module.js +19 -0
- package/esm2022/lib/shared/popover/cards-popover.module.js.map +1 -0
- package/esm2022/lib/shared/popover/cards-popover.service.js +23 -0
- package/esm2022/lib/shared/popover/cards-popover.service.js.map +1 -0
- package/esm2022/lib/shared/popover/popover/cards-popover.component.js +14 -0
- package/esm2022/lib/shared/popover/popover/cards-popover.component.js.map +1 -0
- package/esm2022/lib/shared/popover/popover-on-click/cards-popover-on-click.directive.js +100 -0
- package/esm2022/lib/shared/popover/popover-on-click/cards-popover-on-click.directive.js.map +1 -0
- package/esm2022/quadrel-enterprise-ui-qdc-cards.js +5 -0
- package/esm2022/quadrel-enterprise-ui-qdc-cards.js.map +1 -0
- package/lib/card/card.component.d.ts +2 -3
- package/lib/card/model/card-actions-config.interface.d.ts +2 -5
- package/lib/card-layout/card-layout.component.d.ts +2 -3
- package/lib/card-layout/card-status/card-status-height.directive.d.ts +1 -2
- package/lib/shared/popover/popover-on-click/cards-popover-on-click.directive.d.ts +2 -4
- package/package.json +10 -10
- package/quadrel-enterprise-ui-qdc-cards.d.ts +5 -0
- package/esm2022/index.mjs +0 -3
- package/esm2022/lib/card/card.model.mjs +0 -2
- package/esm2022/lib/card/card.module.mjs +0 -23
- package/esm2022/lib/card/model/card-actions-config.interface.mjs +0 -2
- package/esm2022/lib/card-layout/card-layout.component.mjs +0 -117
- package/esm2022/lib/card-layout/card-layout.model.mjs +0 -2
- package/esm2022/lib/card-layout/card-layout.module.mjs +0 -25
- package/esm2022/lib/card-layout/card-status/card-status-height.directive.mjs +0 -51
- package/esm2022/lib/card-layout/card-status/card-status.component.mjs +0 -112
- package/esm2022/lib/card-layout/card-status/card-status.model.mjs +0 -2
- package/esm2022/lib/card-layout/card-status/pagination/pagination.model.mjs +0 -2
- package/esm2022/lib/shared/popover/cards-popover.module.mjs +0 -19
- package/esm2022/lib/shared/popover/cards-popover.service.mjs +0 -23
- package/esm2022/lib/shared/popover/popover/cards-popover.component.mjs +0 -14
- package/esm2022/lib/shared/popover/popover-on-click/cards-popover-on-click.directive.mjs +0 -100
- package/esm2022/quadrel-enterprise-ui-qdc-cards.mjs +0 -5
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Component, EventEmitter, HostListener, Input, Output, ViewChild, inject } from '@angular/core';
|
|
2
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "@angular/forms";
|
|
6
|
+
import * as i3 from "@quadrel-enterprise-ui/framework";
|
|
7
|
+
import * as i4 from "../../card/card.component";
|
|
8
|
+
import * as i5 from "@ngx-translate/core";
|
|
9
|
+
export class QdcCardStatusComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.paginationChanged = new EventEmitter();
|
|
12
|
+
this.translate = inject(TranslateService);
|
|
13
|
+
this.isDropdownOpen = false;
|
|
14
|
+
this.hideEntriesLabel = window.innerWidth <= 1600;
|
|
15
|
+
this.defaultPageSizes = [5, 10, 20, 50];
|
|
16
|
+
}
|
|
17
|
+
ngOnInit() {
|
|
18
|
+
if (this.config?.pagination) {
|
|
19
|
+
if (!this.config.pagination.pageSizes || this.config.pagination.pageSizes.length === 0) {
|
|
20
|
+
this.config.pagination.pageSizes = this.defaultPageSizes;
|
|
21
|
+
}
|
|
22
|
+
if (!this.config.pagination.pageSize) {
|
|
23
|
+
this.config.pagination.pageSize = this.config.pagination.pageSizes[0];
|
|
24
|
+
}
|
|
25
|
+
if (this.config.pagination.currentPage == null) {
|
|
26
|
+
this.config.pagination.currentPage = 0;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
get pagedCards() {
|
|
31
|
+
return this.config.cards;
|
|
32
|
+
}
|
|
33
|
+
get pagination() {
|
|
34
|
+
return this.config.pagination;
|
|
35
|
+
}
|
|
36
|
+
goToPage(delta) {
|
|
37
|
+
if (!this.pagination)
|
|
38
|
+
return;
|
|
39
|
+
const newPage = this.pagination.currentPage + delta;
|
|
40
|
+
if (newPage >= 0 && newPage < this.pagination.totalPages) {
|
|
41
|
+
this.pagination.currentPage = newPage; // update current page
|
|
42
|
+
this.pagination.handler(newPage, this.pagination.pageSize);
|
|
43
|
+
this.paginationChanged.emit();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
goToFirstPage() {
|
|
47
|
+
if (this.pagination && this.pagination.currentPage !== 0) {
|
|
48
|
+
this.pagination.currentPage = 0;
|
|
49
|
+
this.pagination.handler(0, this.pagination.pageSize);
|
|
50
|
+
this.paginationChanged.emit();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
goToLastPage() {
|
|
54
|
+
if (!this.pagination)
|
|
55
|
+
return;
|
|
56
|
+
const last = this.pagination.totalPages - 1;
|
|
57
|
+
if (last >= 0 && this.pagination.currentPage !== last) {
|
|
58
|
+
this.pagination.currentPage = last;
|
|
59
|
+
this.pagination.handler(last, this.pagination.pageSize);
|
|
60
|
+
this.paginationChanged.emit();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
onPageSizeChange() {
|
|
64
|
+
if (this.pagination) {
|
|
65
|
+
// ngModel has already updated pageSize here
|
|
66
|
+
const totalPages = Math.ceil(this.pagination.totalElements / this.pagination.pageSize);
|
|
67
|
+
// If the current page is out of range, snap it to the last page
|
|
68
|
+
if (this.pagination.currentPage >= totalPages) {
|
|
69
|
+
this.pagination.currentPage = Math.max(0, totalPages - 1);
|
|
70
|
+
}
|
|
71
|
+
this.pagination.handler(this.pagination.currentPage, this.pagination.pageSize);
|
|
72
|
+
this.paginationChanged.emit();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
toggleDropdownIcon() {
|
|
76
|
+
this.isDropdownOpen = !this.isDropdownOpen;
|
|
77
|
+
}
|
|
78
|
+
onResize() {
|
|
79
|
+
this.hideEntriesLabel = window.innerWidth <= 1600;
|
|
80
|
+
}
|
|
81
|
+
getPaginationInfo() {
|
|
82
|
+
if (!this.pagination)
|
|
83
|
+
return '';
|
|
84
|
+
const total = this.pagination.totalElements;
|
|
85
|
+
const pageSize = this.pagination.pageSize;
|
|
86
|
+
const currentPage = this.pagination.currentPage;
|
|
87
|
+
const start = total === 0 ? 0 : currentPage * pageSize + 1;
|
|
88
|
+
const end = Math.min(start + pageSize - 1, total);
|
|
89
|
+
return this.translate.instant('i18n.qdc-card.status.pagination.service.from.label', {
|
|
90
|
+
start,
|
|
91
|
+
end,
|
|
92
|
+
total
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QdcCardStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
96
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: QdcCardStatusComponent, isStandalone: false, selector: "qdc-card-status", inputs: { config: "config" }, outputs: { paginationChanged: "paginationChanged" }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "cardsContainer", first: true, predicate: ["cardsContainer"], descendants: true }], ngImport: i0, template: "<div class=\"qdc-status__container\">\n <div class=\"qdc-status__header\">\n {{ config.title.i18n | translate }}\n </div>\n\n <div class=\"qdc-status__cards\" #cardsContainer [ngClass]=\"{ empty: !config.cards || config.cards.length === 0 }\">\n @if (!config.cards || config.cards.length === 0) {\n <div class=\"qdc-status_no-cards-message\">\n {{ \"i18n.qdc-cards.status.noCards.label\" | translate | placeholder : \"title\" : (config.title.i18n | translate) }}\n </div>\n } @else { @for (card of pagedCards; track card) {\n <qdc-card [cardConfig]=\"card\"></qdc-card>\n } @if (config.pagination) {\n <div class=\"qdc-status__pagination-row\">\n <div>\n @if (!hideEntriesLabel) {\n <span>\n {{ \"i18n.qdc-card.status.pagination.service.entries.label\" | translate }}\n </span>\n }\n\n <select\n style=\"\n appearance: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n border: 0;\n outline: 0;\n box-shadow: none;\n background: transparent;\n padding-left: 5px;\n font-family: Roboto, Arial, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;\n color: rgb(69, 69, 69);\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 1.3125rem;\n \"\n [(ngModel)]=\"config.pagination.pageSize\"\n (ngModelChange)=\"onPageSizeChange()\"\n (click)=\"toggleDropdownIcon()\"\n >\n @for (size of pagination?.pageSizes; track size) {\n <option [ngValue]=\"size\">{{ size }}</option>\n }\n </select>\n\n <qd-icon [icon]=\"isDropdownOpen ? 'ctrlTop' : 'ctrlDown'\"></qd-icon>\n </div>\n\n <div class=\"qdc-status__pagination-info\">\n <span class=\"qdc-status__pagination-info__text\">\n {{ getPaginationInfo() }}\n </span>\n </div>\n\n <div>\n <button qdIconButton [disabled]=\"pagination?.currentPage === 0\" (click)=\"goToFirstPage()\">\n <qd-icon icon=\"pageFirst1\"></qd-icon>\n </button>\n <button qdIconButton [disabled]=\"pagination?.currentPage === 0\" (click)=\"goToPage(-1)\">\n <qd-icon icon=\"triangleLeftSolid\"></qd-icon>\n </button>\n <button\n qdIconButton\n [disabled]=\"pagination?.currentPage >= (pagination?.totalPages ?? 1) - 1\"\n (click)=\"goToPage(1)\"\n >\n <qd-icon icon=\"triangleRightSolid\"></qd-icon>\n </button>\n <button\n qdIconButton\n [disabled]=\"pagination?.currentPage >= (pagination?.totalPages ?? 1) - 1\"\n (click)=\"goToLastPage()\"\n >\n <qd-icon icon=\"pageLast\"></qd-icon>\n </button>\n </div>\n </div>\n } }\n </div>\n </div>\n", styles: [".qdc-status__container{font-family:Roboto,sans-serif;display:flex;width:100%;max-width:906px;box-sizing:border-box;flex-direction:column;padding:0;border-radius:8px;background-color:#efefef}.qdc-status__header{display:flex;width:100%;height:50px;box-sizing:border-box;align-items:center;padding:0 24px;background-color:#e5e5e5;font-family:Roboto,sans-serif;font-size:16px;font-weight:500;letter-spacing:.15px;line-height:100%;vertical-align:middle}.qdc-status__cards{min-height:265px;box-sizing:border-box;flex-direction:row;flex-wrap:wrap;padding:1rem 1.5rem;border:1px solid #e5e5e5;scrollbar-width:none}@media screen and (min-width: 480px){.qdc-status__cards{max-height:700px;overflow-y:scroll;overflow-x:hidden}}.qdc-status__cards.empty{min-height:265px;align-items:center;justify-content:center;padding:0}.qdc-status_no-cards-message{padding:40px 0;color:#979797;font-family:Roboto,sans-serif;font-size:12px;font-weight:400;line-height:14px;text-align:center}.qdc-status__pagination-row{border-top:1px solid rgba(0,0,0,.1);margin-top:1rem;color:#454545;font-size:.875rem;font-weight:400;line-height:1.3125rem;display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding-left:.75rem;flex-wrap:nowrap;white-space:nowrap;min-height:clamp(36px,5.5vw,44px);padding-block-end:2.8125rem}button.qd-icon-button{border:none;border-left:.0625rem solid rgb(229,229,229);border-radius:unset}@media (max-width: 480px){.qdc-status__container{padding:0}.qdc-status__cards{flex-direction:column;padding:0}.qdc-status__header{padding:0}.qdc-status__pagination-info{min-width:0;overflow:hidden}.qdc-status__pagination-info__text{display:inline-block;max-width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}}@media (max-width: 480px) and (max-width: 480px){.qdc-status__pagination-info__text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal;overflow:hidden;word-break:break-word}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.QdIconButtonComponent, selector: "button[qdIconButton], a[qdIconButton], button[qd-icon-button]", inputs: ["color", "data-test-id"] }, { kind: "component", type: i3.QdIconComponent, selector: "qd-icon", inputs: ["icon"] }, { kind: "component", type: i4.QdcCardComponent, selector: "qdc-card", inputs: ["cardConfig", "data-test-id"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "pipe", type: i3.QdPlaceholderPipe, name: "placeholder" }] }); }
|
|
97
|
+
}
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QdcCardStatusComponent, decorators: [{
|
|
99
|
+
type: Component,
|
|
100
|
+
args: [{ selector: 'qdc-card-status', standalone: false, template: "<div class=\"qdc-status__container\">\n <div class=\"qdc-status__header\">\n {{ config.title.i18n | translate }}\n </div>\n\n <div class=\"qdc-status__cards\" #cardsContainer [ngClass]=\"{ empty: !config.cards || config.cards.length === 0 }\">\n @if (!config.cards || config.cards.length === 0) {\n <div class=\"qdc-status_no-cards-message\">\n {{ \"i18n.qdc-cards.status.noCards.label\" | translate | placeholder : \"title\" : (config.title.i18n | translate) }}\n </div>\n } @else { @for (card of pagedCards; track card) {\n <qdc-card [cardConfig]=\"card\"></qdc-card>\n } @if (config.pagination) {\n <div class=\"qdc-status__pagination-row\">\n <div>\n @if (!hideEntriesLabel) {\n <span>\n {{ \"i18n.qdc-card.status.pagination.service.entries.label\" | translate }}\n </span>\n }\n\n <select\n style=\"\n appearance: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n border: 0;\n outline: 0;\n box-shadow: none;\n background: transparent;\n padding-left: 5px;\n font-family: Roboto, Arial, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;\n color: rgb(69, 69, 69);\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 1.3125rem;\n \"\n [(ngModel)]=\"config.pagination.pageSize\"\n (ngModelChange)=\"onPageSizeChange()\"\n (click)=\"toggleDropdownIcon()\"\n >\n @for (size of pagination?.pageSizes; track size) {\n <option [ngValue]=\"size\">{{ size }}</option>\n }\n </select>\n\n <qd-icon [icon]=\"isDropdownOpen ? 'ctrlTop' : 'ctrlDown'\"></qd-icon>\n </div>\n\n <div class=\"qdc-status__pagination-info\">\n <span class=\"qdc-status__pagination-info__text\">\n {{ getPaginationInfo() }}\n </span>\n </div>\n\n <div>\n <button qdIconButton [disabled]=\"pagination?.currentPage === 0\" (click)=\"goToFirstPage()\">\n <qd-icon icon=\"pageFirst1\"></qd-icon>\n </button>\n <button qdIconButton [disabled]=\"pagination?.currentPage === 0\" (click)=\"goToPage(-1)\">\n <qd-icon icon=\"triangleLeftSolid\"></qd-icon>\n </button>\n <button\n qdIconButton\n [disabled]=\"pagination?.currentPage >= (pagination?.totalPages ?? 1) - 1\"\n (click)=\"goToPage(1)\"\n >\n <qd-icon icon=\"triangleRightSolid\"></qd-icon>\n </button>\n <button\n qdIconButton\n [disabled]=\"pagination?.currentPage >= (pagination?.totalPages ?? 1) - 1\"\n (click)=\"goToLastPage()\"\n >\n <qd-icon icon=\"pageLast\"></qd-icon>\n </button>\n </div>\n </div>\n } }\n </div>\n </div>\n", styles: [".qdc-status__container{font-family:Roboto,sans-serif;display:flex;width:100%;max-width:906px;box-sizing:border-box;flex-direction:column;padding:0;border-radius:8px;background-color:#efefef}.qdc-status__header{display:flex;width:100%;height:50px;box-sizing:border-box;align-items:center;padding:0 24px;background-color:#e5e5e5;font-family:Roboto,sans-serif;font-size:16px;font-weight:500;letter-spacing:.15px;line-height:100%;vertical-align:middle}.qdc-status__cards{min-height:265px;box-sizing:border-box;flex-direction:row;flex-wrap:wrap;padding:1rem 1.5rem;border:1px solid #e5e5e5;scrollbar-width:none}@media screen and (min-width: 480px){.qdc-status__cards{max-height:700px;overflow-y:scroll;overflow-x:hidden}}.qdc-status__cards.empty{min-height:265px;align-items:center;justify-content:center;padding:0}.qdc-status_no-cards-message{padding:40px 0;color:#979797;font-family:Roboto,sans-serif;font-size:12px;font-weight:400;line-height:14px;text-align:center}.qdc-status__pagination-row{border-top:1px solid rgba(0,0,0,.1);margin-top:1rem;color:#454545;font-size:.875rem;font-weight:400;line-height:1.3125rem;display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding-left:.75rem;flex-wrap:nowrap;white-space:nowrap;min-height:clamp(36px,5.5vw,44px);padding-block-end:2.8125rem}button.qd-icon-button{border:none;border-left:.0625rem solid rgb(229,229,229);border-radius:unset}@media (max-width: 480px){.qdc-status__container{padding:0}.qdc-status__cards{flex-direction:column;padding:0}.qdc-status__header{padding:0}.qdc-status__pagination-info{min-width:0;overflow:hidden}.qdc-status__pagination-info__text{display:inline-block;max-width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}}@media (max-width: 480px) and (max-width: 480px){.qdc-status__pagination-info__text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal;overflow:hidden;word-break:break-word}}\n"] }]
|
|
101
|
+
}], propDecorators: { paginationChanged: [{
|
|
102
|
+
type: Output
|
|
103
|
+
}], config: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], cardsContainer: [{
|
|
106
|
+
type: ViewChild,
|
|
107
|
+
args: ['cardsContainer', { static: false }]
|
|
108
|
+
}], onResize: [{
|
|
109
|
+
type: HostListener,
|
|
110
|
+
args: ['window:resize']
|
|
111
|
+
}] } });
|
|
112
|
+
//# sourceMappingURL=card-status.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card-status.component.js","sourceRoot":"","sources":["../../../../../../../libs/qdc-cards/src/lib/card-layout/card-status/card-status.component.ts","../../../../../../../libs/qdc-cards/src/lib/card-layout/card-status/card-status.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild,\n ElementRef,\n inject,\n OnInit\n} from '@angular/core';\nimport { QdcCardStatusConfig } from './card-status.model';\nimport { QdcCardConfig } from '../../card/card.model';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'qdc-card-status',\n templateUrl: 'card-status.component.html',\n styleUrls: ['card-status.component.scss'],\n standalone: false\n})\nexport class QdcCardStatusComponent implements OnInit {\n @Output() paginationChanged = new EventEmitter<void>();\n @Input() config!: QdcCardStatusConfig;\n\n @ViewChild('cardsContainer', { static: false }) cardsContainer?: ElementRef<HTMLElement>;\n\n private readonly translate = inject(TranslateService);\n\n isDropdownOpen = false;\n hideEntriesLabel = window.innerWidth <= 1600;\n defaultPageSizes: number[] = [5, 10, 20, 50];\n\n ngOnInit(): void {\n if (this.config?.pagination) {\n if (!this.config.pagination.pageSizes || this.config.pagination.pageSizes.length === 0) {\n this.config.pagination.pageSizes = this.defaultPageSizes;\n }\n if (!this.config.pagination.pageSize) {\n this.config.pagination.pageSize = this.config.pagination.pageSizes[0];\n }\n if (this.config.pagination.currentPage == null) {\n this.config.pagination.currentPage = 0;\n }\n }\n }\n\n get pagedCards(): QdcCardConfig[] {\n return this.config.cards;\n }\n\n get pagination() {\n return this.config.pagination;\n }\n\n goToPage(delta: number): void {\n if (!this.pagination) return;\n const newPage = this.pagination.currentPage + delta;\n if (newPage >= 0 && newPage < this.pagination.totalPages) {\n this.pagination.currentPage = newPage; // update current page\n this.pagination.handler(newPage, this.pagination.pageSize!);\n this.paginationChanged.emit();\n }\n }\n\n goToFirstPage(): void {\n if (this.pagination && this.pagination.currentPage !== 0) {\n this.pagination.currentPage = 0;\n this.pagination.handler(0, this.pagination.pageSize!);\n this.paginationChanged.emit();\n }\n }\n\n goToLastPage(): void {\n if (!this.pagination) return;\n const last = this.pagination.totalPages - 1;\n if (last >= 0 && this.pagination.currentPage !== last) {\n this.pagination.currentPage = last;\n this.pagination.handler(last, this.pagination.pageSize!);\n this.paginationChanged.emit();\n }\n }\n\n onPageSizeChange(): void {\n if (this.pagination) {\n // ngModel has already updated pageSize here\n const totalPages = Math.ceil(this.pagination.totalElements / this.pagination.pageSize!);\n\n // If the current page is out of range, snap it to the last page\n if (this.pagination.currentPage >= totalPages) {\n this.pagination.currentPage = Math.max(0, totalPages - 1);\n }\n this.pagination.handler(this.pagination.currentPage, this.pagination.pageSize!);\n this.paginationChanged.emit();\n }\n }\n\n toggleDropdownIcon(): void {\n this.isDropdownOpen = !this.isDropdownOpen;\n }\n\n @HostListener('window:resize')\n onResize(): void {\n this.hideEntriesLabel = window.innerWidth <= 1600;\n }\n\n getPaginationInfo(): string {\n if (!this.pagination) return '';\n\n const total = this.pagination.totalElements;\n const pageSize = this.pagination.pageSize;\n const currentPage = this.pagination.currentPage;\n\n const start = total === 0 ? 0 : currentPage * pageSize! + 1;\n const end = Math.min(start + pageSize! - 1, total);\n\n return this.translate.instant('i18n.qdc-card.status.pagination.service.from.label', {\n start,\n end,\n total\n });\n }\n}\n","<div class=\"qdc-status__container\">\n <div class=\"qdc-status__header\">\n {{ config.title.i18n | translate }}\n </div>\n\n <div class=\"qdc-status__cards\" #cardsContainer [ngClass]=\"{ empty: !config.cards || config.cards.length === 0 }\">\n @if (!config.cards || config.cards.length === 0) {\n <div class=\"qdc-status_no-cards-message\">\n {{ \"i18n.qdc-cards.status.noCards.label\" | translate | placeholder : \"title\" : (config.title.i18n | translate) }}\n </div>\n } @else { @for (card of pagedCards; track card) {\n <qdc-card [cardConfig]=\"card\"></qdc-card>\n } @if (config.pagination) {\n <div class=\"qdc-status__pagination-row\">\n <div>\n @if (!hideEntriesLabel) {\n <span>\n {{ \"i18n.qdc-card.status.pagination.service.entries.label\" | translate }}\n </span>\n }\n\n <select\n style=\"\n appearance: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n border: 0;\n outline: 0;\n box-shadow: none;\n background: transparent;\n padding-left: 5px;\n font-family: Roboto, Arial, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;\n color: rgb(69, 69, 69);\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 1.3125rem;\n \"\n [(ngModel)]=\"config.pagination.pageSize\"\n (ngModelChange)=\"onPageSizeChange()\"\n (click)=\"toggleDropdownIcon()\"\n >\n @for (size of pagination?.pageSizes; track size) {\n <option [ngValue]=\"size\">{{ size }}</option>\n }\n </select>\n\n <qd-icon [icon]=\"isDropdownOpen ? 'ctrlTop' : 'ctrlDown'\"></qd-icon>\n </div>\n\n <div class=\"qdc-status__pagination-info\">\n <span class=\"qdc-status__pagination-info__text\">\n {{ getPaginationInfo() }}\n </span>\n </div>\n\n <div>\n <button qdIconButton [disabled]=\"pagination?.currentPage === 0\" (click)=\"goToFirstPage()\">\n <qd-icon icon=\"pageFirst1\"></qd-icon>\n </button>\n <button qdIconButton [disabled]=\"pagination?.currentPage === 0\" (click)=\"goToPage(-1)\">\n <qd-icon icon=\"triangleLeftSolid\"></qd-icon>\n </button>\n <button\n qdIconButton\n [disabled]=\"pagination?.currentPage >= (pagination?.totalPages ?? 1) - 1\"\n (click)=\"goToPage(1)\"\n >\n <qd-icon icon=\"triangleRightSolid\"></qd-icon>\n </button>\n <button\n qdIconButton\n [disabled]=\"pagination?.currentPage >= (pagination?.totalPages ?? 1) - 1\"\n (click)=\"goToLastPage()\"\n >\n <qd-icon icon=\"pageLast\"></qd-icon>\n </button>\n </div>\n </div>\n } }\n </div>\n </div>\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card-status.model.js","sourceRoot":"","sources":["../../../../../../../libs/qdc-cards/src/lib/card-layout/card-status/card-status.model.ts"],"names":[],"mappings":"","sourcesContent":["import { QdcCardConfig } from '../../card/card.model';\nimport { QdcCardStatusPaginationConfig } from './pagination/pagination.model';\n\nexport interface QdcCardStatusConfig {\n /**\n * Title of the cards layout component\n * */\n\n title: {\n /**\n * Translatable title text\n * */\n i18n: string;\n };\n /**\n * Cards\n * */\n cards: QdcCardConfig[];\n\n /**\n * Pagination configuration\n * */\n pagination?: QdcCardStatusPaginationConfig;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.model.js","sourceRoot":"","sources":["../../../../../../../../libs/qdc-cards/src/lib/card-layout/card-status/pagination/pagination.model.ts"],"names":[],"mappings":"","sourcesContent":["export interface QdcCardStatusPaginationConfig {\n /**\n * Total number of elements\n * */\n totalElements: number;\n\n /**\n * Total number of pages\n * */\n totalPages: number;\n\n /**\n * Page size (total elements per page)\n * */\n pageSize?: number;\n\n /**\n * Current page (0-based index)\n * */\n currentPage: number;\n\n /**\n * Pagination handler\n * */\n handler: (page: number, size: number) => void;\n\n /**\n * Optional array of page sizes for a dropdown\n * */\n pageSizes?: number[];\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { QdcCardsPopoverComponent } from './popover/cards-popover.component';
|
|
4
|
+
import { QdcCardsPopoverOnClickDirective } from './popover-on-click/cards-popover-on-click.directive';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class QdcCardsPopoverModule {
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QdcCardsPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.17", ngImport: i0, type: QdcCardsPopoverModule, declarations: [QdcCardsPopoverComponent, QdcCardsPopoverOnClickDirective], imports: [CommonModule], exports: [QdcCardsPopoverOnClickDirective] }); }
|
|
9
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QdcCardsPopoverModule, imports: [CommonModule] }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QdcCardsPopoverModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
imports: [CommonModule],
|
|
15
|
+
declarations: [QdcCardsPopoverComponent, QdcCardsPopoverOnClickDirective],
|
|
16
|
+
exports: [QdcCardsPopoverOnClickDirective]
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=cards-popover.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cards-popover.module.js","sourceRoot":"","sources":["../../../../../../../libs/qdc-cards/src/lib/shared/popover/cards-popover.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;;AAOtG,MAAM,OAAO,qBAAqB;+GAArB,qBAAqB;gHAArB,qBAAqB,iBAHjB,wBAAwB,EAAE,+BAA+B,aAD9D,YAAY,aAEZ,+BAA+B;gHAE9B,qBAAqB,YAJtB,YAAY;;4FAIX,qBAAqB;kBALjC,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,wBAAwB,EAAE,+BAA+B,CAAC;oBACzE,OAAO,EAAE,CAAC,+BAA+B,CAAC;iBAC3C","sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { QdcCardsPopoverComponent } from './popover/cards-popover.component';\nimport { QdcCardsPopoverOnClickDirective } from './popover-on-click/cards-popover-on-click.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [QdcCardsPopoverComponent, QdcCardsPopoverOnClickDirective],\n exports: [QdcCardsPopoverOnClickDirective]\n})\nexport class QdcCardsPopoverModule {}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class QdcCardsPopoverService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.closeHandler = new Subject();
|
|
7
|
+
}
|
|
8
|
+
closeAllOverlays() {
|
|
9
|
+
this.closeHandler.next(true);
|
|
10
|
+
}
|
|
11
|
+
subscribe(callback) {
|
|
12
|
+
return this.closeHandler.subscribe(callback);
|
|
13
|
+
}
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QdcCardsPopoverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
15
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QdcCardsPopoverService, providedIn: 'root' }); }
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QdcCardsPopoverService, decorators: [{
|
|
18
|
+
type: Injectable,
|
|
19
|
+
args: [{
|
|
20
|
+
providedIn: 'root'
|
|
21
|
+
}]
|
|
22
|
+
}] });
|
|
23
|
+
//# sourceMappingURL=cards-popover.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cards-popover.service.js","sourceRoot":"","sources":["../../../../../../../libs/qdc-cards/src/lib/shared/popover/cards-popover.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAgB,MAAM,MAAM,CAAC;;AAO7C,MAAM,OAAO,sBAAsB;IAHnC;QAIU,iBAAY,GAAG,IAAI,OAAO,EAAW,CAAC;KAS/C;IAPC,gBAAgB;QACd,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,SAAS,CAAC,QAA8B;QACtC,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;+GATU,sBAAsB;mHAAtB,sBAAsB,cAFrB,MAAM;;4FAEP,sBAAsB;kBAHlC,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB","sourcesContent":["import { Injectable } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\n\nexport type PopoverCloseCallback = () => void;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class QdcCardsPopoverService {\n private closeHandler = new Subject<boolean>();\n\n closeAllOverlays(): void {\n this.closeHandler.next(true);\n }\n\n subscribe(callback: PopoverCloseCallback): Subscription {\n return this.closeHandler.subscribe(callback);\n }\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class QdcCardsPopoverComponent {
|
|
5
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QdcCardsPopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: QdcCardsPopoverComponent, isStandalone: false, selector: "qdc-cards-popover", inputs: { content: "content" }, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n", styles: [":host{background-color:#fff;box-shadow:0 0 .625rem #979797;display:block;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
7
|
+
}
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QdcCardsPopoverComponent, decorators: [{
|
|
9
|
+
type: Component,
|
|
10
|
+
args: [{ selector: 'qdc-cards-popover', standalone: false, template: "<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n", styles: [":host{background-color:#fff;box-shadow:0 0 .625rem #979797;display:block;width:100%}\n"] }]
|
|
11
|
+
}], propDecorators: { content: [{
|
|
12
|
+
type: Input
|
|
13
|
+
}] } });
|
|
14
|
+
//# sourceMappingURL=cards-popover.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cards-popover.component.js","sourceRoot":"","sources":["../../../../../../../../libs/qdc-cards/src/lib/shared/popover/popover/cards-popover.component.ts","../../../../../../../../libs/qdc-cards/src/lib/shared/popover/popover/cards-popover.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAe,MAAM,eAAe,CAAC;;;AAQ9D,MAAM,OAAO,wBAAwB;+GAAxB,wBAAwB;mGAAxB,wBAAwB,8GCRrC,+DACA;;4FDOa,wBAAwB;kBANpC,SAAS;+BACE,mBAAmB,cAGjB,KAAK;;sBAGhB,KAAK","sourcesContent":["import { Component, Input, TemplateRef } from '@angular/core';\n\n@Component({\n selector: 'qdc-cards-popover',\n templateUrl: './cards-popover.component.html',\n styleUrls: ['./cards-popover.component.scss'],\n standalone: false\n})\nexport class QdcCardsPopoverComponent {\n @Input()\n content!: TemplateRef<unknown>;\n}\n","<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n"]}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Overlay, OverlayPositionBuilder } from '@angular/cdk/overlay';
|
|
2
|
+
import { ComponentPortal } from '@angular/cdk/portal';
|
|
3
|
+
import { Directive, ElementRef, EventEmitter, HostListener, inject, Input, Output } from '@angular/core';
|
|
4
|
+
import { QdcCardsPopoverComponent } from '../popover/cards-popover.component';
|
|
5
|
+
import { QdcCardsPopoverService } from '../cards-popover.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class QdcCardsPopoverOnClickDirective {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.hostRef = inject(ElementRef);
|
|
10
|
+
this.overlayPositionBuilder = inject(OverlayPositionBuilder);
|
|
11
|
+
this.overlay = inject(Overlay);
|
|
12
|
+
this.popoverService = inject(QdcCardsPopoverService);
|
|
13
|
+
this.host = this.hostRef.nativeElement;
|
|
14
|
+
this.popoverWidth = '204';
|
|
15
|
+
this.popoverCloseStrategy = 'onEveryClick';
|
|
16
|
+
this.opened = new EventEmitter();
|
|
17
|
+
this.closed = new EventEmitter();
|
|
18
|
+
}
|
|
19
|
+
ngOnInit() {
|
|
20
|
+
const positionStrategy = this.overlayPositionBuilder.flexibleConnectedTo(this.host).withPositions([
|
|
21
|
+
...(this.positionStrategy ? [this.positionStrategy] : []),
|
|
22
|
+
{
|
|
23
|
+
originX: 'end',
|
|
24
|
+
originY: 'bottom',
|
|
25
|
+
overlayX: 'end',
|
|
26
|
+
overlayY: 'top'
|
|
27
|
+
}
|
|
28
|
+
]);
|
|
29
|
+
this.overlayRef = this.overlay.create({ positionStrategy, width: this.popoverWidth, disposeOnNavigation: true });
|
|
30
|
+
}
|
|
31
|
+
ngOnDestroy() {
|
|
32
|
+
this.close();
|
|
33
|
+
}
|
|
34
|
+
show(event) {
|
|
35
|
+
event.stopPropagation();
|
|
36
|
+
if (!this.overlayRef.hasAttached()) {
|
|
37
|
+
const popoverPortal = new ComponentPortal(QdcCardsPopoverComponent);
|
|
38
|
+
const popoverRef = this.overlayRef.attach(popoverPortal);
|
|
39
|
+
popoverRef.instance.content = this.qdcCardsPopoverOnClick;
|
|
40
|
+
this.opened.emit();
|
|
41
|
+
this.popoverService.closeAllOverlays();
|
|
42
|
+
this.closeSubscription = this.popoverService.subscribe(() => {
|
|
43
|
+
this.close();
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this.close();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
clickedOutside(event) {
|
|
51
|
+
if (this.overlayRef.hasAttached() && this.shouldClose(event))
|
|
52
|
+
this.close();
|
|
53
|
+
}
|
|
54
|
+
close() {
|
|
55
|
+
this.overlayRef?.detach();
|
|
56
|
+
this.closeSubscription?.unsubscribe();
|
|
57
|
+
this.closed.emit();
|
|
58
|
+
}
|
|
59
|
+
shouldClose(event) {
|
|
60
|
+
const target = event.target;
|
|
61
|
+
if (!this.overlayRef.hasAttached())
|
|
62
|
+
return false;
|
|
63
|
+
if (this.popoverCloseStrategy === 'onEveryClick')
|
|
64
|
+
return !(target?.classList?.contains('disabled') || target?.disabled);
|
|
65
|
+
if (this.popoverCloseStrategy === 'onOutsideClick') {
|
|
66
|
+
const hostElementHovered = this.host.parentElement.querySelector(':hover');
|
|
67
|
+
const overlayElementHovered = this.overlayRef.overlayElement.querySelector(':hover');
|
|
68
|
+
return !hostElementHovered && !overlayElementHovered;
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QdcCardsPopoverOnClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
73
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.17", type: QdcCardsPopoverOnClickDirective, isStandalone: false, selector: "[qdcCardsPopoverOnClick]", inputs: { qdcCardsPopoverOnClick: "qdcCardsPopoverOnClick", popoverWidth: "popoverWidth", positionStrategy: "positionStrategy", popoverCloseStrategy: "popoverCloseStrategy" }, outputs: { opened: "opened", closed: "closed" }, host: { listeners: { "click": "show($event)", "document:click": "clickedOutside($event)" } }, ngImport: i0 }); }
|
|
74
|
+
}
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: QdcCardsPopoverOnClickDirective, decorators: [{
|
|
76
|
+
type: Directive,
|
|
77
|
+
args: [{
|
|
78
|
+
selector: '[qdcCardsPopoverOnClick]',
|
|
79
|
+
standalone: false
|
|
80
|
+
}]
|
|
81
|
+
}], propDecorators: { qdcCardsPopoverOnClick: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}], popoverWidth: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}], positionStrategy: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], popoverCloseStrategy: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], opened: [{
|
|
90
|
+
type: Output
|
|
91
|
+
}], closed: [{
|
|
92
|
+
type: Output
|
|
93
|
+
}], show: [{
|
|
94
|
+
type: HostListener,
|
|
95
|
+
args: ['click', ['$event']]
|
|
96
|
+
}], clickedOutside: [{
|
|
97
|
+
type: HostListener,
|
|
98
|
+
args: ['document:click', ['$event']]
|
|
99
|
+
}] } });
|
|
100
|
+
//# sourceMappingURL=cards-popover-on-click.directive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cards-popover-on-click.directive.js","sourceRoot":"","sources":["../../../../../../../../libs/qdc-cards/src/lib/shared/popover/popover-on-click/cards-popover-on-click.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import { ConnectedPosition, Overlay, OverlayPositionBuilder, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { QdcCardsPopoverComponent } from '../popover/cards-popover.component';\nimport { QdcCardsPopoverService } from '../cards-popover.service';\n\n@Directive({\n selector: '[qdcCardsPopoverOnClick]',\n standalone: false\n})\nexport class QdcCardsPopoverOnClickDirective implements OnInit, OnDestroy {\n private hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private overlayPositionBuilder = inject(OverlayPositionBuilder);\n private overlay = inject(Overlay);\n private popoverService = inject(QdcCardsPopoverService);\n\n private host: HTMLElement = this.hostRef.nativeElement;\n private overlayRef!: OverlayRef;\n private closeSubscription!: Subscription;\n\n @Input() qdcCardsPopoverOnClick!: TemplateRef<unknown>;\n @Input() popoverWidth: string | 'auto' = '204';\n @Input() positionStrategy!: ConnectedPosition;\n @Input() popoverCloseStrategy: 'onOutsideClick' | 'onEveryClick' = 'onEveryClick';\n\n @Output() readonly opened = new EventEmitter();\n @Output() readonly closed = new EventEmitter();\n\n ngOnInit(): void {\n const positionStrategy = this.overlayPositionBuilder.flexibleConnectedTo(this.host).withPositions([\n ...(this.positionStrategy ? [this.positionStrategy] : []),\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n }\n ]);\n\n this.overlayRef = this.overlay.create({ positionStrategy, width: this.popoverWidth, disposeOnNavigation: true });\n }\n\n ngOnDestroy(): void {\n this.close();\n }\n\n @HostListener('click', ['$event'])\n show(event: Event) {\n event.stopPropagation();\n if (!this.overlayRef.hasAttached()) {\n const popoverPortal = new ComponentPortal(QdcCardsPopoverComponent);\n const popoverRef = this.overlayRef.attach(popoverPortal);\n\n popoverRef.instance.content = this.qdcCardsPopoverOnClick;\n this.opened.emit();\n\n this.popoverService.closeAllOverlays();\n\n this.closeSubscription = this.popoverService.subscribe(() => {\n this.close();\n });\n } else {\n this.close();\n }\n }\n\n @HostListener('document:click', ['$event'])\n clickedOutside(event: PointerEvent) {\n if (this.overlayRef.hasAttached() && this.shouldClose(event)) this.close();\n }\n\n close() {\n this.overlayRef?.detach();\n this.closeSubscription?.unsubscribe();\n this.closed.emit();\n }\n\n private shouldClose(event: PointerEvent): boolean {\n const target = event.target as (HTMLElement & { disabled?: boolean }) | null;\n\n if (!this.overlayRef.hasAttached()) return false;\n\n if (this.popoverCloseStrategy === 'onEveryClick')\n return !((target?.classList as DOMTokenList)?.contains('disabled') || target?.disabled);\n\n if (this.popoverCloseStrategy === 'onOutsideClick') {\n const hostElementHovered = this.host.parentElement!.querySelector(':hover');\n const overlayElementHovered = this.overlayRef.overlayElement.querySelector(':hover');\n\n return !hostElementHovered && !overlayElementHovered;\n }\n\n return false;\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quadrel-enterprise-ui-qdc-cards.js","sourceRoot":"","sources":["../../../../libs/qdc-cards/src/quadrel-enterprise-ui-qdc-cards.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC","sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"]}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { AfterContentInit,
|
|
1
|
+
import { AfterContentInit, OnChanges, TemplateRef } from '@angular/core';
|
|
2
2
|
import { QdcCardConfig } from './card.model';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class QdcCardComponent implements AfterContentInit, OnChanges {
|
|
5
|
-
private cdr;
|
|
6
5
|
/** JSON configuration driving the visual appearance of the card. */
|
|
7
6
|
cardConfig: QdcCardConfig;
|
|
8
7
|
/** Optional test-id for E2E / integration tests. */
|
|
@@ -10,7 +9,7 @@ export declare class QdcCardComponent implements AfterContentInit, OnChanges {
|
|
|
10
9
|
hasHeader: boolean;
|
|
11
10
|
hasFooter: boolean;
|
|
12
11
|
get isMobile(): boolean;
|
|
13
|
-
|
|
12
|
+
private cdr;
|
|
14
13
|
ngAfterContentInit(): void;
|
|
15
14
|
ngOnChanges(): void;
|
|
16
15
|
private evaluateVisibility;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { QdChipColor } from '@quadrel-enterprise-ui/framework';
|
|
2
|
-
import type {
|
|
2
|
+
import type { QdStatusIndicator } from '@quadrel-enterprise-ui/framework';
|
|
3
3
|
export interface QdcCardActionConfig {
|
|
4
4
|
/**
|
|
5
5
|
* The label is shown as text in the UI for this action.
|
|
@@ -35,10 +35,7 @@ export interface QdcCardBodyPair {
|
|
|
35
35
|
/**
|
|
36
36
|
* Optional Qd-Status-Indicator
|
|
37
37
|
* */
|
|
38
|
-
status?:
|
|
39
|
-
type: QdStatusIndicatorType;
|
|
40
|
-
level: QdStatusIndicatorLevel;
|
|
41
|
-
} | null;
|
|
38
|
+
status?: Pick<QdStatusIndicator, 'type' | 'level'> | null;
|
|
42
39
|
icon?: string | null;
|
|
43
40
|
booleanValue?: boolean | null;
|
|
44
41
|
chips?: QdcCardChip[] | null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OnInit, OnChanges, SimpleChanges
|
|
1
|
+
import { OnInit, OnChanges, SimpleChanges } from '@angular/core';
|
|
2
2
|
import { FormGroup } from '@angular/forms';
|
|
3
3
|
import { BehaviorSubject } from 'rxjs';
|
|
4
4
|
import { QdFormDropdownConfiguration } from '@quadrel-enterprise-ui/framework';
|
|
@@ -7,7 +7,6 @@ import { QdcCardStatusSameHeightDirective } from './card-status/card-status-heig
|
|
|
7
7
|
import { QdcCardStatusConfig } from './card-status/card-status.model';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export declare class QdcCardLayoutComponent implements OnInit, OnChanges {
|
|
10
|
-
private ngZone;
|
|
11
10
|
config: QdcCardLayoutConfig;
|
|
12
11
|
cardStatusHeightDirective?: QdcCardStatusSameHeightDirective;
|
|
13
12
|
isMobile: boolean;
|
|
@@ -16,7 +15,7 @@ export declare class QdcCardLayoutComponent implements OnInit, OnChanges {
|
|
|
16
15
|
private statusTitlesDropDownConfig;
|
|
17
16
|
dropDownConfig: BehaviorSubject<QdFormDropdownConfiguration>;
|
|
18
17
|
selectedStatusTitle: BehaviorSubject<QdcCardStatusConfig>;
|
|
19
|
-
|
|
18
|
+
private ngZone;
|
|
20
19
|
ngOnInit(): void;
|
|
21
20
|
ngOnChanges(changes: SimpleChanges): void;
|
|
22
21
|
onPaginationChanged(): void;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { AfterViewInit
|
|
1
|
+
import { AfterViewInit } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export declare class QdcCardStatusSameHeightDirective implements AfterViewInit {
|
|
4
4
|
private el;
|
|
5
5
|
private renderer;
|
|
6
|
-
constructor(el: ElementRef, renderer: Renderer2);
|
|
7
6
|
ngAfterViewInit(): void;
|
|
8
7
|
onResize(): void;
|
|
9
8
|
triggerUpdate(): void;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { ConnectedPosition
|
|
2
|
-
import {
|
|
3
|
-
import { QdcCardsPopoverService } from '../cards-popover.service';
|
|
1
|
+
import { ConnectedPosition } from '@angular/cdk/overlay';
|
|
2
|
+
import { EventEmitter, OnDestroy, OnInit, TemplateRef } from '@angular/core';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
export declare class QdcCardsPopoverOnClickDirective implements OnInit, OnDestroy {
|
|
6
5
|
private hostRef;
|
|
@@ -16,7 +15,6 @@ export declare class QdcCardsPopoverOnClickDirective implements OnInit, OnDestro
|
|
|
16
15
|
popoverCloseStrategy: 'onOutsideClick' | 'onEveryClick';
|
|
17
16
|
readonly opened: EventEmitter<any>;
|
|
18
17
|
readonly closed: EventEmitter<any>;
|
|
19
|
-
constructor(hostRef: ElementRef<HTMLElement>, overlayPositionBuilder: OverlayPositionBuilder, overlay: Overlay, popoverService: QdcCardsPopoverService);
|
|
20
18
|
ngOnInit(): void;
|
|
21
19
|
ngOnDestroy(): void;
|
|
22
20
|
show(event: Event): void;
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quadrel-enterprise-ui/qdc-cards",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "20.0.0",
|
|
4
4
|
"description": "Library for loading dynamic and static translation files",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
8
8
|
"peerDependencies": {
|
|
9
|
-
"@quadrel-enterprise-ui/framework": "^
|
|
10
|
-
"@angular/common": "^
|
|
11
|
-
"@angular/core": "^
|
|
12
|
-
"@angular/forms": "^
|
|
13
|
-
"@angular/cdk": "^
|
|
9
|
+
"@quadrel-enterprise-ui/framework": "^20.0.1",
|
|
10
|
+
"@angular/common": "^20",
|
|
11
|
+
"@angular/core": "^20",
|
|
12
|
+
"@angular/forms": "^20",
|
|
13
|
+
"@angular/cdk": "^20",
|
|
14
14
|
"@ngx-translate/core": "^17.0.0",
|
|
15
15
|
"rxjs": "~7.8.0"
|
|
16
16
|
},
|
|
@@ -20,15 +20,15 @@
|
|
|
20
20
|
"indent": 4,
|
|
21
21
|
"sonar56x": true
|
|
22
22
|
},
|
|
23
|
-
"module": "esm2022/quadrel-enterprise-ui-qdc-cards.
|
|
24
|
-
"typings": "
|
|
23
|
+
"module": "esm2022/quadrel-enterprise-ui-qdc-cards.js",
|
|
24
|
+
"typings": "quadrel-enterprise-ui-qdc-cards.d.ts",
|
|
25
25
|
"exports": {
|
|
26
26
|
"./package.json": {
|
|
27
27
|
"default": "./package.json"
|
|
28
28
|
},
|
|
29
29
|
".": {
|
|
30
|
-
"types": "./
|
|
31
|
-
"default": "./esm2022/quadrel-enterprise-ui-qdc-cards.
|
|
30
|
+
"types": "./quadrel-enterprise-ui-qdc-cards.d.ts",
|
|
31
|
+
"default": "./esm2022/quadrel-enterprise-ui-qdc-cards.js"
|
|
32
32
|
}
|
|
33
33
|
},
|
|
34
34
|
"sideEffects": false,
|
package/esm2022/index.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './lib/card-layout/card-layout.module';
|
|
2
|
-
export * from './lib/card/card.module';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3FkYy1jYXJkcy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvY2FyZC1sYXlvdXQvY2FyZC1sYXlvdXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhcmQvY2FyZC5tb2R1bGUnO1xuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWRjLWNhcmRzL3NyYy9saWIvY2FyZC9jYXJkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBRZGNDYXJkQWN0aW9uQ29uZmlnLFxuICBRZGNDYXJkQm9keVBhaXIsXG4gIFFkY0NhcmRDaGlwLFxuICBRZGNDYXJkRm9vdGVyXG59IGZyb20gJy4vbW9kZWwvY2FyZC1hY3Rpb25zLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFFkY0NhcmRDb25maWcge1xuICAvKipcbiAgICogT3B0aW9uYWwgaWNvbiBuYW1lIHNob3duIGluIHRoZSBoZWFkZXIsIGxlZnQgb2YgdGhlIHRpdGxlLlxuICAgKiAqL1xuICBpY29uPzogc3RyaW5nIHwgbnVsbDtcblxuICAvKipcbiAgICogTWFpbiBoZWFkbGluZSBvZiB0aGUgY2FyZC5cbiAgICogKi9cbiAgdGl0bGU/OiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBzdWJ0aXRsZSBzaG93biB1bmRlciB0aGUgdGl0bGUuXG4gICAqICovXG4gIHN1YlRpdGxlPzogc3RyaW5nIHwgbnVsbDtcblxuICBib2R5UGFpcnM/OiBRZGNDYXJkQm9keVBhaXJbXTtcblxuICBjaGlwPzogUWRjQ2FyZENoaXA7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGFjdGlvbnMgdG8gZGlzcGxheSBpbiB0aGUgY2FyZCBtZW51LlxuICAgKiAqL1xuICBtZW51QWN0aW9ucz86IFFkY0NhcmRBY3Rpb25Db25maWdbXTtcblxuICBmb290ZXI/OiBRZGNDYXJkRm9vdGVyO1xuXG4gIG9uQ2FyZENsaWNrPzogKCkgPT4gdm9pZDtcbn1cbiJdfQ==
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
-
import { QdUiModule } from '@quadrel-enterprise-ui/framework';
|
|
5
|
-
import { QdcCardComponent } from './card.component';
|
|
6
|
-
import { QdcCardMenuComponent } from './menu/card-menu.component';
|
|
7
|
-
import { QdcCardsPopoverModule } from '../shared/popover/cards-popover.module';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
export { QdcCardComponent, QdcCardMenuComponent };
|
|
10
|
-
export class QdcCardModule {
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: QdcCardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
12
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: QdcCardModule, declarations: [QdcCardComponent, QdcCardMenuComponent], imports: [CommonModule, TranslateModule, QdUiModule, QdcCardsPopoverModule], exports: [QdcCardComponent, QdcCardMenuComponent] }); }
|
|
13
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: QdcCardModule, imports: [CommonModule, TranslateModule, QdUiModule, QdcCardsPopoverModule] }); }
|
|
14
|
-
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: QdcCardModule, decorators: [{
|
|
16
|
-
type: NgModule,
|
|
17
|
-
args: [{
|
|
18
|
-
imports: [CommonModule, TranslateModule, QdUiModule, QdcCardsPopoverModule],
|
|
19
|
-
declarations: [QdcCardComponent, QdcCardMenuComponent],
|
|
20
|
-
exports: [QdcCardComponent, QdcCardMenuComponent]
|
|
21
|
-
}]
|
|
22
|
-
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkYy1jYXJkcy9zcmMvbGliL2NhcmQvY2FyZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFFL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixvQkFBb0IsRUFBRSxDQUFDO0FBT2pFLE1BQU0sT0FBTyxhQUFhOytHQUFiLGFBQWE7Z0hBQWIsYUFBYSxpQkFIVCxnQkFBZ0IsRUFBRSxvQkFBb0IsYUFEM0MsWUFBWSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUscUJBQXFCLGFBRWhFLGdCQUFnQixFQUFFLG9CQUFvQjtnSEFFckMsYUFBYSxZQUpkLFlBQVksRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLHFCQUFxQjs7NEZBSS9ELGFBQWE7a0JBTHpCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUscUJBQXFCLENBQUM7b0JBQzNFLFlBQVksRUFBRSxDQUFDLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDO29CQUN0RCxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxvQkFBb0IsQ0FBQztpQkFDbEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBRZFVpTW9kdWxlIH0gZnJvbSAnQHF1YWRyZWwtZW50ZXJwcmlzZS11aS9mcmFtZXdvcmsnO1xuaW1wb3J0IHsgUWRjQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUWRjQ2FyZE1lbnVDb21wb25lbnQgfSBmcm9tICcuL21lbnUvY2FyZC1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRZGNDYXJkQ29uZmlnIH0gZnJvbSAnLi9jYXJkLm1vZGVsJztcbmltcG9ydCB7IFFkY0NhcmRzUG9wb3Zlck1vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9wb3BvdmVyL2NhcmRzLXBvcG92ZXIubW9kdWxlJztcblxuZXhwb3J0IHsgUWRjQ2FyZENvbXBvbmVudCwgUWRjQ2FyZENvbmZpZywgUWRjQ2FyZE1lbnVDb21wb25lbnQgfTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBRZFVpTW9kdWxlLCBRZGNDYXJkc1BvcG92ZXJNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtRZGNDYXJkQ29tcG9uZW50LCBRZGNDYXJkTWVudUNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtRZGNDYXJkQ29tcG9uZW50LCBRZGNDYXJkTWVudUNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgUWRjQ2FyZE1vZHVsZSB7fVxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1hY3Rpb25zLWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkYy1jYXJkcy9zcmMvbGliL2NhcmQvbW9kZWwvY2FyZC1hY3Rpb25zLWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFFkQ2hpcENvbG9yIH0gZnJvbSAnQHF1YWRyZWwtZW50ZXJwcmlzZS11aS9mcmFtZXdvcmsnO1xuaW1wb3J0IHR5cGUge1xuICBRZFN0YXR1c0luZGljYXRvckxldmVsLFxuICBRZFN0YXR1c0luZGljYXRvclR5cGVcbn0gZnJvbSAnQHF1YWRyZWwtZW50ZXJwcmlzZS11aS9mcmFtZXdvcmsvbGliL3N0YXR1cy1pbmRpY2F0b3IvaW50ZXJmYWNlcy9zdGF0dXMtaW5kaWNhdG9yLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUWRjQ2FyZEFjdGlvbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgaXMgc2hvd24gYXMgdGV4dCBpbiB0aGUgVUkgZm9yIHRoaXMgYWN0aW9uLlxuICAgKi9cbiAgbGFiZWw6IHtcbiAgICAvKiogVGhpcyBpMThuIGtleSBpcyB0cmFuc2xhdGVkIGRpcmVjdGx5IGluc2lkZSB0aGUgUWRDYXJkTWVudSBjb21wb25lbnQuICovXG4gICAgaTE4bjogc3RyaW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgaGFuZGxlciB0byBleGVjdXRlIHdoZW4gdGhlIGFjdGlvbiBpcyBjbGlja2VkLlxuICAgKi9cbiAgaGFuZGxlcjogKCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYWN0aW9uIGlzIGRpc2FibGVkIG9yIG5vdFxuICAgKlxuICAgKiAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgaWNvbiB0byBkaXNwbGF5IGluIHRoZSBhY3Rpb24uXG4gICAqL1xuICBpY29uPzogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRZGNDYXJkQm9keVBhaXIge1xuICAvKipcbiAgICogVHJhbnNsYXRhYmxlIGxhYmVsIHRleHQuXG4gICAqICovXG4gIGkxOG46IHN0cmluZztcblxuICAvKipcbiAgICogVmFsdWUgdG8gZGlzcGxheSBuZXh0IHRvIHRoZSBsYWJlbC5cbiAgICogKi9cbiAgdmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgUWQtU3RhdHVzLUluZGljYXRvclxuICAgKiAqL1xuICBzdGF0dXM/OiB7XG4gICAgdHlwZTogUWRTdGF0dXNJbmRpY2F0b3JUeXBlO1xuICAgIGxldmVsOiBRZFN0YXR1c0luZGljYXRvckxldmVsO1xuICB9IHwgbnVsbDtcblxuICBpY29uPzogc3RyaW5nIHwgbnVsbDtcblxuICBib29sZWFuVmFsdWU/OiBib29sZWFuIHwgbnVsbDtcblxuICBjaGlwcz86IFFkY0NhcmRDaGlwW10gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFFkY0NhcmRGb290ZXIge1xuICBpY29uPzogc3RyaW5nIHwgbnVsbDtcbiAgdGV4dD86IHN0cmluZyB8IG51bGw7XG4gIGFjdGlvbj86IFFkY0NhcmRBY3Rpb25Db25maWcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFFkY0NhcmRDaGlwIHtcbiAgLyoqXG4gICAqIENvbG9yIG9mIHRoZSBjaGlwLiBEZWZhdWx0cyB0byAncHJpbWFyeScuXG4gICAqICovXG4gIHN0YXRlOiBRZENoaXBDb2xvcjtcblxuICAvKipcbiAgICogVGV4dCBzaG93biBpbnNpZGUgdGhlIGNoaXAuXG4gICAqICovXG4gIGxhYmVsOiB7XG4gICAgLyoqXG4gICAgICogVHJhbnNsYXRhYmxlIGxhYmVsIHRleHQuXG4gICAgICogKi9cbiAgICBpMThuOiBzdHJpbmc7XG4gIH07XG4gIC8qKlxuICAgKiBPcHRpb25hbCBpY29uIHRvIGRpc3BsYXkgaW5zaWRlIHRoZSBjaGlwLlxuICAgKiAqL1xufVxuIl19
|