cat-qw-lib 0.44.6 → 0.44.8

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.
@@ -4040,10 +4040,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImpor
4040
4040
  let WidgetStore = class WidgetStore extends BaseStore {
4041
4041
  onViewAllDetails$;
4042
4042
  onViewPropertyDetails$;
4043
+ onItemClick$;
4043
4044
  constructor() {
4044
4045
  super();
4045
4046
  this.onViewAllDetails$ = new BehaviorSubject(SHARED.EMPTY_STRING);
4046
4047
  this.onViewPropertyDetails$ = new BehaviorSubject(SHARED.EMPTY);
4048
+ this.onItemClick$ = new BehaviorSubject({});
4047
4049
  }
4048
4050
  setOnViewPropertyDetails(value) {
4049
4051
  this.onViewPropertyDetails$.next(value);
@@ -4054,6 +4056,9 @@ let WidgetStore = class WidgetStore extends BaseStore {
4054
4056
  resetOnViewAllDetails() {
4055
4057
  this.onViewAllDetails$.next(null);
4056
4058
  }
4059
+ setOnWidgetItemClick(value) {
4060
+ this.onItemClick$.next(value);
4061
+ }
4057
4062
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: WidgetStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4058
4063
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: WidgetStore, providedIn: 'root' });
4059
4064
  };
@@ -4110,6 +4115,9 @@ class WidgetQuery extends BaseQuery {
4110
4115
  getViewPropertyDetails() {
4111
4116
  return this.widgetStore.onViewPropertyDetails$.asObservable();
4112
4117
  }
4118
+ getOnWidgetItemClick() {
4119
+ return this.widgetStore.onItemClick$.asObservable();
4120
+ }
4113
4121
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: WidgetQuery, deps: [{ token: WidgetStore }, { token: WidgetStore }], target: i0.ɵɵFactoryTarget.Injectable });
4114
4122
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: WidgetQuery, providedIn: 'root' });
4115
4123
  }
@@ -4199,12 +4207,15 @@ class WidgetItemComponent {
4199
4207
  ngOnDestroy() {
4200
4208
  this.widgetStore.setOnViewPropertyDetails(false);
4201
4209
  }
4210
+ handleWidgetItemClick() {
4211
+ this.widgetStore.setOnWidgetItemClick({ item: this.widgetItem, recordId: this.widget.recordId });
4212
+ }
4202
4213
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: WidgetItemComponent, deps: [{ token: StyleBuilderService }, { token: WidgetStore }], target: i0.ɵɵFactoryTarget.Component });
4203
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.4", type: WidgetItemComponent, isStandalone: false, selector: "lib-widget-item", inputs: { widgetItem: "widgetItem", widget: "widget", application: "application" }, ngImport: i0, template: "<div class=\"widget-container\"> \n <div class=\"flex justify-content-between\" [ngClass]=\"!(widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget') ? 'align-items-center' : ''\">\n <p class=\"mb-0 text-color-secondary mr-3 key-field-wrapper w-50\">{{ widgetItem?.key }}</p>\n \n <div class=\"mb-0 text-color font-semibold text-value-wrapper w-50 flex align-items-center justify-content-end\">\n <i *ngIf=\"widgetItem?.style?.includes('color: red;')\" \n class=\"pi pi-exclamation-triangle text-red-500 mr-1\" \n style=\"font-size: 1.3rem\"></i>\n <p *ngIf=\"!(widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget')\" class=\"key-field-wrapper\" [ngStyle]=\"getStyle(widgetItem?.style)\">\n {{ (widgetItem?.value && widgetItem?.value !== 'null') ? widgetItem?.value : ''}}\n </p> \n <i *ngIf=\"widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget'\" class=\"pi pi-map-marker map-icon map-icon-wrapper\"></i>\n </div>\n </div>\n <div *ngIf=\"widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget'\" class=\"address-title-wrapper cursor-pointer\"\n [ngStyle]=\"getStyle(widgetItem?.style)\" (click)=\"onHandleSidebar()\">\n {{ widgetItem?.value }}\n </div>\n</div>\n", styles: [".text-value-wrapper{-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal;max-width:100%}.key-field-wrapper{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.w-50{width:50%!important}.map-icon-wrapper{font-size:16px;padding:13px;border-radius:30px;border:1px solid rgba(76,98,146,.1);background:#4c62920a}.address-title-wrapper{width:80%;word-break:break-word;margin-top:-12px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
4214
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.4", type: WidgetItemComponent, isStandalone: false, selector: "lib-widget-item", inputs: { widgetItem: "widgetItem", widget: "widget", application: "application" }, ngImport: i0, template: "<div class=\"widget-container\">\n <div class=\"flex justify-content-between\"\n [ngClass]=\"!(widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget') ? 'align-items-center' : ''\">\n <p class=\"mb-0 text-color-secondary mr-3 key-field-wrapper w-50\">{{ widgetItem?.key }}</p>\n\n <div class=\"mb-0 text-color font-semibold text-value-wrapper w-50 flex align-items-center justify-content-end\">\n <i *ngIf=\"widgetItem?.style?.includes('color: red;')\" class=\"pi pi-exclamation-triangle text-red-500 mr-1\"\n style=\"font-size: 1.3rem\"></i>\n <p *ngIf=\"!(widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget')\" class=\"key-field-wrapper\"\n [ngStyle]=\"getStyle(widgetItem?.style)\">\n <ng-container *ngIf=\"widgetItem?.isLink; else plainText\">\n <a href=\"javascript:void(0)\" (click)=\"handleWidgetItemClick()\" target=\"_blank\" rel=\"noopener noreferrer\">\n {{ (widgetItem.value && widgetItem.value !== 'null') ? widgetItem.value : '' }}\n </a>\n </ng-container>\n <ng-template #plainText>\n {{ (widgetItem?.value && widgetItem?.value !== 'null') ? widgetItem?.value : '' }}\n </ng-template>\n </p>\n <i *ngIf=\"widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget'\"\n class=\"pi pi-map-marker map-icon map-icon-wrapper\"></i>\n </div>\n </div>\n <div *ngIf=\"widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget'\"\n class=\"address-title-wrapper cursor-pointer\" [ngStyle]=\"getStyle(widgetItem?.style)\" (click)=\"onHandleSidebar()\">\n {{ widgetItem?.value }}\n </div>\n</div>", styles: [".text-value-wrapper{-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal;max-width:100%}.key-field-wrapper{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.w-50{width:50%!important}.map-icon-wrapper{font-size:16px;padding:13px;border-radius:30px;border:1px solid rgba(76,98,146,.1);background:#4c62920a}.address-title-wrapper{width:80%;word-break:break-word;margin-top:-12px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
4204
4215
  }
4205
4216
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: WidgetItemComponent, decorators: [{
4206
4217
  type: Component,
4207
- args: [{ selector: 'lib-widget-item', standalone: false, template: "<div class=\"widget-container\"> \n <div class=\"flex justify-content-between\" [ngClass]=\"!(widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget') ? 'align-items-center' : ''\">\n <p class=\"mb-0 text-color-secondary mr-3 key-field-wrapper w-50\">{{ widgetItem?.key }}</p>\n \n <div class=\"mb-0 text-color font-semibold text-value-wrapper w-50 flex align-items-center justify-content-end\">\n <i *ngIf=\"widgetItem?.style?.includes('color: red;')\" \n class=\"pi pi-exclamation-triangle text-red-500 mr-1\" \n style=\"font-size: 1.3rem\"></i>\n <p *ngIf=\"!(widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget')\" class=\"key-field-wrapper\" [ngStyle]=\"getStyle(widgetItem?.style)\">\n {{ (widgetItem?.value && widgetItem?.value !== 'null') ? widgetItem?.value : ''}}\n </p> \n <i *ngIf=\"widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget'\" class=\"pi pi-map-marker map-icon map-icon-wrapper\"></i>\n </div>\n </div>\n <div *ngIf=\"widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget'\" class=\"address-title-wrapper cursor-pointer\"\n [ngStyle]=\"getStyle(widgetItem?.style)\" (click)=\"onHandleSidebar()\">\n {{ widgetItem?.value }}\n </div>\n</div>\n", styles: [".text-value-wrapper{-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal;max-width:100%}.key-field-wrapper{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.w-50{width:50%!important}.map-icon-wrapper{font-size:16px;padding:13px;border-radius:30px;border:1px solid rgba(76,98,146,.1);background:#4c62920a}.address-title-wrapper{width:80%;word-break:break-word;margin-top:-12px}\n"] }]
4218
+ args: [{ selector: 'lib-widget-item', standalone: false, template: "<div class=\"widget-container\">\n <div class=\"flex justify-content-between\"\n [ngClass]=\"!(widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget') ? 'align-items-center' : ''\">\n <p class=\"mb-0 text-color-secondary mr-3 key-field-wrapper w-50\">{{ widgetItem?.key }}</p>\n\n <div class=\"mb-0 text-color font-semibold text-value-wrapper w-50 flex align-items-center justify-content-end\">\n <i *ngIf=\"widgetItem?.style?.includes('color: red;')\" class=\"pi pi-exclamation-triangle text-red-500 mr-1\"\n style=\"font-size: 1.3rem\"></i>\n <p *ngIf=\"!(widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget')\" class=\"key-field-wrapper\"\n [ngStyle]=\"getStyle(widgetItem?.style)\">\n <ng-container *ngIf=\"widgetItem?.isLink; else plainText\">\n <a href=\"javascript:void(0)\" (click)=\"handleWidgetItemClick()\" target=\"_blank\" rel=\"noopener noreferrer\">\n {{ (widgetItem.value && widgetItem.value !== 'null') ? widgetItem.value : '' }}\n </a>\n </ng-container>\n <ng-template #plainText>\n {{ (widgetItem?.value && widgetItem?.value !== 'null') ? widgetItem?.value : '' }}\n </ng-template>\n </p>\n <i *ngIf=\"widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget'\"\n class=\"pi pi-map-marker map-icon map-icon-wrapper\"></i>\n </div>\n </div>\n <div *ngIf=\"widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget'\"\n class=\"address-title-wrapper cursor-pointer\" [ngStyle]=\"getStyle(widgetItem?.style)\" (click)=\"onHandleSidebar()\">\n {{ widgetItem?.value }}\n </div>\n</div>", styles: [".text-value-wrapper{-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal;max-width:100%}.key-field-wrapper{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.w-50{width:50%!important}.map-icon-wrapper{font-size:16px;padding:13px;border-radius:30px;border:1px solid rgba(76,98,146,.1);background:#4c62920a}.address-title-wrapper{width:80%;word-break:break-word;margin-top:-12px}\n"] }]
4208
4219
  }], ctorParameters: () => [{ type: StyleBuilderService }, { type: WidgetStore }], propDecorators: { widgetItem: [{
4209
4220
  type: Input
4210
4221
  }], widget: [{
@@ -4216,15 +4227,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImpor
4216
4227
  class WidgetBodyComponent {
4217
4228
  widget;
4218
4229
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: WidgetBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4219
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.4", type: WidgetBodyComponent, isStandalone: false, selector: "lib-widget-body", inputs: { widget: "widget" }, ngImport: i0, template: "<div class=\"widget-body-container\">\n <div *ngFor=\"let dataItem of widget?.dataItems || []; let i = index\">\n <div [ngClass]=\"i !== ((widget?.dataItems || []).length - 1) ? 'widget-item-wrapper' : ''\">\n <div [ngClass]=\"\n dataItem?.key === 'Vulnerability' && widget.predefinedName === 'ApplicantWidget'\n ? 'vulnerability-title-wrapper'\n : ( i !== ((widget?.dataItems || []).length - 1) ? 'widget-wrapper' : 'widget-last-wrapper' )\n \" class=\"px-3\">\n <lib-widget-item [widgetItem]=\"dataItem\" [widget]=\"widget\"></lib-widget-item>\n </div>\n </div>\n </div>\n</div>", styles: [".widget-item-wrapper{border-bottom:1px solid rgba(68,72,109,.1)}.widget-wrapper{padding:10px 0}.widget-last-wrapper{padding:10px 0 0}.vulnerability-title-wrapper{background:#fb392d36}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: WidgetItemComponent, selector: "lib-widget-item", inputs: ["widgetItem", "widget", "application"] }] });
4230
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.4", type: WidgetBodyComponent, isStandalone: false, selector: "lib-widget-body", inputs: { widget: "widget" }, ngImport: i0, template: "<div class=\"widget-body-container\">\n <div *ngFor=\"let dataItem of widget?.dataItems || []; let i = index\">\n @if(!dataItem.isHidden){\n <div [ngClass]=\"i !== ((widget.dataItems || []).length - 1) ? 'widget-item-wrapper' : ''\">\n <div [ngClass]=\"\n dataItem?.key === 'Vulnerability' && widget.predefinedName === 'ApplicantWidget'\n ? 'vulnerability-title-wrapper'\n : ( i !== ((widget.dataItems || []).length - 1) ? 'widget-wrapper' : 'widget-last-wrapper' )\n \" class=\"px-3\">\n <lib-widget-item [widgetItem]=\"dataItem\" [widget]=\"widget\"></lib-widget-item>\n </div>\n </div>\n }\n </div>\n</div>", styles: [".widget-item-wrapper{border-bottom:1px solid rgba(68,72,109,.1)}.widget-wrapper{padding:10px 0}.widget-last-wrapper{padding:10px 0 0}.vulnerability-title-wrapper{background:#fb392d36}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: WidgetItemComponent, selector: "lib-widget-item", inputs: ["widgetItem", "widget", "application"] }] });
4220
4231
  }
4221
4232
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: WidgetBodyComponent, decorators: [{
4222
4233
  type: Component,
4223
- args: [{ selector: 'lib-widget-body', standalone: false, template: "<div class=\"widget-body-container\">\n <div *ngFor=\"let dataItem of widget?.dataItems || []; let i = index\">\n <div [ngClass]=\"i !== ((widget?.dataItems || []).length - 1) ? 'widget-item-wrapper' : ''\">\n <div [ngClass]=\"\n dataItem?.key === 'Vulnerability' && widget.predefinedName === 'ApplicantWidget'\n ? 'vulnerability-title-wrapper'\n : ( i !== ((widget?.dataItems || []).length - 1) ? 'widget-wrapper' : 'widget-last-wrapper' )\n \" class=\"px-3\">\n <lib-widget-item [widgetItem]=\"dataItem\" [widget]=\"widget\"></lib-widget-item>\n </div>\n </div>\n </div>\n</div>", styles: [".widget-item-wrapper{border-bottom:1px solid rgba(68,72,109,.1)}.widget-wrapper{padding:10px 0}.widget-last-wrapper{padding:10px 0 0}.vulnerability-title-wrapper{background:#fb392d36}\n"] }]
4234
+ args: [{ selector: 'lib-widget-body', standalone: false, template: "<div class=\"widget-body-container\">\n <div *ngFor=\"let dataItem of widget?.dataItems || []; let i = index\">\n @if(!dataItem.isHidden){\n <div [ngClass]=\"i !== ((widget.dataItems || []).length - 1) ? 'widget-item-wrapper' : ''\">\n <div [ngClass]=\"\n dataItem?.key === 'Vulnerability' && widget.predefinedName === 'ApplicantWidget'\n ? 'vulnerability-title-wrapper'\n : ( i !== ((widget.dataItems || []).length - 1) ? 'widget-wrapper' : 'widget-last-wrapper' )\n \" class=\"px-3\">\n <lib-widget-item [widgetItem]=\"dataItem\" [widget]=\"widget\"></lib-widget-item>\n </div>\n </div>\n }\n </div>\n</div>", styles: [".widget-item-wrapper{border-bottom:1px solid rgba(68,72,109,.1)}.widget-wrapper{padding:10px 0}.widget-last-wrapper{padding:10px 0 0}.vulnerability-title-wrapper{background:#fb392d36}\n"] }]
4224
4235
  }], propDecorators: { widget: [{
4225
4236
  type: Input
4226
4237
  }] } });
4227
4238
 
4239
+ /**
4240
+ * Widget Container Component
4241
+ */
4228
4242
  class WidgetContainerComponent {
4229
4243
  widgetService;
4230
4244
  activatedRoute;
@@ -4240,32 +4254,18 @@ class WidgetContainerComponent {
4240
4254
  }
4241
4255
  destroy$ = new Subject();
4242
4256
  widgets = [];
4243
- subscription = new Subscription();
4257
+ subscriptions = [];
4244
4258
  isLoading = true;
4245
4259
  onViewAllDetails = new EventEmitter();
4246
4260
  onViewAllProperties = new EventEmitter();
4261
+ onWidgetItemClick = new EventEmitter();
4247
4262
  isSidebarVisible = SHARED.FALSE;
4248
4263
  offerWidgetData;
4249
4264
  valuationWidgetData;
4250
4265
  progressChartData;
4251
4266
  ngOnInit() {
4252
- const detailsSubscription = this.widgetQuery.getOnViewAllDetails()?.subscribe((res) => {
4253
- if (res) {
4254
- this.onViewAllDetails.emit(res);
4255
- }
4256
- }, (error) => {
4257
- console.error('Error in getOnViewAllDetails subscription:', error);
4258
- });
4259
- this.widgetQuery.getViewPropertyDetails()
4260
- .pipe(takeUntil(this.destroy$))
4261
- .subscribe((res) => {
4262
- if (res) {
4263
- this.onViewAllProperties.next(res);
4264
- }
4265
- });
4266
- if (detailsSubscription) {
4267
- this.subscription.add(detailsSubscription);
4268
- }
4267
+ this.handleEventFromPropertyDetails();
4268
+ this.handleOnViewAllDetails();
4269
4269
  const queueId = localStorage.getItem(SHARED.selectedQueue);
4270
4270
  const recordId = this.activatedRoute.snapshot.params[SHARED.ID];
4271
4271
  if (!queueId || !recordId) {
@@ -4279,6 +4279,33 @@ class WidgetContainerComponent {
4279
4279
  this.getWidgetFromCacheList(queueId, recordId);
4280
4280
  this.getAllWidgetList(queueId, recordId);
4281
4281
  }
4282
+ handleWidgetItemClick() {
4283
+ this.subscriptions.push(this.widgetQuery.getOnWidgetItemClick().subscribe((res) => {
4284
+ if (res) {
4285
+ this.onWidgetItemClick.emit(res);
4286
+ }
4287
+ }, (error) => {
4288
+ console.error('Error in getOnWidgetItemClick subscription:', error);
4289
+ }));
4290
+ }
4291
+ handleEventFromPropertyDetails() {
4292
+ this.widgetQuery.getViewPropertyDetails()
4293
+ .pipe(takeUntil(this.destroy$))
4294
+ .subscribe((res) => {
4295
+ if (res) {
4296
+ this.onViewAllProperties.next(res);
4297
+ }
4298
+ });
4299
+ }
4300
+ handleOnViewAllDetails() {
4301
+ this.subscriptions.push(this.widgetQuery.getOnViewAllDetails()?.subscribe((res) => {
4302
+ if (res) {
4303
+ this.onViewAllDetails.emit(res);
4304
+ }
4305
+ }, (error) => {
4306
+ console.error('Error in getOnViewAllDetails subscription:', error);
4307
+ }));
4308
+ }
4282
4309
  getAllWidgetList(queueId, recordId) {
4283
4310
  this.widgetService.getAllWidgets(queueId, recordId)
4284
4311
  .pipe(takeUntil(this.destroy$))
@@ -4309,12 +4336,12 @@ class WidgetContainerComponent {
4309
4336
  ngOnDestroy() {
4310
4337
  this.widgets = [];
4311
4338
  this.widgetStore.resetOnViewAllDetails();
4312
- this.subscription.unsubscribe();
4339
+ this.subscriptions.forEach(sub => sub.unsubscribe());
4313
4340
  this.destroy$.next();
4314
4341
  this.destroy$.complete();
4315
4342
  }
4316
4343
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: WidgetContainerComponent, deps: [{ token: WidgetService }, { token: i3$4.ActivatedRoute }, { token: WidgetQuery }, { token: WidgetStore }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
4317
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.4", type: WidgetContainerComponent, isStandalone: false, selector: "lib-widget-container", inputs: { isSidebarVisible: "isSidebarVisible", offerWidgetData: "offerWidgetData", valuationWidgetData: "valuationWidgetData", progressChartData: "progressChartData" }, outputs: { onViewAllDetails: "onViewAllDetails", onViewAllProperties: "onViewAllProperties" }, usesOnChanges: true, ngImport: i0, template: "<p-card class=\"widget-block-wrapper block\">\n <div class=\"widget-section-wrapper custom-scroll pt-2\">\n <!-- Loading state -->\n <ng-container *ngIf=\"isLoading; else widgetContent\">\n <p class=\"text-color ml-3 font-semibold\">Widget configuration loading...</p>\n </ng-container>\n\n <!-- Content after API call -->\n <ng-template #widgetContent>\n <ng-container *ngIf=\"(widgets && widgets.length > 0) || (valuationWidgetData || offerWidgetData); else noWidgets\">\n <ng-container *ngFor=\"let widget of widgets; let i = index\">\n <div class=\"widget-container-wrapper pl-1\" [ngClass]=\"i !== 0 ? 'mt-4' : ''\">\n <lib-widget-header [widget]=\"widget\" [progressChartData]=\"progressChartData\"></lib-widget-header>\n <div class=\"widget-content-wrapper mt-3 py-3\">\n <lib-widget-body [widget]=\"widget\"></lib-widget-body>\n <lib-widget-footer [widget]=\"widget\"></lib-widget-footer>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"offerWidgetData\">\n <lib-custom-widget [widgetData]=\"offerWidgetData\"></lib-custom-widget>\n </ng-container>\n <ng-container *ngIf=\"valuationWidgetData\">\n <lib-custom-widget [widgetData]=\"valuationWidgetData\"></lib-custom-widget>\n </ng-container>\n </ng-container>\n\n <!-- No widget configured state -->\n <ng-template #noWidgets>\n <p class=\"text-color ml-3 font-semibold\">No Widgets Configured</p>\n </ng-template>\n </ng-template>\n </div>\n</p-card>", styles: ["::ng-deep .badge-wrapper .p-button{padding:4px 8px}::ng-deep .refresh-btn-wrapper .p-button{padding:0}::ng-deep .valuation-timeline-wrapper .p-timeline-event-opposite{display:none}::ng-deep .rating-badge-wrapper .p-button{display:flex;align-items:center}::ng-deep .widget-block-wrapper{height:100%}::ng-deep .widget-block-wrapper .p-card{height:100%;box-shadow:none}::ng-deep .widget-block-wrapper .p-card-body{padding:0;height:100%}::ng-deep .widget-block-wrapper .p-card-content{padding-bottom:0;height:100%}.application-title-wrapper{font-size:18px;font-weight:400}.application-section-wrapper{background-color:#4c629208;border:1px solid rgba(76,98,146,.1);border-radius:10px}.widget-section-wrapper{height:100%}.custom-scroll{overflow-y:hidden;scrollbar-gutter:stable}.custom-scroll:hover{overflow-y:auto}.widget-content-wrapper{border-top:1px solid rgba(68,72,109,.1)}:host ::-webkit-scrollbar{width:6px}:host ::-webkit-scrollbar-track{background:transparent}:host ::-webkit-scrollbar-thumb{background:#d1d5db94;border-radius:20px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6$1.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }, { kind: "component", type: CustomWidgetComponent, selector: "lib-custom-widget", inputs: ["widgetData"] }, { kind: "component", type: WidgetHeaderComponent, selector: "lib-widget-header", inputs: ["widget", "progressChartData"] }, { kind: "component", type: WidgetFooterComponent, selector: "lib-widget-footer", inputs: ["widget"] }, { kind: "component", type: WidgetBodyComponent, selector: "lib-widget-body", inputs: ["widget"] }] });
4344
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.4", type: WidgetContainerComponent, isStandalone: false, selector: "lib-widget-container", inputs: { isSidebarVisible: "isSidebarVisible", offerWidgetData: "offerWidgetData", valuationWidgetData: "valuationWidgetData", progressChartData: "progressChartData" }, outputs: { onViewAllDetails: "onViewAllDetails", onViewAllProperties: "onViewAllProperties", onWidgetItemClick: "onWidgetItemClick" }, usesOnChanges: true, ngImport: i0, template: "<p-card class=\"widget-block-wrapper block\">\n <div class=\"widget-section-wrapper custom-scroll pt-2\">\n <!-- Loading state -->\n <ng-container *ngIf=\"isLoading; else widgetContent\">\n <p class=\"text-color ml-3 font-semibold\">Widget configuration loading...</p>\n </ng-container>\n\n <!-- Content after API call -->\n <ng-template #widgetContent>\n <ng-container *ngIf=\"(widgets && widgets.length > 0) || (valuationWidgetData || offerWidgetData); else noWidgets\">\n <ng-container *ngFor=\"let widget of widgets; let i = index\">\n <div class=\"widget-container-wrapper pl-1\" [ngClass]=\"i !== 0 ? 'mt-4' : ''\">\n <lib-widget-header [widget]=\"widget\" [progressChartData]=\"progressChartData\"></lib-widget-header>\n <div class=\"widget-content-wrapper mt-3 py-3\">\n <lib-widget-body [widget]=\"widget\"></lib-widget-body>\n <lib-widget-footer [widget]=\"widget\"></lib-widget-footer>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"offerWidgetData\">\n <lib-custom-widget [widgetData]=\"offerWidgetData\"></lib-custom-widget>\n </ng-container>\n <ng-container *ngIf=\"valuationWidgetData\">\n <lib-custom-widget [widgetData]=\"valuationWidgetData\"></lib-custom-widget>\n </ng-container>\n </ng-container>\n\n <!-- No widget configured state -->\n <ng-template #noWidgets>\n <p class=\"text-color ml-3 font-semibold\">No Widgets Configured</p>\n </ng-template>\n </ng-template>\n </div>\n</p-card>", styles: ["::ng-deep .badge-wrapper .p-button{padding:4px 8px}::ng-deep .refresh-btn-wrapper .p-button{padding:0}::ng-deep .valuation-timeline-wrapper .p-timeline-event-opposite{display:none}::ng-deep .rating-badge-wrapper .p-button{display:flex;align-items:center}::ng-deep .widget-block-wrapper{height:100%}::ng-deep .widget-block-wrapper .p-card{height:100%;box-shadow:none}::ng-deep .widget-block-wrapper .p-card-body{padding:0;height:100%}::ng-deep .widget-block-wrapper .p-card-content{padding-bottom:0;height:100%}.application-title-wrapper{font-size:18px;font-weight:400}.application-section-wrapper{background-color:#4c629208;border:1px solid rgba(76,98,146,.1);border-radius:10px}.widget-section-wrapper{height:100%}.custom-scroll{overflow-y:hidden;scrollbar-gutter:stable}.custom-scroll:hover{overflow-y:auto}.widget-content-wrapper{border-top:1px solid rgba(68,72,109,.1)}:host ::-webkit-scrollbar{width:6px}:host ::-webkit-scrollbar-track{background:transparent}:host ::-webkit-scrollbar-thumb{background:#d1d5db94;border-radius:20px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6$1.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }, { kind: "component", type: CustomWidgetComponent, selector: "lib-custom-widget", inputs: ["widgetData"] }, { kind: "component", type: WidgetHeaderComponent, selector: "lib-widget-header", inputs: ["widget", "progressChartData"] }, { kind: "component", type: WidgetFooterComponent, selector: "lib-widget-footer", inputs: ["widget"] }, { kind: "component", type: WidgetBodyComponent, selector: "lib-widget-body", inputs: ["widget"] }] });
4318
4345
  }
4319
4346
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: WidgetContainerComponent, decorators: [{
4320
4347
  type: Component,
@@ -4323,6 +4350,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImpor
4323
4350
  type: Output
4324
4351
  }], onViewAllProperties: [{
4325
4352
  type: Output
4353
+ }], onWidgetItemClick: [{
4354
+ type: Output
4326
4355
  }], isSidebarVisible: [{
4327
4356
  type: Input
4328
4357
  }], offerWidgetData: [{