pixel-react 1.2.1 → 1.2.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 (157) hide show
  1. package/lib/components/AppHeader/types.d.ts +11 -2
  2. package/lib/components/Avatar/Avatar.d.ts +5 -0
  3. package/lib/components/Avatar/Avatar.stories.d.ts +10 -0
  4. package/lib/components/Avatar/index.d.ts +1 -0
  5. package/lib/components/Avatar/types.d.ts +26 -0
  6. package/lib/components/ExcelFile/ExcelFile/Excel/ActiveCell.d.ts +2 -2
  7. package/lib/components/ExcelFile/ExcelFile/Excel/ColumnIndicator.d.ts +2 -2
  8. package/lib/components/ExcelFile/ExcelFile/Excel/Copied.d.ts +1 -1
  9. package/lib/components/ExcelFile/ExcelFile/Excel/CornerIndicator.d.ts +2 -2
  10. package/lib/components/ExcelFile/ExcelFile/Excel/DataEditor.d.ts +2 -2
  11. package/lib/components/ExcelFile/ExcelFile/Excel/DataViewer.d.ts +2 -2
  12. package/lib/components/ExcelFile/ExcelFile/Excel/FloatingRect.d.ts +2 -2
  13. package/lib/components/ExcelFile/ExcelFile/Excel/HeaderRow.d.ts +1 -1
  14. package/lib/components/ExcelFile/ExcelFile/Excel/Row.d.ts +1 -1
  15. package/lib/components/ExcelFile/ExcelFile/Excel/RowIndicator.d.ts +2 -2
  16. package/lib/components/ExcelFile/ExcelFile/Excel/Selected.d.ts +1 -1
  17. package/lib/components/ExcelFile/ExcelFile/Excel/Spreadsheet.d.ts +6 -7
  18. package/lib/components/ExcelFile/ExcelFile/Excel/Table.d.ts +1 -1
  19. package/lib/components/ExcelFile/ExcelFile/Excel/actions.d.ts +49 -5
  20. package/lib/components/ExcelFile/ExcelFile/Excel/context.d.ts +3 -3
  21. package/lib/components/ExcelFile/ExcelFile/Excel/engine/engine.d.ts +5 -5
  22. package/lib/components/ExcelFile/ExcelFile/Excel/engine/formula.d.ts +6 -6
  23. package/lib/components/ExcelFile/ExcelFile/Excel/engine/index.d.ts +2 -2
  24. package/lib/components/ExcelFile/ExcelFile/Excel/engine/point-graph.d.ts +2 -2
  25. package/lib/components/ExcelFile/ExcelFile/Excel/engine/point-hash.d.ts +1 -1
  26. package/lib/components/ExcelFile/ExcelFile/Excel/engine/point-set.d.ts +1 -1
  27. package/lib/components/ExcelFile/ExcelFile/Excel/index.d.ts +11 -11
  28. package/lib/components/ExcelFile/ExcelFile/Excel/matrix.d.ts +1 -1
  29. package/lib/components/ExcelFile/ExcelFile/Excel/point-range.d.ts +1 -1
  30. package/lib/components/ExcelFile/ExcelFile/Excel/reducer.d.ts +5 -5
  31. package/lib/components/ExcelFile/ExcelFile/Excel/selection.d.ts +3 -3
  32. package/lib/components/ExcelFile/ExcelFile/Excel/types.d.ts +11 -48
  33. package/lib/components/ExcelFile/ExcelFile/Excel/use-dispatch.d.ts +1 -1
  34. package/lib/components/ExcelFile/ExcelFile/Excel/use-selector.d.ts +1 -1
  35. package/lib/components/ExcelFile/ExcelFile/Excel/util.d.ts +11 -12
  36. package/lib/components/ExcelFile/ExcelFile/ExcelFile.d.ts +16 -0
  37. package/lib/components/ExcelFile/ExcelSheetBar/ExcelSheetBar.d.ts +0 -3
  38. package/lib/components/ExcelFile/ExcelToolBar/ExcelToolBar.d.ts +12 -0
  39. package/lib/components/ExcelFile/Types.d.ts +2 -49
  40. package/lib/components/Form/Form.d.ts +1 -15
  41. package/lib/components/Form/Form.stories.d.ts +6 -5
  42. package/lib/components/Form/Forms.d.ts +8 -0
  43. package/lib/components/Form/index.d.ts +1 -1
  44. package/lib/components/MenuOption/types.d.ts +7 -7
  45. package/lib/components/ModulesChip/ModuleChip.d.ts +4 -0
  46. package/lib/components/ModulesChip/ModuleChip.stories.d.ts +6 -0
  47. package/lib/components/ModulesChip/index.d.ts +1 -0
  48. package/lib/components/ModulesChip/types.d.ts +14 -0
  49. package/lib/components/MultiSelect/MultiSelectTypes.d.ts +1 -0
  50. package/lib/components/Toastify/Toastify.d.ts +8 -0
  51. package/lib/components/Toastify/Toastify.stories.d.ts +6 -0
  52. package/lib/components/Toastify/index.d.ts +1 -0
  53. package/lib/components/Toastify/types.d.ts +7 -0
  54. package/lib/components/Tooltip/types.d.ts +6 -0
  55. package/lib/components/Typography/types.d.ts +1 -0
  56. package/lib/index.d.ts +75 -22
  57. package/lib/index.esm.js +26686 -870
  58. package/lib/index.esm.js.map +1 -1
  59. package/lib/index.js +26684 -864
  60. package/lib/index.js.map +1 -1
  61. package/lib/tsconfig.tsbuildinfo +1 -1
  62. package/package.json +1 -1
  63. package/src/StyleGuide/ColorPalette/colorPaletteList.ts +10 -0
  64. package/src/assets/Themes/BaseTheme.scss +2 -0
  65. package/src/assets/Themes/DarkTheme.scss +2 -0
  66. package/src/assets/icons/client_profile.svg +4 -0
  67. package/src/assets/icons/fireflink_finder_logo.svg +7 -0
  68. package/src/assets/icons/fireflink_platform.svg +4 -0
  69. package/src/assets/icons/license_expired.svg +20 -0
  70. package/src/components/AppHeader/AppHeader.stories.tsx +24 -3
  71. package/src/components/AppHeader/AppHeader.tsx +29 -11
  72. package/src/components/AppHeader/types.ts +11 -3
  73. package/src/components/Avatar/Avatar.scss +24 -0
  74. package/src/components/Avatar/Avatar.stories.tsx +56 -0
  75. package/src/components/Avatar/Avatar.tsx +25 -0
  76. package/src/components/Avatar/index.ts +1 -0
  77. package/src/components/Avatar/types.ts +27 -0
  78. package/src/components/ExcelFile/ColorBarselector/ColorBarSelector.scss +0 -2
  79. package/src/components/ExcelFile/ContextMenu/ContextMenu.scss +1 -4
  80. package/src/components/ExcelFile/ContextMenu/ContextMenu.tsx +0 -1
  81. package/src/components/ExcelFile/ExcelFile/Excel/ActiveCell.tsx +13 -13
  82. package/src/components/ExcelFile/ExcelFile/Excel/Cell.tsx +13 -12
  83. package/src/components/ExcelFile/ExcelFile/Excel/ColumnIndicator.tsx +40 -32
  84. package/src/components/ExcelFile/ExcelFile/Excel/Copied.tsx +4 -4
  85. package/src/components/ExcelFile/ExcelFile/Excel/CornerIndicator.tsx +10 -10
  86. package/src/components/ExcelFile/ExcelFile/Excel/DataEditor.tsx +5 -5
  87. package/src/components/ExcelFile/ExcelFile/Excel/DataViewer.tsx +10 -10
  88. package/src/components/ExcelFile/ExcelFile/Excel/FloatingRect.tsx +6 -6
  89. package/src/components/ExcelFile/ExcelFile/Excel/HeaderRow.tsx +1 -1
  90. package/src/components/ExcelFile/ExcelFile/Excel/Row.tsx +1 -1
  91. package/src/components/ExcelFile/ExcelFile/Excel/RowIndicator.tsx +34 -27
  92. package/src/components/ExcelFile/ExcelFile/Excel/Selected.tsx +5 -5
  93. package/src/components/ExcelFile/ExcelFile/Excel/{Spreadsheet.css → Spreadsheet.scss} +21 -37
  94. package/src/components/ExcelFile/ExcelFile/Excel/Spreadsheet.tsx +87 -78
  95. package/src/components/ExcelFile/ExcelFile/Excel/Table.tsx +2 -2
  96. package/src/components/ExcelFile/ExcelFile/Excel/actions.ts +121 -31
  97. package/src/components/ExcelFile/ExcelFile/Excel/areModelsEqual.ts +1 -1
  98. package/src/components/ExcelFile/ExcelFile/Excel/context.ts +4 -4
  99. package/src/components/ExcelFile/ExcelFile/Excel/engine/engine.ts +7 -7
  100. package/src/components/ExcelFile/ExcelFile/Excel/engine/formula.ts +11 -11
  101. package/src/components/ExcelFile/ExcelFile/Excel/engine/index.ts +2 -2
  102. package/src/components/ExcelFile/ExcelFile/Excel/engine/point-graph.ts +3 -3
  103. package/src/components/ExcelFile/ExcelFile/Excel/engine/point-hash.ts +2 -2
  104. package/src/components/ExcelFile/ExcelFile/Excel/engine/point-set.ts +2 -2
  105. package/src/components/ExcelFile/ExcelFile/Excel/index.ts +12 -11
  106. package/src/components/ExcelFile/ExcelFile/Excel/matrix.ts +18 -24
  107. package/src/components/ExcelFile/ExcelFile/Excel/point-range.ts +1 -1
  108. package/src/components/ExcelFile/ExcelFile/Excel/reducer.ts +311 -41
  109. package/src/components/ExcelFile/ExcelFile/Excel/selection.ts +5 -5
  110. package/src/components/ExcelFile/ExcelFile/Excel/types.ts +14 -66
  111. package/src/components/ExcelFile/ExcelFile/Excel/typings/fast-formula-parser.d.ts +8 -8
  112. package/src/components/ExcelFile/ExcelFile/Excel/use-dispatch.ts +2 -2
  113. package/src/components/ExcelFile/ExcelFile/Excel/use-selector.ts +3 -3
  114. package/src/components/ExcelFile/ExcelFile/Excel/util.ts +21 -22
  115. package/src/components/ExcelFile/ExcelFile/ExcelFile.scss +0 -3
  116. package/src/components/ExcelFile/ExcelFile/ExcelFile.tsx +45 -403
  117. package/src/components/ExcelFile/ExcelFile.stories.tsx +10 -29
  118. package/src/components/ExcelFile/ExcelSheetBar/ExcelSheetBar.tsx +1 -12
  119. package/src/components/ExcelFile/ExcelToolBar/ExcelToolBar.scss +0 -3
  120. package/src/components/ExcelFile/ExcelToolBar/ExcelToolBar.tsx +147 -127
  121. package/src/components/ExcelFile/Types.ts +3 -70
  122. package/src/components/ExcelFile/index.ts +1 -1
  123. package/src/components/Form/Form.d.ts +3 -0
  124. package/src/components/Form/Form.scss +31 -4
  125. package/src/components/Form/Form.stories.tsx +172 -138
  126. package/src/components/Form/Form.ts +2 -0
  127. package/src/components/Form/Forms.tsx +25 -0
  128. package/src/components/Form/index.ts +1 -1
  129. package/src/components/Icon/iconList.ts +8 -0
  130. package/src/components/IconButton/IconButton.scss +1 -1
  131. package/src/components/MenuOption/types.ts +7 -6
  132. package/src/components/ModulesChip/ModuleChip.scss +20 -0
  133. package/src/components/ModulesChip/ModuleChip.stories.tsx +41 -0
  134. package/src/components/ModulesChip/ModuleChip.tsx +31 -0
  135. package/src/components/ModulesChip/index.ts +1 -0
  136. package/src/components/ModulesChip/types.ts +14 -0
  137. package/src/components/MultiSelect/Dropdown.tsx +6 -1
  138. package/src/components/MultiSelect/MultiSelect.scss +17 -10
  139. package/src/components/MultiSelect/MultiSelect.stories.tsx +16 -4
  140. package/src/components/MultiSelect/MultiSelect.tsx +11 -4
  141. package/src/components/MultiSelect/MultiSelectTypes.ts +4 -3
  142. package/src/components/Select/Select.scss +4 -0
  143. package/src/components/Select/Select.tsx +2 -2
  144. package/src/components/Toastify/Toastify.stories.tsx +52 -0
  145. package/src/components/Toastify/Toastify.tsx +66 -0
  146. package/src/components/Toastify/index.ts +1 -0
  147. package/src/components/Toastify/types.ts +8 -0
  148. package/src/components/Tooltip/Tooltip.tsx +2 -1
  149. package/src/components/Tooltip/types.ts +6 -0
  150. package/src/components/Typography/Typography.scss +12 -4
  151. package/src/components/Typography/Typography.stories.tsx +2 -0
  152. package/src/components/Typography/Typography.tsx +2 -0
  153. package/src/components/Typography/types.ts +1 -0
  154. package/src/index.ts +10 -2
  155. package/src/components/ExcelFile/ChangeExcelStyles.tsx +0 -78
  156. package/src/components/ExcelFile/ImportExcelStyles.tsx +0 -86
  157. package/src/components/Form/Form.tsx +0 -57
@@ -1,32 +1,30 @@
1
1
  import React, { useState, useRef, useEffect } from 'react';
2
- // import './ExcelFile.scss';
3
- // import Spreadsheet from 'react-spreadsheet';
4
- // import ImportExcelStyles from '../ImportExcelStyles';
5
- // import ChangeExcelStyles from '../ChangeExcelStyles';
6
- // import { colors } from '../../../colors/colorConstants';
7
- import ExcelToolBar from '../ExcelToolBar/ExcelToolBar';
8
2
  import ExcelSheetBar from '../ExcelSheetBar/ExcelSheetBar';
9
- import ContextMenu from '../ContextMenu/ContextMenu';
10
3
  import Spreadsheet, { CellBase } from './Excel/index';
11
- import * as Matrix from "./Excel/matrix";
12
- import ChangeExcelStyles from './../ChangeExcelStyles';
4
+ import * as Matrix from './Excel/matrix';
13
5
 
6
+ interface ExcelFileProps {
7
+ /** The Excel data containing sheets and their content */
8
+ excelData: {
9
+ sheets: WorkSheet[];
10
+ };
14
11
 
15
- let colors={
16
- ff_down_arrow_color: '#acacac',
17
- ff_up_arrow_color: '#434db8',
18
- ff_input_up_down_arrow_color: '#B2AEAE',
19
- white: '#ffffff',
20
- black: '#000000',
21
- grey_dark: '#727171',
22
- light_gray_50: '#F2F2F2',
23
- button_red_60: '#C50303',
24
- };
12
+ /** Optional: Provide context menu options for actions like right-click */
13
+ contextOption?: {
14
+ name: string;
15
+ title: React.ReactNode;
16
+ action: () => void;
17
+ }[];
18
+
19
+ /** Controls whether the toolbar is shown, disabled, or hidden */
20
+ toolbar?: 'show' | 'disable' | 'hide';
21
+
22
+ /** Callback function to save the Excel data */
23
+ onSave?: (excelData?: any) => void;
24
+ }
25
25
 
26
26
  const ExcelFile: React.FC<ExcelFileProps> = ({
27
27
  excelData,
28
- toolbar = 'show',
29
- contextOption = [],
30
28
  onSave = () => {},
31
29
  }) => {
32
30
  const [fileDetails, setFileDetails] = useState<{
@@ -35,24 +33,9 @@ const ExcelFile: React.FC<ExcelFileProps> = ({
35
33
  const EmptyRow: CellBase = {
36
34
  value: '',
37
35
  style: {
38
- name: 'Arial',
39
- size: 11,
40
- bold: false,
41
- italic: false,
42
- color: colors.black.replace('#', ''),
43
- backgroundColor: colors.white.replace('#', ''),
44
- borderColor: colors.light_gray_50.replace('#', ''),
45
- border: {
46
- top: 'NONE',
47
- bottom: 'NONE',
48
- left: 'NONE',
49
- right: 'NONE',
50
- },
51
- alignment: {
52
- horizontal: 'GENERAL',
53
- vertical: 'BOTTOM',
54
- wrapText: false,
55
- },
36
+ color: 'var(--text-color)',
37
+ backgroundColor: 'var(--drawer-footer-bg)',
38
+ borderColor: 'var(--toggle-strip-color)',
56
39
  },
57
40
  };
58
41
  const [selectedSheet, setSelectedSheet] = useState<{
@@ -62,61 +45,18 @@ const ExcelFile: React.FC<ExcelFileProps> = ({
62
45
 
63
46
  const [worksheetsData, setWorksheetsData] = useState<{
64
47
  [key: string]: Matrix.Matrix<CellBase>;
65
- }>({defaultSheet:[[EmptyRow]]});
48
+ }>({ defaultSheet: [[EmptyRow]] });
66
49
 
50
+ const [selectedSheetData, setSelectedSheetData] = useState<
51
+ Matrix.Matrix<CellBase>
52
+ >([[EmptyRow]]);
67
53
 
68
- const [selectedSheetData, setSelectedSheetData] = useState<Matrix.Matrix<CellBase>>([
69
- [EmptyRow]
70
- ]);
71
-
72
- // const [selectedValue, setSelectedValue] = useState<SelectedValue>({
73
- // value: '',
74
- // row: 0,
75
- // column: 0,
76
- // alphaCol: '',
77
- // style: {
78
- // name: 'Arial',
79
- // size: 11,
80
- // bold: false,
81
- // italic: false,
82
- // color: colors.black.replace('#', ''),
83
- // backgroundColor: colors.white.replace('#', ''),
84
- // borderColor: colors.light_gray_50.replace('#', ''),
85
- // border: {
86
- // top: 'NONE',
87
- // bottom: 'NONE',
88
- // left: 'NONE',
89
- // right: 'NONE',
90
- // },
91
- // alignment: {
92
- // horizontal: 'GENERAL',
93
- // vertical: 'BOTTOM',
94
- // wrapText: false,
95
- // },
96
- // },
97
- // sheet: '',
98
- // });
99
- const [selectedCell, setSelectedCell] = useState<
100
- { row: number; column: number }[]
101
- >([]);
102
- // const [formatePainter, setFormatePainter] = useState<{
103
- // style: CellStyle | null;
104
- // active: boolean;
105
- // }>({
106
- // style: null,
107
- // active: false,
108
- // });
109
54
  const sheetRef = useRef<HTMLDivElement | null>(null);
110
- const excelDataCopy = useRef<{ [key: string]: Matrix.Matrix<CellBase> }>({defaultSheet:[[]]});
111
- const [contextData, setContextData] = useState<ContextMenuState>({
112
- visible: false,
113
- x: 0,
114
- y: 0,
115
- type: 'cell',
55
+ const excelDataCopy = useRef<{ [key: string]: Matrix.Matrix<CellBase> }>({
56
+ defaultSheet: [[]],
116
57
  });
117
58
 
118
-
119
- let checkVal = (val:any) => {
59
+ let checkVal = (val: any) => {
120
60
  if (val === undefined || val === null) {
121
61
  return null;
122
62
  }
@@ -127,18 +67,21 @@ const ExcelFile: React.FC<ExcelFileProps> = ({
127
67
  const sheetNames = payload.sheets.map((e) => e.sheetName);
128
68
  setFileDetails({ sheetNames });
129
69
  if (sheetNames.length > 0) {
130
- setSelectedSheet({ name: sheetNames[0]?sheetNames[0]:"", index: 0 });
70
+ setSelectedSheet({ name: sheetNames[0] ? sheetNames[0] : '', index: 0 });
131
71
  }
132
-
133
72
  const newWorksheetsData: { [key: string]: Matrix.Matrix<CellBase> } = {};
134
73
  payload.sheets.forEach((sheet) => {
135
74
  const sheetName = sheet.sheetName;
136
75
  const json = sheet.data;
137
76
  const maxRows = Math.max(26, json.length + 2);
138
- const maxCols = Math.max(26, Math.max(...json.map((row) => row.length)) + 2);
77
+ const maxCols = Math.max(
78
+ 26,
79
+ Math.max(...json.map((row) => row.length)) + 2
80
+ );
139
81
 
140
- let spreadsheetData: Matrix.Matrix<CellBase> = Array.from({ length: maxRows }, () =>
141
- Array.from({ length: maxCols }, () => EmptyRow)
82
+ let spreadsheetData: Matrix.Matrix<CellBase> = Array.from(
83
+ { length: maxRows },
84
+ () => Array.from({ length: maxCols }, () => EmptyRow)
142
85
  );
143
86
  json.forEach((row, rowIndex) => {
144
87
  row.forEach((cell, colIndex) => {
@@ -149,30 +92,23 @@ const ExcelFile: React.FC<ExcelFileProps> = ({
149
92
  spreadsheetData[rowIndex][colIndex] = {
150
93
  value: checkVal(cell.value),
151
94
  style: cell.style,
152
- type:true
95
+ type: true,
153
96
  };
154
97
  }
155
98
  });
156
99
  });
157
-
100
+
158
101
  newWorksheetsData[sheetName] = spreadsheetData;
159
102
  });
160
103
  excelDataCopy.current = newWorksheetsData;
161
104
  setWorksheetsData(newWorksheetsData);
162
105
  const firstSheetName = Object.keys(newWorksheetsData)[0];
163
- if (firstSheetName && newWorksheetsData[firstSheetName]!==undefined) {
106
+ if (firstSheetName && newWorksheetsData[firstSheetName] !== undefined) {
164
107
  setSelectedSheetData(newWorksheetsData[firstSheetName]);
165
108
  }
166
- }, [excelData]);
167
-
168
-
169
- const handleSaveData = () => {
170
- setWorksheetsData((prevData) => {
171
- let updatedData = { ...prevData };
172
- updatedData[selectedSheet.name] = selectedSheetData;
173
- return updatedData;
174
- });
109
+ }, []);
175
110
 
111
+ const handleSaveData = () => {
176
112
  const dataToSave = {
177
113
  sheets: fileDetails.sheetNames.map((sheetName) => ({
178
114
  sheetName: sheetName,
@@ -201,315 +137,21 @@ const ExcelFile: React.FC<ExcelFileProps> = ({
201
137
  }, [worksheetsData]);
202
138
 
203
139
  const handleSheetChange = (name: string, index: number) => {
204
- setWorksheetsData((prevData) => {
205
- let updatedData = prevData;
206
- updatedData[selectedSheet.name] = selectedSheetData;
207
- return updatedData;
208
- });
209
- setSelectedSheet({ index, name });
210
- };
211
-
212
- let addRow = () => {
213
- let updateSheet: Matrix.Matrix<CellBase> = worksheetsData[selectedSheet.name] ?? []; // Fallback to an empty array if undefined
214
- // let insertRow: CellBase[] = [];
215
-
216
- // insertRow = Array.from({ length: updateSheet[0]?.length ?? 0 }, () => EmptyRow); // Fallback to 0 if the length is undefined
217
-
218
- // updateSheet.splice(selectedValue.row - 1, 0, insertRow); // Add the new row
219
-
220
- setWorksheetsData((prev) => ({
221
- ...prev,
222
- [selectedSheet.name]: updateSheet,
223
- }));
224
- };
225
-
226
-
227
- let deleteRow = () => {
228
-
229
- };
230
-
231
- let addColumn = () => {
232
- let updateSheet: Matrix.Matrix<CellBase> = worksheetsData[selectedSheet.name] ?? []; // Fallback to empty array if undefined
233
- if (updateSheet.length > 0) {
234
- // updateSheet.forEach((row) => {
235
- // row.splice(selectedValue.column, 0, EmptyRow); // Insert EmptyRow at the specified column index
236
- // });
237
- setWorksheetsData((prev) => ({
238
- ...prev,
239
- [selectedSheet.name]: updateSheet,
240
- }));
241
- }
242
- };
243
-
244
- let deleteColumn = () => {
245
- let updateSheet: Matrix.Matrix<CellBase> = worksheetsData[selectedSheet.name] ?? [];
246
-
247
- // Ensure there is at least one row in the sheet and that the first row exists
248
- if (updateSheet.length > 0 && updateSheet[0]) {
249
- // const firstRow = updateSheet[0]; // Safely access the first row
250
- // const length = firstRow.length; // Get the length of the first row
251
-
252
- // Proceed only if the column index is within bounds
253
- // if (selectedValue.column >= 0 && selectedValue.column < length) {
254
- // // Delete the specified column from each row
255
- // updateSheet.forEach((row) => row.splice(selectedValue.column, 1));
256
-
257
- // // Update the worksheets data with the modified sheet
258
- // setWorksheetsData((prev) => ({
259
- // ...prev,
260
- // [selectedSheet.name]: updateSheet,
261
- // }));
262
- // }
263
- }
264
- };
265
-
266
- let addSheet = () => {
267
- const generateUniqueSheetName = (
268
- baseName: string,
269
- existingNames: string[]
270
- ): string => {
271
- let newName = baseName;
272
- let counter = 1;
273
- while (existingNames.includes(newName)) {
274
- newName = `${baseName}${counter}`;
275
- counter++;
276
- }
277
- return newName;
278
- };
279
- const baseName = 'NewSheet';
280
- const existingSheetNames = fileDetails.sheetNames;
281
- const newSheetName = generateUniqueSheetName(baseName, existingSheetNames);
282
- const newSheetData = Array.from({ length: 25 }, () =>
283
- Array.from({ length: 26 }, () => EmptyRow)
284
- );
285
-
286
- setFileDetails((prev) => ({
287
- sheetNames: prev.sheetNames.concat(newSheetName),
288
- }));
289
-
290
- setWorksheetsData({ ...worksheetsData, [newSheetName]: newSheetData });
291
- setSelectedSheet({
292
- index: fileDetails.sheetNames.length,
293
- name: newSheetName,
294
- });
295
- };
296
-
297
- let deleteSheet = () => {
298
- const { sheetNames } = fileDetails;
299
- const { index, name } = selectedSheet;
300
-
301
- if (sheetNames.length > 1) {
302
- const updatedSheetNames = sheetNames.slice();
303
- updatedSheetNames.splice(index, 1);
304
-
305
- const { [name]: _, ...updatedWorksheetsData } = worksheetsData;
306
-
307
- setFileDetails((prev) => ({
308
- ...prev,
309
- sheetNames: updatedSheetNames,
310
- }));
311
- setWorksheetsData(updatedWorksheetsData);
312
-
313
- const newIndex = Math.min(index, updatedSheetNames.length - 1);
314
-
315
- const newSheetName = updatedSheetNames[newIndex] ?? "";
316
-
317
- setSelectedSheet({
318
- index: newIndex,
319
- name: newSheetName,
320
- });
321
- } else {
322
- alert('Cannot delete the last sheet.');
323
- }
324
- };
325
-
326
- const contextAction: {
327
- addRow: () => void;
328
- deleteRow: () => void;
329
- addColumn: () => void;
330
- deleteColumn: () => void;
331
- addSheet: () => void;
332
- deleteSheet: () => void;
333
- } = {
334
- addRow,
335
- deleteRow,
336
- addColumn,
337
- deleteColumn,
338
- addSheet,
339
- deleteSheet,
340
- };
341
-
342
- const formatePaint = () => {
343
-
344
- };
345
-
346
-
347
- const handleSelect = (e: any) => {
348
- if (e.hasOwnProperty('range')) {
349
- let rowStart = e.range.start.row;
350
- let rowEnd = e.range.end.row;
351
- let columnStart = e.range.start.column;
352
- let columnEnd = e.range.end.column;
353
- let cell: { row: number; column: number }[] = [];
354
- for (let i = rowStart; i <= rowEnd; i++) {
355
- for (let j = columnStart; j <= columnEnd; j++) {
356
- cell.push({ row: i, column: j });
357
- }
358
- }
359
- setContextData((prev) => ({ ...prev, type: 'cell' }));
360
- setSelectedCell(cell);
361
- } else {
362
- if (e.hasOwnProperty('start') && e.hasOwnProperty('end')) {
363
- const columnName = e.constructor.name;
364
- if (columnName.includes('EntireColumnsSelection')) {
365
- setContextData((prev) => ({ ...prev, type: 'column' }));
366
- } else if (columnName.includes('EntireRowsSelection')) {
367
- setContextData((prev) => ({ ...prev, type: 'row' }));
368
- }
369
- }
370
- }
371
- };
372
-
373
- const contextSelect = (event: React.MouseEvent) => {
374
- event.preventDefault();
375
- const sheetTop = sheetRef.current?.getBoundingClientRect().top;
376
- const sheetLeft = sheetRef.current?.getBoundingClientRect().left;
377
-
378
- if (sheetLeft !== undefined && sheetTop !== undefined) {
379
- const contextMenuHeight =
380
- contextData.type === 'cell' ? contextOption.length * 35 + 40 : 110;
381
- const adjustedY = event.pageY - sheetTop - window.scrollY;
382
- const availableSpace = window.innerHeight - adjustedY;
383
- const contextMenuWidth = 250;
384
- const adjustedX = event.pageX - sheetLeft - window.scrollX;
385
- const availableXSpace = window.innerWidth - adjustedX;
386
-
387
- const finalY =
388
- availableSpace < contextMenuHeight
389
- ? adjustedY - contextMenuHeight
390
- : adjustedY;
391
-
392
- const finalX =
393
- availableXSpace < contextMenuWidth
394
- ? adjustedX - contextMenuWidth
395
- : adjustedX;
396
-
397
- const target = event.target as HTMLElement;
398
- const isCell =
399
- target.classList.contains('Spreadsheet__active-cell') &&
400
- contextData.type === 'cell';
401
- const isHeader =
402
- target.classList.contains('Spreadsheet__header--selected') &&
403
- (contextData.type === 'row' || contextData.type === 'column');
404
- const isSheetTab =
405
- target.classList.contains('tab-request') &&
406
- contextData.type === 'sheet_options';
407
-
408
- if (isCell || isHeader || isSheetTab) {
409
- setContextData((prev) => ({
410
- ...prev,
411
- visible: true,
412
- x: finalX,
413
- y: finalY,
414
- }));
415
- } else {
416
- setContextData((prev) => ({
417
- ...prev,
418
- visible: false,
419
- x: finalX,
420
- y: finalY,
421
- }));
422
- }
423
- }
424
- };
425
-
426
- const sheetContext = (
427
- _: React.MouseEvent<Element, MouseEvent>,
428
- name: string,
429
- index: number
430
- ) => {
431
-
432
140
  setSelectedSheet({ index, name });
433
- setContextData((prev) => ({
434
- ...prev,
435
- type: 'sheet_options',
436
- }));
437
141
  };
438
142
 
439
- const createStyler =
440
- (selectedCell: { row: number; column: number }[]) =>
441
- async (styleType: any, value: any) => {
442
- ChangeExcelStyles(setWorksheetsData, {
443
- sheetName: selectedSheet.name,
444
- styleType,
445
- value,
446
- selectedCell,
447
- });
448
- };
449
-
450
- const applyStyle = createStyler(selectedCell);
451
-
452
- useEffect(() => {
453
- const currentSheet = worksheetsData[selectedSheet.name] ?? [];
454
- const validSheetData: CellBase[][] = currentSheet.map(row =>
455
- row.map(cell => cell ? { value: cell.value, style: cell.style } : { value: "", style: EmptyRow.style })
456
- );
457
-
458
- setSelectedSheetData(validSheetData);
459
- }, [worksheetsData, selectedSheet.name]);
460
-
461
-
462
- useEffect(() => {
463
- let timeGap = setTimeout(() => {
464
- setWorksheetsData((prevData) => {
465
- let updatedData = prevData;
466
- updatedData[selectedSheet.name] = selectedSheetData;
467
- return updatedData;
468
- }); }, 1000);
469
- return () => {
470
- clearTimeout(timeGap);
471
- };
472
- }, [selectedSheetData]);
473
-
474
143
  return (
475
144
  <div className="excel-page">
476
- <ExcelToolBar
477
- toolbar={toolbar}
478
- applyStyle={applyStyle}
479
- formatePaint={formatePaint}
480
- />
481
-
482
145
  {fileDetails.sheetNames.length > 0 && (
483
- <div className="excel-book" >
484
- <div
485
- ref={sheetRef}
486
- onContextMenu={contextSelect}
487
- className="excel-sheet"
488
- >
489
- <Spreadsheet
490
- data={selectedSheetData}
491
- onActivate={() => {
492
- setContextData((prev) => ({ ...prev, visible: false }));
493
- }}
494
- onSelect={handleSelect}
495
- />
496
-
146
+ <div className="excel-book">
147
+ <div ref={sheetRef} className="excel-sheet">
148
+ <Spreadsheet data={selectedSheetData} />
497
149
  </div>
498
150
 
499
151
  <ExcelSheetBar
500
152
  selectedSheet={selectedSheet}
501
153
  fileDetails={fileDetails}
502
154
  handleSheetChange={handleSheetChange}
503
- contextMenu={sheetContext}
504
- contextSelect={contextSelect}
505
- addSheet={addSheet}
506
- />
507
-
508
- <ContextMenu
509
- customContext={contextOption}
510
- contextAction={contextAction}
511
- contextData={contextData}
512
- setContextData={setContextData}
513
155
  />
514
156
  </div>
515
157
  )}
@@ -36,29 +36,20 @@ export const Default: Story = {
36
36
  {
37
37
  value: "A1",
38
38
  style: {
39
- name: "Arial",
40
- size: 12,
41
- bold: true,
42
39
  fontSize: "12px",
43
- italic: false,
44
40
  fontFamily: "Arial",
45
- color: "red",
46
- backgroundColor: "white",
47
- border: { top: "1px solid black", bottom: "1px solid black", left: "1px solid black", right: "1px solid black" },
41
+ color: "var(--text-bg-highlight)",
42
+ backgroundColor: "var(--tooltip-bg-color)",
48
43
  },
49
44
  },
50
45
  {
51
- value: "B1",
46
+ value: "SUM(A1+B1)",
47
+ // isFormula:true,
52
48
  style: {
53
- name: "Arial",
54
- size: 12,
55
- bold: false,
56
49
  fontSize: "12px",
57
- italic: false,
58
50
  fontFamily: "Arial",
59
- color: "black",
60
- backgroundColor: "white",
61
- border: { top: "1px solid black", bottom: "1px solid black", left: "1px solid black", right: "1px solid black" },
51
+ color: "var(--text-bg-highlight)",
52
+ backgroundColor: "var(--brand-color)",
62
53
  },
63
54
  },
64
55
  ],
@@ -66,29 +57,19 @@ export const Default: Story = {
66
57
  {
67
58
  value: "A2",
68
59
  style: {
69
- name: "Arial",
70
- size: 12,
71
- bold: true,
72
60
  fontSize: "12px",
73
- italic: false,
74
61
  fontFamily: "Arial",
75
- color: "black",
76
- backgroundColor: "white",
77
- border: { top: "1px solid black", bottom: "1px solid black", left: "1px solid black", right: "1px solid black" },
62
+ color: "var(--drawer-footer-bg)",
63
+ backgroundColor: "var(--brand-color)",
78
64
  },
79
65
  },
80
66
  {
81
67
  value: "B2",
82
68
  style: {
83
- name: "Arial",
84
- size: 12,
85
- bold: false,
86
69
  fontSize: "12px",
87
- italic: false,
88
70
  fontFamily: "Arial",
89
- color: "black",
90
- backgroundColor: "white",
91
- border: { top: "1px solid black", bottom: "1px solid black", left: "1px solid black", right: "1px solid black" },
71
+ color: "var(--brand-color)",
72
+ backgroundColor: "var(--text-bg-highlight)",
92
73
  },
93
74
  },
94
75
  ],
@@ -6,22 +6,16 @@ import { Col, Container, Row } from '../../GridLayout/GridLayout';
6
6
 
7
7
  interface ExcelSheetBarProps {
8
8
  fileDetails: {
9
- sheetNames: string[]; // List of sheet names
9
+ sheetNames: string[];
10
10
  };
11
11
  handleSheetChange: (name: string, index: number) => void;
12
- contextMenu: (e: React.MouseEvent, name: string, index: number) => void;
13
- addSheet: () => void;
14
12
  selectedSheet: { name: string };
15
- contextSelect: (e: React.MouseEvent) => void;
16
13
  }
17
14
 
18
15
  const ExcelSheetBar: React.FC<ExcelSheetBarProps> = ({
19
16
  fileDetails,
20
17
  handleSheetChange,
21
- contextMenu,
22
- addSheet,
23
18
  selectedSheet,
24
- contextSelect,
25
19
  }) => {
26
20
  const [activeTabId, setActiveTabId] = useState<string>('0');
27
21
 
@@ -34,10 +28,6 @@ const ExcelSheetBar: React.FC<ExcelSheetBarProps> = ({
34
28
  name === selectedSheet.name ? 'active font-bold' : ''
35
29
  }`}
36
30
  onClick={() => handleSheetChange(name, index)}
37
- onContextMenu={(e) => {
38
- contextMenu(e, name, index);
39
- contextSelect(e);
40
- }}
41
31
  >
42
32
  {name}
43
33
  </div>
@@ -57,7 +47,6 @@ const ExcelSheetBar: React.FC<ExcelSheetBarProps> = ({
57
47
  name="plus_icon"
58
48
  height={20}
59
49
  width={20}
60
- onClick={addSheet}
61
50
  />
62
51
  </Tooltip>
63
52
  </Col>
@@ -1,6 +1,3 @@
1
- @import '../../../assets/styles/colors';
2
- @import '../../../assets/styles/fonts';
3
-
4
1
  .excel-toolbar {
5
2
  display: flex;
6
3
  align-items: center;