ngx-techlify-core 18.71.0 → 18.72.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/access-control-config/access-control-config.component.mjs +1 -3
- package/esm2022/lib/app-admin/admin-role/admin-role-list/admin-role-list.component.mjs +2 -3
- package/esm2022/lib/app-admin/admin-role/admin-role-permission-form/admin-role-permission-form.component.mjs +1 -1
- package/esm2022/lib/app-admin/tenant/tenant-list-widget/tenant-list-widget.component.mjs +1 -3
- package/esm2022/lib/audit-log/audit-log-list/audit-log-list.component.mjs +2 -3
- package/esm2022/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.mjs +1 -1
- package/esm2022/lib/base-model/index.mjs +3 -3
- package/esm2022/lib/base-model/techlify-form.component.mjs +132 -0
- package/esm2022/lib/base-model/{techlify-list-component.mjs → techlify-list.component.mjs} +2 -2
- package/esm2022/lib/data-table/data-table.component.mjs +4 -4
- package/esm2022/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.mjs +6 -9
- package/esm2022/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.mjs +1 -1
- package/esm2022/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.mjs +3 -3
- package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.mjs +1 -1
- package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.mjs +3 -3
- package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.mjs +1 -1
- package/esm2022/lib/entity-files/entity-files-view-all.component.mjs +1 -2
- package/esm2022/lib/export-excel/export-excel-button/export-excel-button.component.mjs +36 -3
- package/esm2022/lib/import-csv/import-history-list/import-history-list.component.mjs +3 -3
- package/esm2022/lib/locked-date/locked-dates-list/locked-date-list.component.mjs +1 -2
- package/esm2022/lib/login-history-for-user/login-history-for-user.component.mjs +3 -3
- package/esm2022/lib/restrictors/restrictors-form/restrictors-form.component.mjs +1 -1
- package/esm2022/lib/restrictors/restrictors-list-page/restrictors-list-page.component.mjs +1 -2
- package/esm2022/lib/searchable-selector/searchable-selector.component.mjs +4 -5
- package/esm2022/lib/subscription/subscription-form/subscription-form.component.mjs +3 -3
- package/esm2022/lib/subscription/subscription-listing/subscription-listing.component.mjs +3 -4
- package/esm2022/lib/subscription/subscription-package-listing/subscription-package-listing.component.mjs +2 -3
- package/esm2022/lib/tag/techlify-tagger-tag-form/techlify-tagger-tag-form.component.mjs +1 -1
- package/esm2022/lib/tag/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.mjs +3 -3
- package/esm2022/lib/tag/techlify-tagger-tag-list/techlify-tagger-tag-list.component.mjs +2 -2
- package/esm2022/lib/tag/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.mjs +1 -1
- package/esm2022/lib/techlify-auto-complete-select/techlify-auto-complete-select.component.mjs +2 -7
- package/esm2022/lib/techlify-currency-pipe/techlify-currency-pipe.directive.mjs +27 -0
- package/esm2022/lib/techlify-feature/techlify-feature-listing.component.mjs +1 -3
- package/esm2022/lib/techlify-feature/techlify-feature.service.mjs +2 -2
- package/esm2022/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-for-user.component.mjs +1 -2
- package/esm2022/lib/techlify-update/techlify-update-history/techlify-update-history.component.mjs +2 -3
- package/esm2022/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.mjs +1 -3
- package/esm2022/lib/techlify-update/techlify-updates-teaser/techlify-updates-teaser.component.mjs +2 -3
- package/esm2022/lib/techlify-view/my-techlify-view-listing/my-techlify-view-listing.component.mjs +2 -2
- package/esm2022/lib/techlify-view/techlify-view-form/techlify-view-form.component.mjs +2 -2
- package/esm2022/lib/timeline-activity/timeline-activity-list/timeline-activity-list.component.mjs +1 -2
- package/esm2022/lib/user/users-view-all.component.mjs +3 -4
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/ngx-techlify-core.mjs +145 -110
- package/fesm2022/ngx-techlify-core.mjs.map +1 -1
- package/lib/access-control-config/access-control-config.component.d.ts +0 -1
- package/lib/app-admin/admin-role/admin-role-list/admin-role-list.component.d.ts +1 -1
- package/lib/base-model/index.d.ts +2 -2
- package/lib/base-model/{techlify-form-component.d.ts → techlify-form.component.d.ts} +1 -0
- package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.d.ts +1 -2
- package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.d.ts +1 -2
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.d.ts +1 -2
- package/lib/export-excel/export-excel-button/export-excel-button.component.d.ts +4 -1
- package/lib/import-csv/import-history-list/import-history-list.component.d.ts +1 -2
- package/lib/login-history-for-user/login-history-for-user.component.d.ts +1 -2
- package/lib/searchable-selector/searchable-selector.component.d.ts +2 -2
- package/lib/subscription/subscription-form/subscription-form.component.d.ts +1 -1
- package/lib/subscription/subscription-listing/subscription-listing.component.d.ts +1 -1
- package/lib/subscription/subscription-package-listing/subscription-package-listing.component.d.ts +1 -1
- package/lib/techlify-auto-complete-select/techlify-auto-complete-select.component.d.ts +1 -2
- package/lib/techlify-currency-pipe/techlify-currency-pipe.directive.d.ts +8 -0
- package/lib/techlify-feature/techlify-feature-listing.component.d.ts +0 -1
- package/lib/techlify-update/techlify-update-history/techlify-update-history.component.d.ts +1 -1
- package/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.d.ts +0 -1
- package/lib/techlify-view/my-techlify-view-listing/my-techlify-view-listing.component.d.ts +1 -1
- package/lib/techlify-view/techlify-view-form/techlify-view-form.component.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/esm2022/lib/base-model/techlify-form-component.mjs +0 -128
- /package/lib/base-model/{techlify-list-component.d.ts → techlify-list.component.d.ts} +0 -0
|
@@ -14,7 +14,6 @@ export declare class AccessControlConfigComponent implements OnInit {
|
|
|
14
14
|
displayedColumns: string[];
|
|
15
15
|
page: number;
|
|
16
16
|
lastPage: number;
|
|
17
|
-
perPage: number;
|
|
18
17
|
isWorking: boolean;
|
|
19
18
|
filterFormGroup: UntypedFormGroup;
|
|
20
19
|
constructor(dialog: MatDialog, alertService: AlertService, fb: UntypedFormBuilder, configService: AccessControlConfigService);
|
|
@@ -4,7 +4,7 @@ import { ActivatedRoute } from '@angular/router';
|
|
|
4
4
|
import { MatDialog } from '@angular/material/dialog';
|
|
5
5
|
import { NgxSpinnerService } from 'ngx-spinner';
|
|
6
6
|
import { AdminRoleService } from '../admin-role.service';
|
|
7
|
-
import { TechlifyListComponent } from '../../../base-model/techlify-list
|
|
7
|
+
import { TechlifyListComponent } from '../../../base-model/techlify-list.component';
|
|
8
8
|
import { FilterService } from '../../../core/filter.service';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export declare class AdminRoleListComponent extends TechlifyListComponent implements OnInit {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './techlify-form
|
|
2
|
-
export * from './techlify-list
|
|
1
|
+
export * from './techlify-form.component';
|
|
2
|
+
export * from './techlify-list.component';
|
|
3
3
|
export * from './techlify-service';
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { OnInit } from '@angular/core';
|
|
2
2
|
import { HttpService } from '../../core/http.service';
|
|
3
|
-
import { PageEvent } from '../../data-table/data-table.model';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
export declare class EmailSubscriptionForUserComponent implements OnInit {
|
|
6
5
|
private http;
|
|
7
6
|
subscriptions: any[];
|
|
8
|
-
pageEvent:
|
|
7
|
+
pageEvent: any;
|
|
9
8
|
filters: any;
|
|
10
9
|
constructor(http: HttpService);
|
|
11
10
|
ngOnInit(): void;
|
|
@@ -2,14 +2,13 @@ import { OnInit } from '@angular/core';
|
|
|
2
2
|
import { MatDialog } from '@angular/material/dialog';
|
|
3
3
|
import { UntypedFormControl } from '@angular/forms';
|
|
4
4
|
import { MatSort } from '@angular/material/sort';
|
|
5
|
-
import { PageEvent } from '../../../data-table/data-table.model';
|
|
6
5
|
import { HttpService } from '../../../core/http.service';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
export declare class EmailSubscriptionTypeListComponent implements OnInit {
|
|
9
8
|
private dialog;
|
|
10
9
|
private http;
|
|
11
10
|
emailSubscriptionTypeList: any[];
|
|
12
|
-
pageEvent:
|
|
11
|
+
pageEvent: any;
|
|
13
12
|
filters: any;
|
|
14
13
|
search: UntypedFormControl;
|
|
15
14
|
sort: MatSort;
|
|
@@ -3,7 +3,6 @@ import { MatDialog } from '@angular/material/dialog';
|
|
|
3
3
|
import { UntypedFormControl } from '@angular/forms';
|
|
4
4
|
import { MatSort } from '@angular/material/sort';
|
|
5
5
|
import { Router } from '@angular/router';
|
|
6
|
-
import { PageEvent } from '../../../data-table/data-table.model';
|
|
7
6
|
import { HttpService } from '../../../core/http.service';
|
|
8
7
|
import * as i0 from "@angular/core";
|
|
9
8
|
export declare class EmailSubscriptionUserListComponent implements OnInit {
|
|
@@ -11,7 +10,7 @@ export declare class EmailSubscriptionUserListComponent implements OnInit {
|
|
|
11
10
|
private http;
|
|
12
11
|
private router;
|
|
13
12
|
esUserList: any[];
|
|
14
|
-
pageEvent:
|
|
13
|
+
pageEvent: any;
|
|
15
14
|
filters: any;
|
|
16
15
|
sort: MatSort;
|
|
17
16
|
displayColumns: UntypedFormControl;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { OnInit, EventEmitter } from '@angular/core';
|
|
2
|
+
import * as XLSX from 'xlsx';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
export declare class ExportExcelButtonComponent implements OnInit {
|
|
4
5
|
isCSV: boolean;
|
|
@@ -6,6 +7,7 @@ export declare class ExportExcelButtonComponent implements OnInit {
|
|
|
6
7
|
fileName: string;
|
|
7
8
|
data: any[];
|
|
8
9
|
tableId: string;
|
|
10
|
+
isParseNumeric: boolean;
|
|
9
11
|
isExportingToExcel: EventEmitter<boolean>;
|
|
10
12
|
isWorking: boolean;
|
|
11
13
|
constructor();
|
|
@@ -13,6 +15,7 @@ export declare class ExportExcelButtonComponent implements OnInit {
|
|
|
13
15
|
exportToExcel(): void;
|
|
14
16
|
convertJSONToExcel(): void;
|
|
15
17
|
convertTableToExcel(): void;
|
|
18
|
+
parseNumeric(ws: XLSX.WorkSheet): void;
|
|
16
19
|
static ɵfac: i0.ɵɵFactoryDeclaration<ExportExcelButtonComponent, never>;
|
|
17
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ExportExcelButtonComponent, "app-export-excel-button", never, { "isCSV": { "alias": "isCSV"; "required": false; }; "iconName": { "alias": "iconName"; "required": false; }; "fileName": { "alias": "fileName"; "required": false; }; "data": { "alias": "data"; "required": false; }; "tableId": { "alias": "tableId"; "required": false; }; }, { "isExportingToExcel": "isExportingToExcel"; }, never, never, false, never>;
|
|
20
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ExportExcelButtonComponent, "app-export-excel-button", never, { "isCSV": { "alias": "isCSV"; "required": false; }; "iconName": { "alias": "iconName"; "required": false; }; "fileName": { "alias": "fileName"; "required": false; }; "data": { "alias": "data"; "required": false; }; "tableId": { "alias": "tableId"; "required": false; }; "isParseNumeric": { "alias": "isParseNumeric"; "required": false; }; }, { "isExportingToExcel": "isExportingToExcel"; }, never, never, false, never>;
|
|
18
21
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ErrorHandlerService } from './../../core/error-handler.service';
|
|
2
|
-
import { PageEvent } from './../../data-table/data-table.model';
|
|
3
2
|
import { OnInit } from '@angular/core';
|
|
4
3
|
import { ImportCsvConfig } from '../import-csv-config';
|
|
5
4
|
import { HttpService } from '../../core/http.service';
|
|
@@ -12,7 +11,7 @@ export declare class ImportHistoryListComponent implements OnInit {
|
|
|
12
11
|
displayedColumns: string[];
|
|
13
12
|
isWorking: boolean;
|
|
14
13
|
filter: any;
|
|
15
|
-
pageEvent:
|
|
14
|
+
pageEvent: any;
|
|
16
15
|
constructor(errorHandler: ErrorHandlerService, http: HttpService);
|
|
17
16
|
ngOnInit(): void;
|
|
18
17
|
loadData(): void;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { OnInit } from '@angular/core';
|
|
2
2
|
import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
|
|
3
|
-
import { PageEvent } from '../data-table/data-table.model';
|
|
4
3
|
import { HttpService } from '../core/http.service';
|
|
5
4
|
import { TimelineValue } from '../timeline-filter';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
@@ -8,7 +7,7 @@ export declare class LoginHistoryForUserComponent implements OnInit {
|
|
|
8
7
|
private http;
|
|
9
8
|
private fb;
|
|
10
9
|
loginHistoryList: any[];
|
|
11
|
-
pageEvent:
|
|
10
|
+
pageEvent: any;
|
|
12
11
|
filters: any;
|
|
13
12
|
historyFilterForm: UntypedFormGroup;
|
|
14
13
|
displayedColumns: any[];
|
|
@@ -32,7 +32,7 @@ export declare class SearchableSelectorComponent implements ControlValueAccessor
|
|
|
32
32
|
items: any[];
|
|
33
33
|
apiDataProperty: string;
|
|
34
34
|
cache: boolean;
|
|
35
|
-
|
|
35
|
+
per_page: number;
|
|
36
36
|
inDataSearch: boolean;
|
|
37
37
|
panelWidth: string;
|
|
38
38
|
selectionChange: EventEmitter<any>;
|
|
@@ -91,5 +91,5 @@ export declare class SearchableSelectorComponent implements ControlValueAccessor
|
|
|
91
91
|
editItem(event: any): void;
|
|
92
92
|
ngOnDestroy(): void;
|
|
93
93
|
static ɵfac: i0.ɵɵFactoryDeclaration<SearchableSelectorComponent, [null, null, null, null, null, { optional: true; self: true; }]>;
|
|
94
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SearchableSelectorComponent, "app-searchable-selector", never, { "valueField": { "alias": "valueField"; "required": false; }; "titleField": { "alias": "titleField"; "required": false; }; "subtitleField": { "alias": "subtitleField"; "required": false; }; "apiUrl": { "alias": "apiUrl"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "selectedValue": { "alias": "selectedValue"; "required": false; }; "enableSearch": { "alias": "enableSearch"; "required": false; }; "add": { "alias": "add"; "required": false; }; "addConfig": { "alias": "addConfig"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "editConfig": { "alias": "editConfig"; "required": false; }; "sort": { "alias": "sort"; "required": false; }; "sortBy": { "alias": "sortBy"; "required": false; }; "searchField": { "alias": "searchField"; "required": false; }; "itemComponent": { "alias": "itemComponent"; "required": false; }; "items": { "alias": "items"; "required": false; }; "apiDataProperty": { "alias": "apiDataProperty"; "required": false; }; "cache": { "alias": "cache"; "required": false; }; "
|
|
94
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SearchableSelectorComponent, "app-searchable-selector", never, { "valueField": { "alias": "valueField"; "required": false; }; "titleField": { "alias": "titleField"; "required": false; }; "subtitleField": { "alias": "subtitleField"; "required": false; }; "apiUrl": { "alias": "apiUrl"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "selectedValue": { "alias": "selectedValue"; "required": false; }; "enableSearch": { "alias": "enableSearch"; "required": false; }; "add": { "alias": "add"; "required": false; }; "addConfig": { "alias": "addConfig"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "editConfig": { "alias": "editConfig"; "required": false; }; "sort": { "alias": "sort"; "required": false; }; "sortBy": { "alias": "sortBy"; "required": false; }; "searchField": { "alias": "searchField"; "required": false; }; "itemComponent": { "alias": "itemComponent"; "required": false; }; "items": { "alias": "items"; "required": false; }; "apiDataProperty": { "alias": "apiDataProperty"; "required": false; }; "cache": { "alias": "cache"; "required": false; }; "per_page": { "alias": "per_page"; "required": false; }; "inDataSearch": { "alias": "inDataSearch"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "focusSearchOnOpen": { "alias": "focusSearchOnOpen"; "required": false; }; "isEmitInitialEvent": { "alias": "isEmitInitialEvent"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "selectedValueChange": "selectedValueChange"; "selectionChange": "selectionChange"; "itemsChange": "itemsChange"; "isItemsEmpty": "isItemsEmpty"; }, never, never, false, never>;
|
|
95
95
|
}
|
|
@@ -2,7 +2,7 @@ import { EventEmitter, OnInit, TemplateRef } from '@angular/core';
|
|
|
2
2
|
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
3
3
|
import { UntypedFormBuilder } from '@angular/forms';
|
|
4
4
|
import { SubscriptionService } from '../subscription.service';
|
|
5
|
-
import { TechlifyFormComponent } from '../../base-model/techlify-form
|
|
5
|
+
import { TechlifyFormComponent } from '../../base-model/techlify-form.component';
|
|
6
6
|
import { FormValidatorService } from '../../core/form-validator.service';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export declare class SubscriptionFormComponent extends TechlifyFormComponent implements OnInit {
|
|
@@ -3,7 +3,7 @@ import { UntypedFormBuilder } from '@angular/forms';
|
|
|
3
3
|
import { MatDialog } from '@angular/material/dialog';
|
|
4
4
|
import { SubscriptionService } from '../subscription.service';
|
|
5
5
|
import { SubscriptionStatus } from '../subscription-status.enum';
|
|
6
|
-
import { TechlifyListComponent } from '../../base-model/techlify-list
|
|
6
|
+
import { TechlifyListComponent } from '../../base-model/techlify-list.component';
|
|
7
7
|
import { DatePipe } from '@angular/common';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export declare class SubscriptionListingComponent extends TechlifyListComponent implements OnInit {
|
package/lib/subscription/subscription-package-listing/subscription-package-listing.component.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { OnInit } from '@angular/core';
|
|
|
2
2
|
import { SubscriptionPackageService } from '../subscription-package.service';
|
|
3
3
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
4
4
|
import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
|
|
5
|
-
import { TechlifyListComponent } from '../../base-model/techlify-list
|
|
5
|
+
import { TechlifyListComponent } from '../../base-model/techlify-list.component';
|
|
6
6
|
import { FilterService } from '../../core/filter.service';
|
|
7
7
|
import { MatDialog } from '@angular/material/dialog';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
@@ -12,7 +12,6 @@ export declare class TechlifyAutoCompleteSelectComponent implements OnInit, OnDe
|
|
|
12
12
|
titleField: string;
|
|
13
13
|
valueField: string;
|
|
14
14
|
placeholder: string;
|
|
15
|
-
perPage: number;
|
|
16
15
|
sortBy: string;
|
|
17
16
|
displaySelectedDir: 'column' | 'row';
|
|
18
17
|
options: any[];
|
|
@@ -46,6 +45,6 @@ export declare class TechlifyAutoCompleteSelectComponent implements OnInit, OnDe
|
|
|
46
45
|
registerOnChange(fn: any): void;
|
|
47
46
|
registerOnTouched(fn: any): void;
|
|
48
47
|
static ɵfac: i0.ɵɵFactoryDeclaration<TechlifyAutoCompleteSelectComponent, never>;
|
|
49
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TechlifyAutoCompleteSelectComponent, "app-techlify-auto-complete-select", never, { "service": { "alias": "service"; "required": false; }; "titleField": { "alias": "titleField"; "required": false; }; "valueField": { "alias": "valueField"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "
|
|
48
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TechlifyAutoCompleteSelectComponent, "app-techlify-auto-complete-select", never, { "service": { "alias": "service"; "required": false; }; "titleField": { "alias": "titleField"; "required": false; }; "valueField": { "alias": "valueField"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "sortBy": { "alias": "sortBy"; "required": false; }; "displaySelectedDir": { "alias": "displaySelectedDir"; "required": false; }; "options": { "alias": "options"; "required": false; }; "selectedItems": { "alias": "selectedItems"; "required": false; }; "isAllowDynamicOptionsAdd": { "alias": "isAllowDynamicOptionsAdd"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; }, { "selectedItemsChange": "selectedItemsChange"; }, ["itemTemplate", "selectedTemplate"], never, true, never>;
|
|
50
49
|
}
|
|
51
50
|
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { PipeTransform } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class TechlifyCurrencyPipe implements PipeTransform {
|
|
4
|
+
private readonly currencyPipe;
|
|
5
|
+
transform(value: number | null | undefined, isExporting?: boolean, currencyCode?: string, display?: 'symbol' | 'code' | 'symbol-narrow', digitsInfo?: string, locale?: string): string | number;
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TechlifyCurrencyPipe, never>;
|
|
7
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<TechlifyCurrencyPipe, "techlifyCurrency", true>;
|
|
8
|
+
}
|
|
@@ -15,7 +15,6 @@ export declare class TechlifyFeatureListingComponent implements OnInit {
|
|
|
15
15
|
displayedColumns: string[];
|
|
16
16
|
page: number;
|
|
17
17
|
lastPage: number;
|
|
18
|
-
perPage: number;
|
|
19
18
|
isWorking: boolean;
|
|
20
19
|
filterFormGroup: UntypedFormGroup;
|
|
21
20
|
featureToggleForm: UntypedFormGroup;
|
|
@@ -14,7 +14,7 @@ export declare class TechlifyUpdateHistoryComponent implements OnInit {
|
|
|
14
14
|
displayedColumns: string[];
|
|
15
15
|
page: number;
|
|
16
16
|
lastPage: number;
|
|
17
|
-
|
|
17
|
+
per_page: number;
|
|
18
18
|
isWorking: boolean;
|
|
19
19
|
filterFormGroup: UntypedFormGroup;
|
|
20
20
|
constructor(dialog: MatDialog, techlifyUpdateService: TechlifyUpdateService, fb: UntypedFormBuilder, alertService: AlertService);
|
|
@@ -14,7 +14,6 @@ export declare class TechlifyUpdatesListComponent implements OnInit {
|
|
|
14
14
|
displayedColumns: string[];
|
|
15
15
|
page: number;
|
|
16
16
|
lastPage: number;
|
|
17
|
-
perPage: number;
|
|
18
17
|
isWorking: boolean;
|
|
19
18
|
filterFormGroup: UntypedFormGroup;
|
|
20
19
|
constructor(dialog: MatDialog, alertService: AlertService, techlifyUpdateService: TechlifyUpdateService, fb: UntypedFormBuilder);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OnInit, EventEmitter } from '@angular/core';
|
|
2
2
|
import { MyTechlifyViewService } from './my-techlify-view.service';
|
|
3
3
|
import { MatDialog } from '@angular/material/dialog';
|
|
4
|
-
import { TechlifyListComponent } from '../../base-model/techlify-list
|
|
4
|
+
import { TechlifyListComponent } from '../../base-model/techlify-list.component';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export declare class MyTechlifyViewListingComponent extends TechlifyListComponent implements OnInit {
|
|
7
7
|
private myTechlifyViewService;
|
|
@@ -2,7 +2,7 @@ import { EventEmitter, OnInit, TemplateRef } from '@angular/core';
|
|
|
2
2
|
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
3
3
|
import { UntypedFormBuilder } from '@angular/forms';
|
|
4
4
|
import { TechlifyViewService } from '../techlify-view.service';
|
|
5
|
-
import { TechlifyFormComponent } from '../../base-model/techlify-form
|
|
5
|
+
import { TechlifyFormComponent } from '../../base-model/techlify-form.component';
|
|
6
6
|
import { FormValidatorService } from '../../core/form-validator.service';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export declare class TechlifyViewFormComponent extends TechlifyFormComponent implements OnInit {
|
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -201,3 +201,4 @@ export * from './lib/tag/techlify-tagger-tag-list/techlify-tagger-tag-list.compo
|
|
|
201
201
|
export * from './lib/tag/techlify-tagger-tag-form/techlify-tagger-tag-form.component';
|
|
202
202
|
export * from './lib/tag/tag.service';
|
|
203
203
|
export * from './lib/techlify-auto-complete-select/techlify-auto-complete-select.component';
|
|
204
|
+
export * from './lib/techlify-currency-pipe/techlify-currency-pipe.directive';
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { Directive, EventEmitter, inject, Input, Optional, Output } from '@angular/core';
|
|
2
|
-
import { finalize } from 'rxjs';
|
|
3
|
-
import { AlertService } from '../core/alert.service';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "../core/form-validator.service";
|
|
6
|
-
import * as i2 from "./techlify-service";
|
|
7
|
-
/**
|
|
8
|
-
* Interface used to ensure we have a consistent structure across our form components
|
|
9
|
-
*
|
|
10
|
-
* It also provides some abstraction of repeated code to reduce our codebase size
|
|
11
|
-
*
|
|
12
|
-
* @todo This should be moved to ngx-techlify-core
|
|
13
|
-
*
|
|
14
|
-
* Advantages of this abstract class
|
|
15
|
-
* - Less code, less maintenance, less bugs
|
|
16
|
-
* - more consistent code
|
|
17
|
-
* - comments on more code
|
|
18
|
-
* - save time, save energy
|
|
19
|
-
*/
|
|
20
|
-
export class TechlifyFormComponent {
|
|
21
|
-
constructor(formValidatorService, service) {
|
|
22
|
-
this.formValidatorService = formValidatorService;
|
|
23
|
-
this.service = service;
|
|
24
|
-
//Boolean to denote the form is in API progress
|
|
25
|
-
this.isWorking = false;
|
|
26
|
-
//Array of created multiple entries
|
|
27
|
-
this.createdEntries = [];
|
|
28
|
-
//Boolean to denote if form is in update mode
|
|
29
|
-
this.isUpdate = false;
|
|
30
|
-
//Boolean to denote if form has ability to create multiple entries
|
|
31
|
-
this.isAllowCreateAnother = true;
|
|
32
|
-
//Emits an event once form submit is success
|
|
33
|
-
this.success = new EventEmitter();
|
|
34
|
-
//Injected alert service
|
|
35
|
-
this.alertService = inject(AlertService, { optional: true });
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Submits the form
|
|
39
|
-
* @param model form model optional, if needed to be overriden
|
|
40
|
-
* @returns
|
|
41
|
-
*/
|
|
42
|
-
submit(model) {
|
|
43
|
-
this.form.markAllAsTouched();
|
|
44
|
-
if (!this.service) {
|
|
45
|
-
throw new Error(`${this.constructor.name}: Service is required to submit the form`);
|
|
46
|
-
}
|
|
47
|
-
if (!this.form.valid) {
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
if (!model) {
|
|
51
|
-
model = this.form.value;
|
|
52
|
-
}
|
|
53
|
-
this.isWorking = true;
|
|
54
|
-
(this.isUpdate ?
|
|
55
|
-
this.service.update(model) :
|
|
56
|
-
this.service.store(model))
|
|
57
|
-
.pipe(finalize(() => this.isWorking = false))
|
|
58
|
-
.subscribe((res) => {
|
|
59
|
-
this.createdEntries.unshift(res?.item);
|
|
60
|
-
if (model?.is_create_another) {
|
|
61
|
-
this.alertService.addAlert('Successfully Created', 'success');
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
if (this.isUpdate) {
|
|
65
|
-
this.success.emit(res?.item);
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
this.success.emit((this.createdEntries.length == 1) ? this.createdEntries[0] : this.createdEntries);
|
|
69
|
-
}
|
|
70
|
-
if (this.dialogRef) {
|
|
71
|
-
this.dialogRef.close(res.item);
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Close the active dialog
|
|
77
|
-
*/
|
|
78
|
-
closeDialog() {
|
|
79
|
-
if (this.createdEntries?.length > 0) {
|
|
80
|
-
this.success.emit(this.createdEntries);
|
|
81
|
-
}
|
|
82
|
-
this.dialogRef.close();
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Resets the value of a field in the HTML form
|
|
86
|
-
*
|
|
87
|
-
* @param event
|
|
88
|
-
* @param field
|
|
89
|
-
*/
|
|
90
|
-
resetFieldValue(event, field) {
|
|
91
|
-
this.form?.get(field)?.setValue('');
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Retrieves the value of a field from the HTML form
|
|
95
|
-
*
|
|
96
|
-
* @param field
|
|
97
|
-
* @returns
|
|
98
|
-
*/
|
|
99
|
-
getFieldValue(field) {
|
|
100
|
-
return this.form?.get(field)?.value;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Method to evaluate form fields
|
|
104
|
-
* */
|
|
105
|
-
isFieldValid(field) {
|
|
106
|
-
return this.formValidatorService.isFieldValid(field, this.form);
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Method to find error in form fields
|
|
110
|
-
* */
|
|
111
|
-
getErrorMessage(field) {
|
|
112
|
-
return this.formValidatorService.getErrorMessage(field, this.form, this.errorMessages);
|
|
113
|
-
}
|
|
114
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TechlifyFormComponent, deps: [{ token: i1.FormValidatorService }, { token: i2.TechlifyService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
115
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: TechlifyFormComponent, inputs: { isUpdate: "isUpdate", isAllowCreateAnother: "isAllowCreateAnother" }, outputs: { success: "success" }, ngImport: i0 }); }
|
|
116
|
-
}
|
|
117
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TechlifyFormComponent, decorators: [{
|
|
118
|
-
type: Directive
|
|
119
|
-
}], ctorParameters: () => [{ type: i1.FormValidatorService }, { type: i2.TechlifyService, decorators: [{
|
|
120
|
-
type: Optional
|
|
121
|
-
}] }], propDecorators: { isUpdate: [{
|
|
122
|
-
type: Input
|
|
123
|
-
}], isAllowCreateAnother: [{
|
|
124
|
-
type: Input
|
|
125
|
-
}], success: [{
|
|
126
|
-
type: Output
|
|
127
|
-
}] } });
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktZm9ybS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2Jhc2UtbW9kZWwvdGVjaGxpZnktZm9ybS1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7O0FBRXJEOzs7Ozs7Ozs7Ozs7R0FZRztBQUVILE1BQU0sT0FBZ0IscUJBQXFCO0lBNkJ6QyxZQUNZLG9CQUEwQyxFQUM5QixPQUF5QjtRQURyQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzlCLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBdkJqRCwrQ0FBK0M7UUFDL0MsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUszQixtQ0FBbUM7UUFDbkMsbUJBQWMsR0FBUSxFQUFFLENBQUM7UUFFekIsNkNBQTZDO1FBQ3BDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFbkMsa0VBQWtFO1FBQ3pELHlCQUFvQixHQUFZLElBQUksQ0FBQztRQUU5Qyw0Q0FBNEM7UUFDbEMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFNUMsd0JBQXdCO1FBQ2QsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFNbEUsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsS0FBVztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLElB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ZSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN6RixDQUFDOytHQXhIbUIscUJBQXFCO21HQUFyQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBRDFDLFNBQVM7OzBCQWdDTCxRQUFRO3lDQWJGLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUdJLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybVZhbGlkYXRvclNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL2Zvcm0tdmFsaWRhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRlY2hsaWZ5U2VydmljZSB9IGZyb20gJy4vdGVjaGxpZnktc2VydmljZSc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2NvcmUvYWxlcnQuc2VydmljZSc7XG5cbi8qKlxuICogSW50ZXJmYWNlIHVzZWQgdG8gZW5zdXJlIHdlIGhhdmUgYSBjb25zaXN0ZW50IHN0cnVjdHVyZSBhY3Jvc3Mgb3VyIGZvcm0gY29tcG9uZW50c1xuICpcbiAqIEl0IGFsc28gcHJvdmlkZXMgc29tZSBhYnN0cmFjdGlvbiBvZiByZXBlYXRlZCBjb2RlIHRvIHJlZHVjZSBvdXIgY29kZWJhc2Ugc2l6ZVxuICpcbiAqIEB0b2RvIFRoaXMgc2hvdWxkIGJlIG1vdmVkIHRvIG5neC10ZWNobGlmeS1jb3JlXG4gKlxuICogQWR2YW50YWdlcyBvZiB0aGlzIGFic3RyYWN0IGNsYXNzXG4gKiAtIExlc3MgY29kZSwgbGVzcyBtYWludGVuYW5jZSwgbGVzcyBidWdzXG4gKiAtIG1vcmUgY29uc2lzdGVudCBjb2RlXG4gKiAtIGNvbW1lbnRzIG9uIG1vcmUgY29kZVxuICogLSBzYXZlIHRpbWUsIHNhdmUgZW5lcmd5XG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRlY2hsaWZ5Rm9ybUNvbXBvbmVudCB7XG5cbiAgLy9Gb3JtIGJ1aWxkZXIgaW5zdGFuY2VcbiAgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcblxuICAvL0Vycm9yIG1lc3NhZ2VzIGNvbmZpZyBmb3IgdGhlIGZvcm1cbiAgZXJyb3JNZXNzYWdlczogYW55O1xuXG4gIC8vQm9vbGVhbiB0byBkZW5vdGUgdGhlIGZvcm0gaXMgaW4gQVBJIHByb2dyZXNzXG4gIGlzV29ya2luZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vRm9ybSBkaWFsb2dyZWYgcmVmZXJlbmNlXG4gIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPGFueSwgYW55PjtcblxuICAvL0FycmF5IG9mIGNyZWF0ZWQgbXVsdGlwbGUgZW50cmllc1xuICBjcmVhdGVkRW50cmllczogYW55ID0gW107XG5cbiAgLy9Cb29sZWFuIHRvIGRlbm90ZSBpZiBmb3JtIGlzIGluIHVwZGF0ZSBtb2RlXG4gIEBJbnB1dCgpIGlzVXBkYXRlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy9Cb29sZWFuIHRvIGRlbm90ZSBpZiBmb3JtIGhhcyBhYmlsaXR5IHRvIGNyZWF0ZSBtdWx0aXBsZSBlbnRyaWVzXG4gIEBJbnB1dCgpIGlzQWxsb3dDcmVhdGVBbm90aGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICAvL0VtaXRzIGFuIGV2ZW50IG9uY2UgZm9ybSBzdWJtaXQgaXMgc3VjY2Vzc1xuICBAT3V0cHV0KCkgc3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8vSW5qZWN0ZWQgYWxlcnQgc2VydmljZVxuICBwcm90ZWN0ZWQgYWxlcnRTZXJ2aWNlID0gaW5qZWN0KEFsZXJ0U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZm9ybVZhbGlkYXRvclNlcnZpY2U6IEZvcm1WYWxpZGF0b3JTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBzZXJ2aWNlPzogVGVjaGxpZnlTZXJ2aWNlKSB7XG5cbiAgfVxuICAvKipcbiAgICogU3VibWl0cyB0aGUgZm9ybVxuICAgKiBAcGFyYW0gbW9kZWwgZm9ybSBtb2RlbCBvcHRpb25hbCwgaWYgbmVlZGVkIHRvIGJlIG92ZXJyaWRlblxuICAgKiBAcmV0dXJucyBcbiAgICovXG4gIHN1Ym1pdChtb2RlbD86IGFueSkge1xuICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgaWYgKCF0aGlzLnNlcnZpY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogU2VydmljZSBpcyByZXF1aXJlZCB0byBzdWJtaXQgdGhlIGZvcm1gXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIW1vZGVsKSB7XG4gICAgICBtb2RlbCA9IHRoaXMuZm9ybS52YWx1ZTtcbiAgICB9XG4gICAgdGhpcy5pc1dvcmtpbmcgPSB0cnVlO1xuICAgIChcbiAgICAgIHRoaXMuaXNVcGRhdGUgP1xuICAgICAgICB0aGlzLnNlcnZpY2UudXBkYXRlKG1vZGVsKSA6XG4gICAgICAgIHRoaXMuc2VydmljZS5zdG9yZShtb2RlbClcbiAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pc1dvcmtpbmcgPSBmYWxzZSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmNyZWF0ZWRFbnRyaWVzLnVuc2hpZnQocmVzPy5pdGVtKTtcbiAgICAgICAgaWYgKG1vZGVsPy5pc19jcmVhdGVfYW5vdGhlcikge1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KCdTdWNjZXNzZnVsbHkgQ3JlYXRlZCcsICdzdWNjZXNzJyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzVXBkYXRlKSB7XG4gICAgICAgICAgdGhpcy5zdWNjZXNzLmVtaXQocmVzPy5pdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnN1Y2Nlc3MuZW1pdCgodGhpcy5jcmVhdGVkRW50cmllcy5sZW5ndGggPT0gMSkgPyB0aGlzLmNyZWF0ZWRFbnRyaWVzWzBdIDogdGhpcy5jcmVhdGVkRW50cmllcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nUmVmKSB7XG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UocmVzLml0ZW0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSB0aGUgYWN0aXZlIGRpYWxvZ1xuICAgKi9cbiAgY2xvc2VEaWFsb2coKSB7XG4gICAgaWYgKHRoaXMuY3JlYXRlZEVudHJpZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc3VjY2Vzcy5lbWl0KHRoaXMuY3JlYXRlZEVudHJpZXMpO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgdmFsdWUgb2YgYSBmaWVsZCBpbiB0aGUgSFRNTCBmb3JtXG4gICAqXG4gICAqIEBwYXJhbSBldmVudFxuICAgKiBAcGFyYW0gZmllbGRcbiAgICovXG4gIHJlc2V0RmllbGRWYWx1ZShldmVudDogYW55LCBmaWVsZDogc3RyaW5nKSB7XG4gICAgdGhpcy5mb3JtPy5nZXQoZmllbGQpPy5zZXRWYWx1ZSgnJyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSB2YWx1ZSBvZiBhIGZpZWxkIGZyb20gdGhlIEhUTUwgZm9ybVxuICAgKlxuICAgKiBAcGFyYW0gZmllbGRcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldEZpZWxkVmFsdWUoZmllbGQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZvcm0/LmdldChmaWVsZCk/LnZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBldmFsdWF0ZSBmb3JtIGZpZWxkc1xuICAgKiAqL1xuICBpc0ZpZWxkVmFsaWQoZmllbGQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZvcm1WYWxpZGF0b3JTZXJ2aWNlLmlzRmllbGRWYWxpZChmaWVsZCwgdGhpcy5mb3JtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gZmluZCBlcnJvciBpbiBmb3JtIGZpZWxkc1xuICAgKiAqL1xuICBnZXRFcnJvck1lc3NhZ2UoZmllbGQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZvcm1WYWxpZGF0b3JTZXJ2aWNlLmdldEVycm9yTWVzc2FnZShmaWVsZCwgdGhpcy5mb3JtLCB0aGlzLmVycm9yTWVzc2FnZXMpO1xuICB9XG5cbn1cbiJdfQ==
|
|
File without changes
|