mirror of
https://github.com/zadam/trilium.git
synced 2025-11-08 06:15:48 +01:00
51 lines
1.5 KiB
JavaScript
51 lines
1.5 KiB
JavaScript
import Container from "./container.js";
|
|
|
|
export default class ScrollingContainer extends Container {
|
|
constructor() {
|
|
super();
|
|
|
|
this.class("scrolling-container");
|
|
this.css("overflow", "auto");
|
|
this.css("scroll-behavior", "smooth");
|
|
this.css("position", "relative");
|
|
}
|
|
|
|
setNoteContextEvent({ noteContext }) {
|
|
/** @var {NoteContext} */
|
|
this.noteContext = noteContext;
|
|
}
|
|
|
|
async noteSwitchedEvent({ noteContext, notePath }) {
|
|
this.$widget.scrollTop(0);
|
|
}
|
|
|
|
async noteSwitchedAndActivatedEvent({ noteContext, notePath }) {
|
|
this.noteContext = noteContext;
|
|
|
|
this.$widget.scrollTop(0);
|
|
}
|
|
|
|
async activeContextChangedEvent({ noteContext }) {
|
|
this.noteContext = noteContext;
|
|
}
|
|
|
|
handleEventInChildren(name, data) {
|
|
if (name === "readOnlyTemporarilyDisabled" && this.noteContext && this.noteContext.ntxId === data.noteContext.ntxId) {
|
|
const scrollTop = this.$widget.scrollTop();
|
|
|
|
const promise = super.handleEventInChildren(name, data);
|
|
|
|
// there seems to be some asynchronicity, and we need to wait a bit before scrolling
|
|
promise.then(() => setTimeout(() => this.$widget.scrollTop(scrollTop), 500));
|
|
|
|
return promise;
|
|
} else {
|
|
return super.handleEventInChildren(name, data);
|
|
}
|
|
}
|
|
|
|
scrollContainerToCommand({ position }) {
|
|
this.$widget.scrollTop(position);
|
|
}
|
|
}
|