UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 7.58 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../../packages/components/table/src/table-body/index.ts"],"sourcesContent":["import {\n defineComponent,\n getCurrentInstance,\n h,\n inject,\n onUnmounted,\n watch,\n} from 'vue'\nimport { addClass, isClient, rAF, removeClass } from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport useLayoutObserver from '../layout-observer'\nimport { removePopper } from '../util'\nimport { TABLE_INJECTION_KEY } from '../tokens'\nimport useRender from './render-helper'\nimport defaultProps from './defaults'\n\nimport type { VNode } from 'vue'\n\nexport default defineComponent({\n name: 'ElTableBody',\n props: defaultProps,\n setup(props) {\n const instance = getCurrentInstance()\n const parent = inject(TABLE_INJECTION_KEY)\n const ns = useNamespace('table')\n const { wrappedRowRender, tooltipContent, tooltipTrigger } =\n useRender(props)\n const { onColumnsChange, onScrollableChange } = useLayoutObserver(parent!)\n\n const hoveredCellList: HTMLTableCellElement[] = []\n watch(props.store?.states.hoverRow, (newVal: any, oldVal: any) => {\n const el = instance?.vnode.el as HTMLElement\n const rows = Array.from(el?.children || []).filter((e) =>\n e?.classList.contains(`${ns.e('row')}`)\n )\n\n // hover rowSpan > 1 choose the whole row\n let rowNum = newVal\n const childNodes = rows[rowNum]\n ?.childNodes as NodeListOf<HTMLTableCellElement>\n if (childNodes?.length) {\n let control = 0\n const indexes = Array.from(childNodes).reduce((acc, item, index) => {\n // drop colsSpan\n if (childNodes[index]?.colSpan > 1) {\n control = childNodes[index]?.colSpan\n }\n if (item.nodeName !== 'TD' && control === 0) {\n acc.push(index)\n }\n control > 0 && control--\n return acc\n }, [] as number[])\n\n indexes.forEach((rowIndex) => {\n rowNum = newVal\n while (rowNum > 0) {\n // find from previous\n const preChildNodes = rows[rowNum - 1]\n ?.childNodes as NodeListOf<HTMLTableCellElement>\n\n if (\n preChildNodes[rowIndex] &&\n preChildNodes[rowIndex].nodeName === 'TD' &&\n preChildNodes[rowIndex].rowSpan > 1\n ) {\n addClass(preChildNodes[rowIndex], 'hover-cell')\n hoveredCellList.push(preChildNodes[rowIndex])\n break\n }\n rowNum--\n }\n })\n } else {\n hoveredCellList.forEach((item) => removeClass(item, 'hover-cell'))\n hoveredCellList.length = 0\n }\n if (!props.store?.states.isComplex.value || !isClient) return\n\n rAF(() => {\n // just get first level children; fix #9723\n const oldRow = rows[oldVal]\n const newRow = rows[newVal]\n // when there is fixed row, hover on rowSpan > 1 should not clear the class\n if (oldRow && !oldRow.classList.contains('hover-fixed-row')) {\n removeClass(oldRow, 'hover-row')\n }\n if (newRow) {\n addClass(newRow, 'hover-row')\n }\n })\n })\n\n onUnmounted(() => {\n removePopper?.()\n })\n\n return {\n ns,\n onColumnsChange,\n onScrollableChange,\n wrappedRowRender,\n tooltipContent,\n tooltipTrigger,\n }\n },\n render() {\n const { wrappedRowRender, store } = this\n const data = store?.states.data.value || []\n // Why do we need tabIndex: -1 ?\n // If you set the tabindex attribute on an element ,\n // then its child content cannot be scrolled with the arrow keys,\n // unless you set tabindex on the content too\n // See https://github.com/facebook/react/issues/25462#issuecomment-1274775248 or https://developer.mozilla.org/zh-CN/docs/Web/HTML/Global_attributes/tabindex\n return h('tbody', { tabIndex: -1 }, [\n data.reduce((acc: VNode[], row) => {\n return acc.concat(wrappedRowRender(row, acc.length) as VNode[])\n }, []),\n ])\n },\n})\n"],"names":["_a","_b"],"mappings":";;;;;;;;;;;AAkBA,gBAAe,eAAA,CAAgB;AAAA,EAC7B,IAAA,EAAM,aAAA;AAAA,EACN,KAAA,EAAO,YAAA;AAAA,EACP,MAAM,KAAA,EAAO;AArBf,IAAA,IAAA,EAAA;AAsBI,IAAA,MAAM,WAAW,kBAAA,EAAmB;AACpC,IAAA,MAAM,MAAA,GAAS,OAAO,mBAAmB,CAAA;AACzC,IAAA,MAAM,EAAA,GAAK,aAAa,OAAO,CAAA;AAC/B,IAAA,MAAM,EAAE,gBAAA,EAAkB,cAAA,EAAgB,cAAA,EAAe,GACvD,UAAU,KAAK,CAAA;AACjB,IAAA,MAAM,EAAE,eAAA,EAAiB,kBAAA,EAAmB,GAAI,kBAAkB,MAAO,CAAA;AAEzE,IAAA,MAAM,kBAA0C,EAAC;AACjD,IAAA,KAAA,CAAA,CAAM,WAAM,KAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAa,OAAO,QAAA,EAAU,CAAC,QAAa,MAAA,KAAgB;AA9BtE,MAAA,IAAAA,GAAAA,EAAA,EAAA;AA+BM,MAAA,MAAM,EAAA,GAAK,qCAAU,KAAA,CAAM,EAAA;AAC3B,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAA,CAAK,yBAAI,QAAA,KAAY,EAAE,CAAA,CAAE,MAAA;AAAA,QAAO,CAAC,MAClD,CAAA,IAAA,IAAA,GAAA,MAAA,GAAA,CAAA,CAAG,SAAA,CAAU,SAAS,CAAA,EAAG,EAAA,CAAG,CAAA,CAAE,KAAK,CAAC,CAAA,CAAA;AAAA,OACtC;AAGA,MAAA,IAAI,MAAA,GAAS,MAAA;AACb,MAAA,MAAM,cAAaA,GAAAA,GAAA,IAAA,CAAK,MAAM,CAAA,KAAX,gBAAAA,GAAAA,CACf,UAAA;AACJ,MAAA,IAAI,yCAAY,MAAA,EAAQ;AACtB,QAAA,IAAI,OAAA,GAAU,CAAA;AACd,QAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,UAAU,EAAE,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,EAAM,KAAA,KAAU;AA1C5E,UAAA,IAAAA,GAAAA,EAAAC,GAAAA;AA4CU,UAAA,IAAA,CAAA,CAAID,MAAA,UAAA,CAAW,KAAK,MAAhB,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAmB,WAAU,CAAA,EAAG;AAClC,YAAA,OAAA,GAAA,CAAUC,GAAAA,GAAA,UAAA,CAAW,KAAK,CAAA,KAAhB,gBAAAA,GAAAA,CAAmB,OAAA;AAAA,UAC/B;AACA,UAAA,IAAI,IAAA,CAAK,QAAA,KAAa,IAAA,IAAQ,OAAA,KAAY,CAAA,EAAG;AAC3C,YAAA,GAAA,CAAI,KAAK,KAAK,CAAA;AAAA,UAChB;AACA,UAAA,OAAA,GAAU,CAAA,IAAK,OAAA,EAAA;AACf,UAAA,OAAO,GAAA;AAAA,QACT,CAAA,EAAG,EAAc,CAAA;AAEjB,QAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,QAAA,KAAa;AAtDtC,UAAA,IAAAD,GAAAA;AAuDU,UAAA,MAAA,GAAS,MAAA;AACT,UAAA,OAAO,SAAS,CAAA,EAAG;AAEjB,YAAA,MAAM,iBAAgBA,GAAAA,GAAA,IAAA,CAAK,SAAS,CAAC,CAAA,KAAf,gBAAAA,GAAAA,CAClB,UAAA;AAEJ,YAAA,IACE,aAAA,CAAc,QAAQ,CAAA,IACtB,aAAA,CAAc,QAAQ,CAAA,CAAE,QAAA,KAAa,IAAA,IACrC,aAAA,CAAc,QAAQ,CAAA,CAAE,OAAA,GAAU,CAAA,EAClC;AACA,cAAA,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA,EAAG,YAAY,CAAA;AAC9C,cAAA,eAAA,CAAgB,IAAA,CAAK,aAAA,CAAc,QAAQ,CAAC,CAAA;AAC5C,cAAA;AAAA,YACF;AACA,YAAA,MAAA,EAAA;AAAA,UACF;AAAA,QACF,CAAC,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,eAAA,CAAgB,QAAQ,CAAC,IAAA,KAAS,WAAA,CAAY,IAAA,EAAM,YAAY,CAAC,CAAA;AACjE,QAAA,eAAA,CAAgB,MAAA,GAAS,CAAA;AAAA,MAC3B;AACA,MAAA,IAAI,EAAA,CAAC,WAAM,KAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAa,OAAO,SAAA,CAAU,KAAA,CAAA,IAAS,CAAC,QAAA,EAAU;AAEvD,MAAA,GAAA,CAAI,MAAM;AAER,QAAA,MAAM,MAAA,GAAS,KAAK,MAAM,CAAA;AAC1B,QAAA,MAAM,MAAA,GAAS,KAAK,MAAM,CAAA;AAE1B,QAAA,IAAI,UAAU,CAAC,MAAA,CAAO,SAAA,CAAU,QAAA,CAAS,iBAAiB,CAAA,EAAG;AAC3D,UAAA,WAAA,CAAY,QAAQ,WAAW,CAAA;AAAA,QACjC;AACA,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,QAAA,CAAS,QAAQ,WAAW,CAAA;AAAA,QAC9B;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAED,IAAA,WAAA,CAAY,MAAM;AA7FtB,MAAA,IAAAA,GAAAA;AA8FM,MAAA,CAAAA,MAAA,YAAA,KAAA,IAAA,GAAA,MAAA,GAAAA,GAAAA,EAAAA;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO;AAAA,MACL,EAAA;AAAA,MACA,eAAA;AAAA,MACA,kBAAA;AAAA,MACA,gBAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA;AAAA,EACA,MAAA,GAAS;AACP,IAAA,MAAM,EAAE,gBAAA,EAAkB,KAAA,EAAM,GAAI,IAAA;AACpC,IAAA,MAAM,IAAA,GAAA,CAAO,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,MAAA,CAAO,IAAA,CAAK,UAAS,EAAC;AAM1C,IAAA,OAAO,CAAA,CAAE,OAAA,EAAS,EAAE,QAAA,EAAU,IAAG,EAAG;AAAA,MAClC,IAAA,CAAK,MAAA,CAAO,CAAC,GAAA,EAAc,GAAA,KAAQ;AACjC,QAAA,OAAO,IAAI,MAAA,CAAO,gBAAA,CAAiB,GAAA,EAAK,GAAA,CAAI,MAAM,CAAY,CAAA;AAAA,MAChE,CAAA,EAAG,EAAE;AAAA,KACN,CAAA;AAAA,EACH;AACF,CAAC,CAAA;;;;"}