import './frame-order-menu.js'; import '../../buttons/tool-icon-button.js'; import { WithDisposable } from '@blockeditor/lit'; import { css, html, LitElement } from 'lit'; import { customElement, property, query, state } from 'lit/decorators.js'; import { FrameOrderAdjustmentIcon } from '../../../../../_common/icons/index.js'; import type { FrameBlockModel } from '../../../../../frame-block/index.js'; import type { EdgelessPageBlockComponent } from '../../../edgeless-page-block.js'; import { createButtonPopper } from '../../utils.js'; import type { EdgelessFrameOrderMenu } from './frame-order-menu.js'; @customElement('edgeless-frame-order-button') export class EdgelessFrameOrderButton extends WithDisposable(LitElement) { static override styles = css` edgeless-frame-order-menu { display: none; } edgeless-frame-order-menu[data-show] { display: initial; } `; @property({ attribute: false }) edgeless!: EdgelessPageBlockComponent; @property({ attribute: false }) frames!: FrameBlockModel[]; @query('.edgeless-frame-order-button') private _edgelessFrameOrderButton!: HTMLElement; @query('edgeless-frame-order-menu') private _edgelessFrameOrderMenu!: EdgelessFrameOrderMenu; private _edgelessFrameOrderPopper: ReturnType< typeof createButtonPopper > | null = null; @state() private _popperShow = false; override firstUpdated() { this._edgelessFrameOrderPopper = createButtonPopper( this._edgelessFrameOrderButton, this._edgelessFrameOrderMenu, ({ display }) => (this._popperShow = display === 'show') ); } protected override render() { const { readonly } = this.edgeless.page; return html` { if (readonly) return; this._edgelessFrameOrderPopper?.toggle(); }} > ${FrameOrderAdjustmentIcon} `; } }