tav-ui
Version:
1 lines • 3.29 kB
Source Map (JSON)
{"version":3,"file":"useTableScrollTo2.mjs","sources":["../../../../../../../../packages/components/table/src/hooks/useTableScrollTo.ts"],"sourcesContent":["import { nextTick, unref } from 'vue'\nimport { warn } from '@tav-ui/utils/log'\nimport type { ComputedRef, Ref } from 'vue'\n\ntype Recordable<T = any> = Record<string, T>\ninterface ComponentElRef<T extends HTMLElement = HTMLDivElement> {\n $el: T\n}\ntype ComponentRef<T extends HTMLElement = HTMLDivElement> = ComponentElRef<T> | null\nexport function useTableScrollTo(\n tableElRef: Ref<ComponentRef>,\n getDataSourceRef: ComputedRef<Recordable[]>\n) {\n let bodyEl: HTMLElement | null\n\n async function findTargetRowToScroll(targetRowData: Recordable) {\n const { id } = targetRowData\n const targetRowEl: HTMLElement | null | undefined = bodyEl?.querySelector(\n `[data-row-key=\"${id}\"]`\n )\n //Add a delay to get new dataSource\n await nextTick()\n bodyEl?.scrollTo({\n top: targetRowEl?.offsetTop ?? 0,\n behavior: 'smooth',\n })\n }\n\n function scrollTo(pos: string): void {\n const table = unref(tableElRef)\n if (!table) return\n\n const tableEl: Element = table.$el\n if (!tableEl) return\n\n if (!bodyEl) {\n bodyEl = tableEl.querySelector('.ant-table-body')\n if (!bodyEl) return\n }\n\n const dataSource = unref(getDataSourceRef)\n if (!dataSource) return\n\n // judge pos type\n if (pos === 'top') {\n findTargetRowToScroll(dataSource[0])\n } else if (pos === 'bottom') {\n findTargetRowToScroll(dataSource[dataSource.length - 1])\n } else {\n const targetRowData = dataSource.find((data) => data.id === pos)\n if (targetRowData) {\n findTargetRowToScroll(targetRowData)\n } else {\n warn(`id: ${pos} doesn't exist`)\n }\n }\n }\n\n return { scrollTo }\n}\n"],"names":[],"mappings":";;;AAEO,SAAS,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,EAAE;AAC/D,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,eAAe,qBAAqB,CAAC,aAAa,EAAE;AACtD,IAAI,MAAM,EAAE,EAAE,EAAE,GAAG,aAAa,CAAC;AACjC,IAAI,MAAM,WAAW,GAAG,MAAM,EAAE,aAAa,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxE,IAAI,MAAM,QAAQ,EAAE,CAAC;AACrB,IAAI,MAAM,EAAE,QAAQ,CAAC;AACrB,MAAM,GAAG,EAAE,WAAW,EAAE,SAAS,IAAI,CAAC;AACtC,MAAM,QAAQ,EAAE,QAAQ;AACxB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,SAAS,QAAQ,CAAC,GAAG,EAAE;AACzB,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,KAAK;AACd,MAAM,OAAO;AACb,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;AAC9B,IAAI,IAAI,CAAC,OAAO;AAChB,MAAM,OAAO;AACb,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AACxD,MAAM,IAAI,CAAC,MAAM;AACjB,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,UAAU;AACnB,MAAM,OAAO;AACb,IAAI,IAAI,GAAG,KAAK,KAAK,EAAE;AACvB,MAAM,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ,EAAE;AACjC,MAAM,qBAAqB,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/D,KAAK,MAAM;AACX,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;AACvE,MAAM,IAAI,aAAa,EAAE;AACzB,QAAQ,qBAAqB,CAAC,aAAa,CAAC,CAAC;AAC7C,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;AACzC,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtB;;;;"}