All files / app/features/article/components/article-sidebar-actions article-sidebar-actions.component.ts

100% Statements 22/22
90% Branches 9/10
100% Functions 3/3
100% Lines 21/21

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 373x 3x 3x   3x 3x 3x               3x 27x 27x 27x 27x 27x 27x   27x 26x 26x 26x 26x 26x     27x     1x      
import { ModerationSidebarActionComponent } from '../../../../shared/components/moderation-sidebar-action/moderation-sidebar-action.component';
import { SidebarActionComponent } from '../../../../shared/components/sidebar-action/sidebar-action.component';
import { TopicsSidebarActionComponent } from '../../../../shared/components/topics-sidebar-action/topics-sidebar-action.component';
import { VersionForModeration } from '../../../../shared/models/version-for-moderation.model';
import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';
import { NotificationService } from '@drevo-web/core';
import { ApprovalStatus, ModerationResult, SidebarActionPriority } from '@drevo-web/shared';
 
@Component({
    selector: 'app-article-sidebar-actions',
    imports: [SidebarActionComponent, ModerationSidebarActionComponent, TopicsSidebarActionComponent],
    templateUrl: './article-sidebar-actions.component.html',
    changeDetection: ChangeDetectionStrategy.OnPush,
})
export class ArticleSidebarActionsComponent {
    readonly version = input<VersionForModeration>();
    readonly editUrl = input<string>();
    readonly articleId = input<number>();
    readonly topics = input<ReadonlyArray<number>>();
    readonly moderated = output<ModerationResult>();
    readonly topicsChanged = output<ReadonlyArray<number>>();
 
    readonly moderationPriority = computed<SidebarActionPriority>(() => {
        const topics = this.topics();
        const version = this.version();
        const hasTopics = !!topics && topics.length > 0;
        const isPending = version?.approved === ApprovalStatus.Pending;
        return hasTopics && isPending ? 'primary' : 'secondary';
    });
 
    private readonly notification = inject(NotificationService);
 
    openTableOfContents(): void {
        this.notification.info('Функция еще не реализована');
    }
}