Commit a5977103361a96f4357736dd70ad20845216a769

Authored by ly525
1 parent 51ea07af

feat(element): 支持使用键盘快捷键删除元素; !#en: support delete element with keyboard

front-end/h5/src/components/core/editor/canvas/edit.js
@@ -235,6 +235,7 @@ export default { @@ -235,6 +235,7 @@ export default {
235 } 235 }
236 return ( 236 return (
237 <Shape 237 <Shape
  238 + onDelete={() => this.elementManager({ type: 'delete' }) }
238 style={element.getStyle({ position: 'absolute' })} 239 style={element.getStyle({ position: 'absolute' })}
239 defaultPosition={element.commonStyle} // {top, left} 240 defaultPosition={element.commonStyle} // {top, left}
240 element={element} 241 element={element}
front-end/h5/src/components/core/support/excel.js
@@ -35,7 +35,7 @@ export default { @@ -35,7 +35,7 @@ export default {
35 } 35 }
36 }, 36 },
37 watch: { 37 watch: {
38 - value() { 38 + value () {
39 this.refreshSheet({ rows: this.innerItems }) 39 this.refreshSheet({ rows: this.innerItems })
40 } 40 }
41 }, 41 },
@@ -53,7 +53,7 @@ export default { @@ -53,7 +53,7 @@ export default {
53 this.sheet.loadData(data) 53 this.sheet.loadData(data)
54 this.sheet.reRender() 54 this.sheet.reRender()
55 }, 55 },
56 - initSheet() { 56 + initSheet () {
57 const ele = this.$refs.excel 57 const ele = this.$refs.excel
58 return this.sheet || new Spreadsheet(ele, { 58 return this.sheet || new Spreadsheet(ele, {
59 showToolbar: false, 59 showToolbar: false,
@@ -86,5 +86,5 @@ export default { @@ -86,5 +86,5 @@ export default {
86 mounted () { 86 mounted () {
87 this.sheet = this.initSheet() 87 this.sheet = this.initSheet()
88 this.refreshSheet({ rows: this.innerItems }) 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,11 +141,35 @@ export default {
141 this.handleMousedownProp() 141 this.handleMousedownProp()
142 this.mousedownForElement(e, this.element) 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 render (h) { 168 render (h) {
147 return ( 169 return (
148 <div 170 <div
  171 + tabIndex="0"
  172 + onKeydown={this.handleKeyPressed}
149 onClick={this.handleWrapperClick} 173 onClick={this.handleWrapperClick}
150 onMousedown={this.handleMousedown} 174 onMousedown={this.handleMousedown}
151 class={{ 'shape__wrapper-active': this.active }} 175 class={{ 'shape__wrapper-active': this.active }}