@quadrel-enterprise-ui/qdc-cards 19.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/README.md +25 -0
- package/esm2022/index.mjs +3 -0
- package/esm2022/lib/card/card.component.mjs +53 -0
- package/esm2022/lib/card/card.model.mjs +2 -0
- package/esm2022/lib/card/card.module.mjs +23 -0
- package/esm2022/lib/card/menu/card-menu.component.mjs +37 -0
- package/esm2022/lib/card/model/card-actions-config.interface.mjs +2 -0
- package/esm2022/lib/card-layout/card-layout.component.mjs +117 -0
- package/esm2022/lib/card-layout/card-layout.model.mjs +2 -0
- package/esm2022/lib/card-layout/card-layout.module.mjs +25 -0
- package/esm2022/lib/card-layout/card-status/card-status-height.directive.mjs +51 -0
- package/esm2022/lib/card-layout/card-status/card-status.component.mjs +112 -0
- package/esm2022/lib/card-layout/card-status/card-status.model.mjs +2 -0
- package/esm2022/lib/card-layout/card-status/pagination/pagination.model.mjs +2 -0
- package/esm2022/lib/shared/popover/cards-popover.module.mjs +19 -0
- package/esm2022/lib/shared/popover/cards-popover.service.mjs +23 -0
- package/esm2022/lib/shared/popover/popover/cards-popover.component.mjs +14 -0
- package/esm2022/lib/shared/popover/popover-on-click/cards-popover-on-click.directive.mjs +100 -0
- package/esm2022/quadrel-enterprise-ui-qdc-cards.mjs +5 -0
- package/index.d.ts +2 -0
- package/lib/card/card.component.d.ts +20 -0
- package/lib/card/card.model.d.ts +23 -0
- package/lib/card/card.module.d.ts +16 -0
- package/lib/card/menu/card-menu.component.d.ts +14 -0
- package/lib/card/model/card-actions-config.interface.d.ts +65 -0
- package/lib/card-layout/card-layout.component.d.ts +31 -0
- package/lib/card-layout/card-layout.model.d.ts +11 -0
- package/lib/card-layout/card-layout.module.d.ts +18 -0
- package/lib/card-layout/card-status/card-status-height.directive.d.ts +13 -0
- package/lib/card-layout/card-status/card-status.component.d.ts +25 -0
- package/lib/card-layout/card-status/card-status.model.d.ts +21 -0
- package/lib/card-layout/card-status/pagination/pagination.model.d.ts +26 -0
- package/lib/shared/popover/cards-popover.module.d.ts +9 -0
- package/lib/shared/popover/cards-popover.service.d.ts +10 -0
- package/lib/shared/popover/popover/cards-popover.component.d.ts +7 -0
- package/lib/shared/popover/popover-on-click/cards-popover-on-click.directive.d.ts +28 -0
- package/package.json +38 -0
|
@@ -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: "19.2.15", ngImport: i0, type: QdcCardStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
96
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", 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 <span *ngIf=\"!hideEntriesLabel\">\n {{ \"i18n.qdc-card.status.pagination.service.entries.label\" | translate }}\n </span>\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: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "19.2.15", 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 <span *ngIf=\"!hideEntriesLabel\">\n {{ \"i18n.qdc-card.status.pagination.service.entries.label\" | translate }}\n </span>\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=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1zdGF0dXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZGMtY2FyZHMvc3JjL2xpYi9jYXJkLWxheW91dC9jYXJkLXN0YXR1cy9jYXJkLXN0YXR1cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkYy1jYXJkcy9zcmMvbGliL2NhcmQtbGF5b3V0L2NhcmQtc3RhdHVzL2NhcmQtc3RhdHVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFFVCxNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFRdkQsTUFBTSxPQUFPLHNCQUFzQjtJQU5uQztRQU9ZLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFLdEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXRELG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDO1FBQzdDLHFCQUFnQixHQUFhLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7S0EyRjlDO0lBekZDLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2RixJQUFJLENBQUMsTUFBTSxD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WUFDSCxLQUFLO1NBQ04sQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FwR1Usc0JBQXNCO21HQUF0QixzQkFBc0IseVVDckJuQyw2MEZBK0VBOzs0RkQxRGEsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLGlCQUFpQixjQUdmLEtBQUs7OEJBR1AsaUJBQWlCO3NCQUExQixNQUFNO2dCQUNFLE1BQU07c0JBQWQsS0FBSztnQkFFMEMsY0FBYztzQkFBN0QsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBNkU5QyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBRZGNDYXJkU3RhdHVzQ29uZmlnIH0gZnJvbSAnLi9jYXJkLXN0YXR1cy5tb2RlbCc7XG5pbXBvcnQgeyBRZGNDYXJkQ29uZmlnIH0gZnJvbSAnLi4vLi4vY2FyZC9jYXJkLm1vZGVsJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncWRjLWNhcmQtc3RhdHVzJyxcbiAgdGVtcGxhdGVVcmw6ICdjYXJkLXN0YXR1cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydjYXJkLXN0YXR1cy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBRZGNDYXJkU3RhdHVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQE91dHB1dCgpIHBhZ2luYXRpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBASW5wdXQoKSBjb25maWchOiBRZGNDYXJkU3RhdHVzQ29uZmlnO1xuXG4gIEBWaWV3Q2hpbGQoJ2NhcmRzQ29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNhcmRzQ29udGFpbmVyPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgaGlkZUVudHJpZXNMYWJlbCA9IHdpbmRvdy5pbm5lcldpZHRoIDw9IDE2MDA7XG4gIGRlZmF1bHRQYWdlU2l6ZXM6IG51bWJlcltdID0gWzUsIDEwLCAyMCwgNTBdO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpZz8ucGFnaW5hdGlvbikge1xuICAgICAgaWYgKCF0aGlzLmNvbmZpZy5wYWdpbmF0aW9uLnBhZ2VTaXplcyB8fCB0aGlzLmNvbmZpZy5wYWdpbmF0aW9uLnBhZ2VTaXplcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5jb25maWcucGFnaW5hdGlvbi5wYWdlU2l6ZXMgPSB0aGlzLmRlZmF1bHRQYWdlU2l6ZXM7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuY29uZmlnLnBhZ2luYXRpb24ucGFnZVNpemUpIHtcbiAgICAgICAgdGhpcy5jb25maWcucGFnaW5hdGlvbi5wYWdlU2l6ZSA9IHRoaXMuY29uZmlnLnBhZ2luYXRpb24ucGFnZVNpemVzWzBdO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY29uZmlnLnBhZ2luYXRpb24uY3VycmVudFBhZ2UgPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmNvbmZpZy5wYWdpbmF0aW9uLmN1cnJlbnRQYWdlID0gMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgcGFnZWRDYXJkcygpOiBRZGNDYXJkQ29uZmlnW10ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jYXJkcztcbiAgfVxuXG4gIGdldCBwYWdpbmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wYWdpbmF0aW9uO1xuICB9XG5cbiAgZ29Ub1BhZ2UoZGVsdGE6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5wYWdpbmF0aW9uKSByZXR1cm47XG4gICAgY29uc3QgbmV3UGFnZSA9IHRoaXMucGFnaW5hdGlvbi5jdXJyZW50UGFnZSArIGRlbHRhO1xuICAgIGlmIChuZXdQYWdlID49IDAgJiYgbmV3UGFnZSA8IHRoaXMucGFnaW5hdGlvbi50b3RhbFBhZ2VzKSB7XG4gICAgICB0aGlzLnBhZ2luYXRpb24uY3VycmVudFBhZ2UgPSBuZXdQYWdlOyAvLyB1cGRhdGUgY3VycmVudCBwYWdlXG4gICAgICB0aGlzLnBhZ2luYXRpb24uaGFuZGxlcihuZXdQYWdlLCB0aGlzLnBhZ2luYXRpb24ucGFnZVNpemUpO1xuICAgICAgdGhpcy5wYWdpbmF0aW9uQ2hhbmdlZC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgZ29Ub0ZpcnN0UGFnZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uICYmIHRoaXMucGFnaW5hdGlvbi5jdXJyZW50UGFnZSAhPT0gMCkge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uLmN1cnJlbnRQYWdlID0gMDtcbiAgICAgIHRoaXMucGFnaW5hdGlvbi5oYW5kbGVyKDAsIHRoaXMucGFnaW5hdGlvbi5wYWdlU2l6ZSk7XG4gICAgICB0aGlzLnBhZ2luYXRpb25DaGFuZ2VkLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBnb1RvTGFzdFBhZ2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnBhZ2luYXRpb24pIHJldHVybjtcbiAgICBjb25zdCBsYXN0ID0gdGhpcy5wYWdpbmF0aW9uLnRvdGFsUGFnZXMgLSAxO1xuICAgIGlmIChsYXN0ID49IDAgJiYgdGhpcy5wYWdpbmF0aW9uLmN1cnJlbnRQYWdlICE9PSBsYXN0KSB7XG4gICAgICB0aGlzLnBhZ2luYXRpb24uY3VycmVudFBhZ2UgPSBsYXN0O1xuICAgICAgdGhpcy5wYWdpbmF0aW9uLmhhbmRsZXIobGFzdCwgdGhpcy5wYWdpbmF0aW9uLnBhZ2VTaXplKTtcbiAgICAgIHRoaXMucGFnaW5hdGlvbkNoYW5nZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFnZVNpemVDaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbikge1xuICAgICAgLy8gbmdNb2RlbCBoYXMgYWxyZWFkeSB1cGRhdGVkIHBhZ2VTaXplIGhlcmVcbiAgICAgIGNvbnN0IHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwodGhpcy5wYWdpbmF0aW9uLnRvdGFsRWxlbWVudHMgLyB0aGlzLnBhZ2luYXRpb24ucGFnZVNpemUpO1xuXG4gICAgICAvLyBJZiB0aGUgY3VycmVudCBwYWdlIGlzIG91dCBvZiByYW5nZSwgc25hcCBpdCB0byB0aGUgbGFzdCBwYWdlXG4gICAgICBpZiAodGhpcy5wYWdpbmF0aW9uLmN1cnJlbnRQYWdlID49IHRvdGFsUGFnZXMpIHtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLmN1cnJlbnRQYWdlID0gTWF0aC5tYXgoMCwgdG90YWxQYWdlcyAtIDEpO1xuICAgICAgfVxuICAgICAgdGhpcy5wYWdpbmF0aW9uLmhhbmRsZXIodGhpcy5wYWdpbmF0aW9uLmN1cnJlbnRQYWdlLCB0aGlzLnBhZ2luYXRpb24ucGFnZVNpemUpO1xuICAgICAgdGhpcy5wYWdpbmF0aW9uQ2hhbmdlZC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlRHJvcGRvd25JY29uKCk6IHZvaWQge1xuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSAhdGhpcy5pc0Ryb3Bkb3duT3BlbjtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICBvblJlc2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGVFbnRyaWVzTGFiZWwgPSB3aW5kb3cuaW5uZXJXaWR0aCA8PSAxNjAwO1xuICB9XG5cbiAgZ2V0UGFnaW5hdGlvbkluZm8oKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMucGFnaW5hdGlvbikgcmV0dXJuICcnO1xuXG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnBhZ2luYXRpb24udG90YWxFbGVtZW50cztcbiAgICBjb25zdCBwYWdlU2l6ZSA9IHRoaXMucGFnaW5hdGlvbi5wYWdlU2l6ZTtcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9IHRoaXMucGFnaW5hdGlvbi5jdXJyZW50UGFnZTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gdG90YWwgPT09IDAgPyAwIDogY3VycmVudFBhZ2UgKiBwYWdlU2l6ZSArIDE7XG4gICAgY29uc3QgZW5kID0gTWF0aC5taW4oc3RhcnQgKyBwYWdlU2l6ZSAtIDEsIHRvdGFsKTtcblxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdpMThuLnFkYy1jYXJkLnN0YXR1cy5wYWdpbmF0aW9uLnNlcnZpY2UuZnJvbS5sYWJlbCcsIHtcbiAgICAgIHN0YXJ0LFxuICAgICAgZW5kLFxuICAgICAgdG90YWxcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInFkYy1zdGF0dXNfX2NvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwicWRjLXN0YXR1c19faGVhZGVyXCI+XG4gICAge3sgY29uZmlnLnRpdGxlLmkxOG4gfCB0cmFuc2xhdGUgfX1cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInFkYy1zdGF0dXNfX2NhcmRzXCIgI2NhcmRzQ29udGFpbmVyIFtuZ0NsYXNzXT1cInsgZW1wdHk6ICFjb25maWcuY2FyZHMgfHwgY29uZmlnLmNhcmRzLmxlbmd0aCA9PT0gMCB9XCI+XG4gICAgQGlmICghY29uZmlnLmNhcmRzIHx8IGNvbmZpZy5jYXJkcy5sZW5ndGggPT09IDApIHtcbiAgICA8ZGl2IGNsYXNzPVwicWRjLXN0YXR1c19uby1jYXJkcy1tZXNzYWdlXCI+XG4gICAgICB7eyBcImkxOG4ucWRjLWNhcmRzLnN0YXR1cy5ub0NhcmRzLmxhYmVsXCIgfCB0cmFuc2xhdGUgfCBwbGFjZWhvbGRlciA6IFwidGl0bGVcIiA6IChjb25maWcudGl0bGUuaTE4biB8IHRyYW5zbGF0ZSkgfX1cbiAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHsgQGZvciAoY2FyZCBvZiBwYWdlZENhcmRzOyB0cmFjayBjYXJkKSB7XG4gICAgPHFkYy1jYXJkIFtjYXJkQ29uZmlnXT1cImNhcmRcIj48L3FkYy1jYXJkPlxuICAgIH0gQGlmIChjb25maWcucGFnaW5hdGlvbikge1xuICAgIDxkaXYgY2xhc3M9XCJxZGMtc3RhdHVzX19wYWdpbmF0aW9uLXJvd1wiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhaGlkZUVudHJpZXNMYWJlbFwiPlxuICAgICAgICAgIHt7IFwiaTE4bi5xZGMtY2FyZC5zdGF0dXMucGFnaW5hdGlvbi5zZXJ2aWNlLmVudHJpZXMubGFiZWxcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIHN0eWxlPVwiXG4gICAgICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNXB4O1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IFJvYm90bywgQXJpYWwsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBzYW5zLXNlcmlmO1xuICAgICAgICAgICAgY29sb3I6IHJnYig2OSwgNjksIDY5KTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzEyNXJlbTtcbiAgICAgICAgICBcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLnBhZ2luYXRpb24ucGFnZVNpemVcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duSWNvbigpXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBmb3IgKHNpemUgb2YgcGFnaW5hdGlvbj8ucGFnZVNpemVzOyB0cmFjayBzaXplKSB7XG4gICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJzaXplXCI+e3sgc2l6ZSB9fTwvb3B0aW9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9zZWxlY3Q+XG5cbiAgICAgICAgPHFkLWljb24gW2ljb25dPVwiaXNEcm9wZG93bk9wZW4gPyAnY3RybFRvcCcgOiAnY3RybERvd24nXCI+PC9xZC1pY29uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJxZGMtc3RhdHVzX19wYWdpbmF0aW9uLWluZm9cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJxZGMtc3RhdHVzX19wYWdpbmF0aW9uLWluZm9fX3RleHRcIj5cbiAgICAgICAgICB7eyBnZXRQYWdpbmF0aW9uSW5mbygpIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2PlxuICAgICAgICA8YnV0dG9uIHFkSWNvbkJ1dHRvbiBbZGlzYWJsZWRdPVwicGFnaW5hdGlvbj8uY3VycmVudFBhZ2UgPT09IDBcIiAoY2xpY2spPVwiZ29Ub0ZpcnN0UGFnZSgpXCI+XG4gICAgICAgICAgPHFkLWljb24gaWNvbj1cInBhZ2VGaXJzdDFcIj48L3FkLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHFkSWNvbkJ1dHRvbiBbZGlzYWJsZWRdPVwicGFnaW5hdGlvbj8uY3VycmVudFBhZ2UgPT09IDBcIiAoY2xpY2spPVwiZ29Ub1BhZ2UoLTEpXCI+XG4gICAgICAgICAgPHFkLWljb24gaWNvbj1cInRyaWFuZ2xlTGVmdFNvbGlkXCI+PC9xZC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHFkSWNvbkJ1dHRvblxuICAgICAgICAgIFtkaXNhYmxlZF09XCJwYWdpbmF0aW9uPy5jdXJyZW50UGFnZSA+PSAocGFnaW5hdGlvbj8udG90YWxQYWdlcyA/PyAxKSAtIDFcIlxuICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZSgxKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cWQtaWNvbiBpY29uPVwidHJpYW5nbGVSaWdodFNvbGlkXCI+PC9xZC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHFkSWNvbkJ1dHRvblxuICAgICAgICAgIFtkaXNhYmxlZF09XCJwYWdpbmF0aW9uPy5jdXJyZW50UGFnZSA+PSAocGFnaW5hdGlvbj8udG90YWxQYWdlcyA/PyAxKSAtIDFcIlxuICAgICAgICAgIChjbGljayk9XCJnb1RvTGFzdFBhZ2UoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cWQtaWNvbiBpY29uPVwicGFnZUxhc3RcIj48L3FkLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgfSB9XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1zdGF0dXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkYy1jYXJkcy9zcmMvbGliL2NhcmQtbGF5b3V0L2NhcmQtc3RhdHVzL2NhcmQtc3RhdHVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRZGNDYXJkQ29uZmlnIH0gZnJvbSAnLi4vLi4vY2FyZC9jYXJkLm1vZGVsJztcbmltcG9ydCB7IFFkY0NhcmRTdGF0dXNQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSAnLi9wYWdpbmF0aW9uL3BhZ2luYXRpb24ubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFFkY0NhcmRTdGF0dXNDb25maWcge1xuICAvKipcbiAgICogVGl0bGUgb2YgdGhlIGNhcmRzIGxheW91dCBjb21wb25lbnRcbiAgICogKi9cblxuICB0aXRsZToge1xuICAgIC8qKlxuICAgICAqIFRyYW5zbGF0YWJsZSB0aXRsZSB0ZXh0XG4gICAgICogKi9cbiAgICBpMThuOiBzdHJpbmc7XG4gIH07XG4gIC8qKlxuICAgKiBDYXJkc1xuICAgKiAqL1xuICBjYXJkczogUWRjQ2FyZENvbmZpZ1tdO1xuXG4gIC8qKlxuICAgKiBQYWdpbmF0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICogKi9cbiAgcGFnaW5hdGlvbj86IFFkY0NhcmRTdGF0dXNQYWdpbmF0aW9uQ29uZmlnO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWRjLWNhcmRzL3NyYy9saWIvY2FyZC1sYXlvdXQvY2FyZC1zdGF0dXMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFFkY0NhcmRTdGF0dXNQYWdpbmF0aW9uQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRvdGFsIG51bWJlciBvZiBlbGVtZW50c1xuICAgKiAqL1xuICB0b3RhbEVsZW1lbnRzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRvdGFsIG51bWJlciBvZiBwYWdlc1xuICAgKiAqL1xuICB0b3RhbFBhZ2VzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBhZ2Ugc2l6ZSAodG90YWwgZWxlbWVudHMgcGVyIHBhZ2UpXG4gICAqICovXG4gIHBhZ2VTaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHBhZ2UgKDAtYmFzZWQgaW5kZXgpXG4gICAqICovXG4gIGN1cnJlbnRQYWdlOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBhZ2luYXRpb24gaGFuZGxlclxuICAgKiAqL1xuICBoYW5kbGVyOiAocGFnZTogbnVtYmVyLCBzaXplOiBudW1iZXIpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGFycmF5IG9mIHBhZ2Ugc2l6ZXMgZm9yIGEgZHJvcGRvd25cbiAgICogKi9cbiAgcGFnZVNpemVzPzogbnVtYmVyW107XG59XG4iXX0=
|
|
@@ -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: "19.2.15", ngImport: i0, type: QdcCardsPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: QdcCardsPopoverModule, declarations: [QdcCardsPopoverComponent, QdcCardsPopoverOnClickDirective], imports: [CommonModule], exports: [QdcCardsPopoverOnClickDirective] }); }
|
|
9
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: QdcCardsPopoverModule, imports: [CommonModule] }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: QdcCardsPopoverModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
imports: [CommonModule],
|
|
15
|
+
declarations: [QdcCardsPopoverComponent, QdcCardsPopoverOnClickDirective],
|
|
16
|
+
exports: [QdcCardsPopoverOnClickDirective]
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZHMtcG9wb3Zlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkYy1jYXJkcy9zcmMvbGliL3NoYXJlZC9wb3BvdmVyL2NhcmRzLXBvcG92ZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOztBQU90RyxNQUFNLE9BQU8scUJBQXFCOytHQUFyQixxQkFBcUI7Z0hBQXJCLHFCQUFxQixpQkFIakIsd0JBQXdCLEVBQUUsK0JBQStCLGFBRDlELFlBQVksYUFFWiwrQkFBK0I7Z0hBRTlCLHFCQUFxQixZQUp0QixZQUFZOzs0RkFJWCxxQkFBcUI7a0JBTGpDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixZQUFZLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSwrQkFBK0IsQ0FBQztvQkFDekUsT0FBTyxFQUFFLENBQUMsK0JBQStCLENBQUM7aUJBQzNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBRZGNDYXJkc1BvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXIvY2FyZHMtcG9wb3Zlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUWRjQ2FyZHNQb3BvdmVyT25DbGlja0RpcmVjdGl2ZSB9IGZyb20gJy4vcG9wb3Zlci1vbi1jbGljay9jYXJkcy1wb3BvdmVyLW9uLWNsaWNrLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtRZGNDYXJkc1BvcG92ZXJDb21wb25lbnQsIFFkY0NhcmRzUG9wb3Zlck9uQ2xpY2tEaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbUWRjQ2FyZHNQb3BvdmVyT25DbGlja0RpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgUWRjQ2FyZHNQb3BvdmVyTW9kdWxlIHt9XG4iXX0=
|
|
@@ -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: "19.2.15", ngImport: i0, type: QdcCardsPopoverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
15
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: QdcCardsPopoverService, providedIn: 'root' }); }
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: QdcCardsPopoverService, decorators: [{
|
|
18
|
+
type: Injectable,
|
|
19
|
+
args: [{
|
|
20
|
+
providedIn: 'root'
|
|
21
|
+
}]
|
|
22
|
+
}] });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZHMtcG9wb3Zlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZGMtY2FyZHMvc3JjL2xpYi9zaGFyZWQvcG9wb3Zlci9jYXJkcy1wb3BvdmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQzs7QUFPN0MsTUFBTSxPQUFPLHNCQUFzQjtJQUhuQztRQUlVLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztLQVMvQztJQVBDLGdCQUFnQjtRQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxTQUFTLENBQUMsUUFBOEI7UUFDdEMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDOytHQVRVLHNCQUFzQjttSEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07OzRGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgUG9wb3ZlckNsb3NlQ2FsbGJhY2sgPSAoKSA9PiB2b2lkO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBRZGNDYXJkc1BvcG92ZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjbG9zZUhhbmRsZXIgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNsb3NlQWxsT3ZlcmxheXMoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZUhhbmRsZXIubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHN1YnNjcmliZShjYWxsYmFjazogUG9wb3ZlckNsb3NlQ2FsbGJhY2spOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLmNsb3NlSGFuZGxlci5zdWJzY3JpYmUoY2FsbGJhY2spO1xuICB9XG59XG4iXX0=
|
|
@@ -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: "19.2.15", ngImport: i0, type: QdcCardsPopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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: "19.2.15", 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=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZHMtcG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkYy1jYXJkcy9zcmMvbGliL3NoYXJlZC9wb3BvdmVyL3BvcG92ZXIvY2FyZHMtcG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkYy1jYXJkcy9zcmMvbGliL3NoYXJlZC9wb3BvdmVyL3BvcG92ZXIvY2FyZHMtcG9wb3Zlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQzs7O0FBUTlELE1BQU0sT0FBTyx3QkFBd0I7K0dBQXhCLHdCQUF3QjttR0FBeEIsd0JBQXdCLDhHQ1JyQywrREFDQTs7NEZET2Esd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNFLG1CQUFtQixjQUdqQixLQUFLOzhCQUlqQixPQUFPO3NCQUROLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZGMtY2FyZHMtcG9wb3ZlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJkcy1wb3BvdmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FyZHMtcG9wb3Zlci5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBRZGNDYXJkc1BvcG92ZXJDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBjb250ZW50ITogVGVtcGxhdGVSZWY8dW5rbm93bj47XG59XG4iLCI8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuIl19
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { ComponentPortal } from '@angular/cdk/portal';
|
|
2
|
+
import { Directive, EventEmitter, HostListener, Input, Output } from '@angular/core';
|
|
3
|
+
import { QdcCardsPopoverComponent } from '../popover/cards-popover.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/cdk/overlay";
|
|
6
|
+
import * as i2 from "../cards-popover.service";
|
|
7
|
+
export class QdcCardsPopoverOnClickDirective {
|
|
8
|
+
constructor(hostRef, overlayPositionBuilder, overlay, popoverService) {
|
|
9
|
+
this.hostRef = hostRef;
|
|
10
|
+
this.overlayPositionBuilder = overlayPositionBuilder;
|
|
11
|
+
this.overlay = overlay;
|
|
12
|
+
this.popoverService = popoverService;
|
|
13
|
+
this.popoverWidth = '204';
|
|
14
|
+
this.popoverCloseStrategy = 'onEveryClick';
|
|
15
|
+
this.opened = new EventEmitter();
|
|
16
|
+
this.closed = new EventEmitter();
|
|
17
|
+
this.host = this.hostRef.nativeElement;
|
|
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: "19.2.15", ngImport: i0, type: QdcCardsPopoverOnClickDirective, deps: [{ token: i0.ElementRef }, { token: i1.OverlayPositionBuilder }, { token: i1.Overlay }, { token: i2.QdcCardsPopoverService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
73
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", 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: "19.2.15", ngImport: i0, type: QdcCardsPopoverOnClickDirective, decorators: [{
|
|
76
|
+
type: Directive,
|
|
77
|
+
args: [{
|
|
78
|
+
selector: '[qdcCardsPopoverOnClick]',
|
|
79
|
+
standalone: false
|
|
80
|
+
}]
|
|
81
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.OverlayPositionBuilder }, { type: i1.Overlay }, { type: i2.QdcCardsPopoverService }], 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=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZHMtcG9wb3Zlci1vbi1jbGljay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkYy1jYXJkcy9zcmMvbGliL3NoYXJlZC9wb3BvdmVyL3BvcG92ZXItb24tY2xpY2svY2FyZHMtcG9wb3Zlci1vbi1jbGljay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7O0FBTzlFLE1BQU0sT0FBTywrQkFBK0I7SUFhMUMsWUFDVSxPQUFnQyxFQUNoQyxzQkFBOEMsRUFDOUMsT0FBZ0IsRUFDaEIsY0FBc0M7UUFIdEMsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFDaEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLG1CQUFjLEdBQWQsY0FBYyxDQUF3QjtRQVh2QyxpQkFBWSxHQUFvQixLQUFLLENBQUM7UUFFdEMseUJBQW9CLEdBQXNDLGNBQWMsQ0FBQztRQUUvRCxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM1QixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVE3QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQztZQUNoRyxHQUFHLENBQUMs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L0IsK0JBQStCOzs0RkFBL0IsK0JBQStCO2tCQUozQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFVBQVUsRUFBRSxLQUFLO2lCQUNsQjsrS0FNVSxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVhLE1BQU07c0JBQXhCLE1BQU07Z0JBQ1ksTUFBTTtzQkFBeEIsTUFBTTtnQkE4QlAsSUFBSTtzQkFESCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFxQmpDLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5LCBPdmVybGF5UG9zaXRpb25CdWlsZGVyLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFFkY0NhcmRzUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4uL3BvcG92ZXIvY2FyZHMtcG9wb3Zlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUWRjQ2FyZHNQb3BvdmVyU2VydmljZSB9IGZyb20gJy4uL2NhcmRzLXBvcG92ZXIuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1txZGNDYXJkc1BvcG92ZXJPbkNsaWNrXScsXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIFFkY0NhcmRzUG9wb3Zlck9uQ2xpY2tEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgaG9zdDogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgb3ZlcmxheVJlZiE6IE92ZXJsYXlSZWY7XG4gIHByaXZhdGUgY2xvc2VTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgQElucHV0KCkgcWRjQ2FyZHNQb3BvdmVyT25DbGljayE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuICBASW5wdXQoKSBwb3BvdmVyV2lkdGg6IHN0cmluZyB8ICdhdXRvJyA9ICcyMDQnO1xuICBASW5wdXQoKSBwb3NpdGlvblN0cmF0ZWd5ITogQ29ubmVjdGVkUG9zaXRpb247XG4gIEBJbnB1dCgpIHBvcG92ZXJDbG9zZVN0cmF0ZWd5OiAnb25PdXRzaWRlQ2xpY2snIHwgJ29uRXZlcnlDbGljaycgPSAnb25FdmVyeUNsaWNrJztcblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgb3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaG9zdFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBvdmVybGF5UG9zaXRpb25CdWlsZGVyOiBPdmVybGF5UG9zaXRpb25CdWlsZGVyLFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHBvcG92ZXJTZXJ2aWNlOiBRZGNDYXJkc1BvcG92ZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaG9zdCA9IHRoaXMuaG9zdFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVBvc2l0aW9uQnVpbGRlci5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuaG9zdCkud2l0aFBvc2l0aW9ucyhbXG4gICAgICAuLi4odGhpcy5wb3NpdGlvblN0cmF0ZWd5ID8gW3RoaXMucG9zaXRpb25TdHJhdGVneV0gOiBbXSksXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICBvdmVybGF5WTogJ3RvcCdcbiAgICAgIH1cbiAgICBdKTtcblxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoeyBwb3NpdGlvblN0cmF0ZWd5LCB3aWR0aDogdGhpcy5wb3BvdmVyV2lkdGgsIGRpc3Bvc2VPbk5hdmlnYXRpb246IHRydWUgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIHNob3coZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgY29uc3QgcG9wb3ZlclBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoUWRjQ2FyZHNQb3BvdmVyQ29tcG9uZW50KTtcbiAgICAgIGNvbnN0IHBvcG92ZXJSZWYgPSB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHBvcG92ZXJQb3J0YWwpO1xuXG4gICAgICBwb3BvdmVyUmVmLmluc3RhbmNlLmNvbnRlbnQgPSB0aGlzLnFkY0NhcmRzUG9wb3Zlck9uQ2xpY2s7XG4gICAgICB0aGlzLm9wZW5lZC5lbWl0KCk7XG5cbiAgICAgIHRoaXMucG9wb3ZlclNlcnZpY2UuY2xvc2VBbGxPdmVybGF5cygpO1xuXG4gICAgICB0aGlzLmNsb3NlU3Vic2NyaXB0aW9uID0gdGhpcy5wb3BvdmVyU2VydmljZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgY2xpY2tlZE91dHNpZGUoZXZlbnQ6IFBvaW50ZXJFdmVudCkge1xuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSAmJiB0aGlzLnNob3VsZENsb3NlKGV2ZW50KSkgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5vdmVybGF5UmVmPy5kZXRhY2goKTtcbiAgICB0aGlzLmNsb3NlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkQ2xvc2UoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyAoSFRNTEVsZW1lbnQgJiB7IGRpc2FibGVkPzogYm9vbGVhbiB9KSB8IG51bGw7XG5cbiAgICBpZiAoIXRoaXMub3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5wb3BvdmVyQ2xvc2VTdHJhdGVneSA9PT0gJ29uRXZlcnlDbGljaycpXG4gICAgICByZXR1cm4gISgodGFyZ2V0Py5jbGFzc0xpc3QgYXMgRE9NVG9rZW5MaXN0KT8uY29udGFpbnMoJ2Rpc2FibGVkJykgfHwgdGFyZ2V0Py5kaXNhYmxlZCk7XG5cbiAgICBpZiAodGhpcy5wb3BvdmVyQ2xvc2VTdHJhdGVneSA9PT0gJ29uT3V0c2lkZUNsaWNrJykge1xuICAgICAgY29uc3QgaG9zdEVsZW1lbnRIb3ZlcmVkID0gdGhpcy5ob3N0LnBhcmVudEVsZW1lbnQhLnF1ZXJ5U2VsZWN0b3IoJzpob3ZlcicpO1xuICAgICAgY29uc3Qgb3ZlcmxheUVsZW1lbnRIb3ZlcmVkID0gdGhpcy5vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJzpob3ZlcicpO1xuXG4gICAgICByZXR1cm4gIWhvc3RFbGVtZW50SG92ZXJlZCAmJiAhb3ZlcmxheUVsZW1lbnRIb3ZlcmVkO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhZHJlbC1lbnRlcnByaXNlLXVpLXFkYy1jYXJkcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvcWRjLWNhcmRzL3NyYy9xdWFkcmVsLWVudGVycHJpc2UtdWktcWRjLWNhcmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AfterContentInit, ChangeDetectorRef, OnChanges, TemplateRef } from '@angular/core';
|
|
2
|
+
import { QdcCardConfig } from './card.model';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class QdcCardComponent implements AfterContentInit, OnChanges {
|
|
5
|
+
private cdr;
|
|
6
|
+
/** JSON configuration driving the visual appearance of the card. */
|
|
7
|
+
cardConfig: QdcCardConfig;
|
|
8
|
+
/** Optional test-id for E2E / integration tests. */
|
|
9
|
+
testId: string;
|
|
10
|
+
hasHeader: boolean;
|
|
11
|
+
hasFooter: boolean;
|
|
12
|
+
get isMobile(): boolean;
|
|
13
|
+
constructor(cdr: ChangeDetectorRef);
|
|
14
|
+
ngAfterContentInit(): void;
|
|
15
|
+
ngOnChanges(): void;
|
|
16
|
+
private evaluateVisibility;
|
|
17
|
+
isTemplate(value: unknown): value is TemplateRef<unknown>;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QdcCardComponent, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<QdcCardComponent, "qdc-card", never, { "cardConfig": { "alias": "cardConfig"; "required": false; }; "testId": { "alias": "data-test-id"; "required": false; }; }, {}, never, never, false, never>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { QdcCardActionConfig, QdcCardBodyPair, QdcCardChip, QdcCardFooter } from './model/card-actions-config.interface';
|
|
2
|
+
export interface QdcCardConfig {
|
|
3
|
+
/**
|
|
4
|
+
* Optional icon name shown in the header, left of the title.
|
|
5
|
+
* */
|
|
6
|
+
icon?: string | null;
|
|
7
|
+
/**
|
|
8
|
+
* Main headline of the card.
|
|
9
|
+
* */
|
|
10
|
+
title?: string | null;
|
|
11
|
+
/**
|
|
12
|
+
* Optional subtitle shown under the title.
|
|
13
|
+
* */
|
|
14
|
+
subTitle?: string | null;
|
|
15
|
+
bodyPairs?: QdcCardBodyPair[];
|
|
16
|
+
chip?: QdcCardChip;
|
|
17
|
+
/**
|
|
18
|
+
* Optional actions to display in the card menu.
|
|
19
|
+
* */
|
|
20
|
+
menuActions?: QdcCardActionConfig[];
|
|
21
|
+
footer?: QdcCardFooter;
|
|
22
|
+
onCardClick?: () => void;
|
|
23
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { QdcCardComponent } from './card.component';
|
|
2
|
+
import { QdcCardMenuComponent } from './menu/card-menu.component';
|
|
3
|
+
import { QdcCardConfig } from './card.model';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./card.component";
|
|
6
|
+
import * as i2 from "./menu/card-menu.component";
|
|
7
|
+
import * as i3 from "@angular/common";
|
|
8
|
+
import * as i4 from "@ngx-translate/core";
|
|
9
|
+
import * as i5 from "@quadrel-enterprise-ui/framework";
|
|
10
|
+
import * as i6 from "../shared/popover/cards-popover.module";
|
|
11
|
+
export { QdcCardComponent, QdcCardConfig, QdcCardMenuComponent };
|
|
12
|
+
export declare class QdcCardModule {
|
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QdcCardModule, never>;
|
|
14
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<QdcCardModule, [typeof i1.QdcCardComponent, typeof i2.QdcCardMenuComponent], [typeof i3.CommonModule, typeof i4.TranslateModule, typeof i5.QdUiModule, typeof i6.QdcCardsPopoverModule], [typeof i1.QdcCardComponent, typeof i2.QdcCardMenuComponent]>;
|
|
15
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<QdcCardModule>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { OnDestroy } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { QdcCardActionConfig } from '../model/card-actions-config.interface';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class QdcCardMenuComponent implements OnDestroy {
|
|
6
|
+
set actions(actions: QdcCardActionConfig[]);
|
|
7
|
+
get actions$(): Observable<QdcCardActionConfig[]>;
|
|
8
|
+
testId: string;
|
|
9
|
+
private _actionsSubject;
|
|
10
|
+
private _destroyed$;
|
|
11
|
+
ngOnDestroy(): void;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QdcCardMenuComponent, never>;
|
|
13
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<QdcCardMenuComponent, "qdc-card-menu", never, { "actions": { "alias": "actions"; "required": false; }; "testId": { "alias": "data-test-id"; "required": false; }; }, {}, never, never, false, never>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { QdChipColor } from '@quadrel-enterprise-ui/framework';
|
|
2
|
+
import type { QdStatusIndicatorLevel, QdStatusIndicatorType } from '@quadrel-enterprise-ui/framework/lib/status-indicator/interfaces/status-indicator.interface';
|
|
3
|
+
export interface QdcCardActionConfig {
|
|
4
|
+
/**
|
|
5
|
+
* The label is shown as text in the UI for this action.
|
|
6
|
+
*/
|
|
7
|
+
label: {
|
|
8
|
+
/** This i18n key is translated directly inside the QdCardMenu component. */
|
|
9
|
+
i18n: string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* The handler to execute when the action is clicked.
|
|
13
|
+
*/
|
|
14
|
+
handler: () => void;
|
|
15
|
+
/**
|
|
16
|
+
* Whether the action is disabled or not
|
|
17
|
+
*
|
|
18
|
+
* * @default false
|
|
19
|
+
*/
|
|
20
|
+
isDisabled?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Optional icon to display in the action.
|
|
23
|
+
*/
|
|
24
|
+
icon?: string | null;
|
|
25
|
+
}
|
|
26
|
+
export interface QdcCardBodyPair {
|
|
27
|
+
/**
|
|
28
|
+
* Translatable label text.
|
|
29
|
+
* */
|
|
30
|
+
i18n: string;
|
|
31
|
+
/**
|
|
32
|
+
* Value to display next to the label.
|
|
33
|
+
* */
|
|
34
|
+
value?: string | number | boolean | null;
|
|
35
|
+
/**
|
|
36
|
+
* Optional Qd-Status-Indicator
|
|
37
|
+
* */
|
|
38
|
+
status?: {
|
|
39
|
+
type: QdStatusIndicatorType;
|
|
40
|
+
level: QdStatusIndicatorLevel;
|
|
41
|
+
} | null;
|
|
42
|
+
icon?: string | null;
|
|
43
|
+
booleanValue?: boolean | null;
|
|
44
|
+
chips?: QdcCardChip[] | null;
|
|
45
|
+
}
|
|
46
|
+
export interface QdcCardFooter {
|
|
47
|
+
icon?: string | null;
|
|
48
|
+
text?: string | null;
|
|
49
|
+
action?: QdcCardActionConfig | null;
|
|
50
|
+
}
|
|
51
|
+
export interface QdcCardChip {
|
|
52
|
+
/**
|
|
53
|
+
* Color of the chip. Defaults to 'primary'.
|
|
54
|
+
* */
|
|
55
|
+
state: QdChipColor;
|
|
56
|
+
/**
|
|
57
|
+
* Text shown inside the chip.
|
|
58
|
+
* */
|
|
59
|
+
label: {
|
|
60
|
+
/**
|
|
61
|
+
* Translatable label text.
|
|
62
|
+
* */
|
|
63
|
+
i18n: string;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { OnInit, OnChanges, SimpleChanges, NgZone } from '@angular/core';
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
|
+
import { BehaviorSubject } from 'rxjs';
|
|
4
|
+
import { QdFormDropdownConfiguration } from '@quadrel-enterprise-ui/framework';
|
|
5
|
+
import { QdcCardLayoutConfig } from './card-layout.model';
|
|
6
|
+
import { QdcCardStatusSameHeightDirective } from './card-status/card-status-height.directive';
|
|
7
|
+
import { QdcCardStatusConfig } from './card-status/card-status.model';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export declare class QdcCardLayoutComponent implements OnInit, OnChanges {
|
|
10
|
+
private ngZone;
|
|
11
|
+
config: QdcCardLayoutConfig;
|
|
12
|
+
cardStatusHeightDirective?: QdcCardStatusSameHeightDirective;
|
|
13
|
+
isMobile: boolean;
|
|
14
|
+
readonly MAX_COLUMNS = 5;
|
|
15
|
+
dropDownForm: FormGroup;
|
|
16
|
+
private statusTitlesDropDownConfig;
|
|
17
|
+
dropDownConfig: BehaviorSubject<QdFormDropdownConfiguration>;
|
|
18
|
+
selectedStatusTitle: BehaviorSubject<QdcCardStatusConfig>;
|
|
19
|
+
constructor(ngZone: NgZone);
|
|
20
|
+
ngOnInit(): void;
|
|
21
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
22
|
+
onPaginationChanged(): void;
|
|
23
|
+
onResize(): void;
|
|
24
|
+
private checkColumnLimit;
|
|
25
|
+
private updateLayoutState;
|
|
26
|
+
private initializeDropDown;
|
|
27
|
+
private updateSelectedStatus;
|
|
28
|
+
private setDropDownConfig;
|
|
29
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QdcCardLayoutComponent, never>;
|
|
30
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<QdcCardLayoutComponent, "qdc-card-layout", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, false, never>;
|
|
31
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { QdcCardStatusConfig } from './card-status/card-status.model';
|
|
2
|
+
export interface QdcCardLayoutConfig {
|
|
3
|
+
/**
|
|
4
|
+
* Title of the cards layout component
|
|
5
|
+
* */
|
|
6
|
+
layoutTitle: string;
|
|
7
|
+
/**
|
|
8
|
+
* Column with cards (max 5)
|
|
9
|
+
* */
|
|
10
|
+
cardStatusConfig: QdcCardStatusConfig[];
|
|
11
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { QdcCardLayoutComponent } from './card-layout.component';
|
|
2
|
+
import { QdcCardStatusComponent } from './card-status/card-status.component';
|
|
3
|
+
import { QdcCardStatusSameHeightDirective } from './card-status/card-status-height.directive';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./card-layout.component";
|
|
6
|
+
import * as i2 from "./card-status/card-status.component";
|
|
7
|
+
import * as i3 from "./card-status/card-status-height.directive";
|
|
8
|
+
import * as i4 from "@angular/common";
|
|
9
|
+
import * as i5 from "@angular/forms";
|
|
10
|
+
import * as i6 from "@ngx-translate/core";
|
|
11
|
+
import * as i7 from "@quadrel-enterprise-ui/framework";
|
|
12
|
+
import * as i8 from "../card/card.module";
|
|
13
|
+
export { QdcCardLayoutComponent, QdcCardStatusComponent, QdcCardStatusSameHeightDirective };
|
|
14
|
+
export declare class QdcCardLayoutModule {
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QdcCardLayoutModule, never>;
|
|
16
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<QdcCardLayoutModule, [typeof i1.QdcCardLayoutComponent, typeof i2.QdcCardStatusComponent, typeof i3.QdcCardStatusSameHeightDirective], [typeof i4.CommonModule, typeof i5.FormsModule, typeof i5.ReactiveFormsModule, typeof i6.TranslateModule, typeof i7.QdUiModule, typeof i8.QdcCardModule], [typeof i1.QdcCardLayoutComponent, typeof i2.QdcCardStatusComponent, typeof i3.QdcCardStatusSameHeightDirective]>;
|
|
17
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<QdcCardLayoutModule>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AfterViewInit, ElementRef, Renderer2 } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class QdcCardStatusSameHeightDirective implements AfterViewInit {
|
|
4
|
+
private el;
|
|
5
|
+
private renderer;
|
|
6
|
+
constructor(el: ElementRef, renderer: Renderer2);
|
|
7
|
+
ngAfterViewInit(): void;
|
|
8
|
+
onResize(): void;
|
|
9
|
+
triggerUpdate(): void;
|
|
10
|
+
private updateHeights;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QdcCardStatusSameHeightDirective, never>;
|
|
12
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<QdcCardStatusSameHeightDirective, "[qdcCardStatusSameHeight]", never, {}, {}, never, never, false, never>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { EventEmitter, ElementRef, OnInit } from '@angular/core';
|
|
2
|
+
import { QdcCardStatusConfig } from './card-status.model';
|
|
3
|
+
import { QdcCardConfig } from '../../card/card.model';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class QdcCardStatusComponent implements OnInit {
|
|
6
|
+
paginationChanged: EventEmitter<void>;
|
|
7
|
+
config: QdcCardStatusConfig;
|
|
8
|
+
cardsContainer?: ElementRef<HTMLElement>;
|
|
9
|
+
private readonly translate;
|
|
10
|
+
isDropdownOpen: boolean;
|
|
11
|
+
hideEntriesLabel: boolean;
|
|
12
|
+
defaultPageSizes: number[];
|
|
13
|
+
ngOnInit(): void;
|
|
14
|
+
get pagedCards(): QdcCardConfig[];
|
|
15
|
+
get pagination(): import("./pagination/pagination.model").QdcCardStatusPaginationConfig;
|
|
16
|
+
goToPage(delta: number): void;
|
|
17
|
+
goToFirstPage(): void;
|
|
18
|
+
goToLastPage(): void;
|
|
19
|
+
onPageSizeChange(): void;
|
|
20
|
+
toggleDropdownIcon(): void;
|
|
21
|
+
onResize(): void;
|
|
22
|
+
getPaginationInfo(): string;
|
|
23
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QdcCardStatusComponent, never>;
|
|
24
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<QdcCardStatusComponent, "qdc-card-status", never, { "config": { "alias": "config"; "required": false; }; }, { "paginationChanged": "paginationChanged"; }, never, never, false, never>;
|
|
25
|
+
}
|