use-button.ts 492 B

12345678910111213141516171819202122
  1. import type { SetupContext } from 'vue'
  2. import { computed } from 'vue'
  3. import { CLICK_EVENT } from '../constants'
  4. import type { ButtonEmits, ButtonProps } from './button'
  5. export function useButton(props: ButtonProps, emit: SetupContext<ButtonEmits>['emit']) {
  6. const disabled = computed(() => props.disabled || props.loading)
  7. function clickHandler(evt: MouseEvent) {
  8. if (disabled.value)
  9. return
  10. emit(CLICK_EVENT, evt)
  11. }
  12. return {
  13. disabled,
  14. clickHandler,
  15. }
  16. }