vxe-table-demonic
Version:
一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...
94 lines (93 loc) • 3.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.assemItem = assemItem;
exports.createItem = createItem;
exports.destroyItem = destroyItem;
exports.handleFieldOrItem = handleFieldOrItem;
exports.isActivetem = isActivetem;
exports.isFormItem = isFormItem;
exports.isHiddenItem = isHiddenItem;
exports.watchItem = watchItem;
var _vue = require("vue");
var _vXETable = require("../../v-x-e-table");
var _xeUtils = _interopRequireDefault(require("xe-utils"));
var _itemInfo = require("./itemInfo");
var _utils = require("../../tools/utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function isFormItem(item) {
return item instanceof _itemInfo.ItemInfo;
}
function createItem($xeform, _vm) {
return isFormItem(_vm) ? _vm : new _itemInfo.ItemInfo($xeform, _vm);
}
function handleFieldOrItem($xeform, fieldOrItem) {
if (fieldOrItem) {
return _xeUtils.default.isString(fieldOrItem) ? $xeform.getItemByField(fieldOrItem) : fieldOrItem;
}
return null;
}
function isHiddenItem($xeform, formItem) {
var reactData = $xeform.reactData;
var collapseAll = reactData.collapseAll;
var folding = formItem.folding,
visible = formItem.visible;
return visible === false || folding && collapseAll;
}
function isActivetem($xeform, formItem) {
var visibleMethod = formItem.visibleMethod,
itemRender = formItem.itemRender,
visible = formItem.visible,
field = formItem.field;
if (visible === false) {
return visible;
}
var compConf = (0, _utils.isEnableConf)(itemRender) ? _vXETable.VXETable.renderer.get(itemRender.name) : null;
if (!visibleMethod && compConf && compConf.itemVisibleMethod) {
visibleMethod = compConf.itemVisibleMethod;
}
if (!visibleMethod) {
return true;
}
var data = $xeform.props.data;
return visibleMethod({
data: data,
field: field,
property: field,
item: formItem,
$form: $xeform,
$grid: $xeform.xegrid
});
}
function watchItem(props, formItem) {
Object.keys(props).forEach(function (name) {
(0, _vue.watch)(function () {
return props[name];
}, function (value) {
formItem.update(name, value);
});
});
}
function assemItem($xeform, el, formItem, formGather) {
var reactData = $xeform.reactData;
var staticItems = reactData.staticItems;
var parentElem = el.parentNode;
var parentItem = formGather ? formGather.formItem : null;
var parentItems = parentItem ? parentItem.children : staticItems;
if (parentElem) {
parentItems.splice(_xeUtils.default.arrayIndexOf(parentElem.children, el), 0, formItem);
reactData.staticItems = staticItems.slice(0);
}
}
function destroyItem($xeform, formItem) {
var reactData = $xeform.reactData;
var staticItems = reactData.staticItems;
var index = _xeUtils.default.findIndexOf(staticItems, function (item) {
return item.id === formItem.id;
});
if (index > -1) {
staticItems.splice(index, 1);
}
reactData.staticItems = staticItems.slice(0);
}