feat: refresh string value keep scrolltop

This commit is contained in:
raojinlin 2024-02-22 17:53:01 +08:00
parent cb9a9ebb8a
commit 62c0079a8d
1 changed files with 18 additions and 2 deletions

View File

@ -24,7 +24,9 @@ const props = defineProps({
}, },
}) })
const emit = defineEmits(['reset', 'input', 'save']) const emit = defineEmits(['reset', 'input', 'save', 'scroll'])
const scrollTop = ref(0)
const themeVars = useThemeVars() const themeVars = useThemeVars()
/** @type {HTMLElement|null} */ /** @type {HTMLElement|null} */
@ -71,6 +73,7 @@ onMounted(async () => {
scrollbar: { scrollbar: {
useShadows: false, useShadows: false,
verticalScrollbarSize: '10px', verticalScrollbarSize: '10px',
alwaysConsumeMouseWheel: true,
}, },
// formatOnType: true, // formatOnType: true,
contextmenu: false, contextmenu: false,
@ -86,6 +89,13 @@ onMounted(async () => {
// add shortcut for save // add shortcut for save
editorNode.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, (event) => { editorNode.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, (event) => {
emit('save') emit('save')
});
editorNode.onDidScrollChange((event) => {
//
if (!event.scrollHeightChanged) {
scrollTop.value = event.scrollTop;
}
}) })
// editorNode.onDidChangeModelLanguageConfiguration(() => { // editorNode.onDidChangeModelLanguageConfiguration(() => {
@ -104,7 +114,13 @@ watch(
() => props.content, () => props.content,
async (content) => { async (content) => {
if (editorNode != null) { if (editorNode != null) {
editorNode.setValue(content) editorNode.setValue(content)
editorNode.onDidLayoutChange(() => {
if (scrollTop.value > 0) {
console.log(scrollTop.value);
editorNode.setScrollTop(scrollTop.value);
}
})
await nextTick(() => emit('reset', content)) await nextTick(() => emit('reset', content))
} }
}, },