tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 3.22 kB
Source Map (JSON)
{"version":3,"file":"useKeyboard.mjs","sources":["../../../../components/radio/hooks/useKeyboard.ts"],"sourcesContent":["import { onBeforeMount, onMounted, Ref } from 'vue';\nimport { isString } from 'lodash-es';\nimport { off, on } from '@tdesign/shared-utils';\nimport { CHECKED_CODE_REG } from '@tdesign/common-js/common';\n\n/** 键盘操作 */\nexport function useKeyboard(\n radioGroupRef: Ref<HTMLElement>,\n setInnerValue: (value: any, context: { e: Event }) => void,\n) {\n const checkRadioInGroup = (e: KeyboardEvent) => {\n const inputNode = (e.target as HTMLElement).querySelector('input');\n if (!inputNode) return;\n\n const isCheckedCode = CHECKED_CODE_REG.test(e.key) || CHECKED_CODE_REG.test(e.code);\n if (isCheckedCode) {\n e.preventDefault();\n\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":["useKeyboard","radioGroupRef","setInnerValue","checkRadioInGroup","e","inputNode","target","querySelector","isCheckedCode","CHECKED_CODE_REG","test","key","code","preventDefault","data","dataset","checked","allowUncheck","value","isNaN","Number","isString","replace","onMounted","on","onBeforeMount","off"],"mappings":";;;;;;;;;;;;AAMgB,SAAAA,WAAAA,CACdC,eACAC,aACA,EAAA;AACM,EAAA,IAAAC,iBAAA,GAAoB,SAApBA,iBAAAA,CAAqBC,CAAqB,EAAA;IAC9C,IAAMC,SAAa,GAAAD,CAAA,CAAEE,MAAuB,CAAAC,aAAA,CAAc,OAAO,CAAA,CAAA;IACjE,IAAI,CAACF,SAAA,EAAW,OAAA;AAEV,IAAA,IAAAG,aAAA,GAAgBC,iBAAiBC,IAAK,CAAAN,CAAA,CAAEO,GAAG,CAAK,IAAAF,gBAAA,CAAiBC,IAAK,CAAAN,CAAA,CAAEQ,IAAI,CAAA,CAAA;AAClF,IAAA,IAAIJ,aAAe,EAAA;MACjBJ,CAAA,CAAES,cAAe,EAAA,CAAA;AAEjB,MAAA,IAAMC,OAAOT,SAAU,CAAAU,OAAA,CAAA;AACnB,MAAA,IAAAV,SAAA,CAAUW,OAAW,IAAAF,IAAA,CAAKG,YAAc,EAAA;QAC5Bf,aAAA,CAAA,KAAA,CAAA,EAAW;AAAEE,UAAAA,CAAA,EAAAA,CAAAA;AAAE,SAAC,CAAA,CAAA;AAChC,OAAO,MAAA;QAEL,IAAIc,KAAmC,GAAA,CAACC,KAAM,CAAAC,MAAA,CAAON,IAAK,CAAAI,KAAK,CAAC,CAAA,GAAIE,MAAO,CAAAN,IAAA,CAAKI,KAAK,CAAA,GAAIJ,IAAK,CAAAI,KAAA,CAAA;AAErFA,QAAAA,KAAA,GAAAG,QAAA,CAASH,KAAK,CAAK,IAAA;AAAE,UAAA,MAAA,EAAM,IAAM;UAAA,OAAO,EAAA,KAAA;AAAM,SAAA,CAAEA,KAAW,CAAA,IAAAA,KAAA,CAAA;QAE5DA,KAAA,GAAAG,QAAA,CAASH,KAAK,CAAA,IAAKA,KAAM,CAAA,CAAA,CAAA,KAAO,MAAMA,KAAM,CAAAI,OAAA,CAAQ,IAAM,EAAA,EAAE,CAAI,GAAAJ,KAAA,CAAA;QAC1DhB,aAAA,CAAAgB,KAAA,EAAO;AAAEd,UAAAA,CAAA,EAAAA,CAAAA;AAAE,SAAC,CAAA,CAAA;AAC5B,OAAA;AACF,KAAA;GACF,CAAA;AAEAmB,EAAAA,SAAA,CAAU,YAAM;IACXC,EAAA,CAAAvB,aAAA,CAAciB,KAAO,EAAA,SAAA,EAAWf,iBAAiB,CAAA,CAAA;AACtD,GAAC,CAAA,CAAA;AAEDsB,EAAAA,aAAA,CAAc,YAAM;IACdC,GAAA,CAAAzB,aAAA,CAAciB,KAAO,EAAA,SAAA,EAAWf,iBAAiB,CAAA,CAAA;AACvD,GAAC,CAAA,CAAA;AACH;;;;"}