UNPKG

gov-gui

Version:

Gov UI Component Library Typscript Build

238 lines (237 loc) 7.78 kB
import { h } from "@stencil/core"; import { icons } from "./icons"; // Import all icons import { getGlobalPropsClasses } from "../../global/global-styles-helper"; import { getAnimationClasses } from "../../global/animation-helpers"; export class GovIcon { constructor() { // @Prop() outlined: boolean = false; this.color = 'currentColor'; this.size = '24px'; this.animationDelay = '2s'; this.allClasses = ''; this.validVariants = ['primary', 'secondary', 'info', 'success', 'warning', 'danger', 'white']; } //watching for any change in animations to trigger them watchAnimations() { this.provideClass(); } watchAnimationsDelay() { this.provideClass(); } watchAnimationsSpeed() { this.provideClass(); } // inject the animations and styles on component load componentWillLoad() { const animationClasses = getAnimationClasses({ animation: this.animation, animationDelay: this.animationDelay, animationSpeed: this.animationSpeed, }); this.allClasses = getGlobalPropsClasses({ classes: ' ' + animationClasses, }); } //Called on change of any animation related property to trigger change provideClass() { const animationClasses = getAnimationClasses({ animation: this.animation, animationDelay: this.animationDelay, animationSpeed: this.animationSpeed, }); this.allClasses = getGlobalPropsClasses({ classes: ' ' + animationClasses, }); } getSizeValue() { switch (this.size) { case 'sm': return '16px'; case 'md': return '24px'; case 'lg': return '32px'; default: return this.size; } } render() { const iconSVG = icons[this.name]; if (!iconSVG) { console.error(`Icon "${this.name}" not found.`); return h("div", null, "Error: icon \"", this.name, "\" not found."); } const sizeValue = this.getSizeValue(); const variantClass = this.validVariants.includes(this.variant) ? 'icon-wrapper ' + this.variant : 'icon-wrapper'; return (h("div", { class: `${variantClass} ${this.allClasses}`, style: { width: sizeValue, height: sizeValue, color: this.color, }, innerHTML: iconSVG })); } static get is() { return "gov-icon"; } static get encapsulation() { return "shadow"; } static get originalStyleUrls() { return { "$": ["gov-icon.css"] }; } static get styleUrls() { return { "$": ["gov-icon.css"] }; } static get properties() { return { "name": { "type": "string", "mutable": false, "complexType": { "original": "string", "resolved": "string", "references": {} }, "required": false, "optional": false, "docs": { "tags": [], "text": "" }, "getter": false, "setter": false, "attribute": "name", "reflect": false }, "color": { "type": "string", "mutable": false, "complexType": { "original": "string", "resolved": "string", "references": {} }, "required": false, "optional": true, "docs": { "tags": [], "text": "" }, "getter": false, "setter": false, "attribute": "color", "reflect": false, "defaultValue": "'currentColor'" }, "size": { "type": "string", "mutable": false, "complexType": { "original": "string", "resolved": "string", "references": {} }, "required": false, "optional": false, "docs": { "tags": [], "text": "" }, "getter": false, "setter": false, "attribute": "size", "reflect": false, "defaultValue": "'24px'" }, "variant": { "type": "string", "mutable": false, "complexType": { "original": "string", "resolved": "string", "references": {} }, "required": false, "optional": false, "docs": { "tags": [], "text": "" }, "getter": false, "setter": false, "attribute": "variant", "reflect": false }, "animation": { "type": "string", "mutable": false, "complexType": { "original": "string", "resolved": "string", "references": {} }, "required": false, "optional": true, "docs": { "tags": [], "text": "" }, "getter": false, "setter": false, "attribute": "animation", "reflect": false }, "animationDelay": { "type": "string", "mutable": false, "complexType": { "original": "'2s' | '3s' | '4s' | '5s'", "resolved": "\"2s\" | \"3s\" | \"4s\" | \"5s\"", "references": {} }, "required": false, "optional": true, "docs": { "tags": [], "text": "" }, "getter": false, "setter": false, "attribute": "animation-delay", "reflect": false, "defaultValue": "'2s'" }, "animationSpeed": { "type": "string", "mutable": false, "complexType": { "original": "'slow' | 'slower' | 'fast' | 'faster'", "resolved": "\"fast\" | \"faster\" | \"slow\" | \"slower\"", "references": {} }, "required": false, "optional": true, "docs": { "tags": [], "text": "" }, "getter": false, "setter": false, "attribute": "animation-speed", "reflect": false } }; } static get watchers() { return [{ "propName": "animation", "methodName": "watchAnimations" }, { "propName": "animationDelay", "methodName": "watchAnimationsDelay" }, { "propName": "animationSpeed", "methodName": "watchAnimationsSpeed" }]; } } //# sourceMappingURL=gov-icon.js.map