UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

277 lines (215 loc) 9.24 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = _interopRequireWildcard(require("react")); var _mobxReactLite = require("mobx-react-lite"); var _alert = _interopRequireDefault(require("../../../lib/alert")); var _configure = require("../../../lib/configure"); var _popover = _interopRequireDefault(require("../../../lib/popover")); var _mobx = require("mobx"); var _radio = _interopRequireDefault(require("../radio")); var _typography = _interopRequireDefault(require("../typography")); var _util = _interopRequireDefault(require("../overflow-tip/util")); var _singleton = require("../tooltip/singleton"); var _utils = require("../data-set/utils"); var _TableContext = _interopRequireDefault(require("./TableContext")); var _localeContext = require("../locale-context"); var _tooltip = _interopRequireDefault(require("../tooltip")); var _button = _interopRequireDefault(require("../button")); var _enum = require("../button/enum"); var _enum2 = require("../core/enum"); var _message = _interopRequireDefault(require("../message")); var Text = _typography["default"].Text; var ClipboardBar = function ClipboardBar(props) { var clipboard = props.clipboard; var _useContext = (0, _react.useContext)(_TableContext["default"]), tableStore = _useContext.tableStore, prefixCls = _useContext.prefixCls, dataSet = _useContext.dataSet; var refText = (0, _react.useRef)(null); var handleDownloadtemplate = (0, _react.useCallback)(function () { var getXlsxConfig = (0, _configure.getConfig)('xlsx'); if (getXlsxConfig.name !== 'xlsx') { _message["default"].warning((0, _localeContext.$l)('Table', 'no_xlsx')); return; } var leafs = tableStore.columnGroups.leafs; var templateHeader = {}; // 表头 var templateType = {}; // 字段类型 var templateIsMutiple = {}; // 是否多值 for (var i = 0; i < leafs.length; i++) { var item = leafs[i]; var columnName = item && item.column.name; if (columnName) { var field = dataSet.fields.get(columnName); if (field) { var label = field.get('label'); var type = field.get('type'); var isMutiple = field.get('multiple'); templateHeader[columnName] = label; templateType[columnName] = type; templateIsMutiple[columnName] = isMutiple; } } } var data = []; // 模拟 5 条数据 var _loop = function _loop(_i) { var row = {}; Object.keys(templateHeader).forEach(function (key) { switch (templateType[key]) { case "string": case "intl": row[key] = templateIsMutiple[key] ? '文字1,文字2' : '文字'; break; case "number": row[key] = templateIsMutiple[key] ? "10, 20" : Math.floor(Math.random() * 100 + 1); break; case "boolean": row[key] = Math.random() > 0.5 ? "是" : "否"; break; case "object": row[key] = templateIsMutiple[key] ? "LOV相关文字1,LOV相关文字2" : "LOV相关文字"; break; case "date": row[key] = templateIsMutiple[key] ? "2023-07-01,2023-07-02" : "2023-07-01"; break; case "dateTime": row[key] = templateIsMutiple[key] ? "2023-07-01 12:12:12,2023-07-02 13:13:13" : "2023-07-01 12:12:12"; break; case "year": row[key] = templateIsMutiple[key] ? '2023,2024' : '2023'; break; case "week": row[key] = templateIsMutiple[key] ? '2023-20周,2023-21周' : '2023-20周'; break; case "month": row[key] = templateIsMutiple[key] ? '2023-01,2024-01' : '2023-01'; break; case "time": row[key] = templateIsMutiple[key] ? '05:05:00,16:14:15' : '16:14:15'; break; case "email": row[key] = templateIsMutiple[key] ? 'xxxxxx@xxx.com,zzzzz@zzz.com' : 'xxxxxx@xxx.com'; break; case "url": row[key] = templateIsMutiple[key] ? 'https:www.xxxxxx.com/,https:www.zzzzzz.com/' : 'https:www.xxxxxx.com/'; break; case "bigNumber": row[key] = templateIsMutiple[key] ? '123456789.123456789,1000000.000000001' : '123456789.123456789'; break; default: break; } }); data.push(row); }; for (var _i = 0; _i < 5; _i++) { _loop(_i); } data.unshift(templateHeader); (0, _utils.exportExcel)(data, (0, _localeContext.$l)('Table', 'paste_template'), getXlsxConfig); }, [dataSet]); var clipboardDescription = (0, _react.useMemo)(function () { if (clipboard.description) { return clipboard.description; } var isMac = navigator.platform.toLowerCase().includes('mac'); var info = [/*#__PURE__*/_react["default"].createElement("span", { key: "info-header" }, (0, _localeContext.$l)('Table', 'table_support'))]; if (clipboard.copy) { info.push( /*#__PURE__*/_react["default"].createElement("span", { key: "info-copy" }, " ", /*#__PURE__*/_react["default"].createElement(Text, { keyboard: true }, isMac ? 'command' : 'CTRL', "+C"), " ", (0, _localeContext.$l)('Table', 'ctrl_c_info'))); } if (clipboard.paste) { info.push( /*#__PURE__*/_react["default"].createElement("span", { key: "info-paste" }, " ", /*#__PURE__*/_react["default"].createElement(Text, { keyboard: true }, isMac ? 'command' : 'CTRL', "+V"), " ", (0, _localeContext.$l)('Table', 'ctrl_v_info'))); } return info; }, [clipboard]); var handleChange = (0, _react.useCallback)((0, _mobx.action)(function (value) { tableStore.isCopyPristine = value === 'pristine'; // 切换之后,Table 聚焦 tableStore.node.focus(); }), []); var suffixInfo = (0, _react.useMemo)(function () { var btn = []; if (clipboard.copy) { btn.push( /*#__PURE__*/_react["default"].createElement(_popover["default"], { key: "clipboard-copy", trigger: "hover", content: /*#__PURE__*/_react["default"].createElement("form", null, /*#__PURE__*/_react["default"].createElement(_radio["default"], { name: "base", value: "display", defaultChecked: true, onChange: handleChange }, (0, _localeContext.$l)('Table', 'copy_display')), /*#__PURE__*/_react["default"].createElement(_radio["default"], { name: "base", value: "pristine", onChange: handleChange }, (0, _localeContext.$l)('Table', 'copy_pristine'))) }, /*#__PURE__*/_react["default"].createElement("a", null, (0, _localeContext.$l)('Table', 'copy_config')))); } if (clipboard.paste) { btn.push([/*#__PURE__*/_react["default"].createElement("a", { key: "clipboard-paste", onClick: handleDownloadtemplate, style: { marginLeft: clipboard.copy ? '0.16rem' : 0 } }, (0, _localeContext.$l)('Table', 'download_table_template')), /*#__PURE__*/_react["default"].createElement(_tooltip["default"], { title: (0, _localeContext.$l)('Table', 'download_table_template_tooltip'), theme: "light", key: "download_table_template" }, /*#__PURE__*/_react["default"].createElement(_button["default"], { funcType: _enum.FuncType.flat, color: _enum.ButtonColor.primary, size: _enum2.Size.small, icon: 'help_outline' }))]); } return btn; }, [clipboard]); var handleMouseEnter = (0, _react.useCallback)(function () { if (refText.current && (0, _util["default"])(refText.current)) { (0, _singleton.show)(refText.current, { title: clipboardDescription, theme: 'dark' }); } }, [clipboard, refText]); var handleMouseLeave = (0, _react.useCallback)(function () { if (refText.current) { (0, _singleton.hide)(); } }, [refText]); return /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-clipboard") }, /*#__PURE__*/_react["default"].createElement(_alert["default"], { message: /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-clipboard-content") }, /*#__PURE__*/_react["default"].createElement("div", { ref: refText, className: "".concat(prefixCls, "-clipboard-content-text"), onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave }, clipboardDescription), /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-clipboard-content-suffix") }, suffixInfo)), type: "info", showIcon: true })); }; ClipboardBar.displayName = 'ClipboardBar'; var _default = (0, _mobxReactLite.observer)(ClipboardBar); exports["default"] = _default; //# sourceMappingURL=ClipboardBar.js.map