pixel-react 1.9.1 → 1.9.2
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/lib/components/Excel/ExcelFile/ExcelFile.d.ts +1 -3
- package/lib/components/Excel/Types.d.ts +1 -1
- package/lib/components/TableTree/data.d.ts +0 -40
- package/lib/index.d.ts +3 -5
- package/lib/index.esm.js +234 -354
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +234 -354
- package/lib/index.js.map +1 -1
- package/lib/utils/indexDBStore/indexDB.d.ts +2 -2
- package/package.json +1 -2
- package/src/assets/icons/clear_history.svg +6 -0
- package/src/assets/icons/code.svg +4 -0
- package/src/assets/icons/code_colored.svg +4 -0
- package/src/assets/icons/csharp.svg +9 -0
- package/src/assets/icons/cypress.svg +9 -0
- package/src/assets/icons/delete_filled.svg +12 -0
- package/src/assets/icons/design_link.svg +7 -0
- package/src/assets/icons/disable_icon.svg +3 -0
- package/src/assets/icons/enable_icon.svg +3 -0
- package/src/assets/icons/file_colored.svg +5 -0
- package/src/assets/icons/java.svg +4 -0
- package/src/assets/icons/javascript.svg +11 -0
- package/src/assets/icons/jira_colored.svg +15 -0
- package/src/assets/icons/mic.svg +4 -0
- package/src/assets/icons/mic_filled.svg +28 -0
- package/src/assets/icons/playwright.svg +9 -0
- package/src/assets/icons/python.svg +19 -0
- package/src/assets/icons/regenerate.svg +4 -0
- package/src/assets/icons/right_arrow_filled_icon.svg +5 -0
- package/src/assets/icons/screenshot.svg +7 -0
- package/src/components/Button/Button.tsx +2 -0
- package/src/components/Excel/ExcelFile/ExcelFile.tsx +48 -42
- package/src/components/Excel/ExcelFile.stories.tsx +98 -96
- package/src/components/Excel/ExcelToolBar/ExcelToolBar.tsx +65 -28
- package/src/components/Excel/Types.ts +1 -1
- package/src/components/Excel/dataConversion.ts +8 -10
- package/src/components/Icon/iconList.ts +44 -3
- package/src/components/TableTree/Components/TableBody.tsx +1 -1
- package/src/components/TableTree/Components/TableCell.tsx +26 -12
- package/src/components/TableTree/TableTree.tsx +18 -15
- package/src/components/TableTree/data.ts +0 -31
- package/src/utils/indexDBStore/indexDB.ts +63 -33
@@ -17,9 +17,7 @@ import { checkEmpty } from '../../../utils/checkEmpty/checkEmpty';
|
|
17
17
|
|
18
18
|
interface ExcelFileProps {
|
19
19
|
/** The Excel data containing sheets and their content */
|
20
|
-
excelData:
|
21
|
-
sheets: WorkSheet[];
|
22
|
-
};
|
20
|
+
excelData: WorkSheet[];
|
23
21
|
|
24
22
|
/** Optional: Provide context menu options for actions like right-click */
|
25
23
|
contextOption?: {
|
@@ -130,49 +128,57 @@ const ExcelFile: React.FC<ExcelFileProps> = ({
|
|
130
128
|
|
131
129
|
useEffect(() => {
|
132
130
|
const payload = excelData;
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
const
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
131
|
+
if (payload) {
|
132
|
+
const sheetNames = payload.map((e) => e.sheetName);
|
133
|
+
setSheetNames(sheetNames);
|
134
|
+
|
135
|
+
if (!checkEmpty(sheetNames.length)) {
|
136
|
+
pageRef.current = sheetNames[0] ? sheetNames[0] : ''; //Ternary is required, must use ''
|
137
|
+
setSelectedSheet({
|
138
|
+
name: sheetNames[0] ? sheetNames[0] : '', //Ternary is required, must use ''
|
139
|
+
index: 0,
|
140
|
+
});
|
141
|
+
}
|
142
|
+
const newWorksheetsData: { [key: string]: Matrix.Matrix<CellBase> } = {};
|
143
|
+
payload.forEach((sheet) => {
|
144
|
+
const sheetName = sheet.sheetName;
|
145
|
+
const json = sheet.data;
|
146
|
+
const maxRows = Math.max(26, json.length + 2);
|
147
|
+
const maxCols = Math.max(
|
148
|
+
26,
|
149
|
+
Math.max(...json.map((row) => row.length)) + 2
|
150
|
+
);
|
151
|
+
|
152
|
+
let spreadsheetData: Matrix.Matrix<CellBase> = Array.from(
|
153
|
+
{ length: maxRows },
|
154
|
+
() => Array.from({ length: maxCols }, () => EmptyRow)
|
155
|
+
);
|
156
|
+
|
157
|
+
json.forEach((row, rowIndex) => {
|
158
|
+
row.forEach((cell, colIndex) => {
|
159
|
+
if (rowIndex < maxRows && colIndex < maxCols) {
|
160
|
+
if (!spreadsheetData[rowIndex]) {
|
161
|
+
spreadsheetData[rowIndex] = [];
|
162
|
+
}
|
163
|
+
spreadsheetData[rowIndex][colIndex] = {
|
164
|
+
value: checkVal(cell.value),
|
165
|
+
style: convertStyleToFrontend(cell?.styles), //TODO remove 's' for Style
|
166
|
+
type: true,
|
167
|
+
};
|
158
168
|
}
|
159
|
-
|
160
|
-
value: checkVal(cell.value),
|
161
|
-
style: convertStyleToFrontend(cell?.style),
|
162
|
-
type: true,
|
163
|
-
};
|
164
|
-
}
|
169
|
+
});
|
165
170
|
});
|
166
|
-
});
|
167
171
|
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
172
|
+
newWorksheetsData[sheetName] = spreadsheetData;
|
173
|
+
});
|
174
|
+
setWorksheetsData(newWorksheetsData);
|
175
|
+
const firstSheetName = Object.keys(newWorksheetsData)[0];
|
176
|
+
if (firstSheetName && newWorksheetsData[firstSheetName] !== undefined) {
|
177
|
+
setSelectedSheetData(newWorksheetsData[firstSheetName]);
|
178
|
+
}
|
174
179
|
}
|
175
|
-
}, []);
|
180
|
+
}, [excelData]);
|
181
|
+
|
176
182
|
const handleSave = React.useCallback(
|
177
183
|
(event: KeyboardEvent) => {
|
178
184
|
if (event.ctrlKey && event.key === 's') {
|
@@ -27,111 +27,113 @@ type Story = StoryObj<typeof ExcelFile>;
|
|
27
27
|
|
28
28
|
export const Default: Story = {
|
29
29
|
args: {
|
30
|
-
excelData:
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
},
|
30
|
+
excelData: [
|
31
|
+
{
|
32
|
+
sheetName: 'fireflink',
|
33
|
+
data: [
|
34
|
+
[
|
35
|
+
{
|
36
|
+
value: 'Test Sample Data 1',
|
37
|
+
styles: {
|
38
|
+
//TODO remove 's' for Style
|
39
|
+
name: 'Arial',
|
40
|
+
size: 11,
|
41
|
+
bold: true,
|
42
|
+
italic: false,
|
43
|
+
color: 'ffffff', // Sample data from backend without #
|
44
|
+
backgroundColor: '434db8', // Sample data from backend without #
|
45
|
+
borderColor: 'F2F2F2', // Sample data from backend without #
|
46
|
+
border: {
|
47
|
+
top: 'NONE',
|
48
|
+
bottom: 'NONE',
|
49
|
+
left: 'NONE',
|
50
|
+
right: 'NONE',
|
51
|
+
},
|
52
|
+
alignment: {
|
53
|
+
horizontal: 'GENERAL',
|
54
|
+
vertical: 'BOTTOM',
|
55
|
+
wrapText: false,
|
57
56
|
},
|
58
57
|
},
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
58
|
+
},
|
59
|
+
{
|
60
|
+
value: 'Test Data 2',
|
61
|
+
styles: {
|
62
|
+
//TODO remove 's' for Style
|
63
|
+
name: 'Arial',
|
64
|
+
size: 12,
|
65
|
+
bold: true,
|
66
|
+
italic: true,
|
67
|
+
color: 'EB5B00', // Sample data from backend without #
|
68
|
+
backgroundColor: '88C273', // Sample data from backend without #
|
69
|
+
borderColor: 'F2F2F2', // Sample data from backend without #
|
70
|
+
border: {
|
71
|
+
top: 'NONE',
|
72
|
+
bottom: 'NONE',
|
73
|
+
left: 'NONE',
|
74
|
+
right: 'NONE',
|
75
|
+
},
|
76
|
+
alignment: {
|
77
|
+
horizontal: 'GENERAL',
|
78
|
+
vertical: 'BOTTOM',
|
79
|
+
wrapText: false,
|
80
80
|
},
|
81
81
|
},
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
82
|
+
},
|
83
|
+
],
|
84
|
+
[
|
85
|
+
{
|
86
|
+
value: 'Test Data 3',
|
87
|
+
styles: {
|
88
|
+
//TODO remove 's' for Style
|
89
|
+
name: 'Arial',
|
90
|
+
size: 11,
|
91
|
+
bold: false,
|
92
|
+
italic: false,
|
93
|
+
color: '000000', // Sample data from backend without #
|
94
|
+
backgroundColor: 'EB5B00', // Sample data from backend without #
|
95
|
+
borderColor: 'F2F2F2', // Sample data from backend without #
|
96
|
+
border: {
|
97
|
+
top: 'NONE',
|
98
|
+
bottom: 'NONE',
|
99
|
+
left: 'NONE',
|
100
|
+
right: 'NONE',
|
101
|
+
},
|
102
|
+
alignment: {
|
103
|
+
horizontal: 'GENERAL',
|
104
|
+
vertical: 'BOTTOM',
|
105
|
+
wrapText: false,
|
105
106
|
},
|
106
107
|
},
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
108
|
+
},
|
109
|
+
{
|
110
|
+
value: 'Test Sample Data 4',
|
111
|
+
styles: {
|
112
|
+
//TODO remove 's' for Style
|
113
|
+
name: 'Arial',
|
114
|
+
size: 11,
|
115
|
+
bold: false,
|
116
|
+
italic: false,
|
117
|
+
color: '3D0301', // Sample data from backend without #
|
118
|
+
backgroundColor: 'C6E7FF', // Sample data from backend without #
|
119
|
+
borderColor: 'F2F2F2', // Sample data from backend without #
|
120
|
+
border: {
|
121
|
+
top: 'THIN',
|
122
|
+
bottom: 'THIN',
|
123
|
+
left: 'THIN',
|
124
|
+
right: 'THIN',
|
125
|
+
},
|
126
|
+
alignment: {
|
127
|
+
horizontal: 'GENERAL',
|
128
|
+
vertical: 'BOTTOM',
|
129
|
+
wrapText: false,
|
128
130
|
},
|
129
131
|
},
|
130
|
-
|
132
|
+
},
|
131
133
|
],
|
132
|
-
|
133
|
-
|
134
|
-
|
134
|
+
],
|
135
|
+
},
|
136
|
+
],
|
135
137
|
toolbar: 'show',
|
136
138
|
contextOption: {
|
137
139
|
open: true,
|
@@ -123,7 +123,7 @@ const ExcelToolBar: React.FC<ExcelToolBarProps> = ({
|
|
123
123
|
value: 'double_border',
|
124
124
|
label: 'Double Underline',
|
125
125
|
icon: 'double_underline',
|
126
|
-
}
|
126
|
+
},
|
127
127
|
];
|
128
128
|
|
129
129
|
const fontFamily = [
|
@@ -151,39 +151,77 @@ const ExcelToolBar: React.FC<ExcelToolBarProps> = ({
|
|
151
151
|
label: 'Courier New',
|
152
152
|
value: '"Courier New"',
|
153
153
|
},
|
154
|
-
];
|
155
|
-
|
156
|
-
const fontSize = [
|
157
154
|
{
|
158
|
-
label: '
|
159
|
-
value: '
|
155
|
+
label: 'Verdana',
|
156
|
+
value: 'Verdana',
|
157
|
+
},
|
158
|
+
{
|
159
|
+
label: 'Tahoma',
|
160
|
+
value: 'Tahoma',
|
161
|
+
},
|
162
|
+
{
|
163
|
+
label: 'Trebuchet MS',
|
164
|
+
value: '"Trebuchet MS"',
|
165
|
+
},
|
166
|
+
{
|
167
|
+
label: 'Comic Sans MS',
|
168
|
+
value: '"Comic Sans MS"',
|
169
|
+
},
|
170
|
+
{
|
171
|
+
label: 'Impact',
|
172
|
+
value: 'Impact',
|
173
|
+
},
|
174
|
+
{
|
175
|
+
label: 'Arial Black',
|
176
|
+
value: '"Arial Black"',
|
177
|
+
},
|
178
|
+
{
|
179
|
+
label: 'Lucida Console',
|
180
|
+
value: '"Lucida Console"',
|
160
181
|
},
|
161
182
|
{
|
162
|
-
label: '
|
163
|
-
value: '
|
183
|
+
label: 'Lucida Sans Unicode',
|
184
|
+
value: '"Lucida Sans Unicode"',
|
164
185
|
},
|
165
186
|
{
|
166
|
-
label: '
|
167
|
-
value: '
|
187
|
+
label: 'Courier',
|
188
|
+
value: 'Courier',
|
168
189
|
},
|
169
190
|
{
|
170
|
-
label: '
|
171
|
-
value: '
|
191
|
+
label: 'Helvetica',
|
192
|
+
value: 'Helvetica',
|
172
193
|
},
|
173
194
|
{
|
174
|
-
label: '
|
175
|
-
value: '
|
195
|
+
label: 'Arial Rounded MT Bold',
|
196
|
+
value: '"Arial Rounded MT Bold"',
|
176
197
|
},
|
177
198
|
{
|
178
|
-
label: '
|
179
|
-
value: '
|
199
|
+
label: 'Georgia',
|
200
|
+
value: 'Georgia',
|
180
201
|
},
|
181
202
|
{
|
182
|
-
label: '
|
183
|
-
value: '
|
203
|
+
label: 'sans-serif',
|
204
|
+
value: 'sans-serif',
|
205
|
+
},
|
206
|
+
{
|
207
|
+
label: 'serif',
|
208
|
+
value: 'serif',
|
209
|
+
},
|
210
|
+
{
|
211
|
+
label: 'monospace',
|
212
|
+
value: 'monospace',
|
184
213
|
},
|
185
214
|
];
|
186
215
|
|
216
|
+
const fontSizeList = [
|
217
|
+
5, 6, 8, 9, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 32, 36, 40, 48, 56, 72,
|
218
|
+
];
|
219
|
+
|
220
|
+
const fontSize = fontSizeList.map((fontSize) => ({
|
221
|
+
label: fontSize,
|
222
|
+
value: fontSize,
|
223
|
+
}));
|
224
|
+
|
187
225
|
const getTextColor = (color: string) => {
|
188
226
|
setColorPicker((prev) => ({ ...prev, color: color }));
|
189
227
|
};
|
@@ -259,7 +297,7 @@ const ExcelToolBar: React.FC<ExcelToolBarProps> = ({
|
|
259
297
|
<Tooltip placement="top" title={'Text Left'}>
|
260
298
|
<Icon
|
261
299
|
variant={cellStyle.textAlign === 'left' ? 'dark' : 'light'}
|
262
|
-
hoverEffect
|
300
|
+
hoverEffect={cellStyle.textAlign === 'left' ? false : true}
|
263
301
|
disabled={toolbar === 'disable'}
|
264
302
|
onClick={() => setTextAlign(data, 'left')}
|
265
303
|
name="text_align_left"
|
@@ -268,7 +306,7 @@ const ExcelToolBar: React.FC<ExcelToolBarProps> = ({
|
|
268
306
|
<Tooltip placement="top" title={'Text Center'}>
|
269
307
|
<Icon
|
270
308
|
variant={cellStyle.textAlign === 'center' ? 'dark' : 'light'}
|
271
|
-
hoverEffect
|
309
|
+
hoverEffect={cellStyle.textAlign === 'center' ? false : true}
|
272
310
|
disabled={toolbar === 'disable'}
|
273
311
|
onClick={() => setTextAlign(data, 'center')}
|
274
312
|
name="text_align_center"
|
@@ -278,7 +316,7 @@ const ExcelToolBar: React.FC<ExcelToolBarProps> = ({
|
|
278
316
|
<Tooltip placement="top" title={'Text Right'}>
|
279
317
|
<Icon
|
280
318
|
variant={cellStyle.textAlign === 'right' ? 'dark' : 'light'}
|
281
|
-
hoverEffect
|
319
|
+
hoverEffect={cellStyle.textAlign === 'right' ? false : true}
|
282
320
|
disabled={toolbar === 'disable'}
|
283
321
|
onClick={() => setTextAlign(data, 'right')}
|
284
322
|
name="text_align_right"
|
@@ -290,7 +328,7 @@ const ExcelToolBar: React.FC<ExcelToolBarProps> = ({
|
|
290
328
|
<Tooltip placement="top" title={'Bold'}>
|
291
329
|
<Icon
|
292
330
|
variant={styleBackend.bold ? 'dark' : 'light'}
|
293
|
-
hoverEffect
|
331
|
+
hoverEffect={styleBackend.bold ? false : true}
|
294
332
|
disabled={toolbar === 'disable'}
|
295
333
|
onClick={() => onBold(data)}
|
296
334
|
name="bold"
|
@@ -298,8 +336,8 @@ const ExcelToolBar: React.FC<ExcelToolBarProps> = ({
|
|
298
336
|
</Tooltip>
|
299
337
|
<Tooltip placement="top" title={'Italic'}>
|
300
338
|
<Icon
|
301
|
-
hoverEffect
|
302
339
|
variant={styleBackend.italic ? 'dark' : 'light'}
|
340
|
+
hoverEffect={styleBackend.italic ? false : true}
|
303
341
|
disabled={toolbar === 'disable'}
|
304
342
|
onClick={() => onItalic(data)}
|
305
343
|
name="italic"
|
@@ -311,7 +349,9 @@ const ExcelToolBar: React.FC<ExcelToolBarProps> = ({
|
|
311
349
|
variant={
|
312
350
|
cellStyle.textDecoration === underLine ? 'dark' : 'light'
|
313
351
|
}
|
314
|
-
hoverEffect
|
352
|
+
hoverEffect={
|
353
|
+
cellStyle.textDecoration === underLine ? false : true
|
354
|
+
}
|
315
355
|
disabled={toolbar === 'disable'}
|
316
356
|
onClick={() => setUnderlineType(data, underLine, true)}
|
317
357
|
name={getUnderlineIcon()}
|
@@ -324,7 +364,6 @@ const ExcelToolBar: React.FC<ExcelToolBarProps> = ({
|
|
324
364
|
iconSize={12}
|
325
365
|
options={underlineTypeIcon}
|
326
366
|
tooltipPlacement="top"
|
327
|
-
variant="light"
|
328
367
|
onOptionClick={(e) => {
|
329
368
|
let selectedValue = e.value as string;
|
330
369
|
setUnderlineType(data, selectedValue, true);
|
@@ -340,7 +379,7 @@ const ExcelToolBar: React.FC<ExcelToolBarProps> = ({
|
|
340
379
|
<Tooltip placement="top" title={'Format Painter'}>
|
341
380
|
<Icon
|
342
381
|
variant={formattedStyle ? 'dark' : 'light'}
|
343
|
-
hoverEffect
|
382
|
+
hoverEffect={formattedStyle ? false : true}
|
344
383
|
disabled={toolbar === 'disable'}
|
345
384
|
onClick={() => {
|
346
385
|
setFormatePainter(data);
|
@@ -403,7 +442,6 @@ const ExcelToolBar: React.FC<ExcelToolBarProps> = ({
|
|
403
442
|
zIndex={1000}
|
404
443
|
options={borderTypeIcon}
|
405
444
|
tooltipPlacement="top"
|
406
|
-
variant="light"
|
407
445
|
onOptionClick={(e) => {
|
408
446
|
let selectedValue = e.value as string;
|
409
447
|
setBorderType(data, selectedValue, 'black');
|
@@ -415,7 +453,6 @@ const ExcelToolBar: React.FC<ExcelToolBarProps> = ({
|
|
415
453
|
</Tooltip>
|
416
454
|
</div>
|
417
455
|
|
418
|
-
|
419
456
|
{/* <div className="ff-excel-toolbar-divider"></div> TODO */}
|
420
457
|
{/* <div className="ff-excel-toolbar-menu">
|
421
458
|
<Tooltip placement="top" title={'Formula'}>
|
@@ -74,7 +74,6 @@ export const getTextDecorationBack = (
|
|
74
74
|
export function convertStyleToFrontend(
|
75
75
|
backendStyle: BackendStyle
|
76
76
|
): React.CSSProperties {
|
77
|
-
|
78
77
|
const { border } = backendStyle;
|
79
78
|
|
80
79
|
let borderTop = '';
|
@@ -82,32 +81,31 @@ export function convertStyleToFrontend(
|
|
82
81
|
let borderBottom = '';
|
83
82
|
let borderLeft = '';
|
84
83
|
|
85
|
-
if (border.top !== '
|
84
|
+
if (border.top !== 'THIN') {
|
86
85
|
borderTop =
|
87
|
-
border.top === '
|
86
|
+
border.top === 'MEDIUM'
|
88
87
|
? '2px solid var(--input-hover-border-color)'
|
89
88
|
: '1px solid var(--excel-sheet-border)';
|
90
89
|
}
|
91
|
-
if (border.right !== '
|
90
|
+
if (border.right !== 'THIN') {
|
92
91
|
borderRight =
|
93
|
-
border.right === '
|
92
|
+
border.right === 'MEDIUM'
|
94
93
|
? '2px solid var(--input-hover-border-color)'
|
95
94
|
: '1px solid var(--excel-sheet-border)';
|
96
95
|
}
|
97
|
-
if (border.bottom !== '
|
96
|
+
if (border.bottom !== 'THIN') {
|
98
97
|
borderBottom =
|
99
|
-
border.bottom === '
|
98
|
+
border.bottom === 'MEDIUM'
|
100
99
|
? '2px solid var(--input-hover-border-color)'
|
101
100
|
: '1px solid var(--excel-sheet-border)';
|
102
101
|
}
|
103
|
-
if (border.left !== '
|
102
|
+
if (border.left !== 'THIN') {
|
104
103
|
borderLeft =
|
105
|
-
border.left === '
|
104
|
+
border.left === 'MEDIUM'
|
106
105
|
? '2px solid var(--input-hover-border-color)'
|
107
106
|
: '1px solid var(--excel-sheet-border)';
|
108
107
|
}
|
109
108
|
|
110
|
-
// Return the converted styles
|
111
109
|
return {
|
112
110
|
fontSize: `${backendStyle.size}px`,
|
113
111
|
fontFamily: backendStyle.name,
|
@@ -250,7 +250,7 @@ import variableSet from '../../assets/icons/variable_set.svg?react';
|
|
250
250
|
|
251
251
|
import machineEnableIcon from '../../assets/icons/machine_enable_icon.svg?react';
|
252
252
|
import machineDisableIcon from '../../assets/icons/machine_disable_icon.svg?react';
|
253
|
-
import suitesIcon from '../../assets/icons/suites_icon.svg?react';
|
253
|
+
import suitesIcon from '../../assets/icons/suites_icon.svg?react';
|
254
254
|
import executionsIcon from '../../assets/icons/executions_icon.svg?react';
|
255
255
|
import ImportIcon from '../../assets/icons/import_icon.svg?react';
|
256
256
|
import Settings from '../../assets/icons/settings.svg?react';
|
@@ -259,6 +259,27 @@ import ExternalUser from '../../assets/icons/external_user.svg?react';
|
|
259
259
|
import SingleUser from '../../assets/icons/single_user.svg?react';
|
260
260
|
import GroupUser from '../../assets/icons/group_user.svg?react';
|
261
261
|
import TestFreshersLogo from '../../assets/icons/test_freshers_logo.svg?react';
|
262
|
+
import DisableIcon from '../../assets/icons/disable_icon.svg?react';
|
263
|
+
import EnableIcon from '../../assets/icons/enable_icon.svg?react';
|
264
|
+
|
265
|
+
import ClearHistory from '../../assets/icons/clear_history.svg?react';
|
266
|
+
import Csharp from '../../assets/icons/csharp.svg?react';
|
267
|
+
import Cypress from '../../assets/icons/cypress.svg?react';
|
268
|
+
import Java from '../../assets/icons/java.svg?react';
|
269
|
+
import JavaScript from '../../assets/icons/javascript.svg?react';
|
270
|
+
import PlayWright from '../../assets/icons/playwright.svg?react';
|
271
|
+
import Python from '../../assets/icons/python.svg?react';
|
272
|
+
import Code from '../../assets/icons/code.svg?react';
|
273
|
+
import Regenerate from '../../assets/icons/regenerate.svg?react';
|
274
|
+
import Mic from '../../assets/icons/mic.svg?react';
|
275
|
+
import MicActive from '../../assets/icons/mic_filled.svg?react';
|
276
|
+
import RightArrowFilled from '../../assets/icons/right_arrow_filled_icon.svg?react';
|
277
|
+
import CodeColored from '../../assets/icons/code_colored.svg?react';
|
278
|
+
import DesignLink from '../../assets/icons/design_link.svg?react';
|
279
|
+
import FileColored from '../../assets/icons/file_colored.svg?react';
|
280
|
+
import JiraColored from '../../assets/icons/jira_colored.svg?react';
|
281
|
+
import Screenshot from '../../assets/icons/screenshot.svg?react';
|
282
|
+
import DeleteFilled from '../../assets/icons/delete_filled.svg?react';
|
262
283
|
|
263
284
|
Components['success'] = ToastSuccessIcon;
|
264
285
|
Components['alert'] = Alert;
|
@@ -508,10 +529,30 @@ Components['executions_icon'] = executionsIcon;
|
|
508
529
|
Components['suites_icon'] = suitesIcon;
|
509
530
|
Components['import_icon'] = ImportIcon;
|
510
531
|
Components['settings'] = Settings;
|
511
|
-
Components['test_freshers_logo']=TestFreshersLogo;
|
512
|
-
Components['unfollow_icon']=UnfollowIcon
|
532
|
+
Components['test_freshers_logo'] = TestFreshersLogo;
|
533
|
+
Components['unfollow_icon'] = UnfollowIcon;
|
513
534
|
Components['external_user'] = ExternalUser;
|
514
535
|
Components['single_user'] = SingleUser;
|
515
536
|
Components['group_user'] = GroupUser;
|
537
|
+
Components['disable_icon'] = DisableIcon;
|
538
|
+
Components['enable_icon'] = EnableIcon;
|
539
|
+
Components['clear_history'] = ClearHistory;
|
540
|
+
Components['csharp'] = Csharp;
|
541
|
+
Components['cypress'] = Cypress;
|
542
|
+
Components['java'] = Java;
|
543
|
+
Components['javascript'] = JavaScript;
|
544
|
+
Components['playwright'] = PlayWright;
|
545
|
+
Components['python'] = Python;
|
546
|
+
Components['code'] = Code;
|
547
|
+
Components['regenerate'] = Regenerate;
|
548
|
+
Components['mic'] = Mic;
|
549
|
+
Components['mic_filled'] = MicActive;
|
550
|
+
Components['right_arrow_filled_icon'] = RightArrowFilled;
|
551
|
+
Components['code_colored'] = CodeColored;
|
552
|
+
Components['design_link'] = DesignLink;
|
553
|
+
Components['file_colored'] = FileColored;
|
554
|
+
Components['jira_colored'] = JiraColored;
|
555
|
+
Components['screenshot'] = Screenshot;
|
556
|
+
Components['delete_filled'] = DeleteFilled;
|
516
557
|
|
517
558
|
export default Components;
|
@@ -12,7 +12,7 @@ const TableBody = React.memo(
|
|
12
12
|
onToggleExpand,
|
13
13
|
onCheckBoxChange,
|
14
14
|
}: TableBodyProps) => (
|
15
|
-
<tbody className=
|
15
|
+
<tbody className="ff-table-tree-body">
|
16
16
|
<tr id="ff-table-tree-first-node" />
|
17
17
|
{flattenedTreeData?.map(
|
18
18
|
({ node, level, parentSiblings = [], isLast = false }) => {
|