2021-03-20 19:44:43 +01:00
|
|
|
import Container from "./container.js";
|
|
|
|
|
|
|
|
export default class ScrollingContainer extends Container {
|
|
|
|
constructor() {
|
|
|
|
super();
|
|
|
|
|
2022-09-19 23:15:54 +02:00
|
|
|
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');
|
2021-03-20 19:44:43 +01:00
|
|
|
}
|
|
|
|
|
2021-06-24 23:50:56 +02:00
|
|
|
setNoteContextEvent({noteContext}) {
|
|
|
|
/** @var {NoteContext} */
|
|
|
|
this.noteContext = noteContext;
|
|
|
|
}
|
|
|
|
|
2021-05-22 12:35:41 +02:00
|
|
|
async noteSwitchedEvent({noteContext, notePath}) {
|
2021-06-24 23:50:56 +02:00
|
|
|
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
|
2021-06-24 23:50:56 +02:00
|
|
|
promise.then(() => setTimeout(() => this.$widget.scrollTop(scrollTop), 500));
|
2021-06-26 17:08:50 +02:00
|
|
|
|
|
|
|
return promise;
|
2021-06-24 23:50:56 +02:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
return super.handleEventInChildren(name, data);
|
2021-03-20 19:44:43 +01:00
|
|
|
}
|
|
|
|
}
|
2022-05-26 16:29:54 +02:00
|
|
|
|
|
|
|
scrollContainerToCommand({position}) {
|
|
|
|
this.$widget.scrollTop(position);
|
|
|
|
}
|
2021-03-20 19:44:43 +01:00
|
|
|
}
|