UNPKG

mdui

Version:

实现 material you 设计规范的 Web Components 组件库

45 lines (44 loc) 1.5 kB
import { __decorate } from "tslib"; import { property } from 'lit/decorators.js'; import { isNodeName } from '@mdui/jq/shared/helper.js'; import { MduiElement } from '@mdui/shared/base/mdui-element.js'; import { watch } from '@mdui/shared/decorators/watch.js'; import { getLayout } from './helper.js'; export class LayoutItemBase extends MduiElement { constructor() { super(...arguments); // 父元素是否是 `mdui-layout` this.isParentLayout = false; } /** * 当前布局组件所处的位置,父类必须实现该 getter */ get layoutPlacement() { throw new Error('Must implement placement getter!'); } // order 变更时,需要重新调整布局 onOrderChange() { this.layoutManager?.updateOrder(); } connectedCallback() { super.connectedCallback(); const parentElement = this.parentElement; this.isParentLayout = isNodeName(parentElement, 'mdui-layout'); if (this.isParentLayout) { this.layoutManager = getLayout(parentElement); this.layoutManager.registerItem(this); } } disconnectedCallback() { super.disconnectedCallback(); if (this.layoutManager) { this.layoutManager.unregisterItem(this); } } } __decorate([ property({ type: Number, reflect: true }) ], LayoutItemBase.prototype, "order", void 0); __decorate([ watch('order', true) ], LayoutItemBase.prototype, "onOrderChange", null);