UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 3.21 kB
{"version":3,"file":"utils.mjs","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"],"names":[],"mappings":";;;AASA,MAAM,uBAAA,GAAuD;AAAA,EAC3D,SAAA,EAAW,MAAA;AAAA,EACX,OAAA,EAAS,MAAA;AAAA,EACT,UAAA,EAAY,MAAA;AAAA,EACZ,SAAA,EAAW,MAAA;AAAA,EACX,MAAA,EAAQ,OAAA;AAAA,EACR,IAAA,EAAM,OAAA;AAAA,EACN,QAAA,EAAU,MAAA;AAAA,EACV,GAAA,EAAK;AACP,CAAA;AAEA,MAAM,oBAAA,GAAuB,CAAC,GAAA,EAAa,GAAA,KAAoB;AAC7D,EAAA,IAAI,GAAA,KAAQ,OAAO,OAAO,GAAA;AAE1B,EAAA,QAAQ,GAAA;AAAK,IACX,KAAK,UAAA,CAAW,KAAA;AACd,MAAA,OAAO,UAAA,CAAW,IAAA;AAAA,IACpB,KAAK,UAAA,CAAW,IAAA;AACd,MAAA,OAAO,UAAA,CAAW,KAAA;AAAA,IACpB;AACE,MAAA,OAAO,GAAA;AAAA;AAEb,CAAA;AAEO,MAAM,cAAA,GAAiB,CAC5B,KAAA,EACA,WAAA,EACA,GAAA,KACG;AACH,EAAA,MAAM,IAAA,GAAO,aAAa,KAAK,CAAA;AAC/B,EAAA,MAAM,GAAA,GAAM,oBAAA,CAAqB,IAAA,EAAM,GAAG,CAAA;AAC1C,EAAA,IACE,WAAA,KAAgB,cAChB,CAAC,UAAA,CAAW,MAAM,UAAA,CAAW,KAAK,CAAA,CAAE,QAAA,CAAS,GAAG,CAAA;AAEhD,IAAA,OAAO,MAAA;AACT,EAAA,IACE,WAAA,KAAgB,gBAChB,CAAC,UAAA,CAAW,IAAI,UAAA,CAAW,IAAI,CAAA,CAAE,QAAA,CAAS,GAAG,CAAA;AAE7C,IAAA,OAAO,MAAA;AACT,EAAA,OAAO,wBAAwB,GAAG,CAAA;AACpC;AAEO,MAAM,YAAA,GAAe,CAAI,KAAA,EAAY,KAAA,KAAkB;AAC5D,EAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,GAAA,KAAQ,OAAO,GAAA,GAAM,KAAA,IAAS,KAAA,CAAM,MAAM,CAAC,CAAA;AAClE;AAEO,MAAM,UAAA,GAAa,CAAC,QAAA,KAA4B;AACrD,EAAA,MAAM,EAAE,aAAA,EAAe,UAAA,EAAW,GAAI,QAAA;AAEtC,EAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,IAAA,IAAI,YAAY,UAAA,EAAY;AAC5B,IAAA,OAAA,CAAQ,KAAA,EAAM;AACd,IAAA,IAAI,UAAA,KAAe,SAAS,aAAA,EAAe;AAAA,EAC7C;AACF;;;;"}