@fileverse-dev/fortune-react 1.3.0-paint → 1.3.1-paint
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/components/DataVerification/helpers.d.ts +9 -0
- package/es/components/DataVerification/helpers.js +71 -0
- package/es/components/DataVerification/index.js +80 -43
- package/es/components/Sheet/use-smooth-scroll.js +2 -1
- package/es/components/Workbook/index.js +1 -12
- package/lib/components/DataVerification/helpers.d.ts +9 -0
- package/lib/components/DataVerification/helpers.js +78 -0
- package/lib/components/DataVerification/index.js +80 -43
- package/lib/components/Sheet/use-smooth-scroll.js +2 -1
- package/lib/components/Workbook/index.js +1 -12
- package/package.json +2 -2
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Context } from "@fileverse-dev/fortune-core";
|
|
2
|
+
export declare function findMatchingCells(ctx: Context, currentRow: number, currentCol: number): {
|
|
3
|
+
row: number;
|
|
4
|
+
col: number;
|
|
5
|
+
}[];
|
|
6
|
+
export declare function cellsToRangeString(ctx: Context, cells: {
|
|
7
|
+
row: number;
|
|
8
|
+
col: number;
|
|
9
|
+
}[]): string;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
|
|
2
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
3
|
+
if (ar || !(i in from)) {
|
|
4
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
5
|
+
ar[i] = from[i];
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
9
|
+
};
|
|
10
|
+
import { getSheetIndex, getRangetxt, indexToColumnChar } from "@fileverse-dev/fortune-core";
|
|
11
|
+
export function findMatchingCells(ctx, currentRow, currentCol) {
|
|
12
|
+
var _a;
|
|
13
|
+
var sheetIndex = getSheetIndex(ctx, ctx.currentSheetId);
|
|
14
|
+
var dataVerification = (_a = ctx.luckysheetfile[sheetIndex].dataVerification) !== null && _a !== void 0 ? _a : {};
|
|
15
|
+
var currentValidation = dataVerification["".concat(currentRow, "_").concat(currentCol)];
|
|
16
|
+
if (!currentValidation) return [];
|
|
17
|
+
var matchingCells = [];
|
|
18
|
+
Object.keys(dataVerification).forEach(function (key) {
|
|
19
|
+
var _a = key.split("_").map(Number),
|
|
20
|
+
r = _a[0],
|
|
21
|
+
c = _a[1];
|
|
22
|
+
var validation = dataVerification[key];
|
|
23
|
+
if (validation.type === currentValidation.type && validation.type2 === currentValidation.type2 && validation.value1 === currentValidation.value1 && validation.value2 === currentValidation.value2 && validation.color === currentValidation.color && validation.validity === currentValidation.validity && validation.remote === currentValidation.remote && validation.prohibitInput === currentValidation.prohibitInput && validation.hintShow === currentValidation.hintShow && validation.hintValue === currentValidation.hintValue) {
|
|
24
|
+
matchingCells.push({
|
|
25
|
+
row: r,
|
|
26
|
+
col: c
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
return matchingCells;
|
|
31
|
+
}
|
|
32
|
+
export function cellsToRangeString(ctx, cells) {
|
|
33
|
+
if (cells.length === 0) return "";
|
|
34
|
+
if (cells.length === 1) {
|
|
35
|
+
return indexToColumnChar(cells[0].col) + (cells[0].row + 1);
|
|
36
|
+
}
|
|
37
|
+
var sorted = __spreadArray([], cells, true).sort(function (a, b) {
|
|
38
|
+
return a.row === b.row ? a.col - b.col : a.row - b.row;
|
|
39
|
+
});
|
|
40
|
+
var ranges = [];
|
|
41
|
+
var startRow = sorted[0].row;
|
|
42
|
+
var endRow = sorted[0].row;
|
|
43
|
+
var startCol = sorted[0].col;
|
|
44
|
+
var endCol = sorted[0].col;
|
|
45
|
+
for (var i = 1; i < sorted.length; i += 1) {
|
|
46
|
+
var _a = sorted[i],
|
|
47
|
+
row = _a.row,
|
|
48
|
+
col = _a.col;
|
|
49
|
+
if (col === startCol && col === endCol && row === endRow + 1) {
|
|
50
|
+
endRow = row;
|
|
51
|
+
} else if (row === startRow && row === endRow && col === endCol + 1) {
|
|
52
|
+
endCol = col;
|
|
53
|
+
} else {
|
|
54
|
+
var range_1 = getRangetxt(ctx, ctx.currentSheetId, {
|
|
55
|
+
row: [startRow, endRow],
|
|
56
|
+
column: [startCol, endCol]
|
|
57
|
+
});
|
|
58
|
+
ranges.push(range_1);
|
|
59
|
+
startRow = row;
|
|
60
|
+
endRow = row;
|
|
61
|
+
startCol = col;
|
|
62
|
+
endCol = col;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
var range = getRangetxt(ctx, ctx.currentSheetId, {
|
|
66
|
+
row: [startRow, endRow],
|
|
67
|
+
column: [startCol, endCol]
|
|
68
|
+
});
|
|
69
|
+
ranges.push(range);
|
|
70
|
+
return ranges.join(",");
|
|
71
|
+
}
|
|
@@ -15,6 +15,7 @@ import DynamicInputList from "./DropdownOption";
|
|
|
15
15
|
import WorkbookContext from "../../context";
|
|
16
16
|
import { useDialog } from "../../hooks/useDialog";
|
|
17
17
|
import { injectDatepickerStyles } from "../../utils/datepickerStyles";
|
|
18
|
+
import { findMatchingCells, cellsToRangeString } from "./helpers";
|
|
18
19
|
import "./index.css";
|
|
19
20
|
function createId() {
|
|
20
21
|
return "".concat(Date.now(), "_").concat(Math.random().toString(36).slice(2));
|
|
@@ -33,7 +34,7 @@ var DataVerification = function DataVerification() {
|
|
|
33
34
|
button = _r.button,
|
|
34
35
|
generalDialog = _r.generalDialog;
|
|
35
36
|
var dateCondition = useState(["between", "notBetween", "equal", "notEqualTo", "earlierThan", "noEarlierThan", "laterThan", "noLaterThan"])[0];
|
|
36
|
-
|
|
37
|
+
var getSheetIndex = useCallback(function () {
|
|
37
38
|
var _a;
|
|
38
39
|
for (var i = 0; i < context.luckysheetfile.length; i += 1) {
|
|
39
40
|
if (((_a = context.luckysheetfile[i]) === null || _a === void 0 ? void 0 : _a.id) === context.currentSheetId) {
|
|
@@ -41,7 +42,7 @@ var DataVerification = function DataVerification() {
|
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
44
|
return null;
|
|
44
|
-
}
|
|
45
|
+
}, [context.luckysheetfile, context.currentSheetId]);
|
|
45
46
|
var _s = useState([]),
|
|
46
47
|
optionItems = _s[0],
|
|
47
48
|
setOptionItems = _s[1];
|
|
@@ -92,45 +93,68 @@ var DataVerification = function DataVerification() {
|
|
|
92
93
|
ctx.rangeDialog.rangeTxt = value;
|
|
93
94
|
});
|
|
94
95
|
}, [hideDialog, setContext]);
|
|
96
|
+
var applyValidation = useCallback(function (rangeString) {
|
|
97
|
+
setContext(function (ctx) {
|
|
98
|
+
var _a;
|
|
99
|
+
var range = getRangeByTxt(ctx, rangeString);
|
|
100
|
+
if (range.length === 0) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
var regulation = ctx.dataVerification.dataRegulation;
|
|
104
|
+
var verifacationT = regulation === null || regulation === void 0 ? void 0 : regulation.type;
|
|
105
|
+
var value1 = regulation.value1;
|
|
106
|
+
var item = __assign(__assign({}, regulation), {
|
|
107
|
+
checked: false
|
|
108
|
+
});
|
|
109
|
+
if (verifacationT === "dropdown") {
|
|
110
|
+
var list = getDropdownList(ctx, value1);
|
|
111
|
+
item.value1 = list.join(",");
|
|
112
|
+
}
|
|
113
|
+
var currentDataVerification = (_a = ctx.luckysheetfile[getSheetIndex()].dataVerification) !== null && _a !== void 0 ? _a : {};
|
|
114
|
+
var d = getFlowdata(ctx);
|
|
115
|
+
if (!d) return;
|
|
116
|
+
for (var ri = 0; ri < range.length; ri += 1) {
|
|
117
|
+
var str = range[ri].row[0];
|
|
118
|
+
var edr = range[ri].row[1];
|
|
119
|
+
var stc = range[ri].column[0];
|
|
120
|
+
var edc = range[ri].column[1];
|
|
121
|
+
for (var r = str; r <= edr; r += 1) {
|
|
122
|
+
for (var c = stc; c <= edc; c += 1) {
|
|
123
|
+
var key = "".concat(r, "_").concat(c);
|
|
124
|
+
currentDataVerification[key] = item;
|
|
125
|
+
if (regulation.type === "checkbox") {
|
|
126
|
+
setCellValue(ctx, r, c, d, item.value2);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
ctx.luckysheetfile[getSheetIndex()].dataVerification = currentDataVerification;
|
|
132
|
+
ctx.dataVerification.updateScope = undefined;
|
|
133
|
+
ctx.dataVerification.sourceCell = undefined;
|
|
134
|
+
});
|
|
135
|
+
}, [getSheetIndex, setContext]);
|
|
95
136
|
var btn = useCallback(function (type) {
|
|
137
|
+
var _a, _b, _c;
|
|
96
138
|
if (type === "confirm") {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
139
|
+
var isValid = confirmMessage(context, generalDialog, dataVerification);
|
|
140
|
+
if (!isValid) return;
|
|
141
|
+
var sourceCell = (_a = context.dataVerification) === null || _a === void 0 ? void 0 : _a.sourceCell;
|
|
142
|
+
var modalRangeString_1 = (_c = (_b = context.dataVerification) === null || _b === void 0 ? void 0 : _b.dataRegulation) === null || _c === void 0 ? void 0 : _c.rangeTxt;
|
|
143
|
+
if (sourceCell) {
|
|
144
|
+
var matchingCells = findMatchingCells(context, sourceCell.row, sourceCell.col);
|
|
145
|
+
if (matchingCells.length > 1) {
|
|
146
|
+
var allMatchingRange_1 = cellsToRangeString(context, matchingCells);
|
|
147
|
+
showDialog("Found ".concat(matchingCells.length, " cells with matching validation. Apply changes to:"), "yesno", "Apply Changes", "All Matching Cells", "Just Selected Range", function () {
|
|
148
|
+
applyValidation(allMatchingRange_1);
|
|
149
|
+
hideDialog();
|
|
150
|
+
}, function () {
|
|
151
|
+
applyValidation(modalRangeString_1);
|
|
152
|
+
hideDialog();
|
|
110
153
|
});
|
|
111
|
-
|
|
112
|
-
var list = getDropdownList(ctx, value1);
|
|
113
|
-
item.value1 = list.join(",");
|
|
114
|
-
}
|
|
115
|
-
var currentDataVerification = (_c = ctx.luckysheetfile[getSheetIndex()].dataVerification) !== null && _c !== void 0 ? _c : {};
|
|
116
|
-
var str = range[range.length - 1].row[0];
|
|
117
|
-
var edr = range[range.length - 1].row[1];
|
|
118
|
-
var stc = range[range.length - 1].column[0];
|
|
119
|
-
var edc = range[range.length - 1].column[1];
|
|
120
|
-
var d = getFlowdata(ctx);
|
|
121
|
-
if (!d) return;
|
|
122
|
-
for (var r = str; r <= edr; r += 1) {
|
|
123
|
-
for (var c = stc; c <= edc; c += 1) {
|
|
124
|
-
var key = "".concat(r, "_").concat(c);
|
|
125
|
-
currentDataVerification[key] = item;
|
|
126
|
-
if (regulation.type === "checkbox") {
|
|
127
|
-
setCellValue(ctx, r, c, d, item.value2);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
ctx.luckysheetfile[getSheetIndex()].dataVerification = currentDataVerification;
|
|
154
|
+
return;
|
|
132
155
|
}
|
|
133
|
-
}
|
|
156
|
+
}
|
|
157
|
+
applyValidation(modalRangeString_1);
|
|
134
158
|
} else if (type === "delete") {
|
|
135
159
|
setContext(function (ctx) {
|
|
136
160
|
var _a, _b, _c;
|
|
@@ -149,17 +173,26 @@ var DataVerification = function DataVerification() {
|
|
|
149
173
|
delete currentDataVerification["".concat(r, "_").concat(c)];
|
|
150
174
|
}
|
|
151
175
|
}
|
|
176
|
+
ctx.dataVerification.updateScope = undefined;
|
|
152
177
|
});
|
|
153
178
|
}
|
|
154
179
|
hideDialog();
|
|
155
|
-
}, [dataVerification, generalDialog, hideDialog, setContext, showDialog]);
|
|
180
|
+
}, [applyValidation, context, dataVerification, generalDialog, getSheetIndex, hideDialog, setContext, showDialog]);
|
|
156
181
|
useEffect(function () {
|
|
157
182
|
setContext(function (ctx) {
|
|
158
|
-
var _a, _b, _c;
|
|
183
|
+
var _a, _b, _c, _d;
|
|
159
184
|
var rangeT = "";
|
|
185
|
+
var updateScope = ((_a = ctx.dataVerification) === null || _a === void 0 ? void 0 : _a.updateScope) || "current";
|
|
160
186
|
if (ctx.luckysheet_select_save) {
|
|
161
187
|
var range = ctx.luckysheet_select_save[ctx.luckysheet_select_save.length - 1];
|
|
162
|
-
|
|
188
|
+
var rowIndex = range.row_focus;
|
|
189
|
+
var colIndex = range.column_focus;
|
|
190
|
+
if (updateScope === "all" && rowIndex != null && colIndex != null) {
|
|
191
|
+
var matchingCells = findMatchingCells(ctx, rowIndex, colIndex);
|
|
192
|
+
rangeT = cellsToRangeString(ctx, matchingCells);
|
|
193
|
+
} else {
|
|
194
|
+
rangeT = getRangetxt(context, context.currentSheetId, range, context.currentSheetId);
|
|
195
|
+
}
|
|
163
196
|
}
|
|
164
197
|
var index = getSheetIndex();
|
|
165
198
|
var ctxDataVerification = ctx.luckysheetfile[index].dataVerification;
|
|
@@ -169,13 +202,17 @@ var DataVerification = function DataVerification() {
|
|
|
169
202
|
var rowIndex = last.row_focus;
|
|
170
203
|
var colIndex = last.column_focus;
|
|
171
204
|
if (rowIndex == null || colIndex == null) return;
|
|
205
|
+
ctx.dataVerification.sourceCell = {
|
|
206
|
+
row: rowIndex,
|
|
207
|
+
col: colIndex
|
|
208
|
+
};
|
|
172
209
|
var item = ctxDataVerification["".concat(rowIndex, "_").concat(colIndex)];
|
|
173
210
|
var defaultItem = item !== null && item !== void 0 ? item : {};
|
|
174
|
-
var rangValue = (
|
|
175
|
-
if (((
|
|
211
|
+
var rangValue = (_b = defaultItem.value1) !== null && _b !== void 0 ? _b : "";
|
|
212
|
+
if (((_c = ctx.rangeDialog) === null || _c === void 0 ? void 0 : _c.type) === "dropDown" && ctx.dataVerification && ctx.dataVerification.dataRegulation && ctx.dataVerification.dataRegulation.rangeTxt) {
|
|
176
213
|
rangeT = ctx.dataVerification.dataRegulation.rangeTxt;
|
|
177
214
|
rangValue = ctx.rangeDialog.rangeTxt;
|
|
178
|
-
} else if (((
|
|
215
|
+
} else if (((_d = ctx.rangeDialog) === null || _d === void 0 ? void 0 : _d.type) === "rangeTxt" && ctx.dataVerification && ctx.dataVerification.dataRegulation && ctx.dataVerification.dataRegulation.value1) {
|
|
179
216
|
rangValue = ctx.dataVerification.dataRegulation.value1;
|
|
180
217
|
rangeT = ctx.rangeDialog.rangeTxt;
|
|
181
218
|
}
|
|
@@ -105,6 +105,7 @@ export var useSmoothScroll = function useSmoothScroll(scrollContainerRef) {
|
|
|
105
105
|
autoScrollAnimationId = requestAnimationFrame(autoScroll);
|
|
106
106
|
}
|
|
107
107
|
function onMouseDown(e) {
|
|
108
|
+
if (context.luckysheetCellUpdate.length > 0) return;
|
|
108
109
|
if (e.button !== 0) return;
|
|
109
110
|
var target = e.target;
|
|
110
111
|
if (target.tagName === "INPUT" || target.tagName === "BUTTON" || target.tagName === "SELECT" || target.tagName === "TEXTAREA" || target.closest("button") || target.closest("input")) {
|
|
@@ -367,5 +368,5 @@ export var useSmoothScroll = function useSmoothScroll(scrollContainerRef) {
|
|
|
367
368
|
if (!scrollContainerEl || !horizontalScrollbarEl || !verticalScrollbarEl) return function () {};
|
|
368
369
|
var unmountScrollEventHandlers = mountScrollEventHandlers(scrollContainerEl, horizontalScrollbarEl, verticalScrollbarEl);
|
|
369
370
|
return unmountScrollEventHandlers;
|
|
370
|
-
}, [context.zoomRatio]);
|
|
371
|
+
}, [context.zoomRatio, context.luckysheetCellUpdate]);
|
|
371
372
|
};
|
|
@@ -717,18 +717,7 @@ var Workbook = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
717
717
|
}
|
|
718
718
|
return /*#__PURE__*/React.createElement(WorkbookContext.Provider, {
|
|
719
719
|
value: providerValue
|
|
720
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
721
|
-
id: "placeholder-data-verification",
|
|
722
|
-
style: {
|
|
723
|
-
width: "500px",
|
|
724
|
-
height: "500px",
|
|
725
|
-
position: "fixed",
|
|
726
|
-
zIndex: "1000",
|
|
727
|
-
backgroundColor: "white",
|
|
728
|
-
padding: "12px",
|
|
729
|
-
top: "100px"
|
|
730
|
-
}
|
|
731
|
-
}), /*#__PURE__*/React.createElement(ModalProvider, null, /*#__PURE__*/React.createElement("div", {
|
|
720
|
+
}, /*#__PURE__*/React.createElement(ModalProvider, null, /*#__PURE__*/React.createElement("div", {
|
|
732
721
|
className: "fortune-container",
|
|
733
722
|
ref: workbookContainer,
|
|
734
723
|
onKeyDown: onKeyDown
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Context } from "@fileverse-dev/fortune-core";
|
|
2
|
+
export declare function findMatchingCells(ctx: Context, currentRow: number, currentCol: number): {
|
|
3
|
+
row: number;
|
|
4
|
+
col: number;
|
|
5
|
+
}[];
|
|
6
|
+
export declare function cellsToRangeString(ctx: Context, cells: {
|
|
7
|
+
row: number;
|
|
8
|
+
col: number;
|
|
9
|
+
}[]): string;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.cellsToRangeString = cellsToRangeString;
|
|
7
|
+
exports.findMatchingCells = findMatchingCells;
|
|
8
|
+
var _fortuneCore = require("@fileverse-dev/fortune-core");
|
|
9
|
+
var __spreadArray = void 0 && (void 0).__spreadArray || function (to, from, pack) {
|
|
10
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
11
|
+
if (ar || !(i in from)) {
|
|
12
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
13
|
+
ar[i] = from[i];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
17
|
+
};
|
|
18
|
+
function findMatchingCells(ctx, currentRow, currentCol) {
|
|
19
|
+
var _a;
|
|
20
|
+
var sheetIndex = (0, _fortuneCore.getSheetIndex)(ctx, ctx.currentSheetId);
|
|
21
|
+
var dataVerification = (_a = ctx.luckysheetfile[sheetIndex].dataVerification) !== null && _a !== void 0 ? _a : {};
|
|
22
|
+
var currentValidation = dataVerification["".concat(currentRow, "_").concat(currentCol)];
|
|
23
|
+
if (!currentValidation) return [];
|
|
24
|
+
var matchingCells = [];
|
|
25
|
+
Object.keys(dataVerification).forEach(function (key) {
|
|
26
|
+
var _a = key.split("_").map(Number),
|
|
27
|
+
r = _a[0],
|
|
28
|
+
c = _a[1];
|
|
29
|
+
var validation = dataVerification[key];
|
|
30
|
+
if (validation.type === currentValidation.type && validation.type2 === currentValidation.type2 && validation.value1 === currentValidation.value1 && validation.value2 === currentValidation.value2 && validation.color === currentValidation.color && validation.validity === currentValidation.validity && validation.remote === currentValidation.remote && validation.prohibitInput === currentValidation.prohibitInput && validation.hintShow === currentValidation.hintShow && validation.hintValue === currentValidation.hintValue) {
|
|
31
|
+
matchingCells.push({
|
|
32
|
+
row: r,
|
|
33
|
+
col: c
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
return matchingCells;
|
|
38
|
+
}
|
|
39
|
+
function cellsToRangeString(ctx, cells) {
|
|
40
|
+
if (cells.length === 0) return "";
|
|
41
|
+
if (cells.length === 1) {
|
|
42
|
+
return (0, _fortuneCore.indexToColumnChar)(cells[0].col) + (cells[0].row + 1);
|
|
43
|
+
}
|
|
44
|
+
var sorted = __spreadArray([], cells, true).sort(function (a, b) {
|
|
45
|
+
return a.row === b.row ? a.col - b.col : a.row - b.row;
|
|
46
|
+
});
|
|
47
|
+
var ranges = [];
|
|
48
|
+
var startRow = sorted[0].row;
|
|
49
|
+
var endRow = sorted[0].row;
|
|
50
|
+
var startCol = sorted[0].col;
|
|
51
|
+
var endCol = sorted[0].col;
|
|
52
|
+
for (var i = 1; i < sorted.length; i += 1) {
|
|
53
|
+
var _a = sorted[i],
|
|
54
|
+
row = _a.row,
|
|
55
|
+
col = _a.col;
|
|
56
|
+
if (col === startCol && col === endCol && row === endRow + 1) {
|
|
57
|
+
endRow = row;
|
|
58
|
+
} else if (row === startRow && row === endRow && col === endCol + 1) {
|
|
59
|
+
endCol = col;
|
|
60
|
+
} else {
|
|
61
|
+
var range_1 = (0, _fortuneCore.getRangetxt)(ctx, ctx.currentSheetId, {
|
|
62
|
+
row: [startRow, endRow],
|
|
63
|
+
column: [startCol, endCol]
|
|
64
|
+
});
|
|
65
|
+
ranges.push(range_1);
|
|
66
|
+
startRow = row;
|
|
67
|
+
endRow = row;
|
|
68
|
+
startCol = col;
|
|
69
|
+
endCol = col;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
var range = (0, _fortuneCore.getRangetxt)(ctx, ctx.currentSheetId, {
|
|
73
|
+
row: [startRow, endRow],
|
|
74
|
+
column: [startCol, endCol]
|
|
75
|
+
});
|
|
76
|
+
ranges.push(range);
|
|
77
|
+
return ranges.join(",");
|
|
78
|
+
}
|
|
@@ -12,6 +12,7 @@ var _DropdownOption = _interopRequireDefault(require("./DropdownOption"));
|
|
|
12
12
|
var _context = _interopRequireDefault(require("../../context"));
|
|
13
13
|
var _useDialog = require("../../hooks/useDialog");
|
|
14
14
|
var _datepickerStyles = require("../../utils/datepickerStyles");
|
|
15
|
+
var _helpers = require("./helpers");
|
|
15
16
|
require("./index.css");
|
|
16
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
18
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
@@ -42,7 +43,7 @@ var DataVerification = function DataVerification() {
|
|
|
42
43
|
button = _r.button,
|
|
43
44
|
generalDialog = _r.generalDialog;
|
|
44
45
|
var dateCondition = (0, _react.useState)(["between", "notBetween", "equal", "notEqualTo", "earlierThan", "noEarlierThan", "laterThan", "noLaterThan"])[0];
|
|
45
|
-
|
|
46
|
+
var getSheetIndex = (0, _react.useCallback)(function () {
|
|
46
47
|
var _a;
|
|
47
48
|
for (var i = 0; i < context.luckysheetfile.length; i += 1) {
|
|
48
49
|
if (((_a = context.luckysheetfile[i]) === null || _a === void 0 ? void 0 : _a.id) === context.currentSheetId) {
|
|
@@ -50,7 +51,7 @@ var DataVerification = function DataVerification() {
|
|
|
50
51
|
}
|
|
51
52
|
}
|
|
52
53
|
return null;
|
|
53
|
-
}
|
|
54
|
+
}, [context.luckysheetfile, context.currentSheetId]);
|
|
54
55
|
var _s = (0, _react.useState)([]),
|
|
55
56
|
optionItems = _s[0],
|
|
56
57
|
setOptionItems = _s[1];
|
|
@@ -101,45 +102,68 @@ var DataVerification = function DataVerification() {
|
|
|
101
102
|
ctx.rangeDialog.rangeTxt = value;
|
|
102
103
|
});
|
|
103
104
|
}, [hideDialog, setContext]);
|
|
105
|
+
var applyValidation = (0, _react.useCallback)(function (rangeString) {
|
|
106
|
+
setContext(function (ctx) {
|
|
107
|
+
var _a;
|
|
108
|
+
var range = (0, _fortuneCore.getRangeByTxt)(ctx, rangeString);
|
|
109
|
+
if (range.length === 0) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
var regulation = ctx.dataVerification.dataRegulation;
|
|
113
|
+
var verifacationT = regulation === null || regulation === void 0 ? void 0 : regulation.type;
|
|
114
|
+
var value1 = regulation.value1;
|
|
115
|
+
var item = __assign(__assign({}, regulation), {
|
|
116
|
+
checked: false
|
|
117
|
+
});
|
|
118
|
+
if (verifacationT === "dropdown") {
|
|
119
|
+
var list = (0, _fortuneCore.getDropdownList)(ctx, value1);
|
|
120
|
+
item.value1 = list.join(",");
|
|
121
|
+
}
|
|
122
|
+
var currentDataVerification = (_a = ctx.luckysheetfile[getSheetIndex()].dataVerification) !== null && _a !== void 0 ? _a : {};
|
|
123
|
+
var d = (0, _fortuneCore.getFlowdata)(ctx);
|
|
124
|
+
if (!d) return;
|
|
125
|
+
for (var ri = 0; ri < range.length; ri += 1) {
|
|
126
|
+
var str = range[ri].row[0];
|
|
127
|
+
var edr = range[ri].row[1];
|
|
128
|
+
var stc = range[ri].column[0];
|
|
129
|
+
var edc = range[ri].column[1];
|
|
130
|
+
for (var r = str; r <= edr; r += 1) {
|
|
131
|
+
for (var c = stc; c <= edc; c += 1) {
|
|
132
|
+
var key = "".concat(r, "_").concat(c);
|
|
133
|
+
currentDataVerification[key] = item;
|
|
134
|
+
if (regulation.type === "checkbox") {
|
|
135
|
+
(0, _fortuneCore.setCellValue)(ctx, r, c, d, item.value2);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
ctx.luckysheetfile[getSheetIndex()].dataVerification = currentDataVerification;
|
|
141
|
+
ctx.dataVerification.updateScope = undefined;
|
|
142
|
+
ctx.dataVerification.sourceCell = undefined;
|
|
143
|
+
});
|
|
144
|
+
}, [getSheetIndex, setContext]);
|
|
104
145
|
var btn = (0, _react.useCallback)(function (type) {
|
|
146
|
+
var _a, _b, _c;
|
|
105
147
|
if (type === "confirm") {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
148
|
+
var isValid = (0, _fortuneCore.confirmMessage)(context, generalDialog, dataVerification);
|
|
149
|
+
if (!isValid) return;
|
|
150
|
+
var sourceCell = (_a = context.dataVerification) === null || _a === void 0 ? void 0 : _a.sourceCell;
|
|
151
|
+
var modalRangeString_1 = (_c = (_b = context.dataVerification) === null || _b === void 0 ? void 0 : _b.dataRegulation) === null || _c === void 0 ? void 0 : _c.rangeTxt;
|
|
152
|
+
if (sourceCell) {
|
|
153
|
+
var matchingCells = (0, _helpers.findMatchingCells)(context, sourceCell.row, sourceCell.col);
|
|
154
|
+
if (matchingCells.length > 1) {
|
|
155
|
+
var allMatchingRange_1 = (0, _helpers.cellsToRangeString)(context, matchingCells);
|
|
156
|
+
showDialog("Found ".concat(matchingCells.length, " cells with matching validation. Apply changes to:"), "yesno", "Apply Changes", "All Matching Cells", "Just Selected Range", function () {
|
|
157
|
+
applyValidation(allMatchingRange_1);
|
|
158
|
+
hideDialog();
|
|
159
|
+
}, function () {
|
|
160
|
+
applyValidation(modalRangeString_1);
|
|
161
|
+
hideDialog();
|
|
119
162
|
});
|
|
120
|
-
|
|
121
|
-
var list = (0, _fortuneCore.getDropdownList)(ctx, value1);
|
|
122
|
-
item.value1 = list.join(",");
|
|
123
|
-
}
|
|
124
|
-
var currentDataVerification = (_c = ctx.luckysheetfile[getSheetIndex()].dataVerification) !== null && _c !== void 0 ? _c : {};
|
|
125
|
-
var str = range[range.length - 1].row[0];
|
|
126
|
-
var edr = range[range.length - 1].row[1];
|
|
127
|
-
var stc = range[range.length - 1].column[0];
|
|
128
|
-
var edc = range[range.length - 1].column[1];
|
|
129
|
-
var d = (0, _fortuneCore.getFlowdata)(ctx);
|
|
130
|
-
if (!d) return;
|
|
131
|
-
for (var r = str; r <= edr; r += 1) {
|
|
132
|
-
for (var c = stc; c <= edc; c += 1) {
|
|
133
|
-
var key = "".concat(r, "_").concat(c);
|
|
134
|
-
currentDataVerification[key] = item;
|
|
135
|
-
if (regulation.type === "checkbox") {
|
|
136
|
-
(0, _fortuneCore.setCellValue)(ctx, r, c, d, item.value2);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
ctx.luckysheetfile[getSheetIndex()].dataVerification = currentDataVerification;
|
|
163
|
+
return;
|
|
141
164
|
}
|
|
142
|
-
}
|
|
165
|
+
}
|
|
166
|
+
applyValidation(modalRangeString_1);
|
|
143
167
|
} else if (type === "delete") {
|
|
144
168
|
setContext(function (ctx) {
|
|
145
169
|
var _a, _b, _c;
|
|
@@ -158,17 +182,26 @@ var DataVerification = function DataVerification() {
|
|
|
158
182
|
delete currentDataVerification["".concat(r, "_").concat(c)];
|
|
159
183
|
}
|
|
160
184
|
}
|
|
185
|
+
ctx.dataVerification.updateScope = undefined;
|
|
161
186
|
});
|
|
162
187
|
}
|
|
163
188
|
hideDialog();
|
|
164
|
-
}, [dataVerification, generalDialog, hideDialog, setContext, showDialog]);
|
|
189
|
+
}, [applyValidation, context, dataVerification, generalDialog, getSheetIndex, hideDialog, setContext, showDialog]);
|
|
165
190
|
(0, _react.useEffect)(function () {
|
|
166
191
|
setContext(function (ctx) {
|
|
167
|
-
var _a, _b, _c;
|
|
192
|
+
var _a, _b, _c, _d;
|
|
168
193
|
var rangeT = "";
|
|
194
|
+
var updateScope = ((_a = ctx.dataVerification) === null || _a === void 0 ? void 0 : _a.updateScope) || "current";
|
|
169
195
|
if (ctx.luckysheet_select_save) {
|
|
170
196
|
var range = ctx.luckysheet_select_save[ctx.luckysheet_select_save.length - 1];
|
|
171
|
-
|
|
197
|
+
var rowIndex = range.row_focus;
|
|
198
|
+
var colIndex = range.column_focus;
|
|
199
|
+
if (updateScope === "all" && rowIndex != null && colIndex != null) {
|
|
200
|
+
var matchingCells = (0, _helpers.findMatchingCells)(ctx, rowIndex, colIndex);
|
|
201
|
+
rangeT = (0, _helpers.cellsToRangeString)(ctx, matchingCells);
|
|
202
|
+
} else {
|
|
203
|
+
rangeT = (0, _fortuneCore.getRangetxt)(context, context.currentSheetId, range, context.currentSheetId);
|
|
204
|
+
}
|
|
172
205
|
}
|
|
173
206
|
var index = getSheetIndex();
|
|
174
207
|
var ctxDataVerification = ctx.luckysheetfile[index].dataVerification;
|
|
@@ -178,13 +211,17 @@ var DataVerification = function DataVerification() {
|
|
|
178
211
|
var rowIndex = last.row_focus;
|
|
179
212
|
var colIndex = last.column_focus;
|
|
180
213
|
if (rowIndex == null || colIndex == null) return;
|
|
214
|
+
ctx.dataVerification.sourceCell = {
|
|
215
|
+
row: rowIndex,
|
|
216
|
+
col: colIndex
|
|
217
|
+
};
|
|
181
218
|
var item = ctxDataVerification["".concat(rowIndex, "_").concat(colIndex)];
|
|
182
219
|
var defaultItem = item !== null && item !== void 0 ? item : {};
|
|
183
|
-
var rangValue = (
|
|
184
|
-
if (((
|
|
220
|
+
var rangValue = (_b = defaultItem.value1) !== null && _b !== void 0 ? _b : "";
|
|
221
|
+
if (((_c = ctx.rangeDialog) === null || _c === void 0 ? void 0 : _c.type) === "dropDown" && ctx.dataVerification && ctx.dataVerification.dataRegulation && ctx.dataVerification.dataRegulation.rangeTxt) {
|
|
185
222
|
rangeT = ctx.dataVerification.dataRegulation.rangeTxt;
|
|
186
223
|
rangValue = ctx.rangeDialog.rangeTxt;
|
|
187
|
-
} else if (((
|
|
224
|
+
} else if (((_d = ctx.rangeDialog) === null || _d === void 0 ? void 0 : _d.type) === "rangeTxt" && ctx.dataVerification && ctx.dataVerification.dataRegulation && ctx.dataVerification.dataRegulation.value1) {
|
|
188
225
|
rangValue = ctx.dataVerification.dataRegulation.value1;
|
|
189
226
|
rangeT = ctx.rangeDialog.rangeTxt;
|
|
190
227
|
}
|
|
@@ -112,6 +112,7 @@ var useSmoothScroll = exports.useSmoothScroll = function useSmoothScroll(scrollC
|
|
|
112
112
|
autoScrollAnimationId = requestAnimationFrame(autoScroll);
|
|
113
113
|
}
|
|
114
114
|
function onMouseDown(e) {
|
|
115
|
+
if (context.luckysheetCellUpdate.length > 0) return;
|
|
115
116
|
if (e.button !== 0) return;
|
|
116
117
|
var target = e.target;
|
|
117
118
|
if (target.tagName === "INPUT" || target.tagName === "BUTTON" || target.tagName === "SELECT" || target.tagName === "TEXTAREA" || target.closest("button") || target.closest("input")) {
|
|
@@ -374,5 +375,5 @@ var useSmoothScroll = exports.useSmoothScroll = function useSmoothScroll(scrollC
|
|
|
374
375
|
if (!scrollContainerEl || !horizontalScrollbarEl || !verticalScrollbarEl) return function () {};
|
|
375
376
|
var unmountScrollEventHandlers = mountScrollEventHandlers(scrollContainerEl, horizontalScrollbarEl, verticalScrollbarEl);
|
|
376
377
|
return unmountScrollEventHandlers;
|
|
377
|
-
}, [context.zoomRatio]);
|
|
378
|
+
}, [context.zoomRatio, context.luckysheetCellUpdate]);
|
|
378
379
|
};
|
|
@@ -726,18 +726,7 @@ var Workbook = /*#__PURE__*/_react.default.forwardRef(function (_a, ref) {
|
|
|
726
726
|
}
|
|
727
727
|
return /*#__PURE__*/_react.default.createElement(_context.default.Provider, {
|
|
728
728
|
value: providerValue
|
|
729
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
730
|
-
id: "placeholder-data-verification",
|
|
731
|
-
style: {
|
|
732
|
-
width: "500px",
|
|
733
|
-
height: "500px",
|
|
734
|
-
position: "fixed",
|
|
735
|
-
zIndex: "1000",
|
|
736
|
-
backgroundColor: "white",
|
|
737
|
-
padding: "12px",
|
|
738
|
-
top: "100px"
|
|
739
|
-
}
|
|
740
|
-
}), /*#__PURE__*/_react.default.createElement(_modal.ModalProvider, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
729
|
+
}, /*#__PURE__*/_react.default.createElement(_modal.ModalProvider, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
741
730
|
className: "fortune-container",
|
|
742
731
|
ref: workbookContainer,
|
|
743
732
|
onKeyDown: onKeyDown
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fileverse-dev/fortune-react",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.1-paint",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"types": "lib/index.d.ts",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"tsc": "tsc"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@fileverse-dev/fortune-core": "1.3.
|
|
19
|
+
"@fileverse-dev/fortune-core": "1.3.1-paint",
|
|
20
20
|
"@fileverse/ui": "5.0.0",
|
|
21
21
|
"@tippyjs/react": "^4.2.6",
|
|
22
22
|
"@types/regenerator-runtime": "^0.13.6",
|