UNPKG

tav-ui

Version:
1 lines 2.13 kB
{"version":3,"file":"autoFocus2.mjs","sources":["../../../../../../packages/directives/src/autoFocus.ts"],"sourcesContent":["import { nextTick } from 'vue'\nimport { isNullOrUnDef } from '@tav-ui/utils'\nimport type { App, ObjectDirective } from 'vue'\n// 根据el获取input\nconst getInput = (el: HTMLElement): HTMLInputElement | HTMLTextAreaElement | null =>\n el instanceof HTMLInputElement ? el : el.querySelector('input') || el.querySelector('textarea')\n\nconst AutoFocusDirective: ObjectDirective = {\n mounted: async (el: HTMLInputElement | HTMLTextAreaElement, { arg }) => {\n // 为了防止数据未及时更新。\n await nextTick()\n // 对于非文本框聚焦(使用了 contenteditable )的直接聚焦即可 加上兼容InputNumber值为0选中全部\n const relEle = arg ? el : getInput(el)\n if (!isNullOrUnDef(relEle)) {\n relEle.focus()\n const className = relEle.getAttribute('class')\n const value = relEle.value\n if (!Number.isNaN(value) && className && className.indexOf('number-input') > -1) {\n relEle?.setSelectionRange(0, 1000)\n }\n }\n },\n}\n\nexport function setupAutoFocusDirective(app: App) {\n app.directive('autoFocus', AutoFocusDirective)\n}\n\nexport default AutoFocusDirective\n"],"names":[],"mappings":";;;;AAEA,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,gBAAgB,GAAG,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACpH,MAAC,kBAAkB,GAAG;AAC3B,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK;AAClC,IAAI,MAAM,QAAQ,EAAE,CAAC;AACrB,IAAI,MAAM,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AAChC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;AACrB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACrD,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE;AACvF,QAAQ,MAAM,EAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1C,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE;AACK,SAAS,uBAAuB,CAAC,GAAG,EAAE;AAC7C,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;AACjD;;;;"}