UNPKG

@siberiaweb/components

Version:
83 lines (82 loc) 2.24 kB
import CSS from "./CSS"; import WebComponent from "@siberiaweb/webcomponent/lib/WebComponent"; /** * Элемент позиции выпадающего списка. */ export default class ItemElement extends HTMLDivElement { /** * Конструктор. */ constructor() { super(); /** * Позиция. */ this._item = null; /** * Признак, что элемент впервые подключен подключен к DOM. */ this.firstConnected = false; this.content = this.createContent(); } /** * Создание содержания. */ createContent() { let content = document.createElement("span"); content.classList.add(CSS.ITEM_CONTENT); return content; } /** * Элемент подключен к DOM. */ connectedCallback() { if (!this.firstConnected) { this.firstConnected = true; this.classList.add(CSS.ITEM); this.appendChild(this.content); } } /** * Получение позиции. * * @throws Error Если для элемента позиции не указана позиция. */ get item() { if (this._item === null) { throw new Error("Для элемента позиции не указана позиция."); } return this._item; } /** * Установка позиции. * * @param value Значение. */ set item(value) { this._item = value; } /** * Получение содержания. */ getContent() { return this.content; } /** * Выбор позиции. */ select() { this.classList.add(CSS.SELECTED_ITEM); } /** * Отмена выбора позиции. */ unselect() { this.classList.remove(CSS.SELECTED_ITEM); } } /** * Наименование компонента. */ ItemElement.COMPONENT_NAME = "sw-dropdown-list-item"; WebComponent.define(ItemElement, "div");