@light-sheet/react
Version:
FortuneSheet is a drop-in javascript spreadsheet library that provides rich features like Excel and Google Sheets
177 lines (175 loc) • 7.89 kB
JavaScript
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure 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 _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 _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
/* eslint-disable jsx-a11y/control-has-associated-label */
import { getDataArr, getFlowdata, getRegStr, locale, updateMoreCell } from "@light-sheet/core";
import _ from "lodash";
import React, { useContext, useEffect, useState, useCallback, useRef } from "react";
import WorkbookContext from "../../context";
import { useDialog } from "../../hooks/useDialog";
import "./index.css";
export var SplitColumn = function SplitColumn() {
var _useContext = useContext(WorkbookContext),
context = _useContext.context,
setContext = _useContext.setContext;
var _locale = locale(context),
splitText = _locale.splitText,
button = _locale.button;
var _useState = useState(""),
_useState2 = _slicedToArray(_useState, 2),
splitOperate = _useState2[0],
setSplitOperate = _useState2[1];
var _useState3 = useState(false),
_useState4 = _slicedToArray(_useState3, 2),
otherFlag = _useState4[0],
setOtherFlag = _useState4[1];
var _useState5 = useState([]),
_useState6 = _slicedToArray(_useState5, 2),
tableData = _useState6[0],
setTableData = _useState6[1];
var splitSymbols = useRef(null);
var _useDialog = useDialog(),
showDialog = _useDialog.showDialog,
hideDialog = _useDialog.hideDialog;
// 确定按钮
var certainBtn = useCallback(function () {
hideDialog();
var dataArr = getDataArr(splitOperate, context);
var r = context.luckysheet_select_save[0].row[0];
var c = context.luckysheet_select_save[0].column[0];
if (dataArr[0].length === 1) {
return;
}
var dataCover = false;
var data = getFlowdata(context);
for (var i = 0; i < dataArr.length; i += 1) {
for (var j = 1; j < dataArr[0].length; j += 1) {
var cell = data[r + i][c + j];
if (!_.isNull(cell) && !_.isNull(cell.v)) {
dataCover = true;
break;
}
}
}
if (dataCover) {
showDialog(splitText.splitConfirmToExe, "yesno", function () {
hideDialog();
setContext(function (ctx) {
updateMoreCell(r, c, dataArr, ctx);
});
});
} else {
setContext(function (ctx) {
updateMoreCell(r, c, dataArr, ctx);
});
}
}, [context, hideDialog, setContext, showDialog, splitOperate, splitText.splitConfirmToExe]);
// 数据预览
useEffect(function () {
setTableData(function (table) {
table = getDataArr(splitOperate, context);
return table;
});
}, [context, splitOperate]);
return /*#__PURE__*/React.createElement("div", {
id: "fortune-split-column"
}, /*#__PURE__*/React.createElement("div", {
className: "title"
}, splitText.splitTextTitle), /*#__PURE__*/React.createElement("div", {
className: "splitDelimiters"
}, splitText.splitDelimiters), /*#__PURE__*/React.createElement("div", {
className: "splitSymbols",
ref: splitSymbols
}, splitText.splitSymbols.map(function (o) {
return /*#__PURE__*/React.createElement("div", {
key: o.value,
className: "splitSymbol"
}, /*#__PURE__*/React.createElement("input", {
id: o.value,
name: o.value,
type: "checkbox",
onClick: function onClick() {
return setSplitOperate(function (regStr) {
var _splitSymbols$current;
return getRegStr(regStr, (_splitSymbols$current = splitSymbols.current) === null || _splitSymbols$current === void 0 ? void 0 : _splitSymbols$current.childNodes);
});
},
tabIndex: 0
}), /*#__PURE__*/React.createElement("label", {
htmlFor: o.value
}, o.name));
}), /*#__PURE__*/React.createElement("div", {
className: "splitSymbol"
}, /*#__PURE__*/React.createElement("input", {
id: "other",
name: "other",
type: "checkbox",
onClick: function onClick() {
setOtherFlag(!otherFlag);
setSplitOperate(function (regStr) {
var _splitSymbols$current2;
return getRegStr(regStr, (_splitSymbols$current2 = splitSymbols.current) === null || _splitSymbols$current2 === void 0 ? void 0 : _splitSymbols$current2.childNodes);
});
},
tabIndex: 0
}), /*#__PURE__*/React.createElement("label", {
htmlFor: "other"
}, splitText.splitOther), /*#__PURE__*/React.createElement("input", {
id: "otherValue",
name: "otherValue",
type: "text",
onBlur: function onBlur() {
if (otherFlag) {
setSplitOperate(function (regStr) {
var _splitSymbols$current3;
return getRegStr(regStr, (_splitSymbols$current3 = splitSymbols.current) === null || _splitSymbols$current3 === void 0 ? void 0 : _splitSymbols$current3.childNodes);
});
}
}
})), /*#__PURE__*/React.createElement("div", {
className: "splitSymbol splitSimple"
}, /*#__PURE__*/React.createElement("input", {
id: "splitsimple",
name: "splitsimple",
type: "checkbox",
onClick: function onClick() {
setSplitOperate(function (regStr) {
var _splitSymbols$current4;
return getRegStr(regStr, (_splitSymbols$current4 = splitSymbols.current) === null || _splitSymbols$current4 === void 0 ? void 0 : _splitSymbols$current4.childNodes);
});
},
tabIndex: 0
}), /*#__PURE__*/React.createElement("label", {
htmlFor: "splitsimple"
}, splitText.splitContinueSymbol))), /*#__PURE__*/React.createElement("div", {
className: "splitDataPreview"
}, splitText.splitDataPreview), /*#__PURE__*/React.createElement("div", {
className: "splitColumnData"
}, /*#__PURE__*/React.createElement("table", null, /*#__PURE__*/React.createElement("tbody", null, tableData.map(function (o, index) {
if (o.length >= 1) {
return /*#__PURE__*/React.createElement("tr", {
key: index
}, o.map(function (o1) {
return /*#__PURE__*/React.createElement("td", {
key: o + o1
}, o1);
}));
}
return /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("td", null));
})))), /*#__PURE__*/React.createElement("div", {
className: "button-basic button-primary",
onClick: function onClick() {
certainBtn();
},
tabIndex: 0
}, button.confirm), /*#__PURE__*/React.createElement("div", {
className: "button-basic button-close",
onClick: function onClick() {
hideDialog();
},
tabIndex: 0
}, button.cancel));
};