You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

364 lines
15 KiB

"use strict";
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
require("antd/es/popover/style");
var _popover = _interopRequireDefault(require("antd/es/popover"));
require("antd/es/checkbox/style");
var _checkbox = _interopRequireDefault(require("antd/es/checkbox"));
require("antd/es/tooltip/style");
var _tooltip = _interopRequireDefault(require("antd/es/tooltip"));
var _react = _interopRequireWildcard(require("react"));
var _proProvider = require("@ant-design/pro-provider");
var _configProvider = require("antd/lib/config-provider");
var _icons = require("@ant-design/icons");
var _reactDnd = require("react-dnd");
var _classnames = _interopRequireDefault(require("classnames"));
var _reactDndHtml5Backend = _interopRequireDefault(require("react-dnd-html5-backend"));
var _container = _interopRequireDefault(require("../../container"));
var _DndItem = _interopRequireDefault(require("./DndItem"));
require("./index.less");
var _DragIcon = _interopRequireDefault(require("./DragIcon"));
var _utils = require("../../utils");
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(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 _objectWithoutPropertiesLoose(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 _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
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 _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else 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 _defineProperty(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; }
var ToolTipIcon = function ToolTipIcon(_ref) {
var title = _ref.title,
show = _ref.show,
children = _ref.children,
columnKey = _ref.columnKey,
fixed = _ref.fixed;
var _Container$useContain = _container.default.useContainer(),
columnsMap = _Container$useContain.columnsMap,
setColumnsMap = _Container$useContain.setColumnsMap;
if (!show) {
return null;
}
return /*#__PURE__*/_react.default.createElement(_tooltip.default, {
title: title
}, /*#__PURE__*/_react.default.createElement("span", {
onClick: function onClick() {
var config = columnsMap[columnKey] || {};
var columnKeyMap = _objectSpread(_objectSpread({}, columnsMap), {}, _defineProperty({}, columnKey, _objectSpread(_objectSpread({}, config), {}, {
fixed: fixed
})));
setColumnsMap(columnKeyMap);
}
}, children));
};
var CheckboxListItem = function CheckboxListItem(_ref2) {
var columnKey = _ref2.columnKey,
className = _ref2.className,
columnsMap = _ref2.columnsMap,
title = _ref2.title,
setColumnsMap = _ref2.setColumnsMap,
fixed = _ref2.fixed;
var intl = (0, _proProvider.useIntl)();
var config = columnsMap[columnKey || 'null'] || {
show: true
};
return /*#__PURE__*/_react.default.createElement("span", {
className: "".concat(className, "-list-item"),
key: columnKey
}, /*#__PURE__*/_react.default.createElement(_DragIcon.default, null), /*#__PURE__*/_react.default.createElement(_checkbox.default, {
onChange: function onChange(e) {
if (columnKey) {
var tempConfig = columnsMap[columnKey] || {};
var newSetting = _objectSpread({}, tempConfig);
if (e.target.checked) {
delete newSetting.show;
} else {
newSetting.show = false;
}
var columnKeyMap = _objectSpread(_objectSpread({}, columnsMap), {}, _defineProperty({}, columnKey, newSetting)); // 如果没有值了,直接干掉他
if (Object.keys(newSetting).length === 0) {
delete columnKeyMap[columnKey];
}
setColumnsMap(columnKeyMap);
}
},
checked: config.show !== false
}, title), /*#__PURE__*/_react.default.createElement("span", {
className: "".concat(className, "-list-item-option")
}, /*#__PURE__*/_react.default.createElement(ToolTipIcon, {
columnKey: columnKey,
fixed: "left",
title: intl.getMessage('tableToolBar.leftPin', '固定在列首'),
show: fixed !== 'left'
}, /*#__PURE__*/_react.default.createElement(_icons.VerticalAlignTopOutlined, null)), /*#__PURE__*/_react.default.createElement(ToolTipIcon, {
columnKey: columnKey,
fixed: undefined,
title: intl.getMessage('tableToolBar.noPin', '不固定'),
show: !!fixed
}, /*#__PURE__*/_react.default.createElement(_icons.VerticalAlignMiddleOutlined, null)), /*#__PURE__*/_react.default.createElement(ToolTipIcon, {
columnKey: columnKey,
fixed: "right",
title: intl.getMessage('tableToolBar.rightPin', '固定在列尾'),
show: fixed !== 'right'
}, /*#__PURE__*/_react.default.createElement(_icons.VerticalAlignBottomOutlined, null))));
};
var CheckboxList = function CheckboxList(_ref3) {
var list = _ref3.list,
className = _ref3.className,
_ref3$showTitle = _ref3.showTitle,
showTitle = _ref3$showTitle === void 0 ? true : _ref3$showTitle,
listTitle = _ref3.title;
var _Container$useContain2 = _container.default.useContainer(),
columnsMap = _Container$useContain2.columnsMap,
setColumnsMap = _Container$useContain2.setColumnsMap,
sortKeyColumns = _Container$useContain2.sortKeyColumns,
setSortKeyColumns = _Container$useContain2.setSortKeyColumns;
var show = list && list.length > 0;
if (!show) {
return null;
}
var move = function move(id, targetIndex) {
var newMap = _objectSpread({}, columnsMap);
var newColumns = _toConsumableArray(sortKeyColumns);
var findIndex = newColumns.findIndex(function (columnKey) {
return columnKey === id;
});
if (findIndex === undefined) {
return;
}
var index = newColumns[findIndex];
newColumns.splice(findIndex, 1);
if (targetIndex === 0) {
newColumns.unshift(index);
} else {
newColumns.splice(targetIndex, 0, index);
}
newColumns.forEach(function (key, order) {
newMap[key] = _objectSpread(_objectSpread({}, newMap[key] || {}), {}, {
order: order
});
});
setColumnsMap(newMap);
setSortKeyColumns(newColumns);
};
var listDom = list.map(function (_ref4, index) {
var key = _ref4.key,
dataIndex = _ref4.dataIndex,
title = _ref4.title,
fixed = _ref4.fixed,
rest = _objectWithoutProperties(_ref4, ["key", "dataIndex", "title", "fixed"]);
var columnKey = (0, _utils.genColumnKey)(key, rest.index);
return /*#__PURE__*/_react.default.createElement(_DndItem.default, {
index: index,
id: "".concat(columnKey),
key: columnKey,
end: function end(id, targetIndex) {
move(id, targetIndex);
}
}, /*#__PURE__*/_react.default.createElement(CheckboxListItem, {
setColumnsMap: setColumnsMap,
columnKey: columnKey || "".concat(index),
columnsMap: columnsMap,
title: title,
fixed: fixed,
className: className
}));
});
return /*#__PURE__*/_react.default.createElement(_reactDnd.DndProvider, {
backend: _reactDndHtml5Backend.default
}, showTitle && /*#__PURE__*/_react.default.createElement("span", {
className: "".concat(className, "-list-title")
}, listTitle), listDom);
};
var GroupCheckboxList = function GroupCheckboxList(_ref5) {
var localColumns = _ref5.localColumns,
className = _ref5.className;
var rightList = [];
var leftList = [];
var list = [];
var intl = (0, _proProvider.useIntl)();
localColumns.forEach(function (item) {
var fixed = item.fixed;
if (fixed === 'left') {
leftList.push(item);
return;
}
if (fixed === 'right') {
rightList.push(item);
return;
}
list.push(item);
});
var showRight = rightList && rightList.length > 0;
var showLeft = leftList && leftList.length > 0;
return /*#__PURE__*/_react.default.createElement("div", {
className: (0, _classnames.default)("".concat(className, "-list"), _defineProperty({}, "".concat(className, "-list-group"), showRight || showLeft))
}, /*#__PURE__*/_react.default.createElement(CheckboxList, {
title: intl.getMessage('tableToolBar.leftFixedTitle', '固定在左侧'),
list: leftList,
className: className
}), /*#__PURE__*/_react.default.createElement(CheckboxList, {
list: list,
title: intl.getMessage('tableToolBar.noFixedTitle', '不固定'),
showTitle: showLeft || showRight,
className: className
}), /*#__PURE__*/_react.default.createElement(CheckboxList, {
title: intl.getMessage('tableToolBar.rightFixedTitle', '固定在右侧'),
list: rightList,
className: className
}));
};
var ColumnSetting = function ColumnSetting(props) {
var counter = _container.default.useContainer();
var localColumns = props.columns || counter.columns || [];
var columnsMap = counter.columnsMap,
setColumnsMap = counter.setColumnsMap,
setSortKeyColumns = counter.setSortKeyColumns;
/**
* 设置全部选中,或全部未选中
* @param show
*/
var setAllSelectAction = function setAllSelectAction() {
var show = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
var columnKeyMap = {};
localColumns.forEach(function (_ref6) {
var key = _ref6.key,
fixed = _ref6.fixed,
index = _ref6.index;
var columnKey = (0, _utils.genColumnKey)(key, index);
if (columnKey) {
columnKeyMap[columnKey] = {
show: show,
fixed: fixed
};
}
});
setColumnsMap(columnKeyMap);
}; // 选中的 key 列表
var selectedKeys = Object.values(columnsMap).filter(function (value) {
return !value || value.show === false;
}); // 是否已经选中
var indeterminate = selectedKeys.length > 0 && selectedKeys.length !== localColumns.length;
var intl = (0, _proProvider.useIntl)();
var _useContext = (0, _react.useContext)(_configProvider.ConfigContext),
getPrefixCls = _useContext.getPrefixCls;
var className = getPrefixCls('pro-table-column-setting');
var toolBarClassName = getPrefixCls('pro-table-toolbar');
return /*#__PURE__*/_react.default.createElement(_popover.default, {
arrowPointAtCenter: true,
title: /*#__PURE__*/_react.default.createElement("div", {
className: "".concat(className, "-title")
}, /*#__PURE__*/_react.default.createElement(_checkbox.default, {
indeterminate: indeterminate,
checked: selectedKeys.length === 0 && selectedKeys.length !== localColumns.length,
onChange: function onChange(e) {
if (e.target.checked) {
setAllSelectAction();
} else {
setAllSelectAction(false);
}
}
}, intl.getMessage('tableToolBar.columnDisplay', '列展示')), /*#__PURE__*/_react.default.createElement("a", {
onClick: function onClick() {
setColumnsMap({});
setSortKeyColumns([]);
}
}, intl.getMessage('tableToolBar.reset', '重置'))),
overlayClassName: "".concat(className, "-overlay"),
trigger: "click",
placement: "bottomRight",
content: /*#__PURE__*/_react.default.createElement(GroupCheckboxList, {
className: className,
localColumns: localColumns
})
}, /*#__PURE__*/_react.default.createElement("span", {
className: "".concat(toolBarClassName, "-item-icon")
}, /*#__PURE__*/_react.default.createElement(_tooltip.default, {
title: intl.getMessage('tableToolBar.columnSetting', '列设置')
}, /*#__PURE__*/_react.default.createElement(_icons.SettingOutlined, null))));
};
var _default = ColumnSetting;
exports.default = _default;