UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

644 lines (643 loc) 45.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.productColumnInfo = void 0; var tslib_1 = require("tslib"); var react_1 = tslib_1.__importStar(require("react")); var sortablejs_1 = tslib_1.__importDefault(require("sortablejs")); var cloneDeep_1 = tslib_1.__importDefault(require("lodash/cloneDeep")); var Overlay_1 = tslib_1.__importDefault(require("../../components/Overlay")); var PopOver_1 = tslib_1.__importDefault(require("../../components/PopOver")); var Button_1 = tslib_1.__importDefault(require("../../components/Button")); var TooltipWrapper_1 = tslib_1.__importDefault(require("../../components/TooltipWrapper")); var helper_1 = require("../../utils/helper"); var tpl_1 = require("../../utils/tpl"); var icons_1 = require("../../components/icons"); var InputBox_1 = tslib_1.__importDefault(require("../../components/InputBox")); var RootClose_1 = require("../../utils/RootClose"); var icons_2 = require("@ant-design/icons"); var api_1 = require("../../utils/api"); var antd_1 = require("antd"); var tools_1 = require("../../utils/shell/tools"); var shell_1 = require("../../utils/shell"); var debounce_1 = tslib_1.__importDefault(require("lodash/debounce")); var commonTableFunction_1 = require("../../store/utils/commonTableFunction"); var lodash_1 = require("lodash"); //计算出columnInfo数据 var productColumnInfo = function (sortColumns) { var saveCols = {}; sortColumns.forEach(function (col, index) { var _a; if (col.type === 'operation') return; saveCols[col.name] = { index: index, hidden: ((_a = col === null || col === void 0 ? void 0 : col.pristine) === null || _a === void 0 ? void 0 : _a.hidden) ? 1 : 0, fixed: col.fixed }; }); return saveCols; }; exports.productColumnInfo = productColumnInfo; var ColumnToggler = function (props) { var tooltip = props.tooltip, placement = props.placement, tooltipContainer = props.tooltipContainer, tooltipTrigger = props.tooltipTrigger, tooltipRootClose = props.tooltipRootClose, disabledTip = props.disabledTip, block = props.block, disabled = props.disabled, $schema = props.$schema, btnClassName = props.btnClassName, size = props.size, label = props.label, level = props.level, primary = props.primary, className = props.className, cx = props.classnames, align = props.align, iconOnly = props.iconOnly, icon = props.icon, isActived = props.isActived, data = props.data, draggable = props.draggable, ns = props.classPrefix, modalContainer = props.modalContainer, defaultIsOpened = props.defaultIsOpened, columns = props.columns, saveColApi = props.saveColApi, env = props.env, hideExpandIco = props.hideExpandIco, __ = props.translate, indexColShow = props.indexColShow, setIndexCol = props.setIndexCol, updateColumnSettingList = props.updateColumnSettingList, flushDebounced = props.flushDebounced, columnSettingTemps = props.columnSettingTemps; var _a = (0, react_1.useState)(defaultIsOpened), isOpened = _a[0], setIsOpend = _a[1]; var _b = (0, react_1.useState)([]), sortColumns = _b[0], setSortColumns = _b[1]; var _c = (0, react_1.useState)(columnSettingTemps || []), tempList = _c[0], setTempList = _c[1]; var _d = (0, react_1.useState)(false), tempVisible = _d[0], setTempVisible = _d[1]; var _e = (0, react_1.useState)(''), selectedTemp = _e[0], setSelectedTemp = _e[1]; var _f = (0, react_1.useState)(''), tmpSelected = _f[0], setTmpSelected = _f[1]; var _g = (0, react_1.useState)(''), editingTemp = _g[0], setEditingTemp = _g[1]; var _h = (0, react_1.useState)(indexColShow), indexVisible = _h[0], setIndexVisible = _h[1]; var _j = (0, react_1.useState)(false), selectTmpShow = _j[0], setSelectTmpShow = _j[1]; var _k = (0, react_1.useState)(false), selectTmpConfirmShow = _k[0], setSelectTmpConfirmShow = _k[1]; var _l = (0, react_1.useState)(''), searchValue = _l[0], setSearchValue = _l[1]; var _m = (0, react_1.useState)(), selectedItem = _m[0], setSelectedItem = _m[1]; var form = antd_1.Form.useForm()[0]; var target = (0, react_1.useRef)(); var dialogRef = (0, react_1.useRef)(); var sortable = (0, react_1.useRef)(); var sortColumnsRef = (0, react_1.useRef)([]); var domRef = function (ref) { target.current = ref; }; (0, react_1.useEffect)(function () { setTempList(columnSettingTemps); if (columnSettingTemps.length > 0) { setSelectedTemp(columnSettingTemps[0].tempKey); } }, [columnSettingTemps]); (0, react_1.useEffect)(function () { if (searchValue) { debounceHandleSearch(searchValue); } else { setSelectedItem(undefined); } }, [searchValue]); (0, react_1.useEffect)(function () { var _a; if (selectedItem && searchValue) { var activeDom = (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.querySelector('.display-field-active'); activeDom === null || activeDom === void 0 ? void 0 : activeDom.scrollIntoView({ behavior: 'smooth', block: 'start' }); } else { setSelectedItem(undefined); } }, [selectedItem]); var innerRef = (0, react_1.useRef)(null); var handleSearch = function (searchValue) { var _a; //匹配规则,1.全匹配 2.以关键字开头匹配 3.模糊匹配 var target = sortColumns.find(function (item) { return item.label === searchValue; }); !target && (target = sortColumns.find(function (item) { return item.label.startsWith(searchValue); })); !target && (target = sortColumns.find(function (item) { var _a; return (_a = item.label) === null || _a === void 0 ? void 0 : _a.includes(searchValue); })); if (target) { setSelectedItem(target); if (target.name === (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.name)) { var activeDom = (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.querySelector('.display-field-active'); activeDom === null || activeDom === void 0 ? void 0 : activeDom.scrollIntoView({ behavior: 'smooth', block: 'start' }); } } }; var debounceHandleSearch = (0, debounce_1.default)(handleSearch, 300); var initColumns = function (cols) { var colList = (0, cloneDeep_1.default)(cols).filter(function (item) { return item.type !== 'operation'; }); setSortColumns(colList); }; (0, react_1.useEffect)(function () { if (isOpened) { initColumns(columns); } }, [columns, isOpened]); (0, react_1.useEffect)(function () { resetClick.current = false; }, [isOpened]); (0, react_1.useEffect)(function () { sortColumnsRef.current = sortColumns; }, [sortColumns]); (0, react_1.useEffect)(function () { initDragging(); return function () { target.current = undefined; destroyDragging(); }; }, []); //获取模板列表并保存 var getTempList = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var api, data, list; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: api = (0, api_1.normalizeApi)((saveColApi === null || saveColApi === void 0 ? void 0 : saveColApi.url) || '', 'get'); return [4 /*yield*/, env.fetcher(api)]; case 1: data = (_a.sent()).data; list = (data === null || data === void 0 ? void 0 : data.filter(function (item) { return item.tempKey; })) || []; setTempList(list); if (list.length > 0) { setSelectedTemp(list[0].tempKey); } return [2 /*return*/, list]; } }); }); }; var destroyDragging = function () { sortable.current && sortable.current.destroy(); }; // @autobind var dragRef = function (ref) { if (draggable && ref) { initDragging(); } }; var canConfirmFetch = (0, react_1.useRef)(false); var toggle = function (e) { e.preventDefault(); flushDebounced === null || flushDebounced === void 0 ? void 0 : flushDebounced(); setIsOpend(!isOpened); }; var updateToggledColumn = function (column, value, shift) { canConfirmFetch.current = true; var newSortColumns = sortColumns.map(function (item) { if (item.name === column.name) { return tslib_1.__assign(tslib_1.__assign({}, item), { pristine: tslib_1.__assign(tslib_1.__assign({}, item === null || item === void 0 ? void 0 : item.pristine), { hidden: !value }), toggled: !!value }); } return item; }); setSortColumns(tslib_1.__spreadArray([], newSortColumns, true)); }; var button = (react_1.default.createElement("button", { onClick: toggle, disabled: disabled, className: cx('Button', btnClassName, typeof level === 'undefined' ? 'Button--default' : level ? "Button--".concat(level) : '', { 'Button--block': block, 'Button--primary': primary, 'Button--iconOnly': iconOnly }, size ? "Button--".concat(size) : '') }, icon ? (typeof icon === 'string' ? icon.includes('#') ? react_1.default.createElement(icons_1.Icon, { icon: icon, className: "icon", symbol: true }) : (react_1.default.createElement("i", { className: cx(icon, 'm-r-xs') })) : (icon)) : null, typeof label === 'string' ? (0, tpl_1.filter)(label, data) : label, hideExpandIco || draggable ? null : (react_1.default.createElement("span", { className: cx('ColumnToggler-caret') }, react_1.default.createElement(icons_1.Icon, { icon: "caret", className: "icon" }))))); var swapColumnPosition = function (oldIndex, newIndex) { var newColumns = tslib_1.__spreadArray([], sortColumnsRef.current, true); var oldColumn = newColumns[oldIndex]; newColumns.splice(newIndex > oldIndex ? newIndex + 1 : newIndex, 0, oldColumn); oldIndex > newIndex ? newColumns.splice(oldIndex + 1, 1) : newColumns.splice(oldIndex, 1); setSortColumns(newColumns); }; var renderOuter = function () { var _a; var popOverContainer = props.popOverContainer, cx = props.classnames, ns = props.classPrefix, children = props.children, closeOnClick = props.closeOnClick, closeOnOutside = props.closeOnOutside; var body = (react_1.default.createElement(RootClose_1.RootClose, { disabled: !isOpened, onRootClose: closeOnOutside !== false ? close : helper_1.noop }, function (ref) { return (react_1.default.createElement("ul", { className: cx('ColumnToggler-menu'), onClick: closeOnClick ? close : helper_1.noop, ref: ref }, children)); })); if (popOverContainer) { return (react_1.default.createElement(Overlay_1.default, { container: popOverContainer, target: function () { return target.current; }, show: true }, react_1.default.createElement(PopOver_1.default, { overlay: true, onHide: close, classPrefix: ns, className: cx('ColumnToggler-popover'), style: { minWidth: (_a = target.current) === null || _a === void 0 ? void 0 : _a.offsetWidth } }, body))); } return body; }; var close = function () { var _a; setSelectedTemp(''); setTmpSelected(''); setIsOpend(false); (_a = props.closeDrawer) === null || _a === void 0 ? void 0 : _a.call(props); }; // @autobind var onConfirm = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var onColumnToggle, api, targetCol, saveCols, targetCol, isValidCols, targetTemp; var _a; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: onColumnToggle = props.onColumnToggle; if (!((!tempList || (tempList && tempList.length === 0)) && !canConfirmFetch.current && resetClick.current)) return [3 /*break*/, 2]; api = (0, api_1.normalizeApi)({ url: (saveColApi === null || saveColApi === void 0 ? void 0 : saveColApi.url) || '', method: 'delete' }); return [4 /*yield*/, env.fetcher(api)]; case 1: _b.sent(); targetCol = columns.find(function (item) { return item.type === 'operation'; }); onColumnToggle(targetCol ? tslib_1.__spreadArray(tslib_1.__spreadArray([], sortColumns, true), [targetCol], false) : tslib_1.__spreadArray([], sortColumns, true), {}, false, undefined); return [3 /*break*/, 3]; case 2: saveCols = (0, exports.productColumnInfo)(sortColumns); targetCol = columns.find(function (item) { return item.type === 'operation'; }); isValidCols = Object.values(saveCols).some(function (item) { return item.hidden === 0; }); if (!isValidCols) { antd_1.message.warning('请至少选择一个显示列'); return [2 /*return*/]; } targetTemp = selectedTemp ? tempList.find(function (item) { return item.tempKey === selectedTemp; }) : undefined; if (targetTemp) { targetTemp = tslib_1.__assign(tslib_1.__assign({}, targetTemp), { columnInfo: saveCols }); } if (targetCol) { onColumnToggle && onColumnToggle(tslib_1.__spreadArray(tslib_1.__spreadArray([], sortColumns, true), [targetCol], false), saveCols, canConfirmFetch.current, targetTemp); } else { onColumnToggle && onColumnToggle(tslib_1.__spreadArray([], sortColumns, true), saveCols, canConfirmFetch.current, targetTemp); } _b.label = 3; case 3: setIndexCol(indexVisible); setIsOpend(false); (_a = props.closeDrawer) === null || _a === void 0 ? void 0 : _a.call(props); return [2 /*return*/]; } }); }); }; var initDragging = function () { var _a; var el = (_a = dialogRef === null || dialogRef === void 0 ? void 0 : dialogRef.current) === null || _a === void 0 ? void 0 : _a.querySelector(".".concat(ns, "ColumnToggler-modal-body-right .").concat(ns, "ColumnToggler-modal-content")); if (el) { sortable.current = new sortablejs_1.default(el, { group: ".".concat(ns, "ColumnToggler-modal-body-right"), animation: 150, // 提供class可拖动 handle: (0, helper_1.isMobile)() ? ".".concat(ns, "ColumnToggler-menuItem-dragBar") : ".".concat(ns, "ColumnToggler-menuItem"), ghostClass: "".concat(ns, "ColumnToggler-menuItem--dragging"), onEnd: function (e) { if (e.newIndex === e.oldIndex) { return; } canConfirmFetch.current = true; swapColumnPosition(e.oldIndex, e.newIndex); } }); } }; var sortFix = function (index, column) { var newSortColumns = tslib_1.__spreadArray([], sortColumns, true); canConfirmFetch.current = true; if (column.groupName) { var cols = newSortColumns.map(function (item, fixIndex) { if (item.groupName === column.groupName) { var targetColumn = tslib_1.__assign(tslib_1.__assign({}, item), { fixed: (item === null || item === void 0 ? void 0 : item.fixed) ? '' : 'left', pristine: tslib_1.__assign(tslib_1.__assign({}, item.pristine), { fixed: (item === null || item === void 0 ? void 0 : item.fixed) ? '' : 'left' }) }); return targetColumn; } return item; }); setSortColumns(cols); } else { var targetColumn = tslib_1.__assign(tslib_1.__assign({}, column), { fixed: (column === null || column === void 0 ? void 0 : column.fixed) ? '' : 'left', pristine: tslib_1.__assign(tslib_1.__assign({}, column.pristine), { fixed: (column === null || column === void 0 ? void 0 : column.fixed) ? '' : 'left' }) }); newSortColumns.splice(index, 1, targetColumn); setSortColumns(newSortColumns); } }; var sortUp = function (index, column) { if (index === 0) return; canConfirmFetch.current = true; var newColumns = tslib_1.__spreadArray([], sortColumnsRef.current, true); var delItem = newColumns.splice(index, 1).map(function (item) { return (tslib_1.__assign(tslib_1.__assign({}, item), { toggled: true, pristine: tslib_1.__assign(tslib_1.__assign({}, item === null || item === void 0 ? void 0 : item.pristine), { hidden: false }) })); }); setSortColumns(tslib_1.__spreadArray(tslib_1.__spreadArray([], delItem, true), newColumns, true)); }; var sortDown = function (index, column) { if (index === sortColumnsRef.current.length - 1) return; canConfirmFetch.current = true; var newColumns = tslib_1.__spreadArray([], sortColumnsRef.current, true); var delItem = newColumns.splice(index, 1); setSortColumns(tslib_1.__spreadArray(tslib_1.__spreadArray([], newColumns, true), delItem, true)); }; var saveTemplate = function () { setTempVisible(true); }; var onOk = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var values, data_1, _a, msg, ok, data_2, api, msg, list; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: return [4 /*yield*/, form.validateFields()]; case 1: values = _b.sent(); if (!editingTemp) return [3 /*break*/, 3]; data_1 = tslib_1.__assign(tslib_1.__assign({}, values), { tempKey: editingTemp }); return [4 /*yield*/, env.fetcher({ url: "/api/v1/personal/setting/tempName/".concat(props.crudName), method: 'post' }, data_1)]; case 2: _a = _b.sent(), msg = _a.msg, ok = _a.ok; if (ok) { setTmpSelected(''); setSelectedTemp(''); setEditingTemp(''); } antd_1.message.info(msg); return [3 /*break*/, 5]; case 3: data_2 = tslib_1.__assign(tslib_1.__assign({}, values), { tempKey: (0, helper_1.uuid)(), columnInfo: (0, exports.productColumnInfo)(sortColumns) }); api = (0, api_1.normalizeApi)((saveColApi === null || saveColApi === void 0 ? void 0 : saveColApi.url) || '', 'post'); return [4 /*yield*/, env.fetcher(api, data_2)]; case 4: msg = (_b.sent()).msg; setEditingTemp(''); antd_1.message.info(msg); _b.label = 5; case 5: return [4 /*yield*/, getTempList()]; case 6: list = _b.sent(); updateColumnSettingList(list); setTempVisible(false); return [2 /*return*/]; } }); }); }; var onSelect = function (value) { var target = tempList.find(function (item) { return item.tempKey === value; }); var newList = Object.entries((target === null || target === void 0 ? void 0 : target.columnInfo) || {}) .filter(function (_a) { var k = _a[0], v = _a[1]; return !!columns.find(function (item) { return item.name === k; }); }) .map(function (_a) { var key = _a[0], v = _a[1]; var col = columns.find(function (item) { return item.name === key; }); return tslib_1.__assign(tslib_1.__assign({}, col), { index: v.index, toggled: !(v === null || v === void 0 ? void 0 : v.hidden), fixed: v.fixed, pristine: tslib_1.__assign(tslib_1.__assign({}, col === null || col === void 0 ? void 0 : col.pristine), { hidden: !!(v === null || v === void 0 ? void 0 : v.hidden) }) }); }); var newtempColumns = (0, cloneDeep_1.default)(columns).filter(function (item) { return item.type !== 'operation'; }).map(function (item) { var findItem = newList.find(function (litem) { return litem.name === item.name; }); if (findItem) return findItem; return item; }).sort(function (a, b) { return a.index - b.index; }); canConfirmFetch.current = true; setSelectedTemp(value); setSortColumns(newtempColumns); }; var delTemp = function (tempKey) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var api, _a, msg, ok, newList; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: api = (0, api_1.normalizeApi)({ url: (saveColApi === null || saveColApi === void 0 ? void 0 : saveColApi.url) || '', data: { tempKey: tempKey }, method: 'delete' }); return [4 /*yield*/, env.fetcher(api)]; case 1: _a = _b.sent(), msg = _a.msg, ok = _a.ok; antd_1.message.info(msg); if (ok) { setSelectTmpConfirmShow(false); setTmpSelected(''); setSelectedTemp(''); } newList = tempList.filter(function (item) { return item.tempKey !== tempKey; }); setTempList(newList); updateColumnSettingList(newList); return [2 /*return*/]; } }); }); }; var editTemp = function (e, tempKey, tempName) { e.stopPropagation(); form.setFieldsValue({ tempName: tempName }); setTempVisible(true); setEditingTemp(tempKey); }; var resetClick = (0, react_1.useRef)(false); var reset = function () { var colList = (0, cloneDeep_1.default)(columns) .filter(function (item) { return item.type !== 'operation'; }) .map(function (item) { var index = $schema.columns.findIndex(function (col) { return col.name === item.name; }); return tslib_1.__assign(tslib_1.__assign({}, item), { toggled: true, index: index, pristine: tslib_1.__assign(tslib_1.__assign({}, item === null || item === void 0 ? void 0 : item.pristine), { hidden: false }) }); }) .sort(function (a, b) { return a.index - b.index; }); setSortColumns(colList); resetClick.current = true; }; // 从excel导入列信息 var copyFromShell = function (content) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var list, arr, newList_1, newtempColumns; return tslib_1.__generator(this, function (_a) { try { if (!(0, lodash_1.isNil)(content) && content !== '') { list = content.split("\t").map(function (item) { return item.trim(); }).filter(function (item) { return item; }); if (list.length > 0) { arr = tslib_1.__spreadArray([], new Set(list), true).filter(function (info) { return !!columns.find(function (item) { return item.label === info; }); }); newList_1 = arr.map(function (colLabel, index) { var col = columns.find(function (item) { return item.label === colLabel; }); return tslib_1.__assign(tslib_1.__assign({}, col), { index: columns[index].index, toggled: true, fixed: col === null || col === void 0 ? void 0 : col.fixed, pristine: tslib_1.__assign(tslib_1.__assign({}, col === null || col === void 0 ? void 0 : col.pristine), { hidden: false }) }); }); newtempColumns = (0, cloneDeep_1.default)(columns).filter(function (item) { return item.type !== 'operation'; }).map(function (item) { var findItem = newList_1.find(function (litem) { return litem.name === item.name; }); if (findItem) return findItem; return item; }).sort(function (a, b) { return a.index - b.index; }); canConfirmFetch.current = true; setSortColumns(newtempColumns); } else { antd_1.message.info('剪切板内容格式错误'); } } else { antd_1.message.warning('剪切板为空'); } } catch (error) { console.error('读取剪切板内容时发生错误:', error); antd_1.message.warning('读取剪切板失败'); } return [2 /*return*/]; }); }); }; var tempModalClose = function () { form.resetFields(); setEditingTemp(''); }; /** * * @param check 不选,全选,反选 */ var handleUpdateAll = function (check) { canConfirmFetch.current = true; var newSortColumns = tslib_1.__spreadArray([], sortColumns, true).map(function (item) { var _a, _b; return (tslib_1.__assign(tslib_1.__assign({}, item), { pristine: tslib_1.__assign(tslib_1.__assign({}, item === null || item === void 0 ? void 0 : item.pristine), { hidden: check === 0 ? true : (check === 1 ? false : !((_a = item.pristine) === null || _a === void 0 ? void 0 : _a.hidden)) }), toggled: check === 0 ? false : (check === 1 ? true : !!((_b = item.pristine) === null || _b === void 0 ? void 0 : _b.hidden)) })); }); setSortColumns(tslib_1.__spreadArray([], newSortColumns, true)); }; var renderHeader = function () { if ((0, helper_1.isMobile)()) { return (react_1.default.createElement("div", { className: cx('ColumnToggler-modal-header') }, react_1.default.createElement("div", { className: 'header-left' }, react_1.default.createElement("div", { className: 'name-bar' }, __('Table.columnsToggler.colName')), react_1.default.createElement(Button_1.default, { level: "link", onClick: reset }, __('resetSettings'))), react_1.default.createElement("div", { className: 'header-right' }, react_1.default.createElement(Button_1.default, { onClick: function () { return handleUpdateAll(1); }, level: "link" }, __('Table.columnsToggler.selectAll')), react_1.default.createElement(Button_1.default, { onClick: function () { return handleUpdateAll(0); }, level: "link" }, __('Table.columnsToggler.Unselect')), react_1.default.createElement(Button_1.default, { onClick: function () { return handleUpdateAll(2); }, level: "link" }, __('Table.columnsToggler.selectReverse'))))); } return null; }; var renderToolbar = function (column, index) { var _a, _b, _c; return (react_1.default.createElement("div", { style: { display: 'flex', justifyContent: 'flex-start', alignItems: 'center', marginLeft: 'auto', fontSize: '16px' } }, ((_a = column.pristine) === null || _a === void 0 ? void 0 : _a.hidden) !== true && react_1.default.createElement(icons_2.CheckOutlined, { className: "operation-icons", onClick: function () { var _a; return updateToggledColumn(column, !!((_a = column.pristine) === null || _a === void 0 ? void 0 : _a.hidden)); }, style: { color: ((_b = column.pristine) === null || _b === void 0 ? void 0 : _b.hidden) ? '#A5A5A5' : '#3574ee' } }), ((_c = column.pristine) === null || _c === void 0 ? void 0 : _c.hidden) !== true && react_1.default.createElement(icons_2.PushpinOutlined, { className: 'operation-icons', onClick: function () { return sortFix(index, column); }, style: { color: column.fixed ? '#3574ee' : '#A5A5A5', transform: column.fixed ? 'rotate(-45deg)' : 'none' } }), react_1.default.createElement(icons_2.VerticalAlignTopOutlined, { onClick: function () { return sortUp(index, column); }, className: 'operation-icons', style: { color: '#A5A5A5' } }), react_1.default.createElement(icons_2.VerticalAlignBottomOutlined, { onClick: function () { return sortDown(index, column); }, className: 'operation-icons', style: { color: '#A5A5A5' } }))); }; //pc端底部按钮 var renderFooter = function () { return react_1.default.createElement("div", { className: cx('ColumnToggler-modal-footer') }, react_1.default.createElement("div", { className: 'footer-btn-group-left' }, react_1.default.createElement("div", { className: 'defaultModal-footer-left' }, react_1.default.createElement(antd_1.Button, { type: "primary", size: 'middle', onClick: saveTemplate }, "+ ", __('Table.columnsToggler.addTemplate')), react_1.default.createElement("div", { style: { width: 160, padding: 0, marginLeft: '10px' } }, react_1.default.createElement(antd_1.Select, { getPopupContainer: env.getModalContainer, style: { width: '100%', textAlign: 'left' }, onSelect: onSelect, value: selectedTemp, placement: "topRight", dropdownClassName: "temp-selector-drop dropdown-select-style" }, tempList.map(function (item) { return (react_1.default.createElement(antd_1.Select.Option, { value: item.tempKey, key: item.tempKey }, react_1.default.createElement("div", { style: { minWidth: '30px', height: '100%', maxWidth: '90px', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' } }, item.tempName), react_1.default.createElement("div", { className: "temp-tools ".concat((0, helper_1.isMobile)() ? 'is-mobile' : ''), onClick: function (e) { return e.stopPropagation(); } }, react_1.default.createElement(icons_2.EditOutlined, { onClick: function (e) { return editTemp(e, item.tempKey, item.tempName); } }), react_1.default.createElement(antd_1.Popconfirm, { title: "\u786E\u5B9A\u8981\u5220\u9664\u5417?", onConfirm: function () { return delTemp(item.tempKey); }, okText: __('confirm'), cancelText: __('cancel') }, react_1.default.createElement(icons_2.DeleteOutlined, null))))); }))))), react_1.default.createElement("div", { className: 'footer-btn-group-right', style: { display: 'flex' } }, react_1.default.createElement("div", null, react_1.default.createElement(antd_1.Input, { style: { width: 82, marginRight: 10 }, value: "\u53F3\u952E\u7C98\u8D34", onPaste: function (e) { var pastedText = e.clipboardData.getData('text').trim(); copyFromShell(pastedText); } })), react_1.default.createElement("div", { style: { marginRight: 10 } }, react_1.default.createElement(antd_1.Button, { onClick: reset }, __('resetSettings'))), react_1.default.createElement("div", null, react_1.default.createElement(antd_1.Button, { type: "primary", size: 'middle', onClick: onConfirm }, __('confirm'))))); }; var renderContent = function () { return (react_1.default.createElement(react_1.default.Fragment, null, renderHeader(), react_1.default.createElement("div", { className: cx('ColumnToggler-modal-body'), ref: dialogRef }, react_1.default.createElement("div", { className: cx('ColumnToggler-modal-body-right'), ref: dragRef }, (0, helper_1.isMobile)() ? react_1.default.createElement("div", { className: 'field-search' }, react_1.default.createElement(InputBox_1.default, { value: searchValue, className: 'input-box', onChange: setSearchValue, placeholder: '请输入关键字', clearable: false }, searchValue !== '' ? (react_1.default.createElement("a", { onClick: function () { setSearchValue(''); } }, react_1.default.createElement(icons_1.Icon, { icon: "close", className: "icon" }))) : (react_1.default.createElement(icons_1.Icon, { icon: "search", className: "icon" })))) : react_1.default.createElement("div", { className: 'tool-header-box' }, react_1.default.createElement("div", { className: 'btns' }, react_1.default.createElement("div", { style: { marginRight: '24px', fontWeight: '500' } }, __('Table.columnsToggler.colName')), react_1.default.createElement(Button_1.default, { size: "md", level: "link", onClick: function () { return handleUpdateAll(1); } }, __('Table.columnsToggler.selectAll')), react_1.default.createElement(Button_1.default, { size: "md", level: "link", onClick: function () { return handleUpdateAll(0); } }, __('Table.columnsToggler.Unselect')), react_1.default.createElement(Button_1.default, { size: "md", level: "link", onClick: function () { return handleUpdateAll(2); } }, __('Table.columnsToggler.selectReverse'))), react_1.default.createElement("div", { className: 'field-search' }, react_1.default.createElement(antd_1.Input, { onChange: function (e) { return setSearchValue(e.target.value); }, placeholder: __('Table.columnsToggler.searchPlaceholder'), style: { width: '130px' }, allowClear: true }), react_1.default.createElement("div", { className: 'field-toolbars-title' }, react_1.default.createElement("div", { style: { marginRight: '16px' } }, __('Table.columnsToggler.colShow')), react_1.default.createElement("div", { style: { marginRight: '16px' } }, __('Table.columnsToggler.colFixed')), react_1.default.createElement("div", { style: { marginRight: '16px' } }, __('Table.columnsToggler.clickToTop')), react_1.default.createElement("div", null, __('Table.columnsToggler.clickToBot'))))), react_1.default.createElement("ul", { className: cx('ColumnToggler-modal-content'), style: { overflowX: 'hidden' }, ref: innerRef }, sortColumns.map(function (column, index) { var _a; return (react_1.default.createElement("li", { className: cx('ColumnToggler-menuItem', { 'display-field-active': (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.name) === column.name }) + "".concat(column.fixed ? ' fixed-item' : ' normal-item'), key: column.name, //canSet为false不能设置显隐和排序 style: { display: ((_a = column === null || column === void 0 ? void 0 : column.pristine) === null || _a === void 0 ? void 0 : _a.canSet) === false ? 'none' : 'block' } }, react_1.default.createElement("div", { style: { display: 'flex', alignItems: 'center', height: '90%' } }, react_1.default.createElement("a", { className: cx('ColumnToggler-menuItem-dragBar') }, react_1.default.createElement(icons_1.Icon, { icon: "drag-bar", className: cx('icon') })), react_1.default.createElement("span", { className: "ellipsis menuItem-col", style: { display: 'inline-block', flex: 1 }, onClick: function () { var _a; return updateToggledColumn(column, !!((_a = column.pristine) === null || _a === void 0 ? void 0 : _a.hidden)); } }, (0, commonTableFunction_1.getColumnShowLabel)(column)), renderToolbar(column, index)))); })))), (0, helper_1.isMobile)() && react_1.default.createElement("footer", { className: cx('ColumnToggler-modal-footer') }, react_1.default.createElement("div", { className: 'footer-btn-group-left' }, tempList.length > 0 && react_1.default.createElement("div", null, react_1.default.createElement(Button_1.default, { size: 'md', onClick: function () { return setSelectTmpShow(true); } }, __('selectTemplate'))), react_1.default.createElement("div", null, react_1.default.createElement(Button_1.default, { size: 'md', onClick: saveTemplate }, __('saveSettings')))), react_1.default.createElement("div", { className: 'footer-btn-group-right', style: { display: 'flex' } }, react_1.default.createElement("div", null, react_1.default.createElement(Button_1.default, { level: "primary", size: 'md', onClick: onConfirm }, __('confirm'))))))); }; var renderSelectFooter = function () { var tgt = tempList.find(function (item) { return item.tempKey === tmpSelected; }); return react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(Button_1.default, { disabled: !tmpSelected, onClick: function (e) { return tgt && editTemp(e, tgt.tempKey, tgt.tempName); }, size: "md" }, __('rename')), react_1.default.createElement(Button_1.default, { disabled: !tmpSelected, onClick: function () { return setSelectTmpConfirmShow(true); }, size: "md" }, __('Select.clear')), react_1.default.createElement(Button_1.default, { disabled: !tmpSelected, onClick: function () { onSelect(tmpSelected); setSelectTmpShow(false); }, size: 'md', level: 'primary' }, __('confirm'))); }; return (react_1.default.createElement("div", { className: cx('ColumnToggler', { 'ColumnToggler-block': block, 'ColumnToggler--alignRight': align === 'right', 'is-opened': isOpened, 'is-actived': isActived, 'is-mobile': (0, helper_1.isMobile)() }, className), ref: domRef }, !(0, helper_1.isMobile)() ? (draggable ? (button) : (react_1.default.createElement(TooltipWrapper_1.default, { placement: placement, tooltip: disabled ? disabledTip : tooltip, container: tooltipContainer, trigger: tooltipTrigger, rootClose: tooltipRootClose }, button))) : null, !(0, helper_1.isMobile)() && isOpened && !draggable && renderOuter(), (0, helper_1.isMobile)() ? renderContent() : isOpened ? (react_1.default.createElement(antd_1.Modal, { title: react_1.default.createElement("div", { className: 'dialog-title' }, react_1.default.createElement("div", { className: 'disabled-move-title' }, __('Table.columnsToggler.ColSetting'))), zIndex: 11, bodyStyle: { overflowY: 'auto' }, maskClosable: false, visible: isOpened, onCancel: function () { return setIsOpend(false); }, footer: renderFooter(), className: "".concat(cx('ColumnToggler-modal Modal-advanced '), " common-modal-component"), getContainer: modalContainer || target.current, width: 620 }, renderContent())) : null, selectTmpShow && react_1.default.createElement(antd_1.Drawer, { placement: 'bottom', mask: true, className: "columns-toggler-drawer columns-toggler-tmp-sel ".concat(tools_1.tools.isIOS && !shell_1.Shell.hasShell() ? 'ios-device' : ''), zIndex: 1012, width: '100vw', height: tempList.length * 45 + 130 + (tools_1.tools.isIOS ? 32 : 0) + 'px', title: __('selectTemplate'), visible: selectTmpShow, onClose: function () { return setSelectTmpShow(false); }, getContainer: props.parentDom, footer: renderSelectFooter() }, react_1.default.createElement("div", { className: 'tpm-sel-container' }, tempList.map(function (item) { return react_1.default.createElement("div", { className: "tem-sel-item ".concat(item.tempKey === tmpSelected ? 'active-tmp' : ''), key: item.tempKey, onClick: function () { return setTmpSelected(item.tempKey); } }, react_1.default.createElement("div", null, item.tempName), tmpSelected === item.tempKey && react_1.default.createElement("div", null, react_1.default.createElement(icons_2.CheckOutlined, null))); }))), selectTmpConfirmShow && react_1.default.createElement(antd_1.Drawer, { placement: 'bottom', mask: true, className: "columns-toggler-drawer ".concat(tools_1.tools.isIOS && !shell_1.Shell.hasShell() ? 'ios-device' : ''), zIndex: 1012, width: '100vw', height: tools_1.tools.isIOS ? '160px' : '128px', title: null, closable: false, visible: selectTmpConfirmShow, onClose: function () { return setSelectTmpConfirmShow(false); }, getContainer: props.parentDom }, react_1.default.createElement("div", { className: 'tpm-sel-confirm-container' }, react_1.default.createElement(antd_1.Button, { onClick: function () { return delTemp(tmpSelected); }, size: 'large', block: true, type: 'text' }, __('confirm')), react_1.default.createElement(antd_1.Button, { onClick: function () { return setSelectTmpConfirmShow(false); }, size: 'large', block: true, type: 'text' }, __('cancel')))), tempVisible && react_1.default.createElement(antd_1.Modal, { visible: tempVisible, onOk: onOk, centered: (0, helper_1.isMobile)(), style: { borderRadius: '8px' }, width: (0, helper_1.isMobile)() ? 300 : 520, afterClose: tempModalClose, zIndex: 1012, title: __('Table.columnsToggler.editTemplateName'), getContainer: (0, helper_1.isMobile)() ? props.parentDom : modalContainer, className: "".concat((0, helper_1.isMobile)() ? "tmp-setting-modal" : 'tmp-modal'), onCancel: function () { tempModalClose(); setTempVisible(false); }, okText: __('confirm'), cancelText: __('cancel'), destroyOnClose: true }, react_1.default.createElement(antd_1.Form, { form: form }, react_1.default.createElement(antd_1.Form.Item, { label: __('Table.columnsToggler.setName'), name: "tempName", rules: [ { required: true, message: __('Table.columnsToggler.templateNameRequired') }, function () { return ({ validator: function (_, value) { if (tempList.some(function (item) { return item.tempName === value; })) { return Promise.reject(new Error(__('Table.columnsToggler.templateNameRepeat'))); } return Promise.resolve(); } }); } ] }, react_1.default.createElement(antd_1.Input, null)))))); }; exports.default = ColumnToggler; //# sourceMappingURL=./renderers/Table/ColumnToggler.js.map