import { html, css, LitElement } from 'lit';
import { customElement, property } from 'lit/decorators.js';
import { MenuTemplateModel } from '../models/menu/menu-template.model.js';
import { MenuTemplatesUtils } from '../utils/menu-templates.utils.js';
@customElement('drag-menu-items')
export class DragMenuItems extends LitElement {
private _menuItems: Array;
@property({ type: Array })
public set MenuItems(value: Array) {
/**
* Check if value actually changed
*/
if (this._menuItems === value) {
return;
}
// https://www.thisdot.co/blog/how-to-observe-property-changes-with-litelement-and-typescript
const oldValue = this._menuItems;
// console.log(`set MenuItems, oldValue: ${ this._menuItems }, newValue: ${ value }`);
this._menuItems = value;
/**
* Called when an element should be updated
*/
this.requestUpdate("MenuItems", oldValue);
// console.count('RENDER MENU ITEMS');
// console.log('VALUE', value);
MenuTemplatesUtils.Render(
this,
value
);
}
public get MenuItems(): Array {
return this._menuItems;
}
constructor() {
super();
}
updated(changedProperties: any): void {
// console.log(changedProperties); // logs previous values
// console.log(this.MenuItems); // logs current value
}
render() {
return html
`
`
}
/**
* Overrides the shadow DOM (turns it off) - one reason for this is to use
* global styles
*
* @returns this control
*/
public createRenderRoot(): DragMenuItems {
return this;
}
}