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.
- package/lib/components/AppHeader/types.d.ts +11 -2
- package/lib/components/Avatar/Avatar.d.ts +5 -0
- package/lib/components/Avatar/Avatar.stories.d.ts +10 -0
- package/lib/components/Avatar/index.d.ts +1 -0
- package/lib/components/Avatar/types.d.ts +26 -0
- package/lib/components/ExcelFile/ExcelFile/Excel/ActiveCell.d.ts +2 -2
- package/lib/components/ExcelFile/ExcelFile/Excel/ColumnIndicator.d.ts +2 -2
- package/lib/components/ExcelFile/ExcelFile/Excel/Copied.d.ts +1 -1
- package/lib/components/ExcelFile/ExcelFile/Excel/CornerIndicator.d.ts +2 -2
- package/lib/components/ExcelFile/ExcelFile/Excel/DataEditor.d.ts +2 -2
- package/lib/components/ExcelFile/ExcelFile/Excel/DataViewer.d.ts +2 -2
- package/lib/components/ExcelFile/ExcelFile/Excel/FloatingRect.d.ts +2 -2
- package/lib/components/ExcelFile/ExcelFile/Excel/HeaderRow.d.ts +1 -1
- package/lib/components/ExcelFile/ExcelFile/Excel/Row.d.ts +1 -1
- package/lib/components/ExcelFile/ExcelFile/Excel/RowIndicator.d.ts +2 -2
- package/lib/components/ExcelFile/ExcelFile/Excel/Selected.d.ts +1 -1
- package/lib/components/ExcelFile/ExcelFile/Excel/Spreadsheet.d.ts +6 -7
- package/lib/components/ExcelFile/ExcelFile/Excel/Table.d.ts +1 -1
- package/lib/components/ExcelFile/ExcelFile/Excel/actions.d.ts +49 -5
- package/lib/components/ExcelFile/ExcelFile/Excel/context.d.ts +3 -3
- package/lib/components/ExcelFile/ExcelFile/Excel/engine/engine.d.ts +5 -5
- package/lib/components/ExcelFile/ExcelFile/Excel/engine/formula.d.ts +6 -6
- package/lib/components/ExcelFile/ExcelFile/Excel/engine/index.d.ts +2 -2
- package/lib/components/ExcelFile/ExcelFile/Excel/engine/point-graph.d.ts +2 -2
- package/lib/components/ExcelFile/ExcelFile/Excel/engine/point-hash.d.ts +1 -1
- package/lib/components/ExcelFile/ExcelFile/Excel/engine/point-set.d.ts +1 -1
- package/lib/components/ExcelFile/ExcelFile/Excel/index.d.ts +11 -11
- package/lib/components/ExcelFile/ExcelFile/Excel/matrix.d.ts +1 -1
- package/lib/components/ExcelFile/ExcelFile/Excel/point-range.d.ts +1 -1
- package/lib/components/ExcelFile/ExcelFile/Excel/reducer.d.ts +5 -5
- package/lib/components/ExcelFile/ExcelFile/Excel/selection.d.ts +3 -3
- package/lib/components/ExcelFile/ExcelFile/Excel/types.d.ts +11 -48
- package/lib/components/ExcelFile/ExcelFile/Excel/use-dispatch.d.ts +1 -1
- package/lib/components/ExcelFile/ExcelFile/Excel/use-selector.d.ts +1 -1
- package/lib/components/ExcelFile/ExcelFile/Excel/util.d.ts +11 -12
- package/lib/components/ExcelFile/ExcelFile/ExcelFile.d.ts +16 -0
- package/lib/components/ExcelFile/ExcelSheetBar/ExcelSheetBar.d.ts +0 -3
- package/lib/components/ExcelFile/ExcelToolBar/ExcelToolBar.d.ts +12 -0
- package/lib/components/ExcelFile/Types.d.ts +2 -49
- package/lib/components/Form/Form.d.ts +1 -15
- package/lib/components/Form/Form.stories.d.ts +6 -5
- package/lib/components/Form/Forms.d.ts +8 -0
- package/lib/components/Form/index.d.ts +1 -1
- package/lib/components/MenuOption/types.d.ts +7 -7
- package/lib/components/ModulesChip/ModuleChip.d.ts +4 -0
- package/lib/components/ModulesChip/ModuleChip.stories.d.ts +6 -0
- package/lib/components/ModulesChip/index.d.ts +1 -0
- package/lib/components/ModulesChip/types.d.ts +14 -0
- package/lib/components/MultiSelect/MultiSelectTypes.d.ts +1 -0
- package/lib/components/Toastify/Toastify.d.ts +8 -0
- package/lib/components/Toastify/Toastify.stories.d.ts +6 -0
- package/lib/components/Toastify/index.d.ts +1 -0
- package/lib/components/Toastify/types.d.ts +7 -0
- package/lib/components/Tooltip/types.d.ts +6 -0
- package/lib/components/Typography/types.d.ts +1 -0
- package/lib/index.d.ts +75 -22
- package/lib/index.esm.js +26686 -870
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +26684 -864
- package/lib/index.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/StyleGuide/ColorPalette/colorPaletteList.ts +10 -0
- package/src/assets/Themes/BaseTheme.scss +2 -0
- package/src/assets/Themes/DarkTheme.scss +2 -0
- package/src/assets/icons/client_profile.svg +4 -0
- package/src/assets/icons/fireflink_finder_logo.svg +7 -0
- package/src/assets/icons/fireflink_platform.svg +4 -0
- package/src/assets/icons/license_expired.svg +20 -0
- package/src/components/AppHeader/AppHeader.stories.tsx +24 -3
- package/src/components/AppHeader/AppHeader.tsx +29 -11
- package/src/components/AppHeader/types.ts +11 -3
- package/src/components/Avatar/Avatar.scss +24 -0
- package/src/components/Avatar/Avatar.stories.tsx +56 -0
- package/src/components/Avatar/Avatar.tsx +25 -0
- package/src/components/Avatar/index.ts +1 -0
- package/src/components/Avatar/types.ts +27 -0
- package/src/components/ExcelFile/ColorBarselector/ColorBarSelector.scss +0 -2
- package/src/components/ExcelFile/ContextMenu/ContextMenu.scss +1 -4
- package/src/components/ExcelFile/ContextMenu/ContextMenu.tsx +0 -1
- package/src/components/ExcelFile/ExcelFile/Excel/ActiveCell.tsx +13 -13
- package/src/components/ExcelFile/ExcelFile/Excel/Cell.tsx +13 -12
- package/src/components/ExcelFile/ExcelFile/Excel/ColumnIndicator.tsx +40 -32
- package/src/components/ExcelFile/ExcelFile/Excel/Copied.tsx +4 -4
- package/src/components/ExcelFile/ExcelFile/Excel/CornerIndicator.tsx +10 -10
- package/src/components/ExcelFile/ExcelFile/Excel/DataEditor.tsx +5 -5
- package/src/components/ExcelFile/ExcelFile/Excel/DataViewer.tsx +10 -10
- package/src/components/ExcelFile/ExcelFile/Excel/FloatingRect.tsx +6 -6
- package/src/components/ExcelFile/ExcelFile/Excel/HeaderRow.tsx +1 -1
- package/src/components/ExcelFile/ExcelFile/Excel/Row.tsx +1 -1
- package/src/components/ExcelFile/ExcelFile/Excel/RowIndicator.tsx +34 -27
- package/src/components/ExcelFile/ExcelFile/Excel/Selected.tsx +5 -5
- package/src/components/ExcelFile/ExcelFile/Excel/{Spreadsheet.css → Spreadsheet.scss} +21 -37
- package/src/components/ExcelFile/ExcelFile/Excel/Spreadsheet.tsx +87 -78
- package/src/components/ExcelFile/ExcelFile/Excel/Table.tsx +2 -2
- package/src/components/ExcelFile/ExcelFile/Excel/actions.ts +121 -31
- package/src/components/ExcelFile/ExcelFile/Excel/areModelsEqual.ts +1 -1
- package/src/components/ExcelFile/ExcelFile/Excel/context.ts +4 -4
- package/src/components/ExcelFile/ExcelFile/Excel/engine/engine.ts +7 -7
- package/src/components/ExcelFile/ExcelFile/Excel/engine/formula.ts +11 -11
- package/src/components/ExcelFile/ExcelFile/Excel/engine/index.ts +2 -2
- package/src/components/ExcelFile/ExcelFile/Excel/engine/point-graph.ts +3 -3
- package/src/components/ExcelFile/ExcelFile/Excel/engine/point-hash.ts +2 -2
- package/src/components/ExcelFile/ExcelFile/Excel/engine/point-set.ts +2 -2
- package/src/components/ExcelFile/ExcelFile/Excel/index.ts +12 -11
- package/src/components/ExcelFile/ExcelFile/Excel/matrix.ts +18 -24
- package/src/components/ExcelFile/ExcelFile/Excel/point-range.ts +1 -1
- package/src/components/ExcelFile/ExcelFile/Excel/reducer.ts +311 -41
- package/src/components/ExcelFile/ExcelFile/Excel/selection.ts +5 -5
- package/src/components/ExcelFile/ExcelFile/Excel/types.ts +14 -66
- package/src/components/ExcelFile/ExcelFile/Excel/typings/fast-formula-parser.d.ts +8 -8
- package/src/components/ExcelFile/ExcelFile/Excel/use-dispatch.ts +2 -2
- package/src/components/ExcelFile/ExcelFile/Excel/use-selector.ts +3 -3
- package/src/components/ExcelFile/ExcelFile/Excel/util.ts +21 -22
- package/src/components/ExcelFile/ExcelFile/ExcelFile.scss +0 -3
- package/src/components/ExcelFile/ExcelFile/ExcelFile.tsx +45 -403
- package/src/components/ExcelFile/ExcelFile.stories.tsx +10 -29
- package/src/components/ExcelFile/ExcelSheetBar/ExcelSheetBar.tsx +1 -12
- package/src/components/ExcelFile/ExcelToolBar/ExcelToolBar.scss +0 -3
- package/src/components/ExcelFile/ExcelToolBar/ExcelToolBar.tsx +147 -127
- package/src/components/ExcelFile/Types.ts +3 -70
- package/src/components/ExcelFile/index.ts +1 -1
- package/src/components/Form/Form.d.ts +3 -0
- package/src/components/Form/Form.scss +31 -4
- package/src/components/Form/Form.stories.tsx +172 -138
- package/src/components/Form/Form.ts +2 -0
- package/src/components/Form/Forms.tsx +25 -0
- package/src/components/Form/index.ts +1 -1
- package/src/components/Icon/iconList.ts +8 -0
- package/src/components/IconButton/IconButton.scss +1 -1
- package/src/components/MenuOption/types.ts +7 -6
- package/src/components/ModulesChip/ModuleChip.scss +20 -0
- package/src/components/ModulesChip/ModuleChip.stories.tsx +41 -0
- package/src/components/ModulesChip/ModuleChip.tsx +31 -0
- package/src/components/ModulesChip/index.ts +1 -0
- package/src/components/ModulesChip/types.ts +14 -0
- package/src/components/MultiSelect/Dropdown.tsx +6 -1
- package/src/components/MultiSelect/MultiSelect.scss +17 -10
- package/src/components/MultiSelect/MultiSelect.stories.tsx +16 -4
- package/src/components/MultiSelect/MultiSelect.tsx +11 -4
- package/src/components/MultiSelect/MultiSelectTypes.ts +4 -3
- package/src/components/Select/Select.scss +4 -0
- package/src/components/Select/Select.tsx +2 -2
- package/src/components/Toastify/Toastify.stories.tsx +52 -0
- package/src/components/Toastify/Toastify.tsx +66 -0
- package/src/components/Toastify/index.ts +1 -0
- package/src/components/Toastify/types.ts +8 -0
- package/src/components/Tooltip/Tooltip.tsx +2 -1
- package/src/components/Tooltip/types.ts +6 -0
- package/src/components/Typography/Typography.scss +12 -4
- package/src/components/Typography/Typography.stories.tsx +2 -0
- package/src/components/Typography/Typography.tsx +2 -0
- package/src/components/Typography/types.ts +1 -0
- package/src/index.ts +10 -2
- package/src/components/ExcelFile/ChangeExcelStyles.tsx +0 -78
- package/src/components/ExcelFile/ImportExcelStyles.tsx +0 -86
- package/src/components/Form/Form.tsx +0 -57
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import classnames from
|
|
3
|
-
import * as Actions from
|
|
4
|
-
import * as Types from
|
|
5
|
-
import * as Point from
|
|
6
|
-
import useSelector from
|
|
7
|
-
import useDispatch from
|
|
8
|
-
import { getCellDimensions } from
|
|
9
|
-
import * as Matrix from
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import classnames from 'classnames';
|
|
3
|
+
import * as Actions from './actions';
|
|
4
|
+
import * as Types from './types';
|
|
5
|
+
import * as Point from './point';
|
|
6
|
+
import useSelector from './use-selector';
|
|
7
|
+
import useDispatch from './use-dispatch';
|
|
8
|
+
import { getCellDimensions } from './util';
|
|
9
|
+
import * as Matrix from './matrix';
|
|
10
10
|
|
|
11
11
|
type Props = {
|
|
12
12
|
DataEditor: Types.DataEditorComponent;
|
|
@@ -77,7 +77,7 @@ const ActiveCell: React.FC<Props> = (props) => {
|
|
|
77
77
|
|
|
78
78
|
const coordsChanged =
|
|
79
79
|
active?.row !== prevActive.row || active?.column !== prevActive.column;
|
|
80
|
-
const exitedEditMode = mode !==
|
|
80
|
+
const exitedEditMode = mode !== 'edit';
|
|
81
81
|
|
|
82
82
|
if (coordsChanged || exitedEditMode) {
|
|
83
83
|
const initialCell = initialCellRef.current;
|
|
@@ -107,14 +107,14 @@ const ActiveCell: React.FC<Props> = (props) => {
|
|
|
107
107
|
<div
|
|
108
108
|
ref={rootRef}
|
|
109
109
|
className={classnames(
|
|
110
|
-
|
|
110
|
+
'Spreadsheet__active-cell',
|
|
111
111
|
`Spreadsheet__active-cell--${mode}`
|
|
112
112
|
)}
|
|
113
113
|
style={dimensions}
|
|
114
|
-
onClick={mode ===
|
|
114
|
+
onClick={mode === 'view' && !readOnly ? edit : undefined}
|
|
115
115
|
tabIndex={0}
|
|
116
116
|
>
|
|
117
|
-
{mode ===
|
|
117
|
+
{mode === 'edit' && active && (
|
|
118
118
|
<DataEditor
|
|
119
119
|
row={active.row}
|
|
120
120
|
column={active.column}
|
|
@@ -51,7 +51,7 @@ export const Cell: React.FC<Types.CellComponentProps> = ({
|
|
|
51
51
|
|
|
52
52
|
const handleMouseOver = React.useCallback(
|
|
53
53
|
(event: React.MouseEvent<HTMLTableCellElement>) => {
|
|
54
|
-
if (dragging && first && !isDotDragging) {
|
|
54
|
+
if (dragging && first && !isDotDragging) {
|
|
55
55
|
setCellDimensions(point, getOffsetRect(event.currentTarget));
|
|
56
56
|
select(point);
|
|
57
57
|
}
|
|
@@ -102,10 +102,11 @@ export const Cell: React.FC<Types.CellComponentProps> = ({
|
|
|
102
102
|
return (
|
|
103
103
|
<td
|
|
104
104
|
ref={rootRef}
|
|
105
|
+
// style={data?.style}
|
|
105
106
|
className={classnames('Spreadsheet__cell', data?.className, {
|
|
106
107
|
'Spreadsheet__active-cell': active || dragging,
|
|
107
108
|
})}
|
|
108
|
-
onMouseEnter={handleMouseOver}
|
|
109
|
+
onMouseEnter={handleMouseOver}
|
|
109
110
|
onMouseDown={handleMouseDown}
|
|
110
111
|
tabIndex={0}
|
|
111
112
|
>
|
|
@@ -130,15 +131,15 @@ export const enhance = (
|
|
|
130
131
|
): React.FC<
|
|
131
132
|
Omit<
|
|
132
133
|
Types.CellComponentProps,
|
|
133
|
-
|
|
|
134
|
-
|
|
|
135
|
-
|
|
|
136
|
-
|
|
|
137
|
-
|
|
|
138
|
-
|
|
|
139
|
-
|
|
|
140
|
-
|
|
|
141
|
-
|
|
|
134
|
+
| 'selected'
|
|
135
|
+
| 'active'
|
|
136
|
+
| 'copied'
|
|
137
|
+
| 'dragging'
|
|
138
|
+
| 'mode'
|
|
139
|
+
| 'data'
|
|
140
|
+
| 'select'
|
|
141
|
+
| 'activate'
|
|
142
|
+
| 'setCellDimensions'
|
|
142
143
|
>
|
|
143
144
|
> => {
|
|
144
145
|
return function CellWrapper(props) {
|
|
@@ -169,7 +170,7 @@ export const enhance = (
|
|
|
169
170
|
[dispatch]
|
|
170
171
|
);
|
|
171
172
|
const active = useSelector((state) => isActive(state.active, point));
|
|
172
|
-
const mode = useSelector((state) => (active ? state.mode :
|
|
173
|
+
const mode = useSelector((state) => (active ? state.mode : 'view'));
|
|
173
174
|
const data = useSelector((state) => Matrix.get(point, state.model.data));
|
|
174
175
|
const evaluatedData = useSelector((state) =>
|
|
175
176
|
Matrix.get(point, state.model.evaluatedData)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import classNames from
|
|
3
|
-
import * as Types from
|
|
4
|
-
import * as Point from
|
|
5
|
-
import * as Actions from
|
|
6
|
-
import useDispatch from
|
|
7
|
-
import useSelector from
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import * as Types from './types';
|
|
4
|
+
import * as Point from './point';
|
|
5
|
+
import * as Actions from './actions';
|
|
6
|
+
import useDispatch from './use-dispatch';
|
|
7
|
+
import useSelector from './use-selector';
|
|
8
8
|
|
|
9
9
|
const ColumnIndicator: Types.ColumnIndicatorComponent = ({
|
|
10
10
|
column,
|
|
@@ -14,7 +14,7 @@ const ColumnIndicator: Types.ColumnIndicatorComponent = ({
|
|
|
14
14
|
}) => {
|
|
15
15
|
const dispatch = useDispatch();
|
|
16
16
|
const [width, setWidth] = React.useState(100);
|
|
17
|
-
|
|
17
|
+
|
|
18
18
|
// Function to handle the start of the resize (mouse down)
|
|
19
19
|
const onMouseDown = (e: React.MouseEvent) => {
|
|
20
20
|
const startX = e.clientX;
|
|
@@ -23,26 +23,33 @@ const ColumnIndicator: Types.ColumnIndicatorComponent = ({
|
|
|
23
23
|
const onMouseMove = (moveEvent: MouseEvent) => {
|
|
24
24
|
const newWidth = width + (moveEvent.clientX - startX);
|
|
25
25
|
setWidth(newWidth);
|
|
26
|
-
|
|
27
|
-
// const selectedAllRow = document.querySelector(".Spreadsheet__floating-rect--selected");
|
|
28
|
-
// const selectedSingleRow = document.querySelector(".Spreadsheet__active-cell");
|
|
29
26
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
27
|
+
const selectedAllRow = document.querySelector(
|
|
28
|
+
'.Spreadsheet__floating-rect--selected'
|
|
29
|
+
);
|
|
30
|
+
const selectedSingleRow = document.querySelector(
|
|
31
|
+
'.Spreadsheet__active-cell'
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
// If the element exists, update its height
|
|
35
|
+
if (
|
|
36
|
+
selectedAllRow instanceof HTMLElement &&
|
|
37
|
+
selectedSingleRow instanceof HTMLElement
|
|
38
|
+
) {
|
|
39
|
+
selectedAllRow.style.width = `${newWidth}px`;
|
|
40
|
+
selectedSingleRow.style.width = `${newWidth}px`;
|
|
41
|
+
}
|
|
35
42
|
};
|
|
36
43
|
|
|
37
44
|
// Function to stop the resizing (mouse up)
|
|
38
45
|
const onMouseUp = () => {
|
|
39
|
-
document.removeEventListener(
|
|
40
|
-
document.removeEventListener(
|
|
46
|
+
document.removeEventListener('mousemove', onMouseMove);
|
|
47
|
+
document.removeEventListener('mouseup', onMouseUp);
|
|
41
48
|
};
|
|
42
49
|
|
|
43
50
|
// Add event listeners for mouse move and mouse up
|
|
44
|
-
document.addEventListener(
|
|
45
|
-
document.addEventListener(
|
|
51
|
+
document.addEventListener('mousemove', onMouseMove);
|
|
52
|
+
document.addEventListener('mouseup', onMouseUp);
|
|
46
53
|
};
|
|
47
54
|
|
|
48
55
|
const activate = React.useCallback(
|
|
@@ -58,12 +65,11 @@ const ColumnIndicator: Types.ColumnIndicatorComponent = ({
|
|
|
58
65
|
[onSelect, column]
|
|
59
66
|
);
|
|
60
67
|
|
|
61
|
-
|
|
62
68
|
return (
|
|
63
69
|
<th
|
|
64
|
-
style={{ minWidth: `${width}px`, position:
|
|
65
|
-
className={classNames(
|
|
66
|
-
|
|
70
|
+
style={{ minWidth: `${width}px`, position: 'relative' }} // Use dynamic width
|
|
71
|
+
className={classNames('Spreadsheet__header', {
|
|
72
|
+
'Spreadsheet__header--selected': selected,
|
|
67
73
|
})}
|
|
68
74
|
onClick={handleClick}
|
|
69
75
|
tabIndex={0}
|
|
@@ -71,15 +77,17 @@ const ColumnIndicator: Types.ColumnIndicatorComponent = ({
|
|
|
71
77
|
{label !== undefined ? label : columnIndexToLabel(column)}
|
|
72
78
|
<div
|
|
73
79
|
onMouseDown={onMouseDown}
|
|
74
|
-
onClick={()=>{
|
|
80
|
+
onClick={() => {
|
|
81
|
+
activate;
|
|
82
|
+
}}
|
|
75
83
|
style={{
|
|
76
|
-
zIndex:
|
|
77
|
-
width:
|
|
78
|
-
position:
|
|
84
|
+
zIndex: 'inherit',
|
|
85
|
+
width: '2px',
|
|
86
|
+
position: 'absolute',
|
|
79
87
|
right: 0,
|
|
80
88
|
top: 0,
|
|
81
|
-
height:
|
|
82
|
-
cursor:
|
|
89
|
+
height: '100%',
|
|
90
|
+
cursor: 'ew-resize',
|
|
83
91
|
}}
|
|
84
92
|
/>
|
|
85
93
|
</th>
|
|
@@ -90,7 +98,7 @@ export default ColumnIndicator;
|
|
|
90
98
|
|
|
91
99
|
export const enhance = (
|
|
92
100
|
ColumnIndicatorComponent: Types.ColumnIndicatorComponent
|
|
93
|
-
): React.FC<Omit<Types.ColumnIndicatorProps,
|
|
101
|
+
): React.FC<Omit<Types.ColumnIndicatorProps, 'selected' | 'onSelect'>> => {
|
|
94
102
|
return function ColumnIndicatorWrapper(props) {
|
|
95
103
|
const dispatch = useDispatch();
|
|
96
104
|
const selectEntireColumn = React.useCallback(
|
|
@@ -113,7 +121,7 @@ export const enhance = (
|
|
|
113
121
|
|
|
114
122
|
// Utility function to convert column index to label (e.g., 0 -> A, 1 -> B, etc.)
|
|
115
123
|
function columnIndexToLabel(column: number): string {
|
|
116
|
-
let label =
|
|
124
|
+
let label = '';
|
|
117
125
|
let index = column;
|
|
118
126
|
while (index >= 0) {
|
|
119
127
|
label = String.fromCharCode(65 + (index % 26)) + label;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import FloatingRect from
|
|
3
|
-
import { getRangeDimensions } from
|
|
4
|
-
import useSelector from
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import FloatingRect from './FloatingRect';
|
|
3
|
+
import { getRangeDimensions } from './util';
|
|
4
|
+
import useSelector from './use-selector';
|
|
5
5
|
|
|
6
6
|
const Copied: React.FC = () => {
|
|
7
7
|
const range = useSelector((state) => state.copied);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import classNames from
|
|
3
|
-
import * as Actions from
|
|
4
|
-
import { EntireWorksheetSelection } from
|
|
5
|
-
import * as Types from
|
|
6
|
-
import useDispatch from
|
|
7
|
-
import useSelector from
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import * as Actions from './actions';
|
|
4
|
+
import { EntireWorksheetSelection } from './selection';
|
|
5
|
+
import * as Types from './types';
|
|
6
|
+
import useDispatch from './use-dispatch';
|
|
7
|
+
import useSelector from './use-selector';
|
|
8
8
|
|
|
9
9
|
const CornerIndicator: Types.CornerIndicatorComponent = ({
|
|
10
10
|
selected,
|
|
@@ -15,8 +15,8 @@ const CornerIndicator: Types.CornerIndicatorComponent = ({
|
|
|
15
15
|
}, [onSelect]);
|
|
16
16
|
return (
|
|
17
17
|
<th
|
|
18
|
-
className={classNames(
|
|
19
|
-
|
|
18
|
+
className={classNames('Spreadsheet__header', {
|
|
19
|
+
'Spreadsheet__header--selected': selected,
|
|
20
20
|
})}
|
|
21
21
|
onClick={handleClick}
|
|
22
22
|
tabIndex={0}
|
|
@@ -28,7 +28,7 @@ export default CornerIndicator;
|
|
|
28
28
|
|
|
29
29
|
export const enhance = (
|
|
30
30
|
CornerIndicatorComponent: Types.CornerIndicatorComponent
|
|
31
|
-
): React.FC<Omit<Types.CornerIndicatorProps,
|
|
31
|
+
): React.FC<Omit<Types.CornerIndicatorProps, 'selected' | 'onSelect'>> => {
|
|
32
32
|
return function CornerIndicatorWrapper(props) {
|
|
33
33
|
const dispatch = useDispatch();
|
|
34
34
|
const selectEntireWorksheet = React.useCallback(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import * as Types from
|
|
3
|
-
import { moveCursorToEnd } from
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as Types from './types';
|
|
3
|
+
import { moveCursorToEnd } from './util';
|
|
4
4
|
|
|
5
5
|
/** The default Spreadsheet DataEditor component */
|
|
6
6
|
const DataEditor: React.FC<Types.DataEditorProps> = ({ onChange, cell }) => {
|
|
@@ -8,7 +8,7 @@ const DataEditor: React.FC<Types.DataEditorProps> = ({ onChange, cell }) => {
|
|
|
8
8
|
|
|
9
9
|
const handleChange = React.useCallback(
|
|
10
10
|
(event: React.ChangeEvent<HTMLInputElement>) => {
|
|
11
|
-
onChange({ ...cell, value: event.target.value,style:cell?.style});
|
|
11
|
+
onChange({ ...cell, value: event.target.value, style: cell?.style });
|
|
12
12
|
},
|
|
13
13
|
[onChange, cell]
|
|
14
14
|
);
|
|
@@ -19,7 +19,7 @@ const DataEditor: React.FC<Types.DataEditorProps> = ({ onChange, cell }) => {
|
|
|
19
19
|
}
|
|
20
20
|
}, [inputRef]);
|
|
21
21
|
|
|
22
|
-
const value = cell?.value ??
|
|
22
|
+
const value = cell?.value ?? '';
|
|
23
23
|
|
|
24
24
|
return (
|
|
25
25
|
<div className="Spreadsheet__data-editor">
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import classNames from
|
|
3
|
-
import * as Types from
|
|
4
|
-
import { hasLineBreaker } from
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import * as Types from './types';
|
|
4
|
+
import { hasLineBreaker } from './util';
|
|
5
5
|
|
|
6
|
-
export const TRUE_TEXT =
|
|
7
|
-
export const FALSE_TEXT =
|
|
6
|
+
export const TRUE_TEXT = 'TRUE';
|
|
7
|
+
export const FALSE_TEXT = 'FALSE';
|
|
8
8
|
|
|
9
9
|
/** The default Spreadsheet DataViewer component */
|
|
10
10
|
const DataViewer = <Cell extends Types.CellBase<Value>, Value>({
|
|
@@ -13,14 +13,14 @@ const DataViewer = <Cell extends Types.CellBase<Value>, Value>({
|
|
|
13
13
|
}: Types.DataViewerProps<Cell>): React.ReactElement => {
|
|
14
14
|
const value = getValue(cell, evaluatedCell);
|
|
15
15
|
|
|
16
|
-
return typeof value ===
|
|
16
|
+
return typeof value === 'boolean' ? (
|
|
17
17
|
<span className="Spreadsheet__data-viewer Spreadsheet__data-viewer--boolean">
|
|
18
18
|
{convertBooleanToText(value)}
|
|
19
19
|
</span>
|
|
20
20
|
) : (
|
|
21
21
|
<span
|
|
22
|
-
className={classNames(
|
|
23
|
-
|
|
22
|
+
className={classNames('Spreadsheet__data-viewer', {
|
|
23
|
+
'Spreadsheet__data-viewer--preserve-breaks': hasLineBreaker(value),
|
|
24
24
|
})}
|
|
25
25
|
>
|
|
26
26
|
{value}
|
|
@@ -35,7 +35,7 @@ function getValue(
|
|
|
35
35
|
evaluatedCell: Types.CellBase | undefined
|
|
36
36
|
) {
|
|
37
37
|
const baseValue = evaluatedCell?.value ?? cell?.value;
|
|
38
|
-
if (baseValue && typeof baseValue ===
|
|
38
|
+
if (baseValue && typeof baseValue === 'object') {
|
|
39
39
|
return baseValue.toString();
|
|
40
40
|
}
|
|
41
41
|
return baseValue;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import classnames from
|
|
3
|
-
import * as Types from
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import classnames from 'classnames';
|
|
3
|
+
import * as Types from './types';
|
|
4
4
|
|
|
5
5
|
export type Props = {
|
|
6
6
|
variant?: string;
|
|
@@ -18,10 +18,10 @@ const FloatingRect: React.FC<Props> = ({
|
|
|
18
18
|
const { width, height, top, left } = dimensions || {};
|
|
19
19
|
return (
|
|
20
20
|
<div
|
|
21
|
-
className={classnames(
|
|
21
|
+
className={classnames('Spreadsheet__floating-rect', {
|
|
22
22
|
[`Spreadsheet__floating-rect--${variant}`]: variant,
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
'Spreadsheet__floating-rect--dragging': dragging,
|
|
24
|
+
'Spreadsheet__floating-rect--hidden': hidden,
|
|
25
25
|
})}
|
|
26
26
|
style={{ width, height, top, left }}
|
|
27
27
|
/>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import classNames from
|
|
3
|
-
import * as Actions from
|
|
4
|
-
import * as Types from
|
|
5
|
-
import useDispatch from
|
|
6
|
-
import useSelector from
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import * as Actions from './actions';
|
|
4
|
+
import * as Types from './types';
|
|
5
|
+
import useDispatch from './use-dispatch';
|
|
6
|
+
import useSelector from './use-selector';
|
|
7
7
|
|
|
8
8
|
const RowIndicator: Types.RowIndicatorComponent = ({
|
|
9
9
|
row,
|
|
@@ -12,7 +12,7 @@ const RowIndicator: Types.RowIndicatorComponent = ({
|
|
|
12
12
|
onSelect,
|
|
13
13
|
}) => {
|
|
14
14
|
const [height, setHeight] = React.useState(0);
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
// Function to handle the start of the resize (mouse down)
|
|
17
17
|
const onMouseDown = (e: React.MouseEvent) => {
|
|
18
18
|
const startY = e.clientY;
|
|
@@ -22,25 +22,32 @@ const RowIndicator: Types.RowIndicatorComponent = ({
|
|
|
22
22
|
const newHeight = height + (moveEvent.clientY - startY);
|
|
23
23
|
setHeight(newHeight);
|
|
24
24
|
// Fetch the floating rectangle element from the DOM
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
const selectedAllRow = document.querySelector(
|
|
26
|
+
'.Spreadsheet__floating-rect--selected'
|
|
27
|
+
);
|
|
28
|
+
const selectedSingleRow = document.querySelector(
|
|
29
|
+
'.Spreadsheet__active-cell'
|
|
30
|
+
);
|
|
27
31
|
|
|
28
|
-
//
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
// If the element exists, update its height
|
|
33
|
+
if (
|
|
34
|
+
selectedAllRow instanceof HTMLElement &&
|
|
35
|
+
selectedSingleRow instanceof HTMLElement
|
|
36
|
+
) {
|
|
37
|
+
selectedAllRow.style.height = `${newHeight}px`;
|
|
38
|
+
selectedSingleRow.style.height = `${newHeight}px`;
|
|
39
|
+
}
|
|
33
40
|
};
|
|
34
41
|
|
|
35
42
|
// Function to stop the resizing (mouse up)
|
|
36
43
|
const onMouseUp = () => {
|
|
37
|
-
document.removeEventListener(
|
|
38
|
-
document.removeEventListener(
|
|
44
|
+
document.removeEventListener('mousemove', onMouseMove);
|
|
45
|
+
document.removeEventListener('mouseup', onMouseUp);
|
|
39
46
|
};
|
|
40
47
|
|
|
41
48
|
// Add event listeners for mouse move and mouse up
|
|
42
|
-
document.addEventListener(
|
|
43
|
-
document.addEventListener(
|
|
49
|
+
document.addEventListener('mousemove', onMouseMove);
|
|
50
|
+
document.addEventListener('mouseup', onMouseUp);
|
|
44
51
|
};
|
|
45
52
|
|
|
46
53
|
const handleClick = React.useCallback(
|
|
@@ -52,9 +59,9 @@ const RowIndicator: Types.RowIndicatorComponent = ({
|
|
|
52
59
|
|
|
53
60
|
return (
|
|
54
61
|
<th
|
|
55
|
-
|
|
56
|
-
className={classNames(
|
|
57
|
-
|
|
62
|
+
style={{ height: `${height}px`, minWidth: '60px', position: 'relative' }}
|
|
63
|
+
className={classNames('Spreadsheet__header', {
|
|
64
|
+
'Spreadsheet__header--selected': selected,
|
|
58
65
|
})}
|
|
59
66
|
onClick={handleClick}
|
|
60
67
|
tabIndex={0}
|
|
@@ -63,13 +70,13 @@ const RowIndicator: Types.RowIndicatorComponent = ({
|
|
|
63
70
|
<div
|
|
64
71
|
onMouseDown={onMouseDown}
|
|
65
72
|
style={{
|
|
66
|
-
zIndex:
|
|
67
|
-
height:
|
|
68
|
-
position:
|
|
73
|
+
zIndex: 'inherit',
|
|
74
|
+
height: '2px',
|
|
75
|
+
position: 'absolute',
|
|
69
76
|
right: 0,
|
|
70
77
|
bottom: 0,
|
|
71
|
-
width:
|
|
72
|
-
cursor:
|
|
78
|
+
width: '100%',
|
|
79
|
+
cursor: 'ns-resize',
|
|
73
80
|
}}
|
|
74
81
|
/>
|
|
75
82
|
</th>
|
|
@@ -80,7 +87,7 @@ export default RowIndicator;
|
|
|
80
87
|
|
|
81
88
|
export const enhance = (
|
|
82
89
|
RowIndicatorComponent: Types.RowIndicatorComponent
|
|
83
|
-
): React.FC<Omit<Types.RowIndicatorProps,
|
|
90
|
+
): React.FC<Omit<Types.RowIndicatorProps, 'selected' | 'onSelect'>> => {
|
|
84
91
|
return function RowIndicatorWrapper(props) {
|
|
85
92
|
const dispatch = useDispatch();
|
|
86
93
|
const selected = useSelector((state) =>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import { getSelectedDimensions } from
|
|
3
|
-
import FloatingRect from
|
|
4
|
-
import useSelector from
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { getSelectedDimensions } from './util';
|
|
3
|
+
import FloatingRect from './FloatingRect';
|
|
4
|
+
import useSelector from './use-selector';
|
|
5
5
|
|
|
6
6
|
const Selected: React.FC = () => {
|
|
7
|
-
const selected = useSelector((state) => state.selected);
|
|
7
|
+
const selected = useSelector((state) => state.selected);
|
|
8
8
|
const dimensions = useSelector(
|
|
9
9
|
(state) =>
|
|
10
10
|
selected &&
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
.Spreadsheet {
|
|
2
|
-
--background-color:
|
|
3
|
-
--text-color:
|
|
4
|
-
--readonly-text-color:
|
|
5
|
-
--outline-color:
|
|
6
|
-
--outline-background-color:
|
|
7
|
-
--border-color:
|
|
8
|
-
--header-background-color:
|
|
9
|
-
--elevation:
|
|
2
|
+
--background-color: var(--drawer-footer-bg);
|
|
3
|
+
--text-color: var(--text-color);
|
|
4
|
+
--readonly-text-color: var(--toggle-strip-active);
|
|
5
|
+
--outline-color: var(--toggle-strip-active);
|
|
6
|
+
--outline-background-color: var(--overlay-bg);
|
|
7
|
+
--border-color: var(--toggle-strip-color);
|
|
8
|
+
--header-background-color: var(--pop-up-background-blur);
|
|
9
|
+
--elevation: var(--brand-color);
|
|
10
10
|
|
|
11
11
|
position: relative;
|
|
12
12
|
overflow: visible;
|
|
@@ -15,14 +15,6 @@
|
|
|
15
15
|
display: inline-block;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
.Spreadsheet--dark-mode {
|
|
19
|
-
--background-color: black;
|
|
20
|
-
--text-color: white;
|
|
21
|
-
--readonly-text-color: rgba(255, 255, 255, 0.4);
|
|
22
|
-
--header-background-color: rgba(255, 255, 255, 0.04);
|
|
23
|
-
--border-color: hsl(2deg, 0%, 19%);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
18
|
.Spreadsheet__active-cell {
|
|
27
19
|
position: absolute;
|
|
28
20
|
border: 2px solid var(--outline-color);
|
|
@@ -39,32 +31,26 @@
|
|
|
39
31
|
table-layout: fixed;
|
|
40
32
|
}
|
|
41
33
|
|
|
42
|
-
.Spreadsheet__cell,
|
|
43
|
-
.Spreadsheet__active-cell {
|
|
44
|
-
cursor: cell;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
34
|
.Spreadsheet__cell {
|
|
48
35
|
outline: none;
|
|
49
36
|
position: relative;
|
|
50
|
-
|
|
51
37
|
}
|
|
52
38
|
|
|
53
|
-
|
|
54
|
-
background-color:
|
|
55
|
-
height:7px;
|
|
56
|
-
width:7px;
|
|
57
|
-
border-radius:50%;
|
|
58
|
-
position:absolute;
|
|
59
|
-
right
|
|
39
|
+
.Spreadsheet__active-cell .Selection_dot {
|
|
40
|
+
background-color: var(--elevation);
|
|
41
|
+
height: 7px;
|
|
42
|
+
width: 7px;
|
|
43
|
+
border-radius: 50%;
|
|
44
|
+
position: absolute;
|
|
45
|
+
right: -3px;
|
|
60
46
|
z-index: 10;
|
|
61
|
-
bottom
|
|
47
|
+
bottom: -3px;
|
|
62
48
|
cursor: crosshair;
|
|
63
|
-
}
|
|
49
|
+
}
|
|
64
50
|
|
|
65
|
-
|
|
51
|
+
.Spreadsheet__cell--readonly {
|
|
66
52
|
color: var(--readonly-text-color);
|
|
67
|
-
}
|
|
53
|
+
}
|
|
68
54
|
|
|
69
55
|
.Spreadsheet__cell,
|
|
70
56
|
.Spreadsheet__header {
|
|
@@ -75,19 +61,17 @@
|
|
|
75
61
|
text-align: left;
|
|
76
62
|
box-sizing: border-box;
|
|
77
63
|
user-select: none;
|
|
78
|
-
|
|
79
64
|
}
|
|
80
65
|
|
|
81
66
|
.Spreadsheet__header {
|
|
82
67
|
background: var(--header-background-color);
|
|
83
68
|
color: var(--readonly-text-color);
|
|
84
69
|
text-align: center;
|
|
85
|
-
font: inherit;
|
|
86
70
|
}
|
|
87
71
|
|
|
88
72
|
.Spreadsheet__header--selected {
|
|
89
|
-
background:
|
|
90
|
-
color:
|
|
73
|
+
background: var(--brand-color);
|
|
74
|
+
color: var(--tooltip-text-color);
|
|
91
75
|
}
|
|
92
76
|
|
|
93
77
|
.Spreadsheet__header,
|