UNPKG

@schema-render/search-table-react

Version:
229 lines (228 loc) 8.51 kB
"use strict"; 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; }