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.
Files changed (42) hide show
  1. package/lib/components/Excel/ExcelFile/ExcelFile.d.ts +1 -3
  2. package/lib/components/Excel/Types.d.ts +1 -1
  3. package/lib/components/TableTree/data.d.ts +0 -40
  4. package/lib/index.d.ts +3 -5
  5. package/lib/index.esm.js +234 -354
  6. package/lib/index.esm.js.map +1 -1
  7. package/lib/index.js +234 -354
  8. package/lib/index.js.map +1 -1
  9. package/lib/utils/indexDBStore/indexDB.d.ts +2 -2
  10. package/package.json +1 -2
  11. package/src/assets/icons/clear_history.svg +6 -0
  12. package/src/assets/icons/code.svg +4 -0
  13. package/src/assets/icons/code_colored.svg +4 -0
  14. package/src/assets/icons/csharp.svg +9 -0
  15. package/src/assets/icons/cypress.svg +9 -0
  16. package/src/assets/icons/delete_filled.svg +12 -0
  17. package/src/assets/icons/design_link.svg +7 -0
  18. package/src/assets/icons/disable_icon.svg +3 -0
  19. package/src/assets/icons/enable_icon.svg +3 -0
  20. package/src/assets/icons/file_colored.svg +5 -0
  21. package/src/assets/icons/java.svg +4 -0
  22. package/src/assets/icons/javascript.svg +11 -0
  23. package/src/assets/icons/jira_colored.svg +15 -0
  24. package/src/assets/icons/mic.svg +4 -0
  25. package/src/assets/icons/mic_filled.svg +28 -0
  26. package/src/assets/icons/playwright.svg +9 -0
  27. package/src/assets/icons/python.svg +19 -0
  28. package/src/assets/icons/regenerate.svg +4 -0
  29. package/src/assets/icons/right_arrow_filled_icon.svg +5 -0
  30. package/src/assets/icons/screenshot.svg +7 -0
  31. package/src/components/Button/Button.tsx +2 -0
  32. package/src/components/Excel/ExcelFile/ExcelFile.tsx +48 -42
  33. package/src/components/Excel/ExcelFile.stories.tsx +98 -96
  34. package/src/components/Excel/ExcelToolBar/ExcelToolBar.tsx +65 -28
  35. package/src/components/Excel/Types.ts +1 -1
  36. package/src/components/Excel/dataConversion.ts +8 -10
  37. package/src/components/Icon/iconList.ts +44 -3
  38. package/src/components/TableTree/Components/TableBody.tsx +1 -1
  39. package/src/components/TableTree/Components/TableCell.tsx +26 -12
  40. package/src/components/TableTree/TableTree.tsx +18 -15
  41. package/src/components/TableTree/data.ts +0 -31
  42. 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
- const sheetNames = payload.sheets.map((e) => e.sheetName);
134
- setSheetNames(sheetNames);
135
- if (sheetNames.length > 0) {
136
- pageRef.current = sheetNames[0] ? sheetNames[0] : '';
137
- setSelectedSheet({ name: sheetNames[0] ? sheetNames[0] : '', index: 0 });
138
- }
139
- const newWorksheetsData: { [key: string]: Matrix.Matrix<CellBase> } = {};
140
- payload.sheets.forEach((sheet) => {
141
- const sheetName = sheet.sheetName;
142
- const json = sheet.data;
143
- const maxRows = Math.max(26, json.length + 2);
144
- const maxCols = Math.max(
145
- 26,
146
- Math.max(...json.map((row) => row.length)) + 2
147
- );
148
-
149
- let spreadsheetData: Matrix.Matrix<CellBase> = Array.from(
150
- { length: maxRows },
151
- () => Array.from({ length: maxCols }, () => EmptyRow)
152
- );
153
- json.forEach((row, rowIndex) => {
154
- row.forEach((cell, colIndex) => {
155
- if (rowIndex < maxRows && colIndex < maxCols) {
156
- if (!spreadsheetData[rowIndex]) {
157
- spreadsheetData[rowIndex] = [];
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
- spreadsheetData[rowIndex][colIndex] = {
160
- value: checkVal(cell.value),
161
- style: convertStyleToFrontend(cell?.style),
162
- type: true,
163
- };
164
- }
169
+ });
165
170
  });
166
- });
167
171
 
168
- newWorksheetsData[sheetName] = spreadsheetData;
169
- });
170
- setWorksheetsData(newWorksheetsData);
171
- const firstSheetName = Object.keys(newWorksheetsData)[0];
172
- if (firstSheetName && newWorksheetsData[firstSheetName] !== undefined) {
173
- setSelectedSheetData(newWorksheetsData[firstSheetName]);
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
- sheets: [
32
- {
33
- sheetName: 'fireflink',
34
- data: [
35
- [
36
- {
37
- value: 'Test Sample Data 1',
38
- 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,
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
- value: 'Test Data 2',
61
- style: {
62
- name: 'Arial',
63
- size: 12,
64
- bold: true,
65
- italic: true,
66
- color: 'EB5B00', // Sample data from backend without #
67
- backgroundColor: '88C273', // Sample data from backend without #
68
- borderColor: 'F2F2F2', // Sample data from backend without #
69
- border: {
70
- top: 'NONE',
71
- bottom: 'NONE',
72
- left: 'NONE',
73
- right: 'NONE',
74
- },
75
- alignment: {
76
- horizontal: 'GENERAL',
77
- vertical: 'BOTTOM',
78
- wrapText: false,
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
- value: 'Test Data 3',
86
- style: {
87
- name: 'Arial',
88
- size: 11,
89
- bold: false,
90
- italic: false,
91
- color: '000000', // Sample data from backend without #
92
- backgroundColor: 'EB5B00', // Sample data from backend without #
93
- borderColor: 'F2F2F2', // Sample data from backend without #
94
- border: {
95
- top: 'NONE',
96
- bottom: 'NONE',
97
- left: 'NONE',
98
- right: 'NONE',
99
- },
100
- alignment: {
101
- horizontal: 'GENERAL',
102
- vertical: 'BOTTOM',
103
- wrapText: false,
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
- value: 'Test Sample Data 4',
109
- style: {
110
- name: 'Arial',
111
- size: 11,
112
- bold: false,
113
- italic: false,
114
- color: '3D0301', // Sample data from backend without #
115
- backgroundColor: 'C6E7FF', // Sample data from backend without #
116
- borderColor: 'F2F2F2', // Sample data from backend without #
117
- border: {
118
- top: 'THIN',
119
- bottom: 'THIN',
120
- left: 'THIN',
121
- right: 'THIN',
122
- },
123
- alignment: {
124
- horizontal: 'GENERAL',
125
- vertical: 'BOTTOM',
126
- wrapText: false,
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: '5',
159
- value: '5',
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: '9',
163
- value: '9',
183
+ label: 'Lucida Sans Unicode',
184
+ value: '"Lucida Sans Unicode"',
164
185
  },
165
186
  {
166
- label: '11',
167
- value: '11',
187
+ label: 'Courier',
188
+ value: 'Courier',
168
189
  },
169
190
  {
170
- label: '12',
171
- value: '12',
191
+ label: 'Helvetica',
192
+ value: 'Helvetica',
172
193
  },
173
194
  {
174
- label: '14',
175
- value: '14',
195
+ label: 'Arial Rounded MT Bold',
196
+ value: '"Arial Rounded MT Bold"',
176
197
  },
177
198
  {
178
- label: '16',
179
- value: '16',
199
+ label: 'Georgia',
200
+ value: 'Georgia',
180
201
  },
181
202
  {
182
- label: '18',
183
- value: '18',
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'}>
@@ -31,7 +31,7 @@ interface WorkData {
31
31
  value: string;
32
32
 
33
33
  /** Styling options for the cell */
34
- style: BackendStyle;
34
+ styles: BackendStyle; //TODO remove 's' for Style
35
35
  type?: boolean;
36
36
  }
37
37
 
@@ -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 !== 'NONE') {
84
+ if (border.top !== 'THIN') {
86
85
  borderTop =
87
- border.top === 'THIN'
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 !== 'NONE') {
90
+ if (border.right !== 'THIN') {
92
91
  borderRight =
93
- border.right === 'THIN'
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 !== 'NONE') {
96
+ if (border.bottom !== 'THIN') {
98
97
  borderBottom =
99
- border.bottom === 'THIN'
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 !== 'NONE') {
102
+ if (border.left !== 'THIN') {
104
103
  borderLeft =
105
- border.left === 'THIN'
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='ff-table-tree-body'>
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 }) => {