UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 2.28 kB
{"version":3,"file":"useKeyboard.mjs","sources":["../../src/radio/useKeyboard.ts"],"sourcesContent":["import { onBeforeMount, onMounted, Ref } from 'vue';\nimport { off, on } from '../utils/dom';\nimport isString from 'lodash/isString';\nimport { CHECKED_CODE_REG } from '../checkbox/hooks/useKeyboard';\n\n/** 键盘操作 */\nexport default function useKeyboard(\n radioGroupRef: Ref<HTMLElement>,\n setInnerValue: (value: any, context: { e: Event }) => void,\n) {\n const checkRadioInGroup = (e: KeyboardEvent) => {\n const isCheckedCode = CHECKED_CODE_REG.test(e.key) || CHECKED_CODE_REG.test(e.code);\n if (isCheckedCode) {\n e.preventDefault();\n const inputNode = (e.target as HTMLElement).querySelector('input');\n const data = inputNode.dataset;\n if (inputNode.checked && data.allowUncheck) {\n setInnerValue(undefined, { e });\n } else {\n // Number\n let value: number | string | boolean = !isNaN(Number(data.value)) ? Number(data.value) : data.value;\n // Boolean\n value = (isString(value) && { true: true, false: false }[value]) || value;\n // String\n value = isString(value) && value[0] === \"'\" ? value.replace(/'/g, '') : value;\n setInnerValue(value, { e });\n }\n }\n };\n\n onMounted(() => {\n on(radioGroupRef.value, 'keydown', checkRadioInGroup);\n });\n\n onBeforeMount(() => {\n off(radioGroupRef.value, 'keydown', checkRadioInGroup);\n });\n}\n"],"names":["e","value","onMounted","onBeforeMount"],"mappings":";;;;;;;;;;;;;;;;;;;;AAMA,SAAA,WAAA,CAAA,aAAA,EAAA,aAAA,EAAA;AAIQ,EAAA,IAAA,iBAAA,GAAA,SAAA,iBAAA,CAAA,CAAA,EAAA;AACE,IAAA,IAAA,aAAA,GAAA,gBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,gBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA;AACN,IAAA,IAAA,aAAA,EAAA;;;AAGE,MAAA,IAAA,IAAA,GAAA,SAAA,CAAA,OAAA,CAAA;AACI,MAAA,IAAA,SAAA,CAAA,OAAA,IAAA,IAAA,CAAA,YAAA,EAAA;;AACyBA,UAAAA,CAAAA,EAAAA,CAAAA;AAAE,SAAA,CAAA,CAAA;AAC/B,OAAA,MAAA;;AAIWC,QAAAA,KAAAA,GAAAA,UAAAA,CAAAA,KAAAA,CAAAA,IAAAA;AAAqB,UAAA,MAAA,EAAA,IAAA;;AAAyB,SAAA,CAAA,KAAA,CAAA,IAAA,KAAA,CAAA;;;AAGhCD,UAAAA,CAAAA,EAAAA,CAAAA;AAAE,SAAA,CAAA,CAAA;AAC3B,OAAA;AACF,KAAA;;AAGFE,EAAAA,SAAAA,CAAAA,YAAAA;;AAEA,GAAA,CAAA,CAAA;AAEAC,EAAAA,aAAAA,CAAAA,YAAAA;;AAEA,GAAA,CAAA,CAAA;AACF;;;;"}