@rangertechnologies/ngnxt 2.1.127 → 2.1.129
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/environments/version.mjs +2 -2
- package/esm2022/lib/components/cards/group-card/group-card.component.mjs +36 -0
- package/esm2022/lib/components/cards/group-info/group-info.component.mjs +102 -0
- package/esm2022/lib/components/cards/image-card/image-card.component.mjs +83 -0
- package/esm2022/lib/components/cards/info-card/info-card.component.mjs +109 -0
- package/esm2022/lib/components/custom-input/custom-input.component.mjs +7 -2
- package/esm2022/lib/components/datatable/datatable.component.mjs +19 -17
- package/esm2022/lib/nxt-app.module.mjs +32 -7
- package/esm2022/lib/pages/builder/element/element.component.mjs +51 -17
- package/esm2022/lib/pages/builder/form/form.component.mjs +13 -3
- package/esm2022/lib/pages/builder/properties/properties.component.mjs +49 -12
- package/esm2022/lib/pages/builder/templates/templates.component.mjs +35 -0
- package/esm2022/lib/pages/questionbook/questionbook.component.mjs +8 -3
- package/esm2022/lib/services/template.service.mjs +350 -0
- package/esm2022/public-api.mjs +6 -1
- package/fesm2022/rangertechnologies-ngnxt.mjs +851 -51
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/lib/components/cards/group-card/group-card.component.d.ts +13 -0
- package/lib/components/cards/group-info/group-info.component.d.ts +47 -0
- package/lib/components/cards/image-card/image-card.component.d.ts +34 -0
- package/lib/components/cards/info-card/info-card.component.d.ts +39 -0
- package/lib/components/image-cropper/component/image-cropper.component.d.ts +1 -1
- package/lib/nxt-app.module.d.ts +22 -17
- package/lib/pages/builder/element/element.component.d.ts +8 -2
- package/lib/pages/builder/form/form.component.d.ts +5 -1
- package/lib/pages/builder/properties/properties.component.d.ts +12 -2
- package/lib/pages/builder/templates/templates.component.d.ts +16 -0
- package/lib/services/template.service.d.ts +84 -0
- package/package.json +1 -1
- package/public-api.d.ts +4 -0
- package/rangertechnologies-ngnxt-2.1.129.tgz +0 -0
- package/rangertechnologies-ngnxt-2.1.127.tgz +0 -0
|
@@ -9,7 +9,7 @@ export const VERSION = {
|
|
|
9
9
|
"semver": null,
|
|
10
10
|
"suffix": "05a52cb-dirty",
|
|
11
11
|
"semverString": null,
|
|
12
|
-
"version": "2.1.
|
|
12
|
+
"version": "2.1.129"
|
|
13
13
|
};
|
|
14
14
|
/* tslint:enable */
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2Vudmlyb25tZW50cy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUMzRSxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ25CLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLGVBQWU7SUFDdEIsTUFBTSxFQUFFLFNBQVM7SUFDakIsVUFBVSxFQUFFLElBQUk7SUFDaEIsS0FBSyxFQUFFLElBQUk7SUFDWCxRQUFRLEVBQUUsSUFBSTtJQUNkLFFBQVEsRUFBRSxlQUFlO0lBQ3pCLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLFNBQVMsRUFBRSxTQUFTO0NBQ3ZCLENBQUM7QUFDRixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJTVBPUlRBTlQ6IFRISVMgRklMRSBJUyBBVVRPIEdFTkVSQVRFRCEgRE8gTk9UIE1BTlVBTExZIEVESVQgT1IgQ0hFQ0tJTiFcbi8qIHRzbGludDpkaXNhYmxlICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IHtcbiAgICBcImRpcnR5XCI6IHRydWUsXG4gICAgXCJyYXdcIjogXCIwNWE1MmNiLWRpcnR5XCIsXG4gICAgXCJoYXNoXCI6IFwiMDVhNTJjYlwiLFxuICAgIFwiZGlzdGFuY2VcIjogbnVsbCxcbiAgICBcInRhZ1wiOiBudWxsLFxuICAgIFwic2VtdmVyXCI6IG51bGwsXG4gICAgXCJzdWZmaXhcIjogXCIwNWE1MmNiLWRpcnR5XCIsXG4gICAgXCJzZW12ZXJTdHJpbmdcIjogbnVsbCxcbiAgICBcInZlcnNpb25cIjogXCIyLjEuMTI5XCJcbn07XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { NxtInfoCard } from '../info-card/info-card.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
export class NxtGroupCard {
|
|
7
|
+
title = 'title'; // card title
|
|
8
|
+
cardWidth = '250px'; // card width
|
|
9
|
+
cardHeight = '80px'; // card height
|
|
10
|
+
titleIconSrc = 'https://img.icons8.com/material-sharp/24/permanent-job.png'; // card title icon
|
|
11
|
+
infoCardArray = []; // array of info cards
|
|
12
|
+
buttonClick = new EventEmitter();
|
|
13
|
+
onButtonClick(event) {
|
|
14
|
+
const { button, cardData } = event;
|
|
15
|
+
this.buttonClick.emit(event);
|
|
16
|
+
}
|
|
17
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NxtGroupCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
18
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NxtGroupCard, isStandalone: true, selector: "nxt-group-card", inputs: { title: "title", cardWidth: "cardWidth", cardHeight: "cardHeight", titleIconSrc: "titleIconSrc", infoCardArray: "infoCardArray" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<!-- SKS4APR25 group card -->\n<div class=\"cards-container\" [style.width]=\"cardWidth\" [style.height]=\"cardHeight\">\n <div class=\"header\">\n <div class=\"title-container\">\n <img [src]=\"titleIconSrc\" alt=\"Icon\" class=\"title-icon\" *ngIf=\"titleIconSrc\">\n <h2 class=\"title\">{{ title }}</h2>\n </div>\n </div>\n \n <div class=\"cards-grid\">\n <div *ngFor=\"let card of infoCardArray\" class=\"card-wrapper\">\n <nxt-info-card \n [title]=\"card.title\"\n [description]=\"card.description\"\n [imgSrc]=\"card.imgSrc\"\n [hoverImgSrc]=\"card.hoverImgSrc\"\n [color]=\"card.color\"\n [hoverColor]=\"card.hoverColor\"\n [iconColor]=\"card.iconColor\"\n [iconHoverColor]=\"card.iconHoverColor\"\n [padding]=\"card.padding\"\n [isImageLeft]=\"card.isImageLeft\"\n [isImageRight]=\"card.isImageRight\"\n [isEdit]=\"card.isEdit\"\n [editConfig]=\"card.editConfig\"\n (buttonClick)=\"onButtonClick($event)\"\n ></nxt-info-card>\n </div>\n </div>\n </div>", styles: [".cards-container{font-family:Arial,sans-serif;margin:20px 0;border:1px solid #e0e0e0;border-radius:8px;padding:15px;background-color:#fff;overflow:auto}.header{margin-bottom:15px;position:sticky;top:0;background-color:#fff;z-index:1;padding-bottom:10px}.title-container{display:flex;align-items:center}.title-icon{width:24px;height:24px;margin-right:8px}.title{font-size:18px;font-weight:600;color:#333;margin:0}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:15px;overflow:visible}.card-wrapper{min-width:0}@media (max-width: 768px){.cards-grid{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NxtInfoCard, selector: "nxt-info-card", inputs: ["title", "value", "description", "content", "imgSrc", "hoverImgSrc", "color", "hoverColor", "padding", "isImageRight", "isImageLeft", "iconColor", "iconHoverColor", "isEdit", "editConfig"], outputs: ["buttonClick"] }] });
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NxtGroupCard, decorators: [{
|
|
21
|
+
type: Component,
|
|
22
|
+
args: [{ selector: 'nxt-group-card', standalone: true, imports: [CommonModule, NxtInfoCard], template: "<!-- SKS4APR25 group card -->\n<div class=\"cards-container\" [style.width]=\"cardWidth\" [style.height]=\"cardHeight\">\n <div class=\"header\">\n <div class=\"title-container\">\n <img [src]=\"titleIconSrc\" alt=\"Icon\" class=\"title-icon\" *ngIf=\"titleIconSrc\">\n <h2 class=\"title\">{{ title }}</h2>\n </div>\n </div>\n \n <div class=\"cards-grid\">\n <div *ngFor=\"let card of infoCardArray\" class=\"card-wrapper\">\n <nxt-info-card \n [title]=\"card.title\"\n [description]=\"card.description\"\n [imgSrc]=\"card.imgSrc\"\n [hoverImgSrc]=\"card.hoverImgSrc\"\n [color]=\"card.color\"\n [hoverColor]=\"card.hoverColor\"\n [iconColor]=\"card.iconColor\"\n [iconHoverColor]=\"card.iconHoverColor\"\n [padding]=\"card.padding\"\n [isImageLeft]=\"card.isImageLeft\"\n [isImageRight]=\"card.isImageRight\"\n [isEdit]=\"card.isEdit\"\n [editConfig]=\"card.editConfig\"\n (buttonClick)=\"onButtonClick($event)\"\n ></nxt-info-card>\n </div>\n </div>\n </div>", styles: [".cards-container{font-family:Arial,sans-serif;margin:20px 0;border:1px solid #e0e0e0;border-radius:8px;padding:15px;background-color:#fff;overflow:auto}.header{margin-bottom:15px;position:sticky;top:0;background-color:#fff;z-index:1;padding-bottom:10px}.title-container{display:flex;align-items:center}.title-icon{width:24px;height:24px;margin-right:8px}.title{font-size:18px;font-weight:600;color:#333;margin:0}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:15px;overflow:visible}.card-wrapper{min-width:0}@media (max-width: 768px){.cards-grid{grid-template-columns:1fr}}\n"] }]
|
|
23
|
+
}], propDecorators: { title: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], cardWidth: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}], cardHeight: [{
|
|
28
|
+
type: Input
|
|
29
|
+
}], titleIconSrc: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], infoCardArray: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}], buttonClick: [{
|
|
34
|
+
type: Output
|
|
35
|
+
}] } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvY29tcG9uZW50cy9jYXJkcy9ncm91cC1jYXJkL2dyb3VwLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY2FyZHMvZ3JvdXAtY2FyZC9ncm91cC1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBUy9ELE1BQU0sT0FBTyxZQUFZO0lBQ2QsS0FBSyxHQUFXLE9BQU8sQ0FBQyxDQUFDLGFBQWE7SUFDdEMsU0FBUyxHQUFXLE9BQU8sQ0FBQyxDQUFDLGFBQWE7SUFDMUMsVUFBVSxHQUFXLE1BQU0sQ0FBQyxDQUFDLGNBQWM7SUFDM0MsWUFBWSxHQUFXLDREQUE0RCxDQUFDLENBQUMsa0JBQWtCO0lBQ3ZHLGFBQWEsR0FBVSxFQUFFLENBQUMsQ0FBQyxzQkFBc0I7SUFFaEQsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFHaEQsYUFBYSxDQUFDLEtBQVU7UUFDdEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQzt3R0FiVSxZQUFZOzRGQUFaLFlBQVksK1BDWHpCLGdvQ0E2QlEsK3BCRHRCSSxZQUFZLGdRQUFFLFdBQVc7OzRGQUl4QixZQUFZO2tCQVB4QixTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7OEJBSzNCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE54dEluZm9DYXJkIH0gZnJvbSAnLi4vaW5mby1jYXJkL2luZm8tY2FyZC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdueHQtZ3JvdXAtY2FyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE54dEluZm9DYXJkXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyb3VwLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZ3JvdXAtY2FyZC5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBOeHRHcm91cENhcmQge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ3RpdGxlJzsgLy8gY2FyZCB0aXRsZVxuICBASW5wdXQoKSBjYXJkV2lkdGg6IHN0cmluZyA9ICcyNTBweCc7IC8vIGNhcmQgd2lkdGhcbiAgQElucHV0KCkgY2FyZEhlaWdodDogc3RyaW5nID0gJzgwcHgnOyAvLyBjYXJkIGhlaWdodFxuICBASW5wdXQoKSB0aXRsZUljb25TcmM6IHN0cmluZyA9ICdodHRwczovL2ltZy5pY29uczguY29tL21hdGVyaWFsLXNoYXJwLzI0L3Blcm1hbmVudC1qb2IucG5nJzsgLy8gY2FyZCB0aXRsZSBpY29uXG4gIEBJbnB1dCgpIGluZm9DYXJkQXJyYXk6IGFueVtdID0gW107IC8vIGFycmF5IG9mIGluZm8gY2FyZHNcblxuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgXG5cbiAgb25CdXR0b25DbGljayhldmVudDogYW55KSB7XG4gICAgY29uc3QgeyBidXR0b24sIGNhcmREYXRhIH0gPSBldmVudDtcbiAgICB0aGlzLmJ1dHRvbkNsaWNrLmVtaXQoZXZlbnQpO1xuICB9XG59XG4iLCI8IS0tIFNLUzRBUFIyNSBncm91cCBjYXJkIC0tPlxuPGRpdiBjbGFzcz1cImNhcmRzLWNvbnRhaW5lclwiIFtzdHlsZS53aWR0aF09XCJjYXJkV2lkdGhcIiBbc3R5bGUuaGVpZ2h0XT1cImNhcmRIZWlnaHRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtY29udGFpbmVyXCI+XG4gICAgICAgIDxpbWcgW3NyY109XCJ0aXRsZUljb25TcmNcIiBhbHQ9XCJJY29uXCIgY2xhc3M9XCJ0aXRsZS1pY29uXCIgKm5nSWY9XCJ0aXRsZUljb25TcmNcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwidGl0bGVcIj57eyB0aXRsZSB9fTwvaDI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZHMtZ3JpZFwiPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY2FyZCBvZiBpbmZvQ2FyZEFycmF5XCIgY2xhc3M9XCJjYXJkLXdyYXBwZXJcIj5cbiAgICAgICAgPG54dC1pbmZvLWNhcmQgXG4gICAgICAgICAgW3RpdGxlXT1cImNhcmQudGl0bGVcIlxuICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCJjYXJkLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICBbaW1nU3JjXT1cImNhcmQuaW1nU3JjXCJcbiAgICAgICAgICBbaG92ZXJJbWdTcmNdPVwiY2FyZC5ob3ZlckltZ1NyY1wiXG4gICAgICAgICAgW2NvbG9yXT1cImNhcmQuY29sb3JcIlxuICAgICAgICAgIFtob3ZlckNvbG9yXT1cImNhcmQuaG92ZXJDb2xvclwiXG4gICAgICAgICAgW2ljb25Db2xvcl09XCJjYXJkLmljb25Db2xvclwiXG4gICAgICAgICAgW2ljb25Ib3ZlckNvbG9yXT1cImNhcmQuaWNvbkhvdmVyQ29sb3JcIlxuICAgICAgICAgIFtwYWRkaW5nXT1cImNhcmQucGFkZGluZ1wiXG4gICAgICAgICAgW2lzSW1hZ2VMZWZ0XT1cImNhcmQuaXNJbWFnZUxlZnRcIlxuICAgICAgICAgIFtpc0ltYWdlUmlnaHRdPVwiY2FyZC5pc0ltYWdlUmlnaHRcIlxuICAgICAgICAgIFtpc0VkaXRdPVwiY2FyZC5pc0VkaXRcIlxuICAgICAgICAgIFtlZGl0Q29uZmlnXT1cImNhcmQuZWRpdENvbmZpZ1wiXG4gICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cIm9uQnV0dG9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgID48L254dC1pbmZvLWNhcmQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+Il19
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
export class NxtGroupInfo {
|
|
8
|
+
elementRef;
|
|
9
|
+
cardTitle = 'Title'; // card title
|
|
10
|
+
fields = []; // fields to display
|
|
11
|
+
isEditable = false; // is the card editable
|
|
12
|
+
allowAdd = false; // allow adding new fields
|
|
13
|
+
allowEditValues = false; // allow editing values
|
|
14
|
+
allowDelete = false; // allow deleting fields
|
|
15
|
+
cardWidth = '300px'; // card width
|
|
16
|
+
cardHeight = 'auto'; // card height
|
|
17
|
+
backgroundColor = 'white'; // card background color
|
|
18
|
+
borderRadius = '10px'; // card border radius
|
|
19
|
+
editConfig = null; // edit config
|
|
20
|
+
buttonClick = new EventEmitter();
|
|
21
|
+
editingIndex = -1;
|
|
22
|
+
isDropdownOpen = false;
|
|
23
|
+
constructor(elementRef) {
|
|
24
|
+
this.elementRef = elementRef;
|
|
25
|
+
}
|
|
26
|
+
getCardStyle() {
|
|
27
|
+
return {
|
|
28
|
+
width: this.cardWidth,
|
|
29
|
+
height: this.cardHeight,
|
|
30
|
+
backgroundColor: this.backgroundColor,
|
|
31
|
+
borderRadius: this.borderRadius || '8px'
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
startEditing(index) {
|
|
35
|
+
if (this.isEditable) {
|
|
36
|
+
this.editingIndex = index;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
saveItem(index) {
|
|
40
|
+
this.editingIndex = -1;
|
|
41
|
+
}
|
|
42
|
+
deleteItem(index) {
|
|
43
|
+
if (this.isEditable && this.allowDelete) {
|
|
44
|
+
this.fields.splice(index, 1);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
addNewItem() {
|
|
48
|
+
if (this.isEditable && this.allowAdd) {
|
|
49
|
+
this.fields.push({ icon: 'https://img.icons8.com/material-sharp/24/permanent-job.png', name: 'New Position', value: 0 });
|
|
50
|
+
this.editingIndex = this.fields.length - 1;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
toggleDropdown() {
|
|
54
|
+
this.isDropdownOpen = !this.isDropdownOpen;
|
|
55
|
+
}
|
|
56
|
+
closeDropdown() {
|
|
57
|
+
this.isDropdownOpen = false;
|
|
58
|
+
}
|
|
59
|
+
onClickOutside(event) {
|
|
60
|
+
if (this.isDropdownOpen && !this.elementRef.nativeElement.contains(event.target)) {
|
|
61
|
+
this.isDropdownOpen = false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
onButtonClick(button) {
|
|
65
|
+
this.buttonClick.emit({ button, fields: this.fields });
|
|
66
|
+
this.closeDropdown();
|
|
67
|
+
}
|
|
68
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NxtGroupInfo, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
69
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NxtGroupInfo, isStandalone: true, selector: "nxt-group-info", inputs: { cardTitle: "cardTitle", fields: "fields", isEditable: "isEditable", allowAdd: "allowAdd", allowEditValues: "allowEditValues", allowDelete: "allowDelete", cardWidth: "cardWidth", cardHeight: "cardHeight", backgroundColor: "backgroundColor", borderRadius: "borderRadius", editConfig: "editConfig" }, outputs: { buttonClick: "buttonClick" }, host: { listeners: { "document:click": "onClickOutside($event)" } }, ngImport: i0, template: "<div class=\"position-card\" [ngStyle]=\"getCardStyle()\">\n <div class=\"title-card-header\">\n <h3 class=\"card-title\">{{ cardTitle }}</h3>\n <div class=\"card-actions\" *ngIf=\"isEditable\">\n <button class=\"edit-button\" (click)=\"toggleDropdown(); $event.stopPropagation()\">\n <i class=\"fa fa-ellipsis-v\"></i>\n </button>\n <!-- SKS4APR25 Dropdown menu -->\n <div *ngIf=\"isDropdownOpen\" class=\"edit-dropdown-menu show\">\n <div *ngFor=\"let button of editConfig.buttons\" class=\"edit-dropdown-item\" (click)=\"onButtonClick(button)\">\n <div class=\"dropdown-button-content\">\n <img *ngIf=\"button.isImageSvg && button.iconSrc\" [src]=\"button.iconSrc\" alt=\"icon\" class=\"button-icon\">\n <span class=\"button-name\">{{ button.name }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"card-content\">\n <div class=\"position-item\" *ngFor=\"let field of fields; let i = index\">\n <div *ngIf=\"editingIndex !== i\" class=\"position-display\">\n <div class=\"position-icon\">\n <img [src]=\"field.icon\" alt=\"icon\">\n </div>\n <div class=\"position-name\">{{ field.name }}</div>\n <div class=\"position-value\">{{ field.value }}</div>\n <div class=\"edit-actions\" *ngIf=\"isEditable\">\n <button class=\"edit-btn\" (click)=\"startEditing(i)\" *ngIf=\"allowEditValues\">\n <i class=\"fa fa-pencil\"></i>\n </button>\n <button class=\"delete-btn\" (click)=\"deleteItem(i)\" *ngIf=\"allowDelete\">\n <i class=\"fa fa-trash\"></i>\n </button>\n </div>\n </div>\n\n <div *ngIf=\"editingIndex === i\" class=\"position-edit\">\n <div class=\"position-icon\">\n <img [src]=\"field.icon\" alt=\"icon\">\n </div>\n <input [(ngModel)]=\"field.name\" class=\"edit-name\" placeholder=\"Position name\">\n <input [(ngModel)]=\"field.value\" class=\"edit-value\" type=\"number\">\n <button class=\"save-btn\" (click)=\"saveItem(i)\">\n <i class=\"fa fa-check\"></i>\n </button>\n </div>\n </div>\n\n <div class=\"add-position\" *ngIf=\"isEditable && allowAdd\">\n <button class=\"add-btn\" (click)=\"addNewItem()\">\n <i class=\"fa fa-plus\"></i> Add\n </button>\n </div>\n </div>\n</div>", styles: [".position-card{box-shadow:0 2px 8px #0000001a;overflow:hidden;font-family:Arial,sans-serif}.title-card-header{display:flex;justify-content:space-between;align-items:center;padding-left:15px!important;padding:5px}.card-title{margin:0;font-size:16px;font-weight:500;color:#555}.edit-button{right:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:24px;height:24px;background-color:#eee;border-radius:15px;padding:2px;border:none}.edit-button:hover{color:#000;background-color:#f4f4f4}.card-content{padding:8px 0}.position-item{display:flex;padding:8px 16px}.position-display,.position-edit{display:flex;align-items:center;width:100%}.position-icon{width:24px;height:24px;margin-right:12px;display:flex;align-items:center;justify-content:center}.position-icon img{max-width:100%;max-height:100%}.position-name{flex-grow:1;color:#333}.position-value{font-weight:700;color:#333;margin-left:8px;min-width:30px;text-align:right}.edit-actions{display:flex;opacity:0;transition:opacity .2s}.position-item:hover .edit-actions{opacity:1}.edit-btn,.delete-btn,.save-btn{background:none;border:none;cursor:pointer;padding:4px;color:#999}.edit-btn:hover,.save-btn:hover{color:#2196f3}.delete-btn:hover{color:#f44336}.position-edit{padding:4px 0}.edit-name,.edit-value{border:1px solid #ddd;padding:4px 8px;border-radius:4px}.edit-name{flex-grow:1;margin-right:8px}.edit-value{width:50px;text-align:right;margin-right:8px}.add-position{padding:8px 16px;text-align:center}.add-btn{background:none;border:1px dashed #ccc;border-radius:4px;padding:6px 12px;width:100%;cursor:pointer;color:#999;transition:all .2s}.add-btn:hover{border-color:#2196f3;color:#2196f3}.edit-dropdown-menu{position:absolute;z-index:1000;min-width:80px;max-height:75px;background-color:#fff;overflow-y:auto;border:1px solid rgba(0,0,0,.15);border-radius:4px;box-shadow:0 6px 12px #0000002d}.edit-dropdown-item{display:block;width:100%;padding:8px 16px;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0;cursor:pointer}.edit-dropdown-item:is(:hover,:focus){color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-button-content{display:flex;align-items:center;gap:8px}.button-icon{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center}.button-icon ::ng-deep svg{width:20px;height:20px}.button-name{font-size:14px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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"] }] });
|
|
70
|
+
}
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NxtGroupInfo, decorators: [{
|
|
72
|
+
type: Component,
|
|
73
|
+
args: [{ selector: 'nxt-group-info', standalone: true, imports: [CommonModule, FormsModule], template: "<div class=\"position-card\" [ngStyle]=\"getCardStyle()\">\n <div class=\"title-card-header\">\n <h3 class=\"card-title\">{{ cardTitle }}</h3>\n <div class=\"card-actions\" *ngIf=\"isEditable\">\n <button class=\"edit-button\" (click)=\"toggleDropdown(); $event.stopPropagation()\">\n <i class=\"fa fa-ellipsis-v\"></i>\n </button>\n <!-- SKS4APR25 Dropdown menu -->\n <div *ngIf=\"isDropdownOpen\" class=\"edit-dropdown-menu show\">\n <div *ngFor=\"let button of editConfig.buttons\" class=\"edit-dropdown-item\" (click)=\"onButtonClick(button)\">\n <div class=\"dropdown-button-content\">\n <img *ngIf=\"button.isImageSvg && button.iconSrc\" [src]=\"button.iconSrc\" alt=\"icon\" class=\"button-icon\">\n <span class=\"button-name\">{{ button.name }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"card-content\">\n <div class=\"position-item\" *ngFor=\"let field of fields; let i = index\">\n <div *ngIf=\"editingIndex !== i\" class=\"position-display\">\n <div class=\"position-icon\">\n <img [src]=\"field.icon\" alt=\"icon\">\n </div>\n <div class=\"position-name\">{{ field.name }}</div>\n <div class=\"position-value\">{{ field.value }}</div>\n <div class=\"edit-actions\" *ngIf=\"isEditable\">\n <button class=\"edit-btn\" (click)=\"startEditing(i)\" *ngIf=\"allowEditValues\">\n <i class=\"fa fa-pencil\"></i>\n </button>\n <button class=\"delete-btn\" (click)=\"deleteItem(i)\" *ngIf=\"allowDelete\">\n <i class=\"fa fa-trash\"></i>\n </button>\n </div>\n </div>\n\n <div *ngIf=\"editingIndex === i\" class=\"position-edit\">\n <div class=\"position-icon\">\n <img [src]=\"field.icon\" alt=\"icon\">\n </div>\n <input [(ngModel)]=\"field.name\" class=\"edit-name\" placeholder=\"Position name\">\n <input [(ngModel)]=\"field.value\" class=\"edit-value\" type=\"number\">\n <button class=\"save-btn\" (click)=\"saveItem(i)\">\n <i class=\"fa fa-check\"></i>\n </button>\n </div>\n </div>\n\n <div class=\"add-position\" *ngIf=\"isEditable && allowAdd\">\n <button class=\"add-btn\" (click)=\"addNewItem()\">\n <i class=\"fa fa-plus\"></i> Add\n </button>\n </div>\n </div>\n</div>", styles: [".position-card{box-shadow:0 2px 8px #0000001a;overflow:hidden;font-family:Arial,sans-serif}.title-card-header{display:flex;justify-content:space-between;align-items:center;padding-left:15px!important;padding:5px}.card-title{margin:0;font-size:16px;font-weight:500;color:#555}.edit-button{right:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:24px;height:24px;background-color:#eee;border-radius:15px;padding:2px;border:none}.edit-button:hover{color:#000;background-color:#f4f4f4}.card-content{padding:8px 0}.position-item{display:flex;padding:8px 16px}.position-display,.position-edit{display:flex;align-items:center;width:100%}.position-icon{width:24px;height:24px;margin-right:12px;display:flex;align-items:center;justify-content:center}.position-icon img{max-width:100%;max-height:100%}.position-name{flex-grow:1;color:#333}.position-value{font-weight:700;color:#333;margin-left:8px;min-width:30px;text-align:right}.edit-actions{display:flex;opacity:0;transition:opacity .2s}.position-item:hover .edit-actions{opacity:1}.edit-btn,.delete-btn,.save-btn{background:none;border:none;cursor:pointer;padding:4px;color:#999}.edit-btn:hover,.save-btn:hover{color:#2196f3}.delete-btn:hover{color:#f44336}.position-edit{padding:4px 0}.edit-name,.edit-value{border:1px solid #ddd;padding:4px 8px;border-radius:4px}.edit-name{flex-grow:1;margin-right:8px}.edit-value{width:50px;text-align:right;margin-right:8px}.add-position{padding:8px 16px;text-align:center}.add-btn{background:none;border:1px dashed #ccc;border-radius:4px;padding:6px 12px;width:100%;cursor:pointer;color:#999;transition:all .2s}.add-btn:hover{border-color:#2196f3;color:#2196f3}.edit-dropdown-menu{position:absolute;z-index:1000;min-width:80px;max-height:75px;background-color:#fff;overflow-y:auto;border:1px solid rgba(0,0,0,.15);border-radius:4px;box-shadow:0 6px 12px #0000002d}.edit-dropdown-item{display:block;width:100%;padding:8px 16px;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0;cursor:pointer}.edit-dropdown-item:is(:hover,:focus){color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-button-content{display:flex;align-items:center;gap:8px}.button-icon{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center}.button-icon ::ng-deep svg{width:20px;height:20px}.button-name{font-size:14px}\n"] }]
|
|
74
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { cardTitle: [{
|
|
75
|
+
type: Input
|
|
76
|
+
}], fields: [{
|
|
77
|
+
type: Input
|
|
78
|
+
}], isEditable: [{
|
|
79
|
+
type: Input
|
|
80
|
+
}], allowAdd: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], allowEditValues: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], allowDelete: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], cardWidth: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], cardHeight: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], backgroundColor: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], borderRadius: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], editConfig: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}], buttonClick: [{
|
|
97
|
+
type: Output
|
|
98
|
+
}], onClickOutside: [{
|
|
99
|
+
type: HostListener,
|
|
100
|
+
args: ['document:click', ['$event']]
|
|
101
|
+
}] } });
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvY29tcG9uZW50cy9jYXJkcy9ncm91cC1pbmZvL2dyb3VwLWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY2FyZHMvZ3JvdXAtaW5mby9ncm91cC1pbmZvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFxQjdDLE1BQU0sT0FBTyxZQUFZO0lBa0JIO0lBakJYLFNBQVMsR0FBVyxPQUFPLENBQUMsQ0FBQyxhQUFhO0lBQzFDLE1BQU0sR0FBWSxFQUFFLENBQUMsQ0FBQyxvQkFBb0I7SUFDMUMsVUFBVSxHQUFZLEtBQUssQ0FBQyxDQUFDLHVCQUF1QjtJQUNwRCxRQUFRLEdBQVksS0FBSyxDQUFDLENBQUMsMEJBQTBCO0lBQ3JELGVBQWUsR0FBWSxLQUFLLENBQUMsQ0FBQyx1QkFBdUI7SUFDekQsV0FBVyxHQUFZLEtBQUssQ0FBQyxDQUFDLHdCQUF3QjtJQUN0RCxTQUFTLEdBQVcsT0FBTyxDQUFDLENBQUMsYUFBYTtJQUMxQyxVQUFVLEdBQVcsTUFBTSxDQUFDLENBQUMsY0FBYztJQUMzQyxlQUFlLEdBQVcsT0FBTyxDQUFDLENBQUMsd0JBQXdCO0lBQzNELFlBQVksR0FBVyxNQUFNLENBQUMsQ0FBQyxxQkFBcUI7SUFDcEQsVUFBVSxHQUFRLElBQUksQ0FBQyxDQUFD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V0FBVztzQkFBcEIsTUFBTTtnQkE2Q1AsY0FBYztzQkFEYixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuZXhwb3J0IGludGVyZmFjZSBGaWVsZCB7XG4gIGljb246IHN0cmluZzsgICAgICAgLy8gVVJMIG9yIHBhdGggdG8gdGhlIGljb25cbiAgbmFtZTogc3RyaW5nOyAgICAgICAvLyBOYW1lL2xhYmVsIG9mIHRoZSBwb3NpdGlvblxuICB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nOyAvLyBDb3VudC92YWx1ZSBmb3IgdGhpcyBwb3NpdGlvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhcmRDb25maWcge1xuICB3aWR0aD86IHN0cmluZztcbiAgaGVpZ2h0Pzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIGJvcmRlclJhZGl1cz86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnh0LWdyb3VwLWluZm8nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9ncm91cC1pbmZvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2dyb3VwLWluZm8uY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgTnh0R3JvdXBJbmZvIHtcbiAgQElucHV0KCkgY2FyZFRpdGxlOiBzdHJpbmcgPSAnVGl0bGUnOyAvLyBjYXJkIHRpdGxlXG4gIEBJbnB1dCgpIGZpZWxkczogRmllbGRbXSA9IFtdOyAvLyBmaWVsZHMgdG8gZGlzcGxheVxuICBASW5wdXQoKSBpc0VkaXRhYmxlOiBib29sZWFuID0gZmFsc2U7IC8vIGlzIHRoZSBjYXJkIGVkaXRhYmxlXG4gIEBJbnB1dCgpIGFsbG93QWRkOiBib29sZWFuID0gZmFsc2U7IC8vIGFsbG93IGFkZGluZyBuZXcgZmllbGRzXG4gIEBJbnB1dCgpIGFsbG93RWRpdFZhbHVlczogYm9vbGVhbiA9IGZhbHNlOyAvLyBhbGxvdyBlZGl0aW5nIHZhbHVlc1xuICBASW5wdXQoKSBhbGxvd0RlbGV0ZTogYm9vbGVhbiA9IGZhbHNlOyAvLyBhbGxvdyBkZWxldGluZyBmaWVsZHNcbiAgQElucHV0KCkgY2FyZFdpZHRoOiBzdHJpbmcgPSAnMzAwcHgnOyAvLyBjYXJkIHdpZHRoXG4gIEBJbnB1dCgpIGNhcmRIZWlnaHQ6IHN0cmluZyA9ICdhdXRvJzsgLy8gY2FyZCBoZWlnaHRcbiAgQElucHV0KCkgYmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnd2hpdGUnOyAvLyBjYXJkIGJhY2tncm91bmQgY29sb3JcbiAgQElucHV0KCkgYm9yZGVyUmFkaXVzOiBzdHJpbmcgPSAnMTBweCc7IC8vIGNhcmQgYm9yZGVyIHJhZGl1c1xuICBASW5wdXQoKSBlZGl0Q29uZmlnOiBhbnkgPSBudWxsOyAvLyBlZGl0IGNvbmZpZ1xuXG4gIEBPdXRwdXQoKSBidXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XG5cbiAgZWRpdGluZ0luZGV4OiBudW1iZXIgPSAtMTtcbiAgaXNEcm9wZG93bk9wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHsgfVxuXG4gIGdldENhcmRTdHlsZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IHRoaXMuY2FyZFdpZHRoLFxuICAgICAgaGVpZ2h0OiB0aGlzLmNhcmRIZWlnaHQsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMuYmFja2dyb3VuZENvbG9yLFxuICAgICAgYm9yZGVyUmFkaXVzOiB0aGlzLmJvcmRlclJhZGl1cyB8fCAnOHB4J1xuICAgIH07XG4gIH1cblxuICBzdGFydEVkaXRpbmcoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgIHRoaXMuZWRpdGluZ0luZGV4ID0gaW5kZXg7XG4gICAgfVxuICB9XG5cbiAgc2F2ZUl0ZW0oaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuZWRpdGluZ0luZGV4ID0gLTE7XG4gIH1cblxuICBkZWxldGVJdGVtKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0VkaXRhYmxlICYmIHRoaXMuYWxsb3dEZWxldGUpIHtcbiAgICAgIHRoaXMuZmllbGRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG5cbiAgYWRkTmV3SXRlbSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0VkaXRhYmxlICYmIHRoaXMuYWxsb3dBZGQpIHtcbiAgICAgIHRoaXMuZmllbGRzLnB1c2goeyBpY29uOiAnaHR0cHM6Ly9pbWcuaWNvbnM4LmNvbS9tYXRlcmlhbC1zaGFycC8yNC9wZXJtYW5lbnQtam9iLnBuZycsIG5hbWU6ICdOZXcgUG9zaXRpb24nLCB2YWx1ZTogMCB9KTtcbiAgICAgIHRoaXMuZWRpdGluZ0luZGV4ID0gdGhpcy5maWVsZHMubGVuZ3RoIC0gMTtcbiAgICB9XG4gIH1cbiAgdG9nZ2xlRHJvcGRvd24oKSB7XG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9ICF0aGlzLmlzRHJvcGRvd25PcGVuO1xuICB9XG4gIGNsb3NlRHJvcGRvd24oKSB7XG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuICB9XG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgb25DbGlja091dHNpZGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc0Ryb3Bkb3duT3BlbiAmJiAhdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxuICAgICkge1xuICAgICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBvbkJ1dHRvbkNsaWNrKGJ1dHRvbjogYW55KSB7XG4gICAgdGhpcy5idXR0b25DbGljay5lbWl0KHsgYnV0dG9uLCBmaWVsZHM6IHRoaXMuZmllbGRzIH0pO1xuICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicG9zaXRpb24tY2FyZFwiIFtuZ1N0eWxlXT1cImdldENhcmRTdHlsZSgpXCI+XG4gIDxkaXYgY2xhc3M9XCJ0aXRsZS1jYXJkLWhlYWRlclwiPlxuICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyBjYXJkVGl0bGUgfX08L2gzPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWFjdGlvbnNcIiAqbmdJZj1cImlzRWRpdGFibGVcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJlZGl0LWJ1dHRvblwiIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbGxpcHNpcy12XCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8IS0tIFNLUzRBUFIyNSBEcm9wZG93biBtZW51IC0tPlxuICAgICAgPGRpdiAqbmdJZj1cImlzRHJvcGRvd25PcGVuXCIgY2xhc3M9XCJlZGl0LWRyb3Bkb3duLW1lbnUgc2hvd1wiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBidXR0b24gb2YgZWRpdENvbmZpZy5idXR0b25zXCIgY2xhc3M9XCJlZGl0LWRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwib25CdXR0b25DbGljayhidXR0b24pXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWJ1dHRvbi1jb250ZW50XCI+XG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiYnV0dG9uLmlzSW1hZ2VTdmcgJiYgYnV0dG9uLmljb25TcmNcIiBbc3JjXT1cImJ1dHRvbi5pY29uU3JjXCIgYWx0PVwiaWNvblwiIGNsYXNzPVwiYnV0dG9uLWljb25cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uLW5hbWVcIj57eyBidXR0b24ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImNhcmQtY29udGVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1pdGVtXCIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgPGRpdiAqbmdJZj1cImVkaXRpbmdJbmRleCAhPT0gaVwiIGNsYXNzPVwicG9zaXRpb24tZGlzcGxheVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24taWNvblwiPlxuICAgICAgICAgIDxpbWcgW3NyY109XCJmaWVsZC5pY29uXCIgYWx0PVwiaWNvblwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLW5hbWVcIj57eyBmaWVsZC5uYW1lIH19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi12YWx1ZVwiPnt7IGZpZWxkLnZhbHVlIH19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0LWFjdGlvbnNcIiAqbmdJZj1cImlzRWRpdGFibGVcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZWRpdC1idG5cIiAoY2xpY2spPVwic3RhcnRFZGl0aW5nKGkpXCIgKm5nSWY9XCJhbGxvd0VkaXRWYWx1ZXNcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGVuY2lsXCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkZWxldGUtYnRuXCIgKGNsaWNrKT1cImRlbGV0ZUl0ZW0oaSlcIiAqbmdJZj1cImFsbG93RGVsZXRlXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRyYXNoXCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiZWRpdGluZ0luZGV4ID09PSBpXCIgY2xhc3M9XCJwb3NpdGlvbi1lZGl0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1pY29uXCI+XG4gICAgICAgICAgPGltZyBbc3JjXT1cImZpZWxkLmljb25cIiBhbHQ9XCJpY29uXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5uYW1lXCIgY2xhc3M9XCJlZGl0LW5hbWVcIiBwbGFjZWhvbGRlcj1cIlBvc2l0aW9uIG5hbWVcIj5cbiAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiZmllbGQudmFsdWVcIiBjbGFzcz1cImVkaXQtdmFsdWVcIiB0eXBlPVwibnVtYmVyXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJzYXZlLWJ0blwiIChjbGljayk9XCJzYXZlSXRlbShpKVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hlY2tcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWRkLXBvc2l0aW9uXCIgKm5nSWY9XCJpc0VkaXRhYmxlICYmIGFsbG93QWRkXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYWRkLWJ0blwiIChjbGljayk9XCJhZGROZXdJdGVtKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzXCI+PC9pPiBBZGRcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, Input } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class NxtImageCard {
|
|
6
|
+
imageSrc = ''; // image
|
|
7
|
+
iconSrc = ''; // icon
|
|
8
|
+
hoverIconSrc = ''; // hover icon
|
|
9
|
+
iconBgColor = '#e8eaf6'; // icon background color
|
|
10
|
+
iconHoverBgColor = '#c5cae9'; // icon hover background color
|
|
11
|
+
iconPosition = 'middle'; // icon position
|
|
12
|
+
title = ''; // title
|
|
13
|
+
content = ''; // content
|
|
14
|
+
cardData = []; // card data(key: value)
|
|
15
|
+
cardHeight = 'auto'; // card height
|
|
16
|
+
cardWidth = '300px'; // card width
|
|
17
|
+
cardColor = 'white'; // card color
|
|
18
|
+
padding = '20px'; // padding
|
|
19
|
+
cardImageHeight = '40%'; // card image height
|
|
20
|
+
cardImageWidth = '100%'; // card image width
|
|
21
|
+
cardImageColor = '10px'; // card image color
|
|
22
|
+
imagePadding = '10px'; // image padding
|
|
23
|
+
imageBorderRadius = '25px'; // image border radius
|
|
24
|
+
isHovered = false;
|
|
25
|
+
constructor() { }
|
|
26
|
+
ngOnInit() { }
|
|
27
|
+
getIconPositionClass() {
|
|
28
|
+
switch (this.iconPosition) {
|
|
29
|
+
case 'start': return 'justify-content-start';
|
|
30
|
+
case 'end': return 'justify-content-end';
|
|
31
|
+
default: return 'justify-content-center';
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
onMouseEnter() {
|
|
35
|
+
this.isHovered = true;
|
|
36
|
+
}
|
|
37
|
+
onMouseLeave() {
|
|
38
|
+
this.isHovered = false;
|
|
39
|
+
}
|
|
40
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NxtImageCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
41
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NxtImageCard, isStandalone: true, selector: "nxt-image-card", inputs: { imageSrc: "imageSrc", iconSrc: "iconSrc", hoverIconSrc: "hoverIconSrc", iconBgColor: "iconBgColor", iconHoverBgColor: "iconHoverBgColor", iconPosition: "iconPosition", title: "title", content: "content", cardData: "cardData", cardHeight: "cardHeight", cardWidth: "cardWidth", cardColor: "cardColor", padding: "padding", cardImageHeight: "cardImageHeight", cardImageWidth: "cardImageWidth", cardImageColor: "cardImageColor", imagePadding: "imagePadding", imageBorderRadius: "imageBorderRadius" }, ngImport: i0, template: "<div class=\"custom-card\" [style.height]=\"cardHeight\" [style.width]=\"cardWidth\" [style.background-color]=\"cardColor\"\n [style.padding]=\"padding\">\n\n <!-- Background Image -->\n <div class=\"card-image\" *ngIf=\"imageSrc\" [style.height]=\"cardImageHeight\" [style.width]=\"cardImageWidth\"\n [style.background-color]=\"cardImageColor\">\n <img [src]=\"imageSrc\" alt=\"Card background\" [style.padding]=\"imagePadding\"\n [style.border-radius]=\"imageBorderRadius\">\n </div>\n <!-- Icon Container -->\n <div class=\"icon-container d-flex\" [ngClass]=\"getIconPositionClass()\">\n <div class=\"icon-wrapper\" [style.border]=\"'4px solid ' + cardColor\"\n [style.background-color]=\"isHovered ? iconHoverBgColor : iconBgColor\" (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\">\n <img [src]=\"isHovered && hoverIconSrc ? hoverIconSrc : iconSrc\" alt=\"Icon\">\n </div>\n </div>\n <!-- Content -->\n <div class=\"card-content\">\n <h2 class=\"card-title\" *ngIf=\"title\">{{ title }}</h2>\n <p class=\"card-description\" *ngIf=\"content\">{{ content }}</p>\n </div>\n\n <!-- Data Points -->\n <div class=\"card-data\" *ngIf=\"cardData && cardData.length > 0\">\n <div class=\"data-row\">\n <div class=\"data-item\" *ngFor=\"let item of cardData\">\n <div class=\"data-value\">{{ item.value }}</div>\n <div class=\"data-key\">{{ item.key }}</div>\n </div>\n </div>\n </div>\n</div>", styles: [".custom-card{position:relative;border-radius:12px;box-shadow:0 4px 12px #0000001a;overflow:hidden;display:flex;flex-direction:column}.card-image{position:absolute;top:0;left:0;overflow:hidden}.card-image img{width:100%;height:100%;object-fit:cover}.icon-container{position:relative;margin-top:100px;z-index:1}.icon-wrapper{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background-color .3s ease}.icon-wrapper img{width:32px;height:32px;transition:all .3s ease}.card-content{text-align:center;padding:10px 15px;margin-top:auto}.card-content .card-title{font-size:20px;font-weight:600;margin-bottom:8px}.card-content .card-description{font-size:14px;color:#666;margin-bottom:20px}.card-data{margin-top:auto}.card-data .data-row{display:flex;justify-content:space-between;text-align:center}.card-data .data-item{flex:1;padding:10px}.card-data .data-item .data-value{font-size:22px;font-weight:700}.card-data .data-item .data-key{font-size:14px;color:#666}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
42
|
+
}
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NxtImageCard, decorators: [{
|
|
44
|
+
type: Component,
|
|
45
|
+
args: [{ selector: 'nxt-image-card', standalone: true, imports: [CommonModule], template: "<div class=\"custom-card\" [style.height]=\"cardHeight\" [style.width]=\"cardWidth\" [style.background-color]=\"cardColor\"\n [style.padding]=\"padding\">\n\n <!-- Background Image -->\n <div class=\"card-image\" *ngIf=\"imageSrc\" [style.height]=\"cardImageHeight\" [style.width]=\"cardImageWidth\"\n [style.background-color]=\"cardImageColor\">\n <img [src]=\"imageSrc\" alt=\"Card background\" [style.padding]=\"imagePadding\"\n [style.border-radius]=\"imageBorderRadius\">\n </div>\n <!-- Icon Container -->\n <div class=\"icon-container d-flex\" [ngClass]=\"getIconPositionClass()\">\n <div class=\"icon-wrapper\" [style.border]=\"'4px solid ' + cardColor\"\n [style.background-color]=\"isHovered ? iconHoverBgColor : iconBgColor\" (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\">\n <img [src]=\"isHovered && hoverIconSrc ? hoverIconSrc : iconSrc\" alt=\"Icon\">\n </div>\n </div>\n <!-- Content -->\n <div class=\"card-content\">\n <h2 class=\"card-title\" *ngIf=\"title\">{{ title }}</h2>\n <p class=\"card-description\" *ngIf=\"content\">{{ content }}</p>\n </div>\n\n <!-- Data Points -->\n <div class=\"card-data\" *ngIf=\"cardData && cardData.length > 0\">\n <div class=\"data-row\">\n <div class=\"data-item\" *ngFor=\"let item of cardData\">\n <div class=\"data-value\">{{ item.value }}</div>\n <div class=\"data-key\">{{ item.key }}</div>\n </div>\n </div>\n </div>\n</div>", styles: [".custom-card{position:relative;border-radius:12px;box-shadow:0 4px 12px #0000001a;overflow:hidden;display:flex;flex-direction:column}.card-image{position:absolute;top:0;left:0;overflow:hidden}.card-image img{width:100%;height:100%;object-fit:cover}.icon-container{position:relative;margin-top:100px;z-index:1}.icon-wrapper{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background-color .3s ease}.icon-wrapper img{width:32px;height:32px;transition:all .3s ease}.card-content{text-align:center;padding:10px 15px;margin-top:auto}.card-content .card-title{font-size:20px;font-weight:600;margin-bottom:8px}.card-content .card-description{font-size:14px;color:#666;margin-bottom:20px}.card-data{margin-top:auto}.card-data .data-row{display:flex;justify-content:space-between;text-align:center}.card-data .data-item{flex:1;padding:10px}.card-data .data-item .data-value{font-size:22px;font-weight:700}.card-data .data-item .data-key{font-size:14px;color:#666}\n"] }]
|
|
46
|
+
}], ctorParameters: () => [], propDecorators: { imageSrc: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], iconSrc: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], hoverIconSrc: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}], iconBgColor: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}], iconHoverBgColor: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}], iconPosition: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], title: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], content: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], cardData: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], cardHeight: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], cardWidth: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], cardColor: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], padding: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], cardImageHeight: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}], cardImageWidth: [{
|
|
75
|
+
type: Input
|
|
76
|
+
}], cardImageColor: [{
|
|
77
|
+
type: Input
|
|
78
|
+
}], imagePadding: [{
|
|
79
|
+
type: Input
|
|
80
|
+
}], imageBorderRadius: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}] } });
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvY29tcG9uZW50cy9jYXJkcy9pbWFnZS1jYXJkL2ltYWdlLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY2FyZHMvaW1hZ2UtY2FyZC9pbWFnZS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBYWpELE1BQU0sT0FBTyxZQUFZO0lBQ2QsUUFBUSxHQUFXLEVBQUUsQ0FBQyxDQUFDLFFBQVE7SUFDL0IsT0FBTyxHQUFXLEVBQUUsQ0FBQyxDQUFDLE9BQU87SUFDN0IsWUFBWSxHQUFXLEVBQUUsQ0FBQyxDQUFDLGFBQWE7SUFDeEMsV0FBVyxHQUFXLFNBQVMsQ0FBQyxDQUFDLHdCQUF3QjtJQUN6RCxnQkFBZ0IsR0FBVyxTQUFTLENBQUMsQ0FBQyw4QkFBOEI7SUFDcEUsWUFBWSxHQUErQixRQUFRLENBQUMsQ0FBQyxnQkFBZ0I7SUFDckUsS0FBSyxHQUFXLEVBQUUsQ0FBQyxDQUFDLFFBQVE7SUFDNUIsT0FBTyxHQUFXLEVBQUUsQ0FBQyxDQUFDLFVBQVU7SUFDaEMsUUFBUSxHQUFlLEVBQUUsQ0FBQyxDQUFDLHdCQUF3QjtJQUNuRCxVQUFVLEdBQVcsTUFBTSxDQUFDLENBQUMsY0FBYztJQUMzQyxTQUFTLEdBQVcsT0FBTyxDQUFDLENBQUMsYUFBYTtJQUMxQyxTQUFTLEdBQVcsT0FBTyxDQUFDLENBQUMsYUFBYTtJQUMxQyxPQUFPLEdBQVcsTUFBTSxDQUFDLENBQUMsVUFBVTtJQUNwQyxlQUFlLEdBQVcsS0FBSyxDQUFDLENBQUMsb0JBQW9CO0lBQ3JELGNBQWMsR0FBVyxNQUFNLENBQUMsQ0FBQyxtQkFBbUI7SUFDcEQsY0FBYyxHQUFXLE1BQU0sQ0FBQyxDQUFDLG1CQUFtQjtJQUNwRCxZQUFZLEdBQVcsTUFBTSxDQUFDLENBQUMsZ0JBQWdCO0lBQy9DLGlCQUFpQixHQUFXLE1BQU0sQ0FBQyxDQUFDLHNCQUFzQjtJQUVuRSxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRTNCLGdCQUFnQixDQUFDO0lBRWpCLFFBQVEsS0FBVyxDQUFDO0lBRXBCLG9CQUFvQjtRQUNsQixRQUFRLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxQixLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sdUJBQXVCLENBQUM7WUFDN0MsS0FBSyxLQUFLLENBQUMsQ0FBQyxPQUFPLHFCQUFxQixDQUFDO1lBQ3pDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sd0JBQXdCLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO3dHQXhDVSxZQUFZOzRGQUFaLFlBQVksb2tCQ2R6QixnOUNBZ0NNLGdqQ0R0Qk0sWUFBWTs7NEZBSVgsWUFBWTtrQkFQeEIsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7d0RBS2QsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW50ZXJmYWNlIENhcmREYXRhIHtcbiAga2V5OiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ254dC1pbWFnZS1jYXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2ltYWdlLWNhcmQuY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgTnh0SW1hZ2VDYXJkIHtcbiAgQElucHV0KCkgaW1hZ2VTcmM6IHN0cmluZyA9ICcnOyAvLyBpbWFnZVxuICBASW5wdXQoKSBpY29uU3JjOiBzdHJpbmcgPSAnJzsgLy8gaWNvblxuICBASW5wdXQoKSBob3Zlckljb25TcmM6IHN0cmluZyA9ICcnOyAvLyBob3ZlciBpY29uXG4gIEBJbnB1dCgpIGljb25CZ0NvbG9yOiBzdHJpbmcgPSAnI2U4ZWFmNic7IC8vIGljb24gYmFja2dyb3VuZCBjb2xvclxuICBASW5wdXQoKSBpY29uSG92ZXJCZ0NvbG9yOiBzdHJpbmcgPSAnI2M1Y2FlOSc7IC8vIGljb24gaG92ZXIgYmFja2dyb3VuZCBjb2xvclxuICBASW5wdXQoKSBpY29uUG9zaXRpb246ICdzdGFydCcgfCAnbWlkZGxlJyB8ICdlbmQnID0gJ21pZGRsZSc7IC8vIGljb24gcG9zaXRpb25cbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICcnOyAvLyB0aXRsZVxuICBASW5wdXQoKSBjb250ZW50OiBzdHJpbmcgPSAnJzsgLy8gY29udGVudFxuICBASW5wdXQoKSBjYXJkRGF0YTogQ2FyZERhdGFbXSA9IFtdOyAvLyBjYXJkIGRhdGEoa2V5OiB2YWx1ZSlcbiAgQElucHV0KCkgY2FyZEhlaWdodDogc3RyaW5nID0gJ2F1dG8nOyAvLyBjYXJkIGhlaWdodFxuICBASW5wdXQoKSBjYXJkV2lkdGg6IHN0cmluZyA9ICczMDBweCc7IC8vIGNhcmQgd2lkdGhcbiAgQElucHV0KCkgY2FyZENvbG9yOiBzdHJpbmcgPSAnd2hpdGUnOyAvLyBjYXJkIGNvbG9yXG4gIEBJbnB1dCgpIHBhZGRpbmc6IHN0cmluZyA9ICcyMHB4JzsgLy8gcGFkZGluZ1xuICBASW5wdXQoKSBjYXJkSW1hZ2VIZWlnaHQ6IHN0cmluZyA9ICc0MCUnOyAvLyBjYXJkIGltYWdlIGhlaWdodFxuICBASW5wdXQoKSBjYXJkSW1hZ2VXaWR0aDogc3RyaW5nID0gJzEwMCUnOyAvLyBjYXJkIGltYWdlIHdpZHRoXG4gIEBJbnB1dCgpIGNhcmRJbWFnZUNvbG9yOiBzdHJpbmcgPSAnMTBweCc7IC8vIGNhcmQgaW1hZ2UgY29sb3JcbiAgQElucHV0KCkgaW1hZ2VQYWRkaW5nOiBzdHJpbmcgPSAnMTBweCc7IC8vIGltYWdlIHBhZGRpbmdcbiAgQElucHV0KCkgaW1hZ2VCb3JkZXJSYWRpdXM6IHN0cmluZyA9ICcyNXB4JzsgLy8gaW1hZ2UgYm9yZGVyIHJhZGl1c1xuXG4gIGlzSG92ZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7IH1cblxuICBnZXRJY29uUG9zaXRpb25DbGFzcygpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5pY29uUG9zaXRpb24pIHtcbiAgICAgIGNhc2UgJ3N0YXJ0JzogcmV0dXJuICdqdXN0aWZ5LWNvbnRlbnQtc3RhcnQnO1xuICAgICAgY2FzZSAnZW5kJzogcmV0dXJuICdqdXN0aWZ5LWNvbnRlbnQtZW5kJztcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAnanVzdGlmeS1jb250ZW50LWNlbnRlcic7XG4gICAgfVxuICB9XG5cbiAgb25Nb3VzZUVudGVyKCk6IHZvaWQge1xuICAgIHRoaXMuaXNIb3ZlcmVkID0gdHJ1ZTtcbiAgfVxuXG4gIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzSG92ZXJlZCA9IGZhbHNlO1xuICB9XG59IiwiPGRpdiBjbGFzcz1cImN1c3RvbS1jYXJkXCIgW3N0eWxlLmhlaWdodF09XCJjYXJkSGVpZ2h0XCIgW3N0eWxlLndpZHRoXT1cImNhcmRXaWR0aFwiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImNhcmRDb2xvclwiXG4gIFtzdHlsZS5wYWRkaW5nXT1cInBhZGRpbmdcIj5cblxuICA8IS0tIEJhY2tncm91bmQgSW1hZ2UgLS0+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWltYWdlXCIgKm5nSWY9XCJpbWFnZVNyY1wiIFtzdHlsZS5oZWlnaHRdPVwiY2FyZEltYWdlSGVpZ2h0XCIgW3N0eWxlLndpZHRoXT1cImNhcmRJbWFnZVdpZHRoXCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJjYXJkSW1hZ2VDb2xvclwiPlxuICAgIDxpbWcgW3NyY109XCJpbWFnZVNyY1wiIGFsdD1cIkNhcmQgYmFja2dyb3VuZFwiIFtzdHlsZS5wYWRkaW5nXT1cImltYWdlUGFkZGluZ1wiXG4gICAgICBbc3R5bGUuYm9yZGVyLXJhZGl1c109XCJpbWFnZUJvcmRlclJhZGl1c1wiPlxuICA8L2Rpdj5cbiAgPCEtLSBJY29uIENvbnRhaW5lciAtLT5cbiAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyIGQtZmxleFwiIFtuZ0NsYXNzXT1cImdldEljb25Qb3NpdGlvbkNsYXNzKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaWNvbi13cmFwcGVyXCIgW3N0eWxlLmJvcmRlcl09XCInNHB4IHNvbGlkICcgKyBjYXJkQ29sb3JcIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiaXNIb3ZlcmVkID8gaWNvbkhvdmVyQmdDb2xvciA6IGljb25CZ0NvbG9yXCIgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIlxuICAgICAgKG1vdXNlbGVhdmUpPVwib25Nb3VzZUxlYXZlKClcIj5cbiAgICAgIDxpbWcgW3NyY109XCJpc0hvdmVyZWQgJiYgaG92ZXJJY29uU3JjID8gaG92ZXJJY29uU3JjIDogaWNvblNyY1wiIGFsdD1cIkljb25cIj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDwhLS0gQ29udGVudCAtLT5cbiAgPGRpdiBjbGFzcz1cImNhcmQtY29udGVudFwiPlxuICAgIDxoMiBjbGFzcz1cImNhcmQtdGl0bGVcIiAqbmdJZj1cInRpdGxlXCI+e3sgdGl0bGUgfX08L2gyPlxuICAgIDxwIGNsYXNzPVwiY2FyZC1kZXNjcmlwdGlvblwiICpuZ0lmPVwiY29udGVudFwiPnt7IGNvbnRlbnQgfX08L3A+XG4gIDwvZGl2PlxuXG4gIDwhLS0gRGF0YSBQb2ludHMgLS0+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWRhdGFcIiAqbmdJZj1cImNhcmREYXRhICYmIGNhcmREYXRhLmxlbmd0aCA+IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0YS1yb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRhLWl0ZW1cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjYXJkRGF0YVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YS12YWx1ZVwiPnt7IGl0ZW0udmFsdWUgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGEta2V5XCI+e3sgaXRlbS5rZXkgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class NxtInfoCard {
|
|
6
|
+
elementRef;
|
|
7
|
+
title = ''; // title of the card
|
|
8
|
+
value = ''; // value of the card
|
|
9
|
+
description = ''; // description of the card
|
|
10
|
+
content = ''; // content of the card
|
|
11
|
+
imgSrc = 'https://img.icons8.com/material-sharp/24/permanent-job.png'; // image source of the card
|
|
12
|
+
hoverImgSrc = ''; // hover image source of the card
|
|
13
|
+
color = '#ffffff'; // color of the card
|
|
14
|
+
hoverColor = '#f8f9fa'; // hover color of the card
|
|
15
|
+
padding = '20px'; // padding of the card
|
|
16
|
+
isImageRight = false; // whether the image is on the right side of the card
|
|
17
|
+
isImageLeft = true; // whether the image is on the left side of the card
|
|
18
|
+
iconColor = '#f8f9fa'; // color of the icon
|
|
19
|
+
iconHoverColor = '#ffffff'; // hover color of the icon
|
|
20
|
+
isEdit = false; // whether the card is editable
|
|
21
|
+
editConfig = null; // edit config of the card
|
|
22
|
+
buttonClick = new EventEmitter();
|
|
23
|
+
isHovered = false;
|
|
24
|
+
isDropdownOpen = false;
|
|
25
|
+
constructor(elementRef) {
|
|
26
|
+
this.elementRef = elementRef;
|
|
27
|
+
}
|
|
28
|
+
onMouseEnter() {
|
|
29
|
+
this.isHovered = true;
|
|
30
|
+
}
|
|
31
|
+
onMouseLeave() {
|
|
32
|
+
this.isHovered = false;
|
|
33
|
+
}
|
|
34
|
+
getCurrentImgSrc() {
|
|
35
|
+
return this.isHovered && this.hoverImgSrc ? this.hoverImgSrc : this.imgSrc;
|
|
36
|
+
}
|
|
37
|
+
getCurrentBgColor() {
|
|
38
|
+
return this.isHovered ? this.hoverColor : this.color;
|
|
39
|
+
}
|
|
40
|
+
getCurrentIconBgColor() {
|
|
41
|
+
return this.isHovered ? this.iconHoverColor : this.iconColor;
|
|
42
|
+
}
|
|
43
|
+
toggleDropdown() {
|
|
44
|
+
this.isDropdownOpen = !this.isDropdownOpen;
|
|
45
|
+
}
|
|
46
|
+
closeDropdown() {
|
|
47
|
+
this.isDropdownOpen = false;
|
|
48
|
+
}
|
|
49
|
+
onButtonClick(button) {
|
|
50
|
+
const cardData = {
|
|
51
|
+
title: this.title,
|
|
52
|
+
value: this.value,
|
|
53
|
+
description: this.description,
|
|
54
|
+
content: this.content
|
|
55
|
+
};
|
|
56
|
+
this.buttonClick.emit({ button, cardData });
|
|
57
|
+
this.closeDropdown();
|
|
58
|
+
}
|
|
59
|
+
hasEditButtons() {
|
|
60
|
+
return this.isEdit && this.editConfig && this.editConfig.buttons && this.editConfig.buttons.length > 0;
|
|
61
|
+
}
|
|
62
|
+
onClickOutside(event) {
|
|
63
|
+
if (this.isDropdownOpen && !this.elementRef.nativeElement.contains(event.target)) {
|
|
64
|
+
this.isDropdownOpen = false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NxtInfoCard, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NxtInfoCard, isStandalone: true, selector: "nxt-info-card", inputs: { title: "title", value: "value", description: "description", content: "content", imgSrc: "imgSrc", hoverImgSrc: "hoverImgSrc", color: "color", hoverColor: "hoverColor", padding: "padding", isImageRight: "isImageRight", isImageLeft: "isImageLeft", iconColor: "iconColor", iconHoverColor: "iconHoverColor", isEdit: "isEdit", editConfig: "editConfig" }, outputs: { buttonClick: "buttonClick" }, host: { listeners: { "document:click": "onClickOutside($event)" } }, ngImport: i0, template: "<div class=\"workforce-card\" [ngStyle]=\"{'background-color': getCurrentBgColor(), 'padding': padding}\"\n (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n\n <div class=\"card-content\">\n <!-- Left image -->\n <div *ngIf=\"isImageLeft\" class=\"image-container left-image\"\n [ngStyle]=\"{'background-color': getCurrentIconBgColor()}\">\n <img [src]=\"getCurrentImgSrc()\" alt=\"icon\">\n </div>\n\n <!-- Card text content -->\n <div class=\"text-content\">\n <div class=\"title\">{{ title }}</div>\n <div class=\"value\">{{ value }}</div>\n <div *ngIf=\"description\" class=\"description\">{{ description }}</div>\n <div *ngIf=\"content\" class=\"additional-content\">{{ content }}</div>\n </div>\n\n <!-- Right image -->\n <div *ngIf=\"isImageRight\" class=\"image-container right-image\"\n [ngStyle]=\"{'background-color': getCurrentIconBgColor()}\">\n <img [src]=\"getCurrentImgSrc()\" alt=\"icon\">\n </div>\n\n <!-- Edit button -->\n <div *ngIf=\"isEdit\" class=\"edit-button\" (click)=\"toggleDropdown(); $event.stopPropagation()\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#bababa\">\n <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\n <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\n <g id=\"SVGRepo_iconCarrier\">\n <path\n d=\"M13 5C13 4.44772 12.5523 4 12 4C11.4477 4 11 4.44772 11 5C11 5.55228 11.4477 6 12 6C12.5523 6 13 5.55228 13 5Z\"\n stroke=\"#d4d4d4\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path\n d=\"M13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13C12.5523 13 13 12.5523 13 12Z\"\n stroke=\"#d4d4d4\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path\n d=\"M13 19C13 18.4477 12.5523 18 12 18C11.4477 18 11 18.4477 11 19C11 19.5523 11.4477 20 12 20C12.5523 20 13 19.5523 13 19Z\"\n stroke=\"#d4d4d4\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n </svg>\n </div>\n <!-- Dropdown menu -->\n <div *ngIf=\"isDropdownOpen\" class=\"edit-dropdown-menu show\">\n <div *ngFor=\"let button of editConfig.buttons\" class=\"edit-dropdown-item\" (click)=\"onButtonClick(button)\">\n <div class=\"dropdown-button-content\">\n <img *ngIf=\"button.isImageSvg && button.iconSrc\" [src]=\"button.iconSrc\" alt=\"icon\" class=\"button-icon\">\n <span class=\"button-name\">{{ button.name }}</span>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [".workforce-card{border-radius:8px;box-shadow:0 2px 8px #0000001a;transition:all .3s ease;display:flex;align-items:center;position:relative;width:100%;max-width:300px;box-sizing:border-box}.card-content{display:flex;align-items:flex-start;width:100%;position:relative}.image-container{display:flex;align-items:center;justify-content:center;border-radius:50%;width:48px;height:48px;flex-shrink:0}.image-container img{width:24px;height:24px;object-fit:contain}.left-image{margin-right:16px;margin-top:4px}.right-image{margin-left:16px;margin-top:4px}.text-content{flex-grow:1;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;-webkit-hyphens:auto;hyphens:auto}.title{color:#6c757d;font-size:14px;margin-bottom:4px}.value{color:#192656;font-size:24px;font-weight:700;line-height:1.2}.description{color:#6c757d;font-size:12px;margin-top:4px}.additional-content{margin-top:8px;font-size:14px;line-height:1.4}.edit-button{position:absolute;top:-9px;right:-16px;cursor:pointer;color:#6c757d;display:flex;align-items:center;justify-content:center;width:24px;height:24px;background-color:#fff;border-radius:15px;padding:2px}.edit-button:hover{color:#000;background-color:#f4f4f4}.edit-dropdown-menu{position:absolute;top:18%;right:0;z-index:1000;min-width:80px;max-height:75px;background-color:#fff;overflow-y:auto;border:1px solid rgba(0,0,0,.15);border-radius:4px;box-shadow:0 6px 12px #0000002d}.edit-dropdown-item{display:block;width:100%;padding:8px 16px;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0;cursor:pointer}.edit-dropdown-item:is(:hover,:focus){color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-button-content{display:flex;align-items:center;gap:8px}.button-icon{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center}.button-icon ::ng-deep svg{width:20px;height:20px}.button-name{font-size:14px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
69
|
+
}
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NxtInfoCard, decorators: [{
|
|
71
|
+
type: Component,
|
|
72
|
+
args: [{ selector: 'nxt-info-card', standalone: true, imports: [CommonModule], template: "<div class=\"workforce-card\" [ngStyle]=\"{'background-color': getCurrentBgColor(), 'padding': padding}\"\n (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n\n <div class=\"card-content\">\n <!-- Left image -->\n <div *ngIf=\"isImageLeft\" class=\"image-container left-image\"\n [ngStyle]=\"{'background-color': getCurrentIconBgColor()}\">\n <img [src]=\"getCurrentImgSrc()\" alt=\"icon\">\n </div>\n\n <!-- Card text content -->\n <div class=\"text-content\">\n <div class=\"title\">{{ title }}</div>\n <div class=\"value\">{{ value }}</div>\n <div *ngIf=\"description\" class=\"description\">{{ description }}</div>\n <div *ngIf=\"content\" class=\"additional-content\">{{ content }}</div>\n </div>\n\n <!-- Right image -->\n <div *ngIf=\"isImageRight\" class=\"image-container right-image\"\n [ngStyle]=\"{'background-color': getCurrentIconBgColor()}\">\n <img [src]=\"getCurrentImgSrc()\" alt=\"icon\">\n </div>\n\n <!-- Edit button -->\n <div *ngIf=\"isEdit\" class=\"edit-button\" (click)=\"toggleDropdown(); $event.stopPropagation()\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#bababa\">\n <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\n <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\n <g id=\"SVGRepo_iconCarrier\">\n <path\n d=\"M13 5C13 4.44772 12.5523 4 12 4C11.4477 4 11 4.44772 11 5C11 5.55228 11.4477 6 12 6C12.5523 6 13 5.55228 13 5Z\"\n stroke=\"#d4d4d4\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path\n d=\"M13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13C12.5523 13 13 12.5523 13 12Z\"\n stroke=\"#d4d4d4\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path\n d=\"M13 19C13 18.4477 12.5523 18 12 18C11.4477 18 11 18.4477 11 19C11 19.5523 11.4477 20 12 20C12.5523 20 13 19.5523 13 19Z\"\n stroke=\"#d4d4d4\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </g>\n </svg>\n </div>\n <!-- Dropdown menu -->\n <div *ngIf=\"isDropdownOpen\" class=\"edit-dropdown-menu show\">\n <div *ngFor=\"let button of editConfig.buttons\" class=\"edit-dropdown-item\" (click)=\"onButtonClick(button)\">\n <div class=\"dropdown-button-content\">\n <img *ngIf=\"button.isImageSvg && button.iconSrc\" [src]=\"button.iconSrc\" alt=\"icon\" class=\"button-icon\">\n <span class=\"button-name\">{{ button.name }}</span>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [".workforce-card{border-radius:8px;box-shadow:0 2px 8px #0000001a;transition:all .3s ease;display:flex;align-items:center;position:relative;width:100%;max-width:300px;box-sizing:border-box}.card-content{display:flex;align-items:flex-start;width:100%;position:relative}.image-container{display:flex;align-items:center;justify-content:center;border-radius:50%;width:48px;height:48px;flex-shrink:0}.image-container img{width:24px;height:24px;object-fit:contain}.left-image{margin-right:16px;margin-top:4px}.right-image{margin-left:16px;margin-top:4px}.text-content{flex-grow:1;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;-webkit-hyphens:auto;hyphens:auto}.title{color:#6c757d;font-size:14px;margin-bottom:4px}.value{color:#192656;font-size:24px;font-weight:700;line-height:1.2}.description{color:#6c757d;font-size:12px;margin-top:4px}.additional-content{margin-top:8px;font-size:14px;line-height:1.4}.edit-button{position:absolute;top:-9px;right:-16px;cursor:pointer;color:#6c757d;display:flex;align-items:center;justify-content:center;width:24px;height:24px;background-color:#fff;border-radius:15px;padding:2px}.edit-button:hover{color:#000;background-color:#f4f4f4}.edit-dropdown-menu{position:absolute;top:18%;right:0;z-index:1000;min-width:80px;max-height:75px;background-color:#fff;overflow-y:auto;border:1px solid rgba(0,0,0,.15);border-radius:4px;box-shadow:0 6px 12px #0000002d}.edit-dropdown-item{display:block;width:100%;padding:8px 16px;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0;cursor:pointer}.edit-dropdown-item:is(:hover,:focus){color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-button-content{display:flex;align-items:center;gap:8px}.button-icon{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center}.button-icon ::ng-deep svg{width:20px;height:20px}.button-name{font-size:14px}\n"] }]
|
|
73
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { title: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], value: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], description: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}], content: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}], imgSrc: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}], hoverImgSrc: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}], color: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], hoverColor: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], padding: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], isImageRight: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}], isImageLeft: [{
|
|
94
|
+
type: Input
|
|
95
|
+
}], iconColor: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], iconHoverColor: [{
|
|
98
|
+
type: Input
|
|
99
|
+
}], isEdit: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], editConfig: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], buttonClick: [{
|
|
104
|
+
type: Output
|
|
105
|
+
}], onClickOutside: [{
|
|
106
|
+
type: HostListener,
|
|
107
|
+
args: ['document:click', ['$event']]
|
|
108
|
+
}] } });
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2NhcmRzL2luZm8tY2FyZC9pbmZvLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY2FyZHMvaW5mby1jYXJkL2luZm8tY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVNqRyxNQUFNLE9BQU8sV0FBVztJQTJCRjtJQTFCWCxLQUFLLEdBQVcsRUFBRSxDQUFDLENBQUMsb0JBQW9CO0lBQ3hDLEtBQUssR0FBb0IsRUFBRSxDQUFDLENBQUMsb0JBQW9CO0lBQ2pELFdBQVcsR0FBVyxFQUFFLENBQUMsQ0FBQywwQkFBMEI7SUFDcEQsT0FBTyxHQUFXLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQjtJQUU1QyxNQUFNLEdBQVcsNERBQTRELENBQUMsQ0FBRSwyQkFBMkI7SUFDM0csV0FBVyxHQUFXLEVBQUUsQ0FBQyxDQUFDLGlDQUFpQztJQUUzRCxLQUFLLEdBQVcsU0FBUyxDQUFDLENBQUMsb0JBQW9CO0lBQy9DLFVBQVUsR0FBVyxTQUFTLENBQUMsQ0FBQywwQkFBMEI7SUFDMUQsT0FBTyxHQUFXLE1BQU0sQ0FBQyxDQUFDLHNCQUFzQjtJQUVoRCxZQUFZLEdBQVksS0FBSyxDQUFDLENBQUMscURBQXFEO0lBQ3BGLFdBQVcsR0FBWSxJQUFJLENBQUMsQ0FBQyxvREFBb0Q7SUFDakYsU0FBUyxHQUFXLFNBQVMsQ0FBQyxDQUFDLG9C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SztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBZ0RQLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ254dC1pbmZvLWNhcmQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2luZm8tY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9pbmZvLWNhcmQuY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgTnh0SW5mb0NhcmQge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJyc7IC8vIHRpdGxlIG9mIHRoZSBjYXJkXG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgPSAnJzsgLy8gdmFsdWUgb2YgdGhlIGNhcmRcbiAgQElucHV0KCkgZGVzY3JpcHRpb246IHN0cmluZyA9ICcnOyAvLyBkZXNjcmlwdGlvbiBvZiB0aGUgY2FyZFxuICBASW5wdXQoKSBjb250ZW50OiBzdHJpbmcgPSAnJzsgLy8gY29udGVudCBvZiB0aGUgY2FyZFxuXG4gIEBJbnB1dCgpIGltZ1NyYzogc3RyaW5nID0gJ2h0dHBzOi8vaW1nLmljb25zOC5jb20vbWF0ZXJpYWwtc2hhcnAvMjQvcGVybWFuZW50LWpvYi5wbmcnOyAgLy8gaW1hZ2Ugc291cmNlIG9mIHRoZSBjYXJkXG4gIEBJbnB1dCgpIGhvdmVySW1nU3JjOiBzdHJpbmcgPSAnJzsgLy8gaG92ZXIgaW1hZ2Ugc291cmNlIG9mIHRoZSBjYXJkXG5cbiAgQElucHV0KCkgY29sb3I6IHN0cmluZyA9ICcjZmZmZmZmJzsgLy8gY29sb3Igb2YgdGhlIGNhcmRcbiAgQElucHV0KCkgaG92ZXJDb2xvcjogc3RyaW5nID0gJyNmOGY5ZmEnOyAvLyBob3ZlciBjb2xvciBvZiB0aGUgY2FyZFxuICBASW5wdXQoKSBwYWRkaW5nOiBzdHJpbmcgPSAnMjBweCc7IC8vIHBhZGRpbmcgb2YgdGhlIGNhcmRcblxuICBASW5wdXQoKSBpc0ltYWdlUmlnaHQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gd2hldGhlciB0aGUgaW1hZ2UgaXMgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGNhcmRcbiAgQElucHV0KCkgaXNJbWFnZUxlZnQ6IGJvb2xlYW4gPSB0cnVlOyAvLyB3aGV0aGVyIHRoZSBpbWFnZSBpcyBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBjYXJkXG4gIEBJbnB1dCgpIGljb25Db2xvcjogc3RyaW5nID0gJyNmOGY5ZmEnOyAvLyBjb2xvciBvZiB0aGUgaWNvblxuICBASW5wdXQoKSBpY29uSG92ZXJDb2xvcjogc3RyaW5nID0gJyNmZmZmZmYnOyAvLyBob3ZlciBjb2xvciBvZiB0aGUgaWNvblxuXG5cbiAgQElucHV0KCkgaXNFZGl0OiBib29sZWFuID0gZmFsc2U7IC8vIHdoZXRoZXIgdGhlIGNhcmQgaXMgZWRpdGFibGVcbiAgQElucHV0KCkgZWRpdENvbmZpZzogYW55ID0gbnVsbDsgLy8gZWRpdCBjb25maWcgb2YgdGhlIGNhcmRcblxuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgYnV0dG9uOiBhbnksIGNhcmREYXRhOiBhbnkgfT4oKTtcblxuICBpc0hvdmVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNEcm9wZG93bk9wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHsgfVxuICBvbk1vdXNlRW50ZXIoKSB7XG4gICAgdGhpcy5pc0hvdmVyZWQgPSB0cnVlO1xuICB9XG5cbiAgb25Nb3VzZUxlYXZlKCkge1xuICAgIHRoaXMuaXNIb3ZlcmVkID0gZmFsc2U7XG4gIH1cblxuXG4gIGdldEN1cnJlbnRJbWdTcmMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc0hvdmVyZWQgJiYgdGhpcy5ob3ZlckltZ1NyYyA/IHRoaXMuaG92ZXJJbWdTcmMgOiB0aGlzLmltZ1NyYztcbiAgfVxuXG4gIGdldEN1cnJlbnRCZ0NvbG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNIb3ZlcmVkID8gdGhpcy5ob3ZlckNvbG9yIDogdGhpcy5jb2xvcjtcbiAgfVxuICBnZXRDdXJyZW50SWNvbkJnQ29sb3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc0hvdmVyZWQgPyB0aGlzLmljb25Ib3ZlckNvbG9yIDogdGhpcy5pY29uQ29sb3I7XG4gIH1cbiAgdG9nZ2xlRHJvcGRvd24oKSB7XG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9ICF0aGlzLmlzRHJvcGRvd25PcGVuO1xuICB9XG5cbiAgY2xvc2VEcm9wZG93bigpIHtcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gIH1cblxuICBvbkJ1dHRvbkNsaWNrKGJ1dHRvbjogYW55KSB7XG4gICAgY29uc3QgY2FyZERhdGEgPSB7XG4gICAgICB0aXRsZTogdGhpcy50aXRsZSxcbiAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBjb250ZW50OiB0aGlzLmNvbnRlbnRcbiAgICB9O1xuXG4gICAgdGhpcy5idXR0b25DbGljay5lbWl0KHsgYnV0dG9uLCBjYXJkRGF0YSB9KTtcbiAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgfVxuICBoYXNFZGl0QnV0dG9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0VkaXQgJiYgdGhpcy5lZGl0Q29uZmlnICYmIHRoaXMuZWRpdENvbmZpZy5idXR0b25zICYmIHRoaXMuZWRpdENvbmZpZy5idXR0b25zLmxlbmd0aCA+IDA7XG4gIH1cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBvbkNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmlzRHJvcGRvd25PcGVuICYmICF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgKSB7XG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG59IiwiPGRpdiBjbGFzcz1cIndvcmtmb3JjZS1jYXJkXCIgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWNvbG9yJzogZ2V0Q3VycmVudEJnQ29sb3IoKSwgJ3BhZGRpbmcnOiBwYWRkaW5nfVwiXG4gIChtb3VzZWVudGVyKT1cIm9uTW91c2VFbnRlcigpXCIgKG1vdXNlbGVhdmUpPVwib25Nb3VzZUxlYXZlKClcIj5cblxuICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250ZW50XCI+XG4gICAgPCEtLSBMZWZ0IGltYWdlIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJpc0ltYWdlTGVmdFwiIGNsYXNzPVwiaW1hZ2UtY29udGFpbmVyIGxlZnQtaW1hZ2VcIlxuICAgICAgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWNvbG9yJzogZ2V0Q3VycmVudEljb25CZ0NvbG9yKCl9XCI+XG4gICAgICA8aW1nIFtzcmNdPVwiZ2V0Q3VycmVudEltZ1NyYygpXCIgYWx0PVwiaWNvblwiPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDYXJkIHRleHQgY29udGVudCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1jb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj57eyB0aXRsZSB9fTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+e3sgdmFsdWUgfX08L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJkZXNjcmlwdGlvblwiIGNsYXNzPVwiZGVzY3JpcHRpb25cIj57eyBkZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnRcIiBjbGFzcz1cImFkZGl0aW9uYWwtY29udGVudFwiPnt7IGNvbnRlbnQgfX08L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUmlnaHQgaW1hZ2UgLS0+XG4gICAgPGRpdiAqbmdJZj1cImlzSW1hZ2VSaWdodFwiIGNsYXNzPVwiaW1hZ2UtY29udGFpbmVyIHJpZ2h0LWltYWdlXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6IGdldEN1cnJlbnRJY29uQmdDb2xvcigpfVwiPlxuICAgICAgPGltZyBbc3JjXT1cImdldEN1cnJlbnRJbWdTcmMoKVwiIGFsdD1cImljb25cIj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRWRpdCBidXR0b24gLS0+XG4gICAgPGRpdiAqbmdJZj1cImlzRWRpdFwiIGNsYXNzPVwiZWRpdC1idXR0b25cIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBzdHJva2U9XCIjYmFiYWJhXCI+XG4gICAgICAgIDxnIGlkPVwiU1ZHUmVwb19iZ0NhcnJpZXJcIiBzdHJva2Utd2lkdGg9XCIwXCI+PC9nPlxuICAgICAgICA8ZyBpZD1cIlNWR1JlcG9fdHJhY2VyQ2FycmllclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvZz5cbiAgICAgICAgPGcgaWQ9XCJTVkdSZXBvX2ljb25DYXJyaWVyXCI+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMTMgNUMxMyA0LjQ0NzcyIDEyLjU1MjMgNCAxMiA0QzExLjQ0NzcgNCAxMSA0LjQ0NzcyIDExIDVDMTEgNS41NTIyOCAxMS40NDc3IDYgMTIgNkMxMi41NTIzIDYgMTMgNS41NTIyOCAxMyA1WlwiXG4gICAgICAgICAgICBzdHJva2U9XCIjZDRkNGQ0XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk0xMyAxMkMxMyAxMS40NDc3IDEyLjU1MjMgMTEgMTIgMTFDMTEuNDQ3NyAxMSAxMSAxMS40NDc3IDExIDEyQzExIDEyLjU1MjMgMTEuNDQ3NyAxMyAxMiAxM0MxMi41NTIzIDEzIDEzIDEyLjU1MjMgMTMgMTJaXCJcbiAgICAgICAgICAgIHN0cm9rZT1cIiNkNGQ0ZDRcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTEzIDE5QzEzIDE4LjQ0NzcgMTIuNTUyMyAxOCAxMiAxOEMxMS40NDc3IDE4IDExIDE4LjQ0NzcgMTEgMTlDMTEgMTkuNTUyMyAxMS40NDc3IDIwIDEyIDIwQzEyLjU1MjMgMjAgMTMgMTkuNTUyMyAxMyAxOVpcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiI2Q0ZDRkNFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICAgIDwvZz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gRHJvcGRvd24gbWVudSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNEcm9wZG93bk9wZW5cIiBjbGFzcz1cImVkaXQtZHJvcGRvd24tbWVudSBzaG93XCI+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBidXR0b24gb2YgZWRpdENvbmZpZy5idXR0b25zXCIgY2xhc3M9XCJlZGl0LWRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwib25CdXR0b25DbGljayhidXR0b24pXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1idXR0b24tY29udGVudFwiPlxuICAgICAgICAgIDxpbWcgKm5nSWY9XCJidXR0b24uaXNJbWFnZVN2ZyAmJiBidXR0b24uaWNvblNyY1wiIFtzcmNdPVwiYnV0dG9uLmljb25TcmNcIiBhbHQ9XCJpY29uXCIgY2xhc3M9XCJidXR0b24taWNvblwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uLW5hbWVcIj57eyBidXR0b24ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -30,7 +30,12 @@ export class CustomInputComponent {
|
|
|
30
30
|
ngOnInit() {
|
|
31
31
|
// Since the idValue holds the Parent Question
|
|
32
32
|
// AP-25MAR25 Parse subText if it's not already an object
|
|
33
|
-
this.question['subText'] =
|
|
33
|
+
this.question['subText'] =
|
|
34
|
+
typeof this.question?.subText === 'object'
|
|
35
|
+
? this.question.subText
|
|
36
|
+
: (typeof this.question['subText'] === 'string' && this.question['subText'].trim() !== ''
|
|
37
|
+
? JSON.parse(this.question['subText'])
|
|
38
|
+
: {});
|
|
34
39
|
if (this.question.subText != undefined) {
|
|
35
40
|
this.disabled = true;
|
|
36
41
|
let dependencyObj = this.question.subText;
|
|
@@ -92,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
92
97
|
}], inputValue: [{
|
|
93
98
|
type: Output
|
|
94
99
|
}] } });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1pbnB1dC9jdXN0b20taW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWlucHV0L2N1c3RvbS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBZ0IvRSxNQUFNLE9BQU8sb0JBQW9CO0lBZ0JYO0lBQXFDO0lBQWtDO0lBZmxGLEtBQUssQ0FBYyxDQUFDLGNBQWM7SUFDbEMsUUFBUSxDQUFVO0lBQ2xCLFFBQVEsR0FBWSxLQUFLLENBQUMsQ0FBQyx3QkFBd0I7SUFDbkQsV0FBVyxDQUFRO0lBQ25CLEtBQUssQ0FBSztJQUNWLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFDN0IsUUFBUSxHQUFZLEtBQUssQ0FBQyxDQUFDLCtCQUErQjtJQUUxRCxZQUFZLENBQUs7SUFDakIsT0FBTyxDQUFLO0lBQ1osVUFBVSxDQUFNO0lBQ2YsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFFL0MsWUFBWSxDQUFlO0lBRTNCLFlBQW9CLGFBQTRCLEVBQVMsV0FBd0IsRUFBVSxXQUF3QjtRQUEvRixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFDbkgsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixRQUFRO1FBQ04sOENBQThDO1FBQzlDLHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxLQUFLLFFBQVE7Z0JBQ3hDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU87Z0JBQ3ZCLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO29CQUNyRixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUN0QyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFWixJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksYUFBYSxHQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQy9DLElBQUcsYUFBYSxDQUFDLFFBQVEsSUFBSSxhQUFhLENBQUMsUUFBUSxJQUFJLE9BQU8sRUFBQyxDQUFDO2dCQUM5RCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDO2lCQUFJLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDdkIsQ0FBQztZQUNELDRCQUE0QjtZQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUMvRCxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUNkLElBQUcsV0FBVyxJQUFJLFNBQVMsRUFBRSxDQUFDO29CQUM1QixxREFBcUQ7b0JBQ3JELElBQUcsV0FBVyxDQUFDLFFBQVEsSUFBSSxTQUFTLElBQUksV0FBVyxDQUFDLGNBQWMsSUFBSSxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzt3QkFDckcsMENBQTBDO3dCQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUN0RixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ25DLENBQUM7b0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ25FLENBQUM7WUFDSCxDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVTtJQUNWLENBQUM7SUFFRCxXQUFXO1FBQ1QsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFTO1FBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQzt3R0FqRVUsb0JBQW9COzRGQUFwQixvQkFBb0IsaVZDaEJqQyw0dENBNEJBOzs0RkRaYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0Usa0JBQWtCO3NJQU1uQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENoYW5nZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGFuZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBDaGFuZ2VXcmFwcGVyIH0gZnJvbSAnLi4vLi4vbW9kZWwvY2hhbmdlV3JhcHBlcic7XG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gJy4uLy4uL3dyYXBwZXInO1xuaW1wb3J0IHsgRGVwZW5kZW5jeU1ldGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2RlcGVuZGVuY3lNZXRhJztcbi8vIEhBIDE5REVDMjMgaW1wb3J0ZWQgdHJhbnNsYXRpb24gc2VydmljZVxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY3VzdG9tLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2N1c3RvbS1pbnB1dC5jb21wb25lbnQuY3NzJ11cbn0pXG5cbmV4cG9ydCBjbGFzcyBDdXN0b21JbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHZhbHVlOiBhbnkgfCBhbnlbXTsgLy8gaW5wdXQgdmFsdWVcbiAgQElucHV0KCkgcXVlc3Rpb246IFF1ZXN0aW9uXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7IC8vIGlucHV0IGRpc2FibGVkIG9yIG5vdFxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjpzdHJpbmc7XG4gIEBJbnB1dCgpIGVycm9yOmFueTtcbiAgQElucHV0KCkgZnJvbVNoZW5nZWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcmVhZE9ubHkgOmJvb2xlYW4gPSBmYWxzZTsgLy8gVkQgMTJKdW4yNCAtIHJlYWRvbmx5IGNoYW5nZVxuXG4gIEBJbnB1dCgpIG5nQ2xhc3NWYWx1ZTphbnk7XG4gIEBJbnB1dCgpIGlkVmFsdWU6YW55O1xuICBASW5wdXQoKSBmb2N1c0V2ZW50OiBhbnk7XG4gIEBPdXRwdXQoKSBpbnB1dFZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7IFxuXG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlU2VydmljZTogQ2hhbmdlU2VydmljZSwgcHVibGljIGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZSwgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UpIHsgXG4gIH1cblxuICAvLyBSUyAwOURFQzI0IENoYW5nZWQga2V5c1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBTaW5jZSB0aGUgaWRWYWx1ZSBob2xkcyB0aGUgUGFyZW50IFF1ZXN0aW9uXG4gICAgLy8gQVAtMjVNQVIyNSBQYXJzZSBzdWJUZXh0IGlmIGl0J3Mgbm90IGFscmVhZHkgYW4gb2JqZWN0XG4gICAgdGhpcy5xdWVzdGlvblsnc3ViVGV4dCddID0gXG4gICAgdHlwZW9mIHRoaXMucXVlc3Rpb24/LnN1YlRleHQgPT09ICdvYmplY3QnXG4gICAgICA/IHRoaXMucXVlc3Rpb24uc3ViVGV4dFxuICAgICAgOiAodHlwZW9mIHRoaXMucXVlc3Rpb25bJ3N1YlRleHQnXSA9PT0gJ3N0cmluZycgJiYgdGhpcy5xdWVzdGlvblsnc3ViVGV4dCddLnRyaW0oKSAhPT0gJycgXG4gICAgICAgICAgPyBKU09OLnBhcnNlKHRoaXMucXVlc3Rpb25bJ3N1YlRleHQnXSkgXG4gICAgICAgICAgOiB7fSk7XG4gIFxuICAgIGlmKHRoaXMucXVlc3Rpb24uc3ViVGV4dCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgbGV0IGRlcGVuZGVuY3lPYmo6IGFueSA9IHRoaXMucXVlc3Rpb24uc3ViVGV4dDtcbiAgICAgIGlmKGRlcGVuZGVuY3lPYmouZGlzYWJsZWQgJiYgZGVwZW5kZW5jeU9iai5kaXNhYmxlZCA9PSBcImZhbHNlXCIpe1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgICAvLyBTdWJzY3JpYmUgZm9yIHRoZSBjaGFuZ2VzXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY2hhbmdlU2VydmljZS5jaGFuZ2VBbm5vdW5jZWQkLnN1YnNjcmliZShcbiAgICAgICAgKGNoYW5nZVZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYoY2hhbmdlVmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIHN1YnNjcmlwdGlvbiBmb3IgdGhlIGNoYW5nZScpO1xuICAgICAgICAgICAgaWYoY2hhbmdlVmFsdWUudmFsdWVPYmogIT0gdW5kZWZpbmVkICYmIGNoYW5nZVZhbHVlLmZyb21RdWVzdGlvbklkID09IGRlcGVuZGVuY3lPYmouc291cmNlUXVlc3Rpb25JZCkge1xuICAgICAgICAgICAgICAvLyBWRCAyMEF1ZzI0IGhhbmRsaW5nIHRoZSBtdWx0aXBsZSBvYmplY3RcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZGF0YVNlcnZpY2UuZ2V0VmFsdWUoY2hhbmdlVmFsdWUudmFsdWVPYmosZGVwZW5kZW5jeU9iai52YWx1ZUZpZWxkKTtcbiAgICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVNlcnZpY2UuY29uZmlybUNoYW5nZShkZXBlbmRlbmN5T2JqLnNvdXJjZVF1ZXN0aW9uSWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlKCk6IHZvaWQge1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgLy8gcHJldmVudCBtZW1vcnkgbGVhayB3aGVuIGNvbXBvbmVudCBkZXN0cm95ZWRcbiAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuICBcbiAgb25JbnB1dENoYW5nZShpbnB1dDphbnkpe1xuICAgIHRoaXMuaW5wdXRWYWx1ZS5lbWl0KGlucHV0LnRhcmdldC52YWx1ZSk7XG4gIH1cbn1cbiIsIiA8IS0tIEhBIDE5REVDMjMgSW5jbHVkZWQgU3R5bGUgdmFsdWUgZnJvbSBTYWxlc2ZvcmNlIC0tPlxuICA8IS0tIEhBIDE4LUpBTi0yNCBBZGRlZCB0aGVzZSBjbGFzc2VzIGZvciBzdHlsZSwgSEEgMzEtSkFOLTI0IEFkZGVkIHRlcm5hcnkgZm9yIHN0eWxlIC0tPlxuICA8IS0tIEhBIDAyRkVCMjQgcXVlc3Rpb24gaW5wdXQgd2lsbCBob2xkIHRoZSB2YWx1ZSB0byBkaXNwbGF5IC0tPlxuICA8IS0tIC8vIFZEIDEySnVuMjQgLSByZWFkb25seSBjaGFuZ2UtLT5cbiAgPCEtLSBSUyAwOURFQzI0IENoYW5nZWQga2V5cy0tPiBcbiAgPGlucHV0ICpuZ0lmPVwiIWZyb21TaGVuZ2VsXCIgdHlwZT1cInRleHRcIiBcbiAgICAgICBbKG5nTW9kZWwpXT1cInF1ZXN0aW9uLmlucHV0XCIgXG4gICAgICAgW25nQ2xhc3NdPVwibmdDbGFzc1ZhbHVlXCJcbiAgICAgICBjbGFzcz1cInNoZS1saW5lLWlucHV0IGZvcm0tY29udHJvbFwiXG4gICAgICAgW2lkXT1cImlkVmFsdWVcIlxuICAgICAgIChmb2N1cyk9XCJmb2N1c0V2ZW50XCJcbiAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgIFtzdHlsZS5ib3JkZXItY29sb3JdPVwiZXJyb3IgPyAncmVkICFpbXBvcnRhbnQnIDogJydcIlxuICAgICAgIFtzdHlsZV09XCJxdWVzdGlvbj8uc3R5bGU/LmlucHV0U3R5bGVcIlxuICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciA/IHBsYWNlaG9sZGVyIDogJydcIlxuICAgICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIiAvPlxuXG48aW5wdXQgKm5nSWY9XCJmcm9tU2hlbmdlbFwiIFxuICAgICAgIFsobmdNb2RlbCldPVwicXVlc3Rpb24uaW5wdXRcIlxuICAgICAgIHR5cGU9XCJ0ZXh0XCIgXG4gICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICBjbGFzcz1cInNoZS1saW5lLWlucHV0IGZvcm0tY29udHJvbFwiIFxuICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciA/IHBsYWNlaG9sZGVyIDogJycgXCJcbiAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgIFtzdHlsZV09XCJxdWVzdGlvbj8uc3R5bGU/LmlucHV0U3R5bGVcIlxuICAgICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIiAvPlxuPCEtLSBIQSAxOURFQzIzIEZvciB0cmFuc2xhdGlvbiAtLT5cbjxzcGFuICpuZ0lmPVwiZXJyb3JcIiBjbGFzcz1cImVycm9yLW1zZ1wiPnt7cXVlc3Rpb24/LmVycm9yTWVzc2FnZX19Kjwvc3Bhbj5cbiJdfQ==
|