Notes/src/public/app/widgets/containers/right_pane_container.ts

61 lines
1.8 KiB
TypeScript
Raw Normal View History

import FlexContainer from "./flex_container.js";
import splitService from "../../services/resizer.js";
import RightPanelWidget from "../right_panel_widget.js";
export default class RightPaneContainer extends FlexContainer<RightPanelWidget> {
private rightPaneHidden: boolean;
constructor() {
super('column');
this.id('right-pane');
this.css('height', '100%');
2021-06-13 22:55:31 +02:00
this.collapsible();
this.rightPaneHidden = false;
}
isEnabled() {
2022-05-30 17:45:59 +02:00
return super.isEnabled()
&& !this.rightPaneHidden
2022-05-30 17:45:59 +02:00
&& this.children.length > 0
&& !!this.children.find(ch => ch.isEnabled() && ch.canBeShown());
}
handleEventInChildren(name: string, data: unknown) {
const promise = super.handleEventInChildren(name, data);
if (['activeContextChanged', 'noteSwitchedAndActivated', 'noteSwitched'].includes(name)) {
2023-06-30 11:18:34 +02:00
// the right pane is displayed only if some child widget is active,
// we'll reevaluate the visibility based on events which are probable to cause visibility change
2023-06-30 11:18:34 +02:00
// but these events need to be finished and only then we check
2022-06-23 23:03:35 +02:00
if (promise) {
promise.then(() => this.reEvaluateRightPaneVisibilityCommand());
2022-06-23 23:03:35 +02:00
}
else {
this.reEvaluateRightPaneVisibilityCommand();
2022-06-23 23:03:35 +02:00
}
}
return promise;
}
2022-05-30 17:45:59 +02:00
reEvaluateRightPaneVisibilityCommand() {
2022-05-30 17:45:59 +02:00
const oldToggle = !this.isHiddenInt();
const newToggle = this.isEnabled();
if (oldToggle !== newToggle) {
this.toggleInt(newToggle);
splitService.setupRightPaneResizer();
}
}
toggleRightPaneEvent() {
this.rightPaneHidden = !this.rightPaneHidden;
this.reEvaluateRightPaneVisibilityCommand();
}
}