Notes/src/public/app/widgets/buttons/move_pane_button.js

52 lines
1.6 KiB
JavaScript
Raw Normal View History

2023-05-30 02:24:56 +08:00
import OnClickButtonWidget from "./onclick_button.js";
import appContext from "../../components/app_context.js";
export default class MovePaneButton extends OnClickButtonWidget {
2023-06-01 00:48:37 +08:00
constructor(isMovingLeft) {
super();
this.isMovingLeft = isMovingLeft;
this.icon(isMovingLeft ? "bx-chevron-left" : "bx-chevron-right")
.title(isMovingLeft ? "Move left" : "Move right")
.titlePlacement("bottom")
.onClick(async (widget, e) => {
e.stopPropagation();
widget.triggerCommand("moveThisNoteSplit", {ntxId: widget.getClosestNtxId(), isMovingLeft: this.isMovingLeft});
})
.class("icon-action");
}
2023-05-30 02:24:56 +08:00
isEnabled() {
2023-06-01 00:48:37 +08:00
if (!super.isEnabled()) {
2023-05-30 02:24:56 +08:00
return false;
2023-06-01 00:48:37 +08:00
}
2023-05-30 02:24:56 +08:00
if (this.isMovingLeft) {
// movable if the current context is not a main context, i.e. non-null mainNtxId
return !!this.noteContext?.mainNtxId;
} else {
const currentIndex = appContext.tabManager.noteContexts.findIndex(c => c.ntxId === this.ntxId);
const nextContext = appContext.tabManager.noteContexts[currentIndex + 1];
// movable if the next context is not null and not a main context, i.e. non-null mainNtxId
return !!nextContext?.mainNtxId;
}
}
2023-06-01 00:48:37 +08:00
async noteContextRemovedEvent() {
2023-05-30 02:24:56 +08:00
this.refresh();
}
2023-06-01 00:48:37 +08:00
async newNoteContextCreatedEvent() {
2023-05-30 02:24:56 +08:00
this.refresh();
}
2023-06-01 00:48:37 +08:00
async noteContextReorderEvent() {
2023-05-30 02:24:56 +08:00
this.refresh();
}
async contextsReopenedEvent() {
this.refresh();
}
2023-05-30 02:24:56 +08:00
}