UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 2.6 kB
{"version":3,"file":"utils.mjs","names":[],"sources":["../../../../../../packages/components/roving-focus-group/src/utils.ts"],"sourcesContent":["import { EVENT_CODE } from '@element-plus/constants'\nimport { getEventCode } from '@element-plus/utils'\n\nimport type { HTMLAttributes } from 'vue'\n\ntype Orientation = HTMLAttributes['aria-orientation']\ntype Direction = 'ltr' | 'rtl'\ntype FocusIntent = 'first' | 'last' | 'prev' | 'next'\n\nconst MAP_KEY_TO_FOCUS_INTENT: Record<string, FocusIntent> = {\n ArrowLeft: 'prev',\n ArrowUp: 'prev',\n ArrowRight: 'next',\n ArrowDown: 'next',\n PageUp: 'first',\n Home: 'first',\n PageDown: 'last',\n End: 'last',\n}\n\nconst getDirectionAwareKey = (key: string, dir?: Direction) => {\n if (dir !== 'rtl') return key\n\n switch (key) {\n case EVENT_CODE.right:\n return EVENT_CODE.left\n case EVENT_CODE.left:\n return EVENT_CODE.right\n default:\n return key\n }\n}\n\nexport const getFocusIntent = (\n event: KeyboardEvent,\n orientation?: Orientation,\n dir?: Direction\n) => {\n const code = getEventCode(event)\n const key = getDirectionAwareKey(code, dir)\n if (\n orientation === 'vertical' &&\n [EVENT_CODE.left, EVENT_CODE.right].includes(key)\n )\n return undefined\n if (\n orientation === 'horizontal' &&\n [EVENT_CODE.up, EVENT_CODE.down].includes(key)\n )\n return undefined\n return MAP_KEY_TO_FOCUS_INTENT[key]\n}\n\nexport const reorderArray = <T>(array: T[], atIdx: number) => {\n return array.map((_, idx) => array[(idx + atIdx) % array.length])\n}\n\nexport const focusFirst = (elements: HTMLElement[]) => {\n const { activeElement: prevActive } = document\n\n for (const element of elements) {\n if (element === prevActive) return\n element.focus()\n if (prevActive !== document.activeElement) return\n }\n}\n"],"mappings":";;;AASA,MAAM,0BAAuD;CAC3D,WAAW;CACX,SAAS;CACT,YAAY;CACZ,WAAW;CACX,QAAQ;CACR,MAAM;CACN,UAAU;CACV,KAAK;CACN;AAED,MAAM,wBAAwB,KAAa,QAAoB;CAC7D,IAAI,QAAQ,OAAO,OAAO;CAE1B,QAAQ,KAAR;EACE,KAAK,WAAW,OACd,OAAO,WAAW;EACpB,KAAK,WAAW,MACd,OAAO,WAAW;EACpB,SACE,OAAO;;;AAIb,MAAa,kBACX,OACA,aACA,QACG;CAEH,MAAM,MAAM,qBADC,aAAa,MACW,EAAE,IAAI;CAC3C,IACE,gBAAgB,cAChB,CAAC,WAAW,MAAM,WAAW,MAAM,CAAC,SAAS,IAAI,EAEjD,OAAO,KAAA;CACT,IACE,gBAAgB,gBAChB,CAAC,WAAW,IAAI,WAAW,KAAK,CAAC,SAAS,IAAI,EAE9C,OAAO,KAAA;CACT,OAAO,wBAAwB;;AAGjC,MAAa,gBAAmB,OAAY,UAAkB;CAC5D,OAAO,MAAM,KAAK,GAAG,QAAQ,OAAO,MAAM,SAAS,MAAM,QAAQ;;AAGnE,MAAa,cAAc,aAA4B;CACrD,MAAM,EAAE,eAAe,eAAe;CAEtC,KAAK,MAAM,WAAW,UAAU;EAC9B,IAAI,YAAY,YAAY;EAC5B,QAAQ,OAAO;EACf,IAAI,eAAe,SAAS,eAAe"}