diff --git a/package-lock.json b/package-lock.json index cc3a7d7..96c12d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@firestitch/activity", - "version": "18.0.3", + "version": "18.0.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@firestitch/activity", - "version": "18.0.3", + "version": "18.0.4", "license": "MIT", "devDependencies": { "@angular-devkit/build-angular": "^18.2.7", diff --git a/package.json b/package.json index aeee19c..f12b9a1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@firestitch/activity", "title": "Activity", - "version": "18.0.4", + "version": "18.0.5", "repository": { "type": "git", "url": "https://github.com/Firestitch/ngx-activity" diff --git a/playground/app/components/activities/activities.component.html b/playground/app/components/activities/activities.component.html index bf153a3..3c5cf93 100644 --- a/playground/app/components/activities/activities.component.html +++ b/playground/app/components/activities/activities.component.html @@ -1,14 +1,16 @@ - {{ object.name }} + !{{ data.name }}! - {{ data.value }} + {{ data | json }} \ No newline at end of file diff --git a/playground/app/playground.module.ts b/playground/app/playground.module.ts index 10386a8..8b0f4dc 100644 --- a/playground/app/playground.module.ts +++ b/playground/app/playground.module.ts @@ -4,7 +4,7 @@ import { BrowserModule } from '@angular/platform-browser'; import { RouterModule, Routes } from '@angular/router'; -import { FsActivitiesComponent, FsActivityDataDirective, FsActivityObjectDirective } from '@firestitch/activity'; +import { FsActivitiesComponent, FsActivityPreviewDirective } from '@firestitch/activity'; import { FS_API_REQUEST_INTERCEPTOR } from '@firestitch/api'; import { FsExampleModule } from '@firestitch/example'; import { FsHtmlEditorModule } from '@firestitch/html-editor'; @@ -38,8 +38,7 @@ const routes: Routes = [ activationKey: '2J1B10dD7F6F5A3F3I3cWHNGGDTCWHId1Eb1Oc1Yh1b2Ld1POkE3D3F3C9A4E5A3G3B2G2==', }), FsActivitiesComponent, - FsActivityObjectDirective, - FsActivityDataDirective, + FsActivityPreviewDirective, ], declarations: [ AppComponent, diff --git a/playground/assets/activities.json b/playground/assets/activities.json index 52102a4..1a22e81 100644 --- a/playground/assets/activities.json +++ b/playground/assets/activities.json @@ -443,12 +443,12 @@ "subjectObjectClass": null, "color": null, "icon": "playlist_add_check", - "type": "crmLeadStatus" } , + "type": "crmLeadDate" } , "concreteActivityObject": { "id": 88605, "parentAttributeId": null, "name": "Something else", - "class": "crmLeadStatus", + "class": "crmLeadDate", "backgroundColor": "#1E78D9", "guid": "l08699e62982b351ac573bfc39390b497", "imageTime": null, diff --git a/src/app/components/activities/activities.component.html b/src/app/components/activities/activities.component.html index 6a62f39..4a76552 100644 --- a/src/app/components/activities/activities.component.html +++ b/src/app/components/activities/activities.component.html @@ -46,7 +46,7 @@
+ [ngTemplateOutletContext]="{ activity: activity, data: activity.concretePreviousActivityObject }"> east @@ -56,7 +56,7 @@ + [ngTemplateOutletContext]="{ activity: activity, data: activity.concreteActivityObject }"> @@ -80,9 +80,9 @@ #dataPreview let-activity="activity" let-data="data"> - @if (this.activityData) { + @if (this.activityPreviews) { } @else { @@ -92,14 +92,14 @@ - @if (this.activityObject) { + let-data="data"> + @if (this.activityPreviews[activity.activityType.type]) { + [ngTemplateOutlet]="this.activityPreviews[activity.activityType.type].templateRef" + [ngTemplateOutletContext]="{ activity: activity, data: data }"> } @else { - {{ object.name }} + {{ data?.name }} }
diff --git a/src/app/components/activities/activities.component.ts b/src/app/components/activities/activities.component.ts index 1333b18..93d2040 100644 --- a/src/app/components/activities/activities.component.ts +++ b/src/app/components/activities/activities.component.ts @@ -3,11 +3,11 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, - ContentChild, + ContentChildren, inject, Input, OnInit, - TemplateRef, + QueryList, } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; @@ -21,7 +21,7 @@ import { FsPrompt } from '@firestitch/prompt'; import { switchMap } from 'rxjs/operators'; -import { FsActivityDataDirective, FsActivityObjectDirective } from '../../directives'; +import { FsActivityPreviewDirective } from '../../directives'; import { FsActivityObjectTypeComponent } from '../activity-object-type'; @@ -45,18 +45,23 @@ import { FsActivityObjectTypeComponent } from '../activity-object-type'; }) export class FsActivitiesComponent implements OnInit { - @Input() public apiPath: string = ''; + @Input() public apiPath: string = 'activities'; - @ContentChild(FsActivityObjectDirective, { read: TemplateRef }) - public activityObject: TemplateRef; + @ContentChildren(FsActivityPreviewDirective) + public set setActivityObjects(templates: QueryList) { + this.activityPreviews = templates.toArray() + .reduce((acc, template) => { + acc[template.activityType] = template; - @ContentChild(FsActivityDataDirective, { read: TemplateRef }) - public activityData: TemplateRef; + return acc; + }, {}); + } public filterConfig: FilterConfig; public activities = []; public actions; public maxActivityId; + public activityPreviews: { [key: string]: FsActivityPreviewDirective } = {}; private _api = inject(FsApi); private _prompt = inject(FsPrompt); @@ -83,7 +88,7 @@ export class FsActivitiesComponent implements OnInit { }) .pipe( switchMap(() => this._api.delete( - `${this.apiPath}activities/${activity.id}`, + `${this.apiPath}/${activity.id}`, )), ) .subscribe(() => { @@ -96,7 +101,7 @@ export class FsActivitiesComponent implements OnInit { private _load(): void { this._api - .get(`${this.apiPath}activities`, { + .get(`${this.apiPath}`, { activityTypes: true, creatorObjects: true, concreteObjects: true, diff --git a/src/app/directives/activity-data.directive.ts b/src/app/directives/activity-data.directive.ts deleted file mode 100644 index 07c3a71..0000000 --- a/src/app/directives/activity-data.directive.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Directive } from '@angular/core'; - - -@Directive({ - selector: '[fsActivityData]', - standalone: true, -}) -export class FsActivityDataDirective { - - public static ngTemplateContextGuard( - directive: FsActivityDataDirective, - context: unknown, - ): context is { - data: any, - activity: any - } { - return true; - } - -} diff --git a/src/app/directives/activity-object.directive.ts b/src/app/directives/activity-object.directive.ts deleted file mode 100644 index 72f3887..0000000 --- a/src/app/directives/activity-object.directive.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Directive } from '@angular/core'; - - -@Directive({ - selector: '[fsActivityObject]', - standalone: true, -}) -export class FsActivityObjectDirective { - - public static ngTemplateContextGuard( - directive: FsActivityObjectDirective, - context: unknown, - ): context is { - object: any, - activity: any - } { - return true; - } - -} diff --git a/src/app/directives/activity-preview.directive.ts b/src/app/directives/activity-preview.directive.ts new file mode 100644 index 0000000..7f6703e --- /dev/null +++ b/src/app/directives/activity-preview.directive.ts @@ -0,0 +1,24 @@ +import { Directive, inject, Input, TemplateRef } from '@angular/core'; + + +@Directive({ + selector: '[fsActivityPreview]', + standalone: true, +}) +export class FsActivityPreviewDirective { + + @Input() public activityType: any; + + public templateRef = inject(TemplateRef); + + public static ngTemplateContextGuard( + directive: FsActivityPreviewDirective, + context: any, + ): context is { + data: any, + activity: any + } { + return true; + } + +} diff --git a/src/app/directives/index.ts b/src/app/directives/index.ts index 56cdddf..e80a959 100644 --- a/src/app/directives/index.ts +++ b/src/app/directives/index.ts @@ -1,2 +1,2 @@ -export * from './activity-data.directive'; -export * from './activity-object.directive'; +export * from './activity-preview.directive'; + diff --git a/src/public_api.ts b/src/public_api.ts index 0763b04..0ec0941 100644 --- a/src/public_api.ts +++ b/src/public_api.ts @@ -1,5 +1,4 @@ export { FsActivitiesComponent } from './app/components/activities/activities.component'; export { FsActivityObjectTypeComponent } from './app/components/activity-object-type/activity-object-type.component'; -export { FsActivityDataDirective } from './app/directives/activity-data.directive'; -export { FsActivityObjectDirective } from './app/directives/activity-object.directive'; +export { FsActivityPreviewDirective } from './app/directives/activity-preview.directive';