All files / src/components/tools Tool.ts

66.67% Statements 6/9
100% Branches 0/0
33.33% Functions 1/3
75% Lines 6/8

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 40 411x   1x 1x 1x     1x                 7x                                                
import CustomElement from "../../custom-element/CustomElement";
import { CustomElementPropertyMetadata } from "../../custom-element/interfaces";
import KindMixin from "../../custom-element/mixins/components/kind/KindMixin";
import SizableMixin from "../../custom-element/mixins/components/sizable/SizableMixin";
import html  from "../../renderer/html";
import { NodePatchingData } from "../../renderer/NodePatcher";
 
export default abstract class Tool extends
    SizableMixin(
        KindMixin(
            CustomElement
        )
    ) {
 
    static get properties(): Record<string, CustomElementPropertyMetadata> {
 
        return {
 
            /**
             * What action to execute when the tool has been closed
             */
            iconName: {
                type: [String, Function],
                required: true
            }
        };
    }
 
    render(): NodePatchingData {
 
        const {
            kind,
            size,
            iconName,
        } = this;
 
        return html`<gcl-button kind=${kind} size=${size} variant="text" click=${evt => this.click(evt)}>
            <gcl-icon name=${iconName}></gcl-icon>
        </gcl-button>`;
    }
}