/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ import { html, ifDefined, when, } from "chrome://global/content/vendor/lit.all.mjs"; import { MozLitElement } from "chrome://global/content/lit-utils.mjs"; /** * Cards contain content and actions about a single subject. * There are two card types: * The default type where no type attribute is required and the card * will have no extra functionality. * * The "accordion" type will initially not show any content. The card * will contain an arrow to expand the card so that all of the content * is visible. You can use the "expanded" attribute to force the accordion * card to show its content on initial render. * * * @property {string} heading - The heading text that will be used for the card. * @property {string} icon - (optional) A flag to indicate the header should include an icon * @property {string} type - (optional) The type of card. No type specified * will be the default card. The other available type is "accordion" * @property {boolean} expanded - A flag to indicate whether the card is * expanded or not. Can be used to expand the content section of the * accordion card on initial render. * @slot content - The content to show inside of the card. */ export default class MozCard extends MozLitElement { static queries = { detailsEl: "#moz-card-details", headingEl: "#heading", contentEl: "#content", summaryEl: "summary", contentSlotEl: "#content-slot", }; static properties = { heading: { type: String, fluent: true }, icon: { type: Boolean }, type: { type: String, reflect: true }, expanded: { type: Boolean }, }; constructor() { super(); this.type = "default"; this.expanded = false; } headingTemplate() { if (!this.heading) { return ""; } return html`