UNPKG

@rxdi/ui-kit

Version:

UI Components for building graphql-server website

158 lines (157 loc) 5.23 kB
"use strict"; 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); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ButtonComponent = void 0; const lit_html_1 = require("@rxdi/lit-html"); const settings_1 = require("../settings"); /** * @customElement rx-button */ let ButtonComponent = class ButtonComponent extends lit_html_1.LitElement { constructor() { super(...arguments); this.palette = 'default'; } OnUpdateFirst() { if (this.type === 'submit') { const form = this.getFormElement(); if (form) { const input = document.createElement('input'); input.style.display = 'none'; input.type = this.type; form.append(input); this.addEventListener('click', () => input.click()); } } } getFormElement() { const defaultKey = 'parentElement'; let selector = ''; let form; for (const k of Array(100).fill(defaultKey)) { const formElement = this.findForm(selector); if (formElement) { form = formElement; break; } selector += `.${k}`; } return form; } get(obj = {}, path = '') { return path .replace(/\[(.+?)\]/g, '.$1') .split('.') .reduce((o, key) => (!o[key] ? o : o[key]), obj); } findForm(selector) { let form; if (!selector) { form = this.parentElement; } else { form = this.get(this.parentElement, selector); } if (form && form.tagName !== 'FORM') { return null; } return form; } }; __decorate([ (0, lit_html_1.property)({ type: String }), __metadata("design:type", String) ], ButtonComponent.prototype, "palette", void 0); __decorate([ (0, lit_html_1.property)({ type: Boolean }), __metadata("design:type", Boolean) ], ButtonComponent.prototype, "disabled", void 0); __decorate([ (0, lit_html_1.property)({ type: String }), __metadata("design:type", String) ], ButtonComponent.prototype, "type", void 0); __decorate([ (0, lit_html_1.property)({ type: Boolean }), __metadata("design:type", Boolean) ], ButtonComponent.prototype, "shadow", void 0); ButtonComponent = __decorate([ (0, lit_html_1.Component)({ selector: 'rx-button', template() { return (0, lit_html_1.html) ` <style> :host { margin: 0; border: none; overflow: visible; font: inherit; color: var(--${this.palette}-color); background: var(--${this.palette}-bg-color); border: var(--${this.palette}-border); color: #222; cursor: pointer; color: inherit; text-transform: none; -webkit-appearance: none; border-radius: 0; display: inline-block; box-sizing: border-box; padding: 0 30px; vertical-align: middle; font-size: 14px; line-height: 38px; text-align: center; text-decoration: none; text-transform: uppercase; transition: 0.1s ease-in-out; transition-property: color, background-color, border-color; user-select: none; -webkit-user-select: none; -moz-user-select: none; } slot { user-select: none; color: var(--${this.palette}-color); } </style> ${this.disabled ? (0, lit_html_1.html) ` <style> :host { background: #929a9c; } </style> ` : (0, lit_html_1.html) ` <style> :host(:hover) { background-color: var(--${this.palette}-hover-color); } :host(:active) { background-color: var(--${this.palette}-active-color); } </style> `} ${this.shadow ? (0, lit_html_1.html) `<style> :host { box-shadow: rgba(0, 0, 0, 0.08) 0px 1px 3px, rgba(0, 0, 0, 0.14) 0px 1px 2px; } </style>` : ''} <slot part="text"></slot> `; }, }) ], ButtonComponent); exports.ButtonComponent = ButtonComponent; //# sourceMappingURL=button.component.js.map