6cc02572创建于 2023年10月31日历史提交
// #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