| | |
| | | // #ifdef H5 |
| | | export default { |
| | | name: 'Keypress', |
| | | props: { |
| | | disable: { |
| | | type: Boolean, |
| | | default: false |
| | | } |
| | | }, |
| | | mounted () { |
| | | const keyNames = { |
| | | esc: ['Esc', 'Escape'], |
| | | tab: 'Tab', |
| | | enter: 'Enter', |
| | | space: [' ', 'Spacebar'], |
| | | up: ['Up', 'ArrowUp'], |
| | | left: ['Left', 'ArrowLeft'], |
| | | right: ['Right', 'ArrowRight'], |
| | | down: ['Down', 'ArrowDown'], |
| | | delete: ['Backspace', 'Delete', 'Del'] |
| | | } |
| | | const listener = ($event) => { |
| | | if (this.disable) { |
| | | return |
| | | } |
| | | const keyName = Object.keys(keyNames).find(key => { |
| | | const keyName = $event.key |
| | | const value = keyNames[key] |
| | | return value === keyName || (Array.isArray(value) && value.includes(keyName)) |
| | | }) |
| | | if (keyName) { |
| | | // 避免和其他按键事件冲突 |
| | | setTimeout(() => { |
| | | this.$emit(keyName, {}) |
| | | }, 0) |
| | | } |
| | | } |
| | | document.addEventListener('keyup', listener) |
| | | this.$once('hook:beforeDestroy', () => { |
| | | document.removeEventListener('keyup', listener) |
| | | }) |
| | | }, |
| | | render: () => {} |
| | | } |
| | | // #endif |
| | | // #ifdef H5
|
| | | export default {
|
| | | name: 'Keypress',
|
| | | props: {
|
| | | disable: {
|
| | | type: Boolean,
|
| | | default: false
|
| | | }
|
| | | },
|
| | | mounted () {
|
| | | const keyNames = {
|
| | | esc: ['Esc', 'Escape'],
|
| | | tab: 'Tab',
|
| | | enter: 'Enter',
|
| | | space: [' ', 'Spacebar'],
|
| | | up: ['Up', 'ArrowUp'],
|
| | | left: ['Left', 'ArrowLeft'],
|
| | | right: ['Right', 'ArrowRight'],
|
| | | down: ['Down', 'ArrowDown'],
|
| | | delete: ['Backspace', 'Delete', 'Del']
|
| | | }
|
| | | const listener = ($event) => {
|
| | | if (this.disable) {
|
| | | return
|
| | | }
|
| | | const keyName = Object.keys(keyNames).find(key => {
|
| | | const keyName = $event.key
|
| | | const value = keyNames[key]
|
| | | return value === keyName || (Array.isArray(value) && value.includes(keyName))
|
| | | })
|
| | | if (keyName) {
|
| | | // 避免和其他按键事件冲突
|
| | | setTimeout(() => {
|
| | | this.$emit(keyName, {})
|
| | | }, 0)
|
| | | }
|
| | | }
|
| | | document.addEventListener('keyup', listener)
|
| | | this.$once('hook:beforeDestroy', () => {
|
| | | document.removeEventListener('keyup', listener)
|
| | | })
|
| | | },
|
| | | render: () => {}
|
| | | }
|
| | | // #endif
|