All files / app/codeCharta/state/effects/nodeContextMenu/focusButtons focusButtons.component.ts

83.33% Statements 15/18
100% Branches 0/0
40% Functions 2/5
81.25% Lines 13/16

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 37 38 39 404x 4x 4x     4x 4x 4x 4x 4x 4x                 4x     5x 5x   5x                            
import { Component, Input } from "@angular/core"
import { Store } from "@ngrx/store"
import { map } from "rxjs"
 
import { CodeMapNode, CcState } from "../../../../codeCharta.model"
import { currentFocusedNodePathSelector } from "../../../store/dynamicSettings/focusedNodePath/currentFocused.selector"
import { focusNode, unfocusAllNodes, unfocusNode } from "../../../store/dynamicSettings/focusedNodePath/focusedNodePath.actions"
import { focusedNodePathSelector } from "../../../store/dynamicSettings/focusedNodePath/focusedNodePath.selector"
import { MatButton } from "@angular/material/button"
import { AsyncPipe } from "@angular/common"
import { IsNodeFocusedPipe } from "./isNodeFocused.pipe"
 
@Component({
    selector: "cc-focus-buttons",
    templateUrl: "./focusButtons.component.html",
    styleUrls: ["../nodeContextMenuButton.component.scss"],
    standalone: true,
    imports: [MatButton, AsyncPipe, IsNodeFocusedPipe]
})
export class FocusButtonsComponent {
    @Input() codeMapNode: Pick<CodeMapNode, "path">
 
    currentFocusedNodePath$ = this.store.select(currentFocusedNodePathSelector)
    hasPreviousFocusedNodePath$ = this.store.select(focusedNodePathSelector).pipe(map(focusedNodePaths => focusedNodePaths.length > 1))
 
    constructor(private store: Store<CcState>) {}
 
    handleFocusNodeClicked() {
        this.store.dispatch(focusNode({ value: this.codeMapNode.path }))
    }
 
    handleUnfocusNodeClicked() {
        this.store.dispatch(unfocusNode())
    }
 
    handleUnfocusAllNodesClicked() {
        this.store.dispatch(unfocusAllNodes())
    }
}