@siberiaweb/components
Version:
83 lines (82 loc) • 2.24 kB
JavaScript
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");