@seafile/sdoc-editor 2.0.24 → 2.0.25-alph-0.0.1
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/assets/css/dropdown-menu.css +1 -1
- package/dist/basic-sdk/extension/commons/insert-element-dialog/index.js +12 -2
- package/dist/basic-sdk/extension/constants/element-type.js +2 -1
- package/dist/basic-sdk/extension/constants/index.js +8 -2
- package/dist/basic-sdk/extension/constants/menus-config.js +5 -0
- package/dist/basic-sdk/extension/plugins/ai/ai-module/index.js +17 -4
- package/dist/basic-sdk/extension/plugins/ai/ai-module/style.css +8 -0
- package/dist/basic-sdk/extension/plugins/index.js +7 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.css +414 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.js +76 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/record-content.js +209 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/resize-handle/ResizeHandle.js +38 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/resize-handle/index.css +384 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header-cell.js +125 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header.js +144 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-item.js +161 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/seatable-table-record.js +47 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/helpers.js +98 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/index.js +17 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/menu/index.css +3 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/menu/index.js +46 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/menu/seatable-list.js +62 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/model.js +19 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/plugin.js +60 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.css +124 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.js +160 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/record-header.js +78 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/record-item.js +41 -0
- package/dist/basic-sdk/extension/plugins/seatable-tables/formatter/index.js +7 -2
- package/dist/basic-sdk/extension/plugins/table/menu/table-menu/index.js +1 -0
- package/dist/basic-sdk/extension/plugins/table/popover/table-size-popover/index.js +2 -0
- package/dist/basic-sdk/extension/render/custom-element.js +5 -0
- package/dist/basic-sdk/extension/toolbar/header-toolbar/insert-toolbar/index.js +3 -2
- package/dist/basic-sdk/extension/toolbar/insert-element-toolbar/index.js +1 -1
- package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +2 -1
- package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-block-menu.js +2 -1
- package/dist/constants/index.js +1 -0
- package/dist/pages/document-plugin-editor.js +2 -1
- package/package.json +1 -1
- package/public/locales/cs/sdoc-editor.json +7 -1
- package/public/locales/de/sdoc-editor.json +66 -60
- package/public/locales/en/sdoc-editor.json +9 -1
- package/public/locales/es/sdoc-editor.json +7 -1
- package/public/locales/es_AR/sdoc-editor.json +7 -1
- package/public/locales/es_MX/sdoc-editor.json +7 -1
- package/public/locales/fr/sdoc-editor.json +240 -234
- package/public/locales/it/sdoc-editor.json +7 -1
- package/public/locales/ru/sdoc-editor.json +8 -2
- package/public/locales/zh_CN/sdoc-editor.json +6 -1
- package/public/media/sdoc-editor-font/iconfont.css +15 -14
- package/public/media/sdoc-editor-font/iconfont.eot +0 -0
- package/public/media/sdoc-editor-font/iconfont.svg +3 -1
- package/public/media/sdoc-editor-font/iconfont.ttf +0 -0
- package/public/media/sdoc-editor-font/iconfont.woff +0 -0
- package/public/media/sdoc-editor-font/iconfont.woff2 +0 -0
- package/public/media/sdoc-editor-font.css +11 -7
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
11
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
12
|
+
var _ResizeHandle = _interopRequireDefault(require("./resize-handle/ResizeHandle"));
|
|
13
|
+
var _constants = require("../../../../../../constants");
|
|
14
|
+
var _basicSdk = require("../../../../../../basic-sdk");
|
|
15
|
+
class RowCardHeaderCell extends _react.default.Component {
|
|
16
|
+
constructor(props) {
|
|
17
|
+
super(props);
|
|
18
|
+
(0, _defineProperty2.default)(this, "getHeaderCellWidth", () => {
|
|
19
|
+
const {
|
|
20
|
+
column,
|
|
21
|
+
rowCardType,
|
|
22
|
+
table
|
|
23
|
+
} = this.props;
|
|
24
|
+
const {
|
|
25
|
+
key,
|
|
26
|
+
width
|
|
27
|
+
} = column;
|
|
28
|
+
let headerCellWidth = width;
|
|
29
|
+
if (rowCardType === 'link') {
|
|
30
|
+
const tableId = table._id;
|
|
31
|
+
const draggedCellId = `${tableId}-${key}`;
|
|
32
|
+
const existedWidth = JSON.parse(localStorage.getItem(draggedCellId));
|
|
33
|
+
if (existedWidth) {
|
|
34
|
+
headerCellWidth = existedWidth;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return headerCellWidth;
|
|
38
|
+
});
|
|
39
|
+
(0, _defineProperty2.default)(this, "onDrag", e => {
|
|
40
|
+
const headerCellWidth = this.getWidthFromMouseEvent(e);
|
|
41
|
+
this.setState({
|
|
42
|
+
headerCellWidth
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
(0, _defineProperty2.default)(this, "onDragStart", e => {
|
|
46
|
+
this.setState({
|
|
47
|
+
resizing: true
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
(0, _defineProperty2.default)(this, "onDragEnd", e => {
|
|
51
|
+
const {
|
|
52
|
+
column,
|
|
53
|
+
table
|
|
54
|
+
} = this.props;
|
|
55
|
+
const columnKey = column.key;
|
|
56
|
+
const {
|
|
57
|
+
_id: tableId
|
|
58
|
+
} = table;
|
|
59
|
+
const draggedCellId = `${tableId}-${columnKey}`;
|
|
60
|
+
let width = this.getWidthFromMouseEvent(e);
|
|
61
|
+
this.setState({
|
|
62
|
+
resizing: false
|
|
63
|
+
});
|
|
64
|
+
const eventBus = _basicSdk.EventBus.getInstance();
|
|
65
|
+
eventBus.dispatch(_constants.EXTERNAL_EVENT.CHANGE_HEADER_WIDTH, {
|
|
66
|
+
id: draggedCellId,
|
|
67
|
+
width
|
|
68
|
+
});
|
|
69
|
+
localStorage.setItem(draggedCellId, width);
|
|
70
|
+
});
|
|
71
|
+
(0, _defineProperty2.default)(this, "getWidthFromMouseEvent", e => {
|
|
72
|
+
let right = e.pageX || e.touches && e.touches[0] && e.touches[0].pageX || e.changedTouches && e.changedTouches[e.changedTouches.length - 1].pageX;
|
|
73
|
+
if (e.pageX === 0) {
|
|
74
|
+
right = 0;
|
|
75
|
+
}
|
|
76
|
+
const left = _reactDom.default.findDOMNode(this.headerCell).getBoundingClientRect().left;
|
|
77
|
+
// add 5px is ResizeHandle component DOM width, and the draggable column minimum width is 50px
|
|
78
|
+
return Math.max(right - left + 5, 50);
|
|
79
|
+
});
|
|
80
|
+
this.state = {
|
|
81
|
+
resizing: false,
|
|
82
|
+
headerCellWidth: this.getHeaderCellWidth(),
|
|
83
|
+
isDraggable: props.rowCardType === 'link'
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
render() {
|
|
87
|
+
const {
|
|
88
|
+
column
|
|
89
|
+
} = this.props;
|
|
90
|
+
const {
|
|
91
|
+
headerCellWidth,
|
|
92
|
+
resizing,
|
|
93
|
+
isDraggable
|
|
94
|
+
} = this.state;
|
|
95
|
+
const {
|
|
96
|
+
name,
|
|
97
|
+
key
|
|
98
|
+
} = column;
|
|
99
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
100
|
+
className: (0, _classnames.default)('row-card-column-name text-truncate position-relative', {
|
|
101
|
+
'row-card-column--resizing': resizing
|
|
102
|
+
}, {
|
|
103
|
+
'row-card-draggable': isDraggable
|
|
104
|
+
})
|
|
105
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
106
|
+
ref: ref => this.headerCell = ref,
|
|
107
|
+
className: "row-card-column-name-item position-relative",
|
|
108
|
+
style: {
|
|
109
|
+
width: headerCellWidth
|
|
110
|
+
},
|
|
111
|
+
key: key,
|
|
112
|
+
title: name
|
|
113
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
114
|
+
title: name
|
|
115
|
+
}, name)), isDraggable && /*#__PURE__*/_react.default.createElement(_ResizeHandle.default, {
|
|
116
|
+
style: {
|
|
117
|
+
right: 0
|
|
118
|
+
},
|
|
119
|
+
onDrag: this.onDrag,
|
|
120
|
+
onDragStart: this.onDragStart,
|
|
121
|
+
onDragEnd: this.onDragEnd
|
|
122
|
+
}));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
var _default = exports.default = RowCardHeaderCell;
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
11
|
+
var _rowCardHeaderCell = _interopRequireDefault(require("./row-card-header-cell"));
|
|
12
|
+
class RowCardHeader extends _react.default.Component {
|
|
13
|
+
constructor(props) {
|
|
14
|
+
super(props);
|
|
15
|
+
(0, _defineProperty2.default)(this, "onScrollControlClick", type => {
|
|
16
|
+
const tablesNav = this.linkRecordsHeader;
|
|
17
|
+
const {
|
|
18
|
+
offsetWidth,
|
|
19
|
+
scrollWidth,
|
|
20
|
+
scrollLeft
|
|
21
|
+
} = tablesNav;
|
|
22
|
+
let targetScrollLeft;
|
|
23
|
+
if (type === 'prev') {
|
|
24
|
+
if (scrollLeft === 0) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
targetScrollLeft = scrollLeft - offsetWidth;
|
|
28
|
+
targetScrollLeft = targetScrollLeft > 0 ? targetScrollLeft : 0;
|
|
29
|
+
}
|
|
30
|
+
if (type === 'next') {
|
|
31
|
+
if (scrollLeft + offsetWidth === scrollWidth) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
targetScrollLeft = scrollLeft + offsetWidth;
|
|
35
|
+
targetScrollLeft = targetScrollLeft > scrollWidth - offsetWidth ? scrollWidth - offsetWidth : targetScrollLeft;
|
|
36
|
+
}
|
|
37
|
+
if (this.state.canCardHeaderScroll) {
|
|
38
|
+
this.setState({
|
|
39
|
+
canCardHeaderScroll: false
|
|
40
|
+
});
|
|
41
|
+
let timer = null;
|
|
42
|
+
let step = (targetScrollLeft - scrollLeft) / 10;
|
|
43
|
+
step = step > 0 ? Math.ceil(step) : Math.floor(step);
|
|
44
|
+
timer = setInterval(() => {
|
|
45
|
+
tablesNav.scrollLeft = tablesNav.scrollLeft + step;
|
|
46
|
+
if (Math.abs(targetScrollLeft - tablesNav.scrollLeft) <= Math.abs(step)) {
|
|
47
|
+
tablesNav.scrollLeft = targetScrollLeft;
|
|
48
|
+
clearInterval(timer);
|
|
49
|
+
this.setState({
|
|
50
|
+
canCardHeaderScroll: true
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}, 30);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
(0, _defineProperty2.default)(this, "onScrollHeader", () => {
|
|
57
|
+
let {
|
|
58
|
+
scrollLeft
|
|
59
|
+
} = this.linkRecordsHeader;
|
|
60
|
+
this.props.setItemScrollLeft(scrollLeft, -1);
|
|
61
|
+
if (this.timer) {
|
|
62
|
+
clearTimeout(this.timer);
|
|
63
|
+
}
|
|
64
|
+
this.timer = setTimeout(() => {
|
|
65
|
+
this.props.setScrollLeft(scrollLeft);
|
|
66
|
+
}, 60);
|
|
67
|
+
});
|
|
68
|
+
(0, _defineProperty2.default)(this, "setHeaderScrollLeft", scrollLeft => {
|
|
69
|
+
this.linkRecordsHeader.scrollLeft = scrollLeft;
|
|
70
|
+
});
|
|
71
|
+
(0, _defineProperty2.default)(this, "getCardHeaderCells", () => {
|
|
72
|
+
const cardHeaderCells = [];
|
|
73
|
+
const {
|
|
74
|
+
renderedColumns,
|
|
75
|
+
rowCardType,
|
|
76
|
+
table
|
|
77
|
+
} = this.props;
|
|
78
|
+
// Start from the second column without name
|
|
79
|
+
for (let i = 1; i < renderedColumns.length; i++) {
|
|
80
|
+
const renderedColumn = renderedColumns[i];
|
|
81
|
+
cardHeaderCells.push( /*#__PURE__*/_react.default.createElement(_rowCardHeaderCell.default, {
|
|
82
|
+
key: renderedColumn.key,
|
|
83
|
+
column: renderedColumn,
|
|
84
|
+
rowCardType: rowCardType,
|
|
85
|
+
table: table
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
88
|
+
return cardHeaderCells;
|
|
89
|
+
});
|
|
90
|
+
this.state = {
|
|
91
|
+
canCardHeaderScroll: true,
|
|
92
|
+
linkRecordsNavScrollWidth: 0,
|
|
93
|
+
linkRecordsNavWidth: 0
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
componentDidUpdate(prevProps, prevState) {
|
|
97
|
+
const {
|
|
98
|
+
offsetWidth,
|
|
99
|
+
scrollWidth
|
|
100
|
+
} = this.linkRecordsHeader;
|
|
101
|
+
if (prevState.linkRecordsNavScrollWidth !== scrollWidth || prevState.linkRecordsNavWidth !== offsetWidth) {
|
|
102
|
+
this.props.getCurrentDisplayRowMaxIndex();
|
|
103
|
+
this.setState({
|
|
104
|
+
linkRecordsNavScrollWidth: scrollWidth,
|
|
105
|
+
linkRecordsNavWidth: offsetWidth
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
render() {
|
|
110
|
+
const {
|
|
111
|
+
showScrollBtn,
|
|
112
|
+
scrollLeft,
|
|
113
|
+
cardHeaderClassName
|
|
114
|
+
} = this.props;
|
|
115
|
+
const {
|
|
116
|
+
linkRecordsNavWidth,
|
|
117
|
+
linkRecordsNavScrollWidth
|
|
118
|
+
} = this.state;
|
|
119
|
+
const cardHeaderCells = this.getCardHeaderCells();
|
|
120
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
121
|
+
className: `row-card-header ${cardHeaderClassName ? cardHeaderClassName : ''}`
|
|
122
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
123
|
+
className: "row-card-column-names records-column-names",
|
|
124
|
+
ref: ref => this.recordItemRef = ref
|
|
125
|
+
}, showScrollBtn && /*#__PURE__*/_react.default.createElement("span", {
|
|
126
|
+
className: (0, _classnames.default)('dtable-font', 'dtable-icon-left', 'row-card-scroll', 'link-scroll-prev', {
|
|
127
|
+
'scroll-active': scrollLeft > 0
|
|
128
|
+
}),
|
|
129
|
+
onClick: this.onScrollControlClick.bind(this, 'prev')
|
|
130
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
131
|
+
className: "row-card-columns-container",
|
|
132
|
+
onScroll: this.onScrollHeader,
|
|
133
|
+
ref: ref => this.linkRecordsHeader = ref
|
|
134
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
135
|
+
className: "d-inline-flex"
|
|
136
|
+
}, cardHeaderCells)), showScrollBtn && /*#__PURE__*/_react.default.createElement("span", {
|
|
137
|
+
className: (0, _classnames.default)('dtable-font', 'dtable-icon-right', 'row-card-scroll', 'link-scroll-next', {
|
|
138
|
+
'scroll-active': scrollLeft + linkRecordsNavWidth < linkRecordsNavScrollWidth
|
|
139
|
+
}),
|
|
140
|
+
onClick: this.onScrollControlClick.bind(this, 'next')
|
|
141
|
+
})));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
var _default = exports.default = RowCardHeader;
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _dtableStore = require("dtable-store");
|
|
12
|
+
var _helpers = require("../../helpers");
|
|
13
|
+
var _constants = require("../../../../../../constants");
|
|
14
|
+
var _basicSdk = require("../../../../../../basic-sdk");
|
|
15
|
+
var _formatter = _interopRequireDefault(require("../../../seatable-tables/formatter"));
|
|
16
|
+
const emptyComponent = /*#__PURE__*/_react.default.createElement("span", {
|
|
17
|
+
className: "row-cell-empty d-inline-block"
|
|
18
|
+
});
|
|
19
|
+
class RowCardItem extends _react.PureComponent {
|
|
20
|
+
constructor(props) {
|
|
21
|
+
super(props);
|
|
22
|
+
(0, _defineProperty2.default)(this, "setDraggedCell", draggedCell => {
|
|
23
|
+
this.setState({
|
|
24
|
+
draggedCell
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
(0, _defineProperty2.default)(this, "getRowRecord", () => {
|
|
28
|
+
return this.linkRowRecord();
|
|
29
|
+
});
|
|
30
|
+
(0, _defineProperty2.default)(this, "linkRowRecord", () => {
|
|
31
|
+
let {
|
|
32
|
+
row,
|
|
33
|
+
formulaRow,
|
|
34
|
+
columns,
|
|
35
|
+
table,
|
|
36
|
+
rowCardType
|
|
37
|
+
} = this.props;
|
|
38
|
+
const {
|
|
39
|
+
draggedCell
|
|
40
|
+
} = this.state;
|
|
41
|
+
const {
|
|
42
|
+
_id: tableId
|
|
43
|
+
} = table;
|
|
44
|
+
return columns.filter(column => column.key !== '0000').map(column => {
|
|
45
|
+
const {
|
|
46
|
+
key,
|
|
47
|
+
width
|
|
48
|
+
} = column;
|
|
49
|
+
const draggedCellId = `${tableId}-${key}`;
|
|
50
|
+
const existedWidth = JSON.parse(localStorage.getItem(draggedCellId));
|
|
51
|
+
let columnWidth = existedWidth && rowCardType === 'link' ? existedWidth : width;
|
|
52
|
+
if (draggedCell.id === draggedCellId) {
|
|
53
|
+
columnWidth = draggedCell.width;
|
|
54
|
+
}
|
|
55
|
+
let cellValue = row[column.key];
|
|
56
|
+
if ([_dtableStore.CellType.LINK, _dtableStore.CellType.LINK_FORMULA, _dtableStore.CellType.FORMULA].includes(column.type)) {
|
|
57
|
+
cellValue = formulaRow[column.key];
|
|
58
|
+
}
|
|
59
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
60
|
+
className: "row-cell-value text-truncate",
|
|
61
|
+
key: row._id + '_' + key,
|
|
62
|
+
style: {
|
|
63
|
+
width: columnWidth
|
|
64
|
+
}
|
|
65
|
+
}, /*#__PURE__*/_react.default.createElement(_formatter.default, {
|
|
66
|
+
isSample: true,
|
|
67
|
+
column: column,
|
|
68
|
+
cellValue: cellValue,
|
|
69
|
+
collaborators: (0, _helpers.getAllCollaborators)(),
|
|
70
|
+
components: {
|
|
71
|
+
emptyComponent
|
|
72
|
+
},
|
|
73
|
+
isSeatableRow: true
|
|
74
|
+
}));
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
(0, _defineProperty2.default)(this, "changeScroll", event => {
|
|
78
|
+
event.stopPropagation();
|
|
79
|
+
const {
|
|
80
|
+
setItemScrollLeft,
|
|
81
|
+
rowIdx
|
|
82
|
+
} = this.props;
|
|
83
|
+
if (this.scrollActive) {
|
|
84
|
+
this.scrollActive = false;
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
if (setItemScrollLeft) setItemScrollLeft(this.cardRecordsItemRef.scrollLeft, rowIdx);
|
|
88
|
+
});
|
|
89
|
+
(0, _defineProperty2.default)(this, "setScrollLeft", scrollLeft => {
|
|
90
|
+
this.scrollActive = true;
|
|
91
|
+
this.cardRecordsItemRef.scrollLeft = scrollLeft;
|
|
92
|
+
});
|
|
93
|
+
(0, _defineProperty2.default)(this, "getScrollLeft", () => {
|
|
94
|
+
return this.cardRecordsItemRef.scrollLeft;
|
|
95
|
+
});
|
|
96
|
+
(0, _defineProperty2.default)(this, "setCardRecordsItemRef", ref => {
|
|
97
|
+
this.cardRecordsItemRef = ref;
|
|
98
|
+
});
|
|
99
|
+
this.state = {
|
|
100
|
+
draggedCell: {},
|
|
101
|
+
isShowTick: false
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
componentDidMount() {
|
|
105
|
+
const {
|
|
106
|
+
rowIdx,
|
|
107
|
+
onRef
|
|
108
|
+
} = this.props;
|
|
109
|
+
onRef && onRef(this, rowIdx);
|
|
110
|
+
const eventBus = _basicSdk.EventBus.getInstance();
|
|
111
|
+
this.unsubscribeChangeHeaderWidth = eventBus.subscribe(_constants.EXTERNAL_EVENT.CHANGE_HEADER_WIDTH, this.setDraggedCell);
|
|
112
|
+
}
|
|
113
|
+
componentWillUnmount() {
|
|
114
|
+
this.unsubscribeChangeHeaderWidth();
|
|
115
|
+
}
|
|
116
|
+
UNSAFE_componentWillUpdate(nextProps) {
|
|
117
|
+
const {
|
|
118
|
+
onRef
|
|
119
|
+
} = this.props;
|
|
120
|
+
onRef && onRef(this, nextProps.rowIdx);
|
|
121
|
+
}
|
|
122
|
+
render() {
|
|
123
|
+
const {
|
|
124
|
+
row,
|
|
125
|
+
columns,
|
|
126
|
+
isSelected,
|
|
127
|
+
onRowClick
|
|
128
|
+
} = this.props;
|
|
129
|
+
const nameColumn = columns.find(column => column.key === '0000');
|
|
130
|
+
const cellValue = row['0000'];
|
|
131
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
132
|
+
tabIndex: 0,
|
|
133
|
+
"aria-label": row['0000'],
|
|
134
|
+
className: "row-card-item",
|
|
135
|
+
onClick: onRowClick
|
|
136
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
137
|
+
className: "row-card-item-container"
|
|
138
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
139
|
+
className: "row-card-item-header"
|
|
140
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
141
|
+
className: "row-card-item-name seatable-row-card-name"
|
|
142
|
+
}, /*#__PURE__*/_react.default.createElement(_formatter.default, {
|
|
143
|
+
isSample: true,
|
|
144
|
+
column: nameColumn,
|
|
145
|
+
cellValue: cellValue,
|
|
146
|
+
collaborators: (0, _helpers.getAllCollaborators)(),
|
|
147
|
+
components: {
|
|
148
|
+
emptyComponent
|
|
149
|
+
}
|
|
150
|
+
})), isSelected && /*#__PURE__*/_react.default.createElement("span", {
|
|
151
|
+
className: "row-card-item-check dtable-font dtable-icon-check-circle"
|
|
152
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
153
|
+
className: "row-card-item-content",
|
|
154
|
+
onScroll: this.changeScroll,
|
|
155
|
+
ref: this.setCardRecordsItemRef
|
|
156
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
157
|
+
className: "d-inline-flex"
|
|
158
|
+
}, this.getRowRecord()))));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
var _default = exports.default = RowCardItem;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _reactI18next = require("react-i18next");
|
|
10
|
+
var _dtableUtils = require("dtable-utils");
|
|
11
|
+
var _recordContent = _interopRequireDefault(require("./record-content"));
|
|
12
|
+
const SeatableTableRecord = _ref => {
|
|
13
|
+
let {
|
|
14
|
+
table,
|
|
15
|
+
setSelectedRow
|
|
16
|
+
} = _ref;
|
|
17
|
+
const {
|
|
18
|
+
t
|
|
19
|
+
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
20
|
+
const renderedColumns = () => {
|
|
21
|
+
var _table$columns;
|
|
22
|
+
return table === null || table === void 0 ? void 0 : (_table$columns = table.columns) === null || _table$columns === void 0 ? void 0 : _table$columns.filter(column => {
|
|
23
|
+
if (column.type === _dtableUtils.CellType.LONG_TEXT) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
return true;
|
|
27
|
+
}).map(column => Object.assign({}, column, {
|
|
28
|
+
width: 100
|
|
29
|
+
}));
|
|
30
|
+
};
|
|
31
|
+
return /*#__PURE__*/_react.default.createElement(_recordContent.default, {
|
|
32
|
+
table: table,
|
|
33
|
+
renderedColumns: renderedColumns(),
|
|
34
|
+
columns: renderedColumns(),
|
|
35
|
+
rows: table.rows,
|
|
36
|
+
rowCardType: "link",
|
|
37
|
+
isAdditionEditorView: false,
|
|
38
|
+
showScrollBtn: !window.isMobile,
|
|
39
|
+
isShowRowCardHeader: true,
|
|
40
|
+
cardListClassName: window.isMobile ? 'mobile-link-row-card-list' : '',
|
|
41
|
+
cardHeaderClassName: window.isMobile ? 'mobile-link-row-card-header' : '',
|
|
42
|
+
noCardItemTip: t('No_linked_records'),
|
|
43
|
+
setSelectedRow: setSelectedRow,
|
|
44
|
+
t: t
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
var _default = exports.default = SeatableTableRecord;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.updateSeaTableTable = exports.isInsertSeaTableRowDisabled = exports.insertSeaTableRow = exports.getAllCollaborators = exports.generateSeaTableRow = void 0;
|
|
8
|
+
var _slate = require("@seafile/slate");
|
|
9
|
+
var _slugid = _interopRequireDefault(require("slugid"));
|
|
10
|
+
var _core = require("../../core");
|
|
11
|
+
var _helpers = require("../seatable-column/helpers");
|
|
12
|
+
var _constants = require("../../constants");
|
|
13
|
+
var _helper = require("../paragraph/helper");
|
|
14
|
+
const isInsertSeaTableRowDisabled = (editor, readonly) => {
|
|
15
|
+
if (readonly) return true;
|
|
16
|
+
const {
|
|
17
|
+
selection
|
|
18
|
+
} = editor;
|
|
19
|
+
if (selection === null) return true;
|
|
20
|
+
const [match] = _slate.Editor.nodes(editor, {
|
|
21
|
+
match: n => {
|
|
22
|
+
let type = (0, _core.getNodeType)(n);
|
|
23
|
+
if (!type && (0, _core.isTextNode)(n) && n.id) {
|
|
24
|
+
const parentNode = (0, _core.getParentNode)(editor.children, n.id);
|
|
25
|
+
type = (0, _core.getNodeType)(parentNode);
|
|
26
|
+
}
|
|
27
|
+
if (type.startsWith('header')) return true;
|
|
28
|
+
if (type === _constants.ELEMENT_TYPE.TITLE) return true;
|
|
29
|
+
if (type === _constants.ELEMENT_TYPE.SUBTITLE) return true;
|
|
30
|
+
if (type === _constants.ELEMENT_TYPE.CODE_BLOCK) return true;
|
|
31
|
+
if (type === _constants.ELEMENT_TYPE.ORDERED_LIST) return true;
|
|
32
|
+
if (type === _constants.ELEMENT_TYPE.UNORDERED_LIST) return true;
|
|
33
|
+
if (type === _constants.ELEMENT_TYPE.BLOCKQUOTE) return true;
|
|
34
|
+
if (type === _constants.ELEMENT_TYPE.LIST_ITEM) return true;
|
|
35
|
+
if (type === _constants.ELEMENT_TYPE.TABLE) return true;
|
|
36
|
+
if (type === _constants.ELEMENT_TYPE.TABLE_CELL) return true;
|
|
37
|
+
if (type === _constants.ELEMENT_TYPE.TABLE_ROW) return true;
|
|
38
|
+
if (type === _constants.ELEMENT_TYPE.CALL_OUT) return true;
|
|
39
|
+
if (type === _constants.ELEMENT_TYPE.MULTI_COLUMN) return true;
|
|
40
|
+
if (_slate.Editor.isVoid(editor, n)) return true;
|
|
41
|
+
return false;
|
|
42
|
+
},
|
|
43
|
+
universal: true
|
|
44
|
+
});
|
|
45
|
+
if (match) return true;
|
|
46
|
+
return false;
|
|
47
|
+
};
|
|
48
|
+
exports.isInsertSeaTableRowDisabled = isInsertSeaTableRowDisabled;
|
|
49
|
+
const generateSeaTableRow = (table_id, selectedRowID, editor) => {
|
|
50
|
+
const table = editor.getTableById(table_id);
|
|
51
|
+
const columnWidth = {};
|
|
52
|
+
table.columns.forEach(item => {
|
|
53
|
+
columnWidth[item.key] = (0, _helpers.getColumnWidth)(item);
|
|
54
|
+
});
|
|
55
|
+
return {
|
|
56
|
+
id: _slugid.default.nice(),
|
|
57
|
+
type: _constants.SEATABLE_ROW,
|
|
58
|
+
table_id: table_id,
|
|
59
|
+
row_id: selectedRowID,
|
|
60
|
+
column_width: columnWidth,
|
|
61
|
+
children: [(0, _core.generateDefaultText)()]
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
exports.generateSeaTableRow = generateSeaTableRow;
|
|
65
|
+
const insertSeaTableRow = function (editor, table_id, selectedRowID) {
|
|
66
|
+
let insertPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _constants.INSERT_POSITION.CURRENT;
|
|
67
|
+
const seatableRowNode = generateSeaTableRow(table_id, selectedRowID, editor);
|
|
68
|
+
if (insertPosition === _constants.INSERT_POSITION.AFTER) {
|
|
69
|
+
const path = _slate.Editor.path(editor, editor.selection);
|
|
70
|
+
const currentNode = (0, _core.getNode)(editor, [path[0]]);
|
|
71
|
+
|
|
72
|
+
// Insert into selection position if in empty paragraph nodes
|
|
73
|
+
if (currentNode.type === _constants.PARAGRAPH && (0, _helper.isEmptyNode)(currentNode)) {
|
|
74
|
+
_slate.Transforms.setNodes(editor, seatableRowNode);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
path && _slate.Transforms.insertNodes(editor, seatableRowNode, {
|
|
78
|
+
at: [path[0] + 1]
|
|
79
|
+
});
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
_slate.Transforms.setNodes(editor, seatableRowNode);
|
|
83
|
+
};
|
|
84
|
+
exports.insertSeaTableRow = insertSeaTableRow;
|
|
85
|
+
const updateSeaTableTable = (editor, props, options) => {
|
|
86
|
+
_slate.Transforms.setNodes(editor, {
|
|
87
|
+
...props
|
|
88
|
+
}, options);
|
|
89
|
+
};
|
|
90
|
+
exports.updateSeaTableTable = updateSeaTableTable;
|
|
91
|
+
const getAllCollaborators = () => {
|
|
92
|
+
const {
|
|
93
|
+
collaboratorManager
|
|
94
|
+
} = window.seafile || window.seafileConfig;
|
|
95
|
+
const collaborators = Object.values(collaboratorManager === null || collaboratorManager === void 0 ? void 0 : collaboratorManager.emailUserMap);
|
|
96
|
+
return collaborators;
|
|
97
|
+
};
|
|
98
|
+
exports.getAllCollaborators = getAllCollaborators;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _elementType = require("../../constants/element-type");
|
|
9
|
+
var _plugin = _interopRequireDefault(require("./plugin"));
|
|
10
|
+
var _renderElem = _interopRequireDefault(require("./render-elem"));
|
|
11
|
+
const SeaTableRowPlugin = {
|
|
12
|
+
type: _elementType.SEATABLE_ROW,
|
|
13
|
+
nodeType: 'element',
|
|
14
|
+
editorPlugin: _plugin.default,
|
|
15
|
+
renderElements: [_renderElem.default]
|
|
16
|
+
};
|
|
17
|
+
var _default = exports.default = SeaTableRowPlugin;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
10
|
+
var _reactstrap = require("reactstrap");
|
|
11
|
+
var _constants = require("../../../constants");
|
|
12
|
+
var _dropdownMenuItem = _interopRequireDefault(require("../../../commons/dropdown-menu-item"));
|
|
13
|
+
var _helpers = require("../helpers");
|
|
14
|
+
var _seatableList = _interopRequireDefault(require("./seatable-list"));
|
|
15
|
+
require("./index.css");
|
|
16
|
+
const SeaTableRowMenu = _ref => {
|
|
17
|
+
let {
|
|
18
|
+
editor,
|
|
19
|
+
readonly,
|
|
20
|
+
toggle,
|
|
21
|
+
isHidden = false
|
|
22
|
+
} = _ref;
|
|
23
|
+
const disabled = (0, _helpers.isInsertSeaTableRowDisabled)(editor, readonly);
|
|
24
|
+
const menuConfig = _constants.MENUS_CONFIG_MAP[_constants.ELEMENT_TYPE.SEATABLE_ROW];
|
|
25
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
26
|
+
disabled: disabled,
|
|
27
|
+
menuConfig: menuConfig,
|
|
28
|
+
className: (0, _classnames.default)('pr-2 sdoc-dropdown-menu-item-relative', {
|
|
29
|
+
'sdoc-dropdown-menu-item-hidden': isHidden
|
|
30
|
+
})
|
|
31
|
+
}, !disabled && /*#__PURE__*/_react.default.createElement("i", {
|
|
32
|
+
className: "sdocfont sdoc-right-slide sdoc-dropdown-item-right-icon"
|
|
33
|
+
})), !disabled && /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledPopover, {
|
|
34
|
+
target: menuConfig.id,
|
|
35
|
+
hideArrow: true,
|
|
36
|
+
trigger: "hover",
|
|
37
|
+
fade: false,
|
|
38
|
+
placement: "right-start",
|
|
39
|
+
className: "sdoc-menu-popover sdoc-dropdown-menu sdoc-sub-dropdown-menu sdoc-insert-seatable-row-menu-popover"
|
|
40
|
+
}, /*#__PURE__*/_react.default.createElement(_seatableList.default, {
|
|
41
|
+
editor: editor,
|
|
42
|
+
readonly: readonly,
|
|
43
|
+
toggle: toggle
|
|
44
|
+
})));
|
|
45
|
+
};
|
|
46
|
+
var _default = exports.default = SeaTableRowMenu;
|