Commit a5977103361a96f4357736dd70ad20845216a769
1 parent
51ea07af
feat(element): 支持使用键盘快捷键删除元素; !#en: support delete element with keyboard
Showing
3 changed files
with
28 additions
and
3 deletions
front-end/h5/src/components/core/editor/canvas/edit.js
| ... | ... | @@ -235,6 +235,7 @@ export default { |
| 235 | 235 | } |
| 236 | 236 | return ( |
| 237 | 237 | <Shape |
| 238 | + onDelete={() => this.elementManager({ type: 'delete' }) } | |
| 238 | 239 | style={element.getStyle({ position: 'absolute' })} |
| 239 | 240 | defaultPosition={element.commonStyle} // {top, left} |
| 240 | 241 | element={element} | ... | ... |
front-end/h5/src/components/core/support/excel.js
| ... | ... | @@ -35,7 +35,7 @@ export default { |
| 35 | 35 | } |
| 36 | 36 | }, |
| 37 | 37 | watch: { |
| 38 | - value() { | |
| 38 | + value () { | |
| 39 | 39 | this.refreshSheet({ rows: this.innerItems }) |
| 40 | 40 | } |
| 41 | 41 | }, |
| ... | ... | @@ -53,7 +53,7 @@ export default { |
| 53 | 53 | this.sheet.loadData(data) |
| 54 | 54 | this.sheet.reRender() |
| 55 | 55 | }, |
| 56 | - initSheet() { | |
| 56 | + initSheet () { | |
| 57 | 57 | const ele = this.$refs.excel |
| 58 | 58 | return this.sheet || new Spreadsheet(ele, { |
| 59 | 59 | showToolbar: false, |
| ... | ... | @@ -86,5 +86,5 @@ export default { |
| 86 | 86 | mounted () { |
| 87 | 87 | this.sheet = this.initSheet() |
| 88 | 88 | this.refreshSheet({ rows: this.innerItems }) |
| 89 | - }, | |
| 89 | + } | |
| 90 | 90 | } | ... | ... |
front-end/h5/src/components/core/support/shape.js
| ... | ... | @@ -141,11 +141,35 @@ export default { |
| 141 | 141 | this.handleMousedownProp() |
| 142 | 142 | this.mousedownForElement(e, this.element) |
| 143 | 143 | } |
| 144 | + }, | |
| 145 | + /** | |
| 146 | + * !#en: delete element with keyboard | |
| 147 | + * !#zh: 键盘快捷键删除元素 | |
| 148 | + * | |
| 149 | + * TODO: 增加 确认删除 拦截操作 | |
| 150 | + */ | |
| 151 | + handleDeleteByKeyboard (e) { | |
| 152 | + const key = event.keyCode || event.charCode | |
| 153 | + if (key === 8 || key === 46) { | |
| 154 | + this.$emit('delete') | |
| 155 | + } | |
| 156 | + }, | |
| 157 | + /** | |
| 158 | + * detect key pressed on keyboard | |
| 159 | + * 检测键盘按键 按下行为 | |
| 160 | + * | |
| 161 | + * 支持如下行为: | |
| 162 | + * - Backspace/Delete 快速删除元素 | |
| 163 | + */ | |
| 164 | + handleKeyPressed (e) { | |
| 165 | + this.handleDeleteByKeyboard(e) | |
| 144 | 166 | } |
| 145 | 167 | }, |
| 146 | 168 | render (h) { |
| 147 | 169 | return ( |
| 148 | 170 | <div |
| 171 | + tabIndex="0" | |
| 172 | + onKeydown={this.handleKeyPressed} | |
| 149 | 173 | onClick={this.handleWrapperClick} |
| 150 | 174 | onMousedown={this.handleMousedown} |
| 151 | 175 | class={{ 'shape__wrapper-active': this.active }} | ... | ... |