cat-qw-lib 2.6.2 → 2.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -63
- package/fesm2022/cat-qw-lib.mjs +986 -237
- package/fesm2022/cat-qw-lib.mjs.map +1 -1
- package/lib/admin/widget-admin/components/widget-admin-form/widget-admin-form.component.d.ts +4 -0
- package/lib/admin/widget-admin/models/widget.model.d.ts +9 -0
- package/lib/queue/components/queue-container/queue-container.component.d.ts +3 -0
- package/lib/queue/components/queue-filter-dropdown/queue-filter-dropdown.component.d.ts +8 -2
- package/lib/queue/components/queue-record-table/queue-record-table.component.d.ts +2 -1
- package/lib/queue/queue.module.d.ts +2 -1
- package/lib/queue/services/queue-filter-dropdown.service.d.ts +32 -1
- package/lib/queue/services/queue-record-table-builder.service.d.ts +16 -1
- package/lib/queue/state/queue.service.d.ts +1 -0
- package/lib/shared/components/skeleton/skeleton.component.d.ts +13 -0
- package/lib/shared/constant/ROUTES.d.ts +1 -0
- package/lib/shared/constant/SHARED.d.ts +15 -0
- package/lib/shared/services/app-config.service.d.ts +1 -0
- package/lib/shared/table-secondary/components/table-secondary.component.d.ts +25 -13
- package/lib/widget/components/widget-container/widget-container.component.d.ts +2 -1
- package/lib/widget/components/widget-header/widget-header.component.d.ts +15 -1
- package/lib/widget/components/widget-item/widget-item.component.d.ts +18 -0
- package/lib/widget/components/widget-main/widget-main.component.d.ts +2 -1
- package/lib/widget/components/widget-row-tile/widget-row-tile.component.d.ts +21 -3
- package/lib/widget/models/widget.model.d.ts +42 -0
- package/package.json +1 -1
- package/src/assets/icons/confirm-icon.svg +4 -4
package/lib/admin/widget-admin/components/widget-admin-form/widget-admin-form.component.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ export declare class WidgetAdminFormComponent extends BaseFormComponent<WidgetMo
|
|
|
26
26
|
headerDictionaryItems: any[];
|
|
27
27
|
subHeaderDictionaryItems: any[];
|
|
28
28
|
dictionaryItemArray: any[][];
|
|
29
|
+
badgeDictionaryItemArray: any[][];
|
|
29
30
|
widgetOptionsArray: SelectItem[];
|
|
30
31
|
widgetLayoutTypeList: WidgetLayoutTypeModel[];
|
|
31
32
|
constructor(service: WidgetAdminService, validatorService: ValidatorService, widgetStore: WidgetAdminStore, query: WidgetAdminQuery, router: Router, activatedRoute: ActivatedRoute, baseStore: BaseStore<WidgetModel>, baseQuery: BaseQuery<WidgetModel>);
|
|
@@ -35,6 +36,9 @@ export declare class WidgetAdminFormComponent extends BaseFormComponent<WidgetMo
|
|
|
35
36
|
handleHeaderDictionarySelect(dictionaryId: string): void;
|
|
36
37
|
handleSubHeaderDictionarySelect(dictionaryId: any): void;
|
|
37
38
|
handleWidgetItemDictionarySelect(dictionaryId: any, index: number): void;
|
|
39
|
+
handleBadgeAddBtnClick(): void;
|
|
40
|
+
handleBadgeDictionarySelect(dictionaryId: any, index: number): void;
|
|
41
|
+
handleDeleteBadge(index: number): void;
|
|
38
42
|
handleDeleteRecord(index: number): void;
|
|
39
43
|
handleSubmit(): void;
|
|
40
44
|
ngOnDestroy(): void;
|
|
@@ -6,6 +6,7 @@ export declare class WidgetModel extends BaseModel {
|
|
|
6
6
|
name: string;
|
|
7
7
|
apiConfigId: string;
|
|
8
8
|
dataItems: WidgetItemModel[];
|
|
9
|
+
badges: BadgeModel[];
|
|
9
10
|
order?: number;
|
|
10
11
|
headerDictionaryID: string;
|
|
11
12
|
subHeaderDictionaryID: string;
|
|
@@ -25,6 +26,14 @@ export declare class WidgetItemModel extends BaseModel {
|
|
|
25
26
|
style?: any;
|
|
26
27
|
isActive: boolean;
|
|
27
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* BadgeModel class represents the model of a badge.
|
|
31
|
+
*/
|
|
32
|
+
export declare class BadgeModel {
|
|
33
|
+
dictionaryItemID: string;
|
|
34
|
+
dictionaryID: string;
|
|
35
|
+
style?: any;
|
|
36
|
+
}
|
|
28
37
|
export interface WidgetLayoutTypeModel {
|
|
29
38
|
name: string;
|
|
30
39
|
value: string;
|
|
@@ -44,6 +44,7 @@ export declare class QueueContainerComponent extends BaseContainerComponent<Queu
|
|
|
44
44
|
searchText: string;
|
|
45
45
|
sortBy: string;
|
|
46
46
|
sortOrder: number;
|
|
47
|
+
isShowSkeleton: boolean;
|
|
47
48
|
resetSort: boolean;
|
|
48
49
|
appliedFilters: any;
|
|
49
50
|
placeholder: string;
|
|
@@ -102,6 +103,8 @@ export declare class QueueContainerComponent extends BaseContainerComponent<Queu
|
|
|
102
103
|
private resetPage;
|
|
103
104
|
private clearSelection;
|
|
104
105
|
private clearFilters;
|
|
106
|
+
private isReferredQueue;
|
|
107
|
+
private getDefaultSortOrder;
|
|
105
108
|
onSearchTermChanged(searchTerm: string): void;
|
|
106
109
|
onSelectionChange(selection: any[]): void;
|
|
107
110
|
onAssignmentComplete(event: {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { ElementRef, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
|
|
1
|
+
import { ElementRef, EventEmitter, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';
|
|
2
2
|
import { QueueFilterDropdownService, RiskRating, ApplicationType, PurchaseType, TaskStatus, QueueFilter, EPC } from '../../services/queue-filter-dropdown.service';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/**
|
|
5
5
|
*
|
|
6
6
|
*/
|
|
7
|
-
export declare class QueueFilterDropdownComponent implements OnChanges {
|
|
7
|
+
export declare class QueueFilterDropdownComponent implements OnChanges, OnDestroy {
|
|
8
8
|
filterService: QueueFilterDropdownService;
|
|
9
9
|
showDropdown: boolean;
|
|
10
10
|
dropdownPanel: ElementRef;
|
|
@@ -15,14 +15,19 @@ export declare class QueueFilterDropdownComponent implements OnChanges {
|
|
|
15
15
|
id: string;
|
|
16
16
|
name: string;
|
|
17
17
|
}>;
|
|
18
|
+
loadingUnderwriters: boolean;
|
|
18
19
|
filters: QueueFilter;
|
|
20
|
+
private searchSubscription?;
|
|
19
21
|
appliedFilters: any;
|
|
20
22
|
filterApplied: EventEmitter<any>;
|
|
21
23
|
filtersCleared: EventEmitter<void>;
|
|
22
24
|
constructor(filterService: QueueFilterDropdownService);
|
|
23
25
|
ngOnChanges(changes: SimpleChanges): void;
|
|
26
|
+
private setupSearchSubscription;
|
|
27
|
+
onUnderwriterFilter(event: any): void;
|
|
24
28
|
get filterCount(): number;
|
|
25
29
|
onFilterBtnClick(): void;
|
|
30
|
+
private loadUnderwriterOptions;
|
|
26
31
|
setRiskRating(rating: RiskRating): void;
|
|
27
32
|
setApplicationType(type: ApplicationType): void;
|
|
28
33
|
setPurchaseType(type: PurchaseType): void;
|
|
@@ -39,6 +44,7 @@ export declare class QueueFilterDropdownComponent implements OnChanges {
|
|
|
39
44
|
syncWithAppliedFilters(appliedFilters: any): void;
|
|
40
45
|
private restoreOriginalFilters;
|
|
41
46
|
onDocumentClick(event: MouseEvent): void;
|
|
47
|
+
ngOnDestroy(): void;
|
|
42
48
|
static ɵfac: i0.ɵɵFactoryDeclaration<QueueFilterDropdownComponent, never>;
|
|
43
49
|
static ɵcmp: i0.ɵɵComponentDeclaration<QueueFilterDropdownComponent, "lib-queue-filter-dropdown", never, { "appliedFilters": { "alias": "appliedFilters"; "required": false; }; }, { "filterApplied": "filterApplied"; "filtersCleared": "filtersCleared"; }, never, never, false, never>;
|
|
44
50
|
}
|
|
@@ -11,6 +11,7 @@ export declare class QueueRecordTableComponent implements OnChanges {
|
|
|
11
11
|
loading: boolean;
|
|
12
12
|
selectedRows: any[];
|
|
13
13
|
resetSort: boolean;
|
|
14
|
+
isShowSkeleton: boolean;
|
|
14
15
|
selectedQueue: any;
|
|
15
16
|
selectionChange: EventEmitter<any[]>;
|
|
16
17
|
selectedRowsData: EventEmitter<any[]>;
|
|
@@ -31,5 +32,5 @@ export declare class QueueRecordTableComponent implements OnChanges {
|
|
|
31
32
|
get hasData(): boolean;
|
|
32
33
|
get selectedCount(): number;
|
|
33
34
|
static ɵfac: i0.ɵɵFactoryDeclaration<QueueRecordTableComponent, never>;
|
|
34
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<QueueRecordTableComponent, "app-queue-record-table", never, { "table": { "alias": "table"; "required": false; }; "metaData": { "alias": "metaData"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "selectedRows": { "alias": "selectedRows"; "required": false; }; "resetSort": { "alias": "resetSort"; "required": false; }; "selectedQueue": { "alias": "selectedQueue"; "required": false; }; }, { "selectionChange": "selectionChange"; "selectedRowsData": "selectedRowsData"; "assignmentDataReady": "assignmentDataReady"; "rowClick": "rowClick"; "paginationChanged": "paginationChanged"; "filterApplied": "filterApplied"; "sortApplied": "sortApplied"; }, never, never, false, never>;
|
|
35
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<QueueRecordTableComponent, "app-queue-record-table", never, { "table": { "alias": "table"; "required": false; }; "metaData": { "alias": "metaData"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "selectedRows": { "alias": "selectedRows"; "required": false; }; "resetSort": { "alias": "resetSort"; "required": false; }; "isShowSkeleton": { "alias": "isShowSkeleton"; "required": false; }; "selectedQueue": { "alias": "selectedQueue"; "required": false; }; }, { "selectionChange": "selectionChange"; "selectedRowsData": "selectedRowsData"; "assignmentDataReady": "assignmentDataReady"; "rowClick": "rowClick"; "paginationChanged": "paginationChanged"; "filterApplied": "filterApplied"; "sortApplied": "sortApplied"; }, never, never, false, never>;
|
|
35
36
|
}
|
|
@@ -18,8 +18,9 @@ import * as i16 from "primeng/paginator";
|
|
|
18
18
|
import * as i17 from "../shared/shared.module";
|
|
19
19
|
import * as i18 from "primeng/tag";
|
|
20
20
|
import * as i19 from "../shared/table-secondary/components/table-secondary.component";
|
|
21
|
+
import * as i20 from "../shared/components/skeleton/skeleton.component";
|
|
21
22
|
export declare class QueueModule {
|
|
22
23
|
static ɵfac: i0.ɵɵFactoryDeclaration<QueueModule, never>;
|
|
23
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<QueueModule, [typeof i1.QueueContainerComponent, typeof i2.QueueSearchComponent, typeof i3.QueueItemComponent, typeof i4.QueueListComponent, typeof i5.QueueRecordTableComponent, typeof i6.QueueFilterDropdownComponent], [typeof i7.CommonModule, typeof i8.QueueRoutingModule, typeof i9.FormsModule, typeof i10.DropdownModule, typeof i11.MultiSelectModule, typeof i12.RippleModule, typeof i13.ButtonModule, typeof i14.RouterModule, typeof i15.BadgeModule, typeof i16.PaginatorModule, typeof i17.SharedModule, typeof i18.TagModule, typeof i19.TableSecondaryComponent], [typeof i1.QueueContainerComponent]>;
|
|
24
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<QueueModule, [typeof i1.QueueContainerComponent, typeof i2.QueueSearchComponent, typeof i3.QueueItemComponent, typeof i4.QueueListComponent, typeof i5.QueueRecordTableComponent, typeof i6.QueueFilterDropdownComponent], [typeof i7.CommonModule, typeof i8.QueueRoutingModule, typeof i9.FormsModule, typeof i10.DropdownModule, typeof i11.MultiSelectModule, typeof i12.RippleModule, typeof i13.ButtonModule, typeof i14.RouterModule, typeof i15.BadgeModule, typeof i16.PaginatorModule, typeof i17.SharedModule, typeof i18.TagModule, typeof i19.TableSecondaryComponent, typeof i20.SkeletonComponent], [typeof i1.QueueContainerComponent]>;
|
|
24
25
|
static ɵinj: i0.ɵɵInjectorDeclaration<QueueModule>;
|
|
25
26
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { BaseService, AppConfigService, BaseStore } from '../../shared';
|
|
4
|
+
import { ListService } from '../../shared/services/list.service';
|
|
1
5
|
import * as i0 from "@angular/core";
|
|
2
6
|
export type RiskRating = 'Low' | 'Medium' | 'High';
|
|
3
7
|
export type ApplicationType = 'BTL' | 'HPP';
|
|
@@ -18,10 +22,21 @@ export interface QueueFilter {
|
|
|
18
22
|
pendingDays: number | null;
|
|
19
23
|
assignedUnderwriter: string[];
|
|
20
24
|
}
|
|
25
|
+
export interface UnderwriterOption {
|
|
26
|
+
id: string;
|
|
27
|
+
name: string;
|
|
28
|
+
}
|
|
21
29
|
/**
|
|
22
30
|
*
|
|
23
31
|
*/
|
|
24
|
-
export declare class QueueFilterDropdownService {
|
|
32
|
+
export declare class QueueFilterDropdownService extends BaseService<any> {
|
|
33
|
+
private configService;
|
|
34
|
+
private searchSubject;
|
|
35
|
+
constructor(http: HttpClient, configService: AppConfigService, store: BaseStore<any>, listService: ListService);
|
|
36
|
+
/**
|
|
37
|
+
* Override apiUrl to use the main API URL instead of catQwUrl
|
|
38
|
+
*/
|
|
39
|
+
get apiUrl(): string;
|
|
25
40
|
private filter;
|
|
26
41
|
setRiskRating(rating: RiskRating): void;
|
|
27
42
|
setApplicationType(type: ApplicationType): void;
|
|
@@ -44,6 +59,22 @@ export declare class QueueFilterDropdownService {
|
|
|
44
59
|
* Maps UI filter values to API parameters.
|
|
45
60
|
*/
|
|
46
61
|
buildFilterQueryString(filters: QueueFilter): string;
|
|
62
|
+
/**
|
|
63
|
+
* Fetches underwriter options from the API based on search key
|
|
64
|
+
* @param {string} searchKey - The search term to filter underwriters
|
|
65
|
+
* @returns {Observable<UnderwriterOption[]>} Observable of underwriter options array
|
|
66
|
+
*/
|
|
67
|
+
getUnderwritersList(searchKey?: string): Observable<UnderwriterOption[]>;
|
|
68
|
+
/**
|
|
69
|
+
* Triggers a search for underwriters with debounce
|
|
70
|
+
* @param {string} searchKey - The search term to filter underwriters
|
|
71
|
+
*/
|
|
72
|
+
searchUnderwriters(searchKey?: string): void;
|
|
73
|
+
/**
|
|
74
|
+
* Returns an Observable that emits underwriter options with debounce and distinctUntilChanged
|
|
75
|
+
* @returns {Observable<UnderwriterOption[]>} Observable of underwriter options array
|
|
76
|
+
*/
|
|
77
|
+
getUnderwritersSearchObservable(): Observable<UnderwriterOption[]>;
|
|
47
78
|
static ɵfac: i0.ɵɵFactoryDeclaration<QueueFilterDropdownService, never>;
|
|
48
79
|
static ɵprov: i0.ɵɵInjectableDeclaration<QueueFilterDropdownService>;
|
|
49
80
|
}
|
|
@@ -6,9 +6,24 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
*/
|
|
7
7
|
export declare class QueueRecordTableBuilderService extends TableBuilder {
|
|
8
8
|
private columnStyles;
|
|
9
|
+
private deriveChipVariantFromDays;
|
|
10
|
+
/**
|
|
11
|
+
* Maps valuation status to icon and color configuration
|
|
12
|
+
*/
|
|
13
|
+
private getValuationStatusConfig;
|
|
14
|
+
/**
|
|
15
|
+
* Truncates text to specified length with ellipsis
|
|
16
|
+
* @param {string} text - Text to truncate
|
|
17
|
+
* @param {number} maxLength - Maximum length before truncation
|
|
18
|
+
* @returns {string} Truncated text
|
|
19
|
+
*/
|
|
20
|
+
private truncateText;
|
|
21
|
+
private getColumnOrder;
|
|
9
22
|
buildSecondaryTable(records: any[], headerWidths?: {
|
|
10
23
|
[key: string]: string;
|
|
11
|
-
}, editPermission?: string, deletePermission?: string
|
|
24
|
+
}, editPermission?: string, deletePermission?: string, options?: {
|
|
25
|
+
isReferredQueue?: boolean;
|
|
26
|
+
}): TableSecondaryModel;
|
|
12
27
|
static ɵfac: i0.ɵɵFactoryDeclaration<QueueRecordTableBuilderService, never>;
|
|
13
28
|
static ɵprov: i0.ɵɵInjectableDeclaration<QueueRecordTableBuilderService>;
|
|
14
29
|
}
|
|
@@ -30,6 +30,7 @@ export declare class QueueService extends BaseService<QueueModel> {
|
|
|
30
30
|
/**
|
|
31
31
|
* Fetches paginated queue records using the provided apiConfig URL with search and pagination support.
|
|
32
32
|
* This is the unified method used for both initial data loading and search functionality.
|
|
33
|
+
* Uses POST method with underwriterIds and unassigned in body, other params in query string.
|
|
33
34
|
* @param {string} apiConfig - The full API endpoint to fetch records for the selected queue
|
|
34
35
|
* @param {string} [searchKey] - Optional search term
|
|
35
36
|
* @param {number} [page] - Page number (default: 1)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class SkeletonComponent implements OnInit {
|
|
4
|
+
products: any[];
|
|
5
|
+
count: number;
|
|
6
|
+
columns: any;
|
|
7
|
+
width: string;
|
|
8
|
+
height: string;
|
|
9
|
+
isAllowCard: boolean;
|
|
10
|
+
ngOnInit(): void;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SkeletonComponent, never>;
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SkeletonComponent, "lib-skeleton", never, { "count": { "alias": "count"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "isAllowCard": { "alias": "isAllowCard"; "required": false; }; }, {}, never, never, true, never>;
|
|
13
|
+
}
|
|
@@ -11,6 +11,8 @@ export declare class SHARED {
|
|
|
11
11
|
static SUCCESS: string;
|
|
12
12
|
static WARNING: string;
|
|
13
13
|
static ERROR: string;
|
|
14
|
+
static DEFAULT: string;
|
|
15
|
+
static VULNERABLE: string;
|
|
14
16
|
static ERROR_MESSAGE: string;
|
|
15
17
|
static SUCCESS_MESSAGE: string;
|
|
16
18
|
static DICTIONARY: string;
|
|
@@ -107,6 +109,9 @@ export declare class SHARED {
|
|
|
107
109
|
static PRODUCT_ID: string;
|
|
108
110
|
static EXPENDITURE: string;
|
|
109
111
|
static INCOME: string;
|
|
112
|
+
static VALUATION: string;
|
|
113
|
+
static VALUATIONID: string;
|
|
114
|
+
static BROKERCOMPANY_NAME: string;
|
|
110
115
|
static WIDGET_NAME: string;
|
|
111
116
|
static IS_MENU: string;
|
|
112
117
|
static ON_WIDGET_UPDATE: string;
|
|
@@ -114,6 +119,11 @@ export declare class SHARED {
|
|
|
114
119
|
static APPLICANTS: string;
|
|
115
120
|
static BROKER_NAME: string;
|
|
116
121
|
static SECURITY_ADDRESS: string;
|
|
122
|
+
static SLA: string;
|
|
123
|
+
static REFERRED_DATE: string;
|
|
124
|
+
static REFERRED: string;
|
|
125
|
+
static FINANCE: string;
|
|
126
|
+
static VALUATION_STATUS: string;
|
|
117
127
|
static TASKS: string;
|
|
118
128
|
static TASK_BROKER_LABEL: string;
|
|
119
129
|
static TASK_UNDERWRITER_LABEL: string;
|
|
@@ -124,6 +134,7 @@ export declare class SHARED {
|
|
|
124
134
|
static TASK_COMPLETION_PERCENT: string;
|
|
125
135
|
static RISK_RATING: string;
|
|
126
136
|
static LENDING: string;
|
|
137
|
+
static UNASSIGNED_UNDERWRITER_ID: string;
|
|
127
138
|
}
|
|
128
139
|
export declare const widgetLayoutTypeList: {
|
|
129
140
|
name: string;
|
|
@@ -279,9 +290,13 @@ export declare const QUEUE_RECORD_TABLE_COLUMN_WIDTH_LIST: {
|
|
|
279
290
|
securityAddress: string;
|
|
280
291
|
applicants: string;
|
|
281
292
|
finance: string;
|
|
293
|
+
valuationStatus: string;
|
|
294
|
+
sla: string;
|
|
295
|
+
referredDate: string;
|
|
282
296
|
appId: string;
|
|
283
297
|
tasks: string;
|
|
284
298
|
};
|
|
285
299
|
export declare const FIELD_DISPLAY_NAMES: {
|
|
286
300
|
[key: string]: string;
|
|
287
301
|
};
|
|
302
|
+
export declare const QUEUE_RECORD_TABLE_COLUMN_ORDER: string[];
|
|
@@ -31,6 +31,7 @@ export declare class TableSecondaryComponent implements OnInit, OnChanges, OnDes
|
|
|
31
31
|
showSearchBar: boolean;
|
|
32
32
|
showNewRecordButton: boolean;
|
|
33
33
|
showRefreshButton: boolean;
|
|
34
|
+
isShowSkeleton: boolean;
|
|
34
35
|
isSelectAll: boolean;
|
|
35
36
|
pathName: string;
|
|
36
37
|
selectionMode: 'single' | 'multiple' | undefined;
|
|
@@ -63,6 +64,7 @@ export declare class TableSecondaryComponent implements OnInit, OnChanges, OnDes
|
|
|
63
64
|
allQueueList: any;
|
|
64
65
|
selectedQueueName: string;
|
|
65
66
|
columnStyles: any;
|
|
67
|
+
private expressionCache;
|
|
66
68
|
constructor(_router: Router, service: BaseService<any>, sessionService: SessionService, baseQuery: BaseQuery<any>, baseStore: BaseStore<any>, queueBusinessService: QueueBusinessService, queueQuery: QueueQuery);
|
|
67
69
|
/**
|
|
68
70
|
* Lifecycle hook that is called after data-bound properties are initialized.
|
|
@@ -97,22 +99,12 @@ export declare class TableSecondaryComponent implements OnInit, OnChanges, OnDes
|
|
|
97
99
|
handleEditClick(id: number): void;
|
|
98
100
|
get isAllCurrentPageSelected(): boolean;
|
|
99
101
|
handleSelectAllRowData(checked: boolean): void;
|
|
100
|
-
/**
|
|
101
|
-
* Logs row data intended for editing.
|
|
102
|
-
* @param {any} rowData - The data of the row to edit.
|
|
103
|
-
*/
|
|
104
|
-
editRow(rowData: any): void;
|
|
105
102
|
/**
|
|
106
103
|
* Handles the deletion of a row by emitting the row data and preventing event propagation.
|
|
107
104
|
* @param {Event} event - The DOM event triggered by the delete action.
|
|
108
105
|
* @param {any} rowData - The data object of the row to be deleted.
|
|
109
106
|
*/
|
|
110
107
|
deleteRow(event: Event, rowData: any): void;
|
|
111
|
-
/**
|
|
112
|
-
* Logs row data intended for viewing.
|
|
113
|
-
* @param {any} rowData - The data of the row to view.
|
|
114
|
-
*/
|
|
115
|
-
viewRow(rowData: any): void;
|
|
116
108
|
/**
|
|
117
109
|
* Returns CSS class for a table cell based on its content.
|
|
118
110
|
* @param {any} col - The column definition.
|
|
@@ -167,19 +159,39 @@ export declare class TableSecondaryComponent implements OnInit, OnChanges, OnDes
|
|
|
167
159
|
isTaskItemsArray(val: any): boolean;
|
|
168
160
|
shouldShowValue(col: any, rowData: any): boolean;
|
|
169
161
|
/**
|
|
170
|
-
*
|
|
162
|
+
* Memoized expression evaluator - compiles and caches Function objects
|
|
163
|
+
* @param {string} expression - The expression to evaluate
|
|
164
|
+
* @param {any} rowData - The row data to use in evaluation
|
|
165
|
+
* @returns {any} The evaluated result
|
|
166
|
+
*/
|
|
167
|
+
private evaluateExpression;
|
|
168
|
+
/**
|
|
169
|
+
* Evaluates ngClass expression for dynamic styling with memoization
|
|
171
170
|
* @param {string} expression - The ngClass expression to evaluate
|
|
172
171
|
* @param {any} rowData - The row data to use in evaluation
|
|
173
172
|
* @returns {string} The evaluated CSS classes
|
|
174
173
|
*/
|
|
175
174
|
evaluateNgClass(expression: string, rowData: any): string;
|
|
176
175
|
/**
|
|
177
|
-
* Evaluates ngStyle expression for dynamic inline styles
|
|
176
|
+
* Evaluates ngStyle expression for dynamic inline styles with memoization
|
|
178
177
|
* @param {string} expression - The ngStyle expression to evaluate
|
|
179
178
|
* @param {any} rowData - The row data to use in evaluation
|
|
180
179
|
* @returns {any} The evaluated style object
|
|
181
180
|
*/
|
|
182
181
|
evaluateNgStyle(expression: string, rowData: any): any;
|
|
182
|
+
getLine1DisplayClasses(col: any, rowData: any): string;
|
|
183
|
+
private shouldRenderChip;
|
|
184
|
+
private getChipVariantClass;
|
|
185
|
+
private resolveChipVariant;
|
|
186
|
+
private evaluateGenericExpression;
|
|
187
|
+
/**
|
|
188
|
+
* Generic method to get column class (container or text) from config
|
|
189
|
+
* @param {string} columnName - The column name (e.g., 'lending', 'riskRating')
|
|
190
|
+
* @param {string} value - The value to evaluate
|
|
191
|
+
* @param {'container' | 'text'} type - The type of class to retrieve
|
|
192
|
+
* @returns {string} The evaluated CSS class
|
|
193
|
+
*/
|
|
194
|
+
getColumnClass(columnName: string, value: string, type: 'container' | 'text'): string;
|
|
183
195
|
getTypeContainerClass(typeValue: string): string;
|
|
184
196
|
getTypeTextClass(typeValue: string): string;
|
|
185
197
|
getRiskContainerClass(riskValue: string): string;
|
|
@@ -187,5 +199,5 @@ export declare class TableSecondaryComponent implements OnInit, OnChanges, OnDes
|
|
|
187
199
|
getColumnAlignment(columnName: string): string;
|
|
188
200
|
getSwitchCase(rowData: any, col: any): string;
|
|
189
201
|
static ɵfac: i0.ɵɵFactoryDeclaration<TableSecondaryComponent, never>;
|
|
190
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TableSecondaryComponent, "lib-table-secondary", never, { "table": { "alias": "table"; "required": false; }; "metaData": { "alias": "metaData"; "required": false; }; "title": { "alias": "title"; "required": false; }; "builder": { "alias": "builder"; "required": false; }; "showStatus": { "alias": "showStatus"; "required": false; }; "showActions": { "alias": "showActions"; "required": false; }; "showSearchBar": { "alias": "showSearchBar"; "required": false; }; "showNewRecordButton": { "alias": "showNewRecordButton"; "required": false; }; "showRefreshButton": { "alias": "showRefreshButton"; "required": false; }; "pathName": { "alias": "pathName"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; "usePagination": { "alias": "usePagination"; "required": false; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; }; "rowSelection": { "alias": "rowSelection"; "required": false; }; "enableSelection": { "alias": "enableSelection"; "required": false; }; "noRecordsMessage": { "alias": "noRecordsMessage"; "required": false; }; "sortField": { "alias": "sortField"; "required": false; }; "sortOrder": { "alias": "sortOrder"; "required": false; }; "searchTerm": { "alias": "searchTerm"; "required": false; }; "filterQuery": { "alias": "filterQuery"; "required": false; }; }, { "selectionChange": "selectionChange"; "rowSelectionChange": "rowSelectionChange"; "sortChanged": "sortChanged"; "onDeleteRow": "onDeleteRow"; "onPage": "onPage"; }, never, never, true, never>;
|
|
202
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TableSecondaryComponent, "lib-table-secondary", never, { "table": { "alias": "table"; "required": false; }; "metaData": { "alias": "metaData"; "required": false; }; "title": { "alias": "title"; "required": false; }; "builder": { "alias": "builder"; "required": false; }; "showStatus": { "alias": "showStatus"; "required": false; }; "showActions": { "alias": "showActions"; "required": false; }; "showSearchBar": { "alias": "showSearchBar"; "required": false; }; "showNewRecordButton": { "alias": "showNewRecordButton"; "required": false; }; "showRefreshButton": { "alias": "showRefreshButton"; "required": false; }; "isShowSkeleton": { "alias": "isShowSkeleton"; "required": false; }; "pathName": { "alias": "pathName"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; "usePagination": { "alias": "usePagination"; "required": false; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; }; "rowSelection": { "alias": "rowSelection"; "required": false; }; "enableSelection": { "alias": "enableSelection"; "required": false; }; "noRecordsMessage": { "alias": "noRecordsMessage"; "required": false; }; "sortField": { "alias": "sortField"; "required": false; }; "sortOrder": { "alias": "sortOrder"; "required": false; }; "searchTerm": { "alias": "searchTerm"; "required": false; }; "filterQuery": { "alias": "filterQuery"; "required": false; }; }, { "selectionChange": "selectionChange"; "rowSelectionChange": "rowSelectionChange"; "sortChanged": "sortChanged"; "onDeleteRow": "onDeleteRow"; "onPage": "onPage"; }, never, never, true, never>;
|
|
191
203
|
}
|
|
@@ -16,6 +16,7 @@ export declare class WidgetContainerComponent implements OnInit, OnChanges, OnDe
|
|
|
16
16
|
widgetName: string;
|
|
17
17
|
recordId: string;
|
|
18
18
|
onWidgetUpdate: any;
|
|
19
|
+
isFullHeight: boolean;
|
|
19
20
|
onViewAllDetails: EventEmitter<any>;
|
|
20
21
|
onWidgetEventClick: EventEmitter<any>;
|
|
21
22
|
onWidgetItemClick: EventEmitter<any>;
|
|
@@ -28,5 +29,5 @@ export declare class WidgetContainerComponent implements OnInit, OnChanges, OnDe
|
|
|
28
29
|
handleWidgetItemClick(event: any): void;
|
|
29
30
|
ngOnDestroy(): void;
|
|
30
31
|
static ɵfac: i0.ɵɵFactoryDeclaration<WidgetContainerComponent, never>;
|
|
31
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<WidgetContainerComponent, "lib-widget-container", never, { "isMenu": { "alias": "isMenu"; "required": false; }; "offerWidgetData": { "alias": "offerWidgetData"; "required": false; }; "valuationWidgetData": { "alias": "valuationWidgetData"; "required": false; }; "widgetName": { "alias": "widgetName"; "required": false; }; "recordId": { "alias": "recordId"; "required": false; }; "onWidgetUpdate": { "alias": "onWidgetUpdate"; "required": false; }; }, { "onViewAllDetails": "onViewAllDetails"; "onWidgetEventClick": "onWidgetEventClick"; "onWidgetItemClick": "onWidgetItemClick"; "onUpdatedWidgetList": "onUpdatedWidgetList"; }, never, never, false, never>;
|
|
32
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WidgetContainerComponent, "lib-widget-container", never, { "isMenu": { "alias": "isMenu"; "required": false; }; "offerWidgetData": { "alias": "offerWidgetData"; "required": false; }; "valuationWidgetData": { "alias": "valuationWidgetData"; "required": false; }; "widgetName": { "alias": "widgetName"; "required": false; }; "recordId": { "alias": "recordId"; "required": false; }; "onWidgetUpdate": { "alias": "onWidgetUpdate"; "required": false; }; "isFullHeight": { "alias": "isFullHeight"; "required": false; }; }, { "onViewAllDetails": "onViewAllDetails"; "onWidgetEventClick": "onWidgetEventClick"; "onWidgetItemClick": "onWidgetItemClick"; "onUpdatedWidgetList": "onUpdatedWidgetList"; }, never, never, false, never>;
|
|
32
33
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
-
import { WidgetModel } from '../../models/widget.model';
|
|
2
|
+
import { WidgetModel, ProcessedBadgeConfig } from '../../models/widget.model';
|
|
3
3
|
import { StyleBuilderService } from '../../../shared/services/style-builder.service';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class WidgetHeaderComponent implements OnChanges {
|
|
@@ -15,8 +15,22 @@ export declare class WidgetHeaderComponent implements OnChanges {
|
|
|
15
15
|
[key: string]: any;
|
|
16
16
|
};
|
|
17
17
|
headerIconClass: string;
|
|
18
|
+
processedBadges: ProcessedBadgeConfig[];
|
|
19
|
+
widgetStatusIconClass: string;
|
|
20
|
+
widgetStatusIconClassExpression: string;
|
|
21
|
+
widgetStatusIconStyle: {
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
};
|
|
24
|
+
widgetStatusIconStyleExpression: {
|
|
25
|
+
[key: string]: any;
|
|
26
|
+
};
|
|
27
|
+
mergedWidgetStatusIconStyle: {
|
|
28
|
+
[key: string]: any;
|
|
29
|
+
};
|
|
18
30
|
constructor(styleBulderService: StyleBuilderService);
|
|
19
31
|
ngOnChanges(changes: SimpleChanges): void;
|
|
32
|
+
private processWidgetStatusIcon;
|
|
33
|
+
private processBadges;
|
|
20
34
|
static ɵfac: i0.ɵɵFactoryDeclaration<WidgetHeaderComponent, never>;
|
|
21
35
|
static ɵcmp: i0.ɵɵComponentDeclaration<WidgetHeaderComponent, "lib-widget-header", never, { "widget": { "alias": "widget"; "required": false; }; }, {}, never, never, false, never>;
|
|
22
36
|
}
|
|
@@ -12,6 +12,7 @@ export declare class WidgetItemComponent implements OnInit, OnChanges, OnDestroy
|
|
|
12
12
|
widget: WidgetModel;
|
|
13
13
|
application: any;
|
|
14
14
|
widgetKey: string;
|
|
15
|
+
isEmptyValueHidden: boolean;
|
|
15
16
|
keyClass: string;
|
|
16
17
|
valueClass: string;
|
|
17
18
|
fieldKeyStyle: {
|
|
@@ -46,10 +47,20 @@ export declare class WidgetItemComponent implements OnInit, OnChanges, OnDestroy
|
|
|
46
47
|
isMenu: boolean;
|
|
47
48
|
valueIconClassExpression: string;
|
|
48
49
|
private destroy$;
|
|
50
|
+
shouldShowItem: boolean;
|
|
51
|
+
hasContent: boolean;
|
|
52
|
+
isDateValue: boolean;
|
|
53
|
+
formattedDateValue: string;
|
|
54
|
+
hasHtmlContentValue: boolean;
|
|
49
55
|
constructor(styleBulderService: StyleBuilderService, widgetStore: WidgetStore, widgetQuery: WidgetQuery);
|
|
50
56
|
ngOnInit(): void;
|
|
51
57
|
ngOnChanges(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Computes all value-related properties once to avoid function calls in template
|
|
60
|
+
*/
|
|
61
|
+
private computeValueProperties;
|
|
52
62
|
handleIsMenu(): void;
|
|
63
|
+
handleIsEmptyValueHidden(): void;
|
|
53
64
|
handleDynamicEvent(recordId: string): void;
|
|
54
65
|
ngOnDestroy(): void;
|
|
55
66
|
isDate(value: any): boolean;
|
|
@@ -60,6 +71,13 @@ export declare class WidgetItemComponent implements OnInit, OnChanges, OnDestroy
|
|
|
60
71
|
* @returns true if there's meaningful content, false otherwise
|
|
61
72
|
*/
|
|
62
73
|
hasHtmlContent(value: string): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Checks if the value has meaningful content (for both HTML and non-HTML values)
|
|
76
|
+
* @param value - The value to check
|
|
77
|
+
* @param isHtml - Whether the value is HTML content
|
|
78
|
+
* @returns true if there's meaningful content, false otherwise
|
|
79
|
+
*/
|
|
80
|
+
hasValueContent(value: string, isHtml: boolean): boolean;
|
|
63
81
|
formatDate(value: string): string;
|
|
64
82
|
static ɵfac: i0.ɵɵFactoryDeclaration<WidgetItemComponent, never>;
|
|
65
83
|
static ɵcmp: i0.ɵɵComponentDeclaration<WidgetItemComponent, "lib-widget-item", never, { "widgetItem": { "alias": "widgetItem"; "required": false; }; "widget": { "alias": "widget"; "required": false; }; "application": { "alias": "application"; "required": false; }; }, {}, never, never, false, never>;
|
|
@@ -7,6 +7,7 @@ export declare class WidgetMainComponent implements OnChanges {
|
|
|
7
7
|
constructor(styleBulderService: StyleBuilderService);
|
|
8
8
|
widget: WidgetModel;
|
|
9
9
|
index: number;
|
|
10
|
+
isFullHeight: boolean;
|
|
10
11
|
widgetStyle: {
|
|
11
12
|
[key: string]: any;
|
|
12
13
|
};
|
|
@@ -18,5 +19,5 @@ export declare class WidgetMainComponent implements OnChanges {
|
|
|
18
19
|
};
|
|
19
20
|
ngOnChanges(): void;
|
|
20
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<WidgetMainComponent, never>;
|
|
21
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<WidgetMainComponent, "lib-widget-main", never, { "widget": { "alias": "widget"; "required": false; }; "index": { "alias": "index"; "required": false; }; }, {}, never, never, false, never>;
|
|
22
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WidgetMainComponent, "lib-widget-main", never, { "widget": { "alias": "widget"; "required": false; }; "index": { "alias": "index"; "required": false; }; "isFullHeight": { "alias": "isFullHeight"; "required": false; }; }, {}, never, never, false, never>;
|
|
22
23
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
|
|
1
|
+
import { EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges, ChangeDetectorRef } from '@angular/core';
|
|
2
2
|
import { WidgetModel } from '../../models/widget.model';
|
|
3
3
|
import { WidgetService } from '../../state/widget.service';
|
|
4
4
|
import { WidgetStore } from '../../state/widget.store';
|
|
5
|
+
import { WidgetQuery } from '../../state/widget.query';
|
|
6
|
+
import { StyleBuilderService } from '../../../shared/services/style-builder.service';
|
|
5
7
|
import * as i0 from "@angular/core";
|
|
6
8
|
/**
|
|
7
9
|
* WidgetRowTileComponent is a component that displays a row of widgets in a tile format.
|
|
@@ -10,17 +12,33 @@ import * as i0 from "@angular/core";
|
|
|
10
12
|
export declare class WidgetRowTileComponent implements OnInit, OnChanges, OnDestroy {
|
|
11
13
|
private widgetService;
|
|
12
14
|
private widgetStore;
|
|
15
|
+
private styleBulderService;
|
|
16
|
+
private cdr;
|
|
17
|
+
private widgetQuery;
|
|
13
18
|
private destroy$;
|
|
14
19
|
widgets: WidgetModel[];
|
|
15
20
|
isLoading: boolean;
|
|
16
21
|
recordId: string;
|
|
17
22
|
widgetName: string;
|
|
18
23
|
onWidgetUpdate: any;
|
|
19
|
-
|
|
24
|
+
isFullHeight: boolean;
|
|
25
|
+
onWidgetItemClick: EventEmitter<any>;
|
|
26
|
+
widgetCardStyle: {
|
|
27
|
+
[key: string]: any;
|
|
28
|
+
};
|
|
29
|
+
widgetCardStyleExpression: {
|
|
30
|
+
[key: string]: any;
|
|
31
|
+
};
|
|
32
|
+
widgetCombinedStyle: {
|
|
33
|
+
[key: string]: any;
|
|
34
|
+
};
|
|
35
|
+
constructor(widgetService: WidgetService, widgetStore: WidgetStore, styleBulderService: StyleBuilderService, cdr: ChangeDetectorRef, widgetQuery: WidgetQuery);
|
|
20
36
|
ngOnInit(): void;
|
|
21
37
|
ngOnChanges(changes: SimpleChanges): void;
|
|
22
38
|
getWidgetItemList(): void;
|
|
39
|
+
handleWidgetItemClick(): void;
|
|
40
|
+
private updateWidgetStyles;
|
|
23
41
|
ngOnDestroy(): void;
|
|
24
42
|
static ɵfac: i0.ɵɵFactoryDeclaration<WidgetRowTileComponent, never>;
|
|
25
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<WidgetRowTileComponent, "lib-widget-row-tile", never, { "recordId": { "alias": "recordId"; "required": false; }; "widgetName": { "alias": "widgetName"; "required": false; }; "onWidgetUpdate": { "alias": "onWidgetUpdate"; "required": false; }; }, {}, never, never, false, never>;
|
|
43
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WidgetRowTileComponent, "lib-widget-row-tile", never, { "recordId": { "alias": "recordId"; "required": false; }; "widgetName": { "alias": "widgetName"; "required": false; }; "onWidgetUpdate": { "alias": "onWidgetUpdate"; "required": false; }; "isFullHeight": { "alias": "isFullHeight"; "required": false; }; }, { "onWidgetItemClick": "onWidgetItemClick"; }, never, never, false, never>;
|
|
26
44
|
}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { BaseModel } from "../../shared";
|
|
2
|
+
export interface WidgetBadge {
|
|
3
|
+
dictionaryItemID?: string;
|
|
4
|
+
dictionaryID?: string;
|
|
5
|
+
value?: string;
|
|
6
|
+
style?: BadgeStyleConfig;
|
|
7
|
+
}
|
|
2
8
|
export interface WidgetModel extends BaseModel {
|
|
3
9
|
dataItems: WidgetItem[];
|
|
10
|
+
badges?: WidgetBadge[];
|
|
4
11
|
header: string;
|
|
5
12
|
order: number;
|
|
6
13
|
predefinedName: string | null;
|
|
@@ -10,6 +17,11 @@ export interface WidgetModel extends BaseModel {
|
|
|
10
17
|
style: WidgetStyleConfig;
|
|
11
18
|
isFormEnabled: boolean;
|
|
12
19
|
recordId: string;
|
|
20
|
+
isEmptyLabelHidden?: boolean;
|
|
21
|
+
widgetStatusIconClass?: string;
|
|
22
|
+
widgetStatusIconStyle?: string;
|
|
23
|
+
widgetStatusIconClassExpression?: string;
|
|
24
|
+
widgetStatusIconStyleExpression?: string;
|
|
13
25
|
}
|
|
14
26
|
export interface WidgetItem {
|
|
15
27
|
key: string;
|
|
@@ -47,3 +59,33 @@ export interface StyleConfig {
|
|
|
47
59
|
valueIconClassExpression?: string;
|
|
48
60
|
valueIconStyleExpression?: string;
|
|
49
61
|
}
|
|
62
|
+
export interface BadgeStyleConfig {
|
|
63
|
+
valueClass?: string;
|
|
64
|
+
value?: string;
|
|
65
|
+
valueIconClass?: string;
|
|
66
|
+
valueIconClassExpression?: string;
|
|
67
|
+
valueIconStyleExpression?: string;
|
|
68
|
+
valueIconStyle?: string;
|
|
69
|
+
hasSeparator?: boolean;
|
|
70
|
+
isConfirmed?: string;
|
|
71
|
+
itemStyle?: string;
|
|
72
|
+
styleExpression?: string;
|
|
73
|
+
}
|
|
74
|
+
export interface ProcessedBadgeConfig {
|
|
75
|
+
value: string;
|
|
76
|
+
valueClass: string;
|
|
77
|
+
badgeStyle: {
|
|
78
|
+
[key: string]: any;
|
|
79
|
+
};
|
|
80
|
+
valueIconClass?: string;
|
|
81
|
+
valueIconStyle: {
|
|
82
|
+
[key: string]: any;
|
|
83
|
+
};
|
|
84
|
+
valueIconClassExpression?: string;
|
|
85
|
+
valueIconStyleExpression: {
|
|
86
|
+
[key: string]: any;
|
|
87
|
+
};
|
|
88
|
+
mergedValueIconStyle: {
|
|
89
|
+
[key: string]: any;
|
|
90
|
+
};
|
|
91
|
+
}
|
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<svg width="15" height="16" viewBox="0 0 15 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<path d="M0.959961 7.91992C0.959961 4.05393 4.09397 0.919922 7.95996 0.919922C11.826 0.919922 14.96 4.05393 14.96 7.91992C14.96 11.7859 11.826 14.9199 7.95996 14.9199C4.09397 14.9199 0.959961 11.7859 0.959961 7.91992Z" fill="#22C55E"/>
|
|
3
|
-
<path d="M7.12625 9.31121L11.1512 5.28621L11.7638 5.90746L7.12625 10.5537L4.34375 7.76246L4.95625 7.14996L7.12625 9.31121Z" fill="white"/>
|
|
4
|
-
</svg>
|
|
1
|
+
<svg width="15" height="16" viewBox="0 0 15 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M0.959961 7.91992C0.959961 4.05393 4.09397 0.919922 7.95996 0.919922C11.826 0.919922 14.96 4.05393 14.96 7.91992C14.96 11.7859 11.826 14.9199 7.95996 14.9199C4.09397 14.9199 0.959961 11.7859 0.959961 7.91992Z" fill="#22C55E"/>
|
|
3
|
+
<path d="M7.12625 9.31121L11.1512 5.28621L11.7638 5.90746L7.12625 10.5537L4.34375 7.76246L4.95625 7.14996L7.12625 9.31121Z" fill="white"/>
|
|
4
|
+
</svg>
|