/* 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 } from "../vendor/lit.all.mjs"; import { MozLitElement } from "../lit-utils.mjs"; /** * @tagname moz-input-color * @property {string} [value] - A CSS hex value of the initial color shown in the swatch area. * @property {string} [name] - Any name that will be associated with the component's nested `input` element. Useful when used in `form`s. * @property {string} label - The text of the label. */ export default class MozInputColor extends MozLitElement { static properties = { value: { type: String }, name: { type: String }, label: { type: String, fluent: true }, }; static queries = { inputEl: ".swatch", }; static shadowRootOptions = { ...MozLitElement.shadowRootOptions, delegatesFocus: true, }; constructor() { super(); this.name = ""; this.label = ""; this.value = ""; } /** * @param {Event} e */ updateInputFromEvent(e) { /** * @type {HTMLInputElement} */ const input = /** @type {object} */ (e.target); this.value = input.value; } /** * Dispatches an event from the host element so that outside * listeners can react to these events * * @param {Event} e * @memberof MozBaseInputElement */ redispatchEvent(e) { this.updateInputFromEvent(e); let { bubbles, cancelable, composed, type } = e; let newEvent = new Event(type, { bubbles, cancelable, composed, }); this.dispatchEvent(newEvent); } render() { return html` `; } } customElements.define("moz-input-color", MozInputColor);