@seafile/sdoc-editor 1.0.34 → 1.0.36
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/dist/basic-sdk/extension/commons/color-menu/index.css +2 -2
- package/dist/basic-sdk/extension/plugins/header/menu/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/header/menu/style.css +5 -0
- package/dist/basic-sdk/extension/plugins/seatable-tables/draggable/index.css +7 -0
- package/dist/basic-sdk/extension/plugins/seatable-tables/draggable/index.js +75 -0
- package/dist/basic-sdk/extension/plugins/seatable-tables/helpers.js +6 -0
- package/dist/basic-sdk/extension/plugins/seatable-tables/op-menu/index.js +6 -0
- package/dist/basic-sdk/extension/plugins/seatable-tables/render-element/index.css +31 -0
- package/dist/basic-sdk/extension/plugins/seatable-tables/render-element/record-header.js +59 -5
- package/dist/basic-sdk/extension/plugins/seatable-tables/render-element/record-item.js +4 -2
- package/dist/basic-sdk/extension/plugins/seatable-tables/render-element/record-list.js +1 -1
- package/dist/basic-sdk/extension/plugins/seatable-tables/render-element/seatable-table.js +44 -4
- package/dist/basic-sdk/layout/article-container.js +2 -0
- package/dist/basic-sdk/utils/mouse-event.js +8 -0
- package/package.json +1 -1
- package/public/locales/cs/sdoc-editor.json +2 -1
- package/public/locales/de/sdoc-editor.json +2 -1
- package/public/locales/en/sdoc-editor.json +2 -1
- package/public/locales/es/sdoc-editor.json +2 -1
- package/public/locales/es_AR/sdoc-editor.json +2 -1
- package/public/locales/es_MX/sdoc-editor.json +2 -1
- package/public/locales/fr/sdoc-editor.json +2 -1
- package/public/locales/it/sdoc-editor.json +2 -1
- package/public/locales/ru/sdoc-editor.json +2 -1
- package/public/locales/zh_CN/sdoc-editor.json +2 -1
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
background-color: #E5E5E5;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
.menu-group .sdoc-color-menu.disabled .sdoc-color-toggle {
|
|
31
|
-
|
|
30
|
+
.menu-group .sdoc-color-menu.disabled .sdoc-color-toggle .sdocfont {
|
|
31
|
+
color: #BDBDBD;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
.sdoc-color-menu .sdoc-color-icon {
|
|
@@ -107,7 +107,7 @@ class HeaderMenu extends React.Component {
|
|
|
107
107
|
onClick: disabled ? () => {} : this.onToggleClick
|
|
108
108
|
}, /*#__PURE__*/React.createElement("span", {
|
|
109
109
|
className: "active"
|
|
110
|
-
}, t(HEADER_TITLE_MAP[currentType])),
|
|
110
|
+
}, t(HEADER_TITLE_MAP[currentType])), /*#__PURE__*/React.createElement("span", {
|
|
111
111
|
className: headerIconClass
|
|
112
112
|
})), isShowHeaderPopover && /*#__PURE__*/React.createElement("div", {
|
|
113
113
|
ref: this.setMenuRef,
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { eventStopPropagation, createObjectWithProperties } from '../../../../../basic-sdk/utils/mouse-event';
|
|
4
|
+
import './index.css';
|
|
5
|
+
|
|
6
|
+
// The list of the propTypes that we want to include in the Draggable div
|
|
7
|
+
const knownDivPropertyKeys = ['onDragStart', 'onDragEnd', 'onDrag', 'style'];
|
|
8
|
+
class Draggable extends React.Component {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
_defineProperty(this, "state", {
|
|
12
|
+
drag: null
|
|
13
|
+
});
|
|
14
|
+
_defineProperty(this, "onMouseDown", e => {
|
|
15
|
+
const drag = this.props.onDragStart(e);
|
|
16
|
+
if (e.preventDefault) {
|
|
17
|
+
e.preventDefault();
|
|
18
|
+
}
|
|
19
|
+
eventStopPropagation(e);
|
|
20
|
+
if (drag === null && e.button !== 0) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
window.addEventListener('mouseup', this.onMouseUp);
|
|
24
|
+
window.addEventListener('mousemove', this.onMouseMove);
|
|
25
|
+
window.addEventListener('touchend', this.onMouseUp);
|
|
26
|
+
window.addEventListener('touchmove', this.onMouseMove);
|
|
27
|
+
this.setState({
|
|
28
|
+
drag
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
_defineProperty(this, "onMouseMove", e => {
|
|
32
|
+
if (this.state.drag === null) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (e.preventDefault) {
|
|
36
|
+
e.preventDefault();
|
|
37
|
+
}
|
|
38
|
+
eventStopPropagation(e);
|
|
39
|
+
this.props.onDrag(e);
|
|
40
|
+
});
|
|
41
|
+
_defineProperty(this, "onMouseUp", e => {
|
|
42
|
+
eventStopPropagation(e);
|
|
43
|
+
this.cleanUp();
|
|
44
|
+
this.props.onDragEnd(e, this.state.drag);
|
|
45
|
+
this.setState({
|
|
46
|
+
drag: null
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
_defineProperty(this, "cleanUp", () => {
|
|
50
|
+
window.removeEventListener('mouseup', this.onMouseUp);
|
|
51
|
+
window.removeEventListener('mousemove', this.onMouseMove);
|
|
52
|
+
window.removeEventListener('touchend', this.onMouseUp);
|
|
53
|
+
window.removeEventListener('touchmove', this.onMouseMove);
|
|
54
|
+
});
|
|
55
|
+
_defineProperty(this, "getKnownDivProps", () => {
|
|
56
|
+
return createObjectWithProperties(this.props, knownDivPropertyKeys);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
componentWillUnmount() {
|
|
60
|
+
this.cleanUp();
|
|
61
|
+
}
|
|
62
|
+
render() {
|
|
63
|
+
return /*#__PURE__*/React.createElement("div", Object.assign({}, this.getKnownDivProps(), {
|
|
64
|
+
onMouseDown: this.onMouseDown,
|
|
65
|
+
onTouchStart: this.onMouseDown,
|
|
66
|
+
className: "seatable-column-draggable"
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
_defineProperty(Draggable, "defaultProps", {
|
|
71
|
+
onDragStart: () => true,
|
|
72
|
+
onDragEnd: () => {},
|
|
73
|
+
onDrag: () => {}
|
|
74
|
+
});
|
|
75
|
+
export default Draggable;
|
|
@@ -2,6 +2,7 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
|
2
2
|
import { Editor, Transforms } from '@seafile/slate';
|
|
3
3
|
import slugId from 'slugid';
|
|
4
4
|
import { getNodeType, isTextNode, getParentNode, generateDefaultText } from '../../core';
|
|
5
|
+
import { getColumnWidth } from '../seatable-column/helpers';
|
|
5
6
|
import { ELEMENT_TYPE, SEATABLE_TABLE, INSERT_POSITION } from '../../constants';
|
|
6
7
|
export const isInsertSeaTableTableDisabled = (editor, readonly) => {
|
|
7
8
|
if (readonly) return true;
|
|
@@ -37,6 +38,10 @@ export const isInsertSeaTableTableDisabled = (editor, readonly) => {
|
|
|
37
38
|
export const generateSeaTableTable = (table_id, editor) => {
|
|
38
39
|
const table = editor.getTableById(table_id);
|
|
39
40
|
const columnKeys = table.columns.map(item => item.key) || [];
|
|
41
|
+
const columnWidth = {};
|
|
42
|
+
table.columns.forEach(item => {
|
|
43
|
+
columnWidth[item.key] = getColumnWidth(item);
|
|
44
|
+
});
|
|
40
45
|
return {
|
|
41
46
|
id: slugId.nice(),
|
|
42
47
|
type: SEATABLE_TABLE,
|
|
@@ -48,6 +53,7 @@ export const generateSeaTableTable = (table_id, editor) => {
|
|
|
48
53
|
show_record_numbers: false,
|
|
49
54
|
alternate_color: true,
|
|
50
55
|
select_column_display_option_color: true,
|
|
56
|
+
column_width: columnWidth,
|
|
51
57
|
children: [generateDefaultText()]
|
|
52
58
|
};
|
|
53
59
|
};
|
|
@@ -8,6 +8,7 @@ import SortSetter from '../seatable-settings/sort-setter';
|
|
|
8
8
|
import HideColumnSetter from '../seatable-settings/hide-column-setter';
|
|
9
9
|
import { useScrollContext } from '../../../../hooks/use-scroll-context';
|
|
10
10
|
import { updateSeaTableTable } from '../helpers';
|
|
11
|
+
import { getColumnWidth } from '../../seatable-column/helpers';
|
|
11
12
|
import './index.css';
|
|
12
13
|
const TablesList = _ref => {
|
|
13
14
|
let {
|
|
@@ -156,6 +157,10 @@ export default function OpMenu(_ref3) {
|
|
|
156
157
|
} = item;
|
|
157
158
|
setSelectedTableText(name);
|
|
158
159
|
const table = editor.tables.find(item => item._id === _id);
|
|
160
|
+
const columnWidth = {};
|
|
161
|
+
table.columns.forEach(item => {
|
|
162
|
+
columnWidth[item.key] = getColumnWidth(item);
|
|
163
|
+
});
|
|
159
164
|
updatePageSettings({
|
|
160
165
|
table_id: _id,
|
|
161
166
|
filters: [],
|
|
@@ -164,6 +169,7 @@ export default function OpMenu(_ref3) {
|
|
|
164
169
|
shown_column_keys: table.columns.map(item => item.key),
|
|
165
170
|
show_record_numbers: false,
|
|
166
171
|
alternate_color: true,
|
|
172
|
+
column_width: columnWidth,
|
|
167
173
|
select_column_display_option_color: true
|
|
168
174
|
});
|
|
169
175
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
overflow: auto;
|
|
4
4
|
border: 2px solid transparent;
|
|
5
5
|
position: relative;
|
|
6
|
+
user-select: none;
|
|
6
7
|
}
|
|
7
8
|
|
|
8
9
|
.seatable-view-container.selected {
|
|
@@ -13,10 +14,39 @@
|
|
|
13
14
|
margin: 0;
|
|
14
15
|
}
|
|
15
16
|
|
|
17
|
+
.seatable-view-container .seatable-column-editor-wrapper {
|
|
18
|
+
display: flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
justify-content: center;
|
|
21
|
+
position: absolute;
|
|
22
|
+
left: 0;
|
|
23
|
+
bottom: 0;
|
|
24
|
+
width: 100%;
|
|
25
|
+
height: 30px;
|
|
26
|
+
}
|
|
27
|
+
.seatable-view-container .seatable-column-editor-wrapper .seatable-column-width-tip {
|
|
28
|
+
background-color: #0009;
|
|
29
|
+
border-radius: 3px;
|
|
30
|
+
color: #fff;
|
|
31
|
+
font-size: 13px;
|
|
32
|
+
line-height: 20px;
|
|
33
|
+
padding: 2px 8px;
|
|
34
|
+
}
|
|
35
|
+
|
|
16
36
|
.seatable-view-column-header-row th {
|
|
17
37
|
display: inline-flex;
|
|
18
38
|
align-items: center;
|
|
19
39
|
justify-content: flex-start;
|
|
40
|
+
flex: unset !important;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.seatable-view-column-header-row .seatable-view-column-header-cell {
|
|
44
|
+
position: relative;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.seatable-view-column-header-row .seatable-view-column-header-cell span:first-child {
|
|
48
|
+
white-space: nowrap;
|
|
49
|
+
overflow: hidden;
|
|
20
50
|
}
|
|
21
51
|
|
|
22
52
|
.seatable-view-body-column-cell {
|
|
@@ -27,6 +57,7 @@
|
|
|
27
57
|
text-overflow: ellipsis;
|
|
28
58
|
overflow: hidden;
|
|
29
59
|
word-break: break-all;
|
|
60
|
+
flex: unset !important
|
|
30
61
|
}
|
|
31
62
|
|
|
32
63
|
.seatable-view-column-header-row .first-cell,
|
|
@@ -1,22 +1,76 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { ReactEditor } from '@seafile/slate-react';
|
|
4
|
+
import { Transforms } from '@seafile/slate';
|
|
5
|
+
import Draggable from '../draggable';
|
|
6
|
+
const dragAbleStyle = {
|
|
7
|
+
position: 'absolute',
|
|
8
|
+
top: 0,
|
|
9
|
+
right: -3,
|
|
10
|
+
width: 5,
|
|
11
|
+
borderRadius: '3px',
|
|
12
|
+
zIndex: 2,
|
|
13
|
+
margin: '3px 0',
|
|
14
|
+
height: 'calc(100% - 6px)'
|
|
15
|
+
};
|
|
3
16
|
export default function RecordHeader(_ref) {
|
|
4
17
|
let {
|
|
18
|
+
editor,
|
|
5
19
|
element,
|
|
6
|
-
columns
|
|
20
|
+
columns,
|
|
21
|
+
isCanModifyColumnWidth
|
|
7
22
|
} = _ref;
|
|
23
|
+
const headerCellRef = useRef({});
|
|
24
|
+
const {
|
|
25
|
+
column_width = {}
|
|
26
|
+
} = element;
|
|
27
|
+
const [columnWidthMap, setColumnWidthMap] = useState(column_width);
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
setColumnWidthMap(column_width);
|
|
30
|
+
}, [column_width]);
|
|
31
|
+
const getWidthFromMouseEvent = (e, currentCell) => {
|
|
32
|
+
const right = e.pageX || e.touches && e.touches[0] && e.touches[0].pageX || e.changedTouches && e.changedTouches[e.changedTouches.length - 1].pageX;
|
|
33
|
+
const left = currentCell.getBoundingClientRect().left;
|
|
34
|
+
return right - left;
|
|
35
|
+
};
|
|
36
|
+
const onDrag = (e, currentCell, currentColumnKey) => {
|
|
37
|
+
const width = getWidthFromMouseEvent(e, currentCell);
|
|
38
|
+
if (width >= 80) {
|
|
39
|
+
const newColumnWidthMap = _objectSpread(_objectSpread({}, columnWidthMap), {}, {
|
|
40
|
+
[currentColumnKey]: width
|
|
41
|
+
});
|
|
42
|
+
setColumnWidthMap(newColumnWidthMap);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const onDragEnd = () => {
|
|
46
|
+
const path = ReactEditor.findPath(editor, element);
|
|
47
|
+
Transforms.setNodes(editor, {
|
|
48
|
+
column_width: columnWidthMap
|
|
49
|
+
}, {
|
|
50
|
+
at: [path[0]]
|
|
51
|
+
});
|
|
52
|
+
};
|
|
8
53
|
return /*#__PURE__*/React.createElement("tr", {
|
|
9
54
|
className: "seatable-view-column-header-row"
|
|
10
55
|
}, element.show_record_numbers && /*#__PURE__*/React.createElement("th", {
|
|
11
56
|
className: "seatable-view-column-header-cell first-cell"
|
|
12
57
|
}), columns.map(column => {
|
|
13
|
-
const width =
|
|
58
|
+
const width = columnWidthMap[column.key];
|
|
14
59
|
return /*#__PURE__*/React.createElement("th", {
|
|
60
|
+
ref: ref => {
|
|
61
|
+
headerCellRef.current[column.key] = ref;
|
|
62
|
+
},
|
|
15
63
|
className: "seatable-view-column-header-cell",
|
|
16
64
|
key: column.key,
|
|
17
65
|
style: {
|
|
18
66
|
width
|
|
19
67
|
}
|
|
20
|
-
}, column.name)
|
|
68
|
+
}, /*#__PURE__*/React.createElement("span", null, column.name), isCanModifyColumnWidth && /*#__PURE__*/React.createElement(Draggable, {
|
|
69
|
+
style: dragAbleStyle,
|
|
70
|
+
onDrag: e => {
|
|
71
|
+
onDrag(e, headerCellRef.current[column.key], column.key);
|
|
72
|
+
},
|
|
73
|
+
onDragEnd: onDragEnd
|
|
74
|
+
}));
|
|
21
75
|
}));
|
|
22
76
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { CellType } from 'dtable-utils';
|
|
3
|
-
import { getColumnWidth } from '../../seatable-column/helpers';
|
|
4
3
|
import Formatter from '../formatter';
|
|
5
4
|
export default function RecordItem(_ref) {
|
|
6
5
|
let {
|
|
@@ -11,12 +10,15 @@ export default function RecordItem(_ref) {
|
|
|
11
10
|
columns,
|
|
12
11
|
editor
|
|
13
12
|
} = _ref;
|
|
13
|
+
const {
|
|
14
|
+
column_width = {}
|
|
15
|
+
} = element;
|
|
14
16
|
return /*#__PURE__*/React.createElement("tr", {
|
|
15
17
|
className: "seatable-view-body-column-row"
|
|
16
18
|
}, element.show_record_numbers && /*#__PURE__*/React.createElement("th", {
|
|
17
19
|
className: "seatable-view-body-column-cell first-cell"
|
|
18
20
|
}, index), columns.map(column => {
|
|
19
|
-
const width =
|
|
21
|
+
const width = column_width[column.key];
|
|
20
22
|
let cellValue = record[column.key];
|
|
21
23
|
if ([CellType.LINK, CellType.LINK_FORMULA, CellType.FORMULA].includes(column.type)) {
|
|
22
24
|
cellValue = formulaRow[column.key];
|
|
@@ -6,7 +6,7 @@ export default function RecordList(_ref) {
|
|
|
6
6
|
records,
|
|
7
7
|
columns,
|
|
8
8
|
element,
|
|
9
|
-
formulaRows
|
|
9
|
+
formulaRows = {}
|
|
10
10
|
} = _ref;
|
|
11
11
|
return /*#__PURE__*/React.createElement(React.Fragment, null, records.map((record, index) => {
|
|
12
12
|
const formulaRow = formulaRows[record._id] || {};
|
|
@@ -2,13 +2,15 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
|
2
2
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
3
|
import classNames from 'classnames';
|
|
4
4
|
import { useTranslation } from 'react-i18next';
|
|
5
|
-
import {
|
|
5
|
+
import { Transforms } from '@seafile/slate';
|
|
6
|
+
import { useReadOnly, useSelected, ReactEditor } from '@seafile/slate-react';
|
|
6
7
|
import { CellType, getFilteredRowsWithoutFormulaCalculation, sortTableRows } from 'dtable-utils';
|
|
7
8
|
import Loading from '../../../../../components/loading';
|
|
8
9
|
import RecordHeader from './record-header';
|
|
9
10
|
import RecordList from './record-list';
|
|
10
11
|
import OpMenu from '../op-menu';
|
|
11
12
|
import { useScrollContext } from '../../../../hooks/use-scroll-context';
|
|
13
|
+
import { getColumnWidth } from '../../seatable-column/helpers';
|
|
12
14
|
import './index.css';
|
|
13
15
|
function SeaTableTable(_ref) {
|
|
14
16
|
var _tableInfoRef$current, _tableInfoRef$current2;
|
|
@@ -19,6 +21,10 @@ function SeaTableTable(_ref) {
|
|
|
19
21
|
children,
|
|
20
22
|
editor
|
|
21
23
|
} = _ref;
|
|
24
|
+
const {
|
|
25
|
+
column_width,
|
|
26
|
+
table_id
|
|
27
|
+
} = element;
|
|
22
28
|
const scrollRef = useScrollContext();
|
|
23
29
|
const isSelected = useSelected();
|
|
24
30
|
const readOnly = useReadOnly();
|
|
@@ -27,6 +33,8 @@ function SeaTableTable(_ref) {
|
|
|
27
33
|
const [records, setRecords] = useState([]);
|
|
28
34
|
const [shownRecords, setShownRecords] = useState([]);
|
|
29
35
|
const [isShowTipMessage, setIsShowTipMessage] = useState(false);
|
|
36
|
+
const [isShowColumnWidth, setIsShowColumnWidth] = useState(false);
|
|
37
|
+
const [isCanModifyColumnWidth, setIsCanModifyColumnWidth] = useState(false);
|
|
30
38
|
const tableInfoRef = useRef(null);
|
|
31
39
|
const {
|
|
32
40
|
t
|
|
@@ -39,6 +47,23 @@ function SeaTableTable(_ref) {
|
|
|
39
47
|
top: '',
|
|
40
48
|
left: ''
|
|
41
49
|
});
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
// Compatible with old element data structures
|
|
52
|
+
if (!column_width) {
|
|
53
|
+
const table = editor.getTableById(table_id);
|
|
54
|
+
const columnWidth = {};
|
|
55
|
+
table.columns.forEach(item => {
|
|
56
|
+
columnWidth[item.key] = getColumnWidth(item);
|
|
57
|
+
});
|
|
58
|
+
const path = ReactEditor.findPath(editor, element);
|
|
59
|
+
Transforms.setNodes(editor, {
|
|
60
|
+
column_width: columnWidth
|
|
61
|
+
}, {
|
|
62
|
+
at: [path[0]]
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
66
|
+
}, [column_width]);
|
|
42
67
|
useEffect(() => {
|
|
43
68
|
const {
|
|
44
69
|
table_id
|
|
@@ -184,6 +209,8 @@ function SeaTableTable(_ref) {
|
|
|
184
209
|
useEffect(() => {
|
|
185
210
|
if (!isSelected) {
|
|
186
211
|
setIsShowMenu(false);
|
|
212
|
+
setIsShowColumnWidth(false);
|
|
213
|
+
setIsCanModifyColumnWidth(false);
|
|
187
214
|
}
|
|
188
215
|
}, [isSelected]);
|
|
189
216
|
const onTableClick = useCallback(event => {
|
|
@@ -203,6 +230,12 @@ function SeaTableTable(_ref) {
|
|
|
203
230
|
}
|
|
204
231
|
setMenuPosition(newMenuPosition);
|
|
205
232
|
setIsShowMenu(true);
|
|
233
|
+
setIsShowColumnWidth(true);
|
|
234
|
+
}, [readOnly]);
|
|
235
|
+
const onTableDoubleClick = useCallback(event => {
|
|
236
|
+
if (readOnly) return;
|
|
237
|
+
setIsShowColumnWidth(false);
|
|
238
|
+
setIsCanModifyColumnWidth(true);
|
|
206
239
|
}, [readOnly]);
|
|
207
240
|
const containerClass = classNames('seatable-view-container', {
|
|
208
241
|
selected: isSelected
|
|
@@ -213,7 +246,8 @@ function SeaTableTable(_ref) {
|
|
|
213
246
|
}), /*#__PURE__*/React.createElement("div", {
|
|
214
247
|
ref: seaTableRef,
|
|
215
248
|
className: containerClass,
|
|
216
|
-
onClick: onTableClick
|
|
249
|
+
onClick: onTableClick,
|
|
250
|
+
onDoubleClick: onTableDoubleClick
|
|
217
251
|
}, isShowMenu && /*#__PURE__*/React.createElement(OpMenu, {
|
|
218
252
|
editor: editor,
|
|
219
253
|
element: element,
|
|
@@ -224,8 +258,10 @@ function SeaTableTable(_ref) {
|
|
|
224
258
|
'no_alternate_color': !element.alternate_color
|
|
225
259
|
})
|
|
226
260
|
}, /*#__PURE__*/React.createElement("tbody", null, /*#__PURE__*/React.createElement(RecordHeader, {
|
|
261
|
+
editor: editor,
|
|
227
262
|
element: element,
|
|
228
|
-
columns: columns
|
|
263
|
+
columns: columns,
|
|
264
|
+
isCanModifyColumnWidth: isCanModifyColumnWidth
|
|
229
265
|
}), /*#__PURE__*/React.createElement(RecordList, {
|
|
230
266
|
element: element,
|
|
231
267
|
editor: editor,
|
|
@@ -238,6 +274,10 @@ function SeaTableTable(_ref) {
|
|
|
238
274
|
count: records.length - 10
|
|
239
275
|
})), readOnly && isShowTipMessage && /*#__PURE__*/React.createElement("div", {
|
|
240
276
|
className: "d-print-none ml-2 m-2"
|
|
241
|
-
}, t('Print_limit_exceeded'))
|
|
277
|
+
}, t('Print_limit_exceeded')), !readOnly && isShowColumnWidth && !isCanModifyColumnWidth && /*#__PURE__*/React.createElement("div", {
|
|
278
|
+
className: "seatable-column-editor-wrapper"
|
|
279
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
280
|
+
className: "seatable-column-width-tip"
|
|
281
|
+
}, t('Double_click_to_enter_edit_mode_and_adjust_field_width')))), children));
|
|
242
282
|
}
|
|
243
283
|
export default SeaTableTable;
|
|
@@ -61,10 +61,12 @@ export default function ArticleContainer(_ref) {
|
|
|
61
61
|
style: containerStyle
|
|
62
62
|
}, React.Children.count(children) === 1 && /*#__PURE__*/React.createElement("div", {
|
|
63
63
|
className: "article",
|
|
64
|
+
id: "sdoc-editor-print-wrapper",
|
|
64
65
|
ref: articleRef,
|
|
65
66
|
onClick: handelArticleClick
|
|
66
67
|
}, children), React.Children.count(children) > 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
67
68
|
className: "article",
|
|
69
|
+
id: "sdoc-editor-print-wrapper",
|
|
68
70
|
ref: articleRef,
|
|
69
71
|
onClick: handelArticleClick
|
|
70
72
|
}, children[0]), [...children.slice(1)]));
|
|
@@ -58,4 +58,12 @@ export const getMouseMoveInfo = (event, mouseDownInfo, scrollContainer) => {
|
|
|
58
58
|
displacementX,
|
|
59
59
|
displacementY
|
|
60
60
|
};
|
|
61
|
+
};
|
|
62
|
+
export const createObjectWithProperties = (originalObj, properties) => {
|
|
63
|
+
return properties.reduce((result, property) => {
|
|
64
|
+
if (property in originalObj) {
|
|
65
|
+
result[property] = originalObj[property];
|
|
66
|
+
}
|
|
67
|
+
return result;
|
|
68
|
+
}, {});
|
|
61
69
|
};
|
package/package.json
CHANGED
|
@@ -561,5 +561,6 @@
|
|
|
561
561
|
"the_past_month": "last month",
|
|
562
562
|
"the_past_year": "last year",
|
|
563
563
|
"the_next_numbers_of_days": "the next numbers of days",
|
|
564
|
-
"the_past_numbers_of_days": "the past numbers of days"
|
|
564
|
+
"the_past_numbers_of_days": "the past numbers of days",
|
|
565
|
+
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "Double click to enter edit mode and adjust field width"
|
|
565
566
|
}
|
|
@@ -561,5 +561,6 @@
|
|
|
561
561
|
"the_past_month": "last month",
|
|
562
562
|
"the_past_year": "last year",
|
|
563
563
|
"the_next_numbers_of_days": "the next numbers of days",
|
|
564
|
-
"the_past_numbers_of_days": "the past numbers of days"
|
|
564
|
+
"the_past_numbers_of_days": "the past numbers of days",
|
|
565
|
+
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "Double click to enter edit mode and adjust field width"
|
|
565
566
|
}
|
|
@@ -561,5 +561,6 @@
|
|
|
561
561
|
"the_past_month": "last month",
|
|
562
562
|
"the_past_year": "last year",
|
|
563
563
|
"the_next_numbers_of_days": "the next numbers of days",
|
|
564
|
-
"the_past_numbers_of_days": "the past numbers of days"
|
|
564
|
+
"the_past_numbers_of_days": "the past numbers of days",
|
|
565
|
+
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "Double click to enter edit mode and adjust field width"
|
|
565
566
|
}
|
|
@@ -561,5 +561,6 @@
|
|
|
561
561
|
"the_past_month": "last month",
|
|
562
562
|
"the_past_year": "last year",
|
|
563
563
|
"the_next_numbers_of_days": "the next numbers of days",
|
|
564
|
-
"the_past_numbers_of_days": "the past numbers of days"
|
|
564
|
+
"the_past_numbers_of_days": "the past numbers of days",
|
|
565
|
+
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "Double click to enter edit mode and adjust field width"
|
|
565
566
|
}
|
|
@@ -561,5 +561,6 @@
|
|
|
561
561
|
"the_past_month": "last month",
|
|
562
562
|
"the_past_year": "last year",
|
|
563
563
|
"the_next_numbers_of_days": "the next numbers of days",
|
|
564
|
-
"the_past_numbers_of_days": "the past numbers of days"
|
|
564
|
+
"the_past_numbers_of_days": "the past numbers of days",
|
|
565
|
+
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "Double click to enter edit mode and adjust field width"
|
|
565
566
|
}
|
|
@@ -561,5 +561,6 @@
|
|
|
561
561
|
"the_past_month": "last month",
|
|
562
562
|
"the_past_year": "last year",
|
|
563
563
|
"the_next_numbers_of_days": "the next numbers of days",
|
|
564
|
-
"the_past_numbers_of_days": "the past numbers of days"
|
|
564
|
+
"the_past_numbers_of_days": "the past numbers of days",
|
|
565
|
+
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "Double click to enter edit mode and adjust field width"
|
|
565
566
|
}
|
|
@@ -561,5 +561,6 @@
|
|
|
561
561
|
"the_past_month": "last month",
|
|
562
562
|
"the_past_year": "last year",
|
|
563
563
|
"the_next_numbers_of_days": "the next numbers of days",
|
|
564
|
-
"the_past_numbers_of_days": "the past numbers of days"
|
|
564
|
+
"the_past_numbers_of_days": "the past numbers of days",
|
|
565
|
+
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "Double click to enter edit mode and adjust field width"
|
|
565
566
|
}
|
|
@@ -561,5 +561,6 @@
|
|
|
561
561
|
"the_past_month": "last month",
|
|
562
562
|
"the_past_year": "last year",
|
|
563
563
|
"the_next_numbers_of_days": "the next numbers of days",
|
|
564
|
-
"the_past_numbers_of_days": "the past numbers of days"
|
|
564
|
+
"the_past_numbers_of_days": "the past numbers of days",
|
|
565
|
+
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "Double click to enter edit mode and adjust field width"
|
|
565
566
|
}
|
|
@@ -561,5 +561,6 @@
|
|
|
561
561
|
"the_past_month": "в прошлом месяце",
|
|
562
562
|
"the_past_year": "в прошлом году",
|
|
563
563
|
"the_next_numbers_of_days": "ближайшее количество дней",
|
|
564
|
-
"the_past_numbers_of_days": "прошедшее количество дней"
|
|
564
|
+
"the_past_numbers_of_days": "прошедшее количество дней",
|
|
565
|
+
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "Double click to enter edit mode and adjust field width"
|
|
565
566
|
}
|
|
@@ -561,5 +561,6 @@
|
|
|
561
561
|
"the_past_month": "上个月",
|
|
562
562
|
"the_past_year": "去年",
|
|
563
563
|
"the_next_numbers_of_days": "今天之后的指定天数",
|
|
564
|
-
"the_past_numbers_of_days": "今天之前的指定天数"
|
|
564
|
+
"the_past_numbers_of_days": "今天之前的指定天数",
|
|
565
|
+
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "双击可进入编辑模式并调整字段宽度"
|
|
565
566
|
}
|