import './frame-order-menu.js';
import '../../buttons/tool-icon-button.js';
import '../../../../../_common/components/toggle-switch.js';
import { WithDisposable } from '@blockeditor/lit';
import { css, html, LitElement } from 'lit';
import { customElement, property, query, state } from 'lit/decorators.js';
import { NavigatorSettingsIcon } from '../../../../../_common/icons/edgeless.js';
import type { EdgelessPageBlockComponent } from '../../../edgeless-page-block.js';
import { createButtonPopper } from '../../utils.js';
@customElement('edgeless-navigator-setting-button')
export class EdgelessNavigatorSettingButton extends WithDisposable(LitElement) {
static override styles = css`
.navigator-setting-menu {
display: none;
padding: 8px;
border-radius: 8px;
font-size: 12px;
font-weight: 500;
background-color: var(--affine-background-overlay-panel-color);
box-shadow: var(--affine-menu-shadow);
color: var(--affine-text-primary-color);
}
.navigator-setting-menu[data-show] {
display: initial;
}
.item-container {
padding: 0px 12px;
display: flex;
justify-content: space-between;
align-items: center;
height: 28px;
width: 204px;
}
.text {
padding: 0px 4px;
}
.title {
color: var(--affine-text-secondary-color);
}
`;
@state()
blackBackground = true;
@property({ attribute: false })
popperShow = false;
@property({ attribute: false })
setPopperShow: (show: boolean) => void = () => {};
@property({ attribute: false })
hideToolbar = false;
@property({ attribute: false })
onHideToolbarChange?: (hideToolbar: boolean) => void;
@property({ attribute: false })
edgeless!: EdgelessPageBlockComponent;
@query('.navigator-setting-button')
private _navigatorSettingButton!: HTMLElement;
@query('.navigator-setting-menu')
private _navigatorSettingMenu!: HTMLElement;
private _navigatorSettingPopper?: ReturnType<
typeof createButtonPopper
> | null = null;
private _tryRestoreSettings() {
const blackBackground = this.edgeless.service.editSession.getItem(
'presentBlackBackground'
);
this.blackBackground = blackBackground ? blackBackground : true;
}
private _onBlackBackgroundChange = (checked: boolean) => {
this.blackBackground = checked;
this.edgeless.slots.navigatorSettingUpdated.emit({
blackBackground: this.blackBackground,
});
};
override connectedCallback() {
super.connectedCallback();
this._tryRestoreSettings();
}
override firstUpdated() {
this._navigatorSettingPopper = createButtonPopper(
this._navigatorSettingButton,
this._navigatorSettingMenu,
({ display }) => this.setPopperShow(display === 'show')
);
}
override render() {
return html`