UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

366 lines (352 loc) 15.9 kB
/** * xdesign v1.0.6 * (c) 2023 xdesign * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray'); var _defineProperty = require('@babel/runtime/helpers/defineProperty'); var cloneDeep = require('lodash/cloneDeep'); var get = require('lodash/get'); var _common_js_table_treeStore = require('../../_common/js/table/tree-store.js'); var table_hooks_useClassName = require('./useClassName.js'); var table_tr = require('../tr.js'); var configProvider_useConfig = require('../../config-provider/useConfig.js'); var hooks_tnode = require('../../hooks/tnode.js'); require('@babel/runtime/helpers/classCallCheck'); require('@babel/runtime/helpers/createClass'); require('lodash/isUndefined'); require('../../_common/js/table/utils.js'); require('lodash/isFunction'); require('lodash/isNumber'); require('../../_common/js/log/log.js'); require('../../hooks/useConfig.js'); require('lodash/isString'); require('../../config-provider/context.js'); require('lodash/mergeWith'); require('lodash/merge'); require('../../_common/js/global-config/default-config.js'); require('../../_common/js/global-config/locale/en_US.js'); require('../../_chunks/dep-8d10b59f.js'); require('lodash/isArray'); require('@babel/runtime/helpers/typeof'); require('lodash/upperFirst'); require('lodash/pick'); require('../utils.js'); require('lodash/isObject'); require('./useFixed.js'); require('@babel/runtime/helpers/slicedToArray'); require('lodash/debounce'); require('lodash/xorWith'); require('../../_common/js/utils/getScrollbarWidth.js'); require('../../_common/js/utils/helper.js'); require('@babel/runtime/helpers/objectWithoutProperties'); require('lodash/isNull'); require('../../utils/dom.js'); require('../../utils/easing.js'); require('../ellipsis.js'); require('../../utils/render-tnode.js'); require('lodash/isEmpty'); require('lodash/camelCase'); require('lodash/kebabCase'); require('../../tooltip/index.js'); require('../../tooltip/tooltip.js'); require('lodash/omit'); require('../../tooltip/props.js'); require('../../popup/props.js'); require('../../popup/index.js'); require('../../popup/popup.js'); require('@popperjs/core'); require('../../hooks/useVModel.js'); require('../../_common/js/utils/set-style.js'); require('../../popup/container.js'); require('../../hooks/useResizeObserver.js'); require('../../utils/withInstall.js'); require('../../tooltip/util.js'); require('../base-table-props.js'); require('./useLazyLoad.js'); require('../../_common/js/utils/observe.js'); require('./useRowspanAndColspan.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray); var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty); var cloneDeep__default = /*#__PURE__*/_interopDefaultLegacy(cloneDeep); var get__default = /*#__PURE__*/_interopDefaultLegacy(get); const _hoisted_1$1 = { class: "x-icon", viewBox: "0 0 24 24", width: "1.1em", height: "1.1em" }; const _hoisted_2$1 = /*#__PURE__*/vue.createElementVNode("path", { fill: "currentColor", d: "M4 3h16a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Zm1 2v14h14V5H5Zm6 6V7h2v4h4v2h-4v4h-2v-4H7v-2h4Z" }, null, -1 /* HOISTED */); const _hoisted_3$1 = [ _hoisted_2$1 ]; function render$1(_ctx, _cache) { return (vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$1, _hoisted_3$1)) } var __unplugin_components_1 = { name: 'ri-add-box-line', render: render$1 }; /* vite-plugin-components disabled */ const _hoisted_1 = { class: "x-icon", viewBox: "0 0 24 24", width: "1.1em", height: "1.1em" }; const _hoisted_2 = /*#__PURE__*/vue.createElementVNode("path", { fill: "currentColor", d: "M4 3h16a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Zm1 2v14h14V5H5Zm2 6h10v2H7v-2Z" }, null, -1 /* HOISTED */); const _hoisted_3 = [ _hoisted_2 ]; function render(_ctx, _cache) { return (vue.openBlock(), vue.createElementBlock("svg", _hoisted_1, _hoisted_3)) } var __unplugin_components_0 = { name: 'ri-checkbox-indeterminate-line', render }; /* vite-plugin-components disabled */ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function useTreeData(props, context) { var _toRefs = vue.toRefs(props), data = _toRefs.data, columns = _toRefs.columns; var _useConfig = configProvider_useConfig.useConfig("table"), t = _useConfig.t, globalConfig = _useConfig.globalConfig; var store = vue.ref(new _common_js_table_treeStore["default"]()); var treeNodeCol = vue.shallowRef(); var dataSource = vue.ref([]); var _useClassName = table_hooks_useClassName["default"](), tableTreeClasses = _useClassName.tableTreeClasses; var renderTNode = hooks_tnode.useTNodeDefault(); var rowDataKeys = vue.computed(function () { var _props$tree; return { rowKey: props.rowKey || "id", childrenKey: ((_props$tree = props.tree) === null || _props$tree === void 0 ? void 0 : _props$tree.childrenKey) || "children" }; }); var checkedColumn = vue.computed(function () { return columns.value.find(function (col) { return col.colKey === "row-select"; }); }); vue.watch(checkedColumn, function (column) { if (!store.value) return; store.value.updateDisabledState(dataSource.value, column, rowDataKeys.value); }); var foldIcon = function foldIcon(context2) { var params = _objectSpread(_objectSpread({}, context2), {}, { type: "fold" }); var defaultFoldIcon = t(globalConfig.value.treeExpandAndFoldIcon, vue.h, params) || vue.createVNode(__unplugin_components_0, null, null); return renderTNode("treeExpandAndFoldIcon", { defaultNode: defaultFoldIcon, params: params }); }; var expandIcon = function expandIcon(context2) { var params = _objectSpread(_objectSpread({}, context2), {}, { type: "expand" }); var defaultExpandIcon = t(globalConfig.value.treeExpandAndFoldIcon, vue.h, params) || vue.createVNode(__unplugin_components_1, null, null); return renderTNode("treeExpandAndFoldIcon", { defaultNode: defaultExpandIcon, params: params }); }; var uniqueKeys = vue.computed(function () { var _store$value; return ((_store$value = store.value) === null || _store$value === void 0 || (_store$value = _store$value.getAllUniqueKeys(data.value, rowDataKeys.value)) === null || _store$value === void 0 ? void 0 : _store$value.join()) || ""; }); vue.watch([uniqueKeys], function () { if (!data.value) return; if (!props.tree) { dataSource.value = data.value; return; } resetData(data.value); }, { immediate: true }); vue.onUnmounted(function () { var _store$value$treeData; if (!props.tree) return; (_store$value$treeData = store.value.treeDataMap) === null || _store$value$treeData === void 0 ? void 0 : _store$value$treeData.clear(); store.value = null; }); vue.watch(function () { var _props$tree2; return [columns, (_props$tree2 = props.tree) === null || _props$tree2 === void 0 ? void 0 : _props$tree2.treeNodeColumnIndex]; }, function () { treeNodeCol.value = getTreeNodeColumnCol(); }, { immediate: true }); function resetData(data2) { var _props$tree3; var newVal = cloneDeep__default["default"](data2); store.value.initialTreeStore(newVal, props.columns, rowDataKeys.value); if ((_props$tree3 = props.tree) !== null && _props$tree3 !== void 0 && _props$tree3.defaultExpandAll) { newVal = store.value.expandAll(newVal, rowDataKeys.value); } dataSource.value = newVal; } function getTreeNodeStyle(level) { var _props$tree4, _props$tree5; if (level === void 0) return; var indent = ((_props$tree4 = props.tree) === null || _props$tree4 === void 0 ? void 0 : _props$tree4.indent) === void 0 ? 24 : (_props$tree5 = props.tree) === null || _props$tree5 === void 0 ? void 0 : _props$tree5.indent; return indent ? { paddingLeft: "".concat(level * indent || 1, "px") } : {}; } function toggleExpandData(p, trigger) { var _store$value2, _props$onTreeExpandCh; var currentData = _objectSpread({}, p); if (p.row.__VIRTUAL_SCROLL_INDEX !== void 0) { currentData.rowIndex = p.row.__VIRTUAL_SCROLL_INDEX; } dataSource.value = _toConsumableArray__default["default"](store.value.toggleExpandData(currentData, dataSource.value, rowDataKeys.value)); var rowValue = get__default["default"](p.row, rowDataKeys.value.rowKey); var rowState = (_store$value2 = store.value) === null || _store$value2 === void 0 || (_store$value2 = _store$value2.treeDataMap) === null || _store$value2 === void 0 ? void 0 : _store$value2.get(rowValue); (_props$onTreeExpandCh = props.onTreeExpandChange) === null || _props$onTreeExpandCh === void 0 ? void 0 : _props$onTreeExpandCh.call(props, { row: p.row, rowIndex: p.rowIndex, rowState: rowState, trigger: trigger }); } function getTreeNodeColumnCol() { var _props$tree6; var columns2 = props.columns; var treeNodeColumnIndex = ((_props$tree6 = props.tree) === null || _props$tree6 === void 0 ? void 0 : _props$tree6.treeNodeColumnIndex) || 0; while ((_columns2$treeNodeCol = columns2[treeNodeColumnIndex]) !== null && _columns2$treeNodeCol !== void 0 && _columns2$treeNodeCol.type || ((_columns2$treeNodeCol2 = columns2[treeNodeColumnIndex]) === null || _columns2$treeNodeCol2 === void 0 ? void 0 : _columns2$treeNodeCol2.colKey) === "__EXPAND_ROW_ICON_COLUMN__") { var _columns2$treeNodeCol, _columns2$treeNodeCol2; treeNodeColumnIndex += 1; } return columns2[treeNodeColumnIndex]; } function formatTreeColumn(col) { if (!props.tree || col.colKey !== treeNodeCol.value.colKey) return col; var newCol = _objectSpread({}, treeNodeCol.value); newCol.cell = function (h2, p) { var cellInfo = table_tr.renderCell(_objectSpread(_objectSpread({}, p), {}, { col: _objectSpread({}, treeNodeCol.value) }), context.slots, { cellEmptyContent: props.cellEmptyContent }); var currentState = store.value.treeDataMap.get(get__default["default"](p.row, rowDataKeys.value.rowKey)); var colStyle = getTreeNodeStyle(currentState === null || currentState === void 0 ? void 0 : currentState.level); var classes = _defineProperty__default["default"]({}, tableTreeClasses.inlineCol, !!col.ellipsis); var childrenNodes = get__default["default"](p.row, rowDataKeys.value.childrenKey); if (childrenNodes && childrenNodes instanceof Array || childrenNodes === true) { var _store$value$treeData2; var iconNode = (_store$value$treeData2 = store.value.treeDataMap.get(get__default["default"](p.row, rowDataKeys.value.rowKey))) !== null && _store$value$treeData2 !== void 0 && _store$value$treeData2.expanded ? foldIcon(p) : expandIcon(p); return vue.createVNode("div", { "class": [tableTreeClasses.col, classes], "style": colStyle }, [!!(childrenNodes.length || childrenNodes === true) && vue.createVNode("span", { "class": tableTreeClasses.icon, "onClick": function onClick(e) { toggleExpandData(p, "expand-fold-icon"); e.stopPropagation(); } }, [iconNode]), cellInfo]); } return vue.createVNode("div", { "style": colStyle, "class": [classes, tableTreeClasses.leafNode] }, [vue.createVNode("span", { "class": tableTreeClasses.icon }, null), cellInfo]); }; if (newCol.ellipsis === true) { newCol.ellipsis = function (h2, p) { return table_tr.renderCell(_objectSpread(_objectSpread({}, p), {}, { col: _objectSpread({}, treeNodeCol.value) }), context.slots); }; } return newCol; } function setData(key, newRowData) { var rowIndex = store.value.updateData(key, newRowData, dataSource.value, rowDataKeys.value); var newData = _toConsumableArray__default["default"](dataSource.value); newData[rowIndex] = newRowData; dataSource.value = newData; } function getData(key) { return store.value.getData(key); } function remove(key) { dataSource.value = _toConsumableArray__default["default"](store.value.remove(key, dataSource.value, rowDataKeys.value)); } function appendTo() { var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; var newData = arguments.length > 1 ? arguments[1] : undefined; if (!key) { dataSource.value = store.value.appendToRoot(newData, dataSource.value, rowDataKeys.value); return; } dataSource.value = _toConsumableArray__default["default"](store.value.appendTo(key, newData, dataSource.value, rowDataKeys.value)); } function insertAfter(rowValue, newData) { dataSource.value = _toConsumableArray__default["default"](store.value.insertAfter(rowValue, newData, dataSource.value, rowDataKeys.value)); } function insertBefore(rowValue, newData) { dataSource.value = _toConsumableArray__default["default"](store.value.insertBefore(rowValue, newData, dataSource.value, rowDataKeys.value)); } function expandAll() { dataSource.value = _toConsumableArray__default["default"](store.value.expandAll(dataSource.value, rowDataKeys.value)); } function foldAll() { dataSource.value = _toConsumableArray__default["default"](store.value.foldAll(dataSource.value, rowDataKeys.value)); } function swapData(params) { var r = store.value.swapData(dataSource.value, params, rowDataKeys.value); if (r.result) { dataSource.value = _toConsumableArray__default["default"](r.dataSource); } else { var _props$onAbnormalDrag; var params2 = { code: r.code, reason: r.reason }; (_props$onAbnormalDrag = props.onAbnormalDragSort) === null || _props$onAbnormalDrag === void 0 ? void 0 : _props$onAbnormalDrag.call(props, params2); } } function getTreeNode() { return store.value.getTreeNode(dataSource.value, rowDataKeys.value); } function getTreeExpandedRow() { var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "data"; return store.value.getTreeExpandedRow(dataSource.value, rowDataKeys.value, type); } return { store: store, rowDataKeys: rowDataKeys, dataSource: dataSource, swapData: swapData, setData: setData, getData: getData, remove: remove, appendTo: appendTo, insertAfter: insertAfter, insertBefore: insertBefore, formatTreeColumn: formatTreeColumn, toggleExpandData: toggleExpandData, expandAll: expandAll, foldAll: foldAll, getTreeNode: getTreeNode, resetData: resetData, getTreeExpandedRow: getTreeExpandedRow }; } exports["default"] = useTreeData; //# sourceMappingURL=useTreeData.js.map