UNPKG

preact-arco-design

Version:

Arco Design React UI Library.

35 lines (30 loc) 1.5 kB
import { useMemo } from "preact/compat"; import cs from "../../_util/classNames"; import { isObject } from "../../_util/is"; // get sticky cell's className function useStickyClassNames(groupColumns, columns, prefixCls) { var colFixed = columns.map(function (c) { return c.fixed; }); function getClassNameFromColumn(column, index) { var _a; return cs((_a = {}, _a["".concat(prefixCls, "-col-fixed-left")] = column.fixed === 'left', _a["".concat(prefixCls, "-col-fixed-right")] = column.fixed === 'right', _a["".concat(prefixCls, "-col-fixed-left-last")] = column.fixed === 'left' && (isObject(columns[index + 1]) ? columns[index + 1].fixed !== 'left' : true), _a["".concat(prefixCls, "-col-fixed-right-first")] = column.fixed === 'right' && (isObject(columns[index - 1]) ? columns[index - 1].fixed !== 'right' : true), _a)); } var stickyClassNames = useMemo(function () { return columns.map(function (column, index) { return getClassNameFromColumn(column, index); }); }, [colFixed.join('-')]); var groupStickyClassNames = useMemo(function () { return groupColumns.map(function (gc) { return gc.map(function (column, index) { return getClassNameFromColumn(column, index); }); }); }, [groupColumns.map(function (c) { return "|".concat(c.map(function (a) { return a.fixed || 'undefined'; }).join('-'), "|"); }).join('_')]); return [groupStickyClassNames, stickyClassNames]; } export default useStickyClassNames;