UNPKG

wired-elements

Version:

Collection of hand-drawn sketchy web components

110 lines (108 loc) 3.45 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import { WiredBase, BaseCSS } from './wired-base'; import { hachureEllipseFill } from './wired-lib'; import { css, html } from 'lit'; import { customElement, property, query } from 'lit/decorators.js'; let WiredFab = class WiredFab extends WiredBase { constructor() { super(...arguments); this.disabled = false; } static get styles() { return [ BaseCSS, css ` :host { display: inline-block; font-size: 14px; color: #fff; } button { position: relative; user-select: none; border: none; background: none; font-family: inherit; font-size: inherit; cursor: pointer; letter-spacing: 1.25px; text-transform: uppercase; text-align: center; padding: 16px; color: inherit; outline: none; border-radius: 50%; } button[disabled] { opacity: 0.6 !important; background: rgba(0, 0, 0, 0.07); cursor: default; pointer-events: none; } button::-moz-focus-inner { border: 0; } button ::slotted(*) { position: relative; font-size: var(--wired-icon-size, 24px); transition: transform 0.2s ease, opacity 0.2s ease; opacity: 0.85; } path { stroke: var(--wired-fab-bg-color, #018786); stroke-width: 3; fill: transparent; } button:focus ::slotted(*) { opacity: 1; } button:active ::slotted(*) { opacity: 1; transform: scale(1.15); } ` ]; } render() { return html ` <button ?disabled="${this.disabled}"> <div id="overlay"> <svg></svg> </div> <slot @slotchange="${this.wiredRender}"></slot> </button> `; } canvasSize() { if (this.button) { const size = this.button.getBoundingClientRect(); return [size.width, size.height]; } return this.lastSize; } draw(svg, size) { const min = Math.min(size[0], size[1]); const g = hachureEllipseFill(min / 2, min / 2, min, min, this.seed); svg.appendChild(g); } }; __decorate([ property({ type: Boolean, reflect: true }), __metadata("design:type", Object) ], WiredFab.prototype, "disabled", void 0); __decorate([ query('button'), __metadata("design:type", HTMLButtonElement) ], WiredFab.prototype, "button", void 0); WiredFab = __decorate([ customElement('wired-fab') ], WiredFab); export { WiredFab };