UNPKG

@rxdi/ui-kit

Version:

UI Components for building graphql-server website

81 lines 3.02 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.AccordionComponent = void 0; const lit_html_1 = require("@rxdi/lit-html"); const style_1 = require("../accordion/style"); /** * @customElement rx-accordion */ let AccordionComponent = class AccordionComponent extends lit_html_1.LitElement { constructor() { super(...arguments); this.items = {}; } itemClicked(key) { this.items[key].collapsed = !this.items[key].collapsed; if (!this.multiple) { this.collapse(key); } this.items = Object.assign({}, this.items); this.dispatchEvent(new CustomEvent('itemClicked', { detail: this.items[key] })); } collapse(key = '') { Object.keys(this.items).forEach(i => { if (i !== key) { this.items[i].collapsed = false; } }); } }; __decorate([ (0, lit_html_1.property)({ type: Object }), __metadata("design:type", Object) ], AccordionComponent.prototype, "items", void 0); __decorate([ (0, lit_html_1.property)({ type: Boolean }), __metadata("design:type", Boolean) ], AccordionComponent.prototype, "multiple", void 0); AccordionComponent = __decorate([ (0, lit_html_1.Component)({ selector: 'rx-accordion', styles: [style_1.style], template() { return (0, lit_html_1.html) ` <div class="container"> ${Object.entries(this.items).map(([key, i]) => (0, lit_html_1.html) ` <div class="item"> <span @click=${() => this.itemClicked(key)} class=${(0, lit_html_1.classMap)({ pointer: true, userSelect: true, title: true, collapsed: i.collapsed })} >${i.title}</span > ${i.collapsed ? (0, lit_html_1.html) ` <span class="content"> ${i.content} </span> ` : ''} </div> `)} </div> `; } }) ], AccordionComponent); exports.AccordionComponent = AccordionComponent; //# sourceMappingURL=accordion.component.js.map