@schema-render/search-table-react
Version:
Conditional search table component.
229 lines (228 loc) • 8.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
createActionItem: function() {
return createActionItem;
},
createActions: function() {
return createActions;
}
});
var _jsxruntime = require("react/jsx-runtime");
var _icons = require("@ant-design/icons");
var _corereact = require("@schema-render/core-react");
var _formrenderreact = require("@schema-render/form-render-react");
var _antd = require("antd");
var _react = require("react");
var _ButtonLoading = /*#__PURE__*/ _interop_require_default(require("../../../components/ButtonLoading"));
function _define_property(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function _object_spread(target) {
for(var i = 1; i < arguments.length; i++){
var source = arguments[i] != null ? arguments[i] : {};
var ownKeys = Object.keys(source);
if (typeof Object.getOwnPropertySymbols === "function") {
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
}));
}
ownKeys.forEach(function(key) {
_define_property(target, key, source[key]);
});
}
return target;
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function(sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _object_spread_props(target, source) {
source = source != null ? source : {};
if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function(key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
function _object_without_properties(source, excluded) {
if (source == null) return {};
var target = _object_without_properties_loose(source, excluded);
var key, i;
if (Object.getOwnPropertySymbols) {
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
for(i = 0; i < sourceSymbolKeys.length; i++){
key = sourceSymbolKeys[i];
if (excluded.indexOf(key) >= 0) continue;
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
target[key] = source[key];
}
}
return target;
}
function _object_without_properties_loose(source, excluded) {
if (source == null) return {};
var target = {};
var sourceKeys = Object.keys(source);
var key, i;
for(i = 0; i < sourceKeys.length; i++){
key = sourceKeys[i];
if (excluded.indexOf(key) >= 0) continue;
target[key] = source[key];
}
return target;
}
function _tagged_template_literal(strings, raw) {
if (!raw) {
raw = strings.slice(0);
}
return Object.freeze(Object.defineProperties(strings, {
raw: {
value: Object.freeze(raw)
}
}));
}
function _templateObject() {
var data = _tagged_template_literal([
"\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0 4px 12px 0 #ececec;\n min-width: 70px;\n padding: 6px;\n\n > * {\n display: block;\n width: 100%;\n height: auto !important;\n padding: 3px 6px !important;\n\n &:hover {\n background: #f6f6f6 !important;\n }\n }\n"
]);
_templateObject = function _templateObject() {
return data;
};
return data;
}
var isArray = _corereact.utils.isArray, isString = _corereact.utils.isString, omit = _corereact.utils.omit;
var dropdownCls = (0, _formrenderreact.cij)(_templateObject());
function createActionItem(item, index) {
var text = item.text, confirmAgain = item.confirmAgain, confirmProps = item.confirmProps, onClick = item.onClick, restItem = _object_without_properties(item, [
"text",
"confirmAgain",
"confirmProps",
"onClick"
]);
var content = isString(text) ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_ButtonLoading.default, _object_spread_props(_object_spread({
type: "link",
size: "small"
}, omit(restItem, 'isShow')), {
onClick: function(e) {
return !confirmAgain && (onClick === null || onClick === void 0 ? void 0 : onClick(e));
},
children: text
}), index) : text;
// 增加二次确认
if (confirmAgain) {
return /*#__PURE__*/ (0, _jsxruntime.jsx)(_antd.Popconfirm, _object_spread_props(_object_spread({
title: "温馨提示",
description: "请二次确认您的操作!"
}, confirmProps), {
onConfirm: onClick,
children: content
}), index);
}
return content;
}
function createActions(param) {
var record = param.record, index = param.index, actionItems = param.actionItems, actionItemsCount = param.actionItemsCount, actionItemsDropdownProps = param.actionItemsDropdownProps, locale = param.locale;
var items = actionItems === null || actionItems === void 0 ? void 0 : actionItems(record, index);
if (!isArray(items)) {
return null;
}
// 可展示项
var displayableItems = items.filter(function(item) {
return item.isShow !== false;
});
// 最后渲染的内容
var contents;
if (displayableItems.length > actionItemsCount) {
var displayedItems = [];
var dropdownItems = [];
displayableItems.forEach(function(item, i) {
/**
* 显示个数减一,以保证“更多”按钮对齐
*/ if (i < actionItemsCount - 1) {
displayedItems.push(item);
} else {
dropdownItems.push(createActionItem(item, i));
}
});
return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
children: [
displayedItems.map(function(item, i) {
return createActionItem(item, i);
}),
/*#__PURE__*/ (0, _jsxruntime.jsx)(_antd.Dropdown, _object_spread_props(_object_spread({
placement: "bottomRight"
}, actionItemsDropdownProps), {
dropdownRender: function() {
return /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
className: dropdownCls,
children: dropdownItems.map(function(label, i) {
return /*#__PURE__*/ (0, _jsxruntime.jsx)(_react.Fragment, {
children: label
}, i);
})
});
},
children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(_antd.Button, {
type: "link",
size: "small",
style: {
gap: 2,
display: 'inline-flex',
alignItems: 'center'
},
children: [
locale.SearchTable.more,
" ",
/*#__PURE__*/ (0, _jsxruntime.jsx)(_icons.DownOutlined, {
style: {
margin: 0
}
})
]
})
}))
]
});
} else {
contents = displayableItems.map(function(item, i) {
return createActionItem(item, i);
});
}
return contents;
}