Notes/src/public/app/widgets/containers/scrolling_container.js

54 lines
1.4 KiB
JavaScript
Raw Normal View History

import Container from "./container.js";
export default class ScrollingContainer extends Container {
constructor() {
super();
this.class("scrolling-container");
2021-06-13 22:55:31 +02:00
this.css('overflow', 'auto');
2022-05-26 16:29:54 +02:00
this.css('position', 'relative');
}
setNoteContextEvent({noteContext}) {
/** @var {NoteContext} */
this.noteContext = noteContext;
}
2021-05-22 12:35:41 +02:00
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);
2022-05-26 16:29:54 +02:00
// there seems to be some asynchronicity, and we need to wait a bit before scrolling
promise.then(() => setTimeout(() => this.$widget.scrollTop(scrollTop), 500));
2021-06-26 17:08:50 +02:00
return promise;
}
else {
return super.handleEventInChildren(name, data);
}
}
2022-05-26 16:29:54 +02:00
scrollContainerToCommand({position}) {
this.$widget.scrollTop(position);
}
}