UNPKG

tdesign-vue

Version:
195 lines (187 loc) 8.37 kB
/** * tdesign v1.11.2 * (c) 2025 tdesign * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _defineProperty = require('@babel/runtime/helpers/defineProperty'); var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray'); var _slicedToArray = require('@babel/runtime/helpers/slicedToArray'); var VueCompositionAPI = require('@vue/composition-api'); var tdesignIconsVue = require('tdesign-icons-vue'); var table_hooks_useClassName = require('./useClassName.js'); var hooks_tnode = require('../../hooks/tnode.js'); var hooks_useDefaultValue = require('../../hooks/useDefaultValue.js'); var configProvider_useConfig = require('../../config-provider/useConfig.js'); var hooks_useGlobalIcon = require('../../hooks/useGlobalIcon.js'); var get = require('../../_chunks/dep-f84d1ea5.js'); require('../../_chunks/dep-07fb8c0e.js'); require('../../_common/js/global-config/default-config.js'); require('../../_common/js/global-config/locale/zh_CN.js'); require('../../_chunks/dep-a4a18104.js'); require('@babel/runtime/helpers/typeof'); require('../../_chunks/dep-27dd8cc6.js'); require('dayjs'); require('../../_chunks/dep-87c765cc.js'); require('../../_chunks/dep-75cd6d52.js'); require('../../_chunks/dep-b1a02818.js'); require('../../_chunks/dep-3d8ab37d.js'); require('../../_chunks/dep-ecccff93.js'); require('../../_chunks/dep-a4308f57.js'); require('../../_chunks/dep-a4cecac4.js'); require('../../_chunks/dep-ab142eaf.js'); require('../../_chunks/dep-6ad3de7c.js'); require('../../_chunks/dep-e4278c54.js'); require('../../_chunks/dep-fcf0662d.js'); require('../../_chunks/dep-8b1e056e.js'); require('../../_chunks/dep-5db8defc.js'); require('../../_chunks/dep-6e4c473c.js'); require('../../_chunks/dep-234b7c02.js'); require('../../_chunks/dep-a4747856.js'); require('../../_chunks/dep-932dd69e.js'); require('../../_chunks/dep-9f4caea4.js'); require('../../_chunks/dep-dbd838d6.js'); require('../../_chunks/dep-b3120c1b.js'); require('../../_chunks/dep-68ba2357.js'); require('../../_chunks/dep-173eb46c.js'); require('../../hooks/render-tnode.js'); require('../../_chunks/dep-738b4f21.js'); require('../../_chunks/dep-7c854ec6.js'); require('../../_chunks/dep-eceed11d.js'); require('../../_chunks/dep-201f7798.js'); require('../../_chunks/dep-d3015b4c.js'); require('../../_chunks/dep-f8a85d6a.js'); require('../../_chunks/dep-5b117689.js'); require('../../_chunks/dep-6478392e.js'); require('../../_chunks/dep-47bca35e.js'); require('../../_chunks/dep-a6490a32.js'); require('../../_chunks/dep-3eec664c.js'); require('../../_chunks/dep-eeb2e214.js'); require('../../_chunks/dep-362bc4d7.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty); var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray); var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray); function useRowExpand(props, context) { var _toRefs = VueCompositionAPI.toRefs(props), expandedRowKeys = _toRefs.expandedRowKeys; var renderTNode = hooks_tnode.useTNodeJSX(); var _useConfig = configProvider_useConfig.useConfig("table", props.locale), t = _useConfig.t, global = _useConfig.global; var _useGlobalIcon = hooks_useGlobalIcon.useGlobalIcon({ ChevronRightCircleIcon: tdesignIconsVue.ChevronRightCircleIcon }), ChevronRightCircleIcon = _useGlobalIcon.ChevronRightCircleIcon; var _useClassName = table_hooks_useClassName["default"](), tableExpandClasses = _useClassName.tableExpandClasses, positiveRotate90 = _useClassName.positiveRotate90, tableFullRowClasses = _useClassName.tableFullRowClasses; var _useDefaultValue = hooks_useDefaultValue["default"](expandedRowKeys, props.defaultExpandedRowKeys || [], props.onExpandChange, "expandedRowKeys", "expand-change"), _useDefaultValue2 = _slicedToArray__default["default"](_useDefaultValue, 2), tExpandedRowKeys = _useDefaultValue2[0], setTExpandedRowKeys = _useDefaultValue2[1]; var showExpandedRow = VueCompositionAPI.computed(function () { return Boolean(props.expandedRow || context.slots.expandedRow || context.slots["expanded-row"]); }); var showExpandIconColumn = VueCompositionAPI.computed(function () { return props.expandIcon !== false && showExpandedRow.value; }); var isFirstColumnFixed = VueCompositionAPI.computed(function () { var _props$columns; return ((_props$columns = props.columns) === null || _props$columns === void 0 || (_props$columns = _props$columns[0]) === null || _props$columns === void 0 ? void 0 : _props$columns.fixed) === "left"; }); var getExpandedRowClass = function getExpandedRowClass(params) { var _tExpandedRowKeys$val; if (!showExpandedRow.value) return null; var row = params.row, rowKey = params.rowKey; var currentRowKey = get.get(row, rowKey || "id"); return tableExpandClasses[(_tExpandedRowKeys$val = tExpandedRowKeys.value) !== null && _tExpandedRowKeys$val !== void 0 && _tExpandedRowKeys$val.includes(currentRowKey) ? "rowExpanded" : "rowFolded"]; }; var onToggleExpand = function onToggleExpand(e, row) { props.expandOnRowClick && e.stopPropagation(); var currentId = get.get(row, props.rowKey || "id"); var index = tExpandedRowKeys.value.indexOf(currentId); var newKeys = _toConsumableArray__default["default"](tExpandedRowKeys.value); index !== -1 ? newKeys.splice(index, 1) : newKeys.push(currentId); setTExpandedRowKeys(newKeys, { expandedRowData: props.data.filter(function (t2) { return newKeys.includes(get.get(t2, props.rowKey || "id")); }), currentRowData: row }); }; var renderExpandIcon = function renderExpandIcon(h, p) { var row = p.row, rowIndex = p.rowIndex; var currentId = get.get(row, props.rowKey || "id"); var expanded = tExpandedRowKeys.value.includes(currentId); var icon = renderTNode("expandIcon", { defaultNode: t(global.value.expandIcon) || h(ChevronRightCircleIcon), params: { row: row, index: rowIndex } }); if (!icon) return null; var classes = [tableExpandClasses.iconBox, tableExpandClasses[expanded ? "expanded" : "collapsed"], _defineProperty__default["default"]({}, positiveRotate90, expanded)]; return h("span", { "class": classes, "on": { "click": function click(e) { return onToggleExpand(e, row); } } }, [icon]); }; var getExpandColumn = function getExpandColumn(h) { var expandCol = { colKey: "__EXPAND_ROW_ICON_COLUMN__", width: 64, className: tableExpandClasses.iconCell, fixed: isFirstColumnFixed.value ? "left" : void 0, cell: renderExpandIcon, stopPropagation: true }; return expandCol; }; var renderExpandedRow = function renderExpandedRow(h, p) { var rowId = get.get(p.row, props.rowKey || "id"); if (!tExpandedRowKeys.value || !tExpandedRowKeys.value.includes(rowId)) return null; var isFixedLeft = p.isWidthOverflow && props.columns.find(function (item) { return item.fixed === "left"; }); return h("tr", { "key": "expand_".concat(rowId), "class": [tableExpandClasses.row, _defineProperty__default["default"]({}, tableFullRowClasses.base, isFixedLeft)] }, [h("td", { "attrs": { "colspan": p.columns.length } }, [h("div", { "class": [tableExpandClasses.rowInner, _defineProperty__default["default"]({}, tableFullRowClasses.innerFullRow, isFixedLeft)], "style": isFixedLeft ? { width: "".concat(p.tableWidth, "px") } : {} }, [h("div", { "class": tableFullRowClasses.innerFullElement }, [renderTNode("expandedRow", { params: p })])])])]); }; var onInnerExpandRowClick = function onInnerExpandRowClick(p) { onToggleExpand(p.e, p.row); }; return { showExpandedRow: showExpandedRow, showExpandIconColumn: showExpandIconColumn, getExpandColumn: getExpandColumn, renderExpandedRow: renderExpandedRow, onInnerExpandRowClick: onInnerExpandRowClick, getExpandedRowClass: getExpandedRowClass }; } exports["default"] = useRowExpand; //# sourceMappingURL=useRowExpand.js.map