@vuesax-alpha/nightly
Version:
A Component Library for Vue 3
1 lines • 4.81 kB
Source Map (JSON)
{"version":3,"file":"utils.mjs","sources":["../../../../../../packages/components/table/src/utils.ts"],"sourcesContent":["import { useNamespace } from '@vuesax-alpha/hooks'\n/**\n *\n * @param selected array seleted\n * @param data\n * @return data or empty array\n */\nexport const toggleSelectAll = <T = any>(selected: T[], data: T[]): T[] => {\n if (selected.length !== data.length) {\n return [...data]\n }\n return []\n}\n\nexport const sortData = <T = Record<any, unknown>>(\n event: Event,\n data: T[],\n sortKey: keyof T,\n type: 'desc' | 'asc' = 'desc'\n) => {\n const _sortKey = String(sortKey)\n let sortType: string | undefined = type\n const ns = useNamespace('table')\n const el: HTMLElement | null = event.target as HTMLElement | null\n\n data = [...data].sort(returnOriginalIndex)\n\n if (!el) return []\n\n if (el.dataset[`sortType${_sortKey}`] === 'desc') {\n sortType = 'asc'\n } else if (el.dataset[`sortType${_sortKey}`] === 'asc') {\n sortType = undefined\n }\n\n if (sortType === 'desc') {\n data.forEach((item: any, index: number) => {\n item[`originalIndex${_sortKey}`] = index\n })\n }\n\n el.dataset[`sortType${_sortKey}`] = sortType\n el.dataset['sortType'] = sortType\n el.dataset['sortKey'] = `sortType${_sortKey}`\n\n const parent = el.closest(ns.e('tr'))\n const thsort = parent?.querySelectorAll('th.is-sort')\n\n thsort?.forEach((th: any) => {\n if (th !== el) {\n th.dataset.sortType = null\n th.dataset[th.dataset[`sortKey`]] = null\n }\n })\n\n function compare(a: any, b: any) {\n if (a[_sortKey] < b[_sortKey]) {\n return sortType !== 'desc' ? 1 : -1\n }\n if (a[_sortKey] > b[_sortKey]) {\n return sortType !== 'desc' ? -1 : 1\n }\n return 0\n }\n\n function returnOriginalIndex(a: any, b: any) {\n return a[`originalIndex${_sortKey}`] - b[`originalIndex${_sortKey}`]\n }\n\n return sortType !== undefined\n ? [...data].sort(compare)\n : [...data].sort(returnOriginalIndex)\n}\n\nexport const getPage = <T = any>(\n data: T[],\n page: number,\n maxItems = 5\n): T[] => {\n const max = Math.ceil(page * maxItems)\n const min = max - maxItems\n return data.filter((_: any, index: number) => index >= min && index < max)\n}\n"],"names":[],"mappings":"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"}