bpm-core 0.0.104 → 0.0.105
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/bpm-core.mjs +5 -0
- package/esm2022/lib/app/app.component.mjs +79 -0
- package/esm2022/lib/classes/form-validation.mjs +80 -0
- package/esm2022/lib/classes/index.mjs +2 -0
- package/esm2022/lib/components/app-component-sections/activities/activities.component.mjs +44 -0
- package/esm2022/lib/components/app-component-sections/approvals/approvals.component.mjs +23 -0
- package/esm2022/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.mjs +113 -0
- package/esm2022/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.mjs +25 -0
- package/esm2022/lib/components/app-component-sections/faqs/faqs.component.mjs +27 -0
- package/esm2022/lib/components/app-component-sections/faqs/index.mjs +2 -0
- package/esm2022/lib/components/app-component-sections/feedback-section/feedback-section.component.mjs +237 -0
- package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +255 -0
- package/esm2022/lib/components/app-component-sections/index.mjs +9 -0
- package/esm2022/lib/components/app-component-sections/layout/header/header.component.mjs +79 -0
- package/esm2022/lib/components/app-component-sections/layout/layout.component.mjs +89 -0
- package/esm2022/lib/components/app-component-sections/layout/side-nav/side-nav.component.mjs +158 -0
- package/esm2022/lib/components/app-component-sections/main-request-details/main-request-details.component.mjs +34 -0
- package/esm2022/lib/components/app-component-sections/previous-requests/previous-requests.component.mjs +345 -0
- package/esm2022/lib/components/app-component-sections/profile-section/profile-section.component.mjs +45 -0
- package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +271 -0
- package/esm2022/lib/components/app-component-sections/status/status.component.mjs +38 -0
- package/esm2022/lib/components/app-component-sections/workflow-section/workflow-section.component.mjs +164 -0
- package/esm2022/lib/components/shared-components/action-buttons/action-buttons.component.mjs +138 -0
- package/esm2022/lib/components/shared-components/dialogs/confirm-dialog/confirm-dialog.component.mjs +30 -0
- package/esm2022/lib/components/shared-components/dialogs/delete-dialog/delete-dialog.component.mjs +29 -0
- package/esm2022/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.mjs +67 -0
- package/esm2022/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.mjs +138 -0
- package/esm2022/lib/components/shared-components/form-field/attachment-section/attachment-section.component.mjs +234 -0
- package/esm2022/lib/components/shared-components/form-field/base-component/base-component.component.mjs +198 -0
- package/esm2022/lib/components/shared-components/form-field/checkbox/checkbox.component.mjs +91 -0
- package/esm2022/lib/components/shared-components/form-field/control-value-accessor.directive.mjs +185 -0
- package/esm2022/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.mjs +131 -0
- package/esm2022/lib/components/shared-components/form-field/date-picker/date-format.mjs +31 -0
- package/esm2022/lib/components/shared-components/form-field/date-picker/date-picker.component.mjs +175 -0
- package/esm2022/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.mjs +186 -0
- package/esm2022/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.mjs +525 -0
- package/esm2022/lib/components/shared-components/form-field/form-label/form-label.component.mjs +33 -0
- package/esm2022/lib/components/shared-components/form-field/index.mjs +26 -0
- package/esm2022/lib/components/shared-components/form-field/info-item/info-item.component.mjs +76 -0
- package/esm2022/lib/components/shared-components/form-field/input/input.component.mjs +71 -0
- package/esm2022/lib/components/shared-components/form-field/input-autocomplete/index.mjs +3 -0
- package/esm2022/lib/components/shared-components/form-field/input-autocomplete/input-autocomplete.model.mjs +2 -0
- package/esm2022/lib/components/shared-components/form-field/input-currency/input-currency.component.mjs +73 -0
- package/esm2022/lib/components/shared-components/form-field/input-email/input-email.component.mjs +69 -0
- package/esm2022/lib/components/shared-components/form-field/input-mask/input-mask.component.mjs +61 -0
- package/esm2022/lib/components/shared-components/form-field/input-number/input-number.component.mjs +74 -0
- package/esm2022/lib/components/shared-components/form-field/input-telephone/input-telephone.component.mjs +85 -0
- package/esm2022/lib/components/shared-components/form-field/radio/radio.component.mjs +52 -0
- package/esm2022/lib/components/shared-components/form-field/repeated-list/repeated-list.component.mjs +32 -0
- package/esm2022/lib/components/shared-components/form-field/search-employee/search-employee.component.mjs +192 -0
- package/esm2022/lib/components/shared-components/form-field/select/select.component.mjs +191 -0
- package/esm2022/lib/components/shared-components/form-field/shared-imports.mjs +36 -0
- package/esm2022/lib/components/shared-components/form-field/table-list/table-list.component.mjs +116 -0
- package/esm2022/lib/components/shared-components/form-field/textarea/special-chars.directive.mjs +39 -0
- package/esm2022/lib/components/shared-components/form-field/textarea/textarea.component.mjs +57 -0
- package/esm2022/lib/components/shared-components/form-field/toggle-button/toggle-button.component.mjs +90 -0
- package/esm2022/lib/components/shared-components/form-field/validation-errors/validation-errors.component.mjs +43 -0
- package/esm2022/lib/components/shared-components/index.mjs +9 -0
- package/esm2022/lib/components/shared-components/table/table.component.mjs +243 -0
- package/esm2022/lib/components/shared-components/terms-conditions/terms-conditions.component.mjs +31 -0
- package/esm2022/lib/components/shared-components/title-section/title-section.component.mjs +31 -0
- package/esm2022/lib/constants/constants.mjs +149 -0
- package/esm2022/lib/constants/index.mjs +2 -0
- package/esm2022/lib/directives/ar.directive.mjs +54 -0
- package/esm2022/lib/directives/currency.directive.mjs +92 -0
- package/esm2022/lib/directives/en.directive.mjs +51 -0
- package/esm2022/lib/directives/number.directive.mjs +68 -0
- package/esm2022/lib/directives/skip-location.directive.mjs +28 -0
- package/esm2022/lib/enums/actions.enum.mjs +22 -0
- package/esm2022/lib/enums/colors.enum.mjs +6 -0
- package/esm2022/lib/enums/events.enum.mjs +6 -0
- package/esm2022/lib/functions/data-to-blob.mjs +12 -0
- package/esm2022/lib/functions/encode-password.mjs +14 -0
- package/esm2022/lib/functions/handel-error-response.mjs +12 -0
- package/esm2022/lib/functions/index.mjs +5 -0
- package/esm2022/lib/functions/is-valid-data.mjs +42 -0
- package/esm2022/lib/helpers/shared.helper.mjs +26 -0
- package/esm2022/lib/hooks/index.mjs +3 -0
- package/esm2022/lib/hooks/load-form.mjs +13 -0
- package/esm2022/lib/hooks/save-form.mjs +18 -0
- package/esm2022/lib/i18n/ar.mjs +200 -0
- package/esm2022/lib/i18n/en.mjs +204 -0
- package/esm2022/lib/i18n/index.mjs +3 -0
- package/esm2022/lib/interfaces/action.interface.mjs +2 -0
- package/esm2022/lib/interfaces/api-response.interface.mjs +2 -0
- package/esm2022/lib/interfaces/document-file.interface.mjs +2 -0
- package/esm2022/lib/interfaces/form-items.interface.mjs +2 -0
- package/esm2022/lib/interfaces/form.interface.mjs +150 -0
- package/esm2022/lib/interfaces/igate-user.interface.mjs +2 -0
- package/esm2022/lib/interfaces/index.mjs +8 -0
- package/esm2022/lib/interfaces/lov-list.interface.mjs +2 -0
- package/esm2022/lib/interfaces/lov.interface.mjs +2 -0
- package/esm2022/lib/interfaces/shared.interface.mjs +2 -0
- package/esm2022/lib/pipes/currency.pipe.mjs +66 -0
- package/esm2022/lib/pipes/format-as-password.pipe.mjs +19 -0
- package/esm2022/lib/pipes/index.mjs +3 -0
- package/esm2022/lib/pipes/status-style.pipe.mjs +57 -0
- package/esm2022/lib/pipes/translate.pipe.mjs +36 -0
- package/esm2022/lib/regex/index.mjs +2 -0
- package/esm2022/lib/regex/regex-patterns.mjs +4 -0
- package/esm2022/lib/services/action.service.ts.mjs +25 -0
- package/esm2022/lib/services/core.service.ts.mjs +527 -0
- package/esm2022/lib/services/feedBack.service.mjs +81 -0
- package/esm2022/lib/services/i18n.service.mjs +36 -0
- package/esm2022/lib/services/index.mjs +6 -0
- package/esm2022/lib/services/sidenav.service.mjs +36 -0
- package/esm2022/lib/testComponent/config/segment-dynamic-loader.config.mjs +8 -0
- package/esm2022/lib/testComponent/general-approver-section/general-approver-section.component.mjs +90 -0
- package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +482 -0
- package/esm2022/lib/testComponent/services/i18n.service.mjs +39 -0
- package/esm2022/lib/testComponent/services/segment-dynamic-loader.service.mjs +54 -0
- package/esm2022/lib/validators/id.validator.mjs +66 -0
- package/esm2022/lib/validators/index.mjs +8 -0
- package/esm2022/lib/validators/string-to-boolean.pipe.mjs +16 -0
- package/esm2022/lib/validators/text.directive.mjs +50 -0
- package/esm2022/lib/validators/timer.pipe.mjs +19 -0
- package/esm2022/public-api.mjs +19 -0
- package/fesm2022/bpm-core.mjs +244 -226
- package/fesm2022/bpm-core.mjs.map +1 -1
- package/lib/components/shared-components/form-field/checkbox/checkbox.component.d.ts +1 -2
- package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +1 -1
- package/lib/components/shared-components/form-field/shared-imports.d.ts +2 -2
- package/lib/components/shared-components/form-field/textarea/special-chars.directive.d.ts +1 -1
- package/lib/components/shared-components/title-section/title-section.component.d.ts +1 -1
- package/lib/directives/currency.directive.d.ts +1 -0
- package/lib/pipes/currency.pipe.d.ts +1 -1
- package/lib/pipes/format-as-password.pipe.d.ts +1 -1
- package/lib/validators/string-to-boolean.pipe.d.ts +1 -1
- package/lib/validators/text.directive.d.ts +1 -1
- package/lib/validators/timer.pipe.d.ts +1 -1
- package/package.json +4 -2
package/esm2022/lib/components/shared-components/form-field/table-list/table-list.component.mjs
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/* eslint-disable @angular-eslint/use-lifecycle-interface */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
+
/* eslint-disable @angular-eslint/component-selector */
|
|
4
|
+
import { CUSTOM_ELEMENTS_SCHEMA, EventEmitter } from '@angular/core';
|
|
5
|
+
import { BaseComponent } from './../base-component/base-component.component';
|
|
6
|
+
import { Component, Input, Output } from '@angular/core';
|
|
7
|
+
import { MatTableDataSource, MatTableModule } from '@angular/material/table';
|
|
8
|
+
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
9
|
+
import { DatePipe, NgClass, NgForOf, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault } from "@angular/common";
|
|
10
|
+
import { RouterLink } from "@angular/router";
|
|
11
|
+
import { RepeatedListComponent } from "../repeated-list/repeated-list.component";
|
|
12
|
+
import { MatButton } from "@angular/material/button";
|
|
13
|
+
import { MatMenu, MatMenuItem, MatMenuTrigger } from "@angular/material/menu";
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
import * as i1 from "@angular/material/paginator";
|
|
16
|
+
import * as i2 from "@angular/material/table";
|
|
17
|
+
// import { ConfirmationPopupComponent } from '../../confirmation-popup/confirmation-popup.component';
|
|
18
|
+
export class TableListComponent extends BaseComponent {
|
|
19
|
+
columns;
|
|
20
|
+
columnsConfig;
|
|
21
|
+
rows;
|
|
22
|
+
actions = [];
|
|
23
|
+
totalRecords;
|
|
24
|
+
className = '';
|
|
25
|
+
dataSource = new MatTableDataSource();
|
|
26
|
+
pageChanged = new EventEmitter();
|
|
27
|
+
buttonAction = new EventEmitter();
|
|
28
|
+
emitDataRow = new EventEmitter();
|
|
29
|
+
// constructor(public dialog: MatDialog) { }
|
|
30
|
+
ngOnInit() {
|
|
31
|
+
this.dataSource.data = this.rows;
|
|
32
|
+
}
|
|
33
|
+
truncateName(text) {
|
|
34
|
+
if (text) {
|
|
35
|
+
const characters = text.match(/\b(\w)/g);
|
|
36
|
+
if (characters) {
|
|
37
|
+
return characters.join('');
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
return '';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return '';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
onPageChange(event) {
|
|
48
|
+
this.pageChanged.emit(event);
|
|
49
|
+
}
|
|
50
|
+
delete() {
|
|
51
|
+
// const dialogRef = this.dialog.open(ConfirmationPopupComponent, {
|
|
52
|
+
// width: '700px',
|
|
53
|
+
// panelClass: ['confirm-popup', 'main-popup'],
|
|
54
|
+
// data: {
|
|
55
|
+
// title: 'Delete Match',
|
|
56
|
+
// message: 'Are you sure you want delete',
|
|
57
|
+
// confirmText: 'match making example name',
|
|
58
|
+
// moreText: '',
|
|
59
|
+
// type: 'delete',
|
|
60
|
+
// icon: 'delete-match',
|
|
61
|
+
// }
|
|
62
|
+
// });
|
|
63
|
+
// dialogRef.afterClosed().subscribe(() => {
|
|
64
|
+
// // closed
|
|
65
|
+
// });
|
|
66
|
+
}
|
|
67
|
+
buttonClicked(element, fn, $event) {
|
|
68
|
+
}
|
|
69
|
+
selectedRow(row) {
|
|
70
|
+
}
|
|
71
|
+
getSlaColor(value, max) {
|
|
72
|
+
}
|
|
73
|
+
sentBack() {
|
|
74
|
+
}
|
|
75
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TableListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
76
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: TableListComponent, isStandalone: true, selector: "app-table-list", inputs: { columns: "columns", columnsConfig: "columnsConfig", rows: "rows", actions: "actions", totalRecords: "totalRecords", className: "className" }, outputs: { pageChanged: "pageChanged", buttonAction: "buttonAction", emitDataRow: "emitDataRow" }, usesInheritance: true, ngImport: i0, template: "<div class=\"overflow-auto\">\r\n <!-- #table (scroll)=\"onPageChange($event)\" -->\r\n <ng-container >\r\n <!-- (matSortChange)=\"sortData($event)\" -->\r\n <table mat-table [dataSource]=\"dataSource\" class=\"primary-table {{className}}\" matSort >\r\n <ng-container *ngFor=\"let column of columns; let i = index;\">\r\n <ng-container [matColumnDef]=\"column\">\r\n <th mat-header-cell *matHeaderCellDef [ngClass]=\"{'last-column' : columnsConfig[i].type === 'actions', 'sortArrow': columnsConfig[i]?.sortName?.length }\" mat-sort-header>\r\n {{i18n.translate(columnsConfig[i].label)}} </th>\r\n \r\n <td mat-cell [ngClass]=\"{'account-disabled': element?.user?.disabledCleanUp===true}\" *matCellDef=\"let element\">\r\n <ng-container [ngSwitch]=\"columnsConfig[i].type\" *ngIf=\"rows.length\">\r\n <a [ngClass]=\"columnsConfig[i].type\" [href]=\"element[column]\" *ngSwitchCase=\"'link'\">\r\n {{ element[column] }}\r\n </a>\r\n \r\n <a [ngClass]=\"columnsConfig[i].type\" [routerLink]=\"[element.id]\" [href]=\"element[column]\"\r\n *ngSwitchCase=\"'rout'\">\r\n {{ element[column] }}\r\n </a>\r\n \r\n <span class=\"d-inline-flex align-items-center\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'date'\">\r\n <span class=\"sfi sfi-clock text-color-coral\" *ngIf=\"!loading\"></span>\r\n <span class=\"mx-2\">\r\n <!-- {{ element?.Date.from }}\r\n <ng-container *ngIf=\"element?.Date.to\">\r\n : {{ element?.Date.to }}\r\n </ng-container> -->\r\n {{ element[column] | date: 'dd/MM/YYYY' }}\r\n </span>\r\n </span>\r\n \r\n <div class=\"d-inline-flex align-items-center\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'sla'\">\r\n <app-sla [value]=\"element?.SLA.value\" [maxValue]=\"element?.SLA.max\" [canvasScale]=\"45\"\r\n [outerLineColor]=\"getSlaColor(element?.SLA.value, element?.SLA.max)\"></app-sla>\r\n </div>\r\n \r\n <div class=\"img-card table-img\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'image'\">\r\n <img [src]=\"element?.image\" alt=\"\">\r\n </div>\r\n \r\n <span class=\"{{ element[column].type }}\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'status'\">\r\n {{ element[column].label }}\r\n </span>\r\n \r\n \r\n <div class=\"d-flex mx-n1\" *ngSwitchCase=\"'RequestType'\">\r\n <div class=\"request-type mx-1 {{item.status}}\" *ngFor=\"let item of element?.RequestType\">\r\n {{ item.label }}\r\n <span class=\"mx-1\" *ngIf=\"item.status === 'need-action'\"></span>\r\n <span class=\"sfi sfi-info \" *ngIf=\"item.status === 'need-action'\"></span>\r\n </div>\r\n </div>\r\n \r\n \r\n <span class=\"{{ element[column].type }} {{ element[column] ? 'text-color-coral underline' : '' }}\"\r\n [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'number'\">\r\n {{ element[column] ? element[column] : '-' }}\r\n </span>\r\n \r\n <div class=\"text-nowrap d-flex align-items-center\" [ngClass]=\"columnsConfig[i].type\"\r\n *ngSwitchCase=\"'group'\">\r\n <span>{{element?.Group.groupName}}</span>\r\n <span class=\"mx-2\"></span>\r\n <app-repeated-list type=\"users-avatar\" [listOfItems]=\"element?.Group.users\"></app-repeated-list>\r\n </div>\r\n \r\n <div class=\"d-flex align-items-center gap-2\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'user'\">\r\n <span class=\"img-card circled-img small\" *ngIf=\"!loading\">\r\n <img src=\"{{'data:image/png;base64,' + element?.user?.personalPhoto}}\"\r\n onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </span>\r\n <div class=\"d-flex flex-column\">\r\n <span class=\"font-14 font-weight-medium\">{{element?.user?.name}}</span>\r\n <span class=\"font-12 font-weight-normal text-color-dark-gray mt-1\">{{element?.user?.email}}</span>\r\n </div>\r\n </div>\r\n \r\n \r\n <div class=\"delegate d-flex align-items-center\" [ngClass]=\"columnsConfig[i].type\"\r\n *ngSwitchCase=\"'assigned'\">\r\n <div class=\"img-card x-small circled-img\">\r\n <img [src]=\"element?.AssignedTo.image\" alt=\"\">\r\n </div>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"font-14 font-weight-medium text-color-onyx\">{{element?.AssignedTo.name}}</span>\r\n <span class=\"sfi sfi-close text-color-coral\"></span>\r\n </div>\r\n \r\n \r\n <ng-container *ngSwitchCase=\"'statusAction'\">\r\n <div class=\"table-action\">\r\n \r\n <div class=\"count-down mx-n1\" *ngIf=\"element[column] === 'need-action'\">\r\n <div class=\"item mx-1\">\r\n <span class=\"font-12 font-weight-medium text-color-onyx d-block\">01</span>\r\n <span class=\"font-8 font-weight-light text-color-onyx d-block\">Days</span>\r\n </div>\r\n <div class=\"item mx-1\">\r\n <span class=\"font-12 font-weight-medium text-color-onyx d-block\">18</span>\r\n <span class=\"font-8 font-weight-light text-color-onyx d-block\">Hours</span>\r\n </div>\r\n <div class=\"item mx-1\">\r\n <span class=\"font-12 font-weight-medium text-color-onyx d-block\">44</span>\r\n <span class=\"font-8 font-weight-light text-color-onyx d-block\">Mins</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"d-flex align-items-center\" *ngIf=\"element[column] === 'approved'\">\r\n <span class=\"status approved\">\r\n Approved\r\n </span>\r\n </div>\r\n \r\n <div class=\"d-flex align-items-center\" *ngIf=\"element[column] === 'sent-back'\">\r\n <span class=\"status rejected\">\r\n Sent Back\r\n </span>\r\n <span class=\"mx-2\"></span>\r\n <button mat-stroked-button class=\"btn button-primary square br-w-1 font-14 font-weight-medium\"\r\n (click)=\"sentBack()\">\r\n <span class=\"sfi sfi-chat-o\"></span>\r\n </button>\r\n </div>\r\n \r\n <div class=\"d-flex align-items-center\" *ngIf=\"element[column] === 'pending'\">\r\n <span class=\"status pending\">\r\n Pending\r\n </span>\r\n <span class=\"mx-2\"></span>\r\n \r\n <div class=\"d-flex align-items-center mx-n1\">\r\n <div class=\"img-card circled-img x-small mx-1\">\r\n <img [src]=\"element?.pendingWith.image\" alt=\"\">\r\n </div>\r\n \r\n <div class=\"d-flex flex-column mx-1\">\r\n <span class=\"font-8 font-weight-medium text-color-yellow text-nowrap\">Pending With</span>\r\n <span class=\"font-11 font-weight-medium text-nowrap\">{{element?.pendingWith.name}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n </div>\r\n </ng-container>\r\n \r\n \r\n <ng-container *ngSwitchCase=\"'actions'\">\r\n \r\n <div class=\"d-flex justify-content-between mx-n2\">\r\n <ng-container *ngFor=\"let action of element[column]\">\r\n \r\n <div class=\"flex-grow-1\">\r\n <ng-container *ngIf=\"action.type.buttonType === 'stroked'\">\r\n <button mat-stroked-button (click)=\"buttonClicked(element,action.fn, $event)\"\r\n class=\"btn button-{{action.type.buttonClass}} mx-2\">\r\n {{action.label}}\r\n </button>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"action.type.buttonType === 'flat'\">\r\n <button mat-flat-button (click)=\"buttonClicked(element,action.fn, $event)\"\r\n class=\"btn button-{{action.type.buttonClass}} mx-2\">\r\n {{action.label}}\r\n </button>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"action.type.buttonType === 'icon'\">\r\n <button mat-icon-button (click)=\"buttonClicked(element,action.fn, $event)\"\r\n class=\"btn button-{{action.type.buttonClass}} mx-2\">\r\n <span class=\"sfi sfi-{{action.type.icon}}\"></span>\r\n </button>\r\n </ng-container>\r\n </div>\r\n \r\n <ng-container *ngIf=\"action.type.buttonType === 'all'\">\r\n <button mat-icon-button class=\"btn button-transparent square medium mx-2 text-end\"\r\n [matMenuTriggerFor]=\"menuAction\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"sfi sfi-dots text-color-onyx\"></span>\r\n </button>\r\n <mat-menu #menuAction=\"matMenu\" xPosition=\"before\" class=\"actions-menu\">\r\n <button *ngIf=\"!element?.user?.email && element?.user?.disabledCleanUp!==true\" mat-menu-item class=\"text-color-onyx font-12\"\r\n (click)=\"buttonClicked(element,'CreateEmail', $event)\">\r\n {{i18n.translate('createEmail')}} \r\n </button>\r\n <button *ngIf=\"element?.user?.email && element?.user?.enabled==='true'\" mat-menu-item class=\"text-color-red font-12\"\r\n (click)=\"buttonClicked(element,'DisableEmail', $event)\">\r\n {{ i18n.translate('disableEmail')}}\r\n </button>\r\n <button *ngIf=\"element?.user?.email && element?.user?.disabledCleanUp===true\" mat-menu-item class=\"text-color-red font-12\"\r\n (click)=\"buttonClicked(element,'EnableEmail', $event)\">\r\n {{ i18n.translate('enableEmail')}}\r\n </button>\r\n <button *ngIf=\"element?.user!==null && element?.user?.disabledCleanUp!==true\" mat-menu-item class=\"text-color-onyx font-12\"\r\n (click)=\"buttonClicked(element,'CreateEntryPermission', $event)\">\r\n {{ i18n.translate('createCEP')}}\r\n </button>\r\n <!-- <button *ngIf=\"!element?.user?.email\" mat-menu-item class=\"text-color-red font-12\"\r\n (click)=\"buttonClicked(element,'DisableEntryPermission', $event)\">\r\n {{i18n.translate('disableEntryPermission')}}\r\n </button> -->\r\n <button *ngIf=\"!element?.user?.email && element?.user?.disabledCleanUp!==true\" mat-menu-item class=\"text-color-red font-12\"\r\n (click)=\"buttonClicked(element,'DeleteAccount', $event)\">\r\n {{i18n.translate('deleteAccount')}}\r\n </button>\r\n\r\n <button *ngIf=\"element?.user?.email && element?.user?.disabledCleanUp!==true\" [disabled]=\"!element?.mailExtensionAllowed\" mat-menu-item class=\"text-color-onyx font-12\"\r\n (click)=\"buttonClicked(element,'ExtendAccount', $event)\">\r\n {{ i18n.translate('extendAccount')}}\r\n </button>\r\n <button mat-menu-item class=\"text-color-onyx font-12\" *ngIf=\"element?.user?.disabledCleanUp!==true\" (click)=\"buttonClicked(element,'update', $event)\">\r\n {{ i18n.translate('updateEmploymentInformation')}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n \r\n <span class=\"text-nowrap\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchDefault>\r\n {{ element[column] }}\r\n </span>\r\n </ng-container>\r\n <ng-container *ngIf=\"loading\">\r\n <span class=\" d-block loading-bg\"></span>\r\n </ng-container>\r\n \r\n </td>\r\n \r\n \r\n </ng-container>\r\n </ng-container>\r\n \r\n <tr mat-header-row *matHeaderRowDef=\"columns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: columns;\" class=\"cursor-pointer\" (click)=\"selectedRow(row)\"></tr>\r\n </table>\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"loading\">\r\n <span>loading...</span>\r\n </ng-container> -->\r\n <!-- <ng-container *ngIf=\"loading\">-->\r\n <!-- <td *matCellDef=\"let element\" >loading....</td>-->\r\n <!-- </ng-container>-->\r\n <!--{{this.rows | json}}-->\r\n \r\n<!-- <app-no-data-placeholder *ngIf=\"noData && !loading\" [noDataPlaceholder]=\"noDataObj\"></app-no-data-placeholder> -->\r\n\r\n <mat-paginator [pageSize]=\"10\" [length]=\"totalRecords\" (page)=\"onPageChange($event)\" \r\n [pageSizeOptions]=\"[5, 10, 25, 100]\" aria-label=\"Select page of users\"></mat-paginator>\r\n <!-- style-paginator -->\r\n <!-- showFirstLastButtons -->\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "component", type: RepeatedListComponent, selector: "app-repeated-list", inputs: ["listOfItems", "type"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
|
|
77
|
+
}
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TableListComponent, decorators: [{
|
|
79
|
+
type: Component,
|
|
80
|
+
args: [{ selector: 'app-table-list', schemas: [CUSTOM_ELEMENTS_SCHEMA], standalone: true, imports: [
|
|
81
|
+
MatPaginatorModule,
|
|
82
|
+
MatTableModule,
|
|
83
|
+
NgForOf,
|
|
84
|
+
NgClass,
|
|
85
|
+
NgSwitchCase,
|
|
86
|
+
RouterLink,
|
|
87
|
+
NgSwitch,
|
|
88
|
+
NgIf,
|
|
89
|
+
DatePipe,
|
|
90
|
+
RepeatedListComponent,
|
|
91
|
+
MatButton,
|
|
92
|
+
MatMenu,
|
|
93
|
+
MatMenuTrigger,
|
|
94
|
+
MatMenuItem,
|
|
95
|
+
NgSwitchDefault
|
|
96
|
+
], template: "<div class=\"overflow-auto\">\r\n <!-- #table (scroll)=\"onPageChange($event)\" -->\r\n <ng-container >\r\n <!-- (matSortChange)=\"sortData($event)\" -->\r\n <table mat-table [dataSource]=\"dataSource\" class=\"primary-table {{className}}\" matSort >\r\n <ng-container *ngFor=\"let column of columns; let i = index;\">\r\n <ng-container [matColumnDef]=\"column\">\r\n <th mat-header-cell *matHeaderCellDef [ngClass]=\"{'last-column' : columnsConfig[i].type === 'actions', 'sortArrow': columnsConfig[i]?.sortName?.length }\" mat-sort-header>\r\n {{i18n.translate(columnsConfig[i].label)}} </th>\r\n \r\n <td mat-cell [ngClass]=\"{'account-disabled': element?.user?.disabledCleanUp===true}\" *matCellDef=\"let element\">\r\n <ng-container [ngSwitch]=\"columnsConfig[i].type\" *ngIf=\"rows.length\">\r\n <a [ngClass]=\"columnsConfig[i].type\" [href]=\"element[column]\" *ngSwitchCase=\"'link'\">\r\n {{ element[column] }}\r\n </a>\r\n \r\n <a [ngClass]=\"columnsConfig[i].type\" [routerLink]=\"[element.id]\" [href]=\"element[column]\"\r\n *ngSwitchCase=\"'rout'\">\r\n {{ element[column] }}\r\n </a>\r\n \r\n <span class=\"d-inline-flex align-items-center\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'date'\">\r\n <span class=\"sfi sfi-clock text-color-coral\" *ngIf=\"!loading\"></span>\r\n <span class=\"mx-2\">\r\n <!-- {{ element?.Date.from }}\r\n <ng-container *ngIf=\"element?.Date.to\">\r\n : {{ element?.Date.to }}\r\n </ng-container> -->\r\n {{ element[column] | date: 'dd/MM/YYYY' }}\r\n </span>\r\n </span>\r\n \r\n <div class=\"d-inline-flex align-items-center\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'sla'\">\r\n <app-sla [value]=\"element?.SLA.value\" [maxValue]=\"element?.SLA.max\" [canvasScale]=\"45\"\r\n [outerLineColor]=\"getSlaColor(element?.SLA.value, element?.SLA.max)\"></app-sla>\r\n </div>\r\n \r\n <div class=\"img-card table-img\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'image'\">\r\n <img [src]=\"element?.image\" alt=\"\">\r\n </div>\r\n \r\n <span class=\"{{ element[column].type }}\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'status'\">\r\n {{ element[column].label }}\r\n </span>\r\n \r\n \r\n <div class=\"d-flex mx-n1\" *ngSwitchCase=\"'RequestType'\">\r\n <div class=\"request-type mx-1 {{item.status}}\" *ngFor=\"let item of element?.RequestType\">\r\n {{ item.label }}\r\n <span class=\"mx-1\" *ngIf=\"item.status === 'need-action'\"></span>\r\n <span class=\"sfi sfi-info \" *ngIf=\"item.status === 'need-action'\"></span>\r\n </div>\r\n </div>\r\n \r\n \r\n <span class=\"{{ element[column].type }} {{ element[column] ? 'text-color-coral underline' : '' }}\"\r\n [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'number'\">\r\n {{ element[column] ? element[column] : '-' }}\r\n </span>\r\n \r\n <div class=\"text-nowrap d-flex align-items-center\" [ngClass]=\"columnsConfig[i].type\"\r\n *ngSwitchCase=\"'group'\">\r\n <span>{{element?.Group.groupName}}</span>\r\n <span class=\"mx-2\"></span>\r\n <app-repeated-list type=\"users-avatar\" [listOfItems]=\"element?.Group.users\"></app-repeated-list>\r\n </div>\r\n \r\n <div class=\"d-flex align-items-center gap-2\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'user'\">\r\n <span class=\"img-card circled-img small\" *ngIf=\"!loading\">\r\n <img src=\"{{'data:image/png;base64,' + element?.user?.personalPhoto}}\"\r\n onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </span>\r\n <div class=\"d-flex flex-column\">\r\n <span class=\"font-14 font-weight-medium\">{{element?.user?.name}}</span>\r\n <span class=\"font-12 font-weight-normal text-color-dark-gray mt-1\">{{element?.user?.email}}</span>\r\n </div>\r\n </div>\r\n \r\n \r\n <div class=\"delegate d-flex align-items-center\" [ngClass]=\"columnsConfig[i].type\"\r\n *ngSwitchCase=\"'assigned'\">\r\n <div class=\"img-card x-small circled-img\">\r\n <img [src]=\"element?.AssignedTo.image\" alt=\"\">\r\n </div>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"font-14 font-weight-medium text-color-onyx\">{{element?.AssignedTo.name}}</span>\r\n <span class=\"sfi sfi-close text-color-coral\"></span>\r\n </div>\r\n \r\n \r\n <ng-container *ngSwitchCase=\"'statusAction'\">\r\n <div class=\"table-action\">\r\n \r\n <div class=\"count-down mx-n1\" *ngIf=\"element[column] === 'need-action'\">\r\n <div class=\"item mx-1\">\r\n <span class=\"font-12 font-weight-medium text-color-onyx d-block\">01</span>\r\n <span class=\"font-8 font-weight-light text-color-onyx d-block\">Days</span>\r\n </div>\r\n <div class=\"item mx-1\">\r\n <span class=\"font-12 font-weight-medium text-color-onyx d-block\">18</span>\r\n <span class=\"font-8 font-weight-light text-color-onyx d-block\">Hours</span>\r\n </div>\r\n <div class=\"item mx-1\">\r\n <span class=\"font-12 font-weight-medium text-color-onyx d-block\">44</span>\r\n <span class=\"font-8 font-weight-light text-color-onyx d-block\">Mins</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"d-flex align-items-center\" *ngIf=\"element[column] === 'approved'\">\r\n <span class=\"status approved\">\r\n Approved\r\n </span>\r\n </div>\r\n \r\n <div class=\"d-flex align-items-center\" *ngIf=\"element[column] === 'sent-back'\">\r\n <span class=\"status rejected\">\r\n Sent Back\r\n </span>\r\n <span class=\"mx-2\"></span>\r\n <button mat-stroked-button class=\"btn button-primary square br-w-1 font-14 font-weight-medium\"\r\n (click)=\"sentBack()\">\r\n <span class=\"sfi sfi-chat-o\"></span>\r\n </button>\r\n </div>\r\n \r\n <div class=\"d-flex align-items-center\" *ngIf=\"element[column] === 'pending'\">\r\n <span class=\"status pending\">\r\n Pending\r\n </span>\r\n <span class=\"mx-2\"></span>\r\n \r\n <div class=\"d-flex align-items-center mx-n1\">\r\n <div class=\"img-card circled-img x-small mx-1\">\r\n <img [src]=\"element?.pendingWith.image\" alt=\"\">\r\n </div>\r\n \r\n <div class=\"d-flex flex-column mx-1\">\r\n <span class=\"font-8 font-weight-medium text-color-yellow text-nowrap\">Pending With</span>\r\n <span class=\"font-11 font-weight-medium text-nowrap\">{{element?.pendingWith.name}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n </div>\r\n </ng-container>\r\n \r\n \r\n <ng-container *ngSwitchCase=\"'actions'\">\r\n \r\n <div class=\"d-flex justify-content-between mx-n2\">\r\n <ng-container *ngFor=\"let action of element[column]\">\r\n \r\n <div class=\"flex-grow-1\">\r\n <ng-container *ngIf=\"action.type.buttonType === 'stroked'\">\r\n <button mat-stroked-button (click)=\"buttonClicked(element,action.fn, $event)\"\r\n class=\"btn button-{{action.type.buttonClass}} mx-2\">\r\n {{action.label}}\r\n </button>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"action.type.buttonType === 'flat'\">\r\n <button mat-flat-button (click)=\"buttonClicked(element,action.fn, $event)\"\r\n class=\"btn button-{{action.type.buttonClass}} mx-2\">\r\n {{action.label}}\r\n </button>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"action.type.buttonType === 'icon'\">\r\n <button mat-icon-button (click)=\"buttonClicked(element,action.fn, $event)\"\r\n class=\"btn button-{{action.type.buttonClass}} mx-2\">\r\n <span class=\"sfi sfi-{{action.type.icon}}\"></span>\r\n </button>\r\n </ng-container>\r\n </div>\r\n \r\n <ng-container *ngIf=\"action.type.buttonType === 'all'\">\r\n <button mat-icon-button class=\"btn button-transparent square medium mx-2 text-end\"\r\n [matMenuTriggerFor]=\"menuAction\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"sfi sfi-dots text-color-onyx\"></span>\r\n </button>\r\n <mat-menu #menuAction=\"matMenu\" xPosition=\"before\" class=\"actions-menu\">\r\n <button *ngIf=\"!element?.user?.email && element?.user?.disabledCleanUp!==true\" mat-menu-item class=\"text-color-onyx font-12\"\r\n (click)=\"buttonClicked(element,'CreateEmail', $event)\">\r\n {{i18n.translate('createEmail')}} \r\n </button>\r\n <button *ngIf=\"element?.user?.email && element?.user?.enabled==='true'\" mat-menu-item class=\"text-color-red font-12\"\r\n (click)=\"buttonClicked(element,'DisableEmail', $event)\">\r\n {{ i18n.translate('disableEmail')}}\r\n </button>\r\n <button *ngIf=\"element?.user?.email && element?.user?.disabledCleanUp===true\" mat-menu-item class=\"text-color-red font-12\"\r\n (click)=\"buttonClicked(element,'EnableEmail', $event)\">\r\n {{ i18n.translate('enableEmail')}}\r\n </button>\r\n <button *ngIf=\"element?.user!==null && element?.user?.disabledCleanUp!==true\" mat-menu-item class=\"text-color-onyx font-12\"\r\n (click)=\"buttonClicked(element,'CreateEntryPermission', $event)\">\r\n {{ i18n.translate('createCEP')}}\r\n </button>\r\n <!-- <button *ngIf=\"!element?.user?.email\" mat-menu-item class=\"text-color-red font-12\"\r\n (click)=\"buttonClicked(element,'DisableEntryPermission', $event)\">\r\n {{i18n.translate('disableEntryPermission')}}\r\n </button> -->\r\n <button *ngIf=\"!element?.user?.email && element?.user?.disabledCleanUp!==true\" mat-menu-item class=\"text-color-red font-12\"\r\n (click)=\"buttonClicked(element,'DeleteAccount', $event)\">\r\n {{i18n.translate('deleteAccount')}}\r\n </button>\r\n\r\n <button *ngIf=\"element?.user?.email && element?.user?.disabledCleanUp!==true\" [disabled]=\"!element?.mailExtensionAllowed\" mat-menu-item class=\"text-color-onyx font-12\"\r\n (click)=\"buttonClicked(element,'ExtendAccount', $event)\">\r\n {{ i18n.translate('extendAccount')}}\r\n </button>\r\n <button mat-menu-item class=\"text-color-onyx font-12\" *ngIf=\"element?.user?.disabledCleanUp!==true\" (click)=\"buttonClicked(element,'update', $event)\">\r\n {{ i18n.translate('updateEmploymentInformation')}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n \r\n <span class=\"text-nowrap\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchDefault>\r\n {{ element[column] }}\r\n </span>\r\n </ng-container>\r\n <ng-container *ngIf=\"loading\">\r\n <span class=\" d-block loading-bg\"></span>\r\n </ng-container>\r\n \r\n </td>\r\n \r\n \r\n </ng-container>\r\n </ng-container>\r\n \r\n <tr mat-header-row *matHeaderRowDef=\"columns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: columns;\" class=\"cursor-pointer\" (click)=\"selectedRow(row)\"></tr>\r\n </table>\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"loading\">\r\n <span>loading...</span>\r\n </ng-container> -->\r\n <!-- <ng-container *ngIf=\"loading\">-->\r\n <!-- <td *matCellDef=\"let element\" >loading....</td>-->\r\n <!-- </ng-container>-->\r\n <!--{{this.rows | json}}-->\r\n \r\n<!-- <app-no-data-placeholder *ngIf=\"noData && !loading\" [noDataPlaceholder]=\"noDataObj\"></app-no-data-placeholder> -->\r\n\r\n <mat-paginator [pageSize]=\"10\" [length]=\"totalRecords\" (page)=\"onPageChange($event)\" \r\n [pageSizeOptions]=\"[5, 10, 25, 100]\" aria-label=\"Select page of users\"></mat-paginator>\r\n <!-- style-paginator -->\r\n <!-- showFirstLastButtons -->\r\n</div>" }]
|
|
97
|
+
}], propDecorators: { columns: [{
|
|
98
|
+
type: Input
|
|
99
|
+
}], columnsConfig: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], rows: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], actions: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], totalRecords: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], className: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}], pageChanged: [{
|
|
110
|
+
type: Output
|
|
111
|
+
}], buttonAction: [{
|
|
112
|
+
type: Output
|
|
113
|
+
}], emitDataRow: [{
|
|
114
|
+
type: Output
|
|
115
|
+
}] } });
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC90YWJsZS1saXN0L3RhYmxlLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvdGFibGUtbGlzdC90YWJsZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDREQUE0RDtBQUM1RCx1REFBdUQ7QUFDdkQsdURBQXVEO0FBQ3ZELE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDM0UsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzFHLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7QUFFNUUsc0dBQXNHO0FBMkJ0RyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsYUFBYTtJQUMxQyxPQUFPLENBQU07SUFDYixhQUFhLENBQU07SUFDbkIsSUFBSSxDQUFNO0lBQ1YsT0FBTyxHQUFRLEVBQUUsQ0FBQztJQUNsQixZQUFZLENBQVc7SUFDdkIsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUNqQixVQUFVLEdBQUcsSUFBSSxrQkFBa0IsRUFBTyxDQUFDO0lBQ3hDLFdBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUNwRCxZQUFZLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDckQsV0FBVyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRTlELDRDQUE0QztJQUU1QyxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVk7UUFDdkIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekMsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFVO1FBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFHRCxNQUFNO1FBQ0osbUVBQW1FO1FBQ25FLG9CQUFvQjtRQUNwQixpREFBaUQ7UUFDakQsWUFBWTtRQUNaLDZCQUE2QjtRQUM3QiwrQ0FBK0M7UUFDL0MsZ0RBQWdEO1FBQ2hELG9CQUFvQjtRQUNwQixzQkFBc0I7UUFDdEIsNEJBQTRCO1FBQzVCLE1BQU07UUFDTixNQUFNO1FBRU4sNENBQTRDO1FBQzVDLGNBQWM7UUFDZCxNQUFNO0lBQ1IsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFPLEVBQUUsRUFBVSxFQUFFLE1BQWtCO0lBRXJELENBQUM7SUFFRCxXQUFXLENBQUMsR0FBRztJQUVmLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVSxFQUFFLEdBQVc7SUFFbkMsQ0FBQztJQUVELFFBQVE7SUFFUixDQUFDO3VHQXJFVSxrQkFBa0I7MkZBQWxCLGtCQUFrQiw0VkN6Qy9CLGduY0E0UE0seUREcE9GLGtCQUFrQixtU0FDbEIsY0FBYyx1Z0NBQ2QsT0FBTyxtSEFDUCxPQUFPLG9GQUNQLFlBQVkscUZBQ1osVUFBVSxvT0FDVixRQUFRLDZFQUNSLElBQUksd0ZBQ0osUUFBUSw2Q0FDUixxQkFBcUIsK0ZBQ3JCLFNBQVMsaUxBQ1QsT0FBTywyUUFDUCxjQUFjLHFTQUNkLFdBQVcsc0lBQ1gsZUFBZTs7MkZBR04sa0JBQWtCO2tCQXhCOUIsU0FBUzsrQkFDRSxnQkFBZ0IsV0FHakIsQ0FBQyxzQkFBc0IsQ0FBQyxjQUNyQixJQUFJLFdBQ1A7d0JBQ1Asa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxZQUFZO3dCQUNaLFVBQVU7d0JBQ1YsUUFBUTt3QkFDUixJQUFJO3dCQUNKLFFBQVE7d0JBQ1IscUJBQXFCO3dCQUNyQixTQUFTO3dCQUNULE9BQU87d0JBQ1AsY0FBYzt3QkFDZCxXQUFXO3dCQUNYLGVBQWU7cUJBQ2hCOzhCQUdRLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3VzZS1saWZlY3ljbGUtaW50ZXJmYWNlICovXHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xyXG5pbXBvcnQge0NVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIEV2ZW50RW1pdHRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QmFzZUNvbXBvbmVudH0gZnJvbSAnLi8uLi9iYXNlLWNvbXBvbmVudC9iYXNlLWNvbXBvbmVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TWF0VGFibGVEYXRhU291cmNlLCBNYXRUYWJsZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQge01hdFBhZ2luYXRvck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHtEYXRlUGlwZSwgTmdDbGFzcywgTmdGb3JPZiwgTmdJZiwgTmdTd2l0Y2gsIE5nU3dpdGNoQ2FzZSwgTmdTd2l0Y2hEZWZhdWx0fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7Um91dGVyTGlua30gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge1JlcGVhdGVkTGlzdENvbXBvbmVudH0gZnJvbSBcIi4uL3JlcGVhdGVkLWxpc3QvcmVwZWF0ZWQtbGlzdC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtNYXRCdXR0b259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcclxuaW1wb3J0IHtNYXRNZW51LCBNYXRNZW51SXRlbSwgTWF0TWVudVRyaWdnZXJ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XHJcblxyXG4vLyBpbXBvcnQgeyBDb25maXJtYXRpb25Qb3B1cENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbmZpcm1hdGlvbi1wb3B1cC9jb25maXJtYXRpb24tcG9wdXAuY29tcG9uZW50JztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC10YWJsZS1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdFBhZ2luYXRvck1vZHVsZSxcclxuICAgIE1hdFRhYmxlTW9kdWxlLFxyXG4gICAgTmdGb3JPZixcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBOZ1N3aXRjaENhc2UsXHJcbiAgICBSb3V0ZXJMaW5rLFxyXG4gICAgTmdTd2l0Y2gsXHJcbiAgICBOZ0lmLFxyXG4gICAgRGF0ZVBpcGUsXHJcbiAgICBSZXBlYXRlZExpc3RDb21wb25lbnQsXHJcbiAgICBNYXRCdXR0b24sXHJcbiAgICBNYXRNZW51LFxyXG4gICAgTWF0TWVudVRyaWdnZXIsXHJcbiAgICBNYXRNZW51SXRlbSxcclxuICAgIE5nU3dpdGNoRGVmYXVsdFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlTGlzdENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIGNvbHVtbnM6IGFueTtcclxuICBASW5wdXQoKSBjb2x1bW5zQ29uZmlnOiBhbnk7XHJcbiAgQElucHV0KCkgcm93czogYW55O1xyXG4gIEBJbnB1dCgpIGFjdGlvbnM6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIHRvdGFsUmVjb3JkcyAhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XHJcbiAgcHVibGljIGRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPGFueT4oKTtcclxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBidXR0b25BY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBlbWl0RGF0YVJvdzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIC8vIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZykgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLnJvd3M7XHJcbiAgfVxyXG5cclxuICB0cnVuY2F0ZU5hbWUodGV4dDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGV4dCkge1xyXG4gICAgICBjb25zdCBjaGFyYWN0ZXJzID0gdGV4dC5tYXRjaCgvXFxiKFxcdykvZyk7XHJcbiAgICAgIGlmIChjaGFyYWN0ZXJzKSB7XHJcbiAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnMuam9pbignJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KGV2ZW50KVxyXG4gIH1cclxuXHJcblxyXG4gIGRlbGV0ZSgpOiB2b2lkIHtcclxuICAgIC8vIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ29uZmlybWF0aW9uUG9wdXBDb21wb25lbnQsIHtcclxuICAgIC8vICAgd2lkdGg6ICc3MDBweCcsXHJcbiAgICAvLyAgIHBhbmVsQ2xhc3M6IFsnY29uZmlybS1wb3B1cCcsICdtYWluLXBvcHVwJ10sXHJcbiAgICAvLyAgIGRhdGE6IHtcclxuICAgIC8vICAgICB0aXRsZTogJ0RlbGV0ZSBNYXRjaCcsXHJcbiAgICAvLyAgICAgbWVzc2FnZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCBkZWxldGUnLFxyXG4gICAgLy8gICAgIGNvbmZpcm1UZXh0OiAnbWF0Y2ggbWFraW5nIGV4YW1wbGUgbmFtZScsXHJcbiAgICAvLyAgICAgbW9yZVRleHQ6ICcnLFxyXG4gICAgLy8gICAgIHR5cGU6ICdkZWxldGUnLFxyXG4gICAgLy8gICAgIGljb246ICdkZWxldGUtbWF0Y2gnLFxyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KTtcclxuXHJcbiAgICAvLyBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgLy8gICAvLyBjbG9zZWRcclxuICAgIC8vIH0pO1xyXG4gIH1cclxuXHJcbiAgYnV0dG9uQ2xpY2tlZChlbGVtZW50LCBmbjogc3RyaW5nLCAkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuXHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZFJvdyhyb3cpIHtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRTbGFDb2xvcih2YWx1ZTogYW55LCBtYXg6IG51bWJlcikge1xyXG5cclxuICB9XHJcblxyXG4gIHNlbnRCYWNrKCkge1xyXG5cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG9cIj5cclxuICA8IS0tICN0YWJsZSAgKHNjcm9sbCk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiIC0tPlxyXG4gIDxuZy1jb250YWluZXIgPlxyXG4gICAgPCEtLSAobWF0U29ydENoYW5nZSk9XCJzb3J0RGF0YSgkZXZlbnQpXCIgLS0+XHJcbiAgICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBjbGFzcz1cInByaW1hcnktdGFibGUge3tjbGFzc05hbWV9fVwiIG1hdFNvcnQgPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IGkgPSBpbmRleDtcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uXCI+XHJcbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFtuZ0NsYXNzXT1cInsnbGFzdC1jb2x1bW4nIDogY29sdW1uc0NvbmZpZ1tpXS50eXBlID09PSAnYWN0aW9ucycsICdzb3J0QXJyb3cnOiBjb2x1bW5zQ29uZmlnW2ldPy5zb3J0TmFtZT8ubGVuZ3RoIH1cIiBtYXQtc29ydC1oZWFkZXI+XHJcbiAgICAgICAgICAgIHt7aTE4bi50cmFuc2xhdGUoY29sdW1uc0NvbmZpZ1tpXS5sYWJlbCl9fSA8L3RoPlxyXG4gIFxyXG4gICAgICAgICAgPHRkIG1hdC1jZWxsICBbbmdDbGFzc109XCJ7J2FjY291bnQtZGlzYWJsZWQnOiBlbGVtZW50Py51c2VyPy5kaXNhYmxlZENsZWFuVXA9PT10cnVlfVwiICAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbnNDb25maWdbaV0udHlwZVwiICpuZ0lmPVwicm93cy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICA8YSBbbmdDbGFzc109XCJjb2x1bW5zQ29uZmlnW2ldLnR5cGVcIiBbaHJlZl09XCJlbGVtZW50W2NvbHVtbl1cIiAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmsnXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBlbGVtZW50W2NvbHVtbl0gfX1cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgXHJcbiAgICAgICAgICAgICAgPGEgW25nQ2xhc3NdPVwiY29sdW1uc0NvbmZpZ1tpXS50eXBlXCIgW3JvdXRlckxpbmtdPVwiW2VsZW1lbnQuaWRdXCIgW2hyZWZdPVwiZWxlbWVudFtjb2x1bW5dXCJcclxuICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCIncm91dCdcIj5cclxuICAgICAgICAgICAgICAgIHt7IGVsZW1lbnRbY29sdW1uXSB9fVxyXG4gICAgICAgICAgICAgIDwvYT5cclxuICBcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtaW5saW5lLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgW25nQ2xhc3NdPVwiY29sdW1uc0NvbmZpZ1tpXS50eXBlXCIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZmkgc2ZpLWNsb2NrIHRleHQtY29sb3ItY29yYWxcIiAqbmdJZj1cIiFsb2FkaW5nXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0ge3sgZWxlbWVudD8uRGF0ZS5mcm9tIH19XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50Py5EYXRlLnRvXCI+XHJcbiAgICAgICAgICAgICAgICAgIDoge3sgZWxlbWVudD8uRGF0ZS50byB9fVxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICB7eyBlbGVtZW50W2NvbHVtbl0gfCBkYXRlOiAnZGQvTU0vWVlZWScgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtaW5saW5lLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgW25nQ2xhc3NdPVwiY29sdW1uc0NvbmZpZ1tpXS50eXBlXCIgKm5nU3dpdGNoQ2FzZT1cIidzbGEnXCI+XHJcbiAgICAgICAgICAgICAgICA8YXBwLXNsYSBbdmFsdWVdPVwiZWxlbWVudD8uU0xBLnZhbHVlXCIgW21heFZhbHVlXT1cImVsZW1lbnQ/LlNMQS5tYXhcIiBbY2FudmFzU2NhbGVdPVwiNDVcIlxyXG4gICAgICAgICAgICAgICAgICBbb3V0ZXJMaW5lQ29sb3JdPVwiZ2V0U2xhQ29sb3IoZWxlbWVudD8uU0xBLnZhbHVlLCBlbGVtZW50Py5TTEEubWF4KVwiPjwvYXBwLXNsYT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWNhcmQgdGFibGUtaW1nXCIgW25nQ2xhc3NdPVwiY29sdW1uc0NvbmZpZ1tpXS50eXBlXCIgKm5nU3dpdGNoQ2FzZT1cIidpbWFnZSdcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJlbGVtZW50Py5pbWFnZVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3sgZWxlbWVudFtjb2x1bW5dLnR5cGUgfX1cIiBbbmdDbGFzc109XCJjb2x1bW5zQ29uZmlnW2ldLnR5cGVcIiAqbmdTd2l0Y2hDYXNlPVwiJ3N0YXR1cydcIj5cclxuICAgICAgICAgICAgICAgIHt7IGVsZW1lbnRbY29sdW1uXS5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICBcclxuICBcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG14LW4xXCIgKm5nU3dpdGNoQ2FzZT1cIidSZXF1ZXN0VHlwZSdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1ZXN0LXR5cGUgbXgtMSB7e2l0ZW0uc3RhdHVzfX1cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBlbGVtZW50Py5SZXF1ZXN0VHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiICpuZ0lmPVwiaXRlbS5zdGF0dXMgPT09ICduZWVkLWFjdGlvbidcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1pbmZvIFwiICpuZ0lmPVwiaXRlbS5zdGF0dXMgPT09ICduZWVkLWFjdGlvbidcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICBcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInt7IGVsZW1lbnRbY29sdW1uXS50eXBlIH19IHt7IGVsZW1lbnRbY29sdW1uXSA/ICd0ZXh0LWNvbG9yLWNvcmFsIHVuZGVybGluZScgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW5zQ29uZmlnW2ldLnR5cGVcIiAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cclxuICAgICAgICAgICAgICAgIHt7IGVsZW1lbnRbY29sdW1uXSA/IGVsZW1lbnRbY29sdW1uXSA6ICctJyB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICBcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ub3dyYXAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIFtuZ0NsYXNzXT1cImNvbHVtbnNDb25maWdbaV0udHlwZVwiXHJcbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2dyb3VwJ1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3tlbGVtZW50Py5Hcm91cC5ncm91cE5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxhcHAtcmVwZWF0ZWQtbGlzdCB0eXBlPVwidXNlcnMtYXZhdGFyXCIgW2xpc3RPZkl0ZW1zXT1cImVsZW1lbnQ/Lkdyb3VwLnVzZXJzXCI+PC9hcHAtcmVwZWF0ZWQtbGlzdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiIFtuZ0NsYXNzXT1cImNvbHVtbnNDb25maWdbaV0udHlwZVwiICpuZ1N3aXRjaENhc2U9XCIndXNlcidcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1nLWNhcmQgY2lyY2xlZC1pbWcgc21hbGxcIiAqbmdJZj1cIiFsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwie3snZGF0YTppbWFnZS9wbmc7YmFzZTY0LCcgKyBlbGVtZW50Py51c2VyPy5wZXJzb25hbFBob3RvfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIG9uZXJyb3I9XCJ0aGlzLm9uZXJyb3I9bnVsbDt0aGlzLnNyYz0nYXNzZXRzL2ltYWdlcy91c2VyLnN2Zyc7XCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC0xNCBmb250LXdlaWdodC1tZWRpdW1cIj57e2VsZW1lbnQ/LnVzZXI/Lm5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LTEyIGZvbnQtd2VpZ2h0LW5vcm1hbCB0ZXh0LWNvbG9yLWRhcmstZ3JheSBtdC0xXCI+e3tlbGVtZW50Py51c2VyPy5lbWFpbH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGVnYXRlIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBbbmdDbGFzc109XCJjb2x1bW5zQ29uZmlnW2ldLnR5cGVcIlxyXG4gICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidhc3NpZ25lZCdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctY2FyZCB4LXNtYWxsIGNpcmNsZWQtaW1nXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJlbGVtZW50Py5Bc3NpZ25lZFRvLmltYWdlXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC0xNCBmb250LXdlaWdodC1tZWRpdW0gdGV4dC1jb2xvci1vbnl4XCI+e3tlbGVtZW50Py5Bc3NpZ25lZFRvLm5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1jbG9zZSB0ZXh0LWNvbG9yLWNvcmFsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzdGF0dXNBY3Rpb24nXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtYWN0aW9uXCI+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudC1kb3duIG14LW4xXCIgKm5nSWY9XCJlbGVtZW50W2NvbHVtbl0gPT09ICduZWVkLWFjdGlvbidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbSBteC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtMTIgZm9udC13ZWlnaHQtbWVkaXVtIHRleHQtY29sb3Itb255eCBkLWJsb2NrXCI+MDE8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtOCBmb250LXdlaWdodC1saWdodCB0ZXh0LWNvbG9yLW9ueXggZC1ibG9ja1wiPkRheXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0gbXgtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LTEyIGZvbnQtd2VpZ2h0LW1lZGl1bSB0ZXh0LWNvbG9yLW9ueXggZC1ibG9ja1wiPjE4PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LTggZm9udC13ZWlnaHQtbGlnaHQgdGV4dC1jb2xvci1vbnl4IGQtYmxvY2tcIj5Ib3Vyczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbSBteC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtMTIgZm9udC13ZWlnaHQtbWVkaXVtIHRleHQtY29sb3Itb255eCBkLWJsb2NrXCI+NDQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtOCBmb250LXdlaWdodC1saWdodCB0ZXh0LWNvbG9yLW9ueXggZC1ibG9ja1wiPk1pbnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiICpuZ0lmPVwiZWxlbWVudFtjb2x1bW5dID09PSAnYXBwcm92ZWQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGF0dXMgYXBwcm92ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIEFwcHJvdmVkXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiAqbmdJZj1cImVsZW1lbnRbY29sdW1uXSA9PT0gJ3NlbnQtYmFjaydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXR1cyByZWplY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgU2VudCBCYWNrXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cImJ0biBidXR0b24tcHJpbWFyeSBzcXVhcmUgYnItdy0xIGZvbnQtMTQgZm9udC13ZWlnaHQtbWVkaXVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZW50QmFjaygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNmaSBzZmktY2hhdC1vXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiAqbmdJZj1cImVsZW1lbnRbY29sdW1uXSA9PT0gJ3BlbmRpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGF0dXMgcGVuZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ1xyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTJcIj48L3NwYW4+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbXgtbjFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctY2FyZCBjaXJjbGVkLWltZyB4LXNtYWxsIG14LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImVsZW1lbnQ/LnBlbmRpbmdXaXRoLmltYWdlXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbXgtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtOCBmb250LXdlaWdodC1tZWRpdW0gdGV4dC1jb2xvci15ZWxsb3cgdGV4dC1ub3dyYXBcIj5QZW5kaW5nIFdpdGg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC0xMSBmb250LXdlaWdodC1tZWRpdW0gdGV4dC1ub3dyYXBcIj57e2VsZW1lbnQ/LnBlbmRpbmdXaXRoLm5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidhY3Rpb25zJ1wiPlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBteC1uMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgZWxlbWVudFtjb2x1bW5dXCI+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uLnR5cGUuYnV0dG9uVHlwZSA9PT0gJ3N0cm9rZWQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJidXR0b25DbGlja2VkKGVsZW1lbnQsYWN0aW9uLmZuLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidXR0b24te3thY3Rpb24udHlwZS5idXR0b25DbGFzc319IG14LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2FjdGlvbi5sYWJlbH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uLnR5cGUuYnV0dG9uVHlwZSA9PT0gJ2ZsYXQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIChjbGljayk9XCJidXR0b25DbGlja2VkKGVsZW1lbnQsYWN0aW9uLmZuLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidXR0b24te3thY3Rpb24udHlwZS5idXR0b25DbGFzc319IG14LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2FjdGlvbi5sYWJlbH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uLnR5cGUuYnV0dG9uVHlwZSA9PT0gJ2ljb24nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJidXR0b25DbGlja2VkKGVsZW1lbnQsYWN0aW9uLmZuLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidXR0b24te3thY3Rpb24udHlwZS5idXR0b25DbGFzc319IG14LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNmaSBzZmkte3thY3Rpb24udHlwZS5pY29ufX1cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbi50eXBlLmJ1dHRvblR5cGUgPT09ICdhbGwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cImJ0biBidXR0b24tdHJhbnNwYXJlbnQgc3F1YXJlIG1lZGl1bSBteC0yIHRleHQtZW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVBY3Rpb25cIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1kb3RzIHRleHQtY29sb3Itb255eFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51QWN0aW9uPVwibWF0TWVudVwiIHhQb3NpdGlvbj1cImJlZm9yZVwiIGNsYXNzPVwiYWN0aW9ucy1tZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhZWxlbWVudD8udXNlcj8uZW1haWwgJiYgZWxlbWVudD8udXNlcj8uZGlzYWJsZWRDbGVhblVwIT09dHJ1ZVwiIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJ0ZXh0LWNvbG9yLW9ueXggZm9udC0xMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJ1dHRvbkNsaWNrZWQoZWxlbWVudCwnQ3JlYXRlRW1haWwnLCAkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tpMThuLnRyYW5zbGF0ZSgnY3JlYXRlRW1haWwnKX19IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImVsZW1lbnQ/LnVzZXI/LmVtYWlsICYmIGVsZW1lbnQ/LnVzZXI/LmVuYWJsZWQ9PT0ndHJ1ZSdcIiBtYXQtbWVudS1pdGVtIGNsYXNzPVwidGV4dC1jb2xvci1yZWQgZm9udC0xMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJ1dHRvbkNsaWNrZWQoZWxlbWVudCwnRGlzYWJsZUVtYWlsJywgJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4udHJhbnNsYXRlKCdkaXNhYmxlRW1haWwnKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZWxlbWVudD8udXNlcj8uZW1haWwgICYmIGVsZW1lbnQ/LnVzZXI/LmRpc2FibGVkQ2xlYW5VcD09PXRydWVcIiBtYXQtbWVudS1pdGVtIGNsYXNzPVwidGV4dC1jb2xvci1yZWQgZm9udC0xMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJ1dHRvbkNsaWNrZWQoZWxlbWVudCwnRW5hYmxlRW1haWwnLCAkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaTE4bi50cmFuc2xhdGUoJ2VuYWJsZUVtYWlsJyl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImVsZW1lbnQ/LnVzZXIhPT1udWxsICYmIGVsZW1lbnQ/LnVzZXI/LmRpc2FibGVkQ2xlYW5VcCE9PXRydWVcIiBtYXQtbWVudS1pdGVtIGNsYXNzPVwidGV4dC1jb2xvci1vbnl4IGZvbnQtMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJidXR0b25DbGlja2VkKGVsZW1lbnQsJ0NyZWF0ZUVudHJ5UGVybWlzc2lvbicsICRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpMThuLnRyYW5zbGF0ZSgnY3JlYXRlQ0VQJyl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uICAqbmdJZj1cIiFlbGVtZW50Py51c2VyPy5lbWFpbFwiIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJ0ZXh0LWNvbG9yLXJlZCBmb250LTEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYnV0dG9uQ2xpY2tlZChlbGVtZW50LCdEaXNhYmxlRW50cnlQZXJtaXNzaW9uJywgJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7aTE4bi50cmFuc2xhdGUoJ2Rpc2FibGVFbnRyeVBlcm1pc3Npb24nKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAgKm5nSWY9XCIhZWxlbWVudD8udXNlcj8uZW1haWwgJiYgZWxlbWVudD8udXNlcj8uZGlzYWJsZWRDbGVhblVwIT09dHJ1ZVwiIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJ0ZXh0LWNvbG9yLXJlZCBmb250LTEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJ1dHRvbkNsaWNrZWQoZWxlbWVudCwnRGVsZXRlQWNjb3VudCcsICRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tpMThuLnRyYW5zbGF0ZSgnZGVsZXRlQWNjb3VudCcpfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImVsZW1lbnQ/LnVzZXI/LmVtYWlsICYmIGVsZW1lbnQ/LnVzZXI/LmRpc2FibGVkQ2xlYW5VcCE9PXRydWVcIiBbZGlzYWJsZWRdPVwiIWVsZW1lbnQ/Lm1haWxFeHRlbnNpb25BbGxvd2VkXCIgbWF0LW1lbnUtaXRlbSBjbGFzcz1cInRleHQtY29sb3Itb255eCBmb250LTEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYnV0dG9uQ2xpY2tlZChlbGVtZW50LCdFeHRlbmRBY2NvdW50JywgJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4udHJhbnNsYXRlKCdleHRlbmRBY2NvdW50Jyl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwidGV4dC1jb2xvci1vbnl4IGZvbnQtMTJcIiAqbmdJZj1cImVsZW1lbnQ/LnVzZXI/LmRpc2FibGVkQ2xlYW5VcCE9PXRydWVcIiAoY2xpY2spPVwiYnV0dG9uQ2xpY2tlZChlbGVtZW50LCd1cGRhdGUnLCAkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaTE4bi50cmFuc2xhdGUoJ3VwZGF0ZUVtcGxveW1lbnRJbmZvcm1hdGlvbicpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gIFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ub3dyYXBcIiBbbmdDbGFzc109XCJjb2x1bW5zQ29uZmlnW2ldLnR5cGVcIiAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICAgICAge3sgZWxlbWVudFtjb2x1bW5dIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIiBkLWJsb2NrIGxvYWRpbmctYmdcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gIFxyXG4gICAgICAgICAgPC90ZD5cclxuICBcclxuICBcclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgXHJcbiAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAgKm1hdEhlYWRlclJvd0RlZj1cImNvbHVtbnNcIj48L3RyPlxyXG4gICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogY29sdW1ucztcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNlbGVjdGVkUm93KHJvdylcIj48L3RyPlxyXG4gICAgPC90YWJsZT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nXCI+XHJcbiAgICA8c3Bhbj5sb2FkaW5nLi4uPC9zcGFuPlxyXG4gIDwvbmctY29udGFpbmVyPiAtLT5cclxuICA8IS0tICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ1wiPi0tPlxyXG4gIDwhLS0gICAgPHRkICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiA+bG9hZGluZy4uLi48L3RkPi0tPlxyXG4gIDwhLS0gIDwvbmctY29udGFpbmVyPi0tPlxyXG4gIDwhLS17e3RoaXMucm93cyB8IGpzb259fS0tPlxyXG4gIFxyXG48IS0tIDxhcHAtbm8tZGF0YS1wbGFjZWhvbGRlciAqbmdJZj1cIm5vRGF0YSAmJiAhbG9hZGluZ1wiIFtub0RhdGFQbGFjZWhvbGRlcl09XCJub0RhdGFPYmpcIj48L2FwcC1uby1kYXRhLXBsYWNlaG9sZGVyPiAtLT5cclxuXHJcbiAgPG1hdC1wYWdpbmF0b3IgW3BhZ2VTaXplXT1cIjEwXCIgW2xlbmd0aF09XCJ0b3RhbFJlY29yZHNcIiAocGFnZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiIFxyXG4gICAgW3BhZ2VTaXplT3B0aW9uc109XCJbNSwgMTAsIDI1LCAxMDBdXCIgYXJpYS1sYWJlbD1cIlNlbGVjdCBwYWdlIG9mIHVzZXJzXCI+PC9tYXQtcGFnaW5hdG9yPlxyXG4gIDwhLS0gc3R5bGUtcGFnaW5hdG9yIC0tPlxyXG4gIDwhLS0gc2hvd0ZpcnN0TGFzdEJ1dHRvbnMgLS0+XHJcbjwvZGl2PiJdfQ==
|
package/esm2022/lib/components/shared-components/form-field/textarea/special-chars.directive.mjs
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* eslint-disable @angular-eslint/directive-selector */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-empty-function */
|
|
3
|
+
import { Directive, HostListener } from '@angular/core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class SpecialCharacterDirective {
|
|
6
|
+
regexStr = '^[a-zA-Z0-9]*$';
|
|
7
|
+
constructor() {
|
|
8
|
+
}
|
|
9
|
+
onInputChange(event) {
|
|
10
|
+
const inputElement = event.target;
|
|
11
|
+
inputElement.value = inputElement.value.replace(/[\'\`]/g, '');
|
|
12
|
+
}
|
|
13
|
+
blockPaste(event) {
|
|
14
|
+
const inputElement = event.target;
|
|
15
|
+
inputElement.value = inputElement.value.replace(/[\'\`]/g, '');
|
|
16
|
+
}
|
|
17
|
+
onDrop(event) {
|
|
18
|
+
const inputElement = event.target;
|
|
19
|
+
inputElement.value = inputElement.value.replace(/[\'\`]/g, '');
|
|
20
|
+
}
|
|
21
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SpecialCharacterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
22
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: SpecialCharacterDirective, selector: "[specialIsAlphaNumeric]", host: { listeners: { "input": "onInputChange($event)", "paste": "blockPaste($event)", "drop": "onDrop($event)" } }, ngImport: i0 });
|
|
23
|
+
}
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SpecialCharacterDirective, decorators: [{
|
|
25
|
+
type: Directive,
|
|
26
|
+
args: [{
|
|
27
|
+
selector: '[specialIsAlphaNumeric]'
|
|
28
|
+
}]
|
|
29
|
+
}], ctorParameters: () => [], propDecorators: { onInputChange: [{
|
|
30
|
+
type: HostListener,
|
|
31
|
+
args: ['input', ['$event']]
|
|
32
|
+
}], blockPaste: [{
|
|
33
|
+
type: HostListener,
|
|
34
|
+
args: ['paste', ['$event']]
|
|
35
|
+
}], onDrop: [{
|
|
36
|
+
type: HostListener,
|
|
37
|
+
args: ['drop', ['$event']]
|
|
38
|
+
}] } });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlY2lhbC1jaGFycy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC90ZXh0YXJlYS9zcGVjaWFsLWNoYXJzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQseURBQXlEO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUt4RCxNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQztJQUU1QjtJQUVBLENBQUM7SUFFa0MsYUFBYSxDQUFDLEtBQUs7UUFDcEQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDdEQsWUFBWSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUdELFVBQVUsQ0FBQyxLQUFxQjtRQUM5QixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUN0RCxZQUFZLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBR0QsTUFBTSxDQUFDLEtBQUs7UUFDVixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUN0RCxZQUFZLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO3VHQXRCVSx5QkFBeUI7MkZBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFIckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO2lCQUNwQzt3REFRb0MsYUFBYTtzQkFBL0MsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTWpDLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBT2pDLE1BQU07c0JBREwsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yICovXHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvbiAqL1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbc3BlY2lhbElzQWxwaGFOdW1lcmljXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNwZWNpYWxDaGFyYWN0ZXJEaXJlY3RpdmUge1xyXG4gIHJlZ2V4U3RyID0gJ15bYS16QS1aMC05XSokJztcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnLCBbJyRldmVudCddKSBvbklucHV0Q2hhbmdlKGV2ZW50KSB7XHJcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlucHV0RWxlbWVudC52YWx1ZSA9IGlucHV0RWxlbWVudC52YWx1ZS5yZXBsYWNlKC9bXFwnXFxgXS9nLCAnJyk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdwYXN0ZScsIFsnJGV2ZW50J10pXHJcbiAgYmxvY2tQYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgaW5wdXRFbGVtZW50LnZhbHVlID0gaW5wdXRFbGVtZW50LnZhbHVlLnJlcGxhY2UoL1tcXCdcXGBdL2csICcnKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxyXG4gIG9uRHJvcChldmVudCkge1xyXG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBpbnB1dEVsZW1lbnQudmFsdWUgPSBpbnB1dEVsZW1lbnQudmFsdWUucmVwbGFjZSgvW1xcJ1xcYF0vZywgJycpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
2
|
+
import { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, forwardRef, inject, Input } from '@angular/core';
|
|
3
|
+
import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
|
|
4
|
+
import { MatFormImports, Shareds, TextLanguageDirectives } from '../shared-imports';
|
|
5
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/material/form-field";
|
|
8
|
+
import * as i2 from "@angular/material/input";
|
|
9
|
+
import * as i3 from "../form-label/form-label.component";
|
|
10
|
+
import * as i4 from "../validation-errors/validation-errors.component";
|
|
11
|
+
import * as i5 from "../info-item/info-item.component";
|
|
12
|
+
import * as i6 from "@angular/forms";
|
|
13
|
+
import * as i7 from "@angular/common";
|
|
14
|
+
import * as i8 from "../../../../directives/en.directive";
|
|
15
|
+
import * as i9 from "../../../../directives/ar.directive";
|
|
16
|
+
export class TextareaComponent extends ControlValueAccessorDirective {
|
|
17
|
+
className;
|
|
18
|
+
preventSpecailChar;
|
|
19
|
+
destroyRef = inject(DestroyRef);
|
|
20
|
+
ngOnInit() {
|
|
21
|
+
super.ngOnInit();
|
|
22
|
+
this.actionStateService.resetAction$
|
|
23
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
24
|
+
.subscribe(res => {
|
|
25
|
+
if (!this.isReadOnly && this.control.enabled) {
|
|
26
|
+
this.control.reset();
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TextareaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
31
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: TextareaComponent, isStandalone: true, selector: "app-textarea", inputs: { className: "className", preventSpecailChar: "preventSpecailChar" }, providers: [
|
|
32
|
+
{
|
|
33
|
+
provide: NG_VALUE_ACCESSOR,
|
|
34
|
+
useExisting: forwardRef(() => TextareaComponent),
|
|
35
|
+
multi: true,
|
|
36
|
+
},
|
|
37
|
+
], usesInheritance: true, ngImport: i0, template: "@if(!isReadOnly){\r\n <ng-container>\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <mat-form-field class=\"custom-textarea bordered-input {{className}}\">\r\n <mat-label>{{ label }}</mat-label>\r\n <label class=\"mat-form-content\">\r\n @if (type === 'arOnly'){\r\n <textarea [placeholder]=\"placeholder\" min=\"minlength\" arOnly max=\"maxValue\"\r\n [formControl]=\"control\" matInput></textarea>\r\n }\r\n @if (type === 'enOnly'){\r\n <textarea [placeholder]=\"placeholder\" min=\"minlength\" enOnly max=\"maxValue\"\r\n [formControl]=\"control\" matInput></textarea>\r\n }\r\n @if (type !== 'enOnly' && type !== 'arOnly' ){\r\n <textarea [placeholder]=\"placeholder\"\r\n [maxlength]=\"maxLength\" min=\"minlength\" specialIsAlphaNumeric max=\"maxValue\"\r\n [formControl]=\"control\" matInput></textarea>\r\n }\r\n\r\n </label>\r\n @if (showHint){\r\n <mat-hint class=\"d-flex align-items-center gap-1 mt-1\">\r\n <span class=\"sfi sfi-info fs-17 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"fs-12 fc-black line-height-1\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n\r\n </mat-form-field>\r\n <app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n\r\n </ng-container>\r\n}\r\n@if (isReadOnly && control.value && (showIfEmpty || control)){\r\n <ng-container>\r\n <app-info-item class=\"info-item w-100\" [insideTable]=\"insideTable\" [label]=\"label\" [value]=\"control?.value\" [type]=\"type\"></app-info-item>\r\n </ng-container>\r\n}\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i1.MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3.FormLabelComponent, selector: "app-form-label", inputs: ["tooltip", "label", "optional"] }, { kind: "component", type: i4.ValidationErrorsComponent, selector: "app-validation-errors", inputs: ["errors", "customErrorMessages"] }, { kind: "component", type: i5.InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "ngmodule", type: i6.ReactiveFormsModule }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.EnOnlyDirective, selector: "[enOnly]" }, { kind: "directive", type: i9.ArOnlyDirective, selector: "[arOnly]" }] });
|
|
38
|
+
}
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: TextareaComponent, decorators: [{
|
|
40
|
+
type: Component,
|
|
41
|
+
args: [{ selector: 'app-textarea', schemas: [CUSTOM_ELEMENTS_SCHEMA], imports: [
|
|
42
|
+
...MatFormImports,
|
|
43
|
+
...Shareds,
|
|
44
|
+
...TextLanguageDirectives
|
|
45
|
+
], standalone: true, providers: [
|
|
46
|
+
{
|
|
47
|
+
provide: NG_VALUE_ACCESSOR,
|
|
48
|
+
useExisting: forwardRef(() => TextareaComponent),
|
|
49
|
+
multi: true,
|
|
50
|
+
},
|
|
51
|
+
], template: "@if(!isReadOnly){\r\n <ng-container>\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <mat-form-field class=\"custom-textarea bordered-input {{className}}\">\r\n <mat-label>{{ label }}</mat-label>\r\n <label class=\"mat-form-content\">\r\n @if (type === 'arOnly'){\r\n <textarea [placeholder]=\"placeholder\" min=\"minlength\" arOnly max=\"maxValue\"\r\n [formControl]=\"control\" matInput></textarea>\r\n }\r\n @if (type === 'enOnly'){\r\n <textarea [placeholder]=\"placeholder\" min=\"minlength\" enOnly max=\"maxValue\"\r\n [formControl]=\"control\" matInput></textarea>\r\n }\r\n @if (type !== 'enOnly' && type !== 'arOnly' ){\r\n <textarea [placeholder]=\"placeholder\"\r\n [maxlength]=\"maxLength\" min=\"minlength\" specialIsAlphaNumeric max=\"maxValue\"\r\n [formControl]=\"control\" matInput></textarea>\r\n }\r\n\r\n </label>\r\n @if (showHint){\r\n <mat-hint class=\"d-flex align-items-center gap-1 mt-1\">\r\n <span class=\"sfi sfi-info fs-17 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"fs-12 fc-black line-height-1\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n\r\n </mat-form-field>\r\n <app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n\r\n </ng-container>\r\n}\r\n@if (isReadOnly && control.value && (showIfEmpty || control)){\r\n <ng-container>\r\n <app-info-item class=\"info-item w-100\" [insideTable]=\"insideTable\" [label]=\"label\" [value]=\"control?.value\" [type]=\"type\"></app-info-item>\r\n </ng-container>\r\n}\r\n" }]
|
|
52
|
+
}], propDecorators: { className: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}], preventSpecailChar: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}] } });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvdGV4dGFyZWEvdGV4dGFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvdGV4dGFyZWEvdGV4dGFyZWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7QUFxQmhFLE1BQU0sT0FBTyxpQkFBd0IsU0FBUSw2QkFBbUM7SUFDckUsU0FBUyxDQUFVO0lBQ25CLGtCQUFrQixDQUFXO0lBQ3RDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkIsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUNoQixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWTthQUNuQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3pDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQzt1R0FkVSxpQkFBaUI7MkZBQWpCLGlCQUFpQix5SUFSakI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO2dCQUNoRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsaURDdkJILDZ3REF3Q0E7OzJGRGZhLGlCQUFpQjtrQkFuQjdCLFNBQVM7K0JBQ0UsY0FBYyxXQUdmLENBQUMsc0JBQXNCLENBQUMsV0FDeEI7d0JBQ1AsR0FBRyxjQUFjO3dCQUNqQixHQUFHLE9BQU87d0JBQ1YsR0FBRyxzQkFBc0I7cUJBQzFCLGNBQ1csSUFBSSxhQUNMO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGtCQUFrQixDQUFDOzRCQUNoRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4QkFHUSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIERlc3Ryb3lSZWYsIGZvcndhcmRSZWYsIGluamVjdCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZSB9IGZyb20gJy4uL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWF0Rm9ybUltcG9ydHMsIFNoYXJlZHMsIFRleHRMYW5ndWFnZURpcmVjdGl2ZXMgfSBmcm9tICcuLi9zaGFyZWQtaW1wb3J0cyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXRleHRhcmVhJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dGFyZWEuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RleHRhcmVhLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIC4uLk1hdEZvcm1JbXBvcnRzLFxyXG4gICAgLi4uU2hhcmVkcyxcclxuICAgIC4uLlRleHRMYW5ndWFnZURpcmVjdGl2ZXNcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUZXh0YXJlYUNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0YXJlYUNvbXBvbmVudDxUeXBlPiBleHRlbmRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlPFR5cGU+IHtcclxuICBASW5wdXQoKSBjbGFzc05hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHJldmVudFNwZWNhaWxDaGFyITogYm9vbGVhbjtcclxuICBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKVxyXG4gICAgdGhpcy5hY3Rpb25TdGF0ZVNlcnZpY2UucmVzZXRBY3Rpb24kXHJcbiAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcclxuICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmlzUmVhZE9ubHkgJiYgdGhpcy5jb250cm9sLmVuYWJsZWQpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxufVxyXG4iLCJAaWYoIWlzUmVhZE9ubHkpe1xyXG4gIDxuZy1jb250YWluZXI+XHJcbiAgICBAaWYobGFiZWwpe1xyXG4gICAgICA8YXBwLWZvcm0tbGFiZWwgW2xhYmVsXT1cImxhYmVsXCIgW29wdGlvbmFsXT1cInJlcXVpcmVkIHx8IG1hbmRhdG9yeSA/IGZhbHNlIDogdHJ1ZVwiIFt0b29sdGlwXT1cInRvb2x0aXBcIj48L2FwcC1mb3JtLWxhYmVsPlxyXG4gICAgICB9XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJjdXN0b20tdGV4dGFyZWEgYm9yZGVyZWQtaW5wdXQgIHt7Y2xhc3NOYW1lfX1cIj5cclxuICAgICAgPG1hdC1sYWJlbD57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJtYXQtZm9ybS1jb250ZW50XCI+XHJcbiAgICAgICAgQGlmICh0eXBlID09PSAnYXJPbmx5Jyl7XHJcbiAgICAgICAgICA8dGV4dGFyZWEgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgICBtaW49XCJtaW5sZW5ndGhcIiBhck9ubHkgbWF4PVwibWF4VmFsdWVcIlxyXG4gICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIG1hdElucHV0PjwvdGV4dGFyZWE+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAodHlwZSA9PT0gJ2VuT25seScpe1xyXG4gICAgICAgICAgPHRleHRhcmVhICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiAgbWluPVwibWlubGVuZ3RoXCIgZW5Pbmx5IG1heD1cIm1heFZhbHVlXCJcclxuICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIiBtYXRJbnB1dD48L3RleHRhcmVhPlxyXG4gICAgICAgIH1cclxuICAgICAgIEBpZiAodHlwZSAhPT0gJ2VuT25seScgJiYgIHR5cGUgIT09ICdhck9ubHknICl7XHJcbiAgICAgICAgPHRleHRhcmVhIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgW21heGxlbmd0aF09XCJtYXhMZW5ndGhcIiBtaW49XCJtaW5sZW5ndGhcIiBzcGVjaWFsSXNBbHBoYU51bWVyaWMgbWF4PVwibWF4VmFsdWVcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgbWF0SW5wdXQ+PC90ZXh0YXJlYT5cclxuICAgICAgIH1cclxuXHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIEBpZiAoc2hvd0hpbnQpe1xyXG4gICAgICAgIDxtYXQtaGludCBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEgbXQtMVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZmkgc2ZpLWluZm8gZnMtMTcgZmMtZGFyay1ncmF5XCIgW25nQ2xhc3NdPVwieydmYy1vYXNpcy1saWdodC1pbXAnOnZhbHVlfVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTIgZmMtYmxhY2sgbGluZS1oZWlnaHQtMVwiPnt7IGhpbnQgfX08L3NwYW4+XHJcbiAgICAgICAgPC9tYXQtaGludD5cclxuICAgICAgfVxyXG5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPGFwcC12YWxpZGF0aW9uLWVycm9ycyBbZXJyb3JzXT1cImNvbnRyb2wuZXJyb3JzXCI+PC9hcHAtdmFsaWRhdGlvbi1lcnJvcnM+XHJcblxyXG4gIDwvbmctY29udGFpbmVyPlxyXG59XHJcbkBpZiAoaXNSZWFkT25seSAmJiBjb250cm9sLnZhbHVlICYmIChzaG93SWZFbXB0eSB8fCBjb250cm9sKSl7XHJcbiAgPG5nLWNvbnRhaW5lcj5cclxuICAgIDxhcHAtaW5mby1pdGVtIGNsYXNzPVwiaW5mby1pdGVtIHctMTAwXCIgW2luc2lkZVRhYmxlXT1cImluc2lkZVRhYmxlXCIgW2xhYmVsXT1cImxhYmVsXCIgW3ZhbHVlXT1cImNvbnRyb2w/LnZhbHVlXCIgW3R5cGVdPVwidHlwZVwiPjwvYXBwLWluZm8taXRlbT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, forwardRef, inject, DestroyRef } from '@angular/core';
|
|
2
|
+
import { MatButtonToggle, MatButtonToggleGroup } from "@angular/material/button-toggle";
|
|
3
|
+
import { SatPopoverModule } from "@ncstate/sat-popover";
|
|
4
|
+
import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
|
|
5
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
6
|
+
import { Shareds } from '../shared-imports';
|
|
7
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@ncstate/sat-popover";
|
|
10
|
+
import * as i2 from "../form-label/form-label.component";
|
|
11
|
+
import * as i3 from "../info-item/info-item.component";
|
|
12
|
+
import * as i4 from "@angular/forms";
|
|
13
|
+
export class ToggleButtonComponent extends ControlValueAccessorDirective {
|
|
14
|
+
className = 'bordered-input';
|
|
15
|
+
data;
|
|
16
|
+
onChange = new EventEmitter();
|
|
17
|
+
error;
|
|
18
|
+
optionAr;
|
|
19
|
+
optionEn;
|
|
20
|
+
hasHint = false;
|
|
21
|
+
options;
|
|
22
|
+
displayedLabel = 'description';
|
|
23
|
+
key = 'value';
|
|
24
|
+
destroyRef = inject(DestroyRef);
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
super.ngOnInit();
|
|
27
|
+
this.actionStateService.resetAction$
|
|
28
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
29
|
+
.subscribe(res => {
|
|
30
|
+
if (!this.isReadOnly && this.control.enabled) {
|
|
31
|
+
this.control.reset();
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
this.toggleButtonControl.setValue(this.control.value?.key);
|
|
35
|
+
this.toggleButtonControl.valueChanges.subscribe((ctrlValue) => {
|
|
36
|
+
if (ctrlValue?.key) {
|
|
37
|
+
this.toggleButtonControl.setValue(ctrlValue?.key);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
setToggelButtonValue(hasHint, hintSection, item) {
|
|
42
|
+
hasHint ? hintSection?.toggle() : null;
|
|
43
|
+
this.control.setValue({ key: item[this.key], value: item[this.displayedLabel] });
|
|
44
|
+
this.toggleButtonControl.setValue(item[this.key]);
|
|
45
|
+
}
|
|
46
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ToggleButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
47
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: ToggleButtonComponent, isStandalone: true, selector: "app-toggle-button", inputs: { className: "className", data: "data", error: "error", optionAr: "optionAr", optionEn: "optionEn", hasHint: "hasHint", options: "options", displayedLabel: "displayedLabel", key: "key" }, outputs: { onChange: "onChange" }, providers: [
|
|
48
|
+
{
|
|
49
|
+
provide: NG_VALUE_ACCESSOR,
|
|
50
|
+
useExisting: forwardRef(() => ToggleButtonComponent),
|
|
51
|
+
multi: true,
|
|
52
|
+
},
|
|
53
|
+
], usesInheritance: true, ngImport: i0, template: "@if(!isReadOnly){\r\n <ng-container>\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n\r\n @if(options){\r\n <mat-button-toggle-group class=\"Toggle__buttons d-flex align-items-center gap-3\" [value]=\"toggleButtonControl.value\" [formControl]=\"toggleButtonControl\"\r\n aria-label=\"Font Style\" [multiple]=\"multiple\">\r\n @for(item of options; track item){\r\n <mat-button-toggle (click)=\"setToggelButtonValue(hasHint, hintSection, item)\" [value]=\"item[key]\" [satPopoverAnchor]=\"hintSection\">\r\n <span>\r\n {{item[displayedLabel]}}\r\n </span>\r\n <sat-popover #hintSection [hasBackdrop]=\" true\" verticalAlign=\"below\">\r\n <div class=\"default-tooltip\">\r\n <p class=\"m-0\" [innerHTML]=\"item[displayedLabel]\"></p>\r\n </div>\r\n </sat-popover>\r\n </mat-button-toggle>\r\n }\r\n\r\n </mat-button-toggle-group>\r\n }\r\n </ng-container>\r\n}\r\n\r\n@if(isReadOnly && toggleButtonControl.value){\r\n <ng-container>\r\n <app-info-item class=\"info-item w-100\" [insideTable]=\"insideTable\" [type]=\"'toggleBtn'\" [label]=\"label\" [value]=\"control.value?.value\"></app-info-item>\r\n </ng-container>\r\n\r\n}\r\n", styles: [""], dependencies: [{ kind: "directive", type: MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: SatPopoverModule }, { kind: "component", type: i1.SatPopoverComponent, selector: "sat-popover", inputs: ["anchor", "horizontalAlign", "xAlign", "verticalAlign", "yAlign", "forceAlignment", "lockAlignment", "autoFocus", "restoreFocus", "scrollStrategy", "hasBackdrop", "interactiveClose", "openTransition", "closeTransition", "openAnimationStartAtScale", "closeAnimationEndAtScale", "backdropClass", "panelClass"], outputs: ["opened", "closed", "afterOpen", "afterClose", "backdropClicked", "overlayKeydown"] }, { kind: "directive", type: i1.SatPopoverAnchorDirective, selector: "[satPopoverAnchor]", inputs: ["satPopoverAnchor"], exportAs: ["satPopoverAnchor"] }, { kind: "component", type: i2.FormLabelComponent, selector: "app-form-label", inputs: ["tooltip", "label", "optional"] }, { kind: "component", type: i3.InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "ngmodule", type: i4.ReactiveFormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
54
|
+
}
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ToggleButtonComponent, decorators: [{
|
|
56
|
+
type: Component,
|
|
57
|
+
args: [{ selector: 'app-toggle-button', imports: [
|
|
58
|
+
MatButtonToggleGroup,
|
|
59
|
+
MatButtonToggle,
|
|
60
|
+
SatPopoverModule,
|
|
61
|
+
...Shareds
|
|
62
|
+
], providers: [
|
|
63
|
+
{
|
|
64
|
+
provide: NG_VALUE_ACCESSOR,
|
|
65
|
+
useExisting: forwardRef(() => ToggleButtonComponent),
|
|
66
|
+
multi: true,
|
|
67
|
+
},
|
|
68
|
+
], standalone: true, template: "@if(!isReadOnly){\r\n <ng-container>\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n\r\n @if(options){\r\n <mat-button-toggle-group class=\"Toggle__buttons d-flex align-items-center gap-3\" [value]=\"toggleButtonControl.value\" [formControl]=\"toggleButtonControl\"\r\n aria-label=\"Font Style\" [multiple]=\"multiple\">\r\n @for(item of options; track item){\r\n <mat-button-toggle (click)=\"setToggelButtonValue(hasHint, hintSection, item)\" [value]=\"item[key]\" [satPopoverAnchor]=\"hintSection\">\r\n <span>\r\n {{item[displayedLabel]}}\r\n </span>\r\n <sat-popover #hintSection [hasBackdrop]=\" true\" verticalAlign=\"below\">\r\n <div class=\"default-tooltip\">\r\n <p class=\"m-0\" [innerHTML]=\"item[displayedLabel]\"></p>\r\n </div>\r\n </sat-popover>\r\n </mat-button-toggle>\r\n }\r\n\r\n </mat-button-toggle-group>\r\n }\r\n </ng-container>\r\n}\r\n\r\n@if(isReadOnly && toggleButtonControl.value){\r\n <ng-container>\r\n <app-info-item class=\"info-item w-100\" [insideTable]=\"insideTable\" [type]=\"'toggleBtn'\" [label]=\"label\" [value]=\"control.value?.value\"></app-info-item>\r\n </ng-container>\r\n\r\n}\r\n" }]
|
|
69
|
+
}], propDecorators: { className: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], data: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], onChange: [{
|
|
74
|
+
type: Output
|
|
75
|
+
}], error: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], optionAr: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}], optionEn: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}], hasHint: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}], options: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}], displayedLabel: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], key: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}] } });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC90b2dnbGUtYnV0dG9uL3RvZ2dsZS1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvdG9nZ2xlLWJ1dHRvbi90b2dnbGUtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFDLGVBQWUsRUFBRSxvQkFBb0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUMxQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0FBcUI5RCxNQUFNLE9BQU8scUJBQTRCLFNBQVEsNkJBQW1DO0lBQ3pFLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztJQUM3QixJQUFJLENBQVM7SUFDWixRQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUMvQixLQUFLLENBQVU7SUFDZixRQUFRLENBQVU7SUFD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RXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBpbmplY3QsIERlc3Ryb3lSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge01hdEJ1dHRvblRvZ2dsZSwgTWF0QnV0dG9uVG9nZ2xlR3JvdXB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlXCI7XHJcbmltcG9ydCB7U2F0UG9wb3Zlck1vZHVsZX0gZnJvbSBcIkBuY3N0YXRlL3NhdC1wb3BvdmVyXCI7XHJcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmV9IGZyb20gJy4uL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1NoYXJlZHN9IGZyb20gJy4uL3NoYXJlZC1pbXBvcnRzJztcclxuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXRvZ2dsZS1idXR0b24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90b2dnbGUtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90b2dnbGUtYnV0dG9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0QnV0dG9uVG9nZ2xlR3JvdXAsXHJcbiAgICBNYXRCdXR0b25Ub2dnbGUsXHJcbiAgICBTYXRQb3BvdmVyTW9kdWxlLFxyXG4gICAgLi4uU2hhcmVkc1xyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUb2dnbGVCdXR0b25Db21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb2dnbGVCdXR0b25Db21wb25lbnQ8VHlwZT4gZXh0ZW5kcyBDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZTxUeXBlPiB7XHJcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJ2JvcmRlcmVkLWlucHV0JztcclxuICBASW5wdXQoKSBkYXRhITogYW55W107XHJcbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIGVycm9yITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG9wdGlvbkFyITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG9wdGlvbkVuITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGhhc0hpbnQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBvcHRpb25zOiBhbnlbXTtcclxuICBASW5wdXQoKSBkaXNwbGF5ZWRMYWJlbDogc3RyaW5nID0gJ2Rlc2NyaXB0aW9uJztcclxuICBASW5wdXQoKSBrZXk6IHN0cmluZyA9ICd2YWx1ZSc7XHJcbiAgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpXHJcbiAgICB0aGlzLmFjdGlvblN0YXRlU2VydmljZS5yZXNldEFjdGlvbiRcclxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNSZWFkT25seSAmJiB0aGlzLmNvbnRyb2wuZW5hYmxlZCkge1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sLnJlc2V0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMudG9nZ2xlQnV0dG9uQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmNvbnRyb2wudmFsdWU/LmtleSlcclxuXHJcbiAgICB0aGlzLnRvZ2dsZUJ1dHRvbkNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoY3RybFZhbHVlKSA9PiB7XHJcbiAgICAgICAgaWYgKGN0cmxWYWx1ZT8ua2V5KSB7XHJcbiAgICAgICAgICB0aGlzLnRvZ2dsZUJ1dHRvbkNvbnRyb2wuc2V0VmFsdWUoY3RybFZhbHVlPy5rZXkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBzZXRUb2dnZWxCdXR0b25WYWx1ZShoYXNIaW50OiBib29sZWFuLCBoaW50U2VjdGlvbjogYW55LCBpdGVtOiBhbnkpIHtcclxuICAgIGhhc0hpbnQgPyBoaW50U2VjdGlvbj8udG9nZ2xlKCkgOiBudWxsXHJcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoe2tleTogaXRlbVt0aGlzLmtleV0sIHZhbHVlOiBpdGVtW3RoaXMuZGlzcGxheWVkTGFiZWxdfSlcclxuICAgIHRoaXMudG9nZ2xlQnV0dG9uQ29udHJvbC5zZXRWYWx1ZShpdGVtW3RoaXMua2V5XSk7XHJcbiAgfVxyXG59XHJcbiIsIkBpZighaXNSZWFkT25seSl7XHJcbiAgPG5nLWNvbnRhaW5lcj5cclxuICAgIEBpZihsYWJlbCl7XHJcbiAgICAgIDxhcHAtZm9ybS1sYWJlbCBbbGFiZWxdPVwibGFiZWxcIiBbb3B0aW9uYWxdPVwicmVxdWlyZWQgfHwgbWFuZGF0b3J5ID8gZmFsc2UgOiB0cnVlXCIgW3Rvb2x0aXBdPVwidG9vbHRpcFwiPjwvYXBwLWZvcm0tbGFiZWw+XHJcbiAgICAgIH1cclxuXHJcbiAgQGlmKG9wdGlvbnMpe1xyXG4gICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIGNsYXNzPVwiVG9nZ2xlX19idXR0b25zIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIiBbdmFsdWVdPVwidG9nZ2xlQnV0dG9uQ29udHJvbC52YWx1ZVwiIFtmb3JtQ29udHJvbF09XCJ0b2dnbGVCdXR0b25Db250cm9sXCJcclxuICAgIGFyaWEtbGFiZWw9XCJGb250IFN0eWxlXCIgW211bHRpcGxlXT1cIm11bHRpcGxlXCI+XHJcbiAgICBAZm9yKGl0ZW0gb2Ygb3B0aW9uczsgdHJhY2sgaXRlbSl7XHJcbiAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSAoY2xpY2spPVwic2V0VG9nZ2VsQnV0dG9uVmFsdWUoaGFzSGludCwgaGludFNlY3Rpb24sIGl0ZW0pXCIgW3ZhbHVlXT1cIml0ZW1ba2V5XVwiIFtzYXRQb3BvdmVyQW5jaG9yXT1cImhpbnRTZWN0aW9uXCI+XHJcbiAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICB7e2l0ZW1bZGlzcGxheWVkTGFiZWxdfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNhdC1wb3BvdmVyICNoaW50U2VjdGlvbiBbaGFzQmFja2Ryb3BdPVwiIHRydWVcIiB2ZXJ0aWNhbEFsaWduPVwiYmVsb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWZhdWx0LXRvb2x0aXBcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIiBbaW5uZXJIVE1MXT1cIml0ZW1bZGlzcGxheWVkTGFiZWxdXCI+PC9wPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zYXQtcG9wb3Zlcj5cclxuICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgIH1cclxuXHJcbiA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxyXG4gIH1cclxuICA8L25nLWNvbnRhaW5lcj5cclxufVxyXG5cclxuQGlmKGlzUmVhZE9ubHkgJiYgdG9nZ2xlQnV0dG9uQ29udHJvbC52YWx1ZSl7XHJcbiAgPG5nLWNvbnRhaW5lcj5cclxuICAgIDxhcHAtaW5mby1pdGVtIGNsYXNzPVwiaW5mby1pdGVtIHctMTAwXCIgW2luc2lkZVRhYmxlXT1cImluc2lkZVRhYmxlXCIgW3R5cGVdPVwiJ3RvZ2dsZUJ0bidcIiBbbGFiZWxdPVwibGFiZWxcIiBbdmFsdWVdPVwiY29udHJvbC52YWx1ZT8udmFsdWVcIj48L2FwcC1pbmZvLWl0ZW0+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, Input } from '@angular/core';
|
|
3
|
+
import { MatError } from '@angular/material/form-field';
|
|
4
|
+
import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
|
|
5
|
+
import { RegexPatterns } from "../../../../regex/regex-patterns";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
export class ValidationErrorsComponent extends ControlValueAccessorDirective {
|
|
9
|
+
errors = {};
|
|
10
|
+
customErrorMessages = {};
|
|
11
|
+
errorMessages = {
|
|
12
|
+
required: this.i18n.translate('thisFieldIsRequired'),
|
|
13
|
+
maxlength: this.i18n.translate('thisFieldMaxLength'),
|
|
14
|
+
minlength: this.i18n.translate('thisFieldMinLength'),
|
|
15
|
+
validatePhoneNumber: this.i18n.translate('pleaseEnterValidNumber')
|
|
16
|
+
};
|
|
17
|
+
ngOnChanges(changes) {
|
|
18
|
+
const { customErrorMessages } = changes;
|
|
19
|
+
if (customErrorMessages) {
|
|
20
|
+
this.errorMessages = {
|
|
21
|
+
...this.errorMessages,
|
|
22
|
+
...customErrorMessages.currentValue,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
if (this.errors?.['pattern']?.requiredPattern === RegexPatterns.email) {
|
|
26
|
+
this.errorMessages['pattern'] = 'You must enter email';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ValidationErrorsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
30
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: ValidationErrorsComponent, isStandalone: true, selector: "app-validation-errors", inputs: { errors: "errors", customErrorMessages: "customErrorMessages" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: " @if(control.touched) {\r\n @for(error of errors | keyvalue; track error ) {\r\n <mat-error class=\"mb-2\">\r\n {{ errorMessages[error.key] }} {{errors['maxlength']?.requiredLength}} {{errors['minlength']?.requiredLength}}\r\n </mat-error>\r\n }\r\n }", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }] });
|
|
31
|
+
}
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ValidationErrorsComponent, decorators: [{
|
|
33
|
+
type: Component,
|
|
34
|
+
args: [{ selector: 'app-validation-errors', standalone: true, imports: [
|
|
35
|
+
CommonModule,
|
|
36
|
+
MatError
|
|
37
|
+
], template: " @if(control.touched) {\r\n @for(error of errors | keyvalue; track error ) {\r\n <mat-error class=\"mb-2\">\r\n {{ errorMessages[error.key] }} {{errors['maxlength']?.requiredLength}} {{errors['minlength']?.requiredLength}}\r\n </mat-error>\r\n }\r\n }" }]
|
|
38
|
+
}], propDecorators: { errors: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], customErrorMessages: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}] } });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1lcnJvcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvdmFsaWRhdGlvbi1lcnJvcnMvdmFsaWRhdGlvbi1lcnJvcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvdmFsaWRhdGlvbi1lcnJvcnMvdmFsaWRhdGlvbi1lcnJvcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtDQUFrQyxDQUFDOzs7QUFZL0QsTUFBTSxPQUFPLHlCQUFnQyxTQUFRLDZCQUFtQztJQUM3RSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ1osbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0lBQ2xDLGFBQWEsR0FBRztRQUNkLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQztRQUNwRCxTQUFTLEVBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUM7UUFDckQsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDO1FBQ3BELG1CQUFtQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDO0tBQ25FLENBQUM7SUFFRixXQUFXLENBQUMsT0FBc0I7UUFDaEMsTUFBTSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ3hDLElBQUksbUJBQW1CLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHO2dCQUNuQixHQUFHLElBQUksQ0FBQyxhQUFhO2dCQUNyQixHQUFHLG1CQUFtQixDQUFDLFlBQVk7YUFDcEMsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxlQUFlLEtBQUssYUFBYSxDQUFDLEtBQUssRUFBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsc0JBQXNCLENBQUE7UUFDMUQsQ0FBQztJQUNILENBQUM7dUdBckJVLHlCQUF5QjsyRkFBekIseUJBQXlCLHVNQ2hCdEMsNFNBTUcseURETUMsWUFBWSwwRkFDWixRQUFROzsyRkFHQyx5QkFBeUI7a0JBVnJDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBR3JCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFFBQVE7cUJBQ1Q7OEJBR1EsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RXJyb3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUgfSBmcm9tICcuLi9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7UmVnZXhQYXR0ZXJuc30gZnJvbSBcIi4uLy4uLy4uLy4uL3JlZ2V4L3JlZ2V4LXBhdHRlcm5zXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC12YWxpZGF0aW9uLWVycm9ycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ZhbGlkYXRpb24tZXJyb3JzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi92YWxpZGF0aW9uLWVycm9ycy5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0RXJyb3JcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uRXJyb3JzQ29tcG9uZW50PFR5cGU+IGV4dGVuZHMgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VHlwZT4gIHtcclxuICBASW5wdXQoKSBlcnJvcnMgPSB7fTtcclxuICBASW5wdXQoKSBjdXN0b21FcnJvck1lc3NhZ2VzID0ge307XHJcbiAgZXJyb3JNZXNzYWdlcyA9IHtcclxuICAgIHJlcXVpcmVkOiB0aGlzLmkxOG4udHJhbnNsYXRlKCd0aGlzRmllbGRJc1JlcXVpcmVkJyksXHJcbiAgICBtYXhsZW5ndGg6ICB0aGlzLmkxOG4udHJhbnNsYXRlKCd0aGlzRmllbGRNYXhMZW5ndGgnKSxcclxuICAgIG1pbmxlbmd0aDogdGhpcy5pMThuLnRyYW5zbGF0ZSgndGhpc0ZpZWxkTWluTGVuZ3RoJyksXHJcbiAgICB2YWxpZGF0ZVBob25lTnVtYmVyOiB0aGlzLmkxOG4udHJhbnNsYXRlKCdwbGVhc2VFbnRlclZhbGlkTnVtYmVyJylcclxuICB9O1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGN1c3RvbUVycm9yTWVzc2FnZXMgfSA9IGNoYW5nZXM7XHJcbiAgICBpZiAoY3VzdG9tRXJyb3JNZXNzYWdlcykge1xyXG4gICAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSB7XHJcbiAgICAgICAgLi4udGhpcy5lcnJvck1lc3NhZ2VzLFxyXG4gICAgICAgIC4uLmN1c3RvbUVycm9yTWVzc2FnZXMuY3VycmVudFZhbHVlLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZXJyb3JzPy5bJ3BhdHRlcm4nXT8ucmVxdWlyZWRQYXR0ZXJuID09PSBSZWdleFBhdHRlcm5zLmVtYWlsKXtcclxuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZXNbJ3BhdHRlcm4nXSA9ICdZb3UgbXVzdCBlbnRlciBlbWFpbCdcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiICBAaWYoY29udHJvbC50b3VjaGVkKSB7XHJcbiAgICBAZm9yKGVycm9yIG9mIGVycm9ycyB8IGtleXZhbHVlOyB0cmFjayBlcnJvciApIHtcclxuICAgICAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICAgICAgICAgIHt7IGVycm9yTWVzc2FnZXNbZXJyb3Iua2V5XSB9fSB7e2Vycm9yc1snbWF4bGVuZ3RoJ10/LnJlcXVpcmVkTGVuZ3RofX0ge3tlcnJvcnNbJ21pbmxlbmd0aCddPy5yZXF1aXJlZExlbmd0aH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICB9XHJcbiAgfSJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './dialogs/delete-dialog/delete-dialog.component';
|
|
2
|
+
export * from './dialogs/submit-dialog/submit-dialog.component';
|
|
3
|
+
export * from './dialogs/confirm-dialog/confirm-dialog.component';
|
|
4
|
+
export * from './form-field';
|
|
5
|
+
export * from './table/table.component';
|
|
6
|
+
export * from './action-buttons/action-buttons.component';
|
|
7
|
+
export * from './terms-conditions/terms-conditions.component';
|
|
8
|
+
export * from './title-section/title-section.component';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyx5Q0FBeUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGlhbG9ncy9kZWxldGUtZGlhbG9nL2RlbGV0ZS1kaWFsb2cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9kaWFsb2dzL3N1Ym1pdC1kaWFsb2cvc3VibWl0LWRpYWxvZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RpYWxvZ3MvY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWZpZWxkJztcclxuZXhwb3J0ICogZnJvbSAnLi90YWJsZS90YWJsZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi1idXR0b25zL2FjdGlvbi1idXR0b25zLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGVybXMtY29uZGl0aW9ucy90ZXJtcy1jb25kaXRpb25zLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGl0bGUtc2VjdGlvbi90aXRsZS1zZWN0aW9uLmNvbXBvbmVudCc7XHJcbiJdfQ==
|