Skip to content

Commit

Permalink
fix #143
Browse files Browse the repository at this point in the history
  • Loading branch information
Vanessa219 committed Feb 19, 2020
1 parent 7ec3a7d commit a431cd0
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 17 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
* [154](https://github.com/Vanessa219/vditor/issues/154) the cursor is disapeared after tab pressed at editor mode `修复缺陷`
* [153](https://github.com/Vanessa219/vditor/issues/153) Heading toolbar is not working `修复缺陷`
* [148](https://github.com/Vanessa219/vditor/issues/148) 任务列表退格删除问题 `修复缺陷`
* [143](https://github.com/Vanessa219/vditor/issues/143) [suggestion] ctrl+m `改进功能`
* [142](https://github.com/Vanessa219/vditor/issues/142) lists when indented at wysiwyg mode `修复缺陷`
* [141](https://github.com/Vanessa219/vditor/issues/141) toolbar 添加箭头,默认表情修改 `改进功能`
* [140](https://github.com/Vanessa219/vditor/issues/140) *** after shift+enter `修复缺陷`
Expand Down
46 changes: 29 additions & 17 deletions src/ts/wysiwyg/processKeydown.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,27 @@ import {isHeadingMD, isHrMD} from "./processMD";
import {setHeading} from "./setHeading";
import {setRangeByWbr} from "./setRangeByWbr";

const goPreviousCell = (cellElement: HTMLElement, range: Range, isSelected = true) => {
let previousElement = cellElement.previousElementSibling;
if (!previousElement) {
if (cellElement.parentElement.previousElementSibling) {
previousElement = cellElement.parentElement.previousElementSibling.lastElementChild;
} else if (cellElement.parentElement.parentElement.tagName === "TBODY" &&
cellElement.parentElement.parentElement.previousElementSibling) {
previousElement = cellElement.parentElement
.parentElement.previousElementSibling.lastElementChild.lastElementChild;
} else {
previousElement = null;
}
}
if (previousElement) {
range.selectNodeContents(previousElement);
if (!isSelected) {
range.collapse(false);
}
}
}

export const processKeydown = (vditor: IVditor, event: KeyboardEvent) => {
// 添加第一次记录 undo 的光标
if (!isCtrl(event) && event.key.indexOf("Arrow") === -1) {
Expand Down Expand Up @@ -107,28 +128,20 @@ export const processKeydown = (vditor: IVditor, event: KeyboardEvent) => {
// Backspace:光标移动到前一个 cell
if (!isCtrl(event) && !event.shiftKey && !event.altKey && event.key === "Backspace"
&& range.startOffset === 0 && range.toString() === "") {
let previousElement = cellElement.previousElementSibling;
if (!previousElement) {
if (cellElement.parentElement.previousElementSibling) {
previousElement = cellElement.parentElement.previousElementSibling.lastElementChild;
} else if (cellElement.parentElement.parentElement.tagName === "TBODY" &&
cellElement.parentElement.parentElement.previousElementSibling) {
previousElement = cellElement.parentElement
.parentElement.previousElementSibling.lastElementChild.lastElementChild;
} else {
previousElement = null;
}
}
if (previousElement) {
range.selectNodeContents(previousElement);
range.collapse(false);
}
goPreviousCell(cellElement, range, false)
event.preventDefault();
return true;
}

// tab:光标移向下一个 cell
if (event.key === "Tab") {
if (event.shiftKey) {
// shift + tab 光标移动到前一个 cell
goPreviousCell(cellElement, range)
event.preventDefault();
return true;
}

let nextElement = cellElement.nextElementSibling;
if (!nextElement) {
if (cellElement.parentElement.nextElementSibling) {
Expand All @@ -143,7 +156,6 @@ export const processKeydown = (vditor: IVditor, event: KeyboardEvent) => {
}
if (nextElement) {
range.selectNodeContents(nextElement);
range.collapse(true);
}
event.preventDefault();
return true;
Expand Down

0 comments on commit a431cd0

Please sign in to comment.