0.2.0 • Published 1 year ago

event-modifier v0.2.0

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

Usage

Modifiers:

// Also a shortcut alias 'em'
import { eventModifier } from 'event-modifier'

function listener() {
  // do something
}

eventModifier()
  .stop()
  .prevent()
  .keys('Enter', 'Space')
  .apply(listener)

Create custom guards:

import { em, createGuard } from 'event-modifier'

createGuard('stopOthers', e => e.stopImmediatePropagation())

// for inferring type
declare module 'event-modifier' {
  interface CustomModifier {
    stopOthers: () => this
  }
}

// use
em().stopOthers()

Inspiration

<template>
  <div
    tabindex="0"
    @click="handle"
    @keydown.tab="handle"
    @keydown.enter.stop="handle"
    @keydown.space.stop.prevent="handle"
  ></div>
</template>

<script setup>
function handle() {
  // do something
}
</script>

Pretty good.

function handle() {
  // do something
}

function keyHandle(event: KeyboardEvent) {
  const key = event.code || event.key

  switch (key) {
    case 'Tab': return handle()
    case 'Enter':
      event.stopPropagation()
      return handle()
    case 'Space':
      event.stopPropagation()
      event.preventDefault()
      return handle()
  }
}

function render() {
  return (
    <div tabindex={'0'} onClick={handle} onKeydown={keyHandle}></div>
  )
}

Lots of template code, Sad.

License

All in MIT license.

0.2.0

1 year ago

0.1.0

1 year ago